From 0fe8a71c05314f2adc6e3901bd426a77dd3d0f02 Mon Sep 17 00:00:00 2001 From: gsinghpal Date: Thu, 9 Apr 2026 07:34:17 -0400 Subject: [PATCH] =?UTF-8?q?fusion=5Fclaims:=20MOD=20workflow=20rework=20?= =?UTF-8?q?=E2=80=94=20two-assessment=20split,=203=20submission=20paths,?= =?UTF-8?q?=20recovery=20actions=20(v19.0.8.0.3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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_claims/__manifest__.py | 6 +- fusion_claims/data/ir_cron_data.xml | 16 + fusion_claims/models/res_company.py | 55 ++ fusion_claims/models/res_config_settings.py | 32 + fusion_claims/models/res_partner.py | 1 + fusion_claims/models/sale_order.py | 618 +++++++++++++++++- .../views/res_config_settings_views.xml | 71 ++ fusion_claims/views/sale_order_views.xml | 100 ++- fusion_claims/wizard/__init__.py | 4 + .../wizard/mod_funding_denied_wizard.py | 84 +++ .../mod_funding_denied_wizard_views.xml | 40 ++ fusion_claims/wizard/mod_resubmit_wizard.py | 87 +++ .../wizard/mod_resubmit_wizard_views.xml | 39 ++ .../wizard/mod_submission_confirmed_wizard.py | 92 +++ .../mod_submission_confirmed_wizard_views.xml | 41 ++ .../wizard/mod_submission_path_wizard.py | 76 +++ .../mod_submission_path_wizard_views.xml | 39 ++ 17 files changed, 1390 insertions(+), 11 deletions(-) create mode 100644 fusion_claims/wizard/mod_funding_denied_wizard.py create mode 100644 fusion_claims/wizard/mod_funding_denied_wizard_views.xml create mode 100644 fusion_claims/wizard/mod_resubmit_wizard.py create mode 100644 fusion_claims/wizard/mod_resubmit_wizard_views.xml create mode 100644 fusion_claims/wizard/mod_submission_confirmed_wizard.py create mode 100644 fusion_claims/wizard/mod_submission_confirmed_wizard_views.xml create mode 100644 fusion_claims/wizard/mod_submission_path_wizard.py create mode 100644 fusion_claims/wizard/mod_submission_path_wizard_views.xml diff --git a/fusion_claims/__manifest__.py b/fusion_claims/__manifest__.py index 1e1ccb1c..02428851 100644 --- a/fusion_claims/__manifest__.py +++ b/fusion_claims/__manifest__.py @@ -5,7 +5,7 @@ { 'name': 'Fusion Claims', - 'version': '19.0.8.0.2', + 'version': '19.0.8.0.3', 'category': 'Sales', 'summary': 'Complete ADP Claims Management with Dashboard, Sales Integration, Billing Automation, and Two-Stage Verification.', 'description': """ @@ -122,6 +122,10 @@ 'wizard/mod_awaiting_funding_wizard_views.xml', 'wizard/mod_funding_approved_wizard_views.xml', 'wizard/mod_pca_received_wizard_views.xml', + 'wizard/mod_submission_path_wizard_views.xml', + 'wizard/mod_funding_denied_wizard_views.xml', + 'wizard/mod_resubmit_wizard_views.xml', + 'wizard/mod_submission_confirmed_wizard_views.xml', 'wizard/odsp_sa_mobility_wizard_views.xml', 'wizard/odsp_discretionary_wizard_views.xml', 'wizard/odsp_submit_to_odsp_wizard_views.xml', diff --git a/fusion_claims/data/ir_cron_data.xml b/fusion_claims/data/ir_cron_data.xml index cb5c8580..9d32d66e 100644 --- a/fusion_claims/data/ir_cron_data.xml +++ b/fusion_claims/data/ir_cron_data.xml @@ -136,6 +136,22 @@ + + + Fusion Claims: MOD Handoff Follow-up + + code + model._cron_mod_handoff_followup() + 1 + days + True + + + + + +

March of Dimes — Blank Forms & Handoff Follow-Up

+

+ Upload the latest revision of the MOD-issued blank forms here. + They are auto-attached to outgoing emails so every case uses the + current version. Re-upload whenever March of Dimes publishes a + new revision. +

+
+
+
+ MOD Application Form (blank) +
+ Attached to the handoff email when client or authorizer + is submitting the application themselves. +
+
+ +
+
+
+
+
+ Verification of Disability Form (blank) +
+ Attached to the VOD request email sent to the authorizer + when our office is handling the MOD submission internally. +
+
+ +
+
+
+
+
+
+
+ Handoff Follow-up Assignee +
+ Who gets the follow-up activity when a client or authorizer + is handling the MOD submission themselves. "Office contact" + routes all follow-ups to a single designated person. "Sales + rep" assigns to the rep on each order. +
+
+ +
+
+
+
+
+ Office Follow-up Contact +
+ The office user who receives MOD handoff follow-up activities + when assignee mode is set to Office Contact. +
+
+ +
+
+
+
+ diff --git a/fusion_claims/views/sale_order_views.xml b/fusion_claims/views/sale_order_views.xml index 6bde26a2..48383df2 100644 --- a/fusion_claims/views/sale_order_views.xml +++ b/fusion_claims/views/sale_order_views.xml @@ -193,12 +193,57 @@