[object Object]

← back to All Designerwallcoverings

Kravet dash→dot W-code match: Shopify stores wallcovering codes dash-form (W3909-50), price file dot-form (W3909.50.0) — add the conversion to kravet-db candidateKeys + coverage counter. Kravet resolvable 840→2250 (32%→86%), ~1,410 more SKUs priced $0

1e3c12ac29107f071a459b19a4e02cda9c347809 · 2026-07-16 16:36:07 -0700 · Steve Abrams

Files touched

Diff

commit 1e3c12ac29107f071a459b19a4e02cda9c347809
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Thu Jul 16 16:36:07 2026 -0700

    Kravet dash→dot W-code match: Shopify stores wallcovering codes dash-form (W3909-50), price file dot-form (W3909.50.0) — add the conversion to kravet-db candidateKeys + coverage counter. Kravet resolvable 840→2250 (32%→86%), ~1,410 more SKUs priced $0
---
 scripts/adapters/kravet-db.js | 4 ++++
 scripts/build-coverage.js     | 5 ++++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/scripts/adapters/kravet-db.js b/scripts/adapters/kravet-db.js
index 79fbcca..82f008a 100644
--- a/scripts/adapters/kravet-db.js
+++ b/scripts/adapters/kravet-db.js
@@ -23,6 +23,10 @@ function candidateKeys(raw) {
   keys.add(s);
   // ±trailing ".0" — shopify rows usually carry it, but tolerate either side missing it.
   if (s.endsWith('.0')) keys.add(s.slice(0, -2)); else keys.add(s + '.0');
+  // DASH→DOT: Kravet WALLCOVERING codes are stored dash-form in Shopify ("W3909-50") but the
+  // price file carries them dot-form with a ".0" tail ("W3909.50.0"). Without this, ~1,247 of
+  // the ~1,382 unmatched Kravet actives (the whole wallcovering line) silently miss the file.
+  if (s.includes('-')) { const dot = s.replace(/-/g, '.'); keys.add(dot); keys.add(dot + '.0'); }
   // leading pattern code (mirrors resolve.js's compound-SKU extraction — dash AND dot shapes).
   const lead = s.match(/^[A-Z]*[0-9]+[-.][0-9A-Z]+/);
   if (lead && lead[0] !== s) { keys.add(lead[0]); keys.add(lead[0] + '.0'); }
diff --git a/scripts/build-coverage.js b/scripts/build-coverage.js
index 23711eb..4808067 100644
--- a/scripts/build-coverage.js
+++ b/scripts/build-coverage.js
@@ -403,7 +403,10 @@ async function main() {
                    SELECT 1 FROM kravet_authoritative_pricing k
                     WHERE upper(k.mfr_sku)=upper(${mfr})
                        OR upper(k.mfr_sku)=upper(${mfr})||'.0'
-                       OR upper(k.mfr_sku)||'.0'=upper(${mfr})))::int AS resolvable
+                       OR upper(k.mfr_sku)||'.0'=upper(${mfr})
+                       -- dash→dot: Shopify "W3909-50" ↔ price-file "W3909.50.0" (wallcovering codes)
+                       OR (position('-' in upper(${mfr}))>0
+                           AND upper(k.mfr_sku)=replace(upper(${mfr}),'-','.')||'.0')))::int AS resolvable
            FROM shopify_products s ${join} WHERE s.vendor = $1`, [vendor]);
       return rows[0];
     } catch { return { active: 0, resolvable: 0 }; }

← fc6f2ba all-dw: add schumacher to BANNED regex (internal-only vendor  ·  back to All Designerwallcoverings  ·  auto-save: 2026-07-16T16:43:46 (1 files) — data/live-stock-c c3f43e4 →