Jump to content

Reset Contatore Fatture Anno Nuovo


davers44

Recommended Posts

Ciao,

 

come tanti altri immagino, ad inizio anno dovremmo resettare il contatore delle fatture per farle ripartire dal numero uno.

 

Dal back end non è possibile selezionare un numero inferiore a quello attuale.

 

Avete idea di come farlo dal database? C'è rischio di perdere quelle precedenti che hanno lo stesso numero?

 

Grazie e Buon Anno!

  • Like 1
Link to comment
Share on other sites

Ciao a tutti...

Uso Prestashop 1.4.3

Stesso problema. Con l'anno 2012 le fatture devono ripartire con FA000001.

Il commercialista non accetta una fattura FA2012000001 (non e' corretta fiscalmente questa numerazione)

 

Ho cercato su forum in FR e UK ma non ci sono spiegazioni in merito.

Spero che qualcuno come noi abbia questa necessità per il 2012.

La cosa sarebbe anche URGENTE visto che domani e' il 2 gennaio.

 

Grazie in anticipo per qualsiasi aiuto!

Arco

Link to comment
Share on other sites

Ciao Viandante... Buon Anno!

Ho postato il problema sul Forum UK e FR...

Per ora nessuna risposta interessante, se non il suggerimento di cambiare

prefisso alle fatture per il 2012 (ad es: FAT al posto di FA)

 

Non so se questo trucco permette di fare ripartire la fatturazione da 1 ed ottenere FAT000001

in modo che con la prima fattura del 2012 si abbia la numerazione resettata.

 

Puoi fare questo esperimento? Io sono in trasferta e non posso provare.

Fammi sapere al + presto.

 

Comunque invito gli sviluppatori di PS a tenere conto di questa necessità.

Grazie

Link to comment
Share on other sites

Ciao Viandante... Buon Anno!

Ho postato il problema sul Forum UK e FR...

Per ora nessuna risposta interessante, se non il suggerimento di cambiare

prefisso alle fatture per il 2012 (ad es: FAT al posto di FA)

 

Non so se questo trucco permette di fare ripartire la fatturazione da 1 ed ottenere FAT000001

in modo che con la prima fattura del 2012 si abbia la numerazione resettata.

 

Puoi fare questo esperimento? Io sono in trasferta e non posso provare.

Fammi sapere al + presto.

 

Comunque invito gli sviluppatori di PS a tenere conto di questa necessità.

Grazie

 

Avevo già provato a mettere FAT.....niente non va.

 

buon anno anche a te... (iniziamo male)

Comunque questo è un Bug ENORME di prestashop !!!

Link to comment
Share on other sites

Salve ragazzi!

Bel risveglio con l'azzeramento delle fatture, eh?

 

Se volete, io ho modificato 2 righe di codice (della versione 1.4.5.1) in modo che il numeratore si azzeri automaticamente

con il cambio di anno:

  • il file da modificare è ...<mio-percorso>/classes/Order.php
  • aprite il file con il vostro editor preferito e cercate la stringa: getLastInvoiceNumber
  • dovreste trovarla alla riga 906 (circa) e alla 923 (se avete altre versioni controllate bene il contenuto)

Alla riga 906 modificate questa sequenza:

 

public static function getLastInvoiceNumber()
{
 return (int)Db::getInstance()->getValue('
 SELECT MAX(`invoice_number`) AS `invoice_number`
 FROM `'._DB_PREFIX_.'orders`
 ');
}

 

e fatela diventare:

 

public static function getLastInvoiceNumber()
{
 return (int)Db::getInstance()->getValue('
 SELECT MAX(`invoice_number`) AS `invoice_number`
 FROM `'._DB_PREFIX_.'orders` WHERE year(invoice_date) = year(current_date)
 ');
}

 

Poi alla specifica 926 (circa), modificate la query :

$number = '(SELECT `invoice_number`
  FROM (
   SELECT MAX(`invoice_number`) + 1 AS `invoice_number`
   FROM `'._DB_PREFIX_.'orders`)
  tmp )';

 

in

 

$number = '(SELECT `invoice_number`
  FROM (
   SELECT MAX(`invoice_number`) + 1 AS `invoice_number`
   FROM `'._DB_PREFIX_.'orders`) WHERE year(invoice_date) = year(current_date)
  tmp )';

 

Salvate le modifiche appena fatte e potrete riscontrare che nel menu "Fatture" il contatore si è azzerato.

Adesso potete anche modificare il prefisso a vostro piacimento tipo : "FA-2012/" in modo che sia parlante.

 

***Se avete emesso la fattura, non preoccupatevi, basta modificare la tabella "orders" con il numero di fattura corretto e ristampare la fattura.

 

Questo è solo uno dei metodi (in gergo si chiama "chiodo") per mettere una "pezza" al problema.

 

Spero vi sia stato utile.

 

Salute a tutti e Buon 2012 ...l'anno dei Maya ....

  • Like 1
Link to comment
Share on other sites

Grazie Gigi W2L !

Utilizzo la versione 1.4.3

Spero che non ci siano problemi ad utilizzare il tuo Tips.

 

Sarebbe quindi utile che gli sviluppatori madificassero il modulo

in modo da fare in modo che la cosa sia fattibile da BO.

Magari che a ogni inizio d'anno la cosa fosse automatica... meglio ancora

Auguri di Buon 2012

Link to comment
Share on other sites

Grazie Gigi W2L !

Utilizzo la versione 1.4.3

Spero che non ci siano problemi ad utilizzare il tuo Tips.

 

Sarebbe quindi utile che gli sviluppatori madificassero il modulo

in modo da fare in modo che la cosa sia fattibile da BO.

Magari che a ogni inizio d'anno la cosa fosse automatica... meglio ancora

Auguri di Buon 2012

 

Figurati.

In questo modo l'automatismo ad ogni inizio anno è garantito.

Link to comment
Share on other sites

Ciao Gigi.

Modifica effettuata.

Le fatture si sono resettate e ripartono da #1

Direi perfetto!

Grazie ancora.

Viandante ti ho mandato un messaggio privato se hai bisogno di aiuto.

Ricorda di modificare Order.php e salvarlo con un nome diverso (es: Order_NEW2012)

Poi trasferisci con FTP e rinomini il file originale in modo da averlo sempre come matrice

Fammi sapere

Link to comment
Share on other sites

Ciao Gigi.

Modifica effettuata.

Le fatture si sono resettate e ripartono da #1

Direi perfetto!

Grazie ancora.

Viandante ti ho mandato un messaggio privato se hai bisogno di aiuto.

Ricorda di modificare Order.php e salvarlo con un nome diverso (es: Order_NEW2012)

Poi trasferisci con FTP e rinomini il file originale in modo da averlo sempre come matrice

Fammi sapere

 

Muy bien! De nada.

 

E se qualcuno lo fa meglio... CONDIVIDETEEEEE!

:)

Link to comment
Share on other sites

Ho modificato correttamente il codice come descritto ma non funziona.

Non mi genera più la fattura.

L'ordine va a buon fine ma niente fattura...

 

Comunque mi sembra strano che in fase di programmazione non abbiamo pensato a una cosa fondamentale come le fatture numerate....

 

Per ora il mio sito va senza fatture......l'ho disabilitate del tutto

Link to comment
Share on other sites

Ciao Gigi.

Modifica effettuata.

Le fatture si sono resettate e ripartono da #1

Direi perfetto!

Grazie ancora.

Viandante ti ho mandato un messaggio privato se hai bisogno di aiuto.

Ricorda di modificare Order.php e salvarlo con un nome diverso (es: Order_NEW2012)

Poi trasferisci con FTP e rinomini il file originale in modo da averlo sempre come matrice

Fammi sapere

Ti ho risposto.

Link to comment
Share on other sites

Per Gigi W2L

E' stata emessa la prima fattura.

Si e' azzerato il contatore ma la fattura al mio cliente e' stata emessa con il FA-000000

E anche la data e' settata su 0000-00-00

 

Per ora ho messo una pezza modificando i dati sul database (tabella Orders)

Ora nel BO ho settato il prefisso su FA- e il num di fattura su "0"

Ora la frase sottostante mi dice che la prox fattura sara' la #2

 

Dove ho sbagliato? allego immaginefattura.png

 

Urgente

Grazie ancora!

Arco

Link to comment
Share on other sites

Grazie delle risposte, immaginavo di non essere il solo, in effetti è una cosa basilare che dovrebbe essere inclusa di default in prestashop.

 

Io sono con la versione 1.4.4.0 e modificare il numero di partenza delle fatture dalle opzioni del back office mi è impossibile anche perchè sembra ci sia qualche bug che richiama la tabella PS_INVOICE_START_NUMBER nemmeno presente nel mio database.

 

Confrontando con altri utenti sembra che alcuni abbiano la tabella PS_INVOICE_START_NUMBER e altri invece solo PS_INVOICE_NUMBER.

 

Io ho solo INVOICE_NUMBER è ho manualmente modificato il valore a 1 nel database. Sembra funzionare, le nuove fatture sono ripartite da 1 e le vecchie sono integre.

 

Se non si presenterranno altri problemi per quest'anno mi va bene cosi ma sembra interessante la versione di Gigi che le resetta automaticamente.

 

EDIT:

 

Trovato PS_INVOICE_START_NUMBER e modificato manualemente anche quello dal numero che volevo partire ora sembra tutto a posto anche per le le successive.

Link to comment
Share on other sites

Questa modifica funziona solo se ci sono fatture emesse per il nuovo anno (Es. sono stati modificati manualmente i numeri nel database).

Io ho risolto in questo modo:

La modifica alla riga 906 va bene, il problema è la modifica successiva, infatti se il server mysql è superiore o uguale alla versione 5, accade che la fattura prende numero 0 (questo però nel caso non ci siano già fatture per il nuovo anno).

Quindi io ho fatto in questo modo, ho sostituito

if (version_compare(Db::getInstance()->getServerVersion(), 5,'<'))
  {
// I use mysql 4, I can't make sub query in FROM
  $number = Order::getLastInvoiceNumber() + 1;
  }
  else
  $number = '(SELECT `invoice_number`
  FROM (
   SELECT MAX(`invoice_number`) + 1 AS `invoice_number`
   FROM `'._DB_PREFIX_.'orders`)
  tmp )';

con la seguente istruzione:

  $number = Order::getLastInvoiceNumber() + 1;

Così facendo viene prima preso il numero della nuova fattura, e poi viene eseguita la query di aggiornamento del numero.

In questo modo avviene un passaggio in più,ma a mio avviso è inevitabile.

Se qualcuno riscontra dei problemi postateli.

Link to comment
Share on other sites

Ciao CodeEnCode

Scusa il disturbo...

Nella versione di PS 1.4.3 avevo la stringa disposta cosi'

Come va modificata?

 

public static function getLastInvoiceNumber()
{
  return (int)Db::getInstance()->getValue('
  SELECT MAX(`invoice_number`) AS `invoice_number`
  FROM `'._DB_PREFIX_.'orders` WHERE year(invoice_date) = year(current_date)
 ');
}

public function setInvoice()
{
 $number = (int)Configuration::get('PS_INVOICE_START_NUMBER');
 if ($number)
   Configuration::updateValue('PS_INVOICE_START_NUMBER', false);
  else
  $number = '(SELECT `invoice_number`
			   FROM (
				  SELECT MAX(`invoice_number`) + 1 AS `invoice_number`
				  FROM `'._DB_PREFIX_.'orders`) WHERE year(invoice_date) = year(current_date)
						tmp )';

Link to comment
Share on other sites

Ciao CodeEnCode

Scusa il disturbo...

Nella versione di PS 1.4.3 avevo la stringa disposta cosi'

Come va modificata?

 

public static function getLastInvoiceNumber()
{
  return (int)Db::getInstance()->getValue('
  SELECT MAX(`invoice_number`) AS `invoice_number`
  FROM `'._DB_PREFIX_.'orders` WHERE year(invoice_date) = year(current_date)
 ');
}

public function setInvoice()
{
 $number = (int)Configuration::get('PS_INVOICE_START_NUMBER');
 if ($number)
   Configuration::updateValue('PS_INVOICE_START_NUMBER', false);
  else
  $number = '(SELECT `invoice_number`
			   FROM (
				  SELECT MAX(`invoice_number`) + 1 AS `invoice_number`
				  FROM `'._DB_PREFIX_.'orders`) WHERE year(invoice_date) = year(current_date)
						tmp )';

 

Devi sostituire

 $number = '(SELECT `invoice_number`
							   FROM (
									  SELECT MAX(`invoice_number`) + 1 AS `invoice_number`
									  FROM `'._DB_PREFIX_.'orders`) WHERE year(invoice_date) = year(current_date)
												    tmp )';

con

$number = Order::getLastInvoiceNumber() + 1;

 

Comunque io consiglio di commentare le istruzioni originali senza eliminarle.

Link to comment
Share on other sites

Hai ragione, di solito mantengo sempre l'originale e salvo con nome nuovo

Quindi il codice completo sarebbe il seguente:

public static function getLastInvoiceNumber()
{
  return (int)Db::getInstance()->getValue('
  SELECT MAX(`invoice_number`) AS `invoice_number`
  FROM `'._DB_PREFIX_.'orders` WHERE year(invoice_date) = year(current_date)
 ');
}

public function setInvoice()
{
 $number = (int)Configuration::get('PS_INVOICE_START_NUMBER');
 if ($number)
   Configuration::updateValue('PS_INVOICE_START_NUMBER', false);
  else
  $number = Order::getLastInvoiceNumber() + 1;

 

Grazie ancora per la pazienza

Link to comment
Share on other sites

a me ha funzionato modificando la riga 906 così come suggerito da Gigi W2L, mentre per la seconda modifica (riga 923 o 926) ho dovuto utilizzare la modifica di codencode perchè altrimenti non mi emetteva la fattura e mi rispondeva INVALID DATE

Link to comment
Share on other sites

Salve

Ho la versione PS 1.4.4.0

Ho già delle fatture 2012 con la numerazione che segue dal 2011 e vorrei ripartire dalla n.1 o poter scegliere il numero di ripartenza.

Ho provato a fare le modifiche al codice ma il contatore non si è azzerato.

Premetto la mia ignoranza in materia .... cosa stò sbagliando, non vorrei fare danni irreparabili.

Grazie per l'aiuto.

Link to comment
Share on other sites

Ciao Rodolo...

Per modificare fatture gia' emesse devi farlo direttamente dal database MySql.

Se sei su aruba accedi da: http://mysql.aruba.it e fai il login.

La tabella da modificare è ps_orders -> con la voce mostra puoi vedere tutti gli ordini e modificare il n. di fattura.

Se non hai pratica di MySql e' meglio se ti fai consigliare.

 

Per fare in modo che le fatture partano dalla #1 devi utilizzare il codice di CodeEnCode

che ti riporto qua sotto alla riga 900 circa (dipende dalla versione di Prestashop)

nel file Classes/Order.php (salva una copia dell'originale prima)

 

public static function getLastInvoiceNumber()
	{
	  return (int)Db::getInstance()->getValue('
	  SELECT MAX(`invoice_number`) AS `invoice_number`
	  FROM `'._DB_PREFIX_.'orders` WHERE year(invoice_date) = year(current_date)
	 ');
	}

public function setInvoice()
{
 $number = (int)Configuration::get('PS_INVOICE_START_NUMBER');
 if ($number)
	   Configuration::updateValue('PS_INVOICE_START_NUMBER', false);
  else
	  $number = Order::getLastInvoiceNumber() + 1;

 

altra soluzione... dal BackOffice/Ordini/Fatture

inserisci come numero di partenza nel campo "Numero Fattura" la cifra 2012000001

Link to comment
Share on other sites

Salve

Devo perciò modificare il numero delle fatture già emesse nel 2012 e modificare il codice per avere la nuova numerazione ?

Grazie.

RISOLTO: dopo aver modificato il numero delle fatture direttamente dal database e modificato il codice, la numerazione è ripartita dall'ultima fattura inserita.

Link to comment
Share on other sites

Molto bene...

Grazie soprattutto a GigiW2L e a CodeEnCode... io ho solo riassunto quel che loro hanno fatto.

Speriamo che questa soluzione sia utile a molti.

 

Rimaniamo in attesa di una patch dagli sviluppatori di PS.

Sarebbe veramente una cosa doverosa per gli anni a venire.

 

Continuate a segnalare eventuali problemi

Buon anno a tutti.

Link to comment
Share on other sites

Grazie a tutti per il lavoro effettuato le modifiche sembrano funzionare però ho il seguente problema:

situazione attuale

Prefisso: S2011

Numero fattura: 0

 

 

La prossima fattura inizierà con questo numero e poi aumenterà ad ogni fattura successiva. 0 corrisponde al numero attuale (n.1).

Non ho ancora emesso fatture per il 2012 (ma non posso ritardare ulteriormente...)

Se cambio il Prefisso con S2012 cambiano tutte le fatture emesse nel 2011

Prestashop 1.4.2.5

Link to comment
Share on other sites

Ciao MarcoM

Ti confermo che le modifiche funzionano.

Ho emesso fatture e sono regolarmelte partite da #1 e progressive.

 

Purtroppo ho notato anch'io l'anomalia del prefisso.

Cambiandolo, cambia anche quello di tutte le fatture del 2011.

Al momento ad esempio continuo col prefisso FA- in attesa di trovare una soluzione.

Vediamo se Gigi o CodeEnCode riescono a tirare fuori qualche soluzione dal cappello.

a presto.

Arco

Link to comment
Share on other sites

Ciao a tutti.

La soluzione di Codencode è ok, infatti dovrebbe essere quella standard di PS (non capisco quella doppia query...)

 

Mi devo scusare per la mia soluzione della specifica 926 perchè ho riportato male nel post, ma ormai la vecchiaia avanza inesorabile e non faccio bene neanche un "copia e incolla" dal mio sorgente.

Infatti ho incollato dopo la parentesi anzichè prima!!!

 

Invece di

$number = '(SELECT `invoice_number`
  FROM (
   SELECT MAX(`invoice_number`) + 1 AS `invoice_number`
   FROM `'._DB_PREFIX_.'orders` )	WHERE year(invoice_date) = year(current_date)
  tmp )';

 

la query doveva essere :

$number = '(SELECT `invoice_number`
  FROM (
   SELECT MAX(`invoice_number`) + 1 AS `invoice_number`
   FROM `'._DB_PREFIX_.'orders` WHERE year(invoice_date) = year(current_date))
  tmp )';

 

...quasi non si vede la differenza vero?

 

Anche io però preferisco la soluzione più pulita di Codencode che richiama:

$number = Order::getLastInvoiceNumber() + 1;

 

Per quanto riguarda il prefisso, è vero, viene messo solo nella scheda ordine e al momento di generare il pdf, ma non nel DB (almeno credo), quindi se viene cambiato succede che chiunque faccia un download di una fattura dell'anno precedente si ritrova anche il nuovo prefisso.

 

Basterebbe che lo aggiungessero nel DB Orders oppure dove preferiscono gli sviluppatori cugini francesi. ;-)

***se non fosse un campo "int" lo avrei aggiornato insieme al nr.fattura nell' invoice_number ...

 

Salute a tutti!

  • Like 1
Link to comment
Share on other sites

Grazie Gigi per il tempo dedicato... sempre gentilissimo.

Ho avvisato uno degli amministratori del forum e mi ha confermato

che avrebbe sottoposto il problema ai cugini Francesi.

Speriamo si possa avere una patch per le versioni a partire dalla 1.4.1.

 

D'altronde anche altri utenti francesi hanno sollevato lo stesso problema

sul loro forum e sono anch'essi alla ricerca di soluzioni... sperem...

Saluti a tutti e grazie per la disponibilità.

Link to comment
Share on other sites

Ringraziando per il contributo di tutti.

 

1) Prestashop ufficialmente risponde che la soluzione da loro adottata è la migliore

2) Tutti i commercialisti (e un'associazione) da me interpellati, in Francia e in Italia confermamo che la numerazione:

PREFIX-2012000001

crescente è perfettamente valida e accettata, in quanto 2012 è un numero seriale e non identifica l'anno, quindi può essere utilizzato senza problemi e senza necessità di separatori.

Link to comment
Share on other sites

ulteriore problema.

Note di credito e buoni di consegna.

 

A mio avviso lo staff di presta dovrebbe rilasciare quanto prima una fix.

Non mi sembrano soluzioni strutturali:

 

1. La numerazione seriale è quantomeno brutta. considerando che il codice relativo alla fattura non viene preservato nel tempo...

 

2. Va capito come gestire le note di credito

 

3. Note di consegna... le ho fatte ripartire da 1 ... ma il tool non le pesca in modo corretto..

 

Lasciare gli utenti in braghe di tela o con soluzioni "pezza" non mi sembra il massimo...

 

 

ps. con la mia versione 1.4.4.1 la vista degli utenti collegati visualizza tutte le utenze .... ho dovuto ripristinare il vecchio modulo della 1.3.6

Link to comment
Share on other sites

Gent. sig Gigliotti,

Concordo decisamente con lei sulla necessità di una fix per i problemi citati finora

Non ho gradito la risposta anche un po' seccata di Prestashop che dice che

"la soluzione adottata e' la migliore"...

 

1) Prestashop ufficialmente risponde che la soluzione da loro adottata è la migliore

2) Tutti i commercialisti (e un'associazione) da me interpellati, in Francia e in Italia confermamo che la numerazione:

PREFIX-2012000001

crescente è perfettamente valida e accettata, in quanto 2012 è un numero seriale e non identifica l'anno, quindi può essere utilizzato senza problemi e senza necessità di separatori.

A parte il fatto che tutto e' migliorabile... comunque le lacune ci sono.

Il discorso che riguarda fatture e note di credito proprio oggi con il clima che si e'

creato in fatto di fiscalita' diventa quanto mai serio e necessita della massima attenzione.

 

Serve che tutta la comunita' di PS insista per questo miglioramento.

I piu' cordiali saluti.

Link to comment
Share on other sites

Buongiorno,

la risposta da parte mia è una semplice traduzione di una serie di mail in cui prestashop ha preso in considerazione le note

analizzato la situazione

e dato una loro opinione.

Io non mi sono fermato e ho chiamato due commercialisti e chiesto lumi.

 

Se la mia nota è risultata secca mi scuso è solo una questione di tempo dedicato alla risposta, alcune persone del forum, in pieno spirito open source hanno suggerito modifiche al codice.

 

Qualunque bug riteniate esistente potete seguire il link del bug tracker e avrà risposta ufficiale da parte dello staff.

Link to comment
Share on other sites

Ho adottato a malincuore la soluzione un po' deludente di Prestashop in merito alla numerazione delle fatture (PREFIX-2012000001)...amen.

Ma per quanto riguarda le note di credito, c'è qualcuno di buon cuore che mi/ci aiuta a sistemare la numerazione delle note credito? Se volessi modificare la tabella order_slip_detail qualcuno saprebbe indicarmi come intervenire senza far crashare nulla?

Link to comment
Share on other sites

Per quanto riguarda le note di credito il problema è molto più complesso delle fatture, questo perchè il codice stampato nella nota è il codice (id) della nota stessa, quindi non è possibile avere 2 numeri uguali. Bisogna apportare quindi diverse modifiche in diversi file.

Per quanto riguarda la numerazione delle fatture, ho chiesto al commercialista e mi ha confermato che la numerazione deve essere progressiva per anno, anche se si specifica come prefisso l'anno, stessa cosa per le note.

Link to comment
Share on other sites

  • 2 weeks later...

Il numero fattura sembra a posto e approfitto per ringraziarvi dell'aiuto ricevuto.

 

Nessuno invece è riuscito a caprie cosa fare con i DDT e soprattutto con le note di credito, sono davvero diventate di colpo inutilizzabili? Cosa farete in caso di necessità di emettere note di credito, bisogna procurarsi un programma esterno solo per quelle?

 

Grazie

Link to comment
Share on other sites

Questo è il mio codice potete aiutarmi??

 

Grazie 1000

 

public static function getLastInvoiceNumber()

{

return (int)Db::getInstance()->getValue('

SELECT MAX(`invoice_number`) AS `invoice_number`

FROM `'._DB_PREFIX_.'orders`

');

}

 

public function setInvoice()

{

$number = (int)Configuration::get('PS_INVOICE_START_NUMBER');

if ($number)

Configuration::updateValue('PS_INVOICE_START_NUMBER', false);

else

if (version_compare(Db::getInstance()->getServerVersion(), 5,'<'))

{

// I use mysql 4, I can't make sub query in FROM

$number = Order::getLastInvoiceNumber() + 1;

}

else

$number = '(SELECT `invoice_number`

FROM (

SELECT MAX(`invoice_number`) + 1 AS `invoice_number`

FROM `'._DB_PREFIX_.'orders`)

tmp )';

Link to comment
Share on other sites

  • 2 weeks later...

Salve ragazzi!

Bel risveglio con l'azzeramento delle fatture, eh?

 

Se volete, io ho modificato 2 righe di codice (della versione 1.4.5.1) in modo che il numeratore si azzeri automaticamente

con il cambio di anno:

  • il file da modificare è ...<mio-percorso>/classes/Order.php
  • aprite il file con il vostro editor preferito e cercate la stringa: getLastInvoiceNumber
  • dovreste trovarla alla riga 906 (circa) e alla 923 (se avete altre versioni controllate bene il contenuto)

Alla riga 906 modificate questa sequenza:

 

 

 

 

public static function getLastInvoiceNumber()
{
 return (int)Db::getInstance()->getValue('
 SELECT MAX(`invoice_number`) AS `invoice_number`
 FROM `'._DB_PREFIX_.'orders`
 ');
}

 

e fatela diventare:

 

public static function getLastInvoiceNumber()
{
 return (int)Db::getInstance()->getValue('
 SELECT MAX(`invoice_number`) AS `invoice_number`
 FROM `'._DB_PREFIX_.'orders` WHERE year(invoice_date) = year(current_date)
 ');
}

 

Poi alla specifica 926 (circa), modificate la query :

$number = '(SELECT `invoice_number`
  FROM (
   SELECT MAX(`invoice_number`) + 1 AS `invoice_number`
   FROM `'._DB_PREFIX_.'orders`)
  tmp )';

 

in

 

$number = '(SELECT `invoice_number`
  FROM (
   SELECT MAX(`invoice_number`) + 1 AS `invoice_number`
   FROM `'._DB_PREFIX_.'orders`) WHERE year(invoice_date) = year(current_date)
  tmp )';

 

Salvate le modifiche appena fatte e potrete riscontrare che nel menu "Fatture" il contatore si è azzerato.

Adesso potete anche modificare il prefisso a vostro piacimento tipo : "FA-2012/" in modo che sia parlante.

 

***Se avete emesso la fattura, non preoccupatevi, basta modificare la tabella "orders" con il numero di fattura corretto e ristampare la fattura.

 

Questo è solo uno dei metodi (in gergo si chiama "chiodo") per mettere una "pezza" al problema.

 

Spero vi sia stato utile.

 

Salute a tutti e Buon 2012 ...l'anno dei Maya ....

 

Grazie mille per la dritta, io però dopo aver inserito i dati come indicato da te, non ho avuto nessun cambiamento, nella base della pagina fatture rimane sempre l'ultimo numero di fattura che nel mio caso corrisponde a #64, come mai non mi azzera il contatore dopo aver fatto le modifiche? io ho prestashop 1.4.4.0 grazie infinite per l'aiuto

Link to comment
Share on other sites

  • 10 months later...

Ciao,

mi riallaccio a questa vecchia discussione perchè il problema è d'attualità... ho qualche cliente che voleva far ripartire la numerazione senza avere poi problemi.

 

Trovo che il sistema del prefisso sia un pò scomodo e per alcuni rischioso: Prestashop infatti applica il prefisso in modo retroattivo a tutte le fatture, e se un cliente se le andasse a scaricare produrrebbe in buona fede documenti "falsi" con il nostro logo sopra.

 

Ho risolto semplicemente modificando la classe PDF che produce la fattura, aggiungendo ai due punti in cui viene "scritto" il numero della fattura quanto segue:

 

.(substr(self::$order->invoice_date,0,4)=='2012'?'':'/'.(substr(self::$order->invoice_date,0,4)))

 

che significa "se la fattura non è del 2012 aggiungi /ANNO prendendolo dalla data della fattura".

 

In questo modo le vecchie fatture (iniziate nel 2012 senza prefissi di alcun tipo) restano identiche e quelle del 2013 e anni successivi saranno sempre distinguibili.

 

Spero che ciò sia utile a qualcuno, un augurio di buon inizio anno a tutti

  • Like 3
Link to comment
Share on other sites

ciao cleoni, grazie della dritta, credo sia una soluzione intelligente dato che anch'io avevo notato le considerazioni che hai sottolineato tu sul prefisso "farlocco" di PS, anche se non l'ho ancora applicata per alcuni motivi che volevo chiarire.

 

Questa modifica trasformerà la numerazione in FA000123 in FA000123/2013 giusto?

Non sarebbe meglio inserirlo antecedente tipo FA2013/000123 oppure 2013/FA000123?

Credi sia applicabile anche agli altri documenti come i DDT?

 

Grazie!

Link to comment
Share on other sites

Ho risolto semplicemente modificando la classe PDF che produce la fattura, aggiungendo ai due punti in cui viene "scritto" il numero della fattura quanto segue:

.(substr(self::$order->invoice_date,0,4)=='2012'?'':'/'.(substr(self::$order->invoice_date,0,4)))

 

A quale versione di PS ti riferisci? E dove si trova il file?

Grazie! :)

Link to comment
Share on other sites

Un aggiornamento riguardo alla questione del numero progressivo/anno:

 

1) Io ho fatto questa modifica solo sulla versione 1.4.8.3, è applicabile a tutte le 1.4.* mentre per le 1.5.* non posso dire nulla perché non è quella che uso, in ogni caso sull'1.5 il sistema di generazione fatture è proprio diverso, mi dicono.

 

2) per fare in modo che il contatore riparta da 1 ogni anno è necessario modificare il file classes/Order.php:

 

la modifica è abbastanza articolata ed è sopra ben descritta nel post di Spectro. Io ho notato che, comunque, la specifica che lui dà per la linea 906 è una query che a me ha dato errore. Magari ho preso un abbaglio io, ma la query che sto usando è questa:

 

	  	
return (int)Db::getInstance()->getValue('
         SELECT MAX(`invoice_number`) AS `invoice_number`
         FROM `'._DB_PREFIX_.'orders` WHERE year(invoice_date) = year(CURDATE())
         ');		 

 

 

3) Quanto sopra serve semplicemente a far ripartire il conteggio dopo capodanno. La stringa "/2013" che appare in fattura dopo il numero progressivo va aggiunta nel file classes/PDF.php usando il codice che ho indicato sopra. Il codice che ho scritto serve a fare in modo che le fatture del 2012 rimangano invariate (voglio mantenere il pregresso), mentre dal 2013 in poi escano col formato tipo: 00001/2013

 

Al momento tutto sembra funzionare correttamente, su un server di prova in cui posso variare la data ho visto che dopo il "capodanno" il conteggio riparte da 1 correttamente quindi una volta fatta... è fatta.

 

Non posso postare qui i file classe in questione perchè quelli che uso sono stati entrambi personalizzati con regole particolari e dati del cliente (specialmente la classe PDF che genera le fatture).

 

Se si ha un pò di dimestichezza con PHP comunque ce la si fa, chi non ha questa dimestichezza chieda una mano a un programmatore (volendo al sottoscritto, è il mio lavoro).

 

Buon lavoro a tutti

Edited by cleoni (see edit history)
Link to comment
Share on other sites

Grazie!

Guarda, a me serviva solo il discorso del suffisso.

Inizialmente pensavo di invertire il prefisso (devo cercare la classe dove viene creato il numero della fattura e immagino basti invertire i valori di progressivo e prefisso) ma la tua idea mi sembra più flessibile, perchè mi lascia la possibilità di utilizzare un prefisso ulteriore.

Per la numerazione... ho la fortuna di non avere clienti che utilizzano la fatturazione di PS. La uso solo io su un mio shop, ma non avendo le fatture nell'area dei clienti, non rischio di emettere fatture errate. Se anche con la 1.5 non han gestito il progressivo, poco male, me la edito a DB e dalla seconda dovrei andare a posto.

Ad aver più tempo approfondirei meglio PS, ma sono sempre tirato con i tempi ;)

Grazie ancora!

Link to comment
Share on other sites

 

3) Quanto sopra serve semplicemente a far ripartire il conteggio dopo capodanno. La stringa "/2013" che appare in fattura dopo il numero progressivo va aggiunta nel file classes/PDF.php usando il codice che ho indicato sopra. Il codice che ho scritto serve a fare in modo che le fatture del 2012 rimangano invariate (voglio mantenere il pregresso), mentre dal 2013 in poi escano col formato tipo: 00001/2013

 

 

Uhm...stavo pensando... se anzichè fare == 2012 facessi < 2013?

Metti che ho fatture del 2011: queste mi uscirebbero /2011!

O sbaglio? ;)

 

Altra cosa... ma questa serviva più a me che altro...

Onde evitare contestazioni, ho preferito anche togliere gli zeri dal numero fattura, per adeguarlo maggiormente ai progressivi che uso per le altre fatture. Non credo che con gli zeri ci potrebbero essere problemi, ma già che c'ero...

Solo che giustamente le fatture precedenti devono mantenere gli zeri, per coerenza con gli originali emessi, per cui nel blocco che scrive il numero fattura, ho fatto un check per mettere o meno gli zeri.

 

Edited by web4people (see edit history)
Link to comment
Share on other sites

Buongiorno.

 

mi interesserebbe apportare la modifica proposta da cleoni (http://www.prestasho...ost__p__1054608) per quanto riguarda l'aggiunta dell'anno dopo il numero fattura nella generazione del file pdf.

 

Qualcuno mi potrebbe indicare dove applicare tale modifica? A quale riga del file va applicata questa modifica?

 

La versione di prestashop installata è la 1.4.6.2

 

Grazie a tutti in anticipo

 

P.S: ho risolto! :D

Edited by surfweb (see edit history)
Link to comment
Share on other sites

  • 4 months later...

Riporto su questa discussione, ma per la versione 1.5

 

Ho notato che le cose sono cambiate.

Ad esempio, in passato per sistemare eventuali numerazioni errate entrato nella tabella degli ordini cambiando l'invoice_number

Ora non è più così, in quanto oltre al suddetto campo nella tabella degli ordini, esiste la tabella delle fatture.

 

Ho modificato la funzione che pesca il progressivo da questa tabella così da prendere il numero più alto ma dell'anno in cui è stata inserita la fattura (non ho più la data dell'ordine come campo...) modificando quanto in precedenza illustrato per le 1.4.x

 

Basta questo per far ripartire da 1 al cambio dell'anno?

Oppure devo metter mano alla funzione setInvoice() presente in /classes/order/Order.php?

Che so... quando controlla se ho un progressivo indicato nella configurazione, dirgli che se non ho righe di fatture per l'anno in corso deve mettere la numerazione a 1 (sempre se voglio che si azzeri, ovvio... )

 

Farò qualche prova, ma se qualcuno ha già risolto, qualche dritta verrebbe utile ;)

 

 

----EDIT----

Magari mi sfugge qualcosa... ma se io tocco solo la funzione getLastInvoiceNumber(), quando poi lancio la setInvoice, e vado a prendere il progressivo legando l'anno di aggiunta, se cambia l'anno mi restituisce NULL. La routine però non ho capito se gestisce il NULL come se fosse uno zero, o se crasha...

Va beh, farò qualche test anche in questo senso ;)

Edited by web4people (see edit history)
Link to comment
Share on other sites

  • 7 months later...

Salve a tutti,


premetto che utilizzo la versione 1.5.4.1 di prestashop.


sarei interessato all'azzeramento automatico della numerazione delle fatture ad ogni inizio anno.


E volevo sapere se c'è uno modo per cancellare le fatture e i relativi ordini emesse fino ad oggi che sono stati effettuati per dei testi di funzionamento della piattaforma.


 


Qualcuno potrebbe aiutarmi?


Grazie


Link to comment
Share on other sites

ciao,

ci sono altre discussioni più attuali in queste pagine, prova a darci un'occhiata; è anche indicato il codice da modificare per azzerare automaticamente.

Per il fisco comunque le fatture devono avere una numerazione univoca, pertanto o non azzeri oppure, se vuoi ripartire ogni anno da 1, devi specificare l'anno di competenza nella numerazione (per es 1/2014, o FA2014/0001)

Link to comment
Share on other sites

Ciao andrea_b,

io ho risolto la questione del riazzeramento sul Presta1.4 intervenendo sul modello che genera la fattura e modificando le classi che operano la numerazione in modo da "capire" se si è scavalcato l'anno e ripartire da 1. Purtroppo sul 1.5 non l'ho mai fatto finora, potrebbe non essere troppo complesso.

 

Provo ad indicarti una procedura "cheap" che funziona sul 1.4 e che potrebbe funzoinare anche nel tuo caso.

 

- aspetta che sia piazzato il primo ordine del nuovo anno

- entri nel db con phpMyAdmin, apri la tabella ps_orders, dopo aver fatto un backup di questa con la funzione Esporta (non si sa mai)

- ordini la tabella ps_orders per id_order decrescente, e una volta trovato l'ordine in questione che sarà in cima alla lista apri il record in modifica (icona matitina) e cambi il progressivo della fattura (campo invoice_number) a 1

- ora rientri nel Prestashop e nelle opzioni Ordini/fatture cambi il prefisso delle fatture in "2014-" o comunque con l'anno attuale. Apri la fattura dell'ordine arrivato e dovresti vedere la numerazione giusta

 

Quanto sopra funziona anche se dall'inizio anno sono arrivati più ordini.

Unico neo: grazie al progressivo (almeno sulla 1.4) TUTTE le fatture, se ristampate (quindi anche quelle dell'anno scorso) avranno il prefisso "2014-" il che potrebbe non piacere, ma è forse un male minore..

 

Raccomando di fare il backup della tabella ps_orders a scanso di errori. Se non si sa come fare, meglio evitare di metterci mano e fare danni.

 

Per la cancellazione ordini

 

Ti segnalo un moduletto che funziona sia sul PS 1.5 sia sul 1.4 e cancella gli ordini in modo molto semplice:

 

http://www.prestashoprisolto.com/gestione-ordini/68-modulo-cancellazione-ordini.html

 

 

buon lavoro

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

Qualcuno sa dare una risposta definitiva al problema della numerazione fatture nuovo anno per la versione 1.5?

Ho provato ogni soluzione indicata su questo forum ma nessuna ha funzionato.

Ho provato anche il modulo scaricato dal sito http://www.moduli-prestashop.it/19-reset-fatture-riavvio-numerazione-anno-nuovo.html ma non funziona.

Ormai il sono state emesse 19 fatture per il 2014 e la situazione non è cambiata.

Cosa occorre fare per la versione 1.5.4.1.?

Grazie

Link to comment
Share on other sites

Dall'anno scorso la normativa fiscale italiana permette di avere una numerazione progressiva delle fatture.

http://www.01net.it/numerazione-progressiva-fatture-2013-i-chiarimenti-del-fisco/0,1254,5_ART_151844,00.html

Per l'appunto, se  ad ogni inizio di anno si cambia il numero fattura iniziale da BO, in 20140001, 20150001 ecc, essendo un numero a tutti gli effetti, è perfettamente gestibile da PS senza modifiche, ed è coerente con le richieste dell'agenzia delle entrate.

Non sarà troppo elegante, ma funziona. (se pensate di fare più di 9999 fatture, beati voi, aggiungete uno zero, anzi, visto che potete permettervelo, fate fare un modulo e passatelo alla comunità  :) )

Il problema resta per le note di credito.

  • Like 2
Link to comment
Share on other sites

  • 2 weeks later...

Buonasera a tutti,

è la prima volta che scrivo un post e vorrei subito cominciare con un immenso grazie per tutte le "dritte" che rilasciate in rete ogni giorno... ;)

 

Da SuperNovizio che mi ritengo, sto cercando di sbattere sullo scoglio delle fatture di Prestashop 1.5.6.2 senza farmi troppo male e credo (forse) di esserci riuscito...molto forse... :rolleyes: ...mi spiego.

 

Faccio un esempio pratico:
se al cambio anno tramite PhpMyAdmin del nostro hosting impostassimo nella tabella ps_order_invoice, nel campo number della prima fattura dell'anno nuovo, la nuova numerazione.
Esempio:
20150001

e resettassimo le note di credito, sempre ogni anno eseguendo un truncate delle tabelle:
ps_order_slip
ps_order_slip_detail

 

un pò macchinoso?!

 

Però tutto sembra funzionare, ma ripeto, conoscendo poco il gestionale e la struttura del db dubito di aver azzeccato una soluzione valida.

L'ultima fattura dell'anno viene rinominata con la nuova numerazione, ovviamente dovrebbe essere rispedita al cliente, ma le fatture successive, nella mia Versione Test in locale ripartono con una numerazione corretta (20150002, 20150002, 2015003 ecc...) mentre per le note di credito, azzerate tramite query, ripartono dal numero uno.

 

Tutte le note di credito già emesse vengono eliminate, quindi almeno che non si vada ad estrarre il PDF completo di tutte le note di credito dal BO prima del truncate delle tabelle si rimarrà senza una copia delle note di credito... :o  ...però ripeto mi sembra che tutti i dati siano ancora validi.

I calcoli eseguiti nei documenti generati sono ok.

 

che ne dite?

 

Grazie mille in anticipo per la considerazione :D

 

buona serata a tutti

 

 

 

Link to comment
Share on other sites

Ciao Totti,

beh se ci pensi, dopo avere scaricato il PDF con tutte le note di credito dal BO prima di fare il truncate delle tabelle order_slip e order_slip_detail, è vero che le cancelli, ma ne avrai sempre una copia cartacea.

 

La modifica non l'ho provata perchè non ho capito se è compatibile con la versione 1.5.6.2.

 

Come si può fare per risolvere questa bega??... :D:blink:

Link to comment
Share on other sites

Ciao Totti,

beh se ci pensi, dopo avere scaricato il PDF con tutte le note di credito dal BO prima di fare il truncate delle tabelle order_slip e order_slip_detail, è vero che le cancelli, ma ne avrai sempre una copia cartacea.

 

La modifica non l'ho provata perchè non ho capito se è compatibile con la versione 1.5.6.2.

 

Come si può fare per risolvere questa bega??... :D:blink:

E se il cliente vuole riscaricare una fattura ?

 

Sembra che nessuno abbia provato o funzioni questa modifica.

Link to comment
Share on other sites

E se il cliente vuole riscaricare una fattura ?

 

Sembra che nessuno abbia provato o funzioni questa modifica.

 

In realtà le fatture rimango sempre a disposizione del cliente, nelle tabella ps_order_invoice dovresti solo aggiornare il numero, niente di più.

Le note di credito invece non sarebbero più disponibili per il download, ma con una semplice richiesta potrebbero essere rispedite dall'amministrazione e-commerce... :)

Sarebbe interessante sapere come fino ad oggi ognuno si è adoperato per risolvere questa questione e magari trovare soluzione definitiva... :rolleyes:

Link to comment
Share on other sites

Ciao a tutti, io mi ritrovo con due fatture fatte nel 2014 ma con numeri successivi al 2013.

Manualmente ho fatto le modifiche della date invoices sul DB e

su Order.php circa alla riga 1088 ho modificato così.

SELECT MAX(`number`)

    FROM `'._DB_PREFIX_.'order_invoice` WHERE year(date_add) = year(current_date)
 
Ma quando stampo i pdf delle due fatture 2014 i numeri non cambiano !!!
 
Ho sbagliato qualcosa?
 
Grazie mille
Link to comment
Share on other sites

Ciao Ragazzi, scusate l'assenteismo... :D

non so che dirvi per quanto riguarda la modificha al file Order.php non ho ne il tempo ne ancora le competenze per svilupparla,

quello che vi posso dire è che se rimettete il file Order.php senza modifica e seguite questo:

 

Al cambio anno tramite imposti nella tabella ps_order_invoice, nel campo number della prima fattura dell'anno nuovo, la nuova numerazione.
Esempio:
20150001

 

e resettiamo le note di credito, eseguendo un truncate delle tabelle:
ps_order_slip
ps_order_slip_detail

 

Andando nel BO e riscaricando le fatture dei vecchi ordini le troverete con il numero corretto e anche per il cliente sarà già disponibile il download con la numerazione corretta.

 

Per le note di credito ovviamente con il truncate verranno eliminate tutte quelle già generate, quindi sempre tramite BO prima di seguire la procedura effettuate un download di tutte le note di credito!... :rolleyes:

 

Attendiamo ancora un [spam-filter] di Prestashop che ci guidi in maniera più sensata in questa operazione, ma per ora eseguendo questa soluzione nessun cliente/commercialista mi ha infamato pesantemente... :D:)

 

Buonaserata

Link to comment
Share on other sites

Esatto... ;)

e

Certo perchè lui prende il maxnumber, quindi impostando 20150001 , la query tornerà il numero giusto.

 

Però non penso serve fare il truncate delle note di credito.

Il truncate delle _slip serve solo per avere delle note di credito con numerazione nuova nel nuovo anno. B)

Link to comment
Share on other sites

  • 1 month later...

Ciao, mi riallaccio a questo topic (sempre attuale) poiché sto offrendo una soluzione collaudata sul nuovo PrestaShop 1.6.

Non si tratta di un modulo ma di una patch alle classi eseguita a mano, con istruzioni per riapplicarla in caso di aggiornamenti.

Risolve però brillantemente la questione.

In futuro spero di poter capire come trasformare il tutto in un modulo, ma siccome è un servizio che mi è stato richiesto più volte e l'ho già svolto con successo ho pensato di pacchettizzarlo un minimo, e di proporlo.

 

http://www.prestashoprisolto.com/72-patch-azzeramento-progressivo-fatture-per-anno-prestashop.html

 

Si tratta di una souzione a pagamento. Mi scuso con chi cerca una soluzione gratutita, questa non lo è.

 

Segnalo anche che esiste un modulo che a quanto pare risolve il tutto su cippest.it ma è per il PS 1.4 e 1.5., costa molto meno ma per ora, mi dicono, non funziona sulla 1.6.

Buon lavoro a tutti

Link to comment
Share on other sites

  • 10 months later...
  • 2 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...