Какой способ создать этот инвентарь в mysql

Я пытаюсь создать веб-приложение на основе нескольких таблиц и форм mysql.

У меня есть страница ADD Shipment, на которой пользователь добавляет список продуктов и номер счета-фактуры, так что в моей таблице Shipment_Products у меня есть

id invoice_no product_code qty
1     34          HP222     4
2     34          HL234     1

У меня также есть страница Продано, на которой пользователь добавляет список продуктов, проданных со своего склада, поэтому таблица Продано_Продукты заполняется следующим образом.

id invoice_no product_code qty
1    1           HP222      2
2    34          HL234      1

Мне нужна третья таблица под названием Stock, в которой я должен получить общее количество товаров на складе, но я застрял в том, как автоматически сгенерировать ее на основе этих двух существующих таблиц, а затем поддерживать ее в актуальном состоянии.

Какие-либо предложения ?


person Roberto C    schedule 28.11.2014    source источник
comment
так что только один продукт может быть продан по счету?   -  person    schedule 28.11.2014
comment
Упрощая рассмотрение только одного поставщика, вам по-прежнему требуется таблица Invoice.   -  person earcam    schedule 28.11.2014
comment
Нет, может быть любое количество проданных товаров. Я помещаю invoice_no во вторую таблицу, но просто игнорирую его. Мне просто нужно иметь таблицу количества на складе для каждого товара, но мне трудно понять, как ее создать на основе моих записей из таблицы Shipment_Products. Я знаю, что могу использовать count и сгруппировать их по имени и получить количество, но как мне создать таблицу на лету?   -  person Roberto C    schedule 28.11.2014
comment
эти номера счетов-фактур для продукта проданы или нет?   -  person    schedule 28.11.2014
comment
Конечно, общая сумма — это количество, введенное в таблицу «Запасы», а количество в «Продано» получено путем обновления таблицы «Запасы», чтобы вычесть количество и добавить количество в таблицу «Отгрузка_Продукты»? Если это так, ваш код или (в SQL) хранимая процедура должны сделать эту передачу атомарной с помощью < href="http://en.wikipedia.org/wiki/Database_transaction" rel="nofollow noreferrer">транзакция.   -  person earcam    schedule 28.11.2014


Ответы (3)


Я не думаю, что то, что вы хотите, так же просто, как то, что вы пытаетесь сократить. Во-первых, если ваша компания имеет дело с запасами FIFO, а не LIFO, вы снимаете запасы с учета, поскольку они были доступны для целей COGS (себестоимость проданных товаров) на основе затрат от данного поставщика в данное время покупки.

У вас может быть просто таблица покупок, показывающая каждый полученный товар и количество, а затем, когда товары продаются, есть еще одна таблица, показывающая уменьшение доступного количества от каждой полученной покупки. С этим довольно сложно иметь дело, учитывая такой простой сценарий, как...

Купите 10 единиц товара «X» у продавца, затем еще 4 единицы товара «X» вскоре после этого. Всего 14. Теперь, для продажи, у вас есть один заказ на продажу 3, затем 2, затем 4, затем 3. Всего продано 12 из 14, но независимо от того, как вычисляется FIFO против LIFO, будет разделение, которое количество было учтено из какой исходной покупки... Пример: FIFO будет учитываться из первоначальных 10, а затем 4 покупок.

10 purchase
10 - 3 = 7
7 - 2 = 5
5 - 4 = 1
1 - 3 = -2 -- WRONG... Only 1 of the 3 against the original 10 purchase
1 - (1 of 3) = 0
4 purchase
4 - (remaining 2 of 3) = 2  -- here is the remaining 2 entries from the last sale, leaving 2 left in inventory.

Таким образом, нет абсолютной структуры таблицы для обработки, но я думаю, вам следует проверить, как они могут понадобиться требованиям управления запасами.

person DRapp    schedule 28.11.2014

Я постараюсь объяснить это лучше. Извините за мой плохой английский !

Теперь у меня есть таблица received, в которую каждый элемент в конкретном счете добавляется, когда он поступает, поэтому, скажем, сегодня мы получаем несколько элементов, 3 элемента и уникальный invoice_id или shipment_id (на самом деле не имеет значения) S1. В таблице received у меня есть

id shipment_id product_code qty 1 S1 HL223 2 2 S1 XLS21 1 3 S1 BenqWHL 1

У меня есть еще одна похожая таблица под названием sold, которая работает так же, я добавляю список товаров по их product_code и присваиваю продаже идентификатор (для других целей). Итак, таблица sold выглядит так:

id sold_id product_code qty 1 B1 HL223 1 2 B1 XLS21 1

Теперь мне просто нужно увидеть товары, оставшиеся на складе, либо создав таблицу, в которой я храню товары, сгруппированные по их уникальному коду продукта, и просто подсчитываю записи как количество, а затем, возможно, при продаже я могу вычесть количество, проданное в эта таблица stock ?

Меня не волнуют номера или идентификаторы счетов, пользователи и т. д.

person Roberto C    schedule 28.11.2014

Это плохой путь, но, по крайней мере, это путь к началу.

сделать таблицу: inventory/Stock или что-то со следующей структурой: ID, Item_id, item_quantity.

При покупке/получении добавить в эту таблицу строку с положительным количеством. При Продаже/выпуске добавьте в эту таблицу строку с отрицательным количеством. Чтобы рассчитать запас, выполните запрос с суммой () определенного item_id.

person jccaceres01    schedule 26.10.2016