Управление товарными остатками
Давайте начнем принимать товар на склад магазина. Например, товар от поставщика 20 литров молока по цене 50,00 рублей. Управление товарными остатками осуществляется с помощью Mutations:manageInventory:
Цена устанавлявается как целочисленное значение, которое вычисляется по формуле ЦЕНА * 100. Таким образом значение цены включает в себя и копейки. Например: стоимость 125,31 должна указываться как 12531.
mutation InventoryMutation {
manageInventory(
inventory: {
invid: "1",
shop: "romashka",
stock: "MILK001", #UUID или SKU номенклатуры товара или модификации (молоко)
qty: 20,
uom: L,
cost: 5000, #Стоимость за еденицу полученного товара, умноженная на 100
currency: RUB,
description: "Инвентаризация склада", #Произвольное описания поступления
organization: "milkfactory" #UUID или slug поставщика
}
) {
shop
inventory {
id
invid
total
}
}
}
Когда поступление товара производится в связи с паевым взносом пайщика, например в форме 50 килограмм ягод по согласованной стоимости 100,00 рублей за килограмм, то можно указать псевдоним пайщика и код транзакции в блокчейне Coopenomics, который зафиксировал акт внесения паевого взноса.
mutation InventoryMutation {
manageInventory(
inventory: {
invid: "2",
shop: "romashka",
stock: "BERRIES002", #UUID или SKU номенклатуры товара или модификации (клубника)
qty: 50,
uom: KG
cost: 10000, #Стоимость за еденицу полученного товара, умноженная на 100
currency: RUB,
description: "Паевой взнос в форме ягод",
account: "xxx", #Coopenomics account
chain: "TX_COOPENOMICS_TRANSACTION"
}
) {
shop
inventory {
id
invid
total
qty
stock {
id
qty
uom
price {
currency
price
uom
}
product {
id
slug
translate {
lang
shortname
}
category {
slug
translate {
title
lang
}
}
}
}
}
}
}
Списание просроченного или испорченного товара производится с указанием причины утилизации:
- LOST - товар утерян по объективным причинам
- STOLEN - товар отсутствует, требуется дополнительный отчет
- EXPIRED - истек срок годности товара
- ROTTEN - товар испорчен или непригоден
- BROKEN - товар сломан или не работает
При указании причины списания товарные запасы будут уменьшены на соответствующее количество
mutation InventoryMutation {
manageInventory(
inventory: {
invid: "3",
shop: "romashka",
stock: "BERRIES002",
qty: 10,
uom: KG
cost: 10000,
currency: RUB,
description: "Ягоды испорчены из-за неправильного хранения",
reason: ROTTEN #при указании причины количество товарных запасов уменьшается
}
) {
shop
inventory {
id
invid
total
qty
stock {
sku
qty
uom
}
}
}
}
Получение списка поступлений, списаний и инвентаризации: Queries:inventory:
- id* - поиск по UUID или инвентарному номеру
- shop* - поиск по UUID, slug или наименования магазина
- reason - код причины снижения товарных запасов
- supplier* - поиск по UUID, slug, Coopenomics account или названия организации поставщика или пайщика - физического лица
- date_from - поиск с этой даты инвентаризации
- date_to - поиск до этой даты инвентаризации
- lang - поиск по языку названия и описания товара
query InventoryQuery {
inventory(lang: RU) {
id
invid
qty
total
stock {
id
qty
sku
product {
slug
translate {
title
}
}
}
}
}
Давайте произведем новый продукт:
Производство">Производство