feat(plating): hide quality smart buttons at zero + order-scope NCR/CAPA counts

On the sale.order and fp.job forms, the Holds/Checks/NCRs/CAPAs/RMAs quality
smart buttons (and the SO WO button) now hide when their count is 0, so the row
shows only quality work that exists. NCR and CAPA counts are re-scoped from
customer-wide to order/job via a shared _fp_quality_ncr_ids() helper (NCRs
reached through the order's RMAs + the order/job's holds), so each badge and the
list its button opens always agree. Also aligned the job RMA button's list
domain to its (already SO-scoped) count.

Reverts the Sub-12 Phase D "always-visible (zero is OK)" choice back to the
module's documented hide-at-zero convention.

- fusion_plating_quality 19.0.8.1.0 -> 19.0.8.2.0
- fusion_plating_jobs    19.0.12.4.0 -> 19.0.12.5.0

Deployed + verified on entech (badge == helper across sampled SOs/jobs).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsinghpal
2026-06-04 20:36:54 -04:00
parent 423f288507
commit c9eb61ee0c
8 changed files with 223 additions and 67 deletions

View File

@@ -25,24 +25,31 @@
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="//div[@name='button_box']" position="inside">
<!-- Hidden at a count of 0 so the row shows only quality
work that actually exists on this order (2026-06-04). -->
<button name="action_view_fp_holds" type="object"
class="oe_stat_button" icon="fa-hand-paper-o">
class="oe_stat_button" icon="fa-hand-paper-o"
invisible="fp_qc_hold_count == 0">
<field name="fp_qc_hold_count" widget="statinfo" string="Holds"/>
</button>
<button name="action_view_fp_checks" type="object"
class="oe_stat_button" icon="fa-check-square-o">
class="oe_stat_button" icon="fa-check-square-o"
invisible="fp_qc_check_count == 0">
<field name="fp_qc_check_count" widget="statinfo" string="Checks"/>
</button>
<button name="action_view_fp_ncrs_so" type="object"
class="oe_stat_button" icon="fa-exclamation-triangle">
class="oe_stat_button" icon="fa-exclamation-triangle"
invisible="fp_qc_ncr_count_so == 0">
<field name="fp_qc_ncr_count_so" widget="statinfo" string="NCRs"/>
</button>
<button name="action_view_fp_capas" type="object"
class="oe_stat_button" icon="fa-wrench">
class="oe_stat_button" icon="fa-wrench"
invisible="fp_qc_capa_count == 0">
<field name="fp_qc_capa_count" widget="statinfo" string="CAPAs"/>
</button>
<button name="action_view_fp_rmas" type="object"
class="oe_stat_button" icon="fa-undo">
class="oe_stat_button" icon="fa-undo"
invisible="fp_qc_rma_count == 0">
<field name="fp_qc_rma_count" widget="statinfo" string="RMAs"/>
</button>
</xpath>