[object Object]

← back to Designer Wallcoverings

fix #3: material-SKU scheme downstream — VENDOR_RANGES entries for GRS/PWV/RAF/etc + isDwFamilySku() so GRS- naturals aren't misclassified as mfr SKUs by !startsWith('DW') filters

f1d58be7c25d7924bed2af858cc9859718c99ba5 · 2026-07-06 16:26:07 -0700 · Steve

Files touched

Diff

commit f1d58be7c25d7924bed2af858cc9859718c99ba5
Author: Steve <steve@designerwallcoverings.com>
Date:   Mon Jul 6 16:26:07 2026 -0700

    fix #3: material-SKU scheme downstream — VENDOR_RANGES entries for GRS/PWV/RAF/etc + isDwFamilySku() so GRS- naturals aren't misclassified as mfr SKUs by !startsWith('DW') filters
---
 DW-Programming/fix-phillipe-romano-vendors.js | 7 +++++--
 scripts/populate-mfr-sku-metafield.js         | 6 ++++--
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/DW-Programming/fix-phillipe-romano-vendors.js b/DW-Programming/fix-phillipe-romano-vendors.js
index a81ec231..b33a5547 100644
--- a/DW-Programming/fix-phillipe-romano-vendors.js
+++ b/DW-Programming/fix-phillipe-romano-vendors.js
@@ -126,8 +126,11 @@ async function fetchAllProducts(vendor) {
       const variantData = p.variants.edges.map(v => v.node);
       const barcodes = variantData.map(v => v.barcode).filter(Boolean);
       const skus = variantData.map(v => v.sku).filter(Boolean);
-      // Extract mfr_sku-like values: non-DW SKUs, non-Sample SKUs
-      const mfrSkus = skus.filter(s => !s.startsWith('DW') && !s.endsWith('-Sample'));
+      // Extract mfr_sku-like values: non-DW-family SKUs, non-Sample SKUs.
+      // DW-family = DW+2-letter OR material-prefixed naturals (GRS-/PWV-/RAF-/etc, Steve 2026-07-06)
+      // so those Phillipe Romano SKUs are NOT misclassified as manufacturer SKUs.
+      const isDwFamily = s => s.startsWith('DW') || /^(GRS|PWV|RAF|SIS|LIN|CORK|ABA|MIC|JUT|BAM|NET)-\d/i.test(s);
+      const mfrSkus = skus.filter(s => !isDwFamily(s) && !s.endsWith('-Sample'));
 
       products.push({
         id: p.id,
diff --git a/scripts/populate-mfr-sku-metafield.js b/scripts/populate-mfr-sku-metafield.js
index e31b46ad..5cb5b3bb 100644
--- a/scripts/populate-mfr-sku-metafield.js
+++ b/scripts/populate-mfr-sku-metafield.js
@@ -163,8 +163,10 @@ function determineMfrSku(product) {
   const fromTags = extractMfrSkuFromTags(tags, vendor);
   if (fromTags) return { source: 'tags', value: fromTags };
 
-  // 2. Try variant SKU (if it looks like MFR SKU, not DW SKU)
-  if (variantSku && !variantSku.startsWith('DW') && variantSku.length >= 5) {
+  // 2. Try variant SKU (if it looks like MFR SKU, not a DW-family SKU).
+  // DW-family = DW+2-letter OR material-prefixed naturals (GRS-/PWV-/etc, Steve 2026-07-06).
+  const isDwFamily = s => s.startsWith('DW') || /^(GRS|PWV|RAF|SIS|LIN|CORK|ABA|MIC|JUT|BAM|NET)-\d/i.test(s);
+  if (variantSku && !isDwFamily(variantSku) && variantSku.length >= 5) {
     // Check if it matches MFR patterns
     for (const pattern of MFR_SKU_PATTERNS) {
       if (pattern.test(variantSku)) {

← 6478f4b1 chore: v1.1.6 (session close — Daisy Bennett onboard + contr  ·  back to Designer Wallcoverings  ·  Strip raw Lillian August color codes from 13 draft LN patter b0437400 →