feat(sub12b): move-log list/form/search + Plating menu

Plating → Move Log (sequence 62, between Logistics 60 and Aerospace 65).
Form is read-only (create=false) since moves are produced by the
tablet flow, not the desktop UI.

Search filters: Today, Scrap/Rework, Racked. Group-by: Job, Operator,
Transfer Type.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsinghpal
2026-04-27 21:05:28 -04:00
parent 4187842d30
commit 0794f7e3c9

View File

@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2026 Nexa Systems Inc.
License OPL-1 (Odoo Proprietary License v1.0)
Part of the Fusion Plating product family.
-->
<odoo>
<record id="view_fp_job_step_move_list" model="ir.ui.view">
<field name="name">fp.job.step.move.list</field>
<field name="model">fp.job.step.move</field>
<field name="arch" type="xml">
<list string="Move Log" default_order="move_datetime desc" create="false">
<field name="name"/>
<field name="move_datetime"/>
<field name="job_id"/>
<field name="from_step_id"/>
<field name="to_step_id"/>
<field name="from_tank_id" optional="show"/>
<field name="to_tank_id" optional="show"/>
<field name="qty_moved"/>
<field name="transfer_type" widget="badge"/>
<field name="rack_id" optional="show"/>
<field name="moved_by_user_id"/>
</list>
</field>
</record>
<record id="view_fp_job_step_move_form" model="ir.ui.view">
<field name="name">fp.job.step.move.form</field>
<field name="model">fp.job.step.move</field>
<field name="arch" type="xml">
<form string="Move" create="false">
<sheet>
<div class="oe_title">
<h1><field name="name" readonly="1"/></h1>
</div>
<group>
<group>
<field name="job_id"/>
<field name="from_step_id"/>
<field name="to_step_id"/>
<field name="transfer_type"/>
<field name="qty_moved"/>
<field name="qty_available_at_move"/>
</group>
<group>
<field name="from_tank_id"/>
<field name="to_tank_id"/>
<field name="to_location"/>
<field name="rack_id"/>
<field name="customer_wo_count"/>
<field name="moved_by_user_id"/>
<field name="move_datetime"/>
</group>
</group>
<notebook>
<page string="Captured Inputs" name="captured_inputs">
<field name="transition_input_value_ids" readonly="1">
<list>
<field name="node_input_id"/>
<field name="value_text"/>
<field name="value_number"/>
<field name="value_boolean"/>
<field name="value_date"/>
<field name="value_attachment_id"/>
</list>
</field>
</page>
<page string="Photo Evidence" name="photo"
invisible="not photo_evidence_id">
<field name="photo_evidence_id" widget="image"/>
</page>
</notebook>
</sheet>
<chatter/>
</form>
</field>
</record>
<record id="view_fp_job_step_move_search" model="ir.ui.view">
<field name="name">fp.job.step.move.search</field>
<field name="model">fp.job.step.move</field>
<field name="arch" type="xml">
<search>
<field name="name"/>
<field name="job_id"/>
<field name="from_step_id"/>
<field name="to_step_id"/>
<field name="rack_id"/>
<field name="moved_by_user_id"/>
<separator/>
<filter string="Today" name="today"
domain="[('move_datetime','&gt;=', (context_today() ).strftime('%Y-%m-%d 00:00:00'))]"/>
<filter string="Scrap / Rework" name="scrap_rework"
domain="[('transfer_type','in',('scrap','rework'))]"/>
<filter string="Racked" name="racked"
domain="[('rack_id','!=',False)]"/>
<group>
<filter string="Job" name="group_job"
context="{'group_by':'job_id'}"/>
<filter string="Operator" name="group_user"
context="{'group_by':'moved_by_user_id'}"/>
<filter string="Transfer Type" name="group_type"
context="{'group_by':'transfer_type'}"/>
</group>
</search>
</field>
</record>
<record id="action_fp_job_step_move" model="ir.actions.act_window">
<field name="name">Move Log</field>
<field name="res_model">fp.job.step.move</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="view_fp_job_step_move_search"/>
</record>
<menuitem id="menu_fp_job_step_move"
name="Move Log"
parent="menu_fp_root"
action="action_fp_job_step_move"
sequence="62"/>
</odoo>