Заказная мебель: аванс не закрывает остаток отгрузки
Платежи и отгруженные единицы проходят двумя независимыми потоками.
Задача и принятое решение
В заказе три изделия по 20000 ₽. Получен аванс 30000 ₽, отгружены два изделия, затем поступила окончательная оплата. Полная оплата сама по себе не делает третье изделие отгруженным.
Я считаю денежные поступления отдельно от количества исполнения. Стоимость отгруженного определяется количеством и ценой заказа; контроль не позволяет отгрузить больше заказанного. Отмена сохраняет историю платежей.
Стоимость исполнения — управленческое правило примера, не признание бухгалтерской выручки.
Проверить решение
Измените исходные строки или параметры и пересчитайте результат. Данные остаются в этой странице.
| Событие | Тип | Деньги накопленно | Отгружено накопленно | Статус |
|---|---|---|---|---|
| P1 | платеж | 30000 | 0 | Учтено |
| S1 | отгрузка | 30000 | 2 | Учтено |
| P2 | платеж | 60000 | 2 | Учтено |
| W1 | в работе | 60000 | 2 | Учтено |
| P2 | платеж | 60000 | 2 | Повтор |
Исходный набор
Авторский контрольный набор; не клиентские документы и не результаты внешней модели.
Изменить входные строки
Посмотреть исходные строки
| Событие | Дата | Тип | Сумма | Количество |
|---|---|---|---|---|
| P1 | 2026-10-01 | платеж | 30000 | 0 |
| S1 | 2026-10-12 | отгрузка | 0 | 2 |
| P2 | 2026-10-14 | платеж | 30000 | 0 |
| W1 | 2026-10-15 | в работе | 0 | 0 |
| P2 | 2026-10-14 | платеж | 30000 | 0 |
Что получилось
Заказ оплачен на 60000 ₽, но исполнен на 40000 ₽: отгружены два изделия из трех. Окончательный платеж и его повтор не закрыли остаток. Отмена добавляет статус для сверки, сохраняя денежную историю.
Выполненная проверка
| Проверка | Результат |
|---|---|
| Оплачено 60000, исполнено 40000, осталось одно изделие | Пройдена |
| Лишняя отгрузка заблокирована | Пройдена |
| Отмена сохраняет деньги в истории | Пройдена |
| Отрицательная сумма не становится учтенным движением | Пройдена |
| Нечисловая сумма останавливает расчет | Пройдена |
| Отрицательная отгрузка не уменьшает количество | Пройдена |
| Дробная отгрузка не проходит молча | Пройдена |
Возврат денежных средств должен быть отдельным событием. Статус отмены сам по себе не означает выполненного возврата.
Скачать материалы и повторить проверку
source.json · source.csv · result.json · result.csv · engine.js · verify.cjs · checks.json · style.css
Локальная проверка: node verify.cjs. Нужен Node.js; сетевые обращения не выполняются.