S++Business systems language
DEMO SOURCE · SPP / APP / PHYRead the book

cboddeposit-scene-depositCash.spp

cboddeposit/deposit/cboddeposit-scene-depositCash.spp

Download original file · Bank deposit source contents

1domain cboddeposit;23Scenario serial depositCash(4    DepositRequest,5    DepositAccount,6    CashSettlementAccount,7    InterestIncomeAccount,8    CollectionInterestIncomeAccount,9    PrincipalRecoveryAccount,10    AccountEligibility,11    CashAccountControl,12    DepositProduct,13    BusinessDay,14    CashChannel,15    CashAuthorizationPolicy,16    AuthorizationEvidence,17    AdmissionDecision,18    DepositFeeParty,19    DepositFeeContext,20    DepositFeeRate,21    DepositFeePlan,22    DepositPlan,23    DepositDetailPolicy,24    CashDepositAgreement,25    DepositBankProfile,26    DepositOperatorFacts,27    DepositNotices,28    CashFailureRecord,29    DepositAccounting,30    DepositPostingLine[],31    DepositPostingTotals,32    DepositAccrualState,33    DepositInterestPolicy,34    InterestCalendar,35    AgreementTerm,36    AgreementPolicy,37    AgreementBand[],38    DepositAccrualPlan39) {40    checkCashInput;41    checkDetailPolicy;42    parallel {43        findDepositAccount;44        findAccountEligibility;45        findCashSettlementAccount;46        findInterestIncomeAccount;47        findCollectionInterestIncomeAccount;48        findPrincipalRecoveryAccount;49        findDepositAccrualState;50    }51    identify(DepositAccount);52    identify(AccountEligibility);53    identify(CashSettlementAccount);54    identify(InterestIncomeAccount);55    identify(CollectionInterestIncomeAccount);56    identify(PrincipalRecoveryAccount);57    identify(DepositAccrualState);58    checkAccountParticipants;59    describeAccountBalance;60    checkCashControl;61    checkDepositEligibility;62    checkDepositOperatorBinding;63    checkDepositBranchRange;64    assessDepositDocumentNotices;65    assessCashAdmission;66    mergeDepositNotices;67    checkCashAuthorization;68    checkFeeAccount;69    classifyDepositFee;70    if (DepositFeePlan.applicable) {71        prepareFeeLookup;72        findDepositFeeRate;73    }74    checkRequiredFeeIdentified;75    checkFeeRate;76    calculateDepositFee;77    checkKernelInput;78    calculateDepositPlan;79    checkPlan;80    classifyDepositAccounting;81    checkDepositAccounting;82    checkPostingRules;83    calculateDepositPostings;84    checkDepositPostings;85    checkAccrualPolicy;86    checkAccrualDates;87    calculateDepositAccrual;88    prepareDepositAgreement;89    preserveDepositPostingEvidence;90    transaction {91        settleCashDeposit bounds {92            DepositAccount.interestBase: [0, null];93            DepositAccount.overdraftInterest: [0, null];94            DepositAccount.collectionInterest: [0, null];95            DepositAccount.overdraftPrincipal: [0, null];96            DepositAccount.overdraftExposure: [0, null];97            CashSettlementAccount.balance: [null, null];98            InterestIncomeAccount.balance: [0, null];99            CollectionInterestIncomeAccount.balance: [0, null];100            PrincipalRecoveryAccount.balance: [0, null];101        };102        accumulateAccrual;103        updateDepositAccrualState;104        completeDepositMetadata;105        updateAccountEligibility;106        insertCashDepositAgreement;107        attachDepositPostings;108        insertDepositPostingLine;109    } fail {110        recordDepositFailure;111        if (ResultInfo.failure.recoveryStatus == "ROLLED_BACK"112            || ResultInfo.failure.recoveryStatus == "REVERSED") {113            confirmNoCashMovement;114        }115        transaction {116            insertCashFailureRecord;117        }118    }119}