openmeter / ledger /routingrules /defaults.go
Leon4gr45's picture
Upload folder using huggingface_hub (part 5)
cee2387 verified
Raw
History Blame Contribute Delete
3.17 kB
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,
},
},
},
}