food-market/docs/migration-source-inventory.md
nns a2ee85bc12
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
docs(migration): инвентаризация источника МойСклад + дизайн мигратора (Part 1)
Решение владельца 09.10: полный перенос магазина из МойСклада в ALL MARKET с историей.
- scripts/migration/ms_inventory.py — read-only инвентаризация источника.
- docs/migration-source-inventory.md: орг «FOOD MARKET», ~31k товаров, 627 контрагентов,
  ~110k документов (97 707 чеков, 7 125 приёмок, 3 068 списаний…), 7 558 строк остатков,
  1 склад/точка/орг, касса наличных, 1 тип цены; gap-анализ модели + цели сверки.
- docs/migration-design.md: идемпотентность по msId, хронология документов, МСК→UTC,
  тиыны, резюмируемость, порядок этапов, сверка, дельта, runbook.
- docs/migration-progress.md: план Part 1–7.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 13:26:35 +05:00

6.6 KiB
Raw Blame History

Инвентаризация источника МойСклад (FOOD MARKET)

Сгенерировано 2026-10-09 13:21:46 (только чтение).

Сущности и документы

Сущность МойСклад entity Кол-во
Товары product 30991
Модификации variant 0
Услуги service 0
Комплекты bundle 0
Группы товаров productfolder 52
Единицы измерения uom 59
Валюты currency 1
Типы цен (в настройках) pricetype спец, ниже
Штрихкоды barcodes спец, ниже
Контрагенты counterparty 627
Юрлица (организации) organization 1
Склады store 1
Точки продаж retailstore 1
Сотрудники employee 3
Счета организации orgaccounts спец, ниже
Приёмки supply 7125
Возвраты поставщикам purchasereturn 550
Оприходования enter 72
Списания loss 3068
Инвентаризации inventory 70
Перемещения move 0
Розничные продажи (чеки) retaildemand 97707
Розничные возвраты retailsalesreturn 438
Смены retailshift 690
Внесения в кассу retaildrawercashin 18
Выплаты из кассы retaildrawercashout 623
Отгрузки demand 0
Возвраты покупателей salesreturn 2
Заказы покупателей customerorder 0
Заказы поставщикам purchaseorder 0
Счета-фактуры вх. invoicein 0
Счета покупателям invoiceout 0
Входящие платежи paymentin 0
Исходящие платежи paymentout 171
Приходные ордера cashin 595
Расходные ордера cashout 0
Корректировки взаиморасчётов counterpartyadjustment 0
Оприходование/списание денег none спец, ниже

Остатки, деньги, взаиморасчёты (цели сверки)

Показатель Значение
Типы цен 1 («Цена продажи»)
Счета организации (банк) 0 — магазин кассовый (наличные)
report/stock/all (строк товар×склад с остатком) 7558
Склад «Склад FOOD MARKET» (bb91971a-…)
Точка продаж «FOOD MARKET» (bbad71b4-…)
Юрлицо «FOOD MARKET» (bb8f74d4-…)

Деньги: банковских счетов нет → остаток кассы точки восстанавливается из чеков/внесений/ выплат/ордеров. report/money вернул пусто (уточнить формат при сверке Part 4).

Итоги по объёму (для планирования)

  • Справочники: ~31 000 товаров, 52 группы, 59 ед., 627 контрагентов, 3 сотрудника, 1 орг/склад/точка.
  • Документы (всего ~110 000): чеки 97 707, приёмки 7 125, списания 3 068, выплаты 623, приходные ордера 595, возвраты поставщикам 550, розн. возвраты 438, исх. платежи 171, инвентаризации 70, оприходования 72, внесения 18, возвраты покупателей 2.
  • Пусто (нет в этом магазине): модификации, услуги, комплекты, перемещения, отгрузки, заказы, счета-фактуры/счета, входящие платежи, расходные ордера, корректировки взаиморасчётов.

Соответствие модели ALL MARKET (gap-анализ)

МойСклад ALL MARKET Решение
product Product прямое; хранить msId (externalId)
productfolder ProductGroup (вложенность по pathName) прямое
uom UnitOfMeasure по коду/имени; маппинг на наши ОКЕИ
pricetype «Цена продажи» PriceType (системный) прямое
barcodes (ean13/code128/…) ProductBarcode прямое, первый — primary
counterparty Counterparty (поставщик/покупатель по флагам) прямое
organization Organization новая орг = имя «FOOD MARKET»
store Store прямое
retailstore RetailPoint (+ денежный счёт кассы) прямое; касса наличных
employee Employee/User 3 сотрудника; кассиры чеков → owner
supply Supply (приёмка) прямое; номер/дата(МСК→UTC)/поставщик/позиции/цены(тиыны)
purchasereturn SupplierReturn прямое
enter Enter (оприходование) прямое
loss Loss (списание) причина → наш enum (маппинг/дефолт)
inventory Inventory прямое; факт-кол-во
retaildemand RetailSale (чек) прямое; оплата нал/безнал из cashSum/noCashSum; owner=кассир
retailsalesreturn RetailSale(IsReturn) привязка к исходному чеку
retailshift CashShift (смена) открытие/закрытие, точка, деньги
retaildrawercashin/out MoneyTransaction (внесение/выплата) в кассу точки
cashin (приходный ордер) MoneyTransaction приход счёт кассы
paymentout (исх. платёж) MoneyTransaction расход счёт
Без прямого аналога
Атрибуты/доп.поля товара (attributes) — перенести в Description/заметку или пропустить (решит Mac-Claude)
Корзина МойСклада (удалённые) — не переносим
Проекты/договоры (если есть) — проверить; при наличии — в заметку

Решения по «без аналога» — см. migration-progress.md; Mac-Claude подтвердит.