簡體   English   中英

如何使用PHP和MySQL對循環計費/發票系統進行編程

[英]How to program a recurring billing/invoice system using PHP and MySQL

我已經使用PHP / MySQL編寫了一個基本的發票系統,該系統的表結構如下:

發票表; invoice_id,invoice_date,customer_id等發票行表; invoice_line_id,invoice_id,數量,價格,說明等

我需要系統按設定的時間間隔(例如每1周或每2個月等)自動生成以后的發票。 我當時想創建一個新表,如下所示;

發票時間表表; invoice_schedule_id,invoice_id,間隔(例如1),interval_unit(月),開始日期,next_processing_date

我的想法是設置一個cron作業,該作業每天執行一次PHP文件。 然后,當next_processing_date與今天的日期匹配時,PHP文件將生成發票,並更新數據庫中的next_processing_date。 我對如何實現此目標很滿意,但我堅持的是如何將新發票實際插入表/數據庫中。 MySQL是否具有任何類型的“復制行”功能,因為除了需要更新invoice_date之外,新發票與原始發票相同。

Cron聽起來不錯。 (也值得一提的是MySQL Event Scheduler,但我還是會去參加Cronjob)

復制將類似於以下SQLFIDDLE

create table t ( id int, d date );

insert into t values( 0, CURDATE() );
insert into t values( 2, CURDATE() );
insert into t values( 1, CURDATE() );

insert into t ( select id+1,curdate() from t order by id desc limit 1 );

上面的示例是復制最新的訂單作為副本,當然您可以在where = 1或您的參考訂單的id處放置where子句。

BigScar的參考資料:“如何在MySQL中使用自動增量字段復制一行並插入同一表中?” 似乎可以解決您的復制插入問題。

但是,由於您主要是在執行一組特定的數據庫查詢,而不是cronjobs,因此可以使用MySQL events 如果您的MySQL版本支持它們(請檢查phpmyadmin:選擇一個數據庫並查看頂部菜單欄,您甚至可以在不知道語法的情況下在此處創建它們),這是一個很好的實用選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM