我正在处理一些与创建经常性发票有关的 php 代码。我需要一些帮助来思考逻辑。我认为最终我会得到一种插入/选择语句。最终在此处生成的 php 代码将在每晚的 cron 中运行。
首先,让我向您展示一些我的表格项目以供参考,并解释一下它们的作用。该表称为 Invoice 并且还有其他表与之关联,但我认为如果我现在可以确定该表的逻辑,我可以将其应用于其他表。
ID = 这是自动递增的主键,也恰好是发票编号。
recurring = 这是发票是一次性的还是经常性的。O=一次,M=每月等
recurred = 这将在插入时设置为 N,这是我用来查看将在表中创建的下一张定期发票是否应基于此发票的逻辑。当将新的定期发票插入表中时,这将更改为 Y,因此 cron 作业不会再次处理它。
date = 这是插入/创建发票的日期。例如,如果创建发票的日期是本月 15 日,则创建的下一张发票将是下个月 15 日。本质上,M 代表每月。但是,我还没有弄清楚如何处理 31 日的创建日期,但下个月只有 30 天,可以在这里使用一些帮助。
所以这是我的逻辑。首先,我运行一个查询来查找所有不是 O 且 recurred = N 的行。
$result = mysql_query("SELECT * FROM invoice WHERE recurring != 'O' and recurred
= 'N'") 或死(mysql_error());
接下来,我处理每种重复的 M 代表每月,Q 代表季度,等等。
if recurring = M
if todays date day = 'date' day
copy line item into a new row with the following changes: new ID, todays date, and mark the recurred to N for the new insert (will mark the old one Y)
显然这不是实际的代码,正是我在想的。
所以我的问题是 1.)如何创建插入选择语句来处理更改的变量和 2.)如果发票是在一个月的 31 日创建并且下个月只有 30 天(或28)。