|
|
|
| Я выставляю счет. И определяю срок его жизни 30 дней. Если в течение этого срока счет не оплачен, то его надо удалить.
Вопрос: Как это лучше реализовать?
У меня 2 варианта:
1. В БД сразу сделать 3 поля:
1. Дата СТАРТ ( дата выписки счета)
2. Дата СТОП (дата смерти, если не оплачен)
3. Дата ОПЛАТЫ.
В этом случае при создании счета вычислять дату СТОП и каждый день например запускать крон, чтобы выбислять все счета с просроченной датой СТОП и удалять их.
2. В БД создать 2 поля:
1. Дата СТАРТ ( дата выписки счета)
2. Дата ОПЛАТЫ.
В этом случае тоже каждый день запускать Крон и MYSQLом отсчитвывать 30 дней от даты СТАРТ и если 30 дней прошло удалять счет.
К примеру таким запросом:
DELETE FROM orders WHERE ADDDATE(date_start, INTERVAL 30 DAY) > NOW()
|
Как лучше сделать?
Если второй вариант будет не сильно тормозной, (на лету считать дату) то я думаю что лучше 2 вариант. Но толко вот я не знаю, будет ли он сильно тормозной. | |
|
|
|
|
|
|
|
для: tAleks
(04.02.2007 в 13:40)
| | Лучше все-таки 2 вариант | |
|
|
|
|
|
|
|
для: tAleks
(04.02.2007 в 13:40)
| | А на что влияет дата оплаты?
я бы сделал два поля:
срок истечения, оплата
при выставлении счета:
INSERT INTO table (user_id, lim, paid) VALUES($user_id, NOW()+INTERVAL 30 DAY, 0)
После оплаты
UPDATE table SET lim=NOW()+INTERVAL (сколько дней оплачено) DAY, paid=1 WHERE user_id=$user_id
чистим устаревшие
DELETE FROM table WHERE lim<NOW() | |
|
|
|
|
|
|
|
для: Loki
(04.02.2007 в 13:50)
| | Хороший вариант! | |
|
|
|