2017-01-05 3 views
0

Я хочу создать базовую систему инвентаризации с использованием laravel. У меня 2 таблицы. Один для покупок и другой для продажи. Поля в таблице покупки: id, product_id, quantity_bought, date_bought.Разработка базы данных для системы инвентаризации в laravel

Поля в таблице продаж: ид, product_id, quantity_sold, date_sold

Как бы я выполнить валидация таким образом, что quantity_sold не может быть больше, чем quantity_bought? Также как я могу получить quantity_remaining и сохранить его в базе данных.

ответ

1

Возможно, вы должны добавить другую таблицу products, которая содержит текущую сумму на складе.

Затем вы можете создать связь между products и purchases и sales. Поэтому столбец product_id в purchases и sales указывает на таблицу продуктов. Для получения дополнительной информации см .: https://laravel.com/docs/5.3/eloquent-relationships

Затем, после того, как вам нужно будет добавить новые продажи, вы можете совершить транзакцию, в которой вы проверяете, превышает ли текущая сумма на складе продуктов больше, чем количество проданных продуктов. И если все хорошо, вы обновляете текущую сумму на складе и создаете новую запись для таблицы продаж. Если какая-либо из проверок терпит неудачу, просто откат транзакции, если все это хорошо, зафиксируйте ее. Для получения дополнительной информации о сделках см: https://laravel.com/docs/5.3/database#database-transactions

Это образом amount_in_stock из products таблицы всегда будет иметь текущее количество на складе и ваши purchases и sales таблицы будет ваш журнал.


Возвращаясь к проверке, в этой установке вам необходимо запросить products таблицу для текущей суммы в наличии. Вы можете просто извлечь его из db и сравнить его с вашим вводом для продаж (что вы должны делать в любом случае). Не существует правила проверки правильности Laravel, которое может проверить значение таблицы x и сравнить его с столбцом таблицы где-нибудь. Конечно, вы можете создавать свои собственные, но я не понимаю, почему вы должны это делать здесь. В любом случае, уточните: https://laravel.com/docs/5.3/validation#custom-validation-rules для получения дополнительной информации.

0

Вы можете получить это, определив totalBoughts($product_id) в модели «Покупка» и totalSolds($product_id) в вашей таблице «Продажи» и вызвать в контроллере, давая идентификатор продукта

, но это не эффективный способ сделать так

в качестве альтернативы вы можете создать отношения между этими двумя с маточным столом, где и можно хранить текущее состояние продукта

при покупке акций увеличиваются и для продажи это уменьшить количество продуктов, так и не может вручную проверить всю таблицу доста , если какой-либо продукт на складе установлен в 0, то он не может быть продан

0

Там в хорошая библиотека для инвентаря для Laravel.Поддерживает как 4 и 5 https://github.com/stevebauman/inventory

таблицы в соответствии с библиотекой являются

+---------------------------------+ 
|Table Names      | 
+---------------------------------+ 
| categories      | 
| inventories      | 
| inventory_skus     | 
| inventory_stock_movements  | 
| inventory_stocks    | 
| inventory_suppliers    | 
| inventory_transaction_histories | 
| inventory_transactions   | 
| locations      | 
| metrics       | 
| migrations      | 
| password_resets     | 
| suppliers      | 
| users       | 
+---------------------------------+ 
Смежные вопросы