Ручной ввод: без обязательных галок, удаление черновика, запрет количества больше остатка; отказ НРД по поручению — красным
- ручных отметок перед отправкой нет: автор виден по учётной записи, клиент/счёт/остаток/
бумага проверены сверкой с 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:
@@ -165,20 +165,21 @@ func registerIncoming(mux *http.ServeMux, a *admin, deps incomingDeps) {
|
||||
return
|
||||
}
|
||||
var orderResps []orderResponse
|
||||
var orderDone bool
|
||||
var orderDone, orderRejected bool
|
||||
var orderDoneAt string
|
||||
if it.OrderSubmitted {
|
||||
orderResps = findOrderResponses(it.OrderContrDID)
|
||||
for _, rp := range orderResps {
|
||||
if rp.Done { // отчёт MS010 — операция проведена
|
||||
if rp.Done { // отчёт MS010 — операция проведена или завершена отказом
|
||||
orderDone = true
|
||||
orderDoneAt = rp.Time
|
||||
orderRejected = orderRejected || rp.Rejected
|
||||
}
|
||||
}
|
||||
}
|
||||
rejected, codes := incomingRejectedAll(it)
|
||||
data := incomingDetailData{page: nowPage("Входящий перевод", "incoming"), It: it, Flash: r.URL.Query().Get("flash"),
|
||||
OrderResponses: orderResps, OrderDone: orderDone, OrderDoneAt: orderDoneAt, DraftReceived: draftReceivedTime(it.GUID),
|
||||
OrderResponses: orderResps, OrderDone: orderDone, OrderRejected: orderRejected, OrderDoneAt: orderDoneAt, DraftReceived: draftReceivedTime(it.GUID),
|
||||
Quik: globalQuikLinks.ForGUID(it.GUID), QuikOn: quikActive(deps.rc.Snapshot().Quik), Watch: globalOrderWatch.Get(it.GUID), DepoL: globalDepoLinks.Get(it.GUID),
|
||||
Rejected: rejected, RejectCodes: codes, AutoMode: deps.rc.Snapshot().M2MAuto.Enabled}
|
||||
// Сверка выполняется при открытии карточки; итог сохраняем для бейджа в списке.
|
||||
@@ -236,6 +237,7 @@ type incomingDetailData struct {
|
||||
Flash string
|
||||
OrderResponses []orderResponse
|
||||
OrderDone bool
|
||||
OrderRejected bool // MS010 с отказом
|
||||
OrderDoneAt string
|
||||
DraftReceived string
|
||||
Depo depoResult // сверка с DEPO — рекомендация по ответу, ничего не отправляется
|
||||
|
||||
Reference in New Issue
Block a user