quotation service fixed

This commit is contained in:
Stephan D
2026-02-24 16:14:09 +01:00
parent 6444813f38
commit 2fe90347a8
76 changed files with 769 additions and 230 deletions

View File

@@ -4,10 +4,10 @@ import "strings"
const (
RailCrypto = "CRYPTO"
RailProviderSettlement = "PROVIDER_SETTLEMENT"
RailProviderSettlement = "SETTLEMENT"
RailLedger = "LEDGER"
RailCardPayout = "CARD_PAYOUT"
RailFiatOnRamp = "FIAT_ONRAMP"
RailCardPayout = "CARD"
RailFiatOnRamp = "ONRAMP"
)
const (
@@ -48,7 +48,30 @@ var knownRailOperations = map[string]struct{}{
// NormalizeRail canonicalizes a rail token.
func NormalizeRail(value string) string {
return strings.ToUpper(strings.TrimSpace(value))
clean := strings.ToUpper(strings.TrimSpace(value))
if clean == "" {
return ""
}
clean = strings.ReplaceAll(clean, "-", "_")
clean = strings.ReplaceAll(clean, " ", "_")
for strings.Contains(clean, "__") {
clean = strings.ReplaceAll(clean, "__", "_")
}
switch clean {
case RailCrypto, "RAIL_CRYPTO":
return RailCrypto
case RailProviderSettlement, "PROVIDER_SETTLEMENT", "RAIL_SETTLEMENT", "RAIL_PROVIDER_SETTLEMENT":
return RailProviderSettlement
case RailLedger, "RAIL_LEDGER":
return RailLedger
case RailCardPayout, "CARD_PAYOUT", "RAIL_CARD", "RAIL_CARD_PAYOUT":
return RailCardPayout
case RailFiatOnRamp, "FIAT_ONRAMP", "RAIL_ONRAMP", "RAIL_FIAT_ONRAMP":
return RailFiatOnRamp
default:
return clean
}
}
// IsKnownRail reports whether the value is a recognized payment rail.
@@ -60,8 +83,8 @@ func IsKnownRail(value string) bool {
// NormalizeRailOperation canonicalizes a rail operation token.
func NormalizeRailOperation(value string) string {
clean := strings.ToUpper(strings.TrimSpace(value))
if strings.HasPrefix(clean, "RAIL_OPERATION_") {
clean = strings.TrimPrefix(clean, "RAIL_OPERATION_")
if after, ok := strings.CutPrefix(clean, "RAIL_OPERATION_"); ok {
clean = after
}
return clean
}
@@ -140,3 +163,11 @@ func CardPayoutRailGatewayOperations() []string {
RailOperationObserveConfirm,
}
}
// ProviderSettlementRailGatewayOperations returns canonical operations for settlement gateways.
func ProviderSettlementRailGatewayOperations() []string {
return []string{
RailOperationFXConvert,
RailOperationObserveConfirm,
}
}