IMS. ← Ко всем документам

Приход — бизнес-логика

Основной способ, которым товар вообще появляется в системе (кроме
производства и прямой корректировки остатка). Направление у прихода одно
— товар всегда добавляется на склад, обратного смысла у документа нет.
Возврат от клиента — тот же документ с другой операцией, не отдельный тип
(см. обзор типов).

Что происходит при обработке

Для каждой строки прихода:

  1. Если у товара ещё нет карточки «цена этого товара у этого поставщика» —
    она создаётся.
  2. Создаётся новая партия на складе: склад, поставщик, количество, цена,
    дата поступления, срок годности, привязка к заказу (если есть). Именно
    партия дальше живёт своей жизнью — расход, уценка, производство
    ссылаются на неё, а не на строку документа-источника.
  3. Обновляется сводная карточка товара — накопленное количество и
    последняя цена прихода.
  4. Обновляется «последняя закупочная цена у поставщика» — но только если
    этот приход новее уже сохранённой цены. Старый, задним числом введённый
    приход не может переписать текущую действующую цену.

Приход не проверяет наличие «от обратного» — принять можно любое
количество, ограничений нет (в отличие от расхода, где нельзя списать
больше, чем есть).

Долг или оплата

Почему не наоборот (не списывать всегда в долг): потому что реальная
практика различается — иногда товар оплачивается сразу на месте, иногда
берётся с отсрочкой. Явное указание счёта в шапке — это и есть решение
пользователя, какой из двух сценариев произошёл.

Две цены: Cost и Price

У каждой строки прихода есть Cost (себестоимость, по которой товар
встаёт на склад) и Price (цена поставщика из накладной). Обычно они
совпадают, но расходятся, когда есть дополнительные расходы — доставка,
таможня, страховка, брокерские услуги.

Распределение расходов между строками — пропорционально стоимости каждой
позиции:

коэффициент = сумма_расходов / сумма_товаров
новая_цена  = исходная_цена + исходная_цена × коэффициент

Остаток от округления (копейки, которые не делятся ровно) уходит на самую
дорогую позицию документа — так сумма строк после пересчёта точно
совпадает с (товары + расходы), без «потерянных» копеек.

Пример. Товар A: 100 шт × $10 = $1000. Товар B: 50 шт × $20 = $1000.
Итого товаров — $2000, доставка — $200. Коэффициент 200/2000 = 0.1 → цена
A становится $11, цена B — $22: расходы разложились пропорционально доле
каждого товара в общей сумме.

Расходы можно добавить в обе цены сразу или только в Cost, оставив Price
как есть — второй вариант нужен, когда с поставщиком сверяются по
исходной цене из его накладной, а для склада важна полная себестоимость с
доставкой.

Повторный пересчёт (если расходы изменились после первого раза) всегда
идёт от исходной цены поставщика, а не от уже изменённой на предыдущем
шаге — так наценка не «задваивается» при повторном запуске.