2011-06-08 5 views
0

Je ne suis pas sûr de ce que les termes de recherche de taperPHP -. Banque comme les transactions mensuelles

Je construis un système de base pour un letting agents pour enregistrer les loyers payés, Je l'ai fait aucun problème.

La prochaine étape est de faire des transactions répétables de quand le loyer est dû, est leurs tutoriels ou de conseiller sur la façon dont je devrais accomplir cet exploit?

Par exemple:

locataire 1 a besoin de payer £ 2 loyer le premier de chaque mois.

Le locataire 2 doit payer £ 1 de loyer toutes les quatre semaines.

+0

jetez un oeil à [cron] (http://en.wikipedia.org/wiki/Cron) – JohnP

Répondre

0

Vous devez utiliser crontab à cette tâche,

# 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 

smth comme ça ...

1

Dans une table, vous aurez

T1: 
Tenant_id | repeatable | next_due 

Et dans une autre table, vous aurez

T2: 
Tenant_id | Rent_date 

Utilisation d'une requête comme:

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 

Lorsque vous trouvez quelque chose dans ce SELECT, insérer dans T2 la transaction pour le taux en cours et mise à jour T1 next_due avec Rent_date + répétables

Mettez ce script dans un fichier et en utilisant un cron - faites le courir tous les jours (préférable le matin).

Ceci est juste une réponse rapide. Vous devrez prendre soin du champ répétable (pour représenter par exemple le nombre de jours, ou de semaines, ou tous les 10 jours du mois).

+0

Merci pour votre réponse, c'est ce que je cherchais. Le répétable pourrait être un problème, certains payent toutes les quatre semaines et certains le X de chaque mois. Je pense que je peux trouver une solution, maintenant vous avez fourni un aperçu de la requête. – PHPAdam

0

Vous pouvez conserver quatre champs - payment_date, recurring_days_interval, owe, price pour chaque enregistrement de paiement. Ensuite, sur un cronjob qui s'exécute tous les jours, vous vérifiez si nous atteignons l'intervalle des jours, et si oui, ajoutez le price au owe actuel. Une fois que la personne paie une partie ou la totalité de la facture, vous la réduisez de owe.

La question que vous devez exécuter tous les jours doit être quelque chose comme:

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()

Si vous voulez arrêter le récurrent, juste mis recurring_days_interval-NULL.

+0

J'ai besoin de plus d'un système de transaction bancaire autre qu'un système de balance. Merci, votre réponse m'a aidé à comprendre le problème. – PHPAdam

+0

@PHPAdam Je suis content qu'il l'ait fait :) –

Questions connexes