Files
Odoo-Modules/fusion_repairs/security/ir.model.access.csv
gsinghpal f463600585 feat(fusion_repairs): Bundle 5 - M5 pre-paid service plans + burn-down
New models
- fusion.repair.service.plan.subscription
  Tracks pre-paid maintenance packages: partner, plan product, optional
  category restriction, visits_included / visits_used / visits_remaining,
  start_date / end_date, computed state (active/exhausted/expired/cancelled),
  burn_history One2many. PLAN-NNNNN sequence.
- fusion.repair.service.plan.burn
  One row per maintenance visit that consumed a plan visit - feeds the
  Burn History tab on the subscription form.

product.template extensions
- x_fc_is_service_plan boolean toggle
- x_fc_plan_visits_included (default 4)
- x_fc_plan_duration_months (default 12)
- x_fc_plan_category_id - if set, only burns for repairs in that category
  (e.g. an Annual Stairlift Maintenance plan does not burn for wheelchair
  repairs)

sale.order.action_confirm() override
- For each order line whose product has x_fc_is_service_plan=True,
  spawns one fusion.repair.service.plan.subscription per qty unit.
- Start date = today; end date = today + plan_duration_months
  (relativedelta - correct month boundaries).

Visit report wizard
- New _burn_service_plan_visit(repair) call from action_confirm() finds
  the matching active subscription and burns one visit + posts a chatter
  note "Visit burned for repair X. N of M remaining." on the subscription.
- Skips quote-only repairs.
- The wizard does NOT zero out the invoice - the burn is informational;
  the office reconciles plan credits in their accounting workflow.

Backend
- Service Plans menu under Fusion Repairs root.
- List view colour-coded by state.
- Form with statusbar + cancel button + Burn History notebook.
- Service Plan tab added to product.template form (manager only).
- ACL: User read; Dispatcher write/create; Manager full + unlink.

Verified end-to-end on local westin-v19:
  Created plan product 'Annual Stairlift Maintenance - 4 Visits'
  Sold it via sale.order -> PLAN-00001 auto-created
  (visits_included=4, end_date=2027-05-21)
  Submitted visit-report on a stairlift repair -> visits_used=1
  remaining=3 (correctly category-matched).

Bumped to 19.0.1.5.0.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-21 00:19:28 -04:00

4.9 KiB

1idnamemodel_id:idgroup_id:idperm_readperm_writeperm_createperm_unlink
2access_repair_product_category_userRepair Category User Readmodel_fusion_repair_product_categorygroup_fusion_repairs_user1000
3access_repair_product_category_managerRepair Category Manager Fullmodel_fusion_repair_product_categorygroup_fusion_repairs_manager1111
4access_repair_intake_template_userIntake Template User Readmodel_fusion_repair_intake_templategroup_fusion_repairs_user1000
5access_repair_intake_template_managerIntake Template Manager Fullmodel_fusion_repair_intake_templategroup_fusion_repairs_manager1111
6access_repair_intake_question_userIntake Question User Readmodel_fusion_repair_intake_questiongroup_fusion_repairs_user1000
7access_repair_intake_question_managerIntake Question Manager Fullmodel_fusion_repair_intake_questiongroup_fusion_repairs_manager1111
8access_repair_intake_answer_userIntake Answer User Fullmodel_fusion_repair_intake_answergroup_fusion_repairs_user1110
9access_repair_intake_answer_managerIntake Answer Manager Fullmodel_fusion_repair_intake_answergroup_fusion_repairs_manager1111
10access_repair_intake_answer_tech_portalIntake Answer Technician Readmodel_fusion_repair_intake_answerfusion_tasks.group_field_technician1000
11access_repair_intake_wizard_userIntake Wizard User Fullmodel_fusion_repair_intake_wizardgroup_fusion_repairs_user1111
12access_repair_intake_wizard_equipment_userIntake Wizard Equipment User Fullmodel_fusion_repair_intake_wizard_equipmentgroup_fusion_repairs_user1111
13access_repair_service_catalog_userCatalogue User Readmodel_fusion_repair_service_cataloggroup_fusion_repairs_user1000
14access_repair_service_catalog_managerCatalogue Manager Fullmodel_fusion_repair_service_cataloggroup_fusion_repairs_manager1111
15access_repair_warranty_userWarranty User Readmodel_fusion_repair_warranty_coveragegroup_fusion_repairs_user1000
16access_repair_warranty_managerWarranty Manager Fullmodel_fusion_repair_warranty_coveragegroup_fusion_repairs_manager1111
17access_repair_visit_report_wizard_userVisit Report Wizard Usermodel_fusion_repair_visit_report_wizardgroup_fusion_repairs_user1111
18access_repair_visit_report_wizard_line_userVisit Report Line Usermodel_fusion_repair_visit_report_wizard_linegroup_fusion_repairs_user1111
19access_repair_maintenance_userMaintenance Contract User Readmodel_fusion_repair_maintenance_contractgroup_fusion_repairs_user1000
20access_repair_maintenance_dispatcherMaintenance Contract Dispatchermodel_fusion_repair_maintenance_contractgroup_fusion_repairs_dispatcher1110
21access_repair_maintenance_managerMaintenance Contract Manager Fullmodel_fusion_repair_maintenance_contractgroup_fusion_repairs_manager1111
22access_repair_order_repairs_userRepair Order Repairs User Read/Writerepair.model_repair_ordergroup_fusion_repairs_user1110
23access_repair_order_repairs_managerRepair Order Repairs Manager Fullrepair.model_repair_ordergroup_fusion_repairs_manager1111
24access_technician_task_repairs_userTechnician Task Repairs User Schedulefusion_tasks.model_fusion_technician_taskgroup_fusion_repairs_user1110
25access_technician_task_repairs_managerTechnician Task Repairs Manager Fullfusion_tasks.model_fusion_technician_taskgroup_fusion_repairs_manager1111
26access_repair_self_check_rule_userSelf-Check Rule User Readmodel_fusion_repair_self_check_rulegroup_fusion_repairs_user1000
27access_repair_self_check_rule_managerSelf-Check Rule Manager Fullmodel_fusion_repair_self_check_rulegroup_fusion_repairs_manager1111
28access_qr_sticker_wizard_userQR Sticker Wizard User Fullmodel_fusion_repair_qr_sticker_wizardgroup_fusion_repairs_user1111
29access_repair_inspection_userInspection Cert User Readmodel_fusion_repair_inspection_certificategroup_fusion_repairs_user1000
30access_repair_inspection_dispatcherInspection Cert Dispatchermodel_fusion_repair_inspection_certificategroup_fusion_repairs_dispatcher1110
31access_repair_inspection_managerInspection Cert Manager Fullmodel_fusion_repair_inspection_certificategroup_fusion_repairs_manager1111
32access_repair_inspection_technicianInspection Cert Field Tech Read-Onlymodel_fusion_repair_inspection_certificatefusion_tasks.group_field_technician1000
33access_service_plan_sub_userService Plan Sub User Readmodel_fusion_repair_service_plan_subscriptiongroup_fusion_repairs_user1000
34access_service_plan_sub_dispatcherService Plan Sub Dispatchermodel_fusion_repair_service_plan_subscriptiongroup_fusion_repairs_dispatcher1110
35access_service_plan_sub_managerService Plan Sub Manager Fullmodel_fusion_repair_service_plan_subscriptiongroup_fusion_repairs_manager1111
36access_service_plan_burn_userService Plan Burn User Readmodel_fusion_repair_service_plan_burngroup_fusion_repairs_user1000
37access_service_plan_burn_managerService Plan Burn Manager Fullmodel_fusion_repair_service_plan_burngroup_fusion_repairs_manager1111