SACCO Data Model & Relational Schema Architecture
Technical specifications of database models, foreign key relationships, constraints, and relational schemas governing SmartERP SACCO.
1. Overview & Business Value#
This comprehensive operational guide details the architecture, business workflows, configuration parameters, and execution steps for SACCO Data Model & Relational Schema Architecture within SmartERP.
Technical specifications of database models, foreign key relationships, constraints, and relational schemas governing SmartERP SACCO.
{screenshot:sacco-data-model-and-financial-architecture-overview-dashboard}
2. Prerequisites & Security Access Groups#
- Required Modules:
smarterp_sacco_core, smarterp_equb, smarterp_loan_management - Security Groups:
SACCO Loan Officer(Technical ID:smarterp_sacco.group_sacco_officer)SACCO Credit Committee Member(Technical ID:smarterp_sacco.group_sacco_committee)SACCO General Manager(Technical ID:smarterp_sacco.group_sacco_manager)
- Master Data Dependencies: Member KYC profiles, share capital registers, savings product tiers, loan products with reducing-balance schedules, and Equb rotational pool configurations.
3. Step-by-Step Configuration & Execution#
Step 1: Navigating to the Module Interface#
- Log into your SmartERP instance at
https://smarterp.et/odoo. - Open the main App Switcher (grid icon in the top-left corner).
- Select the SACCO & Equb app icon.
- From the top navigation bar, open SACCO & Equb → Members → KYC Registry / Savings Accounts / Loan Applications / Equb Pools.
{screenshot:sacco-data-model-and-financial-architecture-app-switcher-navigation}
Step 2: Creating and Parameterizing Records#
- Click the New button in the top-left control panel.
- Complete the mandatory fields in the record form:
- Member Identification Number (Mandatory): Unique membership number complying with Ethiopian Cooperative Commission rules
- Full Name & Kebele ID (Mandatory): Verified member identity with physical residence verification
- Share Capital Subscriptions (Mandatory): Subscribed shares not exceeding statutory 10% member ceiling (Proclamation 985/2016)
- Primary Savings Product (Mandatory): Compulsory regular monthly savings account configuration
- Configure optional operational parameters and localized tags as required:
- Guarantor & Collateral (Optional): Approved co-signers with locked savings accounts or registered vehicle/property lien
- Equb Rotational Group (Optional): Linked digital Equb pool with lottery draw eligibility
- Beneficiary Nominee (Optional): Designated next of kin for death or disability benefit transfer
- Click the Save icon in the control bar to commit the record.
{screenshot:sacco-data-model-and-financial-architecture-record-creation-form}
Step 3: Validating and Processing Transactions#
- State Transitions: Execute operational state progression (Application → KYC Verified → Approved → Active / Disbursed → Delinquency Monitored → Settled).
- Ledger & System Impact: Loan disbursement debits loans receivable and credits cash/bank; loan repayments credit interest income and loan principal, updating 5-tier NBE provisioning registers.
- Audit Verification: Automated recording of author ID, timestamp, and immutable revision history.
{screenshot:sacco-data-model-and-financial-architecture-transaction-processing-state}
Relational Entity Architecture#
SmartERP SACCO connects member master profiles, share capital registers, savings passbooks, loan amortization lines, and general ledger accounts into an ACID-compliant schema:
[sacco-data-model]
Core Model Specifications#
1. Member Profile: sacco.member#
Maintains cooperative membership master:
name(Char): Full member name.member_no(Char, unique, index): Unique ID (MBR-YYYY-NNNNN).national_id(Char, index): Ethiopian National / Kebele ID number.partner_id(Many2one->res.partner): Financial accounting entity.share_count(Integer),share_capital_amount(Monetary).savings_balance(Monetary, computed),loan_balance(Monetary, computed).state(Selection):draft,active,dormant,resigned,expelled.
2. Savings Passbook: sacco.savings.account#
Governs member deposit accounts:
member_id(Many2one->sacco.member, ondelete="restrict").account_number(Char, unique, index): Passbook number.account_type(Selection):mandatory,voluntary,fixed_term.balance(Monetary, computed): Available unencumbered balance.locked_collateral(Monetary): Amount pledged for loans or guarantees.interest_rate(Float),daily_accrued_interest(Float).
3. Credit Facility: sacco.loan.application#
Manages credit appraisal, approval, and schedules:
member_id(Many2one->sacco.member).loan_product_id(Many2one->sacco.loan.product).principal_amount(Monetary),tenure_months(Integer).interest_method(Selection):reducing,flat.dpd(Integer, computed): Days past due.nbe_tier(Selection):pass,special_mention,substandard,doubtful,loss.provision_amount(Monetary, computed): Required statutory impairment.schedule_ids(One2many->sacco.loan.schedule): Amortization breakdown.
4. Digital Equb Pool: sacco.equb.pool#
Coordinates rotational savings rounds:
name(Char),cycle_number(Integer).contribution_amount(Monetary),total_shares(Integer).round_ids(One2many->sacco.equb.round).winner_ids(Many2many->sacco.member).
5. Dividend Distribution: sacco.dividend.distribution#
Executes annual surplus allocation:
fiscal_year_id(Many2one->account.fiscal.year).net_surplus(Monetary),distributable_amount(Monetary).wht_rate(Float, default=0.05): 5% Withholding Tax.
4. Advanced Configuration Points#
- Automated Actions & Scheduled Tasks (Crons):
SACCO: Accrue monthly member savings interest(smarterp_sacco.ir_cron_savings_interest): Runs on the final day of each calendar month to credit interestLoan: Evaluate 5-tier NBE delinquency classification(smarterp_sacco.ir_cron_loan_delinquency): Runs nightly to compute loan loss provisions per NBE directivesEqub: Execute scheduled lottery draw(smarterp_sacco.ir_cron_equb_draw): Runs on defined pool cycle dates using provably fair random selection
- Custom Print Templates & Reports:
- Member Savings Passbook & Transaction Ledger
- Loan Amortization Schedule (Reducing Balance)
- NBE 5-Tier Delinquency & Loan Loss Provisioning Statement
- Annual Patronage Dividend Distribution Schedule
- Multi-Company Rules: Record-level security isolation under Company 1 (
Ashewa Technology Solutions S.C.), preventing cross-company ledger leakage across parent and subsidiary legal entities.
5. Comprehensive Troubleshooting Matrix#
| Error Symptom / Exception | Probable Root Cause | Corrective Action / Resolution |
|---|---|---|
Loan Blocked: Exceeds 3x savings ceiling | Requested loan principal exceeds 300% of member unencumbered savings balance. | Increase compulsory savings deposit or provide authorized co-signers with sufficient collateral. |
Equb Draw Blocked: Participant arrears detected | Selected Equb member has unpaid rotational dues in current or prior cycles. | Collect outstanding contribution payment before executing lottery draw. |
Share Capital Limit Error: Member exceeds 10% ceiling | Subscribed shares exceed statutory maximum under Proclamation No. 985/2016. | Restrict share allocation to maximum allowable 10% total cooperative equity threshold. |