NGO Grant Data Model & Fund Ledger Architecture
Technical specifications of database models, grant agreements, budget line tables, and restricted fund accounting relationships.
1. Overview & Business Value#
This comprehensive operational guide details the architecture, business workflows, configuration parameters, and execution steps for NGO Grant Data Model & Fund Ledger Architecture within SmartERP.
Technical specifications of database models, grant agreements, budget line tables, and restricted fund accounting relationships.
{screenshot:ngo-grant-data-model-and-fund-ledger-overview-dashboard}
2. Prerequisites & Security Access Groups#
- Required Modules:
smarterp_ngo_grants, smarterp_humanitarian, smarterp_fund_accounting - Security Groups:
Grant Officer(Technical ID:smarterp_ngo.group_grant_user)Finance Director (NGO)(Technical ID:smarterp_ngo.group_grant_manager)Field Relief Distribution Officer(Technical ID:smarterp_ngo.group_field_officer)
- Master Data Dependencies: Donor profiles (USAID, EU, UN, FCDO), multi-currency grant agreements, restricted fund accounts, ACSO 80/20 cost allocation categories, and beneficiary rosters.
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 NGO & Grants app icon.
- From the top navigation bar, open NGO & Grants → Grants & Projects → Donor Agreements / Budget Burn / Relief Distributions.
{screenshot:ngo-grant-data-model-and-fund-ledger-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:
- Grant Agreement Reference (Mandatory): Official donor contract number and co-funding arrangement
- Funding Currency & Budget (Mandatory): Donor currency (USD/EUR) and restricted ETB counterpart account
- Start & End Dates (Mandatory): Contractual grant operational window and closeout timeline
- ACSO Cost Ratio Classification (Mandatory): Operational program expenditure vs. administrative overhead allocation
- Configure optional operational parameters and localized tags as required:
- Co-Funding Share (Optional): Percentage split across multiple donors or institutional match
- Target Beneficiary Woreda / Kebele (Optional): Geographic location of humanitarian intervention
- Relief Item Voucher (Model 20) (Optional): Distribution schedule for emergency food or non-food items (NFI)
- Click the Save icon in the control bar to commit the record.
{screenshot:ngo-grant-data-model-and-fund-ledger-record-creation-form}
Step 3: Validating and Processing Transactions#
- State Transitions: Execute operational state progression (Draft Agreement → Approved / Funded → Active Implementation → Budget Burn Monitored → Grant Closed).
- Ledger & System Impact: Expenditures debit grant-restricted project accounts and credit vendor payables/cash; foreign currency conversions record realized and unrealized FX variance.
- Audit Verification: Automated recording of author ID, timestamp, and immutable revision history.
{screenshot:ngo-grant-data-model-and-fund-ledger-transaction-processing-state}
Relational Entity Architecture#
SmartERP NGO Grants connects donor profiles, grant agreements, WBS activities, budget burn ledgers, and beneficiary registries into an ACID-compliant schema:
[ngo-data-model]
Core Model Specifications#
1. Donor Grant: ngo.grant#
Maintains the institutional grant contract:
name(Char): Contract title.donor_id(Many2one->res.partner): Institutional donor.grant_code(Char, unique, index): Contract number.currency_id(Many2one->res.currency): Base donor currency (USD, EUR).total_grant_amount(Monetary),local_currency_amount(Monetary).start_date(Date),end_date(Date).state(Selection):draft,active,suspended,closed.
2. ACSO Budget Line: ngo.budget.line#
Governs budget burn and statutory tagging:
grant_id(Many2one->ngo.grant, ondelete="cascade").project_id(Many2one->project.project).acso_category(Selection):program_80,admin_20.budget_amount(Monetary),committed_amount(Monetary),spent_amount(Monetary).available_balance(Monetary, computed).
3. Beneficiary Master: ngo.beneficiary#
Maintains household relief profiles:
name(Char),national_id(Char, index).woreda_id(Many2one->res.country.state).vulnerability_score(Float).aid_type(Selection):in_kind_food,cva_cash,livelihood_grant.
4. Aid Distribution: ngo.distribution#
Tracks physical and cash aid deliveries:
beneficiary_id(Many2one->ngo.beneficiary).siv_voucher_id(Many2one->stock.picking): Model 20 SIV.cash_transfer_ref(Char): Telebirr transaction ID.distribution_date(Datetime).
4. Advanced Configuration Points#
- Automated Actions & Scheduled Tasks (Crons):
NGO: Calculate ACSO 80/20 cost ratio compliance(smarterp_ngo.ir_cron_acso_ratio): Runs weekly to flag any operational overhead drift above 20% limitGrants: Reconcile foreign currency funding variance(smarterp_ngo.ir_cron_fx_reconcile): Runs monthly to revalue restricted foreign currency bank accounts
- Custom Print Templates & Reports:
- ACSO Statutory Annual Financial Statement (80/20 Rule)
- Donor Financial Expenditure Report (Multi-Currency)
- Beneficiary Relief Distribution Voucher (Model 20 SIV)
- Time-and-Effort Personnel Timesheet Allocation Summary
- 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 |
|---|---|---|
ACSO 80/20 Violation Block: Administrative overhead exceeds 20% | Cumulative overhead costs exceed statutory ceiling established under Proclamation No. 1113/2019. | Reclassify direct project support expenses to program operational accounts or restrict general administrative spending. |
Budget Burn Halt: Grant line item allocation exhausted | Committed purchase or payroll expense exceeds approved donor line envelope. | Submit a formal grant budget reallocation or amendment request to the donor. |
Duplicate Beneficiary Error: ID already claimed in cycle | National ID or biometric record already logged for current distribution cycle. | Audit beneficiary registration records and confirm identity against Kebele verification list. |