← back to Dw Unbuyable Recovery Pilot
TK-10978 Scalamandre add-roll: plan builder (144 clean, 6 conflicts excluded) + repair + rollback tooling, dry-run pilot clean
039b0702bb8979aee06f956c8a125ba411686a37 · 2026-08-30 18:04:06 -0700 · Steve Abrams
Files touched
A tk10978-scalamandre/build-plan.mjsA tk10978-scalamandre/data/excluded.jsonA tk10978-scalamandre/data/plan.jsonA tk10978-scalamandre/data/skips.jsonA tk10978-scalamandre/repair.mjsA tk10978-scalamandre/rollback-all.mjs
Diff
commit 039b0702bb8979aee06f956c8a125ba411686a37
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Sun Aug 30 18:04:06 2026 -0700
TK-10978 Scalamandre add-roll: plan builder (144 clean, 6 conflicts excluded) + repair + rollback tooling, dry-run pilot clean
---
tk10978-scalamandre/build-plan.mjs | 137 ++
tk10978-scalamandre/data/excluded.json | 92 ++
tk10978-scalamandre/data/plan.json | 2607 ++++++++++++++++++++++++++++++++
tk10978-scalamandre/data/skips.json | 1 +
tk10978-scalamandre/repair.mjs | 121 ++
tk10978-scalamandre/rollback-all.mjs | 27 +
6 files changed, 2985 insertions(+)
diff --git a/tk10978-scalamandre/build-plan.mjs b/tk10978-scalamandre/build-plan.mjs
new file mode 100644
index 0000000..0e7784d
--- /dev/null
+++ b/tk10978-scalamandre/build-plan.mjs
@@ -0,0 +1,137 @@
+#!/usr/bin/env node
+// TK-10978 — Scalamandre ADD-ROLL recovery plan builder (READ-ONLY).
+//
+// Reads data/scalamandre-exact-recovery.csv (156 rows). Builds a CLEAN,
+// deduped, match-sanity-annotated plan of products to ADD a "Sold Per Roll"
+// variant to. Recomputes roll retail LIVE from scalamandre_catalog by
+// catalog_dw_sku (never trusts the CSV/mirror number).
+//
+// HARD EXCLUSIONS (skip, never price):
+// - price-conflict products: any shopify_num_id that appears on >1 CSV row
+// (the CSV carries 2 candidate catalog matches at different prices for 6
+// products → cost is ambiguous). These 6 (12 rows) are dropped.
+// - a row whose catalog_dw_sku is blank.
+// - a catalog_dw_sku not found in scalamandre_catalog with price_trade>0.
+//
+// MATCH SANITY: carries the live-title pattern/color AND the catalog
+// pattern_name/color_name so the executor (and this builder) can confirm the
+// content match is real before pricing. Builder flags mismatches.
+//
+// Output: data/plan.json (clean actionable set) + data/excluded.json.
+// This script performs NO Shopify or DB writes.
+import { readFileSync, writeFileSync } from 'node:fs';
+import { queryRows } from '../lib/db.mjs';
+
+const HERE = new URL('.', import.meta.url).pathname;
+const CSV = `${HERE}../data/scalamandre-exact-recovery.csv`;
+
+// --- parse CSV (simple, fields have no embedded commas in the id/sku/dwsku cols) ---
+const lines = readFileSync(CSV, 'utf8').trim().split('\n');
+const header = lines[0].split(',');
+const rows = lines.slice(1).map(line => {
+ // title can't contain a comma in this data (verified: " - Color | Scalamandre"), so a plain split is safe.
+ const parts = line.split(',');
+ // header: shopify_num_id,shopify_sku,title,catalog_dw_sku,price_trade,computed_roll_retail
+ return {
+ shopify_num_id: parts[0],
+ shopify_sku: parts[1],
+ title: parts[2],
+ catalog_dw_sku: parts[3],
+ price_trade_csv: parts[4],
+ computed_roll_retail_csv: parts[5],
+ };
+});
+
+// --- identify price-conflict products (id appears on >1 row) ---
+const byId = new Map();
+for (const r of rows) { byId.set(r.shopify_num_id, (byId.get(r.shopify_num_id) || 0) + 1); }
+const conflictIds = new Set([...byId.entries()].filter(([, n]) => n > 1).map(([id]) => id));
+
+// --- normalize helpers for match sanity ---
+const norm = s => (s || '').toUpperCase().replace(/[^A-Z0-9 ]/g, ' ').replace(/\s+/g, ' ').trim();
+// live title -> pattern (before first ' - ') + color (last segment before ' | ')
+function parseTitle(title) {
+ const beforePipe = title.split('|')[0].trim(); // "Adelaide Beaded Sisal - Burnished Gold"
+ const segs = beforePipe.split(' - ').map(s => s.trim());
+ const color = segs[segs.length - 1];
+ const pattern = segs.slice(0, -1).join(' - '); // handles "Abyssal - Mural"
+ return { pattern, color };
+}
+
+const excluded = [];
+const candidateRows = rows.filter(r => {
+ if (conflictIds.has(r.shopify_num_id)) { return false; } // handled below in bulk
+ if (!r.catalog_dw_sku || r.catalog_dw_sku.trim() === '') {
+ excluded.push({ ...r, reason: 'blank catalog_dw_sku' }); return false;
+ }
+ return true;
+});
+// record the conflict exclusions once per id
+for (const id of conflictIds) {
+ const rs = rows.filter(r => r.shopify_num_id === id);
+ excluded.push({ shopify_num_id: id, title: rs[0].title, reason: 'price-conflict (multiple candidate catalog matches at different prices)',
+ candidates: rs.map(r => ({ catalog_dw_sku: r.catalog_dw_sku || '(blank)', price_trade: r.price_trade_csv })) });
+}
+
+// --- pull LIVE catalog truth for the candidate DWSC skus ---
+const dwscList = [...new Set(candidateRows.map(r => r.catalog_dw_sku))];
+const inClause = dwscList.map(s => `'${s.replace(/'/g, "''")}'`).join(',');
+const catRows = queryRows(`
+ SELECT dw_sku, pattern_name, color_name, price_trade,
+ round(price_trade/0.65/0.85, 2) AS roll_retail
+ FROM scalamandre_catalog
+ WHERE dw_sku IN (${inClause}) AND price_trade > 0`);
+const catBy = new Map(catRows.map(c => [c.dw_sku, c]));
+
+const plan = [];
+for (const r of candidateRows) {
+ const cat = catBy.get(r.catalog_dw_sku);
+ if (!cat) { excluded.push({ ...r, reason: 'catalog_dw_sku not found with price_trade>0' }); continue; }
+
+ const rollSku = r.shopify_sku.replace(/-Sample$/i, ''); // DWA-89268-Sample -> DWA-89268
+ const { pattern: tPat, color: tColor } = parseTitle(r.title);
+ const patMatch = norm(cat.pattern_name).includes(norm(tPat)) || norm(tPat).includes(norm(cat.pattern_name));
+ const colMatch = norm(cat.color_name) === norm(tColor) || norm(cat.color_name).includes(norm(tColor)) || norm(tColor).includes(norm(cat.color_name));
+
+ plan.push({
+ pid: r.shopify_num_id,
+ title: r.title,
+ sampleSku: r.shopify_sku, // existing $4.25 Sample variant SKU (untouched)
+ rollSku, // numeric DW-SKU — NO mint
+ catalog_dw_sku: r.catalog_dw_sku,
+ price_trade: Number(cat.price_trade),
+ rollRetail: Number(cat.roll_retail), // LIVE-recomputed, authoritative
+ csv_retail: Number(r.computed_roll_retail_csv),
+ title_pattern: tPat, title_color: tColor,
+ cat_pattern: cat.pattern_name, cat_color: cat.color_name,
+ patMatch, colMatch,
+ matchOk: patMatch && colMatch,
+ });
+}
+
+// sanity: retail recompute must equal the CSV (proves no drift) — flag if not
+for (const p of plan) {
+ p.retail_matches_csv = Math.abs(p.rollRetail - p.csv_retail) < 0.02;
+}
+
+const mismatches = plan.filter(p => !p.matchOk);
+const retailDrift = plan.filter(p => !p.retail_matches_csv);
+
+const report = {
+ ticket: 'TK-10978',
+ generated_at: new Date().toISOString(),
+ mode: 'READ-ONLY plan builder — no writes',
+ csv_rows: rows.length,
+ distinct_products: byId.size,
+ conflict_products_excluded: conflictIds.size,
+ clean_actionable: plan.length,
+ match_mismatches: mismatches.length,
+ retail_drift_vs_csv: retailDrift.length,
+};
+console.log(JSON.stringify(report, null, 2));
+if (mismatches.length) { console.log('\nMATCH MISMATCHES (will be skipped at execute):'); mismatches.forEach(m => console.log(` ${m.pid} "${m.title}" title(${m.title_pattern}/${m.title_color}) vs cat(${m.cat_pattern}/${m.cat_color})`)); }
+if (retailDrift.length) { console.log('\nRETAIL DRIFT vs CSV:'); retailDrift.forEach(m => console.log(` ${m.pid} live=${m.rollRetail} csv=${m.csv_retail}`)); }
+
+writeFileSync(`${HERE}data/plan.json`, JSON.stringify({ report, plan }, null, 2));
+writeFileSync(`${HERE}data/excluded.json`, JSON.stringify(excluded, null, 2));
+console.log(`\nplan.json: ${plan.length} clean products; excluded.json: ${excluded.length} rows`);
diff --git a/tk10978-scalamandre/data/excluded.json b/tk10978-scalamandre/data/excluded.json
new file mode 100644
index 0000000..9d3704b
--- /dev/null
+++ b/tk10978-scalamandre/data/excluded.json
@@ -0,0 +1,92 @@
+[
+ {
+ "shopify_num_id": "4481157922867",
+ "title": "Chinoise Exotique - White | Scalamandre",
+ "reason": "price-conflict (multiple candidate catalog matches at different prices)",
+ "candidates": [
+ {
+ "catalog_dw_sku": "DWSC-113271",
+ "price_trade": "432.00"
+ },
+ {
+ "catalog_dw_sku": "(blank)",
+ "price_trade": "232.00"
+ }
+ ]
+ },
+ {
+ "shopify_num_id": "4484537876531",
+ "title": "Jardin De Chine - Ciel | Scalamandre",
+ "reason": "price-conflict (multiple candidate catalog matches at different prices)",
+ "candidates": [
+ {
+ "catalog_dw_sku": "(blank)",
+ "price_trade": "147.00"
+ },
+ {
+ "catalog_dw_sku": "DWSC-112462",
+ "price_trade": "295.00"
+ }
+ ]
+ },
+ {
+ "shopify_num_id": "4484537810995",
+ "title": "Jardin De Chine - Spring | Scalamandre",
+ "reason": "price-conflict (multiple candidate catalog matches at different prices)",
+ "candidates": [
+ {
+ "catalog_dw_sku": "DWSC-112460",
+ "price_trade": "295.00"
+ },
+ {
+ "catalog_dw_sku": "(blank)",
+ "price_trade": "147.00"
+ }
+ ]
+ },
+ {
+ "shopify_num_id": "4484538564659",
+ "title": "Shenyang Sisal - Bloom | Scalamandre",
+ "reason": "price-conflict (multiple candidate catalog matches at different prices)",
+ "candidates": [
+ {
+ "catalog_dw_sku": "(blank)",
+ "price_trade": "1583.00"
+ },
+ {
+ "catalog_dw_sku": "DWSC-112474",
+ "price_trade": "192.00"
+ }
+ ]
+ },
+ {
+ "shopify_num_id": "4484485644339",
+ "title": "Shenyang Sisal - Sandalwood | Scalamandre",
+ "reason": "price-conflict (multiple candidate catalog matches at different prices)",
+ "candidates": [
+ {
+ "catalog_dw_sku": "DWSC-112471",
+ "price_trade": "192.00"
+ },
+ {
+ "catalog_dw_sku": "(blank)",
+ "price_trade": "1583.00"
+ }
+ ]
+ },
+ {
+ "shopify_num_id": "4484537679923",
+ "title": "Suzhou Lattice Sisal - Haze | Scalamandre",
+ "reason": "price-conflict (multiple candidate catalog matches at different prices)",
+ "candidates": [
+ {
+ "catalog_dw_sku": "DWSC-112434",
+ "price_trade": "104.00"
+ },
+ {
+ "catalog_dw_sku": "(blank)",
+ "price_trade": "857.00"
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/tk10978-scalamandre/data/plan.json b/tk10978-scalamandre/data/plan.json
new file mode 100644
index 0000000..b7ae175
--- /dev/null
+++ b/tk10978-scalamandre/data/plan.json
@@ -0,0 +1,2607 @@
+{
+ "report": {
+ "ticket": "TK-10978",
+ "generated_at": "2026-08-31T01:00:45.312Z",
+ "mode": "READ-ONLY plan builder — no writes",
+ "csv_rows": 156,
+ "distinct_products": 150,
+ "conflict_products_excluded": 6,
+ "clean_actionable": 144,
+ "match_mismatches": 0,
+ "retail_drift_vs_csv": 0
+ },
+ "plan": [
+ {
+ "pid": "4484545970227",
+ "title": "Abyssal - Mural - Ocean | Scalamandre",
+ "sampleSku": "DWA-88958-Sample",
+ "rollSku": "DWA-88958",
+ "catalog_dw_sku": "DWSC-112284",
+ "price_trade": 1582,
+ "rollRetail": 2863.35,
+ "csv_retail": 2863.35,
+ "title_pattern": "Abyssal - Mural",
+ "title_color": "Ocean",
+ "cat_pattern": "ABYSSAL - MURAL",
+ "cat_color": "OCEAN",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484485709875",
+ "title": "Adelaide Beaded Sisal - Burnished Gold | Scalamandre",
+ "sampleSku": "DWA-89268-Sample",
+ "rollSku": "DWA-89268",
+ "catalog_dw_sku": "DWSC-112417",
+ "price_trade": 228,
+ "rollRetail": 412.67,
+ "csv_retail": 412.67,
+ "title_pattern": "Adelaide Beaded Sisal",
+ "title_color": "Burnished Gold",
+ "cat_pattern": "ADELAIDE BEADED SISAL",
+ "cat_color": "BURNISHED GOLD",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484485677107",
+ "title": "Adelaide Beaded Sisal - Ivory | Scalamandre",
+ "sampleSku": "DWA-89269-Sample",
+ "rollSku": "DWA-89269",
+ "catalog_dw_sku": "DWSC-112418",
+ "price_trade": 228,
+ "rollRetail": 412.67,
+ "csv_retail": 412.67,
+ "title_pattern": "Adelaide Beaded Sisal",
+ "title_color": "Ivory",
+ "cat_pattern": "ADELAIDE BEADED SISAL",
+ "cat_color": "IVORY",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484485742643",
+ "title": "Adelaide Beaded Sisal - Pewter | Scalamandre",
+ "sampleSku": "DWA-89267-Sample",
+ "rollSku": "DWA-89267",
+ "catalog_dw_sku": "DWSC-112419",
+ "price_trade": 228,
+ "rollRetail": 412.67,
+ "csv_retail": 412.67,
+ "title_pattern": "Adelaide Beaded Sisal",
+ "title_color": "Pewter",
+ "cat_pattern": "ADELAIDE BEADED SISAL",
+ "cat_color": "PEWTER",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484487086131",
+ "title": "Andrew Jackson Floral - Countryside | Scalamandre",
+ "sampleSku": "DWA-89246-Sample",
+ "rollSku": "DWA-89246",
+ "catalog_dw_sku": "DWSC-112327",
+ "price_trade": 154,
+ "rollRetail": 278.73,
+ "csv_retail": 278.73,
+ "title_pattern": "Andrew Jackson Floral",
+ "title_color": "Countryside",
+ "cat_pattern": "ANDREW JACKSON FLORAL",
+ "cat_color": "COUNTRYSIDE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484487184435",
+ "title": "Andrew Jackson Floral - Riviera | Scalamandre",
+ "sampleSku": "DWA-89245-Sample",
+ "rollSku": "DWA-89245",
+ "catalog_dw_sku": "DWSC-112326",
+ "price_trade": 154,
+ "rollRetail": 278.73,
+ "csv_retail": 278.73,
+ "title_pattern": "Andrew Jackson Floral",
+ "title_color": "Riviera",
+ "cat_pattern": "ANDREW JACKSON FLORAL",
+ "cat_color": "RIVIERA",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484487282739",
+ "title": "Andrew Jackson Floral - Skylight | Scalamandre",
+ "sampleSku": "DWA-89244-Sample",
+ "rollSku": "DWA-89244",
+ "catalog_dw_sku": "DWSC-112328",
+ "price_trade": 154,
+ "rollRetail": 278.73,
+ "csv_retail": 278.73,
+ "title_pattern": "Andrew Jackson Floral",
+ "title_color": "Skylight",
+ "cat_pattern": "ANDREW JACKSON FLORAL",
+ "cat_color": "SKYLIGHT",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481152876595",
+ "title": "Aprile - Beige | Scalamandre",
+ "sampleSku": "DWA-89447-Sample",
+ "rollSku": "DWA-89447",
+ "catalog_dw_sku": "DWSC-112396",
+ "price_trade": 330,
+ "rollRetail": 597.29,
+ "csv_retail": 597.29,
+ "title_pattern": "Aprile",
+ "title_color": "Beige",
+ "cat_pattern": "APRILE - VINYL WALLCOVERING",
+ "cat_color": "BEIGE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481152974899",
+ "title": "Aprile - Celeste | Scalamandre",
+ "sampleSku": "DWA-89445-Sample",
+ "rollSku": "DWA-89445",
+ "catalog_dw_sku": "DWSC-112398",
+ "price_trade": 330,
+ "rollRetail": 597.29,
+ "csv_retail": 597.29,
+ "title_pattern": "Aprile",
+ "title_color": "Celeste",
+ "cat_pattern": "APRILE - VINYL WALLCOVERING",
+ "cat_color": "CELESTE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481152843827",
+ "title": "Aprile - Magnolia | Scalamandre",
+ "sampleSku": "DWA-89448-Sample",
+ "rollSku": "DWA-89448",
+ "catalog_dw_sku": "DWSC-112395",
+ "price_trade": 330,
+ "rollRetail": 597.29,
+ "csv_retail": 597.29,
+ "title_pattern": "Aprile",
+ "title_color": "Magnolia",
+ "cat_pattern": "APRILE - VINYL WALLCOVERING",
+ "cat_color": "MAGNOLIA",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481152942131",
+ "title": "Aprile - Verde | Scalamandre",
+ "sampleSku": "DWA-89446-Sample",
+ "rollSku": "DWA-89446",
+ "catalog_dw_sku": "DWSC-112397",
+ "price_trade": 330,
+ "rollRetail": 597.29,
+ "csv_retail": 597.29,
+ "title_pattern": "Aprile",
+ "title_color": "Verde",
+ "cat_pattern": "APRILE - VINYL WALLCOVERING",
+ "cat_color": "VERDE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481158250547",
+ "title": "Baldwin Bamboo - Cream & Blue On Lettuce | Scalamandre",
+ "sampleSku": "DWA-89326-Sample",
+ "rollSku": "DWA-89326",
+ "catalog_dw_sku": "DWSC-113238",
+ "price_trade": 168,
+ "rollRetail": 304.07,
+ "csv_retail": 304.07,
+ "title_pattern": "Baldwin Bamboo",
+ "title_color": "Cream & Blue On Lettuce",
+ "cat_pattern": "BALDWIN BAMBOO",
+ "cat_color": "CREAM & BLUE ON LETTUCE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481158283315",
+ "title": "Baldwin Bamboo - Cream & Red On Aqua | Scalamandre",
+ "sampleSku": "DWA-89325-Sample",
+ "rollSku": "DWA-89325",
+ "catalog_dw_sku": "DWSC-113239",
+ "price_trade": 168,
+ "rollRetail": 304.07,
+ "csv_retail": 304.07,
+ "title_pattern": "Baldwin Bamboo",
+ "title_color": "Cream & Red On Aqua",
+ "cat_pattern": "BALDWIN BAMBOO",
+ "cat_color": "CREAM & RED ON AQUA",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4486283231283",
+ "title": "Balinese Peacock - Alabaster | Scalamandre",
+ "sampleSku": "DWA-82597-Sample",
+ "rollSku": "DWA-82597",
+ "catalog_dw_sku": "DWSC-112821",
+ "price_trade": 168,
+ "rollRetail": 304.07,
+ "csv_retail": 304.07,
+ "title_pattern": "Balinese Peacock",
+ "title_color": "Alabaster",
+ "cat_pattern": "BALINESE PEACOCK",
+ "cat_color": "ALABASTER",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4486283362355",
+ "title": "Balinese Peacock - Indigo | Scalamandre",
+ "sampleSku": "DWA-82596-Sample",
+ "rollSku": "DWA-82596",
+ "catalog_dw_sku": "DWSC-112826",
+ "price_trade": 168,
+ "rollRetail": 304.07,
+ "csv_retail": 304.07,
+ "title_pattern": "Balinese Peacock",
+ "title_color": "Indigo",
+ "cat_pattern": "BALINESE PEACOCK",
+ "cat_color": "INDIGO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484483973171",
+ "title": "Balinese Peacock - Lavender | Scalamandre",
+ "sampleSku": "DWA-89287-Sample",
+ "rollSku": "DWA-89287",
+ "catalog_dw_sku": "DWSC-112823",
+ "price_trade": 168,
+ "rollRetail": 304.07,
+ "csv_retail": 304.07,
+ "title_pattern": "Balinese Peacock",
+ "title_color": "Lavender",
+ "cat_pattern": "BALINESE PEACOCK",
+ "cat_color": "LAVENDER",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484484005939",
+ "title": "Balinese Peacock - Mandarin | Scalamandre",
+ "sampleSku": "DWA-89286-Sample",
+ "rollSku": "DWA-89286",
+ "catalog_dw_sku": "DWSC-112825",
+ "price_trade": 168,
+ "rollRetail": 304.07,
+ "csv_retail": 304.07,
+ "title_pattern": "Balinese Peacock",
+ "title_color": "Mandarin",
+ "cat_pattern": "BALINESE PEACOCK",
+ "cat_color": "MANDARIN",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481153204275",
+ "title": "Bamboo - Cielo | Scalamandre",
+ "sampleSku": "DWA-89441-Sample",
+ "rollSku": "DWA-89441",
+ "catalog_dw_sku": "DWSC-112401",
+ "price_trade": 245,
+ "rollRetail": 443.44,
+ "csv_retail": 443.44,
+ "title_pattern": "Bamboo",
+ "title_color": "Cielo",
+ "cat_pattern": "BAMBOO - WALLCOVERING",
+ "cat_color": "CIELO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481153302579",
+ "title": "Bamboo - Giallo | Scalamandre",
+ "sampleSku": "DWA-89440-Sample",
+ "rollSku": "DWA-89440",
+ "catalog_dw_sku": "DWSC-112402",
+ "price_trade": 245,
+ "rollRetail": 443.44,
+ "csv_retail": 443.44,
+ "title_pattern": "Bamboo",
+ "title_color": "Giallo",
+ "cat_pattern": "BAMBOO - WALLCOVERING",
+ "cat_color": "GIALLO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481153040435",
+ "title": "Bamboo - Grigio | Scalamandre",
+ "sampleSku": "DWA-89443-Sample",
+ "rollSku": "DWA-89443",
+ "catalog_dw_sku": "DWSC-112399",
+ "price_trade": 245,
+ "rollRetail": 443.44,
+ "csv_retail": 443.44,
+ "title_pattern": "Bamboo",
+ "title_color": "Grigio",
+ "cat_pattern": "BAMBOO - WALLCOVERING",
+ "cat_color": "GRIGIO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481153368115",
+ "title": "Bamboo - Mela | Scalamandre",
+ "sampleSku": "DWA-89439-Sample",
+ "rollSku": "DWA-89439",
+ "catalog_dw_sku": "DWSC-112403",
+ "price_trade": 245,
+ "rollRetail": 443.44,
+ "csv_retail": 443.44,
+ "title_pattern": "Bamboo",
+ "title_color": "Mela",
+ "cat_pattern": "BAMBOO - WALLCOVERING",
+ "cat_color": "MELA",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481153105971",
+ "title": "Bamboo - Nebbia | Scalamandre",
+ "sampleSku": "DWA-89442-Sample",
+ "rollSku": "DWA-89442",
+ "catalog_dw_sku": "DWSC-112400",
+ "price_trade": 245,
+ "rollRetail": 443.44,
+ "csv_retail": 443.44,
+ "title_pattern": "Bamboo",
+ "title_color": "Nebbia",
+ "cat_pattern": "BAMBOO - WALLCOVERING",
+ "cat_color": "NEBBIA",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484538662963",
+ "title": "Belize - Ivory | Scalamandre",
+ "sampleSku": "DWA-89110-Sample",
+ "rollSku": "DWA-89110",
+ "catalog_dw_sku": "DWSC-112455",
+ "price_trade": 142,
+ "rollRetail": 257.01,
+ "csv_retail": 257.01,
+ "title_pattern": "Belize",
+ "title_color": "Ivory",
+ "cat_pattern": "BELIZE",
+ "cat_color": "IVORY",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484538695731",
+ "title": "Belize - Sunlit | Scalamandre",
+ "sampleSku": "DWA-89109-Sample",
+ "rollSku": "DWA-89109",
+ "catalog_dw_sku": "DWSC-112454",
+ "price_trade": 142,
+ "rollRetail": 257.01,
+ "csv_retail": 257.01,
+ "title_pattern": "Belize",
+ "title_color": "Sunlit",
+ "cat_pattern": "BELIZE",
+ "cat_color": "SUNLIT",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484539842611",
+ "title": "Bent Wood - Dark Brown | Scalamandre",
+ "sampleSku": "DWA-89093-Sample",
+ "rollSku": "DWA-89093",
+ "catalog_dw_sku": "DWSC-112322",
+ "price_trade": 26.25,
+ "rollRetail": 47.51,
+ "csv_retail": 47.51,
+ "title_pattern": "Bent Wood",
+ "title_color": "Dark Brown",
+ "cat_pattern": "BENT WOOD",
+ "cat_color": "DARK BROWN",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484535943219",
+ "title": "Canyon - Gilt | Scalamandre",
+ "sampleSku": "DWA-89160-Sample",
+ "rollSku": "DWA-89160",
+ "catalog_dw_sku": "DWSC-112549",
+ "price_trade": 138,
+ "rollRetail": 249.77,
+ "csv_retail": 249.77,
+ "title_pattern": "Canyon",
+ "title_color": "Gilt",
+ "cat_pattern": "CANYON",
+ "cat_color": "GILT",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484535877683",
+ "title": "Canyon - Ice | Scalamandre",
+ "sampleSku": "DWA-89162-Sample",
+ "rollSku": "DWA-89162",
+ "catalog_dw_sku": "DWSC-112547",
+ "price_trade": 138,
+ "rollRetail": 249.77,
+ "csv_retail": 249.77,
+ "title_pattern": "Canyon",
+ "title_color": "Ice",
+ "cat_pattern": "CANYON",
+ "cat_color": "ICE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484535910451",
+ "title": "Canyon - Mineral | Scalamandre",
+ "sampleSku": "DWA-89161-Sample",
+ "rollSku": "DWA-89161",
+ "catalog_dw_sku": "DWSC-112548",
+ "price_trade": 138,
+ "rollRetail": 249.77,
+ "csv_retail": 249.77,
+ "title_pattern": "Canyon",
+ "title_color": "Mineral",
+ "cat_pattern": "CANYON",
+ "cat_color": "MINERAL",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484535975987",
+ "title": "Canyon - Taupe & Silver | Scalamandre",
+ "sampleSku": "DWA-89159-Sample",
+ "rollSku": "DWA-89159",
+ "catalog_dw_sku": "DWSC-112550",
+ "price_trade": 138,
+ "rollRetail": 249.77,
+ "csv_retail": 249.77,
+ "title_pattern": "Canyon",
+ "title_color": "Taupe & Silver",
+ "cat_pattern": "CANYON",
+ "cat_color": "TAUPE & SILVER",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484482269235",
+ "title": "Ch'In Ling - Jade | Scalamandre",
+ "sampleSku": "DWA-89303-Sample",
+ "rollSku": "DWA-89303",
+ "catalog_dw_sku": "DWSC-112457",
+ "price_trade": 298,
+ "rollRetail": 539.37,
+ "csv_retail": 539.37,
+ "title_pattern": "Ch'In Ling",
+ "title_color": "Jade",
+ "cat_pattern": "CH'IN LING",
+ "cat_color": "JADE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484482236467",
+ "title": "Ch'In Ling - Multicolor On Ivory | Scalamandre",
+ "sampleSku": "DWA-89304-Sample",
+ "rollSku": "DWA-89304",
+ "catalog_dw_sku": "DWSC-112458",
+ "price_trade": 298,
+ "rollRetail": 539.37,
+ "csv_retail": 539.37,
+ "title_pattern": "Ch'In Ling",
+ "title_color": "Multicolor On Ivory",
+ "cat_pattern": "CH'IN LING",
+ "cat_color": "MULTICOLOR ON IVORY",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481157988403",
+ "title": "Chinoise Exotique - Ecru | Scalamandre",
+ "sampleSku": "DWA-89334-Sample",
+ "rollSku": "DWA-89334",
+ "catalog_dw_sku": "DWSC-113273",
+ "price_trade": 225,
+ "rollRetail": 407.24,
+ "csv_retail": 407.24,
+ "title_pattern": "Chinoise Exotique",
+ "title_color": "Ecru",
+ "cat_pattern": "CHINOISE EXOTIQUE",
+ "cat_color": "ECRU",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481157955635",
+ "title": "Chinoise Exotique - Tomato | Scalamandre",
+ "sampleSku": "DWA-89335-Sample",
+ "rollSku": "DWA-89335",
+ "catalog_dw_sku": "DWSC-113272",
+ "price_trade": 225,
+ "rollRetail": 407.24,
+ "csv_retail": 407.24,
+ "title_pattern": "Chinoise Exotique",
+ "title_color": "Tomato",
+ "cat_pattern": "CHINOISE EXOTIQUE",
+ "cat_color": "TOMATO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484536238131",
+ "title": "Crosscurrent - White Sand | Scalamandre",
+ "sampleSku": "DWA-89152-Sample",
+ "rollSku": "DWA-89152",
+ "catalog_dw_sku": "DWSC-112552",
+ "price_trade": 46.88,
+ "rollRetail": 84.85,
+ "csv_retail": 84.85,
+ "title_pattern": "Crosscurrent",
+ "title_color": "White Sand",
+ "cat_pattern": "CROSSCURRENT",
+ "cat_color": "WHITE SAND",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481158414387",
+ "title": "Daphne - Antique White | Scalamandre",
+ "sampleSku": "DWA-89321-Sample",
+ "rollSku": "DWA-89321",
+ "catalog_dw_sku": "DWSC-113216",
+ "price_trade": 126,
+ "rollRetail": 228.05,
+ "csv_retail": 228.05,
+ "title_pattern": "Daphne",
+ "title_color": "Antique White",
+ "cat_pattern": "DAPHNE",
+ "cat_color": "ANTIQUE WHITE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481158479923",
+ "title": "Daphne - Canton Blue | Scalamandre",
+ "sampleSku": "DWA-89319-Sample",
+ "rollSku": "DWA-89319",
+ "catalog_dw_sku": "DWSC-113214",
+ "price_trade": 126,
+ "rollRetail": 228.05,
+ "csv_retail": 228.05,
+ "title_pattern": "Daphne",
+ "title_color": "Canton Blue",
+ "cat_pattern": "DAPHNE",
+ "cat_color": "CANTON BLUE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481158447155",
+ "title": "Daphne - Swedish Blue | Scalamandre",
+ "sampleSku": "DWA-89320-Sample",
+ "rollSku": "DWA-89320",
+ "catalog_dw_sku": "DWSC-113217",
+ "price_trade": 126,
+ "rollRetail": 228.05,
+ "csv_retail": 228.05,
+ "title_pattern": "Daphne",
+ "title_color": "Swedish Blue",
+ "cat_pattern": "DAPHNE",
+ "cat_color": "SWEDISH BLUE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481152254003",
+ "title": "East India - Bianco / Beige | Scalamandre",
+ "sampleSku": "DWA-89462-Sample",
+ "rollSku": "DWA-89462",
+ "catalog_dw_sku": "DWSC-112876",
+ "price_trade": 210,
+ "rollRetail": 380.09,
+ "csv_retail": 380.09,
+ "title_pattern": "East India",
+ "title_color": "Bianco / Beige",
+ "cat_pattern": "EAST INDIA - VINYL",
+ "cat_color": "BIANCO / BEIGE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481152155699",
+ "title": "East India - Bianco / Nero | Scalamandre",
+ "sampleSku": "DWA-89464-Sample",
+ "rollSku": "DWA-89464",
+ "catalog_dw_sku": "DWSC-112875",
+ "price_trade": 210,
+ "rollRetail": 380.09,
+ "csv_retail": 380.09,
+ "title_pattern": "East India",
+ "title_color": "Bianco / Nero",
+ "cat_pattern": "EAST INDIA - VINYL",
+ "cat_color": "BIANCO / NERO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484603379763",
+ "title": "Edwin'S Covey - Grisaille | Scalamandre",
+ "sampleSku": "DWA-88356-Sample",
+ "rollSku": "DWA-88356",
+ "catalog_dw_sku": "DWSC-112331",
+ "price_trade": 154,
+ "rollRetail": 278.73,
+ "csv_retail": 278.73,
+ "title_pattern": "Edwin'S Covey",
+ "title_color": "Grisaille",
+ "cat_pattern": "EDWIN'S COVEY",
+ "cat_color": "GRISAILLE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484603412531",
+ "title": "Edwin'S Covey - Prairie | Scalamandre",
+ "sampleSku": "DWA-88355-Sample",
+ "rollSku": "DWA-88355",
+ "catalog_dw_sku": "DWSC-112330",
+ "price_trade": 154,
+ "rollRetail": 278.73,
+ "csv_retail": 278.73,
+ "title_pattern": "Edwin'S Covey",
+ "title_color": "Prairie",
+ "cat_pattern": "EDWIN'S COVEY",
+ "cat_color": "PRAIRIE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484487413811",
+ "title": "Edwin'S Covey - Woodlawn | Scalamandre",
+ "sampleSku": "DWA-89242-Sample",
+ "rollSku": "DWA-89242",
+ "catalog_dw_sku": "DWSC-112333",
+ "price_trade": 154,
+ "rollRetail": 278.73,
+ "csv_retail": 278.73,
+ "title_pattern": "Edwin'S Covey",
+ "title_color": "Woodlawn",
+ "cat_pattern": "EDWIN'S COVEY",
+ "cat_color": "WOODLAWN",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484538335283",
+ "title": "Falk Manor House Sisal - Ecru | Scalamandre",
+ "sampleSku": "DWA-89114-Sample",
+ "rollSku": "DWA-89114",
+ "catalog_dw_sku": "DWSC-112421",
+ "price_trade": 117,
+ "rollRetail": 211.76,
+ "csv_retail": 211.76,
+ "title_pattern": "Falk Manor House Sisal",
+ "title_color": "Ecru",
+ "cat_pattern": "FALK MANOR HOUSE SISAL",
+ "cat_color": "ECRU",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484538368051",
+ "title": "Falk Manor House Sisal - Pearl | Scalamandre",
+ "sampleSku": "DWA-89113-Sample",
+ "rollSku": "DWA-89113",
+ "catalog_dw_sku": "DWSC-112422",
+ "price_trade": 117,
+ "rollRetail": 211.76,
+ "csv_retail": 211.76,
+ "title_pattern": "Falk Manor House Sisal",
+ "title_color": "Pearl",
+ "cat_pattern": "FALK MANOR HOUSE SISAL",
+ "cat_color": "PEARL",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484545445939",
+ "title": "Festival - Mural - Multico | Scalamandre",
+ "sampleSku": "DWA-88972-Sample",
+ "rollSku": "DWA-88972",
+ "catalog_dw_sku": "DWSC-112448",
+ "price_trade": 1614,
+ "rollRetail": 2921.27,
+ "csv_retail": 2921.27,
+ "title_pattern": "Festival - Mural",
+ "title_color": "Multico",
+ "cat_pattern": "FESTIVAL - MURAL",
+ "cat_color": "MULTICO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484536533043",
+ "title": "Glacier - Champagne | Scalamandre",
+ "sampleSku": "DWA-89143-Sample",
+ "rollSku": "DWA-89143",
+ "catalog_dw_sku": "DWSC-112553",
+ "price_trade": 43.88,
+ "rollRetail": 79.42,
+ "csv_retail": 79.42,
+ "title_pattern": "Glacier",
+ "title_color": "Champagne",
+ "cat_pattern": "GLACIER",
+ "cat_color": "CHAMPAGNE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481153892403",
+ "title": "Gru - Beige | Scalamandre",
+ "sampleSku": "DWA-89433-Sample",
+ "rollSku": "DWA-89433",
+ "catalog_dw_sku": "DWSC-112405",
+ "price_trade": 140,
+ "rollRetail": 253.39,
+ "csv_retail": 253.39,
+ "title_pattern": "Gru",
+ "title_color": "Beige",
+ "cat_pattern": "GRU - GRASSCLOTH",
+ "cat_color": "BEIGE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481153925171",
+ "title": "Gru - Bronzo | Scalamandre",
+ "sampleSku": "DWA-89432-Sample",
+ "rollSku": "DWA-89432",
+ "catalog_dw_sku": "DWSC-112406",
+ "price_trade": 140,
+ "rollRetail": 253.39,
+ "csv_retail": 253.39,
+ "title_pattern": "Gru",
+ "title_color": "Bronzo",
+ "cat_pattern": "GRU - GRASSCLOTH",
+ "cat_color": "BRONZO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481153957939",
+ "title": "Gru - Giallo | Scalamandre",
+ "sampleSku": "DWA-89431-Sample",
+ "rollSku": "DWA-89431",
+ "catalog_dw_sku": "DWSC-112407",
+ "price_trade": 140,
+ "rollRetail": 253.39,
+ "csv_retail": 253.39,
+ "title_pattern": "Gru",
+ "title_color": "Giallo",
+ "cat_pattern": "GRU - GRASSCLOTH",
+ "cat_color": "GIALLO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481154056243",
+ "title": "Gru - Verde | Scalamandre",
+ "sampleSku": "DWA-89429-Sample",
+ "rollSku": "DWA-89429",
+ "catalog_dw_sku": "DWSC-112404",
+ "price_trade": 140,
+ "rollRetail": 253.39,
+ "csv_retail": 253.39,
+ "title_pattern": "Gru",
+ "title_color": "Verde",
+ "cat_pattern": "GRU - GRASSCLOTH",
+ "cat_color": "VERDE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484542529587",
+ "title": "Imperio - White | Scalamandre",
+ "sampleSku": "DWA-89045-Sample",
+ "rollSku": "DWA-89045",
+ "catalog_dw_sku": "DWSC-112338",
+ "price_trade": 50.63,
+ "rollRetail": 91.64,
+ "csv_retail": 91.64,
+ "title_pattern": "Imperio",
+ "title_color": "White",
+ "cat_pattern": "IMPERIO - VINYL",
+ "cat_color": "WHITE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484603052083",
+ "title": "Lanai - Lagoon | Scalamandre",
+ "sampleSku": "DWA-88359-Sample",
+ "rollSku": "DWA-88359",
+ "catalog_dw_sku": "DWSC-112335",
+ "price_trade": 154,
+ "rollRetail": 278.73,
+ "csv_retail": 278.73,
+ "title_pattern": "Lanai",
+ "title_color": "Lagoon",
+ "cat_pattern": "LANAI",
+ "cat_color": "LAGOON",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484603183155",
+ "title": "Lanai - Passionfruit | Scalamandre",
+ "sampleSku": "DWA-88358-Sample",
+ "rollSku": "DWA-88358",
+ "catalog_dw_sku": "DWSC-112334",
+ "price_trade": 154,
+ "rollRetail": 278.73,
+ "csv_retail": 278.73,
+ "title_pattern": "Lanai",
+ "title_color": "Passionfruit",
+ "cat_pattern": "LANAI",
+ "cat_color": "PASSIONFRUIT",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484539908147",
+ "title": "Lanai - Silver Mist | Scalamandre",
+ "sampleSku": "DWA-89091-Sample",
+ "rollSku": "DWA-89091",
+ "catalog_dw_sku": "DWSC-112336",
+ "price_trade": 154,
+ "rollRetail": 278.73,
+ "csv_retail": 278.73,
+ "title_pattern": "Lanai",
+ "title_color": "Silver Mist",
+ "cat_pattern": "LANAI",
+ "cat_color": "SILVER MIST",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484538761267",
+ "title": "Luoyang Garden Sisal - Document | Scalamandre",
+ "sampleSku": "DWA-89107-Sample",
+ "rollSku": "DWA-89107",
+ "catalog_dw_sku": "DWSC-112465",
+ "price_trade": 192,
+ "rollRetail": 347.51,
+ "csv_retail": 347.51,
+ "title_pattern": "Luoyang Garden Sisal",
+ "title_color": "Document",
+ "cat_pattern": "LUOYANG GARDEN SISAL",
+ "cat_color": "DOCUMENT",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484538794035",
+ "title": "Luoyang Garden Sisal - Sky | Scalamandre",
+ "sampleSku": "DWA-89106-Sample",
+ "rollSku": "DWA-89106",
+ "catalog_dw_sku": "DWSC-112466",
+ "price_trade": 1536,
+ "rollRetail": 2780.09,
+ "csv_retail": 2780.09,
+ "title_pattern": "Luoyang Garden Sisal",
+ "title_color": "Sky",
+ "cat_pattern": "LUOYANG GARDEN SISAL",
+ "cat_color": "SKY",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481153400883",
+ "title": "Marble - Botticino | Scalamandre",
+ "sampleSku": "DWA-89438-Sample",
+ "rollSku": "DWA-89438",
+ "catalog_dw_sku": "DWSC-112878",
+ "price_trade": 645,
+ "rollRetail": 1167.42,
+ "csv_retail": 1167.42,
+ "title_pattern": "Marble",
+ "title_color": "Botticino",
+ "cat_pattern": "MARBLE - WALLCOVERING",
+ "cat_color": "BOTTICINO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481153794099",
+ "title": "Marble - Emperador | Scalamandre",
+ "sampleSku": "DWA-89434-Sample",
+ "rollSku": "DWA-89434",
+ "catalog_dw_sku": "DWSC-112877",
+ "price_trade": 645,
+ "rollRetail": 1167.42,
+ "csv_retail": 1167.42,
+ "title_pattern": "Marble",
+ "title_color": "Emperador",
+ "cat_pattern": "MARBLE - WALLCOVERING",
+ "cat_color": "EMPERADOR",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481152581683",
+ "title": "Marly - Bleu | Scalamandre",
+ "sampleSku": "DWA-89454-Sample",
+ "rollSku": "DWA-89454",
+ "catalog_dw_sku": "DWSC-111164",
+ "price_trade": 330,
+ "rollRetail": 597.29,
+ "csv_retail": 597.29,
+ "title_pattern": "Marly",
+ "title_color": "Bleu",
+ "cat_pattern": "MARLY - VINYL WALLCOVERING",
+ "cat_color": "BLEU",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481152614451",
+ "title": "Marly - Grigio | Scalamandre",
+ "sampleSku": "DWA-89453-Sample",
+ "rollSku": "DWA-89453",
+ "catalog_dw_sku": "DWSC-111165",
+ "price_trade": 330,
+ "rollRetail": 597.29,
+ "csv_retail": 597.29,
+ "title_pattern": "Marly",
+ "title_color": "Grigio",
+ "cat_pattern": "MARLY - VINYL WALLCOVERING",
+ "cat_color": "GRIGIO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481152516147",
+ "title": "Marly - Turchese | Scalamandre",
+ "sampleSku": "DWA-89455-Sample",
+ "rollSku": "DWA-89455",
+ "catalog_dw_sku": "DWSC-111162",
+ "price_trade": 330,
+ "rollRetail": 597.29,
+ "csv_retail": 597.29,
+ "title_pattern": "Marly",
+ "title_color": "Turchese",
+ "cat_pattern": "MARLY - VINYL WALLCOVERING",
+ "cat_color": "TURCHESE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481152483379",
+ "title": "Marly - Verde | Scalamandre",
+ "sampleSku": "DWA-89456-Sample",
+ "rollSku": "DWA-89456",
+ "catalog_dw_sku": "DWSC-111163",
+ "price_trade": 330,
+ "rollRetail": 597.29,
+ "csv_retail": 597.29,
+ "title_pattern": "Marly",
+ "title_color": "Verde",
+ "cat_pattern": "MARLY - VINYL WALLCOVERING",
+ "cat_color": "VERDE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484601675827",
+ "title": "Mason Plain - Tan | Scalamandre",
+ "sampleSku": "DWA-88382-Sample",
+ "rollSku": "DWA-88382",
+ "catalog_dw_sku": "DWSC-112325",
+ "price_trade": 26.25,
+ "rollRetail": 47.51,
+ "csv_retail": 47.51,
+ "title_pattern": "Mason Plain",
+ "title_color": "Tan",
+ "cat_pattern": "MASON PLAIN",
+ "cat_color": "TAN",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481152778291",
+ "title": "Melograno - Cielo | Scalamandre",
+ "sampleSku": "DWA-89449-Sample",
+ "rollSku": "DWA-89449",
+ "catalog_dw_sku": "DWSC-111191",
+ "price_trade": 330,
+ "rollRetail": 597.29,
+ "csv_retail": 597.29,
+ "title_pattern": "Melograno",
+ "title_color": "Cielo",
+ "cat_pattern": "MELOGRANO - VINYL WALLCOVERING",
+ "cat_color": "CIELO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481152712755",
+ "title": "Melograno - Giallino | Scalamandre",
+ "sampleSku": "DWA-89451-Sample",
+ "rollSku": "DWA-89451",
+ "catalog_dw_sku": "DWSC-111193",
+ "price_trade": 330,
+ "rollRetail": 597.29,
+ "csv_retail": 597.29,
+ "title_pattern": "Melograno",
+ "title_color": "Giallino",
+ "cat_pattern": "MELOGRANO - VINYL WALLCOVERING",
+ "cat_color": "GIALLINO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481152679987",
+ "title": "Melograno - Magnolia | Scalamandre",
+ "sampleSku": "DWA-89452-Sample",
+ "rollSku": "DWA-89452",
+ "catalog_dw_sku": "DWSC-111192",
+ "price_trade": 330,
+ "rollRetail": 597.29,
+ "csv_retail": 597.29,
+ "title_pattern": "Melograno",
+ "title_color": "Magnolia",
+ "cat_pattern": "MELOGRANO - VINYL WALLCOVERING",
+ "cat_color": "MAGNOLIA",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481152745523",
+ "title": "Melograno - Tea | Scalamandre",
+ "sampleSku": "DWA-89450-Sample",
+ "rollSku": "DWA-89450",
+ "catalog_dw_sku": "DWSC-111194",
+ "price_trade": 330,
+ "rollRetail": 597.29,
+ "csv_retail": 597.29,
+ "title_pattern": "Melograno",
+ "title_color": "Tea",
+ "cat_pattern": "MELOGRANO - VINYL WALLCOVERING",
+ "cat_color": "TEA",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481154940979",
+ "title": "Melograno Unito - Beige | Scalamandre",
+ "sampleSku": "DWA-89406-Sample",
+ "rollSku": "DWA-89406",
+ "catalog_dw_sku": "DWSC-111200",
+ "price_trade": 290,
+ "rollRetail": 524.89,
+ "csv_retail": 524.89,
+ "title_pattern": "Melograno Unito",
+ "title_color": "Beige",
+ "cat_pattern": "MELOGRANO UNITO - VINYL",
+ "cat_color": "BEIGE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481154973747",
+ "title": "Melograno Unito - Celeste | Scalamandre",
+ "sampleSku": "DWA-89405-Sample",
+ "rollSku": "DWA-89405",
+ "catalog_dw_sku": "DWSC-111206",
+ "price_trade": 290,
+ "rollRetail": 524.89,
+ "csv_retail": 524.89,
+ "title_pattern": "Melograno Unito",
+ "title_color": "Celeste",
+ "cat_pattern": "MELOGRANO UNITO - VINYL",
+ "cat_color": "CELESTE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481154908211",
+ "title": "Melograno Unito - Cielo | Scalamandre",
+ "sampleSku": "DWA-89407-Sample",
+ "rollSku": "DWA-89407",
+ "catalog_dw_sku": "DWSC-111205",
+ "price_trade": 290,
+ "rollRetail": 524.89,
+ "csv_retail": 524.89,
+ "title_pattern": "Melograno Unito",
+ "title_color": "Cielo",
+ "cat_pattern": "MELOGRANO UNITO - VINYL",
+ "cat_color": "CIELO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481154809907",
+ "title": "Melograno Unito - Giallino | Scalamandre",
+ "sampleSku": "DWA-89410-Sample",
+ "rollSku": "DWA-89410",
+ "catalog_dw_sku": "DWSC-111202",
+ "price_trade": 290,
+ "rollRetail": 524.89,
+ "csv_retail": 524.89,
+ "title_pattern": "Melograno Unito",
+ "title_color": "Giallino",
+ "cat_pattern": "MELOGRANO UNITO - VINYL",
+ "cat_color": "GIALLINO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481155039283",
+ "title": "Melograno Unito - Grigio | Scalamandre",
+ "sampleSku": "DWA-89403-Sample",
+ "rollSku": "DWA-89403",
+ "catalog_dw_sku": "DWSC-111208",
+ "price_trade": 290,
+ "rollRetail": 524.89,
+ "csv_retail": 524.89,
+ "title_pattern": "Melograno Unito",
+ "title_color": "Grigio",
+ "cat_pattern": "MELOGRANO UNITO - VINYL",
+ "cat_color": "GRIGIO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481154777139",
+ "title": "Melograno Unito - Magnolia | Scalamandre",
+ "sampleSku": "DWA-89411-Sample",
+ "rollSku": "DWA-89411",
+ "catalog_dw_sku": "DWSC-111201",
+ "price_trade": 290,
+ "rollRetail": 524.89,
+ "csv_retail": 524.89,
+ "title_pattern": "Melograno Unito",
+ "title_color": "Magnolia",
+ "cat_pattern": "MELOGRANO UNITO - VINYL",
+ "cat_color": "MAGNOLIA",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481154842675",
+ "title": "Melograno Unito - Rosso | Scalamandre",
+ "sampleSku": "DWA-89409-Sample",
+ "rollSku": "DWA-89409",
+ "catalog_dw_sku": "DWSC-111203",
+ "price_trade": 290,
+ "rollRetail": 524.89,
+ "csv_retail": 524.89,
+ "title_pattern": "Melograno Unito",
+ "title_color": "Rosso",
+ "cat_pattern": "MELOGRANO UNITO - VINYL",
+ "cat_color": "ROSSO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481154875443",
+ "title": "Melograno Unito - Tea | Scalamandre",
+ "sampleSku": "DWA-89408-Sample",
+ "rollSku": "DWA-89408",
+ "catalog_dw_sku": "DWSC-111204",
+ "price_trade": 290,
+ "rollRetail": 524.89,
+ "csv_retail": 524.89,
+ "title_pattern": "Melograno Unito",
+ "title_color": "Tea",
+ "cat_pattern": "MELOGRANO UNITO - VINYL",
+ "cat_color": "TEA",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481155006515",
+ "title": "Melograno Unito - Verde | Scalamandre",
+ "sampleSku": "DWA-89404-Sample",
+ "rollSku": "DWA-89404",
+ "catalog_dw_sku": "DWSC-111207",
+ "price_trade": 290,
+ "rollRetail": 524.89,
+ "csv_retail": 524.89,
+ "title_pattern": "Melograno Unito",
+ "title_color": "Verde",
+ "cat_pattern": "MELOGRANO UNITO - VINYL",
+ "cat_color": "VERDE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481157759027",
+ "title": "Mikonos - Blue & Green | Scalamandre",
+ "sampleSku": "DWA-89341-Sample",
+ "rollSku": "DWA-89341",
+ "catalog_dw_sku": "DWSC-113267",
+ "price_trade": 424,
+ "rollRetail": 767.42,
+ "csv_retail": 767.42,
+ "title_pattern": "Mikonos",
+ "title_color": "Blue & Green",
+ "cat_pattern": "MIKONOS",
+ "cat_color": "BLUE & GREEN",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481157726259",
+ "title": "Mikonos - Blue & Yellow | Scalamandre",
+ "sampleSku": "DWA-89342-Sample",
+ "rollSku": "DWA-89342",
+ "catalog_dw_sku": "DWSC-113266",
+ "price_trade": 424,
+ "rollRetail": 767.42,
+ "csv_retail": 767.42,
+ "title_pattern": "Mikonos",
+ "title_color": "Blue & Yellow",
+ "cat_pattern": "MIKONOS",
+ "cat_color": "BLUE & YELLOW",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481157824563",
+ "title": "Mikonos - Green & Eggshell | Scalamandre",
+ "sampleSku": "DWA-89339-Sample",
+ "rollSku": "DWA-89339",
+ "catalog_dw_sku": "DWSC-113269",
+ "price_trade": 424,
+ "rollRetail": 767.42,
+ "csv_retail": 767.42,
+ "title_pattern": "Mikonos",
+ "title_color": "Green & Eggshell",
+ "cat_pattern": "MIKONOS",
+ "cat_color": "GREEN & EGGSHELL",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481157791795",
+ "title": "Mikonos - Ochres & Aqua | Scalamandre",
+ "sampleSku": "DWA-89340-Sample",
+ "rollSku": "DWA-89340",
+ "catalog_dw_sku": "DWSC-113268",
+ "price_trade": 424,
+ "rollRetail": 767.42,
+ "csv_retail": 767.42,
+ "title_pattern": "Mikonos",
+ "title_color": "Ochres & Aqua",
+ "cat_pattern": "MIKONOS",
+ "cat_color": "OCHRES & AQUA",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481157857331",
+ "title": "Mikonos - Rust & Blue | Scalamandre",
+ "sampleSku": "DWA-89338-Sample",
+ "rollSku": "DWA-89338",
+ "catalog_dw_sku": "DWSC-113270",
+ "price_trade": 424,
+ "rollRetail": 767.42,
+ "csv_retail": 767.42,
+ "title_pattern": "Mikonos",
+ "title_color": "Rust & Blue",
+ "cat_pattern": "MIKONOS",
+ "cat_color": "RUST & BLUE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481158119475",
+ "title": "Ming Circus - Multi On Beige | Scalamandre",
+ "sampleSku": "DWA-89330-Sample",
+ "rollSku": "DWA-89330",
+ "catalog_dw_sku": "DWSC-113259",
+ "price_trade": 504,
+ "rollRetail": 912.22,
+ "csv_retail": 912.22,
+ "title_pattern": "Ming Circus",
+ "title_color": "Multi On Beige",
+ "cat_pattern": "MING CIRCUS",
+ "cat_color": "MULTI ON BEIGE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481158152243",
+ "title": "Ming Circus - Multi On Pollen | Scalamandre",
+ "sampleSku": "DWA-89329-Sample",
+ "rollSku": "DWA-89329",
+ "catalog_dw_sku": "DWSC-113260",
+ "price_trade": 504,
+ "rollRetail": 912.22,
+ "csv_retail": 912.22,
+ "title_pattern": "Ming Circus",
+ "title_color": "Multi On Pollen",
+ "cat_pattern": "MING CIRCUS",
+ "cat_color": "MULTI ON POLLEN",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484538859571",
+ "title": "Monroe Embroidered Grasscloth - Glacier | Scalamandre",
+ "sampleSku": "DWA-89105-Sample",
+ "rollSku": "DWA-89105",
+ "catalog_dw_sku": "DWSC-112425",
+ "price_trade": 168,
+ "rollRetail": 304.07,
+ "csv_retail": 304.07,
+ "title_pattern": "Monroe Embroidered Grasscloth",
+ "title_color": "Glacier",
+ "cat_pattern": "MONROE EMBROIDERED GRASSCLOTH",
+ "cat_color": "GLACIER",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484538892339",
+ "title": "Monroe Embroidered Grasscloth - Papyrus | Scalamandre",
+ "sampleSku": "DWA-89104-Sample",
+ "rollSku": "DWA-89104",
+ "catalog_dw_sku": "DWSC-112426",
+ "price_trade": 168,
+ "rollRetail": 304.07,
+ "csv_retail": 304.07,
+ "title_pattern": "Monroe Embroidered Grasscloth",
+ "title_color": "Papyrus",
+ "cat_pattern": "MONROE EMBROIDERED GRASSCLOTH",
+ "cat_color": "PAPYRUS",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484536074291",
+ "title": "Pacific Stripe - Champagne | Scalamandre",
+ "sampleSku": "DWA-89156-Sample",
+ "rollSku": "DWA-89156",
+ "catalog_dw_sku": "DWSC-112555",
+ "price_trade": 130,
+ "rollRetail": 235.29,
+ "csv_retail": 235.29,
+ "title_pattern": "Pacific Stripe",
+ "title_color": "Champagne",
+ "cat_pattern": "PACIFIC STRIPE",
+ "cat_color": "CHAMPAGNE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484536041523",
+ "title": "Pacific Stripe - Ice | Scalamandre",
+ "sampleSku": "DWA-89157-Sample",
+ "rollSku": "DWA-89157",
+ "catalog_dw_sku": "DWSC-112556",
+ "price_trade": 130,
+ "rollRetail": 235.29,
+ "csv_retail": 235.29,
+ "title_pattern": "Pacific Stripe",
+ "title_color": "Ice",
+ "cat_pattern": "PACIFIC STRIPE",
+ "cat_color": "ICE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484536139827",
+ "title": "Pacific Stripe - Sky | Scalamandre",
+ "sampleSku": "DWA-89155-Sample",
+ "rollSku": "DWA-89155",
+ "catalog_dw_sku": "DWSC-112557",
+ "price_trade": 130,
+ "rollRetail": 235.29,
+ "csv_retail": 235.29,
+ "title_pattern": "Pacific Stripe",
+ "title_color": "Sky",
+ "cat_pattern": "PACIFIC STRIPE",
+ "cat_color": "SKY",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484536172595",
+ "title": "Pacific Stripe - Taupe & Silver | Scalamandre",
+ "sampleSku": "DWA-89154-Sample",
+ "rollSku": "DWA-89154",
+ "catalog_dw_sku": "DWSC-112558",
+ "price_trade": 130,
+ "rollRetail": 235.29,
+ "csv_retail": 235.29,
+ "title_pattern": "Pacific Stripe",
+ "title_color": "Taupe & Silver",
+ "cat_pattern": "PACIFIC STRIPE",
+ "cat_color": "TAUPE & SILVER",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484538040371",
+ "title": "Primavera - French Grey | Scalamandre",
+ "sampleSku": "DWA-89119-Sample",
+ "rollSku": "DWA-89119",
+ "catalog_dw_sku": "DWSC-112468",
+ "price_trade": 70,
+ "rollRetail": 126.7,
+ "csv_retail": 126.7,
+ "title_pattern": "Primavera",
+ "title_color": "French Grey",
+ "cat_pattern": "PRIMAVERA",
+ "cat_color": "FRENCH GREY",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484536467507",
+ "title": "Rainshadow - Blue Ice | Scalamandre",
+ "sampleSku": "DWA-89145-Sample",
+ "rollSku": "DWA-89145",
+ "catalog_dw_sku": "DWSC-112562",
+ "price_trade": 130,
+ "rollRetail": 235.29,
+ "csv_retail": 235.29,
+ "title_pattern": "Rainshadow",
+ "title_color": "Blue Ice",
+ "cat_pattern": "RAINSHADOW",
+ "cat_color": "BLUE ICE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484536434739",
+ "title": "Rainshadow - Champagne | Scalamandre",
+ "sampleSku": "DWA-89146-Sample",
+ "rollSku": "DWA-89146",
+ "catalog_dw_sku": "DWSC-112560",
+ "price_trade": 130,
+ "rollRetail": 235.29,
+ "csv_retail": 235.29,
+ "title_pattern": "Rainshadow",
+ "title_color": "Champagne",
+ "cat_pattern": "RAINSHADOW",
+ "cat_color": "CHAMPAGNE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484536401971",
+ "title": "Rainshadow - Silver | Scalamandre",
+ "sampleSku": "DWA-89147-Sample",
+ "rollSku": "DWA-89147",
+ "catalog_dw_sku": "DWSC-112561",
+ "price_trade": 130,
+ "rollRetail": 235.29,
+ "csv_retail": 235.29,
+ "title_pattern": "Rainshadow",
+ "title_color": "Silver",
+ "cat_pattern": "RAINSHADOW",
+ "cat_color": "SILVER",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481154089011",
+ "title": "Sagano - Beige | Scalamandre",
+ "sampleSku": "DWA-89428-Sample",
+ "rollSku": "DWA-89428",
+ "catalog_dw_sku": "DWSC-112408",
+ "price_trade": 140,
+ "rollRetail": 253.39,
+ "csv_retail": 253.39,
+ "title_pattern": "Sagano",
+ "title_color": "Beige",
+ "cat_pattern": "SAGANO - GRASSCLOTH",
+ "cat_color": "BEIGE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481154187315",
+ "title": "Sagano - Bronzo | Scalamandre",
+ "sampleSku": "DWA-89427-Sample",
+ "rollSku": "DWA-89427",
+ "catalog_dw_sku": "DWSC-112409",
+ "price_trade": 140,
+ "rollRetail": 253.39,
+ "csv_retail": 253.39,
+ "title_pattern": "Sagano",
+ "title_color": "Bronzo",
+ "cat_pattern": "SAGANO - GRASSCLOTH",
+ "cat_color": "BRONZO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481154220083",
+ "title": "Sagano - Giallo | Scalamandre",
+ "sampleSku": "DWA-89426-Sample",
+ "rollSku": "DWA-89426",
+ "catalog_dw_sku": "DWSC-112410",
+ "price_trade": 140,
+ "rollRetail": 253.39,
+ "csv_retail": 253.39,
+ "title_pattern": "Sagano",
+ "title_color": "Giallo",
+ "cat_pattern": "SAGANO - GRASSCLOTH",
+ "cat_color": "GIALLO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481154252851",
+ "title": "Sagano - Grigio | Scalamandre",
+ "sampleSku": "DWA-89425-Sample",
+ "rollSku": "DWA-89425",
+ "catalog_dw_sku": "DWSC-112411",
+ "price_trade": 140,
+ "rollRetail": 253.39,
+ "csv_retail": 253.39,
+ "title_pattern": "Sagano",
+ "title_color": "Grigio",
+ "cat_pattern": "SAGANO - GRASSCLOTH",
+ "cat_color": "GRIGIO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481154285619",
+ "title": "Sagano - Verde | Scalamandre",
+ "sampleSku": "DWA-89424-Sample",
+ "rollSku": "DWA-89424",
+ "catalog_dw_sku": "DWSC-112412",
+ "price_trade": 140,
+ "rollRetail": 253.39,
+ "csv_retail": 253.39,
+ "title_pattern": "Sagano",
+ "title_color": "Verde",
+ "cat_pattern": "SAGANO - GRASSCLOTH",
+ "cat_color": "VERDE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484538105907",
+ "title": "Shantung Garden - Bloom | Scalamandre",
+ "sampleSku": "DWA-89118-Sample",
+ "rollSku": "DWA-89118",
+ "catalog_dw_sku": "DWSC-112470",
+ "price_trade": 142,
+ "rollRetail": 257.01,
+ "csv_retail": 257.01,
+ "title_pattern": "Shantung Garden",
+ "title_color": "Bloom",
+ "cat_pattern": "SHANTUNG GARDEN",
+ "cat_color": "BLOOM",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481155891251",
+ "title": "Sisal - Acorn | Scalamandre",
+ "sampleSku": "DWA-89382-Sample",
+ "rollSku": "DWA-89382",
+ "catalog_dw_sku": "DWSC-112618",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Acorn",
+ "cat_pattern": "SISAL",
+ "cat_color": "ACORN",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484534534195",
+ "title": "Sisal - Amethyst | Scalamandre",
+ "sampleSku": "DWA-89177-Sample",
+ "rollSku": "DWA-89177",
+ "catalog_dw_sku": "DWSC-112642",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Amethyst",
+ "cat_pattern": "SISAL",
+ "cat_color": "AMETHYST",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481156546611",
+ "title": "Sisal - Azure | Scalamandre",
+ "sampleSku": "DWA-89374-Sample",
+ "rollSku": "DWA-89374",
+ "catalog_dw_sku": "DWSC-112625",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Azure",
+ "cat_pattern": "SISAL",
+ "cat_color": "AZURE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481155760179",
+ "title": "Sisal - Biscuit | Scalamandre",
+ "sampleSku": "DWA-89384-Sample",
+ "rollSku": "DWA-89384",
+ "catalog_dw_sku": "DWSC-112616",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Biscuit",
+ "cat_pattern": "SISAL",
+ "cat_color": "BISCUIT",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484481908787",
+ "title": "Sisal - Blue Heather | Scalamandre",
+ "sampleSku": "DWA-89310-Sample",
+ "rollSku": "DWA-89310",
+ "catalog_dw_sku": "DWSC-112640",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Blue Heather",
+ "cat_pattern": "SISAL",
+ "cat_color": "BLUE HEATHER",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484534599731",
+ "title": "Sisal - Blush | Scalamandre",
+ "sampleSku": "DWA-89176-Sample",
+ "rollSku": "DWA-89176",
+ "catalog_dw_sku": "DWSC-112643",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Blush",
+ "cat_pattern": "SISAL",
+ "cat_color": "BLUSH",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484534698035",
+ "title": "Sisal - Brass | Scalamandre",
+ "sampleSku": "DWA-89175-Sample",
+ "rollSku": "DWA-89175",
+ "catalog_dw_sku": "DWSC-112644",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Brass",
+ "cat_pattern": "SISAL",
+ "cat_color": "BRASS",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484534435891",
+ "title": "Sisal - Caribbean | Scalamandre",
+ "sampleSku": "DWA-89178-Sample",
+ "rollSku": "DWA-89178",
+ "catalog_dw_sku": "DWSC-112639",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Caribbean",
+ "cat_pattern": "SISAL",
+ "cat_color": "CARIBBEAN",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484534370355",
+ "title": "Sisal - Celestial | Scalamandre",
+ "sampleSku": "DWA-89179-Sample",
+ "rollSku": "DWA-89179",
+ "catalog_dw_sku": "DWSC-112638",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Celestial",
+ "cat_pattern": "SISAL",
+ "cat_color": "CELESTIAL",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481156808755",
+ "title": "Sisal - Cilantro | Scalamandre",
+ "sampleSku": "DWA-89368-Sample",
+ "rollSku": "DWA-89368",
+ "catalog_dw_sku": "DWSC-112631",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Cilantro",
+ "cat_pattern": "SISAL",
+ "cat_color": "CILANTRO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481156644915",
+ "title": "Sisal - Cottage | Scalamandre",
+ "sampleSku": "DWA-89372-Sample",
+ "rollSku": "DWA-89372",
+ "catalog_dw_sku": "DWSC-112627",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Cottage",
+ "cat_pattern": "SISAL",
+ "cat_color": "COTTAGE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484481941555",
+ "title": "Sisal - Dusk | Scalamandre",
+ "sampleSku": "DWA-89309-Sample",
+ "rollSku": "DWA-89309",
+ "catalog_dw_sku": "DWSC-112641",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Dusk",
+ "cat_pattern": "SISAL",
+ "cat_color": "DUSK",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481156612147",
+ "title": "Sisal - Eve | Scalamandre",
+ "sampleSku": "DWA-89373-Sample",
+ "rollSku": "DWA-89373",
+ "catalog_dw_sku": "DWSC-112626",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Eve",
+ "cat_pattern": "SISAL",
+ "cat_color": "EVE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481156939827",
+ "title": "Sisal - Evening | Scalamandre",
+ "sampleSku": "DWA-89364-Sample",
+ "rollSku": "DWA-89364",
+ "catalog_dw_sku": "DWSC-112634",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Evening",
+ "cat_pattern": "SISAL",
+ "cat_color": "EVENING",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484534173747",
+ "title": "Sisal - Greige | Scalamandre",
+ "sampleSku": "DWA-89181-Sample",
+ "rollSku": "DWA-89181",
+ "catalog_dw_sku": "DWSC-112635",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Greige",
+ "cat_pattern": "SISAL",
+ "cat_color": "GREIGE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481156907059",
+ "title": "Sisal - Imperial | Scalamandre",
+ "sampleSku": "DWA-89365-Sample",
+ "rollSku": "DWA-89365",
+ "catalog_dw_sku": "DWSC-112633",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Imperial",
+ "cat_pattern": "SISAL",
+ "cat_color": "IMPERIAL",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481156775987",
+ "title": "Sisal - Leaf | Scalamandre",
+ "sampleSku": "DWA-89369-Sample",
+ "rollSku": "DWA-89369",
+ "catalog_dw_sku": "DWSC-112630",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Leaf",
+ "cat_pattern": "SISAL",
+ "cat_color": "LEAF",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481156710451",
+ "title": "Sisal - Meadow | Scalamandre",
+ "sampleSku": "DWA-89371-Sample",
+ "rollSku": "DWA-89371",
+ "catalog_dw_sku": "DWSC-112628",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Meadow",
+ "cat_pattern": "SISAL",
+ "cat_color": "MEADOW",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481155727411",
+ "title": "Sisal - Meringue | Scalamandre",
+ "sampleSku": "DWA-89385-Sample",
+ "rollSku": "DWA-89385",
+ "catalog_dw_sku": "DWSC-112615",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Meringue",
+ "cat_pattern": "SISAL",
+ "cat_color": "MERINGUE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484534272051",
+ "title": "Sisal - Mineral | Scalamandre",
+ "sampleSku": "DWA-89180-Sample",
+ "rollSku": "DWA-89180",
+ "catalog_dw_sku": "DWSC-112636",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Mineral",
+ "cat_pattern": "SISAL",
+ "cat_color": "MINERAL",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481156087859",
+ "title": "Sisal - Oxide | Scalamandre",
+ "sampleSku": "DWA-89379-Sample",
+ "rollSku": "DWA-89379",
+ "catalog_dw_sku": "DWSC-112620",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Oxide",
+ "cat_pattern": "SISAL",
+ "cat_color": "OXIDE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484481876019",
+ "title": "Sisal - Pale Jade | Scalamandre",
+ "sampleSku": "DWA-89311-Sample",
+ "rollSku": "DWA-89311",
+ "catalog_dw_sku": "DWSC-112637",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Pale Jade",
+ "cat_pattern": "SISAL",
+ "cat_color": "PALE JADE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481156153395",
+ "title": "Sisal - Pewter | Scalamandre",
+ "sampleSku": "DWA-89378-Sample",
+ "rollSku": "DWA-89378",
+ "catalog_dw_sku": "DWSC-112621",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Pewter",
+ "cat_pattern": "SISAL",
+ "cat_color": "PEWTER",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481156874291",
+ "title": "Sisal - Royalty | Scalamandre",
+ "sampleSku": "DWA-89366-Sample",
+ "rollSku": "DWA-89366",
+ "catalog_dw_sku": "DWSC-112632",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Royalty",
+ "cat_pattern": "SISAL",
+ "cat_color": "ROYALTY",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481155956787",
+ "title": "Sisal - Sequoia | Scalamandre",
+ "sampleSku": "DWA-89381-Sample",
+ "rollSku": "DWA-89381",
+ "catalog_dw_sku": "DWSC-112619",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Sequoia",
+ "cat_pattern": "SISAL",
+ "cat_color": "SEQUOIA",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481156415539",
+ "title": "Sisal - Slate | Scalamandre",
+ "sampleSku": "DWA-89375-Sample",
+ "rollSku": "DWA-89375",
+ "catalog_dw_sku": "DWSC-112624",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Slate",
+ "cat_pattern": "SISAL",
+ "cat_color": "SLATE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481156743219",
+ "title": "Sisal - Spring | Scalamandre",
+ "sampleSku": "DWA-89370-Sample",
+ "rollSku": "DWA-89370",
+ "catalog_dw_sku": "DWSC-112629",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Spring",
+ "cat_pattern": "SISAL",
+ "cat_color": "SPRING",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481156350003",
+ "title": "Sisal - Steeple | Scalamandre",
+ "sampleSku": "DWA-89376-Sample",
+ "rollSku": "DWA-89376",
+ "catalog_dw_sku": "DWSC-112623",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Steeple",
+ "cat_pattern": "SISAL",
+ "cat_color": "STEEPLE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481155792947",
+ "title": "Sisal - Wheat | Scalamandre",
+ "sampleSku": "DWA-89383-Sample",
+ "rollSku": "DWA-89383",
+ "catalog_dw_sku": "DWSC-112617",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Wheat",
+ "cat_pattern": "SISAL",
+ "cat_color": "WHEAT",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481156251699",
+ "title": "Sisal - Whisper | Scalamandre",
+ "sampleSku": "DWA-89377-Sample",
+ "rollSku": "DWA-89377",
+ "catalog_dw_sku": "DWSC-112622",
+ "price_trade": 282,
+ "rollRetail": 510.41,
+ "csv_retail": 510.41,
+ "title_pattern": "Sisal",
+ "title_color": "Whisper",
+ "cat_pattern": "SISAL",
+ "cat_color": "WHISPER",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481154318387",
+ "title": "Sogi - Avorio | Scalamandre",
+ "sampleSku": "DWA-89423-Sample",
+ "rollSku": "DWA-89423",
+ "catalog_dw_sku": "DWSC-112414",
+ "price_trade": 265,
+ "rollRetail": 479.64,
+ "csv_retail": 479.64,
+ "title_pattern": "Sogi",
+ "title_color": "Avorio",
+ "cat_pattern": "SOGI - VINYL WALLCOVERING",
+ "cat_color": "AVORIO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481154449459",
+ "title": "Sogi - Blu | Scalamandre",
+ "sampleSku": "DWA-89419-Sample",
+ "rollSku": "DWA-89419",
+ "catalog_dw_sku": "DWSC-112416",
+ "price_trade": 265,
+ "rollRetail": 479.64,
+ "csv_retail": 479.64,
+ "title_pattern": "Sogi",
+ "title_color": "Blu",
+ "cat_pattern": "SOGI - VINYL WALLCOVERING",
+ "cat_color": "BLU",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481154416691",
+ "title": "Sogi - Rosso | Scalamandre",
+ "sampleSku": "DWA-89420-Sample",
+ "rollSku": "DWA-89420",
+ "catalog_dw_sku": "DWSC-112415",
+ "price_trade": 265,
+ "rollRetail": 479.64,
+ "csv_retail": 479.64,
+ "title_pattern": "Sogi",
+ "title_color": "Rosso",
+ "cat_pattern": "SOGI - VINYL WALLCOVERING",
+ "cat_color": "ROSSO",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4481154514995",
+ "title": "Sogi - Verde | Scalamandre",
+ "sampleSku": "DWA-89418-Sample",
+ "rollSku": "DWA-89418",
+ "catalog_dw_sku": "DWSC-112413",
+ "price_trade": 265,
+ "rollRetail": 479.64,
+ "csv_retail": 479.64,
+ "title_pattern": "Sogi",
+ "title_color": "Verde",
+ "cat_pattern": "SOGI - VINYL WALLCOVERING",
+ "cat_color": "VERDE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4486283886643",
+ "title": "Summer Palace - Porcelain | Scalamandre",
+ "sampleSku": "DWA-82591-Sample",
+ "rollSku": "DWA-82591",
+ "catalog_dw_sku": "DWSC-112840",
+ "price_trade": 144,
+ "rollRetail": 260.63,
+ "csv_retail": 260.63,
+ "title_pattern": "Summer Palace",
+ "title_color": "Porcelain",
+ "cat_pattern": "SUMMER PALACE",
+ "cat_color": "PORCELAIN",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484538204211",
+ "title": "Surat Sisal - Burnished Gold On Mineral | Scalamandre",
+ "sampleSku": "DWA-89116-Sample",
+ "rollSku": "DWA-89116",
+ "catalog_dw_sku": "DWSC-112429",
+ "price_trade": 104,
+ "rollRetail": 188.24,
+ "csv_retail": 188.24,
+ "title_pattern": "Surat Sisal",
+ "title_color": "Burnished Gold On Mineral",
+ "cat_pattern": "SURAT SISAL",
+ "cat_color": "BURNISHED GOLD ON MINERAL",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484537221171",
+ "title": "Suzhou Lattice - Alabaster | Scalamandre",
+ "sampleSku": "DWA-89133-Sample",
+ "rollSku": "DWA-89133",
+ "catalog_dw_sku": "DWSC-111305",
+ "price_trade": 24.75,
+ "rollRetail": 44.8,
+ "csv_retail": 44.8,
+ "title_pattern": "Suzhou Lattice",
+ "title_color": "Alabaster",
+ "cat_pattern": "SUZHOU LATTICE",
+ "cat_color": "ALABASTER",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484537352243",
+ "title": "Suzhou Lattice - Aquamarine | Scalamandre",
+ "sampleSku": "DWA-89131-Sample",
+ "rollSku": "DWA-89131",
+ "catalog_dw_sku": "DWSC-111304",
+ "price_trade": 24.75,
+ "rollRetail": 44.8,
+ "csv_retail": 44.8,
+ "title_pattern": "Suzhou Lattice",
+ "title_color": "Aquamarine",
+ "cat_pattern": "SUZHOU LATTICE",
+ "cat_color": "AQUAMARINE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484485447731",
+ "title": "Suzhou Lattice - French Grey | Scalamandre",
+ "sampleSku": "DWA-89274-Sample",
+ "rollSku": "DWA-89274",
+ "catalog_dw_sku": "DWSC-111306",
+ "price_trade": 24.75,
+ "rollRetail": 44.8,
+ "csv_retail": 44.8,
+ "title_pattern": "Suzhou Lattice",
+ "title_color": "French Grey",
+ "cat_pattern": "SUZHOU LATTICE",
+ "cat_color": "FRENCH GREY",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484537745459",
+ "title": "Suzhou Lattice Sisal - Mineral | Scalamandre",
+ "sampleSku": "DWA-89126-Sample",
+ "rollSku": "DWA-89126",
+ "catalog_dw_sku": "DWSC-112435",
+ "price_trade": 104,
+ "rollRetail": 188.24,
+ "csv_retail": 188.24,
+ "title_pattern": "Suzhou Lattice Sisal",
+ "title_color": "Mineral",
+ "cat_pattern": "SUZHOU LATTICE SISAL",
+ "cat_color": "MINERAL",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484485546035",
+ "title": "Suzhou Lattice Sisal - Silver On Pewter | Scalamandre",
+ "sampleSku": "DWA-89272-Sample",
+ "rollSku": "DWA-89272",
+ "catalog_dw_sku": "DWSC-112436",
+ "price_trade": 104,
+ "rollRetail": 188.24,
+ "csv_retail": 188.24,
+ "title_pattern": "Suzhou Lattice Sisal",
+ "title_color": "Silver On Pewter",
+ "cat_pattern": "SUZHOU LATTICE SISAL",
+ "cat_color": "SILVER ON PEWTER",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484536664115",
+ "title": "Tortoiseshell - Champagne | Scalamandre",
+ "sampleSku": "DWA-89139-Sample",
+ "rollSku": "DWA-89139",
+ "catalog_dw_sku": "DWSC-112564",
+ "price_trade": 138,
+ "rollRetail": 249.77,
+ "csv_retail": 249.77,
+ "title_pattern": "Tortoiseshell",
+ "title_color": "Champagne",
+ "cat_pattern": "TORTOISESHELL",
+ "cat_color": "CHAMPAGNE",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484536729651",
+ "title": "Tortoiseshell - Pewter | Scalamandre",
+ "sampleSku": "DWA-89138-Sample",
+ "rollSku": "DWA-89138",
+ "catalog_dw_sku": "DWSC-112563",
+ "price_trade": 138,
+ "rollRetail": 249.77,
+ "csv_retail": 249.77,
+ "title_pattern": "Tortoiseshell",
+ "title_color": "Pewter",
+ "cat_pattern": "TORTOISESHELL",
+ "cat_color": "PEWTER",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484539023411",
+ "title": "Veronica Beaded Grasscloth - Burnished Gold | Scalamandre",
+ "sampleSku": "DWA-89101-Sample",
+ "rollSku": "DWA-89101",
+ "catalog_dw_sku": "DWSC-112438",
+ "price_trade": 370,
+ "rollRetail": 669.68,
+ "csv_retail": 669.68,
+ "title_pattern": "Veronica Beaded Grasscloth",
+ "title_color": "Burnished Gold",
+ "cat_pattern": "VERONICA BEADED GRASSCLOTH",
+ "cat_color": "BURNISHED GOLD",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ },
+ {
+ "pid": "4484485808179",
+ "title": "Veronica Beaded Grasscloth - Carbon | Scalamandre",
+ "sampleSku": "DWA-89265-Sample",
+ "rollSku": "DWA-89265",
+ "catalog_dw_sku": "DWSC-112440",
+ "price_trade": 370,
+ "rollRetail": 669.68,
+ "csv_retail": 669.68,
+ "title_pattern": "Veronica Beaded Grasscloth",
+ "title_color": "Carbon",
+ "cat_pattern": "VERONICA BEADED GRASSCLOTH",
+ "cat_color": "CARBON",
+ "patMatch": true,
+ "colMatch": true,
+ "matchOk": true,
+ "retail_matches_csv": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tk10978-scalamandre/data/skips.json b/tk10978-scalamandre/data/skips.json
new file mode 100644
index 0000000..0637a08
--- /dev/null
+++ b/tk10978-scalamandre/data/skips.json
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tk10978-scalamandre/repair.mjs b/tk10978-scalamandre/repair.mjs
new file mode 100644
index 0000000..36a1e2f
--- /dev/null
+++ b/tk10978-scalamandre/repair.mjs
@@ -0,0 +1,121 @@
+#!/usr/bin/env node
+// TK-10978 — Scalamandre ADD-ROLL recovery (customer-facing Shopify write).
+//
+// Scalamandre "unbuyable" products are GENUINELY sample-only: a single variant
+// option1='Sample' @ $4.25 (live-confirmed 3/3, then again here per product).
+// Recovery = ADD a sellable "Sold Per Roll" variant at reconciled retail, and
+// LEAVE the $4.25 Sample untouched. (Distinct from the WG RR-defect, which
+// RELABELED a mispriced lone Sample. Here we ADD — we never touch the sample.)
+//
+// VERIFY-BEFORE-ACT (per product, live, at write time — never trust the plan):
+// 1. GET product live; must be exactly 1 variant.
+// 2. lone variant option1 == 'Sample' (case-insensitive).
+// 3. lone variant price <= 4.50 (genuine sample; NOT the RR-defect).
+// 4. lone variant SKU == expected sampleSku from the plan (right product).
+// 5. derived rollSku not already present as any variant SKU (idempotent / no double-add).
+// 6. match sanity: plan row's matchOk true (title pattern+color == catalog).
+// 7. SANITY-RANGE on retail: 10 < rollRetail < 10000 (guard NULL/decimal mispricing).
+// Any guard fail -> SKIP + log; never a partial/ambiguous write.
+//
+// Recovery action: POST a new variant {option1:'Sold Per Roll', price:rollRetail,
+// sku:rollSku, inventory_policy:'deny', inventory_management:'shopify'}.
+// Reversibility FIRST: prestate.jsonl written BEFORE the write; undo = DELETE the
+// added roll variant (the sample is untouched). Ledgered per product.
+//
+// Usage: node repair.mjs [--only=<pid>] [--limit=N] [--live] default = dry-run.
+import { readFileSync, appendFileSync, writeFileSync, mkdirSync } from 'node:fs';
+import { execSync } from 'child_process';
+
+const TOKEN = execSync(`grep -E '^SHOPIFY_ADMIN_TOKEN=' ${process.env.HOME}/Projects/secrets-manager/.env|cut -d= -f2-`).toString().trim();
+const DOMAIN = 'designer-laboratory-sandbox.myshopify.com', API = '2024-10';
+const REST = `https://${DOMAIN}/admin/api/${API}`;
+const hdr = { 'X-Shopify-Access-Token': TOKEN, 'Content-Type': 'application/json' };
+const LIVE = process.argv.includes('--live');
+const ONLY = (process.argv.find(a => a.startsWith('--only=')) || '').split('=')[1];
+const LIMIT = Number((process.argv.find(a => a.startsWith('--limit=')) || '').split('=')[1] || 0);
+
+const dataDir = new URL('./data', import.meta.url).pathname; mkdirSync(dataDir, { recursive: true });
+const PRESTATE = `${dataDir}/prestate.jsonl`;
+const SKIPS = `${dataDir}/skips.json`;
+const LEDGER = `${process.env.HOME}/.claude/yolo-queue/executed-reversible/ledger.jsonl`;
+
+const { plan } = JSON.parse(readFileSync(`${dataDir}/plan.json`, 'utf8'));
+let list = plan;
+if (ONLY) list = list.filter(p => String(p.pid) === String(ONLY));
+if (LIMIT > 0) list = list.slice(0, LIMIT);
+
+const sleep = ms => new Promise(r => setTimeout(r, ms));
+async function api(path, opts = {}) {
+ for (let a = 0; a < 6; a++) {
+ const res = await fetch(`${REST}${path}`, { headers: hdr, ...opts });
+ if (res.status === 429) { await sleep(2500); continue; }
+ const t = await res.text(); let j; try { j = JSON.parse(t); } catch { j = { _raw: t }; }
+ return { status: res.status, json: j };
+ }
+ return { status: 429, json: {} };
+}
+
+let acted = 0, skipped = 0, failed = 0;
+const skips = [];
+for (const c of list) {
+ const pid = c.pid;
+
+ // GUARD 6 (from plan) + 7 (range) — cheap, before any network
+ if (!c.matchOk) { console.log('SKIP', pid, 'match-sanity false'); skips.push({ pid, reason: 'match_sanity_false', title: c.title }); skipped++; continue; }
+ if (!(c.rollRetail > 10 && c.rollRetail < 10000)) { console.log('SKIP', pid, `retail out of range ${c.rollRetail}`); skips.push({ pid, reason: `retail_range ${c.rollRetail}`, title: c.title }); skipped++; continue; }
+
+ // HARD re-read live + re-guard
+ const { status, json } = await api(`/products/${pid}.json`);
+ if (status !== 200 || !json.product) { console.log('SKIP', pid, 'fetch', status); skips.push({ pid, reason: `fetch ${status}` }); skipped++; continue; }
+ const p = json.product, vs = p.variants || [];
+
+ if (vs.length !== 1) { console.log('SKIP', pid, `nvars=${vs.length} (already restructured?)`); skips.push({ pid, reason: `nvars=${vs.length}`, title: p.title }); skipped++; continue; }
+ const v = vs[0];
+ const opt1 = (v.option1 || '').trim();
+ const sku = (v.sku || '').trim();
+ const price = parseFloat(v.price);
+ if (opt1.toLowerCase() !== 'sample') { console.log('SKIP', pid, `lone opt1='${opt1}' (not Sample)`); skips.push({ pid, reason: `opt1=${opt1}`, title: p.title }); skipped++; continue; }
+ if (!(price <= 4.5)) { console.log('SKIP', pid, `lone price=${price} (>4.50 = not genuine sample / RR-defect)`); skips.push({ pid, reason: `price=${price}`, title: p.title }); skipped++; continue; }
+ if (sku.toLowerCase() !== String(c.sampleSku).toLowerCase()) { console.log('SKIP', pid, `lone sku='${sku}' != expected '${c.sampleSku}'`); skips.push({ pid, reason: `sku_mismatch ${sku}`, title: p.title }); skipped++; continue; }
+ // GUARD 5: roll SKU must NOT already exist as a variant SKU (idempotent / no double-add)
+ if (vs.some(x => (x.sku || '').toLowerCase() === String(c.rollSku).toLowerCase())) { console.log('SKIP', pid, `roll sku ${c.rollSku} already present`); skips.push({ pid, reason: `roll_sku_present ${c.rollSku}`, title: p.title }); skipped++; continue; }
+
+ const rollSku = c.rollSku;
+ const rollPrice = c.rollRetail.toFixed(2);
+
+ if (!LIVE) {
+ console.log(`DRY ${pid} ${p.title}`);
+ console.log(` keep Sample[${v.id}] sku ${sku} $${v.price} (untouched)`);
+ console.log(` + ADD "Sold Per Roll" sku ${rollSku} $${rollPrice} (deny) [catalog ${c.catalog_dw_sku}, trade $${c.price_trade}]`);
+ acted++; continue;
+ }
+
+ // reversibility FIRST
+ const preRec = { ts: new Date().toISOString(), pid, title: p.title, sampleVariantId: v.id, sampleSku: sku, rollSku, rollPrice, catalog_dw_sku: c.catalog_dw_sku };
+ appendFileSync(PRESTATE, JSON.stringify(preRec) + '\n');
+
+ // ADD the "Sold Per Roll" variant. Preserve the option name the product uses.
+ const post = await api(`/products/${pid}/variants.json`, { method: 'POST', body: JSON.stringify({ variant: {
+ option1: 'Sold Per Roll', price: rollPrice, sku: rollSku,
+ inventory_policy: 'deny', inventory_management: 'shopify',
+ taxable: v.taxable !== undefined ? v.taxable : true } }) });
+ if (post.status !== 201 && post.status !== 200) {
+ console.log('ERR', pid, 'roll-add', post.status, JSON.stringify(post.json).slice(0, 200));
+ skips.push({ pid, reason: `roll-add ${post.status}`, detail: JSON.stringify(post.json).slice(0, 200), title: p.title }); failed++; continue;
+ }
+ const nv = post.json.variant;
+
+ const undo = `# delete the added Sold Per Roll variant (the $4.25 Sample was left untouched)\n` +
+ `curl -s -X DELETE "${REST}/products/${pid}/variants/${nv.id}.json" -H "X-Shopify-Access-Token: $SHOPIFY_ADMIN_TOKEN"`;
+ appendFileSync(LEDGER, JSON.stringify({
+ ts: new Date().toISOString(), agent: 'vp-dw-commerce', ticket: 'TK-10978',
+ action: `add-roll Scalamandre ${pid} (${c.catalog_dw_sku}): ADD "Sold Per Roll" sku ${rollSku} $${rollPrice} (trade $${c.price_trade}); kept $4.25 Sample ${sku} untouched`,
+ product_id: pid, added_roll_variant_id: nv.id, sample_variant_id: v.id, blast_radius: 1,
+ undo_cmd: undo,
+ verify: `curl -s "${REST}/products/${pid}.json" -H "X-Shopify-Access-Token: $SHOPIFY_ADMIN_TOKEN"|jq '.product.variants[]|{sku,option1,price}'`,
+ }) + '\n');
+ acted++; console.log(`ACTED ${pid} + roll ${rollSku} $${rollPrice} (sample ${sku} kept)`);
+ await sleep(600); // ~2 req/sec (1 write/product + the GET)
+}
+writeFileSync(SKIPS, JSON.stringify(skips, null, 2));
+console.log(`\n${LIVE ? 'LIVE' : 'DRY'} — acted ${acted}, skipped ${skipped}, failed ${failed} (of ${list.length})`);
diff --git a/tk10978-scalamandre/rollback-all.mjs b/tk10978-scalamandre/rollback-all.mjs
new file mode 100644
index 0000000..6ee9b05
--- /dev/null
+++ b/tk10978-scalamandre/rollback-all.mjs
@@ -0,0 +1,27 @@
+#!/usr/bin/env node
+// Reverse the TK-10978 Scalamandre ADD-ROLL recovery: for each acted product,
+// DELETE the added "Sold Per Roll" variant. The $4.25 Sample variant was never
+// touched, so nothing else needs restoring. Reads data/prestate.jsonl.
+// Usage: node rollback-all.mjs [--live] default = dry-run (lists what it would delete).
+import { readFileSync } from 'node:fs';
+import { execSync } from 'child_process';
+const LIVE = process.argv.includes('--live');
+const T = execSync(`grep -E '^SHOPIFY_ADMIN_TOKEN=' ${process.env.HOME}/Projects/secrets-manager/.env|cut -d= -f2-`).toString().trim();
+const DOMAIN = 'designer-laboratory-sandbox.myshopify.com', API = '2024-10';
+const hdr = { 'X-Shopify-Access-Token': T, 'Content-Type': 'application/json' };
+const REST = `https://${DOMAIN}/admin/api/${API}`;
+const lines = readFileSync(new URL('./data/prestate.jsonl', import.meta.url).pathname, 'utf8').trim().split('\n').map(JSON.parse);
+const sleep = ms => new Promise(r => setTimeout(r, ms));
+async function api(path, opts) { const r = await fetch(`${REST}${path}`, { headers: hdr, ...opts }); return { status: r.status, json: await r.json().catch(() => ({})) }; }
+let n = 0;
+for (const l of lines) {
+ const { json } = await api(`/products/${l.pid}.json`, {});
+ const vs = json.product?.variants || [];
+ // the added roll variant: sku==rollSku, option1='Sold Per Roll', not the sample id
+ const added = vs.find(v => (v.sku || '').toLowerCase() === l.rollSku.toLowerCase() && v.id !== l.sampleVariantId);
+ if (!added) { console.log('skip', l.pid, 'no added roll variant found (already reverted?)'); continue; }
+ if (!LIVE) { console.log('WOULD DELETE', l.pid, 'variant', added.id, l.rollSku, '$' + added.price); continue; }
+ await api(`/products/${l.pid}/variants/${added.id}.json`, { method: 'DELETE' });
+ n++; console.log('deleted', l.pid, l.rollSku); await sleep(400);
+}
+console.log(LIVE ? `reverted ${n}` : 'dry-run complete');
← 8408ecf auto-data-snapshot: 2026-08-30T17:49:20 (1 data files) — dat
·
back to Dw Unbuyable Recovery Pilot
·
TK-10978 Scalamandre pilot: 20 add-roll live+verified buyabl b379051 →