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:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user