[object Object]

← back to Filemaker Mcp

create 3 missing DWTT Baxter WALLPAPER masters (73433 Navy/73435 Beige/73436 Silver) — recordIds 536615-17; combo sku + Dw Retail Price are calcs, omitted from write

9bad19ac06574d7f02593f50e6e51450a641d729 · 2026-07-01 15:44:05 -0700 · Steve Abrams

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Files touched

Diff

commit 9bad19ac06574d7f02593f50e6e51450a641d729
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed Jul 1 15:44:05 2026 -0700

    create 3 missing DWTT Baxter WALLPAPER masters (73433 Navy/73435 Beige/73436 Silver) — recordIds 536615-17; combo sku + Dw Retail Price are calcs, omitted from write
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---
 scripts/create-dwtt-baxter-73433-35-36.mjs | 84 ++++++++++++++++++++++++++++++
 1 file changed, 84 insertions(+)

diff --git a/scripts/create-dwtt-baxter-73433-35-36.mjs b/scripts/create-dwtt-baxter-73433-35-36.mjs
new file mode 100644
index 0000000..b602f91
--- /dev/null
+++ b/scripts/create-dwtt-baxter-73433-35-36.mjs
@@ -0,0 +1,84 @@
+// One-off: create 3 missing WALLPAPER master records for Thibaut Baxter colorways
+// (DWTT-73433 Navy, DWTT-73435 Beige, DWTT-73436 Silver). Specs verified against
+// dw_unified.thibaut_catalog. Sibling DWTT73434 = recordId 536611 (mirrored style).
+// CALC FIELDS (FM error 201 if written): combo sku, Dw Retail Price, comboskuwithdash,
+// comboskuplussample — all omitted from the write; combo sku derives from Series+JS Pattern
+// and Dw Retail Price from its pricing inputs. All verified post-create instead.
+// Usage: node scripts/create-dwtt-baxter-73433-35-36.mjs [--commit]
+// Default (no flags) = dry-run showing the exact fieldData; --commit creates + verifies.
+
+import { readFileSync } from 'node:fs';
+import { fileURLToPath } from 'node:url';
+import { dirname, join } from 'node:path';
+
+const __dir = dirname(fileURLToPath(import.meta.url));
+for (const line of readFileSync(join(__dir, '..', '.env'), 'utf8').split('\n')) {
+  const m = line.match(/^([A-Z_]+)=(.*)$/);
+  if (m && !process.env[m[1]]) process.env[m[1]] = m[2];
+}
+
+const { findRecords, createRecord } = await import('../src/fm-client.js');
+
+const DB = 'WALLPAPER';
+const LAYOUT = '*List Wallpapers - Shopify Detail Database';
+const commit = process.argv.includes('--commit');
+
+const COMMON = {
+  'Series': 'DWTT',
+  'vid': 'Thib',
+  'Width': '20.5"',
+  'Repeat': '5.5"',
+  'Record Type': 'Master',
+  'Date Line Put Up:': '7/1/2026',
+  'MFR MAP PRICE': '',
+  'Net Price': 56.70,
+  'Content': 'Non Woven',
+  'Mfr Name of Pattern': 'Baxter',
+  'Collection': 'SMALL SCALE',
+};
+
+// sku = expected value of the calc field "combo sku" (Series+JS Pattern) — guard/verify only.
+const ROWS = [
+  { sku: 'DWTT73433', 'JS Pattern': '73433', 'Mfr Pattern': 'AT79124', 'mfr pattern number': 'AT79124',
+    'Name of Pattern': 'Baxter, Navy Wallcoverings | Thibaut', 'Color of Pattern': 'Navy', 'Mfr Color of Pattern': 'Navy' },
+  { sku: 'DWTT73435', 'JS Pattern': '73435', 'Mfr Pattern': 'AT79127', 'mfr pattern number': 'AT79127',
+    'Name of Pattern': 'Baxter, Beige Wallcoverings | Thibaut', 'Color of Pattern': 'Beige', 'Mfr Color of Pattern': 'Beige' },
+  { sku: 'DWTT73436', 'JS Pattern': '73436', 'Mfr Pattern': 'AT79129', 'mfr pattern number': 'AT79129',
+    'Name of Pattern': 'Baxter, Silver Wallcoverings | Thibaut', 'Color of Pattern': 'Silver', 'Mfr Color of Pattern': 'Silver' },
+];
+
+for (const { sku, ...row } of ROWS) {
+  // fail-closed duplicate guard
+  let exists = false;
+  try {
+    const { records } = await findRecords(DB, LAYOUT, { 'combo sku': `==${sku}` }, { limit: 1 });
+    exists = records.length > 0;
+    if (exists) console.log(`SKIP ${sku}: already exists as recordId ${records[0].recordId}`);
+  } catch (e) {
+    if (e.fmCode !== '401') throw e; // 401 = no records match = safe to create
+  }
+  if (exists) continue;
+
+  const fieldData = { ...COMMON, ...row };
+  const res = await createRecord(DB, LAYOUT, fieldData, { dryRun: !commit });
+  console.log(commit ? `CREATED ${sku}:` : `DRY RUN ${sku}:`, JSON.stringify(res, null, 1));
+
+  if (commit) {
+    const { records } = await findRecords(DB, LAYOUT, { 'combo sku': `==${sku}` }, { limit: 2 });
+    const f = records[0]?.fieldData || {};
+    console.log(`VERIFY ${sku}:`, JSON.stringify({
+      recordId: records[0]?.recordId,
+      'combo sku': f['combo sku'],
+      'comboskuwithdash': f['comboskuwithdash'],
+      'comboskuplussample': f['comboskuplussample'],
+      'Mfr Pattern': f['Mfr Pattern'],
+      'mfr pattern number': f['mfr pattern number'],
+      'Name of Pattern': f['Name of Pattern'],
+      'Color of Pattern': f['Color of Pattern'],
+      'Dw Retail Price': f['Dw Retail Price'],
+      'Net Price': f['Net Price'],
+      'Width': f['Width'], 'Repeat': f['Repeat'],
+      'Record Type': f['Record Type'], 'Collection': f['Collection'], 'Content': f['Content'],
+    }, null, 1));
+  }
+}

← 2412a37 test: dummy client+invoice demo scripts (999999/Testy McTest  ·  back to Filemaker Mcp  ·  fix DWTT73434 (recordId 536611) Mfr Pattern AT79129->AT79126 94f5487 →