@php($money=fn($v)=>number_format($v/100,2,',',' ').' MZN')

Procurar a origem individual

As famílias são paginadas separadamente. Escolher um tipo não escolhe um documento nem prepara um lançamento.

@php($p=$data['source_pagination'])

Contabilidade · diário integrado

Empresa {{ $data['sgf_scope']['company_id'] }} · Unidade {{ $data['sgf_scope']['unit_id'] }}

Contas e período artificiais. Um só diário para origens de Compras, Comercial, Oficinas e Stock. Preparar não lança; revisão distinta e aplicação individual voltam a conferir a origem. Estes dados não constituem emissão fiscal, pagamento real ou demonstração financeira legal.

@if($data['permissions']['prepare'])

Preparar um lançamento

@endif

Conferências e impacto

@foreach($data['proposals'] as $p)@php($snapshot=json_decode($p->snapshot,true))@php($review=collect($data['reviews'])->first(fn($r)=>$r->proposal_id===$p->id))@php($part=collect($data['cycle']['corrections'])->contains(fn($c)=>in_array($p->id,[$c->reverse_proposal_id,$c->replacement_proposal_id],true)))

Conferência #{{ $p->id }} · versão {{ $p->capture_version }}

{{ $p->reason }}

Data {{ $snapshot['journal_on'] }} · {{ $snapshot['period']['period_key'] }} · Preparador #{{ $p->prepared_by }}

@foreach($snapshot['lines'] as $line)@endforeach
Conta artificialDébitoCrédito
{{ $line['account_code'] }}{{ $money($line['debit_minor']) }}{{ $money($line['credit_minor']) }}

Impacto equilibrado: {{ $money($snapshot['impact']['debit_minor']) }}. Sem alterar o saldo financeiro ou executar outro movimento físico.

@if($review)

Decisão: {{ $review->decision==='approved'?'Aprovada':'Recusada' }} por outra função · {{ $review->reason }}

@endif @if($p->journal_id)

Aplicada no lançamento #{{ $p->journal_id }}.

@elseif(!$part&&$data['permissions']['validate']&&!$review&&$p->prepared_by!==$data['current_actor'])
@elseif(!$part&&$data['permissions']['post']&&$review?->decision==='approved'&&$p->prepared_by===$data['current_actor'])
@endif
@endforeach

Lançamentos

Débitos {{ $money($data['totals']['debit_minor']) }} · Créditos {{ $money($data['totals']['credit_minor']) }}

@foreach($data['journals'] as $j)@endforeach
LançamentoDataValorFundamento
#{{ $j->id }}{{ $j->journal_on }}{{ $money($j->debit_minor) }}{{ $j->reason }}

Correcção por estorno e substituição

@if($data['permissions']['correct_prepare'])
@endif @foreach($data['cycle']['corrections'] as $c)@php($reverse=json_decode($c->reverse_snapshot,true))@php($replace=json_decode($c->replacement_snapshot,true))

Correcção #{{ $c->id }} do original #{{ $c->original_journal_id }}

Estorno {{ $money($reverse['impact']['debit_minor']) }} e substituição {{ $money($replace['impact']['debit_minor']) }} · {{ $c->reason }}

@if($c->result)

Par aplicado nos lançamentos #{{ $c->result->reverse_journal_id }}/#{{ $c->result->replacement_journal_id }}.

@elseif($data['permissions']['correct_validate']&&!$c->reverse_review&&$c->prepared_by!==$data['current_actor'])
@elseif($data['permissions']['correct_post']&&$c->reverse_review?->decision==='approved'&&$c->replacement_review?->decision==='approved'&&$c->prepared_by===$data['current_actor'])
@endif
@endforeach

Conferência e fecho do período de ensaio

@if($data['permissions']['period_prepare'])
@endif @foreach($data['cycle']['period_checks'] as $check)@php($snapshot=json_decode($check->snapshot,true))@php($review=collect($data['cycle']['period_reviews'])->first(fn($r)=>$r->check_id===$check->id))@php($closed=collect($data['cycle']['period_closures'])->contains(fn($r)=>$r->check_id===$check->id))

{{ $check->period_key }} · conferência #{{ $check->id }}

{{ $snapshot['facts'] }} factos · {{ $snapshot['pending'] }} pendências · Débitos {{ $money($snapshot['debit_minor']) }} / Créditos {{ $money($snapshot['credit_minor']) }}

@if($closed)

Período QA fechado; sem reabertura neste percurso.

@elseif($data['permissions']['period_validate']&&!$review&&$check->prepared_by!==$data['current_actor'])
@elseif($data['permissions']['period_close']&&$review?->decision==='approved'&&$check->prepared_by===$data['current_actor'])
@endif
@endforeach

Stock · taxa de valorização

@foreach($data['stock'] as $s)

Artigo #{{ $s['book']['stock_item_id'] }} · Armazém #{{ $s['book']['warehouse_id'] }} · Saldo físico {{ $s['physical_balance_milli']/1000 }} {{ $s['book']['unit_code'] }}

@if(isset($s['ownership']['owned_quantity_milli']))

Propriedade total deste artigo {{ $s['ownership']['owned_quantity_milli']/1000 }} {{ $s['book']['unit_code'] }}, incluindo {{ $s['ownership']['in_transit_milli']/1000 }} em trânsito. Transferências internas não são consumo.

@else

{{ $s['ownership']['ownership_pending']??'Propriedade por conferir' }}

@endif @if($data['permissions']['prepare'])
@endif @foreach($s['rates'] as $rate)

Taxa v{{ $rate->version }} · {{ $money($rate->unit_minor) }}/UN · {{ $rate->review?->decision??'Por rever' }}

@if($data['permissions']['validate']&&!$rate->review&&$rate->prepared_by!==$data['current_actor'])
@endif @endforeach
@endforeach

Plano de contas de teste

Contas artificiais do mesmo diário e desta empresa/unidade. A classificação comercial tem proposta e revisão próprias; consultar uma conta não cria um lançamento.

@foreach($data['chart_accounts'] as $account)@endforeach
CódigoDesignaçãoMoedaConsulta
{{ $account->code }}{{ $account->label }}{{ $account->currency }}Abrir razão desta conta
@php($p=$data['chart_pagination'])