[object Object]

← back to Filemaker Mcp

auto-save: 2026-07-12T08:17:05 (1 files) — scripts/bulk-set-dwnumber-fm.mjs

c23bb05ce57f7c0fca68f6bb4011e4e3c21c9ee1 · 2026-07-12 08:17:08 -0700 · Steve Abrams

Files touched

Diff

commit c23bb05ce57f7c0fca68f6bb4011e4e3c21c9ee1
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Sun Jul 12 08:17:08 2026 -0700

    auto-save: 2026-07-12T08:17:05 (1 files) — scripts/bulk-set-dwnumber-fm.mjs
---
 scripts/bulk-set-dwnumber-fm.mjs | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/scripts/bulk-set-dwnumber-fm.mjs b/scripts/bulk-set-dwnumber-fm.mjs
new file mode 100644
index 0000000..751ab28
--- /dev/null
+++ b/scripts/bulk-set-dwnumber-fm.mjs
@@ -0,0 +1,26 @@
+// Set the DW Number (JS Pattern) + vid=GREEN on the Greenland cork WALLPAPER records.
+// DW SKU becomes DWGL-<num> (num = 500000 + i*10). Matches on Mfr Pattern (the real code).
+// Reads the canonical map from greenland-onboard/data/dwgl-map.json.
+//   node bulk-set-dwnumber-fm.mjs --apply
+import { readFileSync } from 'node:fs';
+import * as fm from '../src/fm-client.js';
+const APPLY = process.argv.includes('--apply');
+const ENTRY = 'Add wallcovering', FULL = '*List Wallpapers - Full View';
+const map = JSON.parse(readFileSync(process.env.HOME + '/Projects/greenland-onboard/data/dwgl-map.json', 'utf8'));
+const sleep = ms => new Promise(r => setTimeout(r, ms));
+
+let ok = 0, skip = 0, fail = 0;
+console.log(`${map.length} DWGL products · ${APPLY ? 'APPLY' : 'DRY-RUN'}`);
+for (const m of map) {
+  const r = await fm.findRecords('WALLPAPER', FULL, { 'Mfr Pattern': '==' + m.mfr, vid: 'GL' }, { limit: 1 }).catch(() => ({ records: [] }));
+  const rec = r.records?.[0];
+  if (!rec) { skip++; if (skip <= 5) console.error(`  ? no record for mfr ${m.mfr}`); continue; }
+  if (!APPLY) { if (ok < 5) console.log(`  ${m.mfr} → JS Pattern=${m.num} vid=GREEN (${m.dwsku})`); ok++; continue; }
+  try {
+    await fm.updateRecord('WALLPAPER', ENTRY, rec.recordId, { 'JS Pattern': m.num, vid: 'GREEN' }, { dryRun: false });
+    // price + sold-per live on the Full View layout
+    try { await fm.updateRecord('WALLPAPER', FULL, rec.recordId, { 'Retail Price': '59.50', 'Sold Per': 'Yard' }, { dryRun: false }); } catch {}
+    ok++; if (ok % 25 === 0) console.log(`  ...${ok}`); await sleep(90);
+  } catch (e) { fail++; console.error(`  FAIL ${m.mfr}: ${e.fmCode || e.message}`); await sleep(250); }
+}
+console.log(`\nDONE. updated=${ok} skipped=${skip} fail=${fail}`);

← b7ae2b7 auto-save: 2026-07-12T07:46:59 (5 files) — scripts/_gl_recon  ·  back to Filemaker Mcp  ·  auto-save: 2026-07-12T08:47:12 (2 files) — scripts/bulk-seri c542aa6 →