Reworks the March of Dimes workflow to match reality: the OT does their own disability assessment and provides the VOD letter; our accessibility specialist then visits to produce the proposal/drawings/quote; and the application can be submitted by us (internal), the client, or the authorizer themselves. The old workflow flattened all this into one assessment state with a dead-end funding_denied and no document tracking. Data model (13 new sale.order fields): - 5 new document binaries + filenames: VOD letter, Application Form (filled), Notice of Assessment, Property Tax, Proposal Document - x_fc_mod_submitted_by Selection (internal/client/authorizer) - x_fc_mod_handoff_date, x_fc_mod_vod_requested_date - x_fc_mod_accessibility_specialist_id (m2o res.partner — internal or external) - x_fc_mod_previous_status_before_hold (for proper resume) - x_fc_mod_funding_denial_reason (captured via wizard) Settings (4 res.company fields + res_config_settings mirrors): - x_fc_mod_application_form (blank) + filename - x_fc_mod_vod_form (blank) + filename - x_fc_mod_followup_assignee_mode (office_contact / sales_rep) - x_fc_mod_followup_office_contact_id res.partner: added 'accessibility_specialist' to x_fc_contact_type. State machine: - New state handoff_to_client between quote_submitted and awaiting_funding, used for paths B/C (client or authorizer submits themselves) - Fixed action_mod_on_hold to save x_fc_mod_previous_status_before_hold - Fixed action_mod_resume to restore previous status (was hardcoded to in_production, losing context for cases held earlier) 4 new wizards: - mod_submission_path_wizard — chooses submitted_by, auto-fires VOD request email on first switch to 'internal' - mod_funding_denied_wizard — captures denial category + reason - mod_resubmit_wizard — revises + resubmits denied cases (with optional doc clearing) - mod_submission_confirmed_wizard — records client/authorizer confirmed submission, advances to awaiting_funding 8 new action methods: - action_mod_set_submission_path, action_mod_request_vod, action_mod_handoff_to_client (validates docs, fires handoff email), action_mod_confirmed_submission, action_mod_resubmit_from_denied, action_mod_cancel_from_denied, action_mod_reopen_cancelled - action_mod_funding_denied now opens the denial wizard 3 new email methods + 2 existing fixes: - _send_mod_vod_request_email — auto-attaches blank VOD form from company settings, sent to authorizer when we are handling submission - _send_mod_handoff_email — two templates (client vs authorizer), attaches proposal + drawing + blank MOD Application Form - _mod_company_attachment helper for building attachments from company Binary - Fixed _send_mod_assessment_completed_email to include authorizer - Fixed _send_mod_pod_submitted_email to include client New cron: - _cron_mod_handoff_followup (daily 09:00) — creates mail.activity for office to confirm MOD submission. Assignee via company setting (office contact or sales rep). Uses existing rolling-window cap (2/month per order). Views: - sale_order form: new status-bar buttons (set path, request VOD, handoff, confirm, resubmit, cancel, reopen), new document section in MOD Documents tab with submission-path tracking, denial details, hold history - res_config_settings: new MOD blank forms upload + assignee config Deployed to odoo-westin (westin-v19) and odoo-mobility (mobility). Pre-deploy FK cleanup from earlier session means mobility updated cleanly without workaround. HTTP 200 on both, cron verified active, all new fields present.
Fusion Central
Complete ADP Billing Solution for Odoo 19
Part of the Fusion Claim Assistant product family by Nexa Systems Inc.
Overview
Fusion Central is a comprehensive solution for managing ADP (Assistive Devices Program) billing in Odoo. It provides automatic calculation of ADP and client portions, professional PDF reports, and seamless integration with your existing workflow.
Features
Automatic Portion Calculations
- Per-line calculations on sale orders and invoices
- Client type based rules:
- REG: 75% ADP / 25% Client
- ODS, OWP, ACS, LTC, SEN, CCA: 100% ADP / 0% Client
- Automatic recalculation on quantity or price changes
- Totals displayed on document headers
Professional PDF Reports
- Portrait and Landscape orientations available
- Quotation, Sale Order, and Invoice reports
- Uses Odoo's default company header/footer via
web.external_layout - Includes:
- Company logo and address (from company settings)
- Billing and delivery address boxes with borders
- ADP device codes from products (
x_adp_code) - Per-line ADP and client portions with color coding
- Serial number column
- Authorizer and sales rep information
- Payment terms
- Signature section (if signed)
Report Templates
| Report | Template ID | Model | Description |
|---|---|---|---|
| Quotation/Order (Portrait) | fusion_claims.report_saleorder_portrait |
sale.order | Standard portrait layout |
| Quotation/Order (Landscape - ADP) | fusion_claims.report_saleorder_landscape |
sale.order | Landscape with full ADP columns |
| Invoice (Portrait) | fusion_claims.report_invoice_portrait |
account.move | Standard portrait layout |
| Invoice (Landscape) | fusion_claims.report_invoice_landscape |
account.move | Landscape with full ADP columns |
Report Styling
All reports follow a consistent style:
- Font: Arial, 10-12pt depending on section
- Headers: Blue background (#0066a1) with white text
- ADP Portion Column: Blue header (#1976d2), light blue rows (#e3f2fd)
- Client Portion Column: Orange header (#e65100), light orange rows (#fff3e0)
- Bordered Tables: All tables have 1px solid black borders
- Totals: Right-aligned with proper borders
Configurable Settings
- Field mappings for existing Odoo Studio fields
- One-click field creation for new installations
- HTML editors for payment terms and refund policy
- Store address configuration
- Field mapping configuration
ADP Claim Export
- Export invoices to comma-separated TXT format
- Compatible with ADP submission systems
- Automatic file naming with submission numbers
- Optional Documents app integration
Installation
- Copy the
fusion_claimsfolder to your Odoo addons directory - Update the apps list in Odoo
- Install "Fusion Central" from the Apps menu
Configuration
Quick Setup (Settings → Sales → Fusion Central)
-
Create Fields:
- Click "Create Sale Order Fields"
- Click "Create Invoice Fields"
- Click "Create Product Fields"
-
Or Detect Existing Fields:
- Click "Detect Existing Fields" if you have existing custom fields
-
Configure Company Info:
- Store Address Line 1 & 2
- Company Tagline
- E-Transfer Email
- Cheque Payable To
-
Add Payment Terms:
- Use the HTML editor to format your payment terms
-
Add Refund Policy:
- Enable "Include Refund Policy Page"
- Paste your refund policy HTML
Field Mappings
The module uses the following fields:
Sale Order Fields
| Field | Technical Name | Description |
|---|---|---|
| Sale Type | x_fc_sale_type | ADP, ADP/ODSP, REG, etc. |
| Client Type | x_fc_client_type | REG, ODS, OWP, ACS, LTC, SEN, CCA |
| Authorizer | x_fc_authorizer_id | Many2one to res.partner |
| Claim Number | x_fc_claim_number | ADP claim reference |
| Delivery Date | x_fc_adp_delivery_date | Device delivery date |
| Client Ref 1 | x_fc_client_ref_1 | Client reference 1 |
| Client Ref 2 | x_fc_client_ref_2 | Client reference 2 |
| Service Start | x_fc_service_start_date | Service start date |
| Service End | x_fc_service_end_date | Service end date |
Sale Order Line Fields
| Field | Technical Name | Description |
|---|---|---|
| Serial Number | x_fc_serial_number | Device serial number |
| ADP Portion | x_fc_adp_portion | Calculated ADP amount |
| Client Portion | x_fc_client_portion | Calculated client amount |
| Device Placement | x_fc_device_placement | L/R/N/A placement |
Invoice Fields
| Field | Technical Name | Description |
|---|---|---|
| Invoice Type | x_fc_invoice_type | ADP, ADP Client Portion, ODSP, WSIB, etc. |
| Claim Number | x_fc_claim_number | ADP claim reference |
| Authorizer | x_fc_authorizer_id | Many2one to res.partner |
| Delivery Date | x_fc_adp_delivery_date | Device delivery date |
Product Fields
| Field | Technical Name | Description |
|---|---|---|
| ADP Code | x_adp_code | ADP device code for billing |
Usage
Sale Orders
- Create a sale order
- Set Sale Type to "ADP" or "ADP/ODSP"
- Set Client Type (REG, ODS, etc.)
- Add products - ADP and Client portions calculate automatically
- Print using Portrait or Landscape report
Invoices
- Create invoice (or generate from sale order)
- Set Invoice Type to "ADP" or "ADP/ODSP"
- Portions display automatically
- Use "Export ADP" button to generate claim file
- Print using Portrait or Landscape report
Odoo 19 Compatibility Notes
This module has been updated for Odoo 19 with the following changes:
-
QWeb Templates:
- Removed
hasattrcalls (not supported in Odoo 19 QWeb) - Changed
product_uomtoproduct_uom_id - Changed
tax_idtotax_ids - Use
t-else=""instead of checking fordisplay_type == False
- Removed
-
Report Templates:
- Use only
web.external_layoutfor headers/footers - Removed duplicate header/footer template calls
- Added explicit CSS borders (Bootstrap border classes don't render in PDF)
- Use only
-
Field Names:
- All fields use the
x_fc_*naming convention
- All fields use the
Requirements
- Odoo 19.0
- Dependencies: base, sale, sale_management, account
Changelog
Version 19.0.1.0.0 (December 2025)
- Updated for Odoo 19 compatibility
- Rewrote all report templates with consistent styling
- Fixed QWeb template issues (hasattr, field names)
- Added explicit CSS borders for PDF rendering
- Improved authorizer field display (Many2one handling)
- Removed duplicate header/footer calls
- Standardized all field mappings to x_fc_* fields
Version 18.0.1.0.0
- Initial release for Odoo 18
Support
Developer: Nexa Systems Inc. Website: https://www.nexasystems.ca Email: support@nexasystems.ca
License
Odoo Proprietary License v1.0 (OPL-1)
Copyright © 2024-2025 Nexa Systems Inc. All rights reserved.