M>В реальности проверок is_forbidden еще около десятка.
Условия на запрет изменения
если заказ помечен как кредит
если заказ помечен как удаленный
если заказ помечен как пассивный
если заказ помечен как замороженный
если заказ помечен как предоплата
если заказ помечен как оплаченный по предоплате
если в заказе нет товаров, которые можно вернуть
если это аггрегированный заказ с прошедшим сроком оплаты
если это архивный заказ при условии, что он оплачивается через account
если сумма увеличивается, а это запрещено настройками заказа
если сумма увеличивается, а мы уже отослали запрос на оплату в банк клиента
если сумма увеличивается на сумму большую, чем указано в настройках (относительно оригинальной суммы заказа)
если сумма увеличивается, а заказ проведен через новую систему
если мы возвращаем деньги клиенту, заказ находится в одном из трех статусов, не является кредитом, и возвращаемая сумма меньше, чем максимальная разрешенная к возврату сумма
только после этого будет предпринята попытка изменить сумму заказа. Причем само изменение суммы — это тоже не шубу в трусы заправлять. Это надо сделать запись в бухгалтерию, передвинуть заказ по dunning chain, если надо, сделать нужные записи в кредитной истории, устроить risk check'и, и прочая и прочая.