Карточка входящего: отклонённый перевод — 16/1 не требуется, операция завершена; черновик отмечается только если реально получен
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -176,20 +176,11 @@ func registerIncoming(mux *http.ServeMux, a *admin, deps incomingDeps) {
|
||||
}
|
||||
}
|
||||
}
|
||||
data := struct {
|
||||
page
|
||||
It *IncomingTransfer
|
||||
Flash string
|
||||
OrderResponses []orderResponse
|
||||
OrderDone bool
|
||||
OrderDoneAt string
|
||||
DraftReceived string
|
||||
Depo depoResult // сверка с DEPO — эмуляция ответа, ничего не отправляется
|
||||
Quik []*QuikLink
|
||||
QuikOn bool
|
||||
Watch *OrderWatch
|
||||
DepoL *DepoLink
|
||||
}{nowPage("Входящий перевод", "incoming"), it, r.URL.Query().Get("flash"), orderResps, orderDone, orderDoneAt, draftReceivedTime(it.GUID), depoResult{}, globalQuikLinks.ForGUID(it.GUID), deps.rc.Snapshot().Quik.WritesEnabled, globalOrderWatch.Get(it.GUID), globalDepoLinks.Get(it.GUID)}
|
||||
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),
|
||||
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}
|
||||
// Сверка выполняется при открытии карточки; итог сохраняем для бейджа в списке.
|
||||
data.Depo = runDepoCheck(it)
|
||||
if data.Depo.Ran {
|
||||
@@ -234,3 +225,38 @@ func handleIncomingAnswer(w http.ResponseWriter, r *http.Request, deps incomingD
|
||||
}
|
||||
http.Redirect(w, r, "/admin/incoming/"+id+"?flash="+url.QueryEscape(msg), http.StatusSeeOther)
|
||||
}
|
||||
|
||||
// incomingDetailData — карточка входящего перевода.
|
||||
type incomingDetailData struct {
|
||||
page
|
||||
It *IncomingTransfer
|
||||
Flash string
|
||||
OrderResponses []orderResponse
|
||||
OrderDone bool
|
||||
OrderDoneAt string
|
||||
DraftReceived string
|
||||
Depo depoResult // сверка с DEPO — эмуляция ответа, ничего не отправляется
|
||||
Quik []*QuikLink
|
||||
QuikOn bool
|
||||
Watch *OrderWatch
|
||||
DepoL *DepoLink
|
||||
Rejected bool // решение отправлено и ни одна бумага не принята — перевод завершён отказом
|
||||
RejectCodes string // коды отказа через запятую
|
||||
AutoMode bool // автоматический режим M2M (поручение 16/1 подаст bj)
|
||||
}
|
||||
|
||||
// incomingRejectedAll — перевод отвечен и ни одна бумага не принята (поручение 16/1 не нужно).
|
||||
func incomingRejectedAll(it *IncomingTransfer) (bool, string) {
|
||||
if it.Status != "answered" || incomingHasConfirmed(it) {
|
||||
return false, ""
|
||||
}
|
||||
var codes []string
|
||||
seen := map[string]bool{}
|
||||
for _, s := range it.Securities {
|
||||
if s.RejectCode != "" && !seen[s.RejectCode] {
|
||||
seen[s.RejectCode] = true
|
||||
codes = append(codes, s.RejectCode)
|
||||
}
|
||||
}
|
||||
return true, strings.Join(codes, ", ")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user