+
+
+
+
@@ -1491,10 +1493,8 @@ function onSandblastOnlyToggle() {
wz.data.sandblastOnly = checked;
if (checked) {
wz.data.coats = [];
- // AI price was estimated with coating in mind — clear it so pricing recalculates from prep labor
- if (wz.itemType === 'ai') {
- wz.data.manualUnitPrice = null;
- }
+ // Keep manualUnitPrice — if the AI returned a price, preserve it as the sandblast price.
+ // The user can adjust it; clearing it causes a $0 quote when prep services aren't configured.
}
renderStep(3);
}
@@ -2309,9 +2309,10 @@ function preFillStep2() {
function buildItemFromWizard() {
const d = wz.data;
const isSandblastOnly = !!d.sandblastOnly;
- // Sandblast-only AI items lose the AI pricing flag — the AI price included coating costs
- // that no longer apply, so the server prices from prep labor instead.
- const isAi = wz.itemType === 'ai' && !isSandblastOnly;
+ // AI flag is preserved even for sandblast-only so the server uses the AI price (manualUnitPrice).
+ // Without this, sandblast-only AI items fall through to the pricing engine and return $0 when
+ // no prep services with minutes are configured.
+ const isAi = wz.itemType === 'ai';
return {
description: d.description || null,
quantity: d.quantity || 1,