const labels={before:'Antes',after:'Depois',operation:'Operação',action:'Operação',status:'Estado',resulting_status:'Estado resultante',number:'Número',name:'Nome',supplier:'Fornecedor',invoice:'Factura',request:'Requisição',order:'Ordem',budget:'Orçamento',lines:'Linhas',items:'Linhas',description:'Descrição',quantity:'Quantidade',unit:'Unidade',currency:'Moeda',reason:'Fundamento',comment:'Fundamento',justification:'Necessidade',delivery_date:'Data de entrega',delivery_location:'Local de entrega',delivery_note:'Guia de entrega',received_on:'Data de recepção',received_milli:'Recebido',accepted_milli:'Aceite',rejected_milli:'Rejeitado',quantity_milli:'Quantidade',total_minor:'Total',subtotal_minor:'Base',tax_minor:'Imposto documental',unit_price_minor:'Preço unitário',reserved_minor:'Reservado',committed_minor:'Comprometido',consumed_minor:'Consumido',budget_consumption_minor:'Consumo do compromisso',total:'Total',principal_minor:'Principal',balance_minor:'Saldo',payment:'Pagamento',payments:'Pagamentos',accounting:'Contabilidade',stock:'Stock',required_approvals:'Aprovações necessárias',quality_status:'Qualidade',notes:'Observações',prepared_by:'Preparador',validated_by:'Validador',created_at:'Registado em',due_on:'Vencimento',missing:'Pendências',state:'Estado',department_head:'Chefia',finance:'Finanças',procurement:'Compras'}; const values={draft:'Rascunho',pending:'Pendente',approved:'Aprovado',rejected:'Recusado',active:'Activo',suspended:'Suspenso',issued:'Emitida',validated:'Validada',recognised:'Reconhecida',prepared:'Preparada',complete:'Concluída',partial:'Parcial',compliant:'Conforme',reservations:'Com reservas',quality_pending:'Conferência de qualidade pendente',department_head:'Chefia',finance:'Finanças',procurement:'Compras'}; export function purchasingStatus(value){return Object.hasOwn(values,value)?values[value]:value;} export function evidence(value){ const node=(tag,text)=>{const e=document.createElement(tag);if(text!==undefined)e.textContent=text;return e;}; const render=(v,key='',depth=0)=>{ if(v===null||v===undefined)return node('span','Por indicar'); if(typeof v==='boolean')return node('span',v?'Sim':'Não'); if(typeof v!=='object'){ if(/_minor$/.test(key)&&/^-?\d+$/.test(String(v))){const amount=BigInt(v),n=amount<0n?-amount:amount;return node('span',`${amount<0n?'-':''}${n/100n},${String(n%100n).padStart(2,'0')} MZN`);} if(/_milli$/.test(key)&&/^-?\d+$/.test(String(v))){const amount=BigInt(v),n=amount<0n?-amount:amount;return node('span',`${amount<0n?'-':''}${n/1000n},${String(n%1000n).padStart(3,'0')}`);} return node('span',String(purchasingStatus(v))); } if(depth>12)return node('span','Consultar o histórico desta origem.'); if(Array.isArray(v)){const list=node('ol');if(!v.length)return node('p','Sem elementos.');for(const item of v){const row=node('li');row.append(render(item,'',depth+1));list.append(row);}return list;} const list=node('dl');for(const [name,item]of Object.entries(v)){const content=node('dd');content.append(render(item,name,depth+1));list.append(node('dt',Object.hasOwn(labels,name)?labels[name]:name.replaceAll('_',' ')),content);}return list; }; return render(value); }