This commit is contained in:
gsinghpal
2026-05-25 08:17:29 -04:00
parent 5d5964a327
commit 80887d6098
19 changed files with 117 additions and 558 deletions

View File

@@ -239,16 +239,8 @@ export class ShopfloorTablet extends Component {
await this.refresh();
}
async onGateResult(gateId, result) {
try {
await rpc("/fp/shopfloor/mark_gate", { gate_id: gateId, result });
this.setMessage(`First-piece marked ${result.toUpperCase()}.`,
result === "pass" ? "success" : "danger");
} catch (err) {
this.setMessage(`Gate update failed: ${err.message || err}`, "danger");
}
await this.refresh();
}
// onGateResult / /fp/shopfloor/mark_gate retired with the
// fp.first.piece.gate model removal (19.0.33.2.0).
async onQueueItemClick(row) {
if (row.source_model && row.source_id) {

View File

@@ -31,7 +31,7 @@
<!-- KPI strip -->
<div t-if="state.data" class="kpi-strip">
<FpKpiTile value="state.data.kpis.active_jobs"
label="'Active Jobs'"
label="'Work Orders'"
kind="'good'"
active="!!state.filters.all"
onClick="() => this.toggleFilter('all')"/>

View File

@@ -342,53 +342,9 @@
</ul>
</section>
<section class="o_fp_panel">
<div class="o_fp_panel_head">
<h3><i class="fa fa-flag-checkered"/>First-Piece Gates</h3>
<span class="o_fp_panel_count"><t t-esc="state.overview.gates.length"/></span>
</div>
<div t-if="!state.overview.gates.length" class="o_fp_empty">
<i class="fa fa-flag-checkered"/>
<div>No pending first-piece inspections.</div>
</div>
<ul class="o_fp_bake_list" t-if="state.overview.gates.length">
<t t-foreach="state.overview.gates" t-as="g" t-key="g.id">
<li class="o_fp_bake_row" t-att-data-state="g.result">
<div class="o_fp_bake_main">
<div class="o_fp_bake_name">
<t t-esc="g.name"/>
<span class="text-muted ms-1"><t t-esc="g.part_ref"/></span>
</div>
<div class="o_fp_bake_meta">
<t t-esc="g.customer"/>
<t t-if="g.bath"> · Bath <t t-esc="g.bath"/></t>
</div>
</div>
<div class="o_fp_bake_time">
<span t-att-class="'o_fp_chip o_fp_chip_' + stateBadge(g.result)">
<t t-esc="g.result"/>
</span>
</div>
<div class="o_fp_bake_actions">
<button t-if="g.result === 'pending'"
class="btn btn-success"
t-on-click="() => this.onGateResult(g.id, 'pass')">
Pass
</button>
<button t-if="g.result === 'pending'"
class="btn btn-danger"
t-on-click="() => this.onGateResult(g.id, 'fail')">
Fail
</button>
<button class="btn btn-light"
t-on-click="() => this.openRecord('fusion.plating.first.piece.gate', g.id)">
Open
</button>
</div>
</li>
</t>
</ul>
</section>
<!-- First-piece gate panel retired with the fp.first.piece.gate
model removal (19.0.33.2.0). The feature was never wired
up — manual create, no enforcement, no rows in production. -->
<!-- ===== Pending QC banner (S19 follow-up) ===== -->
<!-- Shows whenever Carlos's job has an open QC. Tap -->