M2M ИИС: приём «всё или ничего» (настройка AcceptIIS, по умолчанию выкл)
Правильная обработка входящих переводов на ИИС вместо прежнего сплошного отказа.
Настройка AcceptIIS (карточка «Кто отвечает на переводы M2M»):
- выкл (по умолчанию) — поведение не меняется: перевод на ИИС отклоняется целиком (M2M06);
- вкл — ИИС принимается ТОЛЬКО целиком: все бумаги зачисляются на ИИС-счёт клиента;
если хоть одной бумаги нет в учёте / не проходит сверку — отказ по ВСЕМУ переводу.
Изменения:
- iisDecisions: «всё или ничего» (при выкл — отказ всем; при вкл — либо все принять,
либо все отклонить, сохраняя реальные коды отказа по проблемным бумагам);
- depo_check: при вкл приёме ИИС убран искусственный отказ «Перевод не на ИИС»,
добавлена проверка «Счёт зачисления — ИИС» (partyChecks получил флаг wantIIS);
- настройка AcceptIIS в Settings + геттер/сеттер + обработчик /admin/setup/accept-iis
+ тумблер в part_nsd.html; тесты обновлены.
Жёсткий запрет частичного ИИС в answerIncoming (коммит dc8b785) остаётся как страховка.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -289,6 +289,47 @@ func m2mAutoForm16(ctx context.Context, rc *RuntimeConfig, d outgoingDeps, od *O
|
||||
}
|
||||
|
||||
// saveM2MAuto — POST /admin/setup/m2m-auto.
|
||||
// saveAcceptIIS — POST /admin/setup/accept-iis: приём входящих переводов на ИИС (всё-или-ничего).
|
||||
func (h *setupHandlers) saveAcceptIIS(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Method != http.MethodPost {
|
||||
http.Error(w, "method", http.StatusMethodNotAllowed)
|
||||
return
|
||||
}
|
||||
cur := h.rc.AcceptIIS()
|
||||
on := r.FormValue("enabled") != ""
|
||||
if m := r.FormValue("mode"); m != "" {
|
||||
on = m == "on"
|
||||
}
|
||||
ajax := r.Header.Get("X-BJ-Ajax") != ""
|
||||
reply := func(msg string) {
|
||||
if ajax {
|
||||
w.Header().Set("Content-Type", "text/plain; charset=utf-8")
|
||||
_, _ = w.Write([]byte(msg))
|
||||
return
|
||||
}
|
||||
setupFlash(w, r, "Приём ИИС: "+msg)
|
||||
}
|
||||
if on == cur {
|
||||
reply("без изменений")
|
||||
return
|
||||
}
|
||||
if err := h.rc.UpdateAcceptIIS(on); err != nil {
|
||||
reply("ошибка сохранения: " + err.Error())
|
||||
return
|
||||
}
|
||||
who := ""
|
||||
if u := currentUser(w); u != nil {
|
||||
who = u.Login
|
||||
}
|
||||
if on {
|
||||
log.Printf("accept-iis: приём входящих переводов на ИИС ВКЛЮЧЁН (%s)", who)
|
||||
reply("включён — ИИС принимается только ЦЕЛИКОМ: все бумаги на ИИС-счёт клиента, иначе отказ по всему переводу")
|
||||
return
|
||||
}
|
||||
log.Printf("accept-iis: приём входящих переводов на ИИС выключен (%s)", who)
|
||||
reply("выключен — входящие переводы на ИИС отклоняются целиком (M2M06)")
|
||||
}
|
||||
|
||||
func (h *setupHandlers) saveM2MAuto(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Method != http.MethodPost {
|
||||
http.Error(w, "method", http.StatusMethodNotAllowed)
|
||||
|
||||
Reference in New Issue
Block a user