Граница периода · P44-C02

Возврат в другом месяце: отчет периода и итог заказа

Ноябрьский возврат уменьшает поток ноября, но остается связан с октябрьским заказом.

Задача и принятое решение

SALE-01 на 10000 ₽ проведен в октябре, возврат 2000 ₽ пришел в ноябре. Журнал также содержит ноябрьскую продажу и возврат без найденного заказа.

Я показываю одновременно два среза: движения выбранного месяца и накопленный результат каждого заказа. Связь возврата с продажей проверяется до расчета. Повтор события и неизвестный заказ не попадают в итог.

Правило периода явно задано: событие входит по своей дате; накопленный итог заказа показывается отдельно.

Проверить решение

Измените исходные строки или параметры и пересчитайте результат. Данные остаются в этой странице.

4000Движение месяца, ₽
8000Итог O1, ₽
1На сверку
СобытиеЗаказДатаДвижение, ₽В выбранном месяцеСтатус
SALE-01O12026-10-2810000НетУчтено
SALE-02O22026-10-295000НетУчтено
RETURN-01O12026-11-02-2000ДаУчтено
RETURN-01O12026-11-020ДаПовтор
SALE-03O32026-11-047000ДаУчтено
RETURN-02O32026-11-06-1000ДаУчтено
RETURN-XOX2026-11-070ДаНет исходной продажи

O1: накопленный результат 8000 ₽

O2: накопленный результат 5000 ₽

O3: накопленный результат 6000 ₽

Исходный набор

Авторский контрольный набор; не клиентские документы и не результаты внешней модели.

Изменить входные строки
Посмотреть исходные строки
СобытиеДатаЗаказТипСумма
SALE-012026-10-28O1продажа10000
SALE-022026-10-29O2продажа5000
RETURN-012026-11-02O1возврат2000
RETURN-012026-11-02O1возврат2000
SALE-032026-11-04O3продажа7000
RETURN-022026-11-06O3возврат1000
RETURN-X2026-11-07OXвозврат600

Что получилось

В ноябре учтено 4000 ₽: продажа 7000 минус возвраты 2000 и 1000. Накопленный итог октябрьского O1 равен 8000 ₽. Возврат OX на 600 ₽ оставлен на сверке, повтор RETURN-01 снят.

Выполненная проверка

ПроверкаРезультат
Ноябрь 4000, накопленный O1 — 8000Пройдена
Октябрь сохраняет свои 15000 без переноса ноябрьского возвратаПройдена
Повтор возврата исключен по ID событияПройдена
Отрицательная сумма не становится учтенным движениемПройдена
Нечисловая сумма останавливает расчетПройдена
Возврат сверх учтенного остатка не делает продажу отрицательнойПройдена

Возврат без продажи не считается нулевым навсегда: он ожидает установления связи. Налоговый учет не моделируется.

Скачать материалы и повторить проверку

source.json · source.csv · result.json · result.csv · engine.js · verify.cjs · checks.json · style.css

Локальная проверка: node verify.cjs. Нужен Node.js; сетевые обращения не выполняются.