Анкета участника: статус регистрации по справочнику участников M2M
Регистрация подтверждается двумя путями: ответным документом НРД (ловим в поллере) ИЛИ появлением организации в справочнике участников M2M боевого контура. На странице анкеты добавлен статус: ищем нашу организацию в справочнике по MC-коду, затем по ИНН (handbookByCode/handbookByINN); «есть» — регистрация подтверждена, «нет» — ждём приёма анкеты (справочник обновляется ~10 минут). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
@@ -20,8 +20,8 @@
|
||||
"version": "2026.10.21.6"
|
||||
},
|
||||
"bj-server": {
|
||||
"fingerprint": "f47475987712791a70a636cfa23a2a8d28f1e1ad898d3ff505c595f828d64a0b",
|
||||
"version": "2026.10.21.11"
|
||||
"fingerprint": "bbbd830ed300ae81eee05d87ad0fe59d0756a794f1d157c37bc36fe67c2e0f25",
|
||||
"version": "2026.10.21.12"
|
||||
},
|
||||
"crypto-service.jar": {
|
||||
"fingerprint": "2c4fd536bc9b1c20c69a70e8dcd374a61847b263aeb2e474c45debb01fbd8233",
|
||||
|
||||
@@ -359,11 +359,39 @@ func registerParticipantForm(mux *http.ServeMux, rc *RuntimeConfig, igwClient *i
|
||||
}
|
||||
|
||||
xmlPreview := participantFormXML(d)
|
||||
participantFormRender(w, d, errs, action, flash, flashKind, xmlPreview, igwClient != nil && igwChannel != "", isProdIGW(igwChannel))
|
||||
participantFormRender(w, d, errs, action, flash, flashKind, xmlPreview, participantRegStatus(rc), igwClient != nil && igwChannel != "", isProdIGW(igwChannel))
|
||||
})
|
||||
}
|
||||
|
||||
func participantFormRender(w http.ResponseWriter, d participantFormData, errs []string, action, flash, flashKind, xmlPreview string, igwConfigured, igwProd bool) {
|
||||
// participantRegStatus — подтверждение регистрации появлением в справочнике участников
|
||||
// M2M текущего контура: если наша организация (по MC-коду или ИНН) уже в справочнике —
|
||||
// анкета принята. Это второй сигнал, помимо ответного документа от НРД.
|
||||
func participantRegStatus(rc *RuntimeConfig) string {
|
||||
if rc == nil {
|
||||
return ""
|
||||
}
|
||||
s := rc.Snapshot()
|
||||
contour := map[string]string{"prod": "боевого", "guest": "гостевого", "test3": "тестового"}[contourOf(currentNSDProfile())]
|
||||
if contour == "" {
|
||||
contour = "текущего"
|
||||
}
|
||||
hb, ok := handbookByCode(orgCode(s))
|
||||
if !ok {
|
||||
if inn := orgINN(s); inn != "" {
|
||||
hb, ok = handbookByINN(inn)
|
||||
}
|
||||
}
|
||||
if ok {
|
||||
return `<div class="ok">В справочнике участников M2M ` + contour + ` контура: <b>есть</b> — ` +
|
||||
html.EscapeString(pickStr(hb.Name, hb.FullName)) + `, код ` + html.EscapeString(hb.Code) +
|
||||
`, ИНН ` + html.EscapeString(hb.INN) + `. Регистрация подтверждена.</div>`
|
||||
}
|
||||
return `<div class="note">В справочнике участников M2M ` + contour + ` контура нашей организации пока <b>нет</b>. ` +
|
||||
`После приёма анкеты НРД организация появится в справочнике (обновляется каждые ~10 минут) — тогда здесь будет «есть». ` +
|
||||
`Регистрацию подтверждает также ответный документ от НРД.</div>`
|
||||
}
|
||||
|
||||
func participantFormRender(w http.ResponseWriter, d participantFormData, errs []string, action, flash, flashKind, xmlPreview, regHTML string, igwConfigured, igwProd bool) {
|
||||
w.Header().Set("Content-Type", "text/html; charset=utf-8")
|
||||
inp := func(name, label, val, ph string) string {
|
||||
return `<label>` + label + `<input name="` + name + `" value="` + html.EscapeString(val) + `" placeholder="` + ph + `"></label>`
|
||||
@@ -409,7 +437,7 @@ pre{background:#f6f8fa;border:1px solid #ddd;border-radius:8px;padding:12px;over
|
||||
пакетом <code>#M2MPF</code> (businessLine=MOST, подпись боевым контейнером на стороне ИШ); письмо на
|
||||
<code>` + participantFormRecipient + `</code> оставлено запасным каналом. Поля предзаполнены из
|
||||
автоопределения DEPO — проверьте юридические реквизиты.</p>
|
||||
` + flashHTML + vErr + `
|
||||
` + regHTML + flashHTML + vErr + `
|
||||
<form method="post">
|
||||
<fieldset><legend>Организация</legend>
|
||||
` + inp("inn", "ИНН (10 цифр)", d.INN, "7700000000") + `
|
||||
|
||||
Reference in New Issue
Block a user