Merged in bugfix/IO-3533 (pull request #2948)

bugfix/IO-3533 - Fix
This commit is contained in:
Dave Richer
2026-02-02 22:05:56 +00:00

View File

@@ -90,6 +90,7 @@ export function BillEnterModalLinesComponent({
}); });
}; };
// Only fill actual_cost when the user forward-tabs out of Retail (actual_price)
const autofillActualCost = (index) => { const autofillActualCost = (index) => {
Promise.resolve().then(() => { Promise.resolve().then(() => {
const retailRaw = form.getFieldValue(["billlines", index, "actual_price"]); const retailRaw = form.getFieldValue(["billlines", index, "actual_price"]);
@@ -164,10 +165,9 @@ export function BillEnterModalLinesComponent({
}} }}
allowRemoved={form.getFieldValue("is_credit_memo") || false} allowRemoved={form.getFieldValue("is_credit_memo") || false}
onSelect={(value, opt) => { onSelect={(value, opt) => {
const d = normalizeDiscount(discount); // IMPORTANT:
const retail = Number(opt.cost); // Do NOT autofill actual_cost here. It should only fill when the user forward-tabs
const computedActual = Number.isFinite(retail) ? round2(retail * (1 - d)) : null; // from Retail (actual_price) -> Actual Cost (actual_cost).
setFieldsValue({ setFieldsValue({
billlines: (getFieldValue("billlines") || []).map((item, idx) => { billlines: (getFieldValue("billlines") || []).map((item, idx) => {
if (idx !== index) return item; if (idx !== index) return item;
@@ -178,7 +178,7 @@ export function BillEnterModalLinesComponent({
quantity: opt.part_qty || 1, quantity: opt.part_qty || 1,
actual_price: opt.cost, actual_price: opt.cost,
original_actual_price: opt.cost, original_actual_price: opt.cost,
actual_cost: isBlank(item.actual_cost) ? computedActual : item.actual_cost, // actual_cost intentionally untouched here
cost_center: opt.part_type cost_center: opt.part_type
? bodyshopHasDmsKey(bodyshop) ? bodyshopHasDmsKey(bodyshop)
? opt.part_type !== "PAE" ? opt.part_type !== "PAE"
@@ -251,10 +251,9 @@ export function BillEnterModalLinesComponent({
<CurrencyInput <CurrencyInput
min={0} min={0}
disabled={disabled} disabled={disabled}
// TODO: Removed at customers request // NOTE: Autofill should only happen on forward Tab out of Retail
// onBlur={() => autofillActualCost(index)}
onKeyDown={(e) => { onKeyDown={(e) => {
if (e.key === "Tab") autofillActualCost(index); if (e.key === "Tab" && !e.shiftKey) autofillActualCost(index);
}} }}
/> />
), ),
@@ -330,10 +329,7 @@ export function BillEnterModalLinesComponent({
disabled={disabled} disabled={disabled}
controls={false} controls={false}
style={{ width: "100%", height: CONTROL_HEIGHT }} style={{ width: "100%", height: CONTROL_HEIGHT }}
// TODO: Removed at customers request // NOTE: No auto-fill on focus/blur; only triggered from Retail on Tab
// NOTE: onFocus autofill behavior disabled per user request (revert to tab-only behavior)
// This can be re-enabled as a user preference in the future
// onFocus={() => autofillActualCost(index)}
/> />
</Form.Item> </Form.Item>
</div> </div>