cboddeposit-00-model.spp
cboddeposit/account/cboddeposit-00-model.spp
Download original file · Bank deposit source contents
1domain cboddeposit;23Entity BankAccount {4String accountNumber;5}67Role CashSettlementAccount {8String accountNumber;9quantum BigDecimal(19, 2) balance;10}1112Role CashAccountControl {13String controllingInstitution;14String controlStatus;15int cancelledOn;16String productKind;17}1819Role DepositAccrualState {20String accountNumber;21int lastProductDate;22BigDecimal(25, 2) normalProduct;23BigDecimal(25, 2) overdraftProduct;24BigDecimal(25, 2) overdraftInterestProduct;25BigDecimal(25, 2) actualProduct;26BigDecimal(25, 2) agreementProduct;27int overdraftDays;28int overdraftInterestDays;29}3031Role DepositInterestPolicy {32boolean normalEnabled;33BigDecimal(19, 2) normalUnit;34BigDecimal(19, 2) overdraftUnit;35}3637Role DepositDetailPolicy {38int itemCount;39}4041atomic check checkCashControl(CashAccountControl, AccountEligibility) {42require(CashAccountControl.controllingInstitution == "", "EN432");43require(44CashAccountControl.controlStatus != "PayNoReceive" && CashAccountControl.controlStatus != "Locked",45"EN432"46);47require(AccountEligibility.status != AccountStatus.FROZEN, "EG877");48require(CashAccountControl.cancelledOn == 0, "EN113");49require(CashAccountControl.productKind != "RealEstate", "EI090");50}5152atomic calculate describeAccountBalance(DepositAccount, AccountEligibility) {53AccountEligibility.accountBalance = DepositAccount.interestBase54- DepositAccount.overdraftInterest55- DepositAccount.collectionInterest56- DepositAccount.overdraftPrincipal;57}5859atomic check checkAccountParticipants(DepositAccount, AccountEligibility, DepositAccrualState) {60require(61DepositAccount.accountNumber == AccountEligibility.accountNumber62&& DepositAccount.accountNumber == DepositAccrualState.accountNumber,63"ACCOUNT_PARTICIPANTS_MISMATCH"64);65}