MarketCoop

Управление товарными остатками

Давайте начнем принимать товар на склад магазина. Например, товар от поставщика 20 литров молока по цене 50,00 рублей. Управление товарными остатками осуществляется с помощью Mutations:manageInventory:

Цена устанавлявается как целочисленное значение, которое вычисляется по формуле ЦЕНА * 100. Таким образом значение цены включает в себя и копейки. Например: стоимость 125,31 должна указываться как 12531.
	PRIVATE
	
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, который зафиксировал акт внесения паевого взноса.

  PRIVATE
  
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
            }
          }
        }
      }
    }
  }
}
  

Списание просроченного или испорченного товара производится с указанием причины утилизации:

При указании причины списания товарные запасы будут уменьшены на соответствующее количество

  PRIVATE
  
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:

  PRIVATE
  
query InventoryQuery {
  inventory(lang: RU) {
    id
    invid
    qty
    total
    stock {
      id
      qty
      sku
      product {
        slug
        translate {
          title
        }
      }
    }
  }
}
  

Давайте произведем новый продукт: Производство">Производство