diff --git a/internal/lkgateway/depoevents.go b/internal/lkgateway/depoevents.go
index d53b15e..c758437 100644
--- a/internal/lkgateway/depoevents.go
+++ b/internal/lkgateway/depoevents.go
@@ -44,8 +44,12 @@ type DepoLink struct {
DocState string `json:"doc_state,omitempty"` // состояние документа в DEPO (OD_DOCS.STATE → название)
DocStateAt time.Time `json:"doc_state_at,omitempty"`
Errors []string `json:"errors,omitempty"` // DEPO_ERROR
- LastEvent string `json:"last_event,omitempty"`
- UpdatedAt time.Time `json:"updated_at"`
+ // FixedErr/FixedAt — последняя ошибка, после которой запись прошла (вернули в очередь): в карточке —
+ // серой строкой вместо красной плашки.
+ FixedErr string `json:"fixed_err,omitempty"`
+ FixedAt time.Time `json:"fixed_at,omitempty"`
+ LastEvent string `json:"last_event,omitempty"`
+ UpdatedAt time.Time `json:"updated_at"`
}
type depoLinkStore struct {
@@ -540,6 +544,13 @@ func depoPollOrders(ctx context.Context, db *sql.DB, rc *RuntimeConfig) {
globalDepoLinks.update(guid, func(x *DepoLink) { x.DocNo, x.DocAt, x.LastEvent = doc, time.Now(), "FTV_M2M.DOC" })
log.Printf("depo-events: DEPO создала поручение по %s: %s", shortGUID(guid), doc)
}
+ // запись прошла после ошибки (депозитарий вернул её в очередь) — ошибка устранена
+ if state == "SUCCESS" && lineErr == "" && l != nil && len(l.Errors) > 0 {
+ globalDepoLinks.update(guid, func(x *DepoLink) {
+ x.FixedErr, x.FixedAt, x.Errors = x.Errors[len(x.Errors)-1], time.Now(), nil
+ })
+ log.Printf("depo-events: перевод %s обработан в DEPO после ошибки — ошибка снята", shortGUID(guid))
+ }
if state == "ERROR" || lineErr != "" {
msg := strings.TrimSpace(comment + " " + lineErr)
if l == nil || len(l.Errors) == 0 || !strings.HasSuffix(l.Errors[len(l.Errors)-1], msg) {
diff --git a/internal/lkgateway/web/templates/admin_claim.html b/internal/lkgateway/web/templates/admin_claim.html
index a478432..1b160d6 100644
--- a/internal/lkgateway/web/templates/admin_claim.html
+++ b/internal/lkgateway/web/templates/admin_claim.html
@@ -142,7 +142,7 @@
Поэтому в НРД по заявке ничего не отправлялось: регистрация и блокировка в QUIK МНП идут до отправки пакета в НРД.
Ответ модуля QUIK: {{.QuikFailReply}}
{{end}}
-{{if .DepoL}}
При отправке в НРД bj регистрирует в Модуле неторговых поручений «Вывод ЦБ (M2M)» — QUIK блокирует бумаги на позиции клиента. Отказ контрагента или НРД → поручение снимается с причиной (клиент видит её в терминале). Приём НРД нашего поручения 16 → подпись депозитария, бумаги списываются.
{{if not .Quik}}Поручений МНП по этой заявке нет{{if .Claim.M2MGUID}} — можно зарегистрировать вручную: diff --git a/internal/lkgateway/web/templates/admin_incoming_detail.html b/internal/lkgateway/web/templates/admin_incoming_detail.html index 2b1b513..0f611f1 100644 --- a/internal/lkgateway/web/templates/admin_incoming_detail.html +++ b/internal/lkgateway/web/templates/admin_incoming_detail.html @@ -381,7 +381,7 @@
Зачисление в QUIK не требуется — перевод отклонён ({{.RejectCodes}}), бумаги клиенту не поступают.
{{else}}