Al momento sto scrivendo qualcosa su crea automaticamente fatture con cronjobs utilizzando PHP e timestamp.
Ho una idea ben ponderata su come risolverlo, ma voglio chiedere alla community se qualcuno può vedere errori nel ragionamento e < strong> possibili problemi con la mia soluzione .
Sto cercando di descrivere la mia idea nel modo più dettagliato possibile in modo che tutti possano seguire il mio modo di pensare:
In generale ci sono 4 tipi di fatture :
- Pagato annualmente
- Pagato semiyearly
- Pagato trimestralmente
- Pagato mensilmente
I prodotti acquistati vengono salvati in un database SQL con il ciclo di fatturazione:
- ID dell'utente
- ID prodotto
- Ciclo di fatturazione
- Scadenza
Ora c'è un cronjob che viene eseguito una volta al giorno per verificare se è necessario creare una nuova fattura per ogni prodotto acquistato. Nella riga Last Due Date
salvi il timestamp della prima data da pagare quando viene creato.
Un codice che ho già scritto calcola il tempo trascorso dal Last Due Date
timestamp e restituisce qualcosa di simile a questo:
- La data / ora è passata o futura
- Mese passato
- I giorni passati
Ora le mie regole per la creazione di una nuova fattura sono:
-
Pagato annualmente
if (Il timestamp è passato = true AND il mese è passato = 11 AND Days gone by > = 20)
quindi (crea una nuova fattura e imposta "Ultima data di scadenza" su time ())
-
A pagamento semiyearly
if (Il timestamp è passato = true AND il mese è passato = 5 AND Days gone by > = 20)
quindi (crea una nuova fattura e imposta "Ultima data di scadenza" su time ())
-
Pagato trimestralmente
if (Il timestamp è passato = true AND il mese è passato = 3 AND Days gone by > = 20)
quindi (crea una nuova fattura e imposta "Ultima data di scadenza" su time ())
-
Pagato mensilmente
if (Il timestamp è passato = true AND il mese è passato = 0 AND Days gone by > = 20)
quindi (crea una nuova fattura e imposta "Ultima data di scadenza" su time ())
Come puoi vedere una nuova fattura verrà creata ~ 10 giorni prima della data di pagamento e il timestamp in Last Due Date
è impostato sull'ora corrente, quindi quando il cronjob torna indietro il giorno successivo non verrà creata alcuna fattura per questo prodotto acquistato.
La mia domanda è se questo è un modo appropriato per risolverlo e se puoi vedere eventuali errori nel ragionamento o problemi che potrebbero verificarsi ?