Fixed billing fees unreachable error propagation. Added USDT ledger creation. Fixed ledger boundaries operation types
This commit is contained in:
@@ -65,7 +65,7 @@ func (s *Service) postCreditResponder(_ context.Context, req *ledgerv1.PostCredi
|
||||
|
||||
existingEntry, err := s.storage.JournalEntries().GetByIdempotencyKey(ctx, orgRef, req.IdempotencyKey)
|
||||
if err == nil && existingEntry != nil {
|
||||
recordDuplicateRequest("credit")
|
||||
recordDuplicateRequest(journalEntryTypeCredit)
|
||||
logger.Info("Duplicate credit request (idempotency)",
|
||||
zap.String("existingEntryID", existingEntry.GetID().Hex()))
|
||||
return &ledgerv1.PostResponse{
|
||||
@@ -75,18 +75,18 @@ func (s *Service) postCreditResponder(_ context.Context, req *ledgerv1.PostCredi
|
||||
}, nil
|
||||
}
|
||||
if err != nil && err != storage.ErrJournalEntryNotFound {
|
||||
recordJournalEntryError("credit", "idempotency_check_failed")
|
||||
recordJournalEntryError(journalEntryTypeCredit, journalEntryErrorIdempotencyCheck)
|
||||
logger.Warn("Failed to check idempotency", zap.Error(err))
|
||||
return nil, merrors.Internal("failed to check idempotency")
|
||||
}
|
||||
|
||||
account, accountRef, err := s.resolveAccount(ctx, strings.TrimSpace(req.LedgerAccountRef), roleModel, orgRef, req.Money.Currency, "account")
|
||||
if err != nil {
|
||||
recordJournalEntryError("credit", "account_resolve_failed")
|
||||
recordJournalEntryError(journalEntryTypeCredit, journalEntryErrorAccountResolve)
|
||||
return nil, err
|
||||
}
|
||||
if err := validateAccountForOrg(account, orgRef, req.Money.Currency); err != nil {
|
||||
recordJournalEntryError("credit", "account_invalid")
|
||||
recordJournalEntryError(journalEntryTypeCredit, journalEntryErrorAccountInvalid)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -159,12 +159,12 @@ func (s *Service) postCreditResponder(_ context.Context, req *ledgerv1.PostCredi
|
||||
|
||||
contraAccount, err := s.resolveSettlementAccount(ctx, orgRef, req.Money.Currency, req.ContraLedgerAccountRef, accountsByRef)
|
||||
if err != nil {
|
||||
recordJournalEntryError("credit", "contra_resolve_failed")
|
||||
recordJournalEntryError(journalEntryTypeCredit, journalEntryErrorContraResolve)
|
||||
return nil, err
|
||||
}
|
||||
contraAccountID := contraAccount.GetID()
|
||||
if contraAccountID == nil {
|
||||
recordJournalEntryError("credit", "contra_missing_id")
|
||||
recordJournalEntryError(journalEntryTypeCredit, journalEntryErrorContraMissingID)
|
||||
return nil, merrors.Internal("contra account missing identifier")
|
||||
}
|
||||
|
||||
@@ -183,7 +183,7 @@ func (s *Service) postCreditResponder(_ context.Context, req *ledgerv1.PostCredi
|
||||
}
|
||||
|
||||
if !entryTotal.IsZero() {
|
||||
recordJournalEntryError("credit", "unbalanced_after_contra")
|
||||
recordJournalEntryError(journalEntryTypeCredit, journalEntryErrorUnbalancedAfterContra)
|
||||
return nil, merrors.Internal("failed to balance journal entry")
|
||||
}
|
||||
|
||||
@@ -237,13 +237,13 @@ func (s *Service) postCreditResponder(_ context.Context, req *ledgerv1.PostCredi
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
recordJournalEntryError("credit", "transaction_failed")
|
||||
recordJournalEntryError(journalEntryTypeCredit, journalEntryErrorTransactionFailed)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
amountFloat, _ := creditAmount.Float64()
|
||||
recordTransactionAmount(req.Money.Currency, "credit", amountFloat)
|
||||
recordJournalEntry("credit", "success", 0)
|
||||
recordTransactionAmount(req.Money.Currency, journalEntryTypeCredit, amountFloat)
|
||||
recordJournalEntry(journalEntryTypeCredit, journalEntryStatusSuccess, 0)
|
||||
return result.(*ledgerv1.PostResponse), nil
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user