3 lines
2.6 KiB
JavaScript
3 lines
2.6 KiB
JavaScript
import fs from'node:fs';import assert from'node:assert/strict';import crypto from'node:crypto';import{session}from'./sgf-single-http.mjs';const root=JSON.parse(fs.readFileSync('C:/laragon/data/sgf-tempo/run/modular-regression-current.json')).root+'/private/receipt-composition-cc50a276c10c',checks=[],ok=(v,n)=>{assert(v,n);checks.push(n);},c=await session('sgf:commercial_prepare','commercial'),f=await session('sgf:finance_prepare','finance'),a=await session('sgf:accounting_prepare','accounting');const get=async(s,p)=>{const r=await s.get(p);assert.equal(r.status,200,p);return r.json();};const x=await get(c,'/api/service-documents/register?kind=invoice&series=TEST-MULTI-2026&per_page=25&page=1');ok(x.documents.total===2&&x.documents.data.every(r=>r.amount==='1160.00'),'Commercial register lists exactly two new1160 documents');const larger=await get(c,'/api/service-documents/register?kind=invoice&series=TEST-MULTI-2026&per_page=100&page=1');ok(JSON.stringify(x.documents.data)===JSON.stringify(larger.documents.data),'register25/100 same page records');const p=await get(f,'/api/service-receivables/positions?reference_on=2026-11-11&search=TEST-MULTI-2026&per_page=25');ok(p.positions.total===2&&p.totals.recognized_balance==='2320.00'&&p.positions.data.every(r=>r.balance==='1160.00'&&r.allocated==='0.00'),'Finance positions two uncollected1160 total2320');ok(p.positions.data.every(r=>r.due_state==='unknown'),'draft proposed date does not silently become agreed receivable due date');const progress=JSON.parse(fs.readFileSync(root+'/multiline-invoice-http-progress-private.json')).steps;for(const mode of['added','included']){const id=progress[mode+'Issue'].result.id,d=await get(a,'/api/general-ledger/sales?invoice_id='+id);ok(JSON.stringify(d).includes('TEST-MULTI-2026'),'accounting source workspace resolves exact '+mode);const receipt=await c.get('/api/multiline-invoices/invoice-receipts/'+progress[mode+'Issue'].key);ok(receipt.status===200&&(await receipt.json()).result.id===id,'read-only original issuance receipt '+mode);const wrong=await f.get('/api/service-invoices/'+id);ok(wrong.status===409,'direct Commercial API requires explicit module switch '+mode);const draft=await get(c,'/api/multiline-invoices/drafts/'+progress[mode+'Draft'].result.id);ok(draft.invoice.id===id&&draft.invoice.totals.total==='1160.00','issued editor photograph readable '+mode);}
|
|
const file=root+'/multiline-invoice-final-read-http-20261111.json';fs.writeFileSync(file,JSON.stringify({passed:true,checks,business_commands:0,new_demo:false},null,2));console.log(JSON.stringify({passed:true,checks:checks.length,proof:file}));
|