refactor(jobs): address code review feedback on Task 1.8 admin views

- I1: Lock time_log_ids list inside step Audit tab to read-only
  (no create/edit/delete on the nested list). Audit timelog rows
  are produced exclusively by button_start / button_finish; if a
  manager could hand-edit them, cost_total rollups would silently
  drift.
- I2: Add explicit list view (decoration on state) and search view
  (filters by state/kind, group_by state/work_centre/job) for
  fp.job.step. The Steps (Admin) menu was using Odoo's default
  auto-list with no filter, which would be unusable after a few
  weeks of step accumulation. Action now references the search
  view explicitly.

Manifest 19.0.8.7.0 -> 19.0.8.7.1.

Part of: native job model migration (spec 2026-04-25)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsinghpal
2026-04-24 22:44:16 -04:00
parent b2ae79b61f
commit 1491f2367b
2 changed files with 50 additions and 3 deletions

View File

@@ -5,7 +5,7 @@
{
'name': 'Fusion Plating',
'version': '19.0.8.7.0',
'version': '19.0.8.7.1',
'category': 'Manufacturing/Plating',
'summary': 'Core plating / metal finishing ERP: facilities, processes, tanks, baths, jobs, operators.',
'description': """

View File

@@ -1,5 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="view_fp_job_step_list" model="ir.ui.view">
<field name="name">fp.job.step.list</field>
<field name="model">fp.job.step</field>
<field name="arch" type="xml">
<list decoration-info="state in ('ready', 'in_progress')"
decoration-success="state == 'done'"
decoration-muted="state in ('skipped', 'cancelled')">
<field name="job_id"/>
<field name="sequence"/>
<field name="name"/>
<field name="work_centre_id"/>
<field name="kind"/>
<field name="state"/>
<field name="assigned_user_id"/>
<field name="duration_actual"/>
</list>
</field>
</record>
<record id="view_fp_job_step_search" model="ir.ui.view">
<field name="name">fp.job.step.search</field>
<field name="model">fp.job.step</field>
<field name="arch" type="xml">
<search>
<field name="name"/>
<field name="job_id"/>
<field name="work_centre_id"/>
<field name="assigned_user_id"/>
<separator/>
<filter name="state_pending" string="Pending" domain="[('state','=','pending')]"/>
<filter name="state_ready" string="Ready" domain="[('state','=','ready')]"/>
<filter name="state_in_progress" string="In Progress" domain="[('state','=','in_progress')]"/>
<filter name="state_done" string="Done" domain="[('state','=','done')]"/>
<separator/>
<filter name="kind_wet" string="Wet" domain="[('kind','=','wet')]"/>
<filter name="kind_bake" string="Bake" domain="[('kind','=','bake')]"/>
<filter name="kind_inspect" string="Inspect" domain="[('kind','=','inspect')]"/>
<group>
<filter name="group_state" string="Status" context="{'group_by': 'state'}"/>
<filter name="group_work_centre" string="Work Centre" context="{'group_by': 'work_centre_id'}"/>
<filter name="group_job" string="Job" context="{'group_by': 'job_id'}"/>
</group>
</search>
</field>
</record>
<record id="view_fp_job_step_form" model="ir.ui.view">
<field name="name">fp.job.step.form</field>
<field name="model">fp.job.step</field>
@@ -61,8 +107,8 @@
<field name="date_finished" readonly="1"/>
<field name="signoff_user_id" readonly="1"/>
</group>
<field name="time_log_ids">
<list>
<field name="time_log_ids" readonly="1">
<list create="false" edit="false" delete="false">
<field name="user_id"/>
<field name="date_started"/>
<field name="date_finished"/>
@@ -84,5 +130,6 @@
<field name="name">Job Steps</field>
<field name="res_model">fp.job.step</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="view_fp_job_step_search"/>
</record>
</odoo>