fix(plating): rename opt_in_out labels — 'Required' replaces 'Disabled'
User feedback: "Disabled" was confusing; it looked like the step
was turned off entirely when in fact the semantic meant "every job
runs this, cannot be removed". Aligning labels with Steelhead's
own terminology and the mental model the shop floor already uses:
Python Selection values (unchanged: disabled / opt_out / opt_in)
disabled → "Required"
opt_out → "Opt-Out (included by default, can be removed per job)"
opt_in → "Opt-In (excluded by default, can be added per job)"
Tree-editor side panel inline labels match, plus a short helper
line under the dropdown:
"Required — every job runs this step.
Opt-Out — ships included, estimator can remove per job.
Opt-In — ships excluded, estimator can add per job."
Field string also flipped from "Opt In/Out" to "Step Usage" — the
new header reads closer to what the field actually controls.
Column order also flipped so the Opt-Out option appears above
Opt-In — matches the frequency in real recipes (most optional
steps are included by default and sometimes skipped, not the other
way around).
fusion_plating → 19.0.7.4.0
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
|
||||
{
|
||||
'name': 'Fusion Plating',
|
||||
'version': '19.0.7.3.0',
|
||||
'version': '19.0.7.4.0',
|
||||
'category': 'Manufacturing/Plating',
|
||||
'summary': 'Core plating / metal finishing ERP: facilities, processes, tanks, baths, jobs, operators.',
|
||||
'description': """
|
||||
|
||||
@@ -172,13 +172,19 @@ class FpProcessNode(models.Model):
|
||||
)
|
||||
opt_in_out = fields.Selection(
|
||||
[
|
||||
('disabled', 'Always Included'),
|
||||
('opt_out', 'Included by Default'),
|
||||
('opt_in', 'Excluded by Default'),
|
||||
('disabled', 'Required'),
|
||||
('opt_out', 'Opt-Out (included by default, can be removed per job)'),
|
||||
('opt_in', 'Opt-In (excluded by default, can be added per job)'),
|
||||
],
|
||||
string='Opt In/Out',
|
||||
string='Step Usage',
|
||||
default='disabled',
|
||||
help='Controls whether this step is optional for a given job.',
|
||||
help='Controls whether this step can be skipped or added on a '
|
||||
'per-job basis:\n'
|
||||
' * Required — every job runs this step. Cannot be removed.\n'
|
||||
' * Opt-Out — included by default; an estimator can remove '
|
||||
'it per job when the customer doesn\'t need it.\n'
|
||||
' * Opt-In — excluded by default; an estimator can add it '
|
||||
'per job when the customer specifically asks for it.',
|
||||
tracking=True,
|
||||
)
|
||||
|
||||
|
||||
@@ -353,16 +353,21 @@
|
||||
</div>
|
||||
|
||||
<div class="o_fp_re_field">
|
||||
<label>Opt In/Out</label>
|
||||
<label>Step Usage</label>
|
||||
<select class="form-select"
|
||||
t-on-change="(ev) => { state.selectedNode.opt_in_out = ev.target.value; }">
|
||||
<option value="disabled"
|
||||
t-att-selected="state.selectedNode.opt_in_out === 'disabled'">Disabled</option>
|
||||
<option value="opt_in"
|
||||
t-att-selected="state.selectedNode.opt_in_out === 'opt_in'">Opt-In</option>
|
||||
t-att-selected="state.selectedNode.opt_in_out === 'disabled'">Required</option>
|
||||
<option value="opt_out"
|
||||
t-att-selected="state.selectedNode.opt_in_out === 'opt_out'">Opt-Out</option>
|
||||
t-att-selected="state.selectedNode.opt_in_out === 'opt_out'">Opt-Out (included by default)</option>
|
||||
<option value="opt_in"
|
||||
t-att-selected="state.selectedNode.opt_in_out === 'opt_in'">Opt-In (excluded by default)</option>
|
||||
</select>
|
||||
<small class="text-muted d-block mt-1">
|
||||
<strong>Required</strong> — every job runs this step.
|
||||
<strong>Opt-Out</strong> — ships included, estimator can remove per job.
|
||||
<strong>Opt-In</strong> — ships excluded, estimator can add per job.
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<div class="o_fp_re_tracking" t-if="state.selectedNode.create_date">
|
||||
|
||||
Reference in New Issue
Block a user