feat: separate fusion field service and LTC into standalone modules, update core modules

- fusion_claims: separated field service logic, updated controllers/views
- fusion_tasks: updated task views and map integration
- fusion_authorizer_portal: added page 11 signing, schedule booking, migrations
- fusion_shipping: new standalone shipping module (Canada Post, FedEx, DHL, Purolator)
- fusion_ltc_management: new standalone LTC management module
This commit is contained in:
2026-03-11 16:19:52 +00:00
parent 1f79cdcaaf
commit 431052920e
274 changed files with 52782 additions and 7302 deletions

View File

@@ -36,15 +36,6 @@ access_fusion_client_chat_message_user,fusion.client.chat.message.user,model_fus
access_fusion_client_chat_message_manager,fusion.client.chat.message.manager,model_fusion_client_chat_message,sales_team.group_sale_manager,1,1,1,1
access_fusion_xml_import_wizard,fusion.xml.import.wizard.user,model_fusion_xml_import_wizard,sales_team.group_sale_manager,1,1,1,1
access_fusion_claims_dashboard_user,fusion.claims.dashboard.user,model_fusion_claims_dashboard,sales_team.group_sale_salesman,1,1,1,1
access_fusion_technician_task_user,fusion.technician.task.user,model_fusion_technician_task,sales_team.group_sale_salesman,1,1,1,0
access_fusion_technician_task_manager,fusion.technician.task.manager,model_fusion_technician_task,sales_team.group_sale_manager,1,1,1,1
access_fusion_technician_task_technician,fusion.technician.task.technician,model_fusion_technician_task,fusion_claims.group_field_technician,1,1,0,0
access_fusion_technician_task_portal,fusion.technician.task.portal,model_fusion_technician_task,base.group_portal,1,0,0,0
access_fusion_push_subscription_user,fusion.push.subscription.user,model_fusion_push_subscription,base.group_user,1,1,1,0
access_fusion_push_subscription_portal,fusion.push.subscription.portal,model_fusion_push_subscription,base.group_portal,1,1,1,0
access_fusion_technician_location_manager,fusion.technician.location.manager,model_fusion_technician_location,sales_team.group_sale_manager,1,1,1,1
access_fusion_technician_location_user,fusion.technician.location.user,model_fusion_technician_location,sales_team.group_sale_salesman,1,0,0,0
access_fusion_technician_location_portal,fusion.technician.location.portal,model_fusion_technician_location,base.group_portal,0,0,1,0
access_fusion_send_to_mod_wizard_user,fusion_claims.send.to.mod.wizard.user,model_fusion_claims_send_to_mod_wizard,sales_team.group_sale_salesman,1,1,1,0
access_fusion_send_to_mod_wizard_manager,fusion_claims.send.to.mod.wizard.manager,model_fusion_claims_send_to_mod_wizard,sales_team.group_sale_manager,1,1,1,1
access_fusion_mod_awaiting_wizard_user,fusion_claims.mod.awaiting.funding.wizard.user,model_fusion_claims_mod_awaiting_funding_wizard,sales_team.group_sale_salesman,1,1,1,0
@@ -71,23 +62,8 @@ access_fusion_odsp_ready_delivery_wizard_user,fusion_claims.odsp.ready.delivery.
access_fusion_odsp_ready_delivery_wizard_manager,fusion_claims.odsp.ready.delivery.wizard.manager,model_fusion_claims_odsp_ready_delivery_wizard,sales_team.group_sale_manager,1,1,1,1
access_fusion_submit_to_odsp_wizard_user,fusion_claims.submit.to.odsp.wizard.user,model_fusion_claims_submit_to_odsp_wizard,sales_team.group_sale_salesman,1,1,1,0
access_fusion_submit_to_odsp_wizard_manager,fusion_claims.submit.to.odsp.wizard.manager,model_fusion_claims_submit_to_odsp_wizard,sales_team.group_sale_manager,1,1,1,1
access_fusion_task_sync_config_manager,fusion.task.sync.config.manager,model_fusion_task_sync_config,sales_team.group_sale_manager,1,1,1,1
access_fusion_task_sync_config_user,fusion.task.sync.config.user,model_fusion_task_sync_config,sales_team.group_sale_salesman,1,0,0,0
access_fusion_ltc_facility_user,fusion.ltc.facility.user,model_fusion_ltc_facility,sales_team.group_sale_salesman,1,1,1,0
access_fusion_ltc_facility_manager,fusion.ltc.facility.manager,model_fusion_ltc_facility,sales_team.group_sale_manager,1,1,1,1
access_fusion_ltc_floor_user,fusion.ltc.floor.user,model_fusion_ltc_floor,sales_team.group_sale_salesman,1,1,1,0
access_fusion_ltc_floor_manager,fusion.ltc.floor.manager,model_fusion_ltc_floor,sales_team.group_sale_manager,1,1,1,1
access_fusion_ltc_station_user,fusion.ltc.station.user,model_fusion_ltc_station,sales_team.group_sale_salesman,1,1,1,0
access_fusion_ltc_station_manager,fusion.ltc.station.manager,model_fusion_ltc_station,sales_team.group_sale_manager,1,1,1,1
access_fusion_ltc_repair_user,fusion.ltc.repair.user,model_fusion_ltc_repair,sales_team.group_sale_salesman,1,1,1,0
access_fusion_ltc_repair_manager,fusion.ltc.repair.manager,model_fusion_ltc_repair,sales_team.group_sale_manager,1,1,1,1
access_fusion_ltc_repair_stage_user,fusion.ltc.repair.stage.user,model_fusion_ltc_repair_stage,sales_team.group_sale_salesman,1,0,0,0
access_fusion_ltc_repair_stage_manager,fusion.ltc.repair.stage.manager,model_fusion_ltc_repair_stage,sales_team.group_sale_manager,1,1,1,1
access_fusion_ltc_cleanup_user,fusion.ltc.cleanup.user,model_fusion_ltc_cleanup,sales_team.group_sale_salesman,1,1,1,0
access_fusion_ltc_cleanup_manager,fusion.ltc.cleanup.manager,model_fusion_ltc_cleanup,sales_team.group_sale_manager,1,1,1,1
access_fusion_ltc_family_contact_user,fusion.ltc.family.contact.user,model_fusion_ltc_family_contact,sales_team.group_sale_salesman,1,1,1,0
access_fusion_ltc_family_contact_manager,fusion.ltc.family.contact.manager,model_fusion_ltc_family_contact,sales_team.group_sale_manager,1,1,1,1
access_fusion_ltc_form_submission_user,fusion.ltc.form.submission.user,model_fusion_ltc_form_submission,sales_team.group_sale_salesman,1,1,0,0
access_fusion_ltc_form_submission_manager,fusion.ltc.form.submission.manager,model_fusion_ltc_form_submission,sales_team.group_sale_manager,1,1,1,1
access_fusion_ltc_repair_create_so_wizard_user,fusion.ltc.repair.create.so.wizard.user,model_fusion_ltc_repair_create_so_wizard,sales_team.group_sale_salesman,1,1,1,1
access_fusion_ltc_repair_create_so_wizard_manager,fusion.ltc.repair.create.so.wizard.manager,model_fusion_ltc_repair_create_so_wizard,sales_team.group_sale_manager,1,1,1,1
access_fusion_page11_sign_request_user,fusion.page11.sign.request.user,model_fusion_page11_sign_request,sales_team.group_sale_salesman,1,1,1,0
access_fusion_page11_sign_request_manager,fusion.page11.sign.request.manager,model_fusion_page11_sign_request,sales_team.group_sale_manager,1,1,1,1
access_fusion_page11_sign_request_public,fusion.page11.sign.request.public,model_fusion_page11_sign_request,base.group_public,1,0,0,0
access_fusion_send_page11_wizard_user,fusion_claims.send.page11.wizard.user,model_fusion_claims_send_page11_wizard,sales_team.group_sale_salesman,1,1,1,1
access_fusion_send_page11_wizard_manager,fusion_claims.send.page11.wizard.manager,model_fusion_claims_send_page11_wizard,sales_team.group_sale_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
36 access_fusion_client_chat_message_manager fusion.client.chat.message.manager model_fusion_client_chat_message sales_team.group_sale_manager 1 1 1 1
37 access_fusion_xml_import_wizard fusion.xml.import.wizard.user model_fusion_xml_import_wizard sales_team.group_sale_manager 1 1 1 1
38 access_fusion_claims_dashboard_user fusion.claims.dashboard.user model_fusion_claims_dashboard sales_team.group_sale_salesman 1 1 1 1
access_fusion_technician_task_user fusion.technician.task.user model_fusion_technician_task sales_team.group_sale_salesman 1 1 1 0
access_fusion_technician_task_manager fusion.technician.task.manager model_fusion_technician_task sales_team.group_sale_manager 1 1 1 1
access_fusion_technician_task_technician fusion.technician.task.technician model_fusion_technician_task fusion_claims.group_field_technician 1 1 0 0
access_fusion_technician_task_portal fusion.technician.task.portal model_fusion_technician_task base.group_portal 1 0 0 0
access_fusion_push_subscription_user fusion.push.subscription.user model_fusion_push_subscription base.group_user 1 1 1 0
access_fusion_push_subscription_portal fusion.push.subscription.portal model_fusion_push_subscription base.group_portal 1 1 1 0
access_fusion_technician_location_manager fusion.technician.location.manager model_fusion_technician_location sales_team.group_sale_manager 1 1 1 1
access_fusion_technician_location_user fusion.technician.location.user model_fusion_technician_location sales_team.group_sale_salesman 1 0 0 0
access_fusion_technician_location_portal fusion.technician.location.portal model_fusion_technician_location base.group_portal 0 0 1 0
39 access_fusion_send_to_mod_wizard_user fusion_claims.send.to.mod.wizard.user model_fusion_claims_send_to_mod_wizard sales_team.group_sale_salesman 1 1 1 0
40 access_fusion_send_to_mod_wizard_manager fusion_claims.send.to.mod.wizard.manager model_fusion_claims_send_to_mod_wizard sales_team.group_sale_manager 1 1 1 1
41 access_fusion_mod_awaiting_wizard_user fusion_claims.mod.awaiting.funding.wizard.user model_fusion_claims_mod_awaiting_funding_wizard sales_team.group_sale_salesman 1 1 1 0
62 access_fusion_odsp_ready_delivery_wizard_manager fusion_claims.odsp.ready.delivery.wizard.manager model_fusion_claims_odsp_ready_delivery_wizard sales_team.group_sale_manager 1 1 1 1
63 access_fusion_submit_to_odsp_wizard_user fusion_claims.submit.to.odsp.wizard.user model_fusion_claims_submit_to_odsp_wizard sales_team.group_sale_salesman 1 1 1 0
64 access_fusion_submit_to_odsp_wizard_manager fusion_claims.submit.to.odsp.wizard.manager model_fusion_claims_submit_to_odsp_wizard sales_team.group_sale_manager 1 1 1 1
65 access_fusion_task_sync_config_manager access_fusion_page11_sign_request_user fusion.task.sync.config.manager fusion.page11.sign.request.user model_fusion_task_sync_config model_fusion_page11_sign_request sales_team.group_sale_manager sales_team.group_sale_salesman 1 1 1 1 0
66 access_fusion_task_sync_config_user access_fusion_page11_sign_request_manager fusion.task.sync.config.user fusion.page11.sign.request.manager model_fusion_task_sync_config model_fusion_page11_sign_request sales_team.group_sale_salesman sales_team.group_sale_manager 1 0 1 0 1 0 1
67 access_fusion_ltc_facility_user access_fusion_page11_sign_request_public fusion.ltc.facility.user fusion.page11.sign.request.public model_fusion_ltc_facility model_fusion_page11_sign_request sales_team.group_sale_salesman base.group_public 1 1 0 1 0 0
68 access_fusion_ltc_facility_manager access_fusion_send_page11_wizard_user fusion.ltc.facility.manager fusion_claims.send.page11.wizard.user model_fusion_ltc_facility model_fusion_claims_send_page11_wizard sales_team.group_sale_manager sales_team.group_sale_salesman 1 1 1 1
69 access_fusion_ltc_floor_user access_fusion_send_page11_wizard_manager fusion.ltc.floor.user fusion_claims.send.page11.wizard.manager model_fusion_ltc_floor model_fusion_claims_send_page11_wizard sales_team.group_sale_salesman sales_team.group_sale_manager 1 1 1 0 1
access_fusion_ltc_floor_manager fusion.ltc.floor.manager model_fusion_ltc_floor sales_team.group_sale_manager 1 1 1 1
access_fusion_ltc_station_user fusion.ltc.station.user model_fusion_ltc_station sales_team.group_sale_salesman 1 1 1 0
access_fusion_ltc_station_manager fusion.ltc.station.manager model_fusion_ltc_station sales_team.group_sale_manager 1 1 1 1
access_fusion_ltc_repair_user fusion.ltc.repair.user model_fusion_ltc_repair sales_team.group_sale_salesman 1 1 1 0
access_fusion_ltc_repair_manager fusion.ltc.repair.manager model_fusion_ltc_repair sales_team.group_sale_manager 1 1 1 1
access_fusion_ltc_repair_stage_user fusion.ltc.repair.stage.user model_fusion_ltc_repair_stage sales_team.group_sale_salesman 1 0 0 0
access_fusion_ltc_repair_stage_manager fusion.ltc.repair.stage.manager model_fusion_ltc_repair_stage sales_team.group_sale_manager 1 1 1 1
access_fusion_ltc_cleanup_user fusion.ltc.cleanup.user model_fusion_ltc_cleanup sales_team.group_sale_salesman 1 1 1 0
access_fusion_ltc_cleanup_manager fusion.ltc.cleanup.manager model_fusion_ltc_cleanup sales_team.group_sale_manager 1 1 1 1
access_fusion_ltc_family_contact_user fusion.ltc.family.contact.user model_fusion_ltc_family_contact sales_team.group_sale_salesman 1 1 1 0
access_fusion_ltc_family_contact_manager fusion.ltc.family.contact.manager model_fusion_ltc_family_contact sales_team.group_sale_manager 1 1 1 1
access_fusion_ltc_form_submission_user fusion.ltc.form.submission.user model_fusion_ltc_form_submission sales_team.group_sale_salesman 1 1 0 0
access_fusion_ltc_form_submission_manager fusion.ltc.form.submission.manager model_fusion_ltc_form_submission sales_team.group_sale_manager 1 1 1 1
access_fusion_ltc_repair_create_so_wizard_user fusion.ltc.repair.create.so.wizard.user model_fusion_ltc_repair_create_so_wizard sales_team.group_sale_salesman 1 1 1 1
access_fusion_ltc_repair_create_so_wizard_manager fusion.ltc.repair.create.so.wizard.manager model_fusion_ltc_repair_create_so_wizard sales_team.group_sale_manager 1 1 1 1

View File

@@ -54,88 +54,5 @@
<field name="comment">Temporary permission for editing locked documents on old/legacy cases. Requires the "Allow Document Lock Override" setting to be enabled in Fusion Claims Settings. Once all legacy cases are handled, disable the setting and remove this permission from users.</field>
</record>
<!-- ================================================================== -->
<!-- FIELD TECHNICIAN GROUP -->
<!-- Standalone group safe for both portal and internal users. -->
<!-- Do NOT imply group_fusion_claims_user — that chain leads to -->
<!-- base.group_user which conflicts with portal users (share=True). -->
<!-- Menu visibility is handled via comma-separated groups= on menus. -->
<!-- ================================================================== -->
<record id="group_field_technician" model="res.groups">
<field name="name">Field Technician</field>
<field name="privilege_id" ref="res_groups_privilege_fusion_claims"/>
</record>
<!-- ================================================================== -->
<!-- TECHNICIAN TASK RECORD RULES -->
<!-- ================================================================== -->
<!-- Managers: full access to all tasks -->
<record id="rule_technician_task_manager" model="ir.rule">
<field name="name">Technician Task: Manager Full Access</field>
<field name="model_id" ref="model_fusion_technician_task"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('sales_team.group_sale_manager'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<!-- Sales users: read/write all tasks, create tasks -->
<record id="rule_technician_task_sales_user" model="ir.rule">
<field name="name">Technician Task: Sales User Access</field>
<field name="model_id" ref="model_fusion_technician_task"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('sales_team.group_sale_salesman'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="False"/>
</record>
<!-- Field Technicians (internal): own tasks only -->
<record id="rule_technician_task_technician" model="ir.rule">
<field name="name">Technician Task: Technician Own Tasks</field>
<field name="model_id" ref="model_fusion_technician_task"/>
<field name="domain_force">[('technician_id', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('group_field_technician'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
</record>
<!-- Portal technicians: own tasks only, read + limited write -->
<record id="rule_technician_task_portal" model="ir.rule">
<field name="name">Technician Task: Portal Technician Access</field>
<field name="model_id" ref="model_fusion_technician_task"/>
<field name="domain_force">[('technician_id', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('base.group_portal'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
</record>
<!-- ================================================================== -->
<!-- PUSH SUBSCRIPTION RECORD RULES -->
<!-- ================================================================== -->
<!-- Users: own subscriptions only -->
<record id="rule_push_subscription_user" model="ir.rule">
<field name="name">Push Subscription: Own Only</field>
<field name="model_id" ref="model_fusion_push_subscription"/>
<field name="domain_force">[('user_id', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
</record>
<!-- Portal: own subscriptions only -->
<record id="rule_push_subscription_portal" model="ir.rule">
<field name="name">Push Subscription: Portal Own Only</field>
<field name="model_id" ref="model_fusion_push_subscription"/>
<field name="domain_force">[('user_id', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('base.group_portal'))]"/>
</record>
</odoo>