Здравствуйте,
Я хотел бы получить совет, потому что я разрабатываю CRM, которая генерирует кавычки и счета-фактуры (в PHP / MariaDB).
Каков наилучший способ создания номеров счетов-фактур (чтобы в базе данных никогда не возникало конфликтов - никогда не дублируйте номер и т. д.)?
PS: я хочу, чтобы каждое начало года (01 января) начиналось снова с номеров счетов, чтобынуль.И CRM будет использоваться несколькими магазинами, я хочу отдельную нумерацию для каждого магазина.
Сначала я решил поместить столбец number (int) вмоя таблица заказов ( order_invoices ).И в PHP при создании нового счета-фактуры сделайте так (пример с Eloquent de Laravel):
$lastNumber = OrderInvoice::whereRaw(
'number = (
SELECT MAX(number) FROM order_invoices
)'
)
->first()
->number;
$orderInvoice = new OrderInvoice();
$orderInvoice->number = $lastNumber + 1;
// other... assigne values to others columns
$orderInvoice->save();
Но после размышлений я не уверен, что это лучшее решение (я использую транзакции с таким большим трафикомв CRM и нескольких участниках одновременно проверяют команду ... риск конфликта при увеличении числа счетов?).
Разработчик, которого я знаю, посоветовал мне, например, создать счетчики стол.И в этой таблице:
_Добавить в столбцы: id , number (этот столбец будет увеличен, чтобы узнать, где мы находимся в нумерации).
_В этой таблице поместите строку (строку) для каждого магазина.
_И в моей программе (действие моего контроллера) для создания нового счета:
_Для созданиязаблокировать строку (в строке магазина) в начале генерации счета-фактуры;
_Чтобы получить число из таблицы counters , и это значениевставьте его (со знаком +1) в номер таблицы счетов ( order_invoices );
Что вы думаете?А у вас есть другие идеи и советы, пожалуйста?
Большое вам спасибо.