我不确定要输入哪些搜索字词。
我正在建立一个让代理商记录租金的基本系统,我这样做没问题。
下一步是做租金到期时的可重复交易,是他们的任何教程或建议我应该如何完成这项专长?
例如:
租客1需要在每个月的第一天支付2英镑的租金。
租户2需要每四周支付1英镑的租金。
答案 0 :(得分:1)
在表格中,您将拥有
T1:
Tenant_id | repeatable | next_due
在另一张表中,你将有
T2:
Tenant_id | Rent_date
使用如下查询:
SELECT
*
FROM
T1 JOIN
(SELECT
tenant_id, MAX(Rent_date) LastRent
FROM
T2
GROUP BY
tenant_id
) MaxT2 on T1.tenant_id = MaxT2.tenant_id
WHERE
MaxT2.LastRent + repeatable > T1.next_due
当您在此SELECT中找到某些内容时,将当前费率的交易插入T2,并使用Rent_date + repeatable插入T1更新next_due
将此脚本放入文件并使用cron - 使其每天运行(最好在早上)。
这只是一个快速的答案。您将需要处理可重复的字段(以表示例如天数,周数或每月的第10天)。
答案 1 :(得分:0)
你应该使用crontabs来完成这项任务,
# m h dom mon dow user command
17 * * * * root php /path/to/hourly.php
25 6 * * * root php daily.php
47 6 * * 7 root php weekly.php
52 6 1 * * root php monthly.php
像这样......
答案 2 :(得分:0)
您可以为每个付款记录保留四个字段 - payment_date
,recurring_days_interval
,owe
,price
。
然后,在每天运行的cronjob上,检查我们是否达到了天数间隔,如果是,则将price
添加到当前owe
。一旦该人支付了部分或全部账单,您就可以将其从owe
减去。
您应该每天运行的查询应该是:
UPDATE payments SET owe=COALESCE(owe, 0)+COALESCE(price, 0) WHERE recurring_days_interval IS NOT NULL AND DATE_ADD(payment_date, INTERVAL recurring_days_interval DAY) > NOW()
如果您想停止重复发生,只需将recurring_days_interval
设为NULL
。