14 lines
2.4 KiB
PHP
14 lines
2.4 KiB
PHP
<?php
|
|
namespace App\Modules\Services;
|
|
final class MultiLineInvoicePdf
|
|
{
|
|
public const VERSION='sgf-test-invoice-multiline-text-v1';
|
|
public static function lines(array $s):array{
|
|
$c=$s['calculation'];$r=$c['common_document_result'];$p=$s['document']['prepared'];$rows=[['title','Factura de servicos - TESTE QA'],['text',$s['series_code'].' / '.$s['number']],['text','Emissao: '.$s['issued_local'].' ('.$s['timezone'].')'],['text',ServiceInvoicing::NOTICE]];
|
|
foreach(['issuer'=>'Emitente','client'=>'Cliente']as$k=>$label){$party=$s['document'][$k];$rows[]=['section',$label];$rows[]=['text',$party['name']];foreach(['nuit'=>'NUIT','address'=>'Morada','locality'=>'Localidade','country'=>'Pais']as$f=>$n)$rows[]=['text',$n.': '.($party['data'][$f]??'Nao indicado')];}
|
|
$rows[]=['section','Linhas do documento'];$rows[]=['text','Modalidade: '.($r['price_mode']==='gross_included'?'preco com imposto incluido':'preco sem imposto, acrescido')];
|
|
foreach($s['document']['data']['lines']as$i=>$line){$v=$r['lines'][$i];$rows[]=['section','Linha '.($i+1).' - '.$line['service_name']];if(!empty($line['description']))$rows[]=['text',$line['description']];$rows[]=['text','Quantidade '.$line['quantity'].' | Unidade '.$p['units'][$i].' | Preco '.$line['unit_price']];$rows[]=['text','Base documental '.$v['base_document'].' | Imposto '.$v['tax_document'].' | Total '.$v['total_document']];$rows[]=['text','Base exacta '.$v['base_exact_fraction'].' | Imposto exacto '.$v['tax_exact_fraction']];$rows[]=['text','Diferenca base '.$v['base_difference_fraction'].' | Diferenca imposto '.$v['tax_difference_fraction']];}
|
|
$rows[]=['section','Totais MZN - soma dos valores documentais por linha'];$rows[]=['text','Base '.$r['base_document'].' | Imposto '.$r['tax_document'].' | Total '.$r['total']];$rows[]=['text','Regra QA '.$s['profile_identifier'].' v'.$s['profile_version'].' | Taxa artificial '.$s['rate_percent'].'%'];$rows[]=['text','Politica '.$r['policy']];$rows[]=['text','Periodo '.$p['period_start'].' a '.$p['period_end']];$rows[]=['text','Condicoes: '.($p['payment_terms']??'Nao indicadas')];$rows[]=['text','Vencimento proposto: '.($p['proposed_due_date']??'Nao indicado')];$rows[]=['text','Origem: rascunho #'.$s['draft_id'].' v'.$s['document']['draft_version'].' | Regra temporal #'.$s['rule_id'].' v'.$s['rule_version']];$rows[]=['text','Emissao nao comprova recebimento ou aplicacao contabilistica. Sem comunicacao a AT.'];return$rows;
|
|
}
|
|
}
|