diff --git a/internal/lkgateway/incoming_answer.go b/internal/lkgateway/incoming_answer.go index 46368b4..3137211 100644 --- a/internal/lkgateway/incoming_answer.go +++ b/internal/lkgateway/incoming_answer.go @@ -105,6 +105,14 @@ func answerIncoming(ctx context.Context, deps incomingDeps, id string, decisions markMap[sec.ReferenceID] = mark } + // Защита ИИС: перевод по договору ИИС принимается только ЦЕЛИКОМ — все бумаги + // или ни одной. Частичное решение (часть принять, часть отклонить) дало бы + // неполный перевод ИИС и два ИИС у клиента с потерей льгот. Этот запрет не + // обойти ни ручным решением оператора, ни будущим смягчением политики приёма. + if incomingIsIIS(it) && confirmed > 0 && rejected > 0 { + return fmt.Errorf("перевод на ИИС принимается только целиком: нельзя принять часть бумаг (%d) и отклонить часть (%d) — примите все бумаги или отклоните весь перевод", confirmed, rejected) + } + dec := &m2m.M2MTransferDecision{ Header: m2m.DecisionHeader{ GUID: m2m.UUID(it.GUID), // GUID из запроса робота!