food-market/docs/moysklad-logic-audit.html
nns 338965a76c
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
docs: аудит логики процессов против МойСклада (только отчёт)
Сверка всех процессов простого режима + справочников/кассы/мобильного/отчётов с
МойСкладом (API dev.moysklad.ru + support.moysklad.ru + школа торговли). Для каждого:
как в МойСкладе (ссылки) | как у нас (файл:строка) | расхождение | серьёзность |
слабые места МойСклада | предложение «как лучше» [НА РЕШЕНИЕ ВЛАДЕЛЬЦА].

Главные находки (🔴): себестоимость у нас скользящее среднее vs FIFO у МойСклада;
прибыль берёт COGS приближённо (Product.Cost), а не на момент продажи; инвентаризация
сама двигает остатки и статус «Проведено» без оприходования/списания. Также — какие
наши тесты закрепляют неправильное поведение и должны быть переписаны.

docs/moysklad-logic-audit.md — полный отчёт; .html — краткая версия для владельца.
Только отчёт, без правок кода.

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

99 lines
9.5 KiB
HTML
Raw 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>Что с тестами</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>