2015-06-22 2 views
0

Я уже запрограммировал базовую систему выставления счетов, используя PHP/MySQL, которая имеет структуру таблицы следующим образом:Как запрограммировать повторяющуюся систему выставления счетов/счетов с использованием PHP и MySQL

Таблица счетов; invoice_id, invoice_date, customer_id и т. д. Таблица строк счетов-фактур; invoice_line_id, invoice_id, количество, цена, описание и т. д.

Мне нужна система для автоматического создания будущих счетов-фактур с установленными интервалами (например, каждые 1 неделю или каждые 2 месяца и т. д.). Я думал о создании новой таблицы следующим образом;

Таблица расписания счетов-фактур; invoice_schedule_id, invoice_id, интервал (например, 1), interval_unit (месяцы), дата начала, next_processing_date

Моя идея состояла в том, чтобы затем установить задание cron, которое будет выполнять файл PHP один раз в день. Затем файл PHP будет генерировать счет-фактуру, когда next_processing_date соответствует сегодняшней дате и обновит next_processing_date в базе данных. Мне нравится, как это сделать, но я застрял в том, как на самом деле вставить новый счет в таблицу/базу данных. Имеет ли MySQL какой-либо тип функции «копировать строку», поскольку новый счет-фактура будет идентичен исходному, за исключением того, что invoice_date должен быть обновлен.

+0

Звучит очень похоже: http://stackoverflow.com/questions/9156340/how-to-copy-a-row-and-insert-in-same-table-with-a-autoincrement-field-in- MySQL – BigScar

ответ

1

Cron звучит хорошо. (Также стоит упомянуть MySQL планировщик событий, но опять же я бы пойти на Cronjob)

копия будет что-то вроде этого SQLFIDDLE:

create table t (id int, d date); 

insert into t values(0, CURDATE()); 
insert into t values(2, CURDATE()); 
insert into t values(1, CURDATE()); 

insert into t (select id+1,curdate() from t order by id desc limit 1); 

выше примера, чтобы скопировать последний заказ как конечно, вы могли бы поставить предложение where, где id = 1 или какой идентификатор вашего ссылочного заказа.

0

BigScar's reference of "How to copy a row and insert in same table with a autoincrement field in MySQL?", похоже, решает проблему с копией.

Однако, поскольку вы в основном выполняете определенную группу запросов БД, вместо cronjobs, вы можете использовать MySQL events. Если ваша версия MySQL поддерживает их (проверьте в phpmyadmin: выберите БД и посмотрите в верхнюю панель меню, вы можете создать их там, даже не знакомясь с синтаксисом), это хорошая практическая альтернатива.

Смежные вопросы