From b5a300f4391f2a724d1b2965db44bac31112f598 Mon Sep 17 00:00:00 2001 From: gsinghpal Date: Thu, 4 Jun 2026 00:21:36 -0400 Subject: [PATCH] feat(fusion_plating_shopfloor): FpSignatureConfirm dialog + asset registration Confirm-with-preview dialog (saved-signature preview + Sign & Finish + Use a different signature). Registered after the signature_pad assets; version bump. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../fusion_plating_shopfloor/__manifest__.py | 6 +++- .../src/js/components/signature_confirm.js | 35 +++++++++++++++++++ .../scss/components/_signature_confirm.scss | 29 +++++++++++++++ .../src/xml/components/signature_confirm.xml | 23 ++++++++++++ 4 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 fusion_plating/fusion_plating_shopfloor/static/src/js/components/signature_confirm.js create mode 100644 fusion_plating/fusion_plating_shopfloor/static/src/scss/components/_signature_confirm.scss create mode 100644 fusion_plating/fusion_plating_shopfloor/static/src/xml/components/signature_confirm.xml diff --git a/fusion_plating/fusion_plating_shopfloor/__manifest__.py b/fusion_plating/fusion_plating_shopfloor/__manifest__.py index 16156dc9..05633871 100644 --- a/fusion_plating/fusion_plating_shopfloor/__manifest__.py +++ b/fusion_plating/fusion_plating_shopfloor/__manifest__.py @@ -5,7 +5,7 @@ { 'name': 'Fusion Plating — Shop Floor', - 'version': '19.0.37.1.0', + 'version': '19.0.37.2.0', 'category': 'Manufacturing/Plating', 'summary': 'Shop-floor tablet stations, QR scanning, bake window enforcer.', 'description': """ @@ -79,6 +79,10 @@ Copyright (c) 2026 Nexa Systems Inc. All rights reserved. 'fusion_plating_shopfloor/static/src/scss/components/_signature_pad.scss', 'fusion_plating_shopfloor/static/src/xml/components/signature_pad.xml', 'fusion_plating_shopfloor/static/src/js/components/signature_pad.js', + # Confirm-with-preview dialog (reuse saved Plating Signature on sign-off) + 'fusion_plating_shopfloor/static/src/scss/components/_signature_confirm.scss', + 'fusion_plating_shopfloor/static/src/xml/components/signature_confirm.xml', + 'fusion_plating_shopfloor/static/src/js/components/signature_confirm.js', 'fusion_plating_shopfloor/static/src/scss/components/_hold_composer.scss', 'fusion_plating_shopfloor/static/src/xml/components/hold_composer.xml', 'fusion_plating_shopfloor/static/src/js/components/hold_composer.js', diff --git a/fusion_plating/fusion_plating_shopfloor/static/src/js/components/signature_confirm.js b/fusion_plating/fusion_plating_shopfloor/static/src/js/components/signature_confirm.js new file mode 100644 index 00000000..cb88431f --- /dev/null +++ b/fusion_plating/fusion_plating_shopfloor/static/src/js/components/signature_confirm.js @@ -0,0 +1,35 @@ +/** @odoo-module **/ +// ============================================================================= +// Fusion Plating — SignatureConfirm +// +// Confirm dialog shown when the operator already has a saved Plating +// Signature: previews it + "Sign & Finish" (props.onConfirm) or "Use a +// different signature" (props.onRedraw, opens the draw-pad). No drawing here. +// ============================================================================= +import { Component } from "@odoo/owl"; +import { Dialog } from "@web/core/dialog/dialog"; + +export class FpSignatureConfirm extends Component { + static template = "fusion_plating_shopfloor.SignatureConfirm"; + static components = { Dialog }; + static props = { + close: Function, // dialog service injects + title: { type: String, optional: true }, + contextLabel: { type: String, optional: true }, + signatureUrl: { type: String }, // data: URI of saved sig + onConfirm: { type: Function }, // () => commit (no drawing) + onRedraw: { type: Function }, // () => open draw-pad + }; + + onConfirm() { + this.props.onConfirm(); + this.props.close(); + } + onRedraw() { + this.props.onRedraw(); + this.props.close(); + } + onCancel() { + this.props.close(); + } +} diff --git a/fusion_plating/fusion_plating_shopfloor/static/src/scss/components/_signature_confirm.scss b/fusion_plating/fusion_plating_shopfloor/static/src/scss/components/_signature_confirm.scss new file mode 100644 index 00000000..9ade418c --- /dev/null +++ b/fusion_plating/fusion_plating_shopfloor/static/src/scss/components/_signature_confirm.scss @@ -0,0 +1,29 @@ +// Confirm-with-preview dialog for shop-floor sign-off. Explicit hex per the +// project card-styling rule (don't rely on var(--bs-border-color)). +.o_fp_sig_confirm { + .o_fp_sig_ctx { + font-size: 0.85rem; + color: #555; + margin-bottom: 8px; + } + .o_fp_sig_preview { + display: flex; + justify-content: center; + align-items: center; + min-height: 120px; + padding: 8px; + background-color: #ffffff; + border: 1px solid #d8dadd; + border-radius: 4px; + img { + max-width: 100%; + max-height: 160px; + } + } + .o_fp_sig_hint { + text-align: center; + margin-top: 6px; + font-size: 0.85rem; + color: #555; + } +} diff --git a/fusion_plating/fusion_plating_shopfloor/static/src/xml/components/signature_confirm.xml b/fusion_plating/fusion_plating_shopfloor/static/src/xml/components/signature_confirm.xml new file mode 100644 index 00000000..ebf06add --- /dev/null +++ b/fusion_plating/fusion_plating_shopfloor/static/src/xml/components/signature_confirm.xml @@ -0,0 +1,23 @@ + + + + + +
+
+ +
+
+ Your saved signature +
+
Your saved Plating Signature will be applied.
+
+ + + + + +
+
+ +