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