diff --git a/fusion_plating/fusion_plating_jobs/__manifest__.py b/fusion_plating/fusion_plating_jobs/__manifest__.py index ca65b4d5..b975dd14 100644 --- a/fusion_plating/fusion_plating_jobs/__manifest__.py +++ b/fusion_plating/fusion_plating_jobs/__manifest__.py @@ -3,7 +3,7 @@ # License OPL-1 (Odoo Proprietary License v1.0) { 'name': 'Fusion Plating — Native Jobs', - 'version': '19.0.10.16.0', + 'version': '19.0.10.16.1', 'category': 'Manufacturing/Plating', 'summary': 'Native plating job model — replaces mrp.production / mrp.workorder bridge.', 'author': 'Nexa Systems Inc.', @@ -87,6 +87,7 @@ full design rationale and §6.2 of the implementation plan for task list. 'fusion_plating_jobs/static/src/scss/fp_step_quick_look.scss', 'fusion_plating_jobs/static/src/scss/fp_record_inputs_dialog.scss', 'fusion_plating_jobs/static/src/scss/fp_finish_btn.scss', + 'fusion_plating_jobs/static/src/scss/fp_cert_issue_wizard.scss', 'fusion_plating_jobs/static/src/js/fp_record_inputs_dialog.js', 'fusion_plating_jobs/static/src/xml/fp_record_inputs_dialog.xml', ], @@ -94,6 +95,7 @@ full design rationale and §6.2 of the implementation plan for task list. 'fusion_plating_jobs/static/src/scss/fp_step_quick_look.scss', 'fusion_plating_jobs/static/src/scss/fp_record_inputs_dialog.scss', 'fusion_plating_jobs/static/src/scss/fp_finish_btn.scss', + 'fusion_plating_jobs/static/src/scss/fp_cert_issue_wizard.scss', 'fusion_plating_jobs/static/src/js/fp_record_inputs_dialog.js', 'fusion_plating_jobs/static/src/xml/fp_record_inputs_dialog.xml', ], diff --git a/fusion_plating/fusion_plating_jobs/static/src/scss/fp_cert_issue_wizard.scss b/fusion_plating/fusion_plating_jobs/static/src/scss/fp_cert_issue_wizard.scss new file mode 100644 index 00000000..6c01f412 --- /dev/null +++ b/fusion_plating/fusion_plating_jobs/static/src/scss/fp_cert_issue_wizard.scss @@ -0,0 +1,56 @@ +// ============================================================= +// Fusion Plating — Issue Certs wizard styling +// ============================================================= +// +// 2026-05-20: force the Fischerscope binary-field upload button to +// be visible in display mode (not just when the row is being edited). +// Odoo's default `widget="binary"` only shows "↑ Upload your file" +// when the row is in edit mode — operators couldn't see what to +// click in the wizard list and reported it as a missing affordance. +// +// Targets ONLY the fischer_file column in this wizard so it doesn't +// affect binary fields elsewhere in the system. + +.o_form_view { + .o_field_one2many[name="line_ids"] { + // List renderer — affect every binary cell that backs + // fischer_file. We can't always target by name attribute + // (Odoo 19 doesn't put `name=` on the ), so use the + // child field widget binding. + .o_list_renderer .o_data_cell { + .o_field_widget.o_field_binary { + // Always show the upload button, even on rows that + // aren't currently being edited. The default theme + // hides it on non-selected rows. + .o_select_file_button { + display: inline-flex !important; + align-items: center; + gap: .25rem; + color: var(--primary, #5d83a4); + text-decoration: underline dotted; + background: transparent; + border: 0; + padding: .15rem .35rem; + cursor: pointer; + font-size: .85rem; + // Add an upward-arrow + label so it reads as an + // action even if Odoo's stock label text changes. + &::before { + content: "\f093"; // fa-upload (FontAwesome 4) + font-family: "FontAwesome"; + margin-right: .25rem; + } + &:hover { + color: var(--primary-hover, #4a6f8e); + background: rgba(93, 131, 164, .08); + } + } + // Empty cell shouldn't collapse to 0 height — give it + // a clickable target area. + min-height: 28px; + display: flex; + align-items: center; + } + } + } +}