← back to Filemaker Mcp

scripts/relookup-invoice-102387.mjs

43 lines

// Re-fire the WALLPAPER lookups on invoice 102387 (recordId 64919) now that the
// DWKK-120156 master exists (recordId 536618). FM stored lookups refire only when
// the KEY field's value CHANGES, and updateRecord diff-skips same-value writes —
// so each key is re-keyed in two steps: blank -> correct value.
// Keys (from lib/invoice.js): JS Easy SKU # (Layout #47), wc pattern(1) +
// WC Pattern Number AKA DW SKU(1) [dashless] (1-order detail 1 Copy3).
// Usage: node scripts/relookup-invoice-102387.mjs
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 fm = await import('../src/fm-client.js');
const ID = 64919;

const rekeys = [
  ['Layout #47', 'JS Easy SKU #', 'DWKK-120156'],
  ['1-order detail 1 Copy3', 'wc pattern(1)', 'DWKK-120156'],
  ['1-order detail 1 Copy3', 'WC Pattern Number AKA DW SKU(1)', 'DWKK120156'],
];
for (const [layout, field, value] of rekeys) {
  for (const v of ['', value]) {
    try {
      const r = await fm.updateRecord('invoice', layout, ID, { [field]: v }, { dryRun: false });
      console.log(`set ${field}=${JSON.stringify(v)}:`, JSON.stringify(r.changes ?? r.note ?? r));
    } catch (e) { console.log(`FAIL ${field}=${JSON.stringify(v)}: ${e.message}`); }
  }
}

const rec = await fm.getRecord('invoice', '1-order detail 1 Copy3', ID);
const f = rec.fieldData;
console.log('READBACK:', JSON.stringify({
  'wc pattern(1)': f['wc pattern(1)'],
  'WC Pattern Number AKA DW SKU(1)': f['WC Pattern Number AKA DW SKU(1)'],
  'Detail 1 Mfr Number(1)': f['Detail 1 Mfr Number(1)'],
  'wc mfr num lookup(1)': f['wc mfr num lookup(1)'],
  'detail1 dash width': f['detail1 dash width'],
  'DETAIL 1(1)': f['DETAIL 1(1)'],
}, null, 1));