Finance App =========== **Purpose**: Handle vendor payments for locally procured materials and periodic payouts to field teams for completed jobs. Responsibilities ---------------- - Process vendor payments (UPI, bank transfer, cash) after local procurement - Track payment status and transaction references - Manage job payout lifecycle (Central Ops marks payable → Finance releases) - Support multiple payout schedules: per-job, fortnightly, monthly - Maintain payment schedules per team - Provide financial summaries and dashboards Dependencies ------------ - **procurement** — VendorPayment is linked to ProcurementRequest - **accounts** — Finance users process payments; field teams receive payouts Key Models ---------- - **VendorPayment** — Payment to a vendor for locally procured materials. Links to ProcurementRequest. Tracks amount, method, transaction reference, and status. - **JobPayout** — Payment to a field team for a completed installation. Requires Central Ops approval (``marked_payable``) before Finance can release. - **PaymentSchedule** — Defines the payout frequency for each team (per-job, fortnightly, or monthly). Business Rules -------------- - Vendor payments require a completed ProcurementRequest with ``actual_cost`` recorded. - Field team payouts follow a two-step approval: Central Ops marks payable, Finance releases payment. - A job can only be marked payable after the installation status is ``closed``. - Payment schedules determine when accumulated payouts are released. - All payments must have a transaction reference for audit purposes. - Finance dashboard shows: pending vendor payments, upcoming team payouts, overdue payments.