6fc0ff5d3d
Квитанции ЭДО НРД (пакеты C, «Уведомление о получении Пакетов…») разбираются: для нашей анкеты (#M2MPF…) — отметка «доставлена в НРД» с временем, ошибка первичной обработки — отказ с текстом квитанции. Ответ сервиса: INFO — «принята в обработку», OK — принята, ERROR — отказ с кодом; документ-ответ M2MTransferParticipantForm — регистрация подтверждена. Всё видно в строке «Исходящих», на странице анкеты и в плашке раздела НРД. После запуска bj перечитывает квитанции за день отправки, если отметки ещё нет (22.10 на 9 квитанция пришла раньше). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
24 lines
2.1 KiB
Go
24 lines
2.1 KiB
Go
package lkgateway
|
|
|
|
import "testing"
|
|
|
|
// Квитанция НРД о получении анкеты (пакет C, 22.10.2026, сервер 9) — текст после снятия тегов.
|
|
func TestParseNSDReceipt(t *testing.T) {
|
|
ok := `<html><body><h1>Уведомление о получении Пакетов электронных документов</h1><p>Отправитель</p><p>MC0413600000 ООО "ИК "Фонтвьель"</p>
|
|
<p>Тема сообщения</p><p>Тема входящего сообщения не указана</p><p>Дата и время получения</p><p>22.10.2026 11:07:31</p>
|
|
<p>Результаты первичной обработки Пакетов электронных документов:</p><p>Наименование Пакета электронных документов:</p><p>#M2MPF2210260000000000071.ZIP</p>
|
|
<table><tr><td>Проверка типа документа</td><td>Успешно</td></tr><tr><td>Расшифровка</td><td>Успешно</td></tr><tr><td>Распаковка</td><td>Успешно</td></tr></table>
|
|
<p>Перечень успешно обработанных вложенных файлов</p><p>#M2MPF2210260000000000071.XML</p><p>Составлено:</p><p>22.10.2026</p></body></html>`
|
|
r, found := parseNSDReceiptText(ok)
|
|
if !found || !r.OK || r.Package != "#M2MPF2210260000000000071.ZIP" || r.ReceivedAt.Format("02.01.2006 15:04:05") != "22.10.2026 11:07:31" {
|
|
t.Fatalf("%+v", r)
|
|
}
|
|
bad := `<p>Уведомление о получении Пакетов электронных документов</p><p>Дата и время получения</p><p>22.10.2026 11:07:31</p><p>Результаты первичной обработки</p><p>#M2MPF1.ZIP</p><td>Расшифровка</td><td>Ошибка расшифровки</td><p>Составлено</p>`
|
|
if r, _ := parseNSDReceiptText(bad); r.OK || r.Text == "" {
|
|
t.Fatalf("ошибка не распознана: %+v", r)
|
|
}
|
|
if _, found := parseNSDReceiptText("<p>Справочник</p>"); found {
|
|
t.Fatal("не квитанция")
|
|
}
|
|
}
|