food-market/docs/moysklad-logic-audit.html
nns e5bbd4a047
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
docs: аудит против МойСклада — проход 2 (факт-проверки, Казахстан)
Дополнен docs/moysklad-logic-audit.md (+ .html) разделом «Проход 2»:
- Все «проверить» закрыты фактом (код файл:строка и/или запрос на стенде):
  возврат→ReferenceSaleId; Z-отчёт без «по товарам»; долг поставщику считается
  (MoneyReportsController:120-183); обязательные поля товара Name+Unit+Group;
  приёмка с телефона/терминалы/фискализация — нет; отмена проведения ЕСТЬ у всех
  документов (исправление прохода 1); смена — только ручное открытие.
- Себестоимость: подтверждён FIFO у МойСклада; у нас средняя; реальный пример Демо
  (BIOBLAS, Product.Cost=548.6441 из 3 приёмок) — показано искажение прибыли.
- Казахстан (новое): фискализация ОФД РК (заглушка у нас; МойСклад — WebKassa/reKassa),
  НДС 16% с 2026 (дефолт KZ уже 16, SystemReferenceSeeder:38), маркировка ИС МПТ
  (только флаг IsMarked), СНТ/ЭСФ, акциз. Блок «Казахстан — обязательное по закону».
- Сводка обновлена: топ-15 скорректирован (фискализация/маркировка РК вместо неверных
  пунктов), добавлен KZ-блок. Касса МойСклад vs наша — по функциям кассира.

Только отчёт, без правок кода.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 19:21:57 +05:00

127 lines
12 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html><html lang="ru"><head><meta charset="utf-8">
<title>Сверка с МойСкладом — кратко</title>
<style>
body{font:16px/1.6 system-ui,Segoe UI,Roboto;margin:0;background:#f6f8f7;color:#15241c}
.wrap{max-width:900px;margin:0 auto;padding:24px 18px}
h1{font-size:26px;margin:0 0 4px} .sub{color:#5f6f68;margin-bottom:20px}
h2{font-size:20px;margin:28px 0 10px;border-bottom:2px solid #16A34A;padding-bottom:6px;color:#0f1f17}
.card{background:#fff;border:1px solid #e3e8e6;border-radius:12px;padding:16px 18px;margin:12px 0;box-shadow:0 1px 3px #0000000d}
.big{font-size:17px}
table{border-collapse:collapse;width:100%;margin:8px 0;font-size:14.5px}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid #eef2f1;vertical-align:top}
th{color:#5f6f68;font-weight:600}
.hi{color:#b4231f;font-weight:700} .mid{color:#b45309} .ok{color:#16A34A}
.pill{display:inline-block;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:700}
.pill.red{background:#fde8e8;color:#b4231f} .pill.amber{background:#fef3c7;color:#b45309}
.note{background:#E8F7EE;border:1px solid #bfe6cd;border-radius:10px;padding:12px 14px;color:#12551f}
ol li,ul li{margin:4px 0}
.muted{color:#5f6f68;font-size:14px}
</style></head><body><div class="wrap">
<h1>Сверка нашей системы с МойСкладом</h1>
<div class="sub">Коротко и без технических терминов. Полная версия — <code>docs/moysklad-logic-audit.md</code>. 08.10.2026</div>
<div class="note big">
<b>Главный вывод.</b> Большинство процессов у нас работает похоже на МойСклад. Но есть
несколько мест, где логика отличается и это влияет на <b>остатки, прибыль и понятность отчётов</b>.
Самое заметное — инвентаризация (вы это и заметили) и способ расчёта себестоимости.
</div>
<h2>3 вещи, которые стоит поправить в первую очередь</h2>
<div class="card">
<div class="big"><span class="pill red">важно</span> &nbsp;1. Инвентаризация</div>
<p><b>Сейчас:</b> инвентаризация сама меняет остатки и показывает «Проведено», но без документов
оприходования/списания — непонятно, откуда изменения.</p>
<p><b>Как в МойСкладе:</b> инвентаризация только считает (расчётное / фактическое / разница).
По её итогам нажимаете «Создать оприходование излишков» и «Создать списание недостачи» — вот
эти документы и меняют остатки, и они видны и связаны с инвентаризацией.</p>
<p class="muted">Переделка уже запланирована следующей задачей — план совпал с этой сверкой.</p>
</div>
<div class="card">
<div class="big"><span class="pill red">важно</span> &nbsp;2. Себестоимость и прибыль</div>
<p><b>Сейчас:</b> себестоимость — «скользящее среднее»: при новой закупке пересчитывается одно
общее значение, и прибыль за прошлые периоды может «плыть» задним числом.</p>
<p><b>Как в МойСкладе:</b> себестоимость по <b>FIFO</b> — «первым пришёл, первым продан»; прибыль
считается точно по партиям и не меняется задним числом.</p>
<p class="muted">Это самый крупный по объёму блок. Можно сделать компромисс: среднее
по умолчанию (проще для маленького магазина), FIFO — как опция. <b>Нужно ваше решение.</b></p>
</div>
<div class="card">
<div class="big"><span class="pill amber">средне</span> &nbsp;3. «Создать на основании» и связи документов</div>
<p><b>Сейчас:</b> документы слабо связаны между собой (не видно «на основании чего» создан документ).</p>
<p><b>Как в МойСкладе:</b> почти всё создаётся «на основании» (приёмка→возврат поставщику,
инвентаризация→оприходование/списание, продажа→возврат), и в каждом документе видно связи.</p>
</div>
<h2>Топ расхождений (влияют на остатки/деньги/отчёты)</h2>
<table>
<tr><th>Что</th><th>У нас</th><th>В МойСкладе</th><th></th></tr>
<tr><td>Себестоимость</td><td>скользящее среднее</td><td>FIFO по партиям</td><td><span class="hi">важно</span></td></tr>
<tr><td>Прибыль (себестоимость продажи)</td><td>приближённо, задним числом</td><td>точно, на момент продажи</td><td><span class="hi">важно</span></td></tr>
<tr><td>Инвентаризация</td><td>сама двигает остатки, «Проведено»</td><td>только считает → оприходование/списание</td><td><span class="hi">важно</span></td></tr>
<tr><td>Списание/перемещение: цена</td><td>переданная/средняя</td><td>по FIFO-партии</td><td><span class="hi">важно</span></td></tr>
<tr><td>Связи «на основании»</td><td>слабые</td><td>сквозные, видны</td><td><span class="mid">средне</span></td></tr>
<tr><td>Отмена проведения</td><td>неединообразно</td><td>штатная для всех документов</td><td><span class="mid">средне</span></td></tr>
<tr><td>Розничная смена</td><td>открытие вручную</td><td>автооткрытие первой продажей, ≤24ч</td><td><span class="mid">средне</span></td></tr>
<tr><td>Взаиморасчёты</td><td>долги считаются, но не единый реестр</td><td>единый реестр документ+оплата</td><td><span class="mid">средне</span></td></tr>
</table>
<h2>Где мы можем сделать ЛУЧШЕ, чем МойСклад (нужно ваше решение)</h2>
<ol>
<li><b>Инвентаризация в один клик</b> — «Применить результаты» сразу создаёт и проводит оба документа (у МойСклада — две отдельные кнопки).</li>
<li><b>Простой режим прячет лишнее</b> — оприходование/списание не отдельными пунктами, а только из инвентаризации/приёмки.</li>
<li><b>Себестоимость на выбор</b> — среднее (проще/быстрее) или FIFO (точнее).</li>
<li><b>Единый экран «Деньги»</b> вместо четырёх типов документов МойСклада (проще для маленькой розницы).</li>
<li><b>Возврат поставщику прямо из приёмки</b> с готовым списком товаров.</li>
<li><b>Касса не стопорит продажу</b> при нулевом остатке — мягкое предупреждение + быстрый приход.</li>
<li><b>Онбординг «первая приёмка за 2 минуты»</b> — у МойСклада старт тяжелее.</li>
<li><b>Весовые штрихкоды из коробки</b> с настройкой префиксов (у нас уже есть — довести).</li>
<li><b>Прибыль сразу на дашборде</b> простого режима — без захода в отчёты.</li>
<li><b>Понятные статусы по-русски</b> без слова «проведено» в спорных местах.</li>
</ol>
<h2>🇰🇿 Казахстан — обязательное по закону (проход 2)</h2>
<div class="card">
<p class="big">Это не «лучше/хуже», а <b>требования закона РК</b> — без них магазин не может легально работать.</p>
<table>
<tr><th>Требование</th><th>Что нужно магазину</th><th>У нас сейчас</th></tr>
<tr><td><b>Фискализация (онлайн-ККМ + ОФД)</b></td><td>каждый чек уходит в ОФД (новый протокол с 01.04.2026)</td><td class="hi">нет (заглушка)</td></tr>
<tr><td><b>НДС 16%</b> (с 2026, было 12%; 5% лекарства)</td><td>верная ставка в чеке и отчётах</td><td class="ok">дефолт KZ уже 16% ✓ (нет перехода 12→16 по дате)</td></tr>
<tr><td><b>Маркировка</b> (сигареты, обувь, лекарства)</td><td>сканировать и «вывести код из оборота»</td><td class="hi">только галочка, вывода нет</td></tr>
<tr><td><b>СНТ/ЭСФ</b> (накладные)</td><td>для розницы в основном автоматически; по подакцизным — подтверждать</td><td class="mid">нет интеграции</td></tr>
</table>
<p><b>Что нужно в первую очередь:</b> 1) фискализация ОФД (иначе нельзя пробивать чеки) →
2) маркировка, если продаёте сигареты → 3) НДС 16% в чеке. МойСклад в Казахстане это умеет
(интеграции WebKassa / reKassa).</p>
</div>
<h2>Что уточнили на проходе 2</h2>
<div class="card">
<ul>
<li><b>Себестоимость:</b> подтвердили — у МойСклада FIFO; у нас средняя. На реальном товаре Демо
(«BIOBLAS шампунь») себестоимость в отчёте считается текущей средней (548,64 ₸ из 3 закупок),
а не ценой на момент продажи → прибыль за прошлые периоды меняется при новых закупках.</li>
<li><b>Касса и кассир:</b> скидки, отложенные чеки, поиск, весы, печать, смешанная оплата — <b>есть</b>.
Нет: фискализации ОФД (важно), бонусов прямо в кассе, эквайринг-терминала, сканера камерой.</li>
<li><b>Поправки к проходу 1:</b> «отмена проведения» у нас <b>есть</b> у всех документов (ошибка прохода 1);
долги поставщикам <b>считаются</b> из приёмок/возвратов/оплат; «54-ФЗ» — это закон РФ, у нас РК.</li>
</ul>
</div>
<h2>Что с тестами</h2>
<p>Часть наших тестов закрепляла <b>текущее (неправильное) поведение</b> как эталон — их нужно
переписать под логику МойСклада. В первую очередь: шаг 10 full-chain (инвентаризация),
unit-тесты инвентаризации и себестоимости, прибыль, mobile post/unpost инвентаризации.</p>
<p class="muted">Правило на будущее: сначала сверка с МойСкладом → потом реализация → потом тесты
под сверенное поведение (а не тесты под уже написанный код).</p>
<div class="note" style="margin-top:24px">
Это <b>только отчёт</b>. Исправления — отдельными задачами после вашего решения. По умолчанию
делаем «как в МойСкладе»; предложения «как лучше» применяем только с вашего согласия.
</div>
</div></body></html>