package routingrules import "github.com/openmeterio/openmeter/openmeter/ledger" var DefaultValidator = Validator{ Rules: []RoutingRule{ RequireUniqueSubAccountsRule{}, RequireTaxDimensionScopeRule{}, RequireFeatureDimensionScopeRule{}, AllowedAccountSetsRule{ Sets: [][]ledger.AccountType{ {ledger.AccountTypeCustomerFBO, ledger.AccountTypeCustomerReceivable}, {ledger.AccountTypeCustomerReceivable}, {ledger.AccountTypeCustomerFBO}, {ledger.AccountTypeCustomerAccrued}, {ledger.AccountTypeCustomerFBO, ledger.AccountTypeCustomerAccrued}, {ledger.AccountTypeCustomerReceivable, ledger.AccountTypeCustomerAccrued}, {ledger.AccountTypeCustomerReceivable, ledger.AccountTypeWash}, {ledger.AccountTypeCustomerAccrued, ledger.AccountTypeEarnings}, {ledger.AccountTypeCustomerFBO, ledger.AccountTypeBrokerage}, {ledger.AccountTypeCustomerFBO, ledger.AccountTypeBreakage}, }, }, RequireFlowDirectionRule{ From: ledger.AccountTypeCustomerFBO, To: ledger.AccountTypeCustomerAccrued, }, RequireFlowDirectionRule{ From: ledger.AccountTypeCustomerReceivable, To: ledger.AccountTypeCustomerAccrued, }, RequireFlowDirectionRule{ From: ledger.AccountTypeCustomerAccrued, To: ledger.AccountTypeEarnings, }, RequireFlowDirectionRule{ From: ledger.AccountTypeWash, To: ledger.AccountTypeCustomerReceivable, }, RequireFlowDirectionRule{ From: ledger.AccountTypeCustomerFBO, To: ledger.AccountTypeBreakage, }, RequireAccountAuthorizationStatusRule{ WhenHasAccountTypes: []ledger.AccountType{ ledger.AccountTypeWash, ledger.AccountTypeCustomerReceivable, }, AccountType: ledger.AccountTypeCustomerReceivable, Expected: ledger.TransactionAuthorizationStatusAuthorized, }, RequireReceivableAuthorizationStageRule{}, RequireFBOCostBasisTranslationRule{}, RequireAccruedCostBasisTranslationRule{}, RequireSameRouteRule{ Left: ledger.AccountTypeCustomerFBO, Right: ledger.AccountTypeCustomerReceivable, Fields: []RouteField{ RouteFieldCurrency, RouteFieldFeatures, RouteFieldCostBasis, }, }, RequireSameRouteRule{ Left: ledger.AccountTypeCustomerFBO, Right: ledger.AccountTypeCustomerAccrued, Fields: []RouteField{ RouteFieldCurrency, RouteFieldCostBasis, }, }, RequireSameRouteRule{ Left: ledger.AccountTypeCustomerReceivable, Right: ledger.AccountTypeCustomerAccrued, Fields: []RouteField{ RouteFieldCurrency, RouteFieldCostBasis, }, }, RequireSameRouteRule{ Left: ledger.AccountTypeCustomerAccrued, Right: ledger.AccountTypeEarnings, Fields: []RouteField{ RouteFieldCurrency, RouteFieldTaxCode, RouteFieldTaxBehavior, RouteFieldCostBasis, }, }, RequireSameRouteRule{ Left: ledger.AccountTypeCustomerReceivable, Right: ledger.AccountTypeWash, Fields: []RouteField{ RouteFieldCurrency, RouteFieldCostBasis, }, }, RequireSameRouteRule{ Left: ledger.AccountTypeCustomerFBO, Right: ledger.AccountTypeBreakage, Fields: []RouteField{ RouteFieldCurrency, RouteFieldCostBasis, }, }, }, }