@php $ctx=app(\App\Shared\Context\CompanyContext::class);$supplierAccess=app(\App\Modules\Identity\Services\Permissions::class)->has(auth()->id(),$ctx->identifiers()['tenant_id'],$ctx->identifiers()['company_id'],'supplier_payables.view',$ctx->unitId());$money=static fn($n)=>($n<0?'-':'').number_format(intdiv(abs($n),100),0,',',' ').','.str_pad((string)(abs($n)%100),2,'0',STR_PAD_LEFT).' MZN'; @endphp
Voltar à navegação SGF / mudar módulo @if(config('sales_ledger.synthetic_enabled')===true||config('cost_ledger.synthetic_enabled')===true)Contabilidade — diário de teste por origem EXCLUSIVAMENTE SINTÉTICO. Contas, regras e períodos artificiais. Sem uso real, contas PGC aprovadas ou execução monetária.
Fontes técnicas, comerciais e financeiras são efeitos distintos, com fotografia e revisão próprias. O lançamento não cria nem altera a dívida financeira.
@elseContabilidade — primeiro lançamento de ensaio EXCLUSIVAMENTE SINTÉTICO. Duas contas e um período artificiais. Sem uso real, contas PGC aprovadas, emissão, execução bancária ou fecho operacional.
Origem: obrigação reconhecida pelo Payables. Aplicar o lançamento não cria nem altera a dívida financeira. Vencimento e período contabilístico são factos separados.
@endif
@if(config('general_ledger.composition_enabled')===true)Painel conjunto de vendas, fornecedores e custos QA
@endif
@if(config('cost_ledger.synthetic_enabled')===true)Oficina → custo directo validado → diário e relatórios QA
@endif
Balancete e razão por conta — Outubro de 2026 (QA)
@if(config('general_ledger.cycle_enabled')===true&&$supplierAccess)Ciclo integrado: afectação, reversão, correcção técnica e fecho QA
@endif
@if(config('sales_ledger.synthetic_enabled')===true)Comercial → recebíveis → contabilidade: origem, decisões e extracto
@endif
@if(session('ledger_demo'))Trocar função no ensaio sintético
@endif
@if($data['permissions']['prepare']&&$supplierAccess)Preparar da origem reconhecida @endif
Propostas e conferência individual
@foreach($data['proposals'] as $p)
@php $snapshot=json_decode($p->snapshot,true);$isPart=in_array($snapshot['source']['effect_type'],['journal.reversal','journal.replacement','workshop.direct_cost.reversal','workshop.direct_cost.replacement','industry.cost.reversal','industry.cost.replacement'],true);$review=collect($data['reviews'])->firstWhere('proposal_id',$p->id); @endphp
@if(isset($snapshot['source']['industrial_lot_id']))Conferir lote e resultado industrial
@elseif(isset($snapshot['source']['cost_order_id']))Conferir ordem e custo directo seleccionado
@elseif(isset($snapshot['source']['invoice_id']))Conferir percurso e origem comercial
@elseConferir percurso e origem
@endif
Proposta #{{ $p->id }} · captura {{ $p->capture_version }} @if(isset($snapshot['source']['industrial_lot_id']))Lote #{{ $snapshot['source']['industrial_lot_id'] }}@elseif(isset($snapshot['source']['cost_order_id']))Ordem #{{ $snapshot['source']['cost_order_id'] }}@else Obrigação #{{ $p->obligation_id }}@endif · preparador #{{ $p->prepared_by }} · {{ $p->created_at }}
{{ $p->reason }}
Data {{ $snapshot['journal_on'] }} · período {{ $snapshot['period']['period_key'] }} v{{ $snapshot['period']['version'] }} · regra v{{ $snapshot['rule']['version'] }}
@foreach($snapshot['lines'] as $line){{ $line['account_code'] }} — débito {{ $money($line['debit_minor']) }} / crédito {{ $money($line['credit_minor']) }} @endforeach Impacto: lançamento equilibrado de {{ $money($snapshot['impact']['debit_minor']) }}. Sem novo pagamento ou alteração do saldo financeiro.
Revisão exacta {{ $p->revision }}@unless(isset($snapshot['source']['cost_order_id'])||isset($snapshot['source']['industrial_lot_id'])) · Vencimento da origem: {{ $snapshot['source']['due_on'] ?? 'desconhecido' }}@endunless
Fotografia da fonte, regra e período {{ json_encode($snapshot,JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE) }}
@if($review)Decisão {{ $review->decision==='approved'?'aprovada':'recusada' }} por #{{ $review->reviewed_by }} · {{ $review->reason }}
@endif
@if($p->journal_id)Aplicada uma vez no lançamento #{{ $p->journal_id }}. Consulte o comprovativo abaixo.
@endif
@if(!$isPart&&$data['permissions']['validate']&&!$review&&$p->prepared_by!==auth()->id())Decisão explícitaAprovar versão exacta Recusar Fundamento independente Registar conferência — sem lançar @endif
@if(!$isPart&&$data['permissions']['post']&&$review&&$review->decision==='approved'&&$p->prepared_by===auth()->id()&&!$p->journal_id)Fundamento da aplicação Revalidar e aplicar este impacto uma vez @endif
@endforeach
Lançamentos e extracto sintético Período ContaTodas as contas @foreach($data['accounts'] as $account)id)>{{ $account->code }} @endforeach Consultar
Débitos {{ $money($data['totals']['debit_minor']) }} · Créditos {{ $money($data['totals']['credit_minor']) }} · Débito menos crédito {{ $money($data['totals']['net_minor']) }}
Os totais incluem todos os lançamentos do filtro; as contrapartidas dos lançamentos da página aparecem abaixo. Não são um balancete legal ou uma posição financeira por liquidar.
@foreach($data['journals'] as $j)@php $journalSource=json_decode($j->snapshot,true)['source']; @endphpLançamento #{{ $j->id }} · {{ $j->journal_on }} @if(isset($journalSource['industrial_lot_id']))Lote #{{ $journalSource['industrial_lot_id'] }}@elseif(isset($journalSource['cost_order_id']))Ordem #{{ $journalSource['cost_order_id'] }}@else Obrigação #{{ $j->obligation_id }}@endif · Proposta #{{ $j->proposal_id }} · Revisão #{{ $j->review_id }} · Aplicador #{{ $j->posted_by }}
{{ $j->reason }} · {{ $j->created_at }}
@foreach($data['lines'] as $l)@if($l->journal_id===$j->id)Conta #{{ $l->account_id }}: D {{ $money($l->debit_minor) }} / C {{ $money($l->credit_minor) }} @endif @endforeach Fotografia imutável da origem, regra e período aplicados {{ json_encode(json_decode($j->snapshot,true),JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE) }} @if(isset($journalSource['cost_order_id']))Conferir a ordem, o custo e as decisões . A fotografia acima conserva o estado aplicado.
@elsePara conferir a posição financeira actual, volte à navegação, seleccione Compras e use a referência local da origem. A fotografia acima conserva o estado aplicado.
@endif @endforeach
Página {{ $data['pagination']['page'] }} de {{ $data['pagination']['last_page'] }} · {{ $data['pagination']['total'] }} lançamentos
@foreach([-1=>'Anterior',1=>'Seguinte'] as $delta=>$label)@php $target=$data['pagination']['page']+$delta; @endphp @if($target>=1&&$target<=$data['pagination']['last_page']){{ $label }} @endif @endforeach
Histórico do ensaio @foreach($data['events'] as $event)#{{ $event->id }} · {{ $event->kind }} · actor #{{ $event->actor_id }} · {{ $event->created_at }} {{ $event->reason }}
{{ $event->previous }} {{ $event->subsequent }} @endforeach
@include('accounting.receipt-recovery')