/** * Shell Data & Reporting APIsLib * * This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ). */ import { array, lazy, nullable, number, object, optional, Schema, string, } from '../schema.js'; import { AssociatedAccount, associatedAccountSchema, } from './associatedAccount.js'; import { FeeRuleLocation, feeRuleLocationSchema } from './feeRuleLocation.js'; import { FeeRuleProduct, feeRuleProductSchema } from './feeRuleProduct.js'; import { FeeRuleTier, feeRuleTierSchema } from './feeRuleTier.js'; export interface BonusConfiguration { /** Account identifier of the Pricing Account associated with the Payer. */ pricingAccountId?: number | null; /** Account number of the Pricing Account associated with the Payer. */ pricingAccountNumber?: string | null; /** Short name of the Pricing Account associated with the Payer. */ pricingAccountShortName?: string | null; /** Full name of the Pricing Account associated with the Payer. */ pricingAccountFullName?: string | null; /** Bonus or association bonus configuration identifier that is associated to the payer. */ feeRuleId?: number | null; /** Bonus or association bonus configuration description that is associated to the payer. */ feeRuleDescription?: string | null; /** * The bonus or association bonus configuration becomes effective on the payer from this date. * Format: YYYYMMDD */ feeRuleDateEffective?: string | null; /** * The bonus or association bonus configuration is terminated for the payer on this date. * Format: YYYYMMDD */ feeRuleDateTerminated?: string | null; /** * Configuration to specify how the bonus is paid. * Format: ID-Description * Example: * 1-Pay to Payer * 2-Pay to invoice levels before the payer * 3-Pay to specific customer * 4-Pay to Association Customer * 5-Pay to Associated Customers */ bonusPaidTo?: string | null; /** Account identifier of the specific account to which the bonus is paid back */ bonusPaidToAccountId?: number | null; /** Account number of the specific account to which the bonus is paid back */ bonusPaidToAccountNumber?: string | null; /** Short name of the specific account to which the bonus is paid back */ bonusPaidToAccountShortName?: string | null; /** Full name of the specific account to which the bonus is paid back */ bonusPaidToAccountFullName?: string | null; /** * Frequency of the configuration. * Format: ID-Description * Examples: * 1-Daily (all days) * 2-Daily (only working days) * 3-Weekly – Monday */ frequency?: string | null; /** * The next bonus is calculated for the payer on this date. * Format: YYYYMMDD */ nextCalculationDate?: string | null; /** * The previous bonus was calculated for the payer on this date. * Format: YYYYMMDD */ previousCalculatedDate?: string | null; /** * Fee Rule Basis configured. * Format: ID-Description * Example: * 1-Currency Per Unit * 2-Percentage of Uplift * 3-Lump Sum */ feeRuleBasis?: string | null; /** ISO currency code of the currency configured in the Bonus Configuration, if any. */ feeRuleCurrencyCode?: string | null; /** Currency symbol of the currency configured in the Bonus Configuration, if any. */ feeRuleCurrencySymbol?: string | null; /** * This bonus or association bonus is available from this date. * Format: YYYYMMDD */ feeRuleAvailableFrom?: string | null; /** * This bonus or association bonus configuration will not be available from this date. * Format: YYYYMMDD */ feeRuleAvailableTo?: string | null; feeRuleLocations?: FeeRuleLocation[]; feeRuleTiers?: FeeRuleTier[]; associatedAccounts?: AssociatedAccount[]; feeRuleProducts?: FeeRuleProduct[]; } export const bonusConfigurationSchema: Schema = lazy(() => object({ pricingAccountId: ['PricingAccountId', optional(nullable(number()))], pricingAccountNumber: [ 'PricingAccountNumber', optional(nullable(string())), ], pricingAccountShortName: [ 'PricingAccountShortName', optional(nullable(string())), ], pricingAccountFullName: [ 'PricingAccountFullName', optional(nullable(string())), ], feeRuleId: ['FeeRuleId', optional(nullable(number()))], feeRuleDescription: ['FeeRuleDescription', optional(nullable(string()))], feeRuleDateEffective: [ 'FeeRuleDateEffective', optional(nullable(string())), ], feeRuleDateTerminated: [ 'FeeRuleDateTerminated', optional(nullable(string())), ], bonusPaidTo: ['BonusPaidTo', optional(nullable(string()))], bonusPaidToAccountId: [ 'BonusPaidToAccountId', optional(nullable(number())), ], bonusPaidToAccountNumber: [ 'BonusPaidToAccountNumber', optional(nullable(string())), ], bonusPaidToAccountShortName: [ 'BonusPaidToAccountShortName', optional(nullable(string())), ], bonusPaidToAccountFullName: [ 'BonusPaidToAccountFullName', optional(nullable(string())), ], frequency: ['Frequency', optional(nullable(string()))], nextCalculationDate: ['NextCalculationDate', optional(nullable(string()))], previousCalculatedDate: [ 'PreviousCalculatedDate', optional(nullable(string())), ], feeRuleBasis: ['FeeRuleBasis', optional(nullable(string()))], feeRuleCurrencyCode: ['FeeRuleCurrencyCode', optional(nullable(string()))], feeRuleCurrencySymbol: [ 'FeeRuleCurrencySymbol', optional(nullable(string())), ], feeRuleAvailableFrom: [ 'FeeRuleAvailableFrom', optional(nullable(string())), ], feeRuleAvailableTo: ['FeeRuleAvailableTo', optional(nullable(string()))], feeRuleLocations: [ 'FeeRuleLocations', optional(array(feeRuleLocationSchema)), ], feeRuleTiers: ['FeeRuleTiers', optional(array(feeRuleTierSchema))], associatedAccounts: [ 'AssociatedAccounts', optional(array(associatedAccountSchema)), ], feeRuleProducts: ['FeeRuleProducts', optional(array(feeRuleProductSchema))], }) );