Решение владельца 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>
6.6 KiB
6.6 KiB
Инвентаризация источника МойСклад (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 подтвердит.