Ручной ввод: без обязательных галок, удаление черновика, запрет количества больше остатка; отказ НРД по поручению — красным
- ручных отметок перед отправкой нет: автор виден по учётной записи, клиент/счёт/остаток/
бумага проверены сверкой с DEPO при сохранении; блокировка в QUIK — необязательно,
по умолчанию не требуется (модуль неторговых поручений сейчас не используется)
- «Удалить черновик» в карточке (POST /admin/manual/{id}/delete), только для черновиков
- количество не больше остатка на торговом разделе: проверка в форме (по выбранной бумаге)
и на сервере при сохранении (по счёту DEPO) — поручение с превышением не сохраняется
- отчёт MS010 с отказом: orderResponse.Rejected, OutgoingDeal.Rejected; шаг «Операция
завершена отказом» и бейдж — красные в карточках исходящего и входящего; онлайн-статус
«поручение 16 завершено отказом НРД»
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q4YVo4UMopqT5DzicqpPjL
This commit is contained in:
@@ -198,7 +198,9 @@ type orderResponse struct {
|
||||
Kind string // человекочитаемый тип (квитанция / принятие / отчёт MS010)
|
||||
Time string
|
||||
Text string // краткое содержимое
|
||||
Done bool // true — это отчёт MS010 (операция проведена)
|
||||
Done bool // true — это отчёт MS010 (операция проведена или завершена отказом)
|
||||
// Rejected — MS010 с отказом: операция завершилась, но не исполнена. Показывается красным.
|
||||
Rejected bool
|
||||
}
|
||||
|
||||
// findOrderResponses ищет в INBOX ИШ ответы НРД по нашему поручению (по contr_d_id).
|
||||
@@ -222,7 +224,7 @@ func findOrderResponses(contrDID string) []orderResponse {
|
||||
}
|
||||
kind, done := orderRespKind(dir, body)
|
||||
tmp = append(tmp, rr{orderResponse{
|
||||
Pkg: dir, Kind: kind, Done: done,
|
||||
Pkg: dir, Kind: kind, Done: done, Rejected: done && respTextRejected(body),
|
||||
Time: mt.In(time.FixedZone("МСК", 3*3600)).Format("02.01.2006 15:04:05"),
|
||||
Text: orderRespSummary(body),
|
||||
}, mt})
|
||||
@@ -453,3 +455,9 @@ func orderRespSummary(body string) string {
|
||||
}
|
||||
return txt
|
||||
}
|
||||
|
||||
// respTextRejected — в отчёте НРД сказано об отказе, а не об исполнении.
|
||||
func respTextRejected(body string) bool {
|
||||
low := strings.ToLower(body)
|
||||
return strings.Contains(low, "отказ") || strings.Contains(low, "reject") || strings.Contains(low, "не исполнен")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user