Files
Odoo-Modules/fusion_plating/fusion_plating_quality/views/fp_avl_views.xml
gsinghpal 8c76a16366 chore(plating): de-dash shipped code + intake-neutral customer emails
Replace em-dashes and en-dashes with hyphens across 789 shipped source
files (py/xml/js/scss) so the delivered module reads as human-written;
em-dashes had become a recognizable AI-generated tell. Internal .md dev
notes are excluded. The WO-sticker mojibake strippers keep their dash
search targets (now written — / –). No logic changes: comments
and display strings only; validated with py_compile + lxml parse.

Rewrite the 7 customer notification emails to be intake-neutral
(ship-in / drop-off / pickup) and repair-aware, and fix the Shipped
email documents line (packing slip vs bill of lading; certificate only
when issued). Subjects use a hyphen separator.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 00:16:19 -04:00

121 lines
5.6 KiB
XML

<?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_avl_list" model="ir.ui.view">
<field name="name">fp.avl.list</field>
<field name="model">fusion.plating.avl</field>
<field name="arch" type="xml">
<list string="Approved Vendors"
decoration-success="state == 'approved'"
decoration-info="state == 'pending'"
decoration-warning="state == 'conditional'"
decoration-muted="state in ('suspended','removed')"
decoration-danger="is_expired == True">
<field name="name"/>
<field name="partner_id"/>
<field name="category"/>
<field name="approved_for"/>
<field name="approval_date"/>
<field name="approval_expiry"/>
<field name="is_expired" optional="hide"/>
<field name="scorecard_rating"/>
<field name="state" widget="badge"
decoration-success="state == 'approved'"
decoration-warning="state == 'conditional'"
decoration-muted="state in ('suspended','removed')"/>
</list>
</field>
</record>
<record id="view_fp_avl_form" model="ir.ui.view">
<field name="name">fp.avl.form</field>
<field name="model">fusion.plating.avl</field>
<field name="arch" type="xml">
<form string="Approved Vendor">
<header>
<!-- Phase D5 - AVL state transitions are QM-only per spec
section 2.C (Manager has read; QM owns Add/Approve/
Disqualify). Spec lists "Approve / Disqualify"; this
model uses Approve + Suspend + Reinstate + Remove,
which together implement the disqualify path. All
four are gated. -->
<button name="action_approve" string="Approve" type="object"
class="oe_highlight" invisible="state == 'approved'"
groups="fusion_plating.group_fp_quality_manager"/>
<button name="action_suspend" string="Suspend" type="object"
invisible="state in ('suspended','removed')"
groups="fusion_plating.group_fp_quality_manager"/>
<button name="action_reinstate" string="Reinstate" type="object"
invisible="state != 'suspended'"
groups="fusion_plating.group_fp_quality_manager"/>
<button name="action_remove" string="Remove" type="object"
invisible="state == 'removed'"
groups="fusion_plating.group_fp_quality_manager"/>
<field name="state" widget="statusbar"
statusbar_visible="pending,approved,conditional,suspended,removed"/>
</header>
<sheet>
<div class="oe_title">
<label for="partner_id"/>
<h1><field name="partner_id"/></h1>
</div>
<group>
<group>
<field name="category"/>
<field name="approved_for"/>
<field name="scorecard_rating"/>
</group>
<group>
<field name="approval_date"/>
<field name="approval_expiry"/>
<field name="is_expired" readonly="1"/>
</group>
</group>
<notebook>
<page string="Notes">
<field name="notes"/>
</page>
</notebook>
</sheet>
<chatter/>
</form>
</field>
</record>
<record id="view_fp_avl_search" model="ir.ui.view">
<field name="name">fp.avl.search</field>
<field name="model">fusion.plating.avl</field>
<field name="arch" type="xml">
<search string="AVL">
<field name="name"/>
<field name="partner_id"/>
<field name="approved_for"/>
<separator/>
<filter string="Approved" name="approved" domain="[('state','=','approved')]"/>
<filter string="Pending" name="pending" domain="[('state','=','pending')]"/>
<filter string="Suspended" name="suspended" domain="[('state','=','suspended')]"/>
<filter string="Expired" name="expired" domain="[('is_expired','=',True)]"/>
<separator/>
<filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
<group>
<filter string="Status" name="group_state" context="{'group_by':'state'}"/>
<filter string="Category" name="group_category" context="{'group_by':'category'}"/>
</group>
</search>
</field>
</record>
<record id="action_fp_avl" model="ir.actions.act_window">
<field name="name">Approved Vendor List</field>
<field name="res_model">fusion.plating.avl</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="view_fp_avl_search"/>
</record>
</odoo>