← 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));