Документы НРД по поручению: папки с понятными названиями, опись и PDF

Пакеты НРД из INBOX ИШ (K…, 508…) распознаются по содержимому: квитанция о регистрации (или отказ),
уведомление GS036, отчёт о статусе GS116 (сквитовано / не сквитовано), отчёт об исполнении MS010,
ошибка. В ZIP ответа НРД и выгрузках для регулятора (16 и 16/1) — папки «01 Квитанция о регистрации
поручения — K1699092» и т. д., «Опись.txt» с назначением и реквизитами каждого документа и
«Документы НРД.pdf» (читаемое представление, печать через Chromium; без него — HTML). В карточке
перевода ответы НРД подписаны так же.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
zuevav
2026-09-16 16:26:25 +03:00
parent 6a2e9b7122
commit 28c0ed7349
8 changed files with 451 additions and 28 deletions
+3 -7
View File
@@ -341,19 +341,15 @@ func registerOutgoing(mux *http.ServeMux, a *admin, deps outgoingDeps) {
http.Error(w, "исходящее поручение не найдено", http.StatusNotFound)
return
}
files := collectOutgoingResponseRaw(sub.ContrDIDs)
if len(files) == 0 {
docs := nsdOrderDocs(sub.ContrDIDs...)
if len(docs) == 0 {
http.Error(w, "ответ НРД (MS010) по этому поручению в INBOX ИШ ещё не найден", http.StatusNotFound)
return
}
w.Header().Set("Content-Type", "application/zip")
w.Header().Set("Content-Disposition", `attachment; filename="otvet-nrd-ms010-`+shortID(guid)+`.zip"`)
zw := zip.NewWriter(w)
for _, f := range files {
if wf, e := zw.Create(f.Name); e == nil {
_, _ = wf.Write(f.Data)
}
}
writeNSDDocsZip(zw, "", "Документы НРД по поручению 16 (списание) № "+strings.Join(sub.ContrDIDs, ", "), docs, true)
zw.Close()
case strings.HasSuffix(p, "/export.zip"):
exportOutgoing(w, r, deps, strings.TrimSuffix(p, "/export.zip"))