Я хочу создавать счет каждые 2 недели.Счет может иметь 1 или более заказов от 1 до 15 и от 16 до 31 order_date
.Как это делается?
Предположим, что дизайн таблицы:
order table
- order_id (PK)
- user_id (FK)
- total
- status
- order_date
- invoice_id (FK, default is 0)
invoice table
- invoice_id (PK)
- invoice_date
- total (total of all orders that is linked to order.invoice_id)
- status (Paid, Unpaid, etc)
//order.invoice_id can have multiple same invoice id
Первое решение:
Выполнение через задание Crob каждые 2неделю.Он просматривает таблицу заказов (найдите order_date от 1 до 15 или от 16 до 31 и status = 1), затем добавьте в таблицу счетов и обновите order.invoice_id
Если сегодняшняя дата - 11 июня 2010 года, тогда онавставит строку в таблицу счетов-фактур, а invoice_date будет 01 июня 2010 года. PHP проверит invoice_date перед добавлением строки, если она уже существует, вместо этого она обновит order.invoice_id.
SecondРешение:
Измените order.status на 1 вручную из бэкэнда, после чего он будет выполнять те же функции, что и «Первое решение» (кроме задания Cron)
Псевдокод:
NowDate = Date();
//Invoice Date can be 01 or 16 date current month
InvoiceDate = InvoiceDate(NowDate)
if (there is invoice for InvoiceDate) {
invoiceNumber = getNumber(invoice)
} else {
invoiceNumber = new Invoice(InvoiceDate)
}
new Order(invoiceNumber, orderitems)
Что будет лучше или у вас есть другое лучшее решение?