Входящие M2M: частичный приём — каждая бумага решается сама по себе (НРД допускает: по каждой принятой свой черновик 16/1); переводы на ИИС не принимаем — отказ M2M07 по всем бумагам
- finishResult: итог confirm / reject / partial, без отказа всем пакетом; - autoDecisions и ручной ответ: без правила «целиком», квал-предупреждение — отказ только по своей бумаге; - признак ИИС из заголовка запроса (IIAAgreementDetails), у сохранённых раньше — по исходному XML; - форма оператора: без автоматического «отказ всем», подсказка про ИИС; тексты и тесты. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -55,6 +55,7 @@ type IncomingTransfer struct {
|
||||
DocNumber string `json:"doc_number,omitempty"`
|
||||
ReceivingINN string `json:"receiving_inn,omitempty"` // принимающий депозитарий (мы)
|
||||
Securities []IncomingSecurity `json:"securities"`
|
||||
IIS bool `json:"iis,omitempty"` // перевод на ИИС (в запросе есть IIAAgreementDetails)
|
||||
RawXML string `json:"raw_xml"`
|
||||
DecisionXML string `json:"decision_xml,omitempty"` // наш ответ M2MTransferDecision (для выгрузки регулятору)
|
||||
Status string `json:"status"` // pending | answered
|
||||
@@ -135,6 +136,7 @@ func (s *IncomingStore) AddFromRequest(req *m2m.M2MTransferRequest, rawXML strin
|
||||
id, _ := newID()
|
||||
inv := req.Data.InvestorInformation
|
||||
it := &IncomingTransfer{
|
||||
IIS: req.Header.IIAAgreementDetails != nil,
|
||||
ID: id,
|
||||
GUID: guid,
|
||||
RequestCreated: req.Header.CreationTimestamp.Time,
|
||||
@@ -358,3 +360,8 @@ func newID() (string, error) {
|
||||
}
|
||||
return u, nil
|
||||
}
|
||||
|
||||
// incomingIsIIS — перевод на ИИС: по признаку из запроса, а у сохранённых раньше — по исходному XML.
|
||||
func incomingIsIIS(it *IncomingTransfer) bool {
|
||||
return it.IIS || strings.Contains(it.RawXML, "IIAAgreementDetails")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user