Код получателя в запросе НРД — по ИНН зачисляющего депозитария из справочника M2M (заявки ЛК уходили с кодом из настроек → M2M15)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
package lkgateway
|
||||
|
||||
import "testing"
|
||||
|
||||
// Код получателя — по ИНН зачисляющего депозитария из справочника M2M, а не из настроек (M2M15 29.09.2026).
|
||||
func TestReceiverForByINN(t *testing.T) {
|
||||
svc := NewService(Config{DefaultReceiver: "MC0010300000"})
|
||||
if got := svc.receiverFor(CreateClaimRequest{ReceivingDepositoryINN: "7702015515"}); got != "MC00314000TR" {
|
||||
t.Fatalf("Атон: %s", got)
|
||||
}
|
||||
if got := svc.receiverFor(CreateClaimRequest{ReceivingDepositoryINN: "0000000000"}); got != "MC0010300000" {
|
||||
t.Fatalf("нет в справочнике — из настроек: %s", got)
|
||||
}
|
||||
if got := svc.receiverFor(CreateClaimRequest{ReceivingDepositoryINN: "7702015515", ReceiverCodeOverride: "MC0012500000"}); got != "MC0012500000" {
|
||||
t.Fatalf("явный код: %s", got)
|
||||
}
|
||||
}
|
||||
@@ -86,10 +86,7 @@ func (s *Service) BuildRequest(ctx context.Context, in CreateClaimRequest) (*m2m
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("lkgateway: dtoToClaim: %w", err)
|
||||
}
|
||||
receiver := s.defaultReceiver
|
||||
if in.ReceiverCodeOverride != "" {
|
||||
receiver = m2m.DeponentCode(in.ReceiverCodeOverride)
|
||||
}
|
||||
receiver := s.receiverFor(in)
|
||||
req, err := m2mcore.EnrichRequest(ctx, s.store, domainClaim, m2mcore.SenderReceiver{
|
||||
SenderCode: s.defaultSender,
|
||||
ReceiverCode: receiver,
|
||||
@@ -100,6 +97,19 @@ func (s *Service) BuildRequest(ctx context.Context, in CreateClaimRequest) (*m2m
|
||||
return req, nil
|
||||
}
|
||||
|
||||
// receiverFor — код получателя (зачисляющего депозитария) в заголовке запроса: явный (робот НРД,
|
||||
// тест-кейсы) → по ИНН зачисляющего депозитария из справочника участников M2M → из настроек.
|
||||
// Без справочника заявки ЛК уходили с кодом из настроек, и НРД отвечал M2M15 (29.09.2026).
|
||||
func (s *Service) receiverFor(in CreateClaimRequest) m2m.DeponentCode {
|
||||
if in.ReceiverCodeOverride != "" {
|
||||
return m2m.DeponentCode(in.ReceiverCodeOverride)
|
||||
}
|
||||
if code := handbookCodeByINN(in.ReceivingDepositoryINN); code != "" {
|
||||
return m2m.DeponentCode(code)
|
||||
}
|
||||
return s.defaultReceiver
|
||||
}
|
||||
|
||||
// BuildRequestUnchecked — BuildRequest без финальной проверки формата НРД: пакет нужен
|
||||
// для журнала и отказа через Fancy даже при некорректных данных заявки (lkemulate.go).
|
||||
func (s *Service) BuildRequestUnchecked(ctx context.Context, in CreateClaimRequest) (*m2m.M2MTransferRequest, error) {
|
||||
@@ -107,10 +117,7 @@ func (s *Service) BuildRequestUnchecked(ctx context.Context, in CreateClaimReque
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("lkgateway: dtoToClaim: %w", err)
|
||||
}
|
||||
receiver := s.defaultReceiver
|
||||
if in.ReceiverCodeOverride != "" {
|
||||
receiver = m2m.DeponentCode(in.ReceiverCodeOverride)
|
||||
}
|
||||
receiver := s.receiverFor(in)
|
||||
req, err := m2mcore.EnrichRequestUnchecked(ctx, s.store, domainClaim, m2mcore.SenderReceiver{
|
||||
SenderCode: s.defaultSender,
|
||||
ReceiverCode: receiver,
|
||||
|
||||
Reference in New Issue
Block a user