0

入力する検索語がわかりません。

私は、エージェントが支払った家賃を記録できるようにするための基本的なシステムを構築しています。これは問題ありません。

次のステップは、家賃の支払い期日について繰り返し可能な取引を行うことです。この偉業をどのように完了するべきかについてのチュートリアルやアドバイスはありますか?

例えば:

テナント 1 は、毎月 1 日に 2 ポンドの家賃を支払う必要があります。

テナント 2 は、4 週間ごとに 1 ポンドの家賃を支払う必要があります。

4

3 に答える 3

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日ごとを表すため)。

于 2011-06-08T09:58:58.740 に答える
0

すべての支払いレコードに対して、、、、の4つのフィールドを保持できますpayment_date。次に、毎日実行されるcronジョブで、日数の間隔に達しているかどうかを確認し、ヒットしている場合は、を現在のに追加します。その人が請求書の一部または全部を支払うと、あなたはそれをから減らします。recurring_days_intervalowepricepriceoweowe

毎日実行する必要があるクエリは、次のようになります。

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ください。

于 2011-06-08T10:05:02.157 に答える
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

このように...

于 2011-06-08T09:54:12.940 に答える