Jump to content
Sign in to follow this  
Katamaze

WHMCS - Modulo Invoice Extension per fatturazione in linea con normativa italiana

Recommended Posts

Ciao,

 

Descrivo di seguito le funzionalità del modulo Invoice Extension per WHMCS. In paesi come l'Italia è obbligatorio che una fattura rimanga inalterata nel tempo ma questo in WHMCS non avviene in quanto tutti i dati presenti in fattura (nome, cognome, azienda, partita iva...) vengono presi live dal database. Ciò significa che un cliente che nel corso del tempo abbia cambiato la propria ragione sociale, può riscaricare tutte le fatture già pagate e trovarsele intestate alla sua ultima ragione sociale. Un malintenzionato potrebbe giocarci per truccare le dichiarazioni dei redditi. Il problema è ancora più serio nel caso in cui si utilizzino più valute. Anche la valuta delle fatture viene presa live dal database in base a quella impostata nel cliente ed è quindi possibile per un cliente, con la complicità di un amministratore poco attento, trasformare una fattura già pagata di 1.000 EUR in 1.000 USD (al cambio 980 euro), 1.000 YEN (7 euro) o 1.000 INR (14 euro).

 

Per ovviare a questi problemi nel 2011 è stato rilasciato un addon ufficiale che tuttavia non è mai stato aggiornato, non ha alcuna funzionalità e ha un bug con i custom fields che sono largamente utilizzati dai provider italiani per salvare informazioni come la partita iva e codice fiscale. Ecco spiegato il motivo dello sviluppo del modulo Invoice Extension.

 

Funzionalità:

 

  • Congela i dati della fattura non appena vengono emesse oppure, a scelta, quando sono pagate
  • Congela anche i dati delle fatture eventualmente già presenti nel sistema. A scelta è possibile decidere se congelarle tutte o solo quelle pagate
  • Interfaccia che permette solo agli amministratori di modificare i dati già "congelati" siano essi custom field o i dati personali del cliente
  • Filtro di ricerca avanzato per le fatture più completo di quello standard: 17 criteri di ricerca invece di 9
  • Download PDF delle fatture al volo in un click senza doversi spostare alla vista di ogni fattura
  • Caricamento file nel profilo del cliente al volo in un click senza bisogno di aprire il Summary
  • Multi-lingua per davvero. La lingua viene selezionata automaticamente in base a quella utilizzata da ogni amministratore
  • Il modulo utilizza i template Smarty pertanto si, è possibile modificare il modulo nello stesso modo in cui si modificano i template del carrello e del front-end
  • Benchè WHMCS sia ancora basato sulle API mysql per la connessione al database (deprecato e vulnerabile a SQL injection), il modulo utilizza PDO
  • L'aspetto del modulo è lo stesso di WHMCS in modo tale che questo sia perfettamente integrato
  • Suggerimenti ed informazioni aggiuntive che compaiono al passaggio del mouse

 

Screenshots:

http://dev.revhosting.org/whmcs/10.png

http://dev.revhosting.org/whmcs/20.png

http://dev.revhosting.org/whmcs/30.png

http://dev.revhosting.org/whmcs/40.png

http://dev.revhosting.org/whmcs/50.png

http://dev.revhosting.org/whmcs/60.png

 

Esempi:

Il cliente Elvis Presley ordina un piano hosting per la sua azienda Las Vegas S.r.l.. Non appena salda la relativa fattura il modulo congela tutti i suoi dati personali (nome, cognome, valuta, lingua, indirizzo IP...) e custom field (per esempio numeri VAT ID, Tax ID, partita iva, codice fiscale...). Pochi mesi più tardi il cliente avvia una nuova attività con la sua nuova azienda Tutti Frutti S.r.l.. All'aggiornamento dei dati anche se il nome azienda, l'indirizzo, la città (...) sono cambiati, tutte le fatture già pagate manterranno i dati dell'azienda precedente.

 

Se necessario è possibile configurare il modulo affinchè congeli i dati non appena le fatture vengono generate (proforma e buoni d'ordine non pagati) ed è anche possibile controllare e modificare questi dati nel caso ce ne fosse il bisogno. I custom field sono modificabili in ogni loro parte (valore, fieldid e fieldname). Infine il modulo si occuperà di congelare sempre e solo i custom field con l'opzione "Show on Invoice" attiva. Tutto quanto già detto è valido anche per le fatture eventualmente già presenti nel sistema prima dell'installazione del modulo. Si possono congelare tutte, nessuna o solo quelle pagate.

 

Prossime funzionalità:

Si accettano consigli e feedback. Postate nella discussione, mandate una mail, aprite ticket, whatsapp (...) quello che vi pare :approved:

 

Link per ordinare:

http://my.revhosting.org/cart.php?a=add&pid=134

Share this post


Link to post
Share on other sites

Ed ovviamente mi sono dimenticato di parlare di una feature fondamentale per la normativa italiana. Di default WHMCS genera le proforma, o buoni d'ordine che dir si voglia, non curandosi di quando queste vengono saldate. Ad esempio poniamo il caso di due proforma generate una lo 01-01-2015 e l'altra lo 02-01-2015. La prima ad essere saldata è quella del 2 gennaio che prende la numerazione #1. Il giorno dopo viene saldata anche l'altra che logicamente prende la numerazione #2. Il risultato è un'eresia per ogni commercialista.

 

Fattura #1 dello 02-01-2015

Fattura #2 dello 01-01-2015

 

La numerazione progressiva della fattura deve andare di pari passo con la data della stessa. In Italia non è possibile che la fattura #2 sia antecedente alla #1. È un errore che obbliga a modificare manualmente gli ID e le date di ogni fattura affinchè si "incastrino" bene ed a comunicare, cliente per cliente, che le fatture in loro possesso sono sbagliate e che devono riscaricarle. Immaginate la mole di lavoro quando si devono gestire centinaia di fatture che magari i commercialisti dei vostri clienti hanno già contabilizzato. Si tratta di un problema sistematico che il modulo risolve con la semplice spunta di un checkbox. Alla sua attivazione il modulo farà in modo che l'ID e la data della fattura vadano sempre di pari passo. Il risultato, riprendendo l'esempio di prima, sarà il seguente:

 

Fattura #1 dello 01-01-2015

Fattura #2 dello 02-01-2015

 

-------------------------------------------

 

Ciò detto volevo chiedere ad ognuno di voi di condividere eventuali problemi di fatturazione con WHMCS. Avendo lavorato sui WHMCS di molteplici hosting provider, so ad esempio che ci sono problemi riguardo la gestione del credito al quale, al momento del pagamento, non viene applicata l'IVA. Una fattura senza IVA, per la maggior parte dei commercialisti con cui ho avuto a che fare, è una cosa che non esiste in Italia. A questo proposito qual è la vostra idea/esigenza? Pensavo ad implementare una modifica che permette di far pagare l'IVA al momento dell'aggiunta del credito (esempio 10 euro di credito + 22% IVA). Di contro, al momento di un saldo totale di una proforma con credito, fare in modo che la proforma non diventi mai fattura e che venga quindi cancellata mantenendo comunque un riferimento nel log delle transazioni. Un'altra soluzione che però mi piace meno, è quella di trasformare le fatture di ricarica credito in Note di credito con numerazione separata o contigua con quella delle fatture.

Edited by revhosting

Share this post


Link to post
Share on other sites

Per quanto riguarda il meccanismo del proforma che se pagato diviene automaticamente fattura, ricordo che c'è un flag da selezionare per far si che la data della fattura concida con il giorno stesso del pagamento e che, naturalmente, il progressivo fattura sia incrementato di 1 rispetto all'ultima fattura generata dal sistema.

Così risolvi il problema di avere prog. fattura 1 con data di oggi e prog. fattura 2 con data di ieri.

 

L'assenza dell'IVA nelle fatture di ricarica credito è un problema abbastanza rognoso. L'idea dell'hook che aggiunge l'aliquota IVA in fattura è interessante, ma ogni qualvolta c'è un rinnovo e viene usato il credito residuo, il modo più pulito - a mio avviso - è quello di non generare una fattura e di salvare la transazione come suggerivi.

Share this post


Link to post
Share on other sites
Per quanto riguarda il meccanismo del proforma che se pagato diviene automaticamente fattura, ricordo che c'è un flag da selezionare per far si che la data della fattura concida con il giorno stesso del pagamento e che, naturalmente, il progressivo fattura sia incrementato di 1 rispetto all'ultima fattura generata dal sistema.

Così risolvi il problema di avere prog. fattura 1 con data di oggi e prog. fattura 2 con data di ieri.

Si, lo fa l'EU VAT Addon ma visto che c'ero l'ho implementato direttamente nel modulo cosi hai lo stesso risultato con un modulo in meno installato.

 

L'assenza dell'IVA nelle fatture di ricarica credito è un problema abbastanza rognoso. L'idea dell'hook che aggiunge l'aliquota IVA in fattura è interessante, ma ogni qualvolta c'è un rinnovo e viene usato il credito residuo, il modo più pulito - a mio avviso - è quello di non generare una fattura e di salvare la transazione come suggerivi.

Per il primo punto alcuni commercialisti fanno storie perchè ad un pagamento dovrebbe sempre corrispondere una fattura. E poi cosa accade se oggi nel 2015 ricarico del credito che poi vado ad utilizzare mesi od anni dopo? Nell'attesa come li dichiaro?

 

Per il secondo punto invece pensavo di aggiungere l'IVA alla ricarica credito e poi imporre che il saldo di una fattura mediante credito può avvenire solo se la questa viene saldata interamente con il credito. Il altre parole se devo saldare una fattura di 100 euro ed ho 20 euro di credito non do la possibilità di scalare 20 euro. Puoi saldare una fattura con il credito solo se il credito è sufficiente alla copertura totale del saldo dovuto. In conclusione ricarico 100 euro e ricevo una fattura (100 +22% IVA). X giorni dopo devo saldare una proforma di 80 euro. Applico il credito. Mi restano 20 euro. I servizi nella proforma da 80 euro vengono rinnovati, la transazione registrata ma la proforma non diventa fattura. La cancello direttamente dal sistema. Per 3 provider abbiamo risolto così e pare che vada bene. Penso di implementarlo nella prossima release a meno che non mi vengano in mente modi migliori.

Share this post


Link to post
Share on other sites
Si, lo fa l'EU VAT Addon ma visto che c'ero l'ho implementato direttamente nel modulo cosi hai lo stesso risultato con un modulo in meno installato.

 

Ok :)

 

Per il primo punto alcuni commercialisti fanno storie perchè ad un pagamento dovrebbe sempre corrispondere una fattura. E poi cosa accade se oggi nel 2015 ricarico del credito che poi vado ad utilizzare mesi od anni dopo? Nell'attesa come li dichiaro?

 

La fattura andrebbe emessa, comunque, contestualmente alla ricezione del pagamento.

 

Questo indipendentemente da quando poi, un domani, il cliente andrà effettivamente ad usufruire di quel credito per un servizio da erogare.

 

Se il cliente dopo un anno vuole un dominio, non devi emettere fattura perchè l'hai già emessa all'epoca della ricarica.

 

Non so se, in questo scenario, l'hook per il provisioning della risorsa richiesta parte lo stesso in automatico. Potrebbe esserci un problema di automazione, in quanto l'hook "pagamento" di fatto non c'è o sbaglio?

 

Per il secondo punto invece pensavo di aggiungere l'IVA alla ricarica credito e poi imporre che il saldo di una fattura mediante credito può avvenire solo se la questa viene saldata interamente con il credito. Il altre parole se devo saldare una fattura di 100 euro ed ho 20 euro di credito non do la possibilità di scalare 20 euro. Puoi saldare una fattura con il credito solo se il credito è sufficiente alla copertura totale del saldo dovuto. In conclusione ricarico 100 euro e ricevo una fattura (100 +22% IVA). X giorni dopo devo saldare una proforma di 80 euro. Applico il credito. Mi restano 20 euro. I servizi nella proforma da 80 euro vengono rinnovati, la transazione registrata ma la proforma non diventa fattura. La cancello direttamente dal sistema. Per 3 provider abbiamo risolto così e pare che vada bene. Penso di implementarlo nella prossima release a meno che non mi vengano in mente modi migliori.

 

Ok per l'IVA in fattura su ricarica credito.

La soluzione implementata quando credito residuo < saldo proforma è sicuramente funzionale. Ci faccio una pensata in questi giorni, magari viene fuori un altra soluzione altrettanto funzionale.

Share this post


Link to post
Share on other sites

Ok direi che va bene. Nella prossima release metterò due semplici checkbox:

 

  • Applica tasse alle ricariche credito
  • Non trasformare in fatture le proforma saldate interamente con credito

Al resto ci penserà il modulo :approved: La release conterrà anche altri fix come ad esempio 2 query mysql() che mi ero dimenticato di fare in PDO.

Share this post


Link to post
Share on other sites

Ho completato la nuova release del modulo che comprende anche le funzionalità di cui si è discusso. Le elenco.

 

  • Dal momento che in alcuni paesi come l'Italia è necessario applicare le tasse alle ricariche credito, c'è ora una nuova opzione nel modulo che, se attivata, provvederà automaticamente a generare le fatture "Add Funds" o "Aggiungi credito" che dir si voglia comprensive di IVA
  • Una nuova opzione consente, se attivata, di cancellare dal sistema in modo automatico tutte le proforma saldate interamente con credito senza farle diventare fatture in linea con le normative italiane
  • Log di tutte le transazioni effettuate con credito. È ora possibile ricercare e filtrare ogni singola transazione effettuata mediante l'uso di credito. Non sono visibili solo le transazioni di ricarica credito ma anche l'uso che ne viene fatto con i dettagli completi che rimangono in memoria e sono consultabili anche laddove le relative fatture, per via di processi automatici, siano state eliminate. In altre parole potete stare tranquilli perchè c'è sempre un riferimento
  • Possibilità di aggiungere delle esenzioni dalla fatturazione. È possibile disabilitare la fatturazione per determinati clienti. Supponiamo ad esempio che ci sia un cliente per il quale non volete che WHMCS generi fatture. Nessun problema. Basta attivare in un click l'esenzione ed al resto penserà il modulo. Per ovvi motivi il cliente per il quale sia stata attivata l'esenzione delle fatture potrà continuare a rinnovare normalmente i prodotti, servizi, domini (...) a saldare proforma, effettuare nuovi ordini (...) semplicemente il modulo farà in modo che non sia mai generata una fattura e si limiterà a salvare ogni singola transazione nel log

 

In basso allego gli screenshot delle sole pagine nuove o cambiate dall'ultima release. Come sempre si accettano suggerimenti.

 

10.png

 

20.png

 

30.png

Share this post


Link to post
Share on other sites

Rilasciata la nuova versione che permette di rimuovere dal proprio WHMCS i moduli Fixed Invoice Data ed EU VAT Addon. Questo perchè d'ora in avanti il modulo si occupa anche della gestione delle tax rules. È possibile non solo stabilire le aliquote paese per paese ma anche il nome che l'imposta a valore aggiunto ha in ogni paese. In altre parole non ci sarà più un generico VAT per tutti i paesi del mondo ma IVA per l'Italia, 消費税 per il Giappone, НДС per la Russia, MwSt./USt. per l'Austria, ΦΠΑ Grecia, TVA Francia (...) ognuno con le rispettive aliquote.

 

Per facilitare la gestione delle tax rules, tutti i paesi sono divisi per zone geografiche (nord America, sud America, Europa, Africa, Asia, Oceania, Antartide) e zone politiche/monetarie (Unione Europea, Euro Zona). Infine il modulo è già munito di aliquote e nomi per l'imposta a valore aggiunto per 104 paesi. Per utilizzarli è sufficiente un click. In allegato la nuova pagina.

 

40.png

 

Infine sto lavorando, per la prossima versione, all'implementazione di un sistema che ridurrà sensibilmente il numero di fatture generate per ogni cliente. L'idea è che si potrà impostare un ciclo di fatturazione in modo tale che il modulo genererà, ad esempio, una fattura per ogni cliente ogni mese oppure una ogni 3, 6 o anche 12 mesi. Ciò significa che impostando ad esempio una fatturazione mensile, per ogni cliente ci saranno un massimo 12 fatture all'anno, con quella trimestrale 4 all'anno e così via. In tutto questo i clienti potranno normalmente rinnovare, pagare ed ordinare nuovi servizi. Alla prossima :)

Share this post


Link to post
Share on other sites

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
Sign in to follow this  

×