← back to Filemaker Mcp
scripts/fix-dummy-hdr.mjs
42 lines
// Repair dummy invoice 999999 (recordId 64904) Otto's way, via the canonical
// "Invoice to Client Copy" layout: RETAIL fields + tax recalc + GRAND TOTAL readback.
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 HDR = 'Invoice to Client Copy';
const ID = 64904;
const steps = [
{ 'NET 1(1)': 131.94 },
{ 'NET 1(1)': 131.95 },
{ 'Q1(2)': 3 },
{ 'Q1(2)': 4 },
];
for (const fieldData of steps) {
try {
const r = await fm.updateRecord('invoice', HDR, ID, fieldData, { dryRun: false });
console.log('patched:', JSON.stringify(r.changes ?? r));
} catch (e) { console.log('skip', JSON.stringify(fieldData), '->', e.message); }
}
const rec = await fm.getRecord('invoice', HDR, ID);
const f = rec.fieldData;
console.log('READBACK via HDR:', JSON.stringify({
Invoice: f['Invoice'],
'RETAIL 1(1)': f['RETAIL 1(1)'], 'NET 1(1)': f['NET 1(1)'], 'TOTAL 1(1)': f['TOTAL 1(1)'],
'RETAIL 1(2)': f['RETAIL 1(2)'], 'NET 1(2)': f['NET 1(2)'], 'TOTAL 1(2)': f['TOTAL 1(2)'],
'merch tot2': f['merch tot2'],
'SALES TAX': f['SALES TAX'],
'SALES TAX YN': f['SALES TAX YN'],
'SHIPPING HANDLING': f['SHIPPING HANDLING'],
'GRAND TOTAL': f['GRAND TOTAL'],
'PAID ON ACCOUNT': f['PAID ON ACCOUNT'],
'NET DUE 2': f['NET DUE 2'],
}, null, 1));