Implemented Customizations ========================== This page summarizes the project-specific customizations implemented on top of ``django-ledger``. Architecture Strategy --------------------- The customization strategy keeps upstream ``django-ledger`` models intact and adds project behavior in the local ``accounting`` and ``dtf`` apps. This reduces upgrade risk while allowing domain-specific workflows. Sales Invoice Domain Extensions ------------------------------- Primary implementation files: * ``accounting/models.py`` * ``accounting/forms.py`` * ``accounting/views.py`` * ``accounting/sales_taxes.py`` * ``accounting/signals.py`` * ``accounting/urls.py`` * ``templates/accounting/sales_invoice/*.html`` Implemented capabilities: * Sales-invoice profile data linked to core ``InvoiceModel`` records. * Jurisdiction-aware tax calculations (Canada + US style scenarios). * Line-level and aggregated tax snapshots for auditability. * Preset-based tax defaults with manual overrides. * Sales-invoice UI for list/detail/create/update and payment operations. Machine-to-Machine API Surface ------------------------------ Primary routes are declared in ``accounting/api_urls.py`` and split by concern: * Integration health/check endpoints (OAuth scope validation). * Customer create/list/detail. * Item create/list/detail. * Invoice create/list/detail/approve/pay. * Inventory list/detail/adjust. This API surface is the recommended integration layer for external automation clients (e-commerce systems, AI assistants, and future MCP tools). OAuth2 And Integration Security ------------------------------- The project already supports OAuth2 client-credentials authentication for server-to-server use: * Token endpoint: ``/oauth/token/`` * Scoped integration status endpoint: ``/api/integration/status/`` Recommended scopes for external automation clients: * ``ledger:read`` * ``transactions:write`` As the integration footprint grows, consider adding more granular write scopes for customer/invoice operations. Resend Email + Webhook Lifecycle -------------------------------- Implemented in ``accounting/invoice_email.py`` and webhook handlers under the ledger routes: * Outbound invoice email sending through Resend. * Signature-verified webhook ingestion. * Delivery lifecycle status persistence for invoices and correspondence views. Background Jobs And Admin Operations ------------------------------------ Implemented in: * ``accounting/tasks.py`` * ``accounting/views_admin.py`` * ``templates/admin/celery_monitor*.html`` Capabilities: * Celery-powered asynchronous tasks. * Admin task monitor UI with manual task triggering. * Flower-backed worker/queue/task visibility. Data And Storage Integrations ----------------------------- Current integrations include: * PostgreSQL for production database workloads. * Redis as Celery broker. * Cloudflare R2-compatible object storage for media/static delivery. Environment/secret values must stay in deployment-time environment variables, not in repository files.