Compare commits

..

9 Commits

Author SHA1 Message Date
Dave
217a0b84ac bugfix/IO-3533 - Fix 2026-02-02 17:04:06 -05:00
Dave
45e143578c bugfix/IO-3533 - Disable on blurr and on focus handlers in bill entry modal 2026-02-02 12:34:54 -05:00
Allan Carr
849d967b56 Merged in hotfix/2026-01-30 (pull request #2931)
IO-3529 Fix for Parts Return
2026-02-01 01:49:08 +00:00
Allan Carr
519d7e8d87 Merged in feature/IO-3529-DMS-Make-Code (pull request #2932)
IO-3529 CM Recieved Fix
2026-02-01 01:41:46 +00:00
Allan Carr
6c814c7dc6 Merged in feature/IO-3529-DMS-Make-Code (pull request #2929)
IO-3529 Fix for Parts Return
2026-02-01 00:57:43 +00:00
Allan Carr
cc9e536059 Merged in hotfix/2026-01-30 (pull request #2928)
IO-3529 Job Lines on Closing add IDs
2026-01-31 19:37:46 +00:00
Allan Carr
b05e20ce0d Merged in feature/IO-3529-DMS-Make-Code (pull request #2926)
IO-3529 Job Lines on Closing add IDs
2026-01-31 19:30:29 +00:00
Allan Carr
eb36b12cb0 Merged in hotfix/2026-01-30 (pull request #2925)
IO-3529 DMS Make Code
2026-01-31 06:46:32 +00:00
Allan Carr
ff3d24c623 Merged in feature/IO-3529-DMS-Make-Code (pull request #2923)
IO-3529 DMS Make Code
2026-01-31 06:38:26 +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) => {
Promise.resolve().then(() => {
const retailRaw = form.getFieldValue(["billlines", index, "actual_price"]);
@@ -164,10 +165,9 @@ export function BillEnterModalLinesComponent({
}}
allowRemoved={form.getFieldValue("is_credit_memo") || false}
onSelect={(value, opt) => {
const d = normalizeDiscount(discount);
const retail = Number(opt.cost);
const computedActual = Number.isFinite(retail) ? round2(retail * (1 - d)) : null;
// IMPORTANT:
// Do NOT autofill actual_cost here. It should only fill when the user forward-tabs
// from Retail (actual_price) -> Actual Cost (actual_cost).
setFieldsValue({
billlines: (getFieldValue("billlines") || []).map((item, idx) => {
if (idx !== index) return item;
@@ -178,7 +178,7 @@ export function BillEnterModalLinesComponent({
quantity: opt.part_qty || 1,
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
? bodyshopHasDmsKey(bodyshop)
? opt.part_type !== "PAE"
@@ -251,9 +251,9 @@ export function BillEnterModalLinesComponent({
<CurrencyInput
min={0}
disabled={disabled}
onBlur={() => autofillActualCost(index)}
// NOTE: Autofill should only happen on forward Tab out of Retail
onKeyDown={(e) => {
if (e.key === "Tab") autofillActualCost(index);
if (e.key === "Tab" && !e.shiftKey) autofillActualCost(index);
}}
/>
),
@@ -329,7 +329,7 @@ export function BillEnterModalLinesComponent({
disabled={disabled}
controls={false}
style={{ width: "100%", height: CONTROL_HEIGHT }}
onFocus={() => autofillActualCost(index)}
// NOTE: No auto-fill on focus/blur; only triggered from Retail on Tab
/>
</Form.Item>
</div>