Audit of all 86 data XML files in the fusion_plating module set
turned up 3 more files that lacked noupdate=1 protection — every
module upgrade would re-import them and silently overwrite user
customisations. Following the ENP-ALUM-BASIC recovery (a68bf2e),
locked these too:
1. fusion_tasks/data/ir_cron_data.xml — 4 ir.cron records
(technician travel times, push notifications, late-arrival
checks, location cleanup). Users may disable / re-schedule.
2. fusion_plating_shopfloor/data/fp_cron_data.xml — 1 ir.cron
(Bake Window state updater). Same reasoning.
3. fusion_plating_bridge_maintenance/data/fp_maintenance_stage_data.xml
— 3 maintenance.stage records (kanban columns: New / Active /
Completed). Admin may rename, reorder, or add new stages.
Companion entech-side action (executed via SQL during the fix
session): 11 ir.model.data rows for these records were updated to
noupdate=true so the next module upgrade respects the new flag.
Files left explicitly noupdate=0 — verified safe:
- fusion_plating/data/fp_landing_data.xml — 1 ir.actions.server
(system action, code-defined; re-import is harmless)
- fusion_plating_reports/data/fp_hide_default_reports.xml —
re-asserts deletion of default Odoo report bindings; intentional
to re-run on every upgrade
Final audit confirmed 0 user-editable noupdate=false records remain.
ir.model.inherit + report.paperformat rows still noupdate=false but
those are system metadata (Odoo manages) and Odoo's standard
paperformat pattern, both safe.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
56 lines
2.5 KiB
XML
56 lines
2.5 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
Copyright 2024-2026 Nexa Systems Inc.
|
|
License LGPL-3
|
|
-->
|
|
<odoo>
|
|
<data noupdate="1">
|
|
|
|
<!-- Cron Job: Calculate Travel Times for Technician Tasks (every 15 min) -->
|
|
<record id="ir_cron_technician_travel_times" model="ir.cron">
|
|
<field name="name">Fusion Tasks: Calculate Technician Travel Times</field>
|
|
<field name="model_id" ref="model_fusion_technician_task"/>
|
|
<field name="state">code</field>
|
|
<field name="code">model._cron_calculate_travel_times()</field>
|
|
<field name="interval_number">15</field>
|
|
<field name="interval_type">minutes</field>
|
|
<field name="active">True</field>
|
|
</record>
|
|
|
|
<!-- Cron Job: Send Push Notifications for Upcoming Tasks -->
|
|
<record id="ir_cron_technician_push_notifications" model="ir.cron">
|
|
<field name="name">Fusion Tasks: Technician Push Notifications</field>
|
|
<field name="model_id" ref="model_fusion_technician_task"/>
|
|
<field name="state">code</field>
|
|
<field name="code">model._cron_send_push_notifications()</field>
|
|
<field name="interval_number">15</field>
|
|
<field name="interval_type">minutes</field>
|
|
<field name="active">True</field>
|
|
</record>
|
|
|
|
<!-- Cron Job: Check for Late Technician Arrivals -->
|
|
<record id="ir_cron_check_late_arrivals" model="ir.cron">
|
|
<field name="name">Fusion Tasks: Check Late Technician Arrivals</field>
|
|
<field name="model_id" ref="model_fusion_technician_task"/>
|
|
<field name="state">code</field>
|
|
<field name="code">model._cron_check_late_arrivals()</field>
|
|
<field name="interval_number">10</field>
|
|
<field name="interval_type">minutes</field>
|
|
<field name="active">True</field>
|
|
</record>
|
|
|
|
<!-- Cron Job: Cleanup Old Technician Locations -->
|
|
<record id="ir_cron_cleanup_locations" model="ir.cron">
|
|
<field name="name">Fusion Tasks: Cleanup Old Locations</field>
|
|
<field name="model_id" ref="model_fusion_technician_location"/>
|
|
<field name="state">code</field>
|
|
<field name="code">model._cron_cleanup_old_locations()</field>
|
|
<field name="interval_number">1</field>
|
|
<field name="interval_type">days</field>
|
|
<field name="active">True</field>
|
|
<field name="nextcall" eval="DateTime.now().replace(hour=4, minute=0, second=0)"/>
|
|
</record>
|
|
|
|
</data>
|
|
</odoo>
|