Fix price override ignored for catalog items; fix time entry delete UI

- QuotePricingAssemblyService: catalog no-coat items now respect PowderCostOverride instead of always using DefaultPrice
- PricingCalculationService: removed duplicate catalog fast-path in CalculateQuoteTotalsAsync that bypassed CalculateQuoteItemPriceAsync (and thus ignored PowderCostOverride); all items now go through the single authoritative path
- Jobs/Details.cshtml: timeTracking.del() and timeTracking.save() now call costing.load() after success so the time entry row and costing breakdown stay in sync

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-12 20:38:49 -04:00
parent f95397204c
commit 4ca90f561e
3 changed files with 10 additions and 50 deletions
@@ -2978,6 +2978,7 @@
if (!r.ok) { const d = await r.json(); errEl.textContent = d.error ?? 'Save failed.'; errEl.classList.remove('d-none'); return; }
modal.hide();
await load();
costing.load();
showToast(id > 0 ? 'Time entry updated.' : 'Time logged.', 'success');
} catch { errEl.textContent = 'Network error.'; errEl.classList.remove('d-none'); }
}
@@ -2990,7 +2991,7 @@
headers: { 'Content-Type': 'application/json', 'RequestVerificationToken': tok },
body: JSON.stringify({ id })
});
if (r.ok) { await load(); showToast('Time entry deleted.', 'secondary'); }
if (r.ok) { await load(); costing.load(); showToast('Time entry deleted.', 'secondary'); }
}
function esc(s) {