Вы можете оставить четыре поля - 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
.