← back to Dw Rotation Activator
rotation gate: quote-only ('quotes' tag) lines exempt from no-sellable-variant too (Koroseal/Vahallan sample-only by design)
0b70591a6cdc52d79b3119431b028c4d7188d2b5 · 2026-07-23 12:30:51 -0700 · Steve Abrams
Files touched
Diff
commit 0b70591a6cdc52d79b3119431b028c4d7188d2b5
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Thu Jul 23 12:30:51 2026 -0700
rotation gate: quote-only ('quotes' tag) lines exempt from no-sellable-variant too (Koroseal/Vahallan sample-only by design)
---
rotate-activate.js | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/rotate-activate.js b/rotate-activate.js
index f6ada3a..2ffc247 100644
--- a/rotate-activate.js
+++ b/rotate-activate.js
@@ -215,9 +215,12 @@ function fiveFieldExtra(n) {
const tagCount = (n.tags || []).length;
const reasons = [];
if (!hasSample) reasons.push('no-sample-variant');
- if (!sellable.length) reasons.push('no-sellable-variant');
- // quote-only lines legitimately have NULL roll price (only the $4.25 sample) →
- // exempt from the price>0-on-sellable requirement, consistent with activate-gated.js.
+ // Designated quote-only lines (the `quotes` tag — e.g. Koroseal, Vahallan) legitimately
+ // ship sample-only: the customer requests a per-project quote, so there is NO sellable
+ // (non-sample) variant AND no roll price. Exempt BOTH the sellable-variant and the
+ // price>0 requirements for them (2026-07-23, per memory quote-only-ok-lines /
+ // no-cost-no-sellable-variant). Non-quote lines are unaffected — they still require both.
+ if (!sellable.length && !isQuoteOnly) reasons.push('no-sellable-variant');
if (!hasSellablePriced && !isQuoteOnly) reasons.push('sellable-price-not-gt-0');
if (tagCount < 2) reasons.push('fewer-than-2-tags');
return { ok: reasons.length === 0, reasons };
← 469d6e0 leakGuard: add rigo / rigowall / rigo wallcovering (RIGO PL
·
back to Dw Rotation Activator
·
auto-save: 2026-07-25T12:36:15 (1 files) — cmo-activate.js f8d9655 →