import fs from 'node:fs/promises'; import assert from 'node:assert/strict'; const source = await fs.readFile('scripts/supplier-evaluation-check.mjs', 'utf8'); const common = source.slice(source.indexOf('const base ='), source.indexOf('const author =')); const proof = JSON.parse(await fs.readFile('docs/proofs/pilot-replenishment-activation.json', 'utf8')); await new Function('fs', 'assert', 'proof', 'return (async()=>{' + common + ` assert.equal(proof.result, 'applied'); const requester = client(); await requester.enter('requester'); assert.equal((await requester.request('/contexto','POST',{area:'procurement',option:'procurement.internal'})).status,302); const tasks = await requester.request('/requisicoes/tarefas'); assert.equal(tasks.status,200); const task = tasks.page.props.tasks.data.find(row => row.id === 'purchase:' + proof.purchase_id + ':draft'); assert.ok(task); const page = await requester.request(task.href); assert.equal(page.status,200); const r = page.page.props.requisition; assert.equal(r.status,'draft'); assert.equal(r.items.length,1); assert.equal(r.items[0].quantity,'2.000'); assert.equal(r.total_minor,2320); assert.equal(r.steps.length,0); assert.equal(page.page.props.canEdit,true); assert.ok(page.page.props.automaticSource); const checks = []; for (const [role, prepare, review] of [['procurement',true,false],['finance',false,true]]) { const viewer=client(); await viewer.enter(role); assert.equal((await viewer.request('/contexto','POST',{area:'procurement',option:'procurement.internal'})).status,302); const response=await viewer.request('/stock/reposicao?rule_id='+proof.rule_id); assert.equal(response.status,200); assert.equal(response.page.props.canPrepare,prepare); assert.equal(response.page.props.canReview,review); assert.equal(response.page.props.rules.data.length,1); assert.equal(response.page.props.rules.data[0].state,'approved'); checks.push({role,result:'passed'}); } const stock=client(); await stock.enter('warehouse'); assert.equal((await stock.request('/contexto','POST',{area:'procurement',option:'procurement.internal'})).status,302); const availability=await stock.request('/stock/disponibilidade?warehouse_id=1'); assert.equal(availability.status,200); const row=availability.page.props.rows.data.find(row=>row.id===1); assert.equal(row.physical_milli,1000); assert.equal(row.free_milli,1000); await fs.writeFile('docs/proofs/pilot-replenishment-activation-http.json',JSON.stringify({checked_at:new Date().toISOString(),result:'passed',environment:base, purchase_id:r.id,purchase_number:r.number,status:r.status,quantity:r.items[0].quantity,total_minor_mzn:r.total_minor,requester_task:true, automatic_source_reused:true,physical_milli:row.physical_milli,free_milli:row.free_milli,checks, business_commands:false,accounts_or_grants_changed:false,sgf_installation_changed:false,visual_review:false},null,2)); console.log('Rascunho, origem da reposicao, tarefas, competencias e saldo confirmados por HTTP.'); ` + '})()')(fs, assert, proof);