Событийный отчет · P44-C04

Доставка обедов: одна выполненная продажа на заказ

Повторы оплаты и выполнения не увеличивают продажу; отмена до выполнения остается финансовым вопросом.

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

Три заказа проходят разные пути: O18 выполнен, O19 оплачен и отменен, O20 выполнен и частично возвращен. Дубли событий добавлены отдельно, чтобы проверить устойчивость отчета.

Я храню состояние заказа и ID каждого события. Выручка примера появляется при первом выполнении; оплата отражается только в денежном потоке. Возврат после выполнения уменьшает обе величины, а возврат отмененного — только деньги.

Для этого отчета продажа определяется выполнением заказа. Правило не переносится автоматически на другую модель учета.

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

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

1800Деньги, ₽
1800Выполненные продажи, ₽
2Повторов исключено
2Выполнено заказов
СобытиеЗаказТипДеньги, ₽Продажа, ₽Статус
E1O18оплата9000Учтено
E2O18выполнен0900Учтено
E2O18выполнен00Повтор события
E3O19оплата6000Учтено
E4O19отменен00Учтено
E5O19возврат-6000Учтено
E6O20оплата12000Учтено
E7O20выполнен01200Учтено
E8O20возврат-300-300Учтено
E1O18оплата00Повтор события

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

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

Изменить входные строки
Посмотреть исходные строки
СобытиеЗаказТипСумма
E1O18оплата900
E2O18выполнен900
E2O18выполнен900
E3O19оплата600
E4O19отменен0
E5O19возврат600
E6O20оплата1200
E7O20выполнен1200
E8O20возврат300
E1O18оплата900

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

Два выполненных заказа дали 2100 ₽ до возврата и 1800 ₽ после него. Отмененный O19 не создал продажу, его 600 ₽ вернулись отдельным событием. Повторы E1/E2 и новое выполнение O18 не увеличили итог.

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

ПроверкаРезультат
Два выполненных заказа дают 1800 после частичного возвратаПройдена
Два повторных события исключеныПройдена
Новое событие выполнения того же заказа не создает вторую продажуПройдена
Отрицательная сумма не становится учтенным движениемПройдена
Нечисловая сумма останавливает расчетПройдена
Возврат сверх учтенного остатка не делает продажу отрицательнойПройдена

Не моделируются платежный провайдер, частичное выполнение и спорный возврат. Источник событий здесь авторский.

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

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

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