Код получателя в запросе НРД — по ИНН зачисляющего депозитария из справочника 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 {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("lkgateway: dtoToClaim: %w", err)
|
return nil, fmt.Errorf("lkgateway: dtoToClaim: %w", err)
|
||||||
}
|
}
|
||||||
receiver := s.defaultReceiver
|
receiver := s.receiverFor(in)
|
||||||
if in.ReceiverCodeOverride != "" {
|
|
||||||
receiver = m2m.DeponentCode(in.ReceiverCodeOverride)
|
|
||||||
}
|
|
||||||
req, err := m2mcore.EnrichRequest(ctx, s.store, domainClaim, m2mcore.SenderReceiver{
|
req, err := m2mcore.EnrichRequest(ctx, s.store, domainClaim, m2mcore.SenderReceiver{
|
||||||
SenderCode: s.defaultSender,
|
SenderCode: s.defaultSender,
|
||||||
ReceiverCode: receiver,
|
ReceiverCode: receiver,
|
||||||
@@ -100,6 +97,19 @@ func (s *Service) BuildRequest(ctx context.Context, in CreateClaimRequest) (*m2m
|
|||||||
return req, nil
|
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 без финальной проверки формата НРД: пакет нужен
|
// BuildRequestUnchecked — BuildRequest без финальной проверки формата НРД: пакет нужен
|
||||||
// для журнала и отказа через Fancy даже при некорректных данных заявки (lkemulate.go).
|
// для журнала и отказа через Fancy даже при некорректных данных заявки (lkemulate.go).
|
||||||
func (s *Service) BuildRequestUnchecked(ctx context.Context, in CreateClaimRequest) (*m2m.M2MTransferRequest, error) {
|
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 {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("lkgateway: dtoToClaim: %w", err)
|
return nil, fmt.Errorf("lkgateway: dtoToClaim: %w", err)
|
||||||
}
|
}
|
||||||
receiver := s.defaultReceiver
|
receiver := s.receiverFor(in)
|
||||||
if in.ReceiverCodeOverride != "" {
|
|
||||||
receiver = m2m.DeponentCode(in.ReceiverCodeOverride)
|
|
||||||
}
|
|
||||||
req, err := m2mcore.EnrichRequestUnchecked(ctx, s.store, domainClaim, m2mcore.SenderReceiver{
|
req, err := m2mcore.EnrichRequestUnchecked(ctx, s.store, domainClaim, m2mcore.SenderReceiver{
|
||||||
SenderCode: s.defaultSender,
|
SenderCode: s.defaultSender,
|
||||||
ReceiverCode: receiver,
|
ReceiverCode: receiver,
|
||||||
|
|||||||
Reference in New Issue
Block a user