DEPO: полное наименование организации из OD_U_FACES, действующая версия лица
Автоопределение читало исходную запись лица (2016) и брало MNEM как краткое наименование. Теперь — действующая версия (SELF_ID/LAST_FLAG=1): краткое — OD_FACES.NAME, полное — OD_U_FACES.FULL_NAME, английские — ENG_FULL_NAME и ENG_NAME. Анкета участника заполняется из DEPO без справочника НРД; английские — только парой. Проверено на DEPO 28: полное есть у 141 из 145 участников, английские после замены кавычек совпали с ответом НРД. Если OD_U_FACES нет — прежний запрос и подсказка уточнить у НРД. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
@@ -53,12 +53,30 @@ type participantFormData struct {
|
||||
// participantFormPrefill — предзаполнение из автоопределения DEPO и настроек НРД.
|
||||
func participantFormPrefill(rc *RuntimeConfig) participantFormData {
|
||||
var d participantFormData
|
||||
if r := depoDetectResult(); r != nil {
|
||||
r := depoDetectResult()
|
||||
if r == nil && rc != nil && strings.TrimSpace(rc.Snapshot().Fancy.Server) != "" {
|
||||
// после перезапуска bj автоопределения в памяти нет — прочитать DEPO сейчас
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)
|
||||
if res, err := depoDetectRequisites(ctx, rc.Snapshot().Fancy); err == nil {
|
||||
lastDepoDetect.mu.Lock()
|
||||
lastDepoDetect.r = res
|
||||
lastDepoDetect.mu.Unlock()
|
||||
r = res
|
||||
}
|
||||
cancel()
|
||||
}
|
||||
if r != nil {
|
||||
// DEPO: полное — OD_U_FACES, краткое — OD_FACES.NAME, отображаемое = краткое (так советует НРД);
|
||||
// английские — только парой (полное + краткое), иначе их не указываем
|
||||
d.INN = strings.TrimSpace(r.OrgINN)
|
||||
d.FullName = strings.TrimSpace(r.OrgName)
|
||||
d.ShortName = strings.TrimSpace(r.OrgShort)
|
||||
d.DisplayName = strings.TrimSpace(r.OrgShort)
|
||||
d.EngFull = strings.TrimSpace(r.OrgEng)
|
||||
d.FullName = strings.TrimSpace(pick(r.OrgFull, r.OrgName))
|
||||
d.ShortName = strings.TrimSpace(r.OrgName)
|
||||
d.DisplayName = strings.TrimSpace(r.OrgName)
|
||||
if strings.TrimSpace(r.OrgEngFull) != "" {
|
||||
d.EngFull = strings.TrimSpace(r.OrgEngFull)
|
||||
d.EngShort = strings.TrimSpace(r.OrgEng)
|
||||
d.EngDisplay = d.EngShort
|
||||
}
|
||||
if d.DepoCode == "" {
|
||||
d.DepoCode = strings.TrimSpace(r.DeponentCode)
|
||||
}
|
||||
@@ -81,18 +99,13 @@ func participantFormPrefill(rc *RuntimeConfig) participantFormData {
|
||||
if ok {
|
||||
// НРД сверяет наименования анкеты со своей клиентской базой (M2M37) — карточка в справочнике
|
||||
// НРД главнее DEPO: в DEPO «наименование» бывает кратким (21.10.2026 краткое ушло в FullName).
|
||||
// Английские — только если их ввели: в справочнике есть лишь краткое, полного нет.
|
||||
// Английские — из DEPO: в справочнике НРД есть лишь краткое.
|
||||
if n := strings.TrimSpace(hb.FullName); n != "" {
|
||||
d.FullName = n
|
||||
}
|
||||
if n := strings.TrimSpace(hb.Name); n != "" && hb.FullName != "" {
|
||||
d.ShortName, d.DisplayName = n, n // отображаемое НРД советует как краткое
|
||||
}
|
||||
if strings.TrimSpace(hb.FullName) != "" {
|
||||
d.EngFull = ""
|
||||
} else if d.EngFull == "" {
|
||||
d.EngFull = strings.TrimSpace(hb.EngName)
|
||||
}
|
||||
if hb.Kind == "broker" && d.BrokerCode == "" {
|
||||
d.BrokerCode = strings.ToUpper(strings.TrimSpace(hb.Code))
|
||||
}
|
||||
@@ -172,8 +185,8 @@ func pfNameCheck(rc *RuntimeConfig, d participantFormData) []string {
|
||||
if x.FullName != d.FullName {
|
||||
w = append(w, "Полное наименование отличается от карточки нашей фирмы в справочнике НРД: «"+x.FullName+"». НРД сверяет с ней — без причины не меняйте.")
|
||||
}
|
||||
default:
|
||||
w = append(w, "Наименования взяты из DEPO, в справочнике НРД нашей карточки нет. НРД сверяет их со своей клиентской базой — уточните точные наименования у НРД и впишите как есть.")
|
||||
case strings.TrimSpace(d.FullName) == "":
|
||||
w = append(w, "Полного наименования нет ни в DEPO, ни в справочнике НРД — уточните его у НРД и впишите как есть.")
|
||||
}
|
||||
if pfAbbrRe.MatchString(d.FullName) || (d.FullName != "" && d.FullName == d.ShortName) {
|
||||
w = append(w, "Полное наименование похоже на сокращённое — нужно полное («Общество с ограниченной ответственностью …»), как в клиентской базе НРД.")
|
||||
@@ -539,7 +552,7 @@ pre{background:#f6f8fa;border:1px solid #ddd;border-radius:8px;padding:12px;over
|
||||
Без регистрации сервис отбивает запросы кодом <b>M2M14</b>. В боевом контуре анкета подаётся <b>через ИШ</b>
|
||||
пакетом <code>#M2MPF</code> (businessLine=MOST, подпись боевым контейнером на стороне ИШ); письмо на
|
||||
<code>` + participantFormRecipient + `</code> оставлено запасным каналом. Наименования должны точно совпадать с
|
||||
клиентской базой НРД (иначе <b>M2M37</b>): bj берёт их из карточки нашей фирмы в справочнике НРД, а если её нет — из DEPO.
|
||||
клиентской базой НРД (иначе <b>M2M37</b>): bj берёт их из карточки нашей фирмы в справочнике НРД и из DEPO (полное — карточка юрлица).
|
||||
Чего нет или в чём bj не уверен — уточните у НРД. Кавычки — прямые <code>"</code>.</p>
|
||||
` + regHTML + flashHTML + vErr + `
|
||||
<form method="post">
|
||||
|
||||
Reference in New Issue
Block a user