Отменить списание, если склад-получатель не найден

Фактические данные получены через расширение interbase от отдельной локальной базы Firebird. Собственная учебная таблица удалена после наблюдений.

Наблюдаемый результат программы
НаблюдениеРезультат
Причина отказаСклад-получатель не найден.
Внутри операции после списания7
Откат подтверждёнда
Склад 1 после отката10
Склад 2 после отката2
Общий остаток12
Строки и дополнительные наблюдения
{
    "requested": {
        "from": 1,
        "to": 99,
        "amount": 3
    },
    "before": [
        10,
        2
    ],
    "pending_before_rollback": [
        {
            "warehouse_id": 1,
            "qty": 7
        },
        {
            "warehouse_id": 2,
            "qty": 2
        }
    ],
    "after_rollback": [
        {
            "warehouse_id": 1,
            "qty": 10
        },
        {
            "warehouse_id": 2,
            "qty": 2
        }
    ],
    "reason": "Склад-получатель не найден."
}

Самостоятельный запуск создаёт result.json с данными и metrics.json с проверками рядом с example.php.