入力する検索語がわかりません。
私は、エージェントが支払った家賃を記録できるようにするための基本的なシステムを構築しています。これは問題ありません。
次のステップは、家賃の支払い期日について繰り返し可能な取引を行うことです。この偉業をどのように完了するべきかについてのチュートリアルやアドバイスはありますか?
例えば:
テナント 1 は、毎月 1 日に 2 ポンドの家賃を支払う必要があります。
テナント 2 は、4 週間ごとに 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に挿入し、T1でRent_date + repeatableでnext_dueを更新します
このスクリプトをファイルに入れ、cron を使用して、毎日実行します (朝が望ましい)。
これは簡単な答えです。繰り返し可能なフィールドに注意する必要があります(たとえば、日数、週数、または月の10日ごとを表すため)。
すべての支払いレコードに対して、、、、の4つのフィールドを保持できますpayment_date
。次に、毎日実行されるcronジョブで、日数の間隔に達しているかどうかを確認し、ヒットしている場合は、を現在のに追加します。その人が請求書の一部または全部を支払うと、あなたはそれをから減らします。recurring_days_interval
owe
price
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
ください。
このタスクには 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
このように...