htmlspecialchars((string) $v, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
$money = static fn ($v) => $v === null ? 'Indeterminado' : number_format(intdiv((int) $v, 100), 0, '.', ' ').'.'.str_pad((string) abs((int) $v % 100), 2, '0', STR_PAD_LEFT).' MZN';
$eligible = array_values(array_filter($data['obligations'], static fn ($o) => ! $o['source_conflict'] && ! $o['history_imported']));
$confirmed = array_values(array_filter($data['payments'], static fn ($p) => $p['state'] === 'confirmed'));
$options = static function () use ($eligible, $e, $money): void {
foreach ($eligible as $o) echo '#'.$e($o['id']).' · '.$e($o['origin_snapshot']['supplier_name'] ?? 'Fornecedor').' · '.$e($money($o['balance_minor'])).' ';
};
?>
Pagamentos e afectações a fornecedores — ensaio
← Obrigações a fornecedores · Trocar função ou sair = $e($settings['host']) ?> · = $e($settings['actor']) ?>
Pagamentos e afectações a fornecedores ENSAIO SINTÉTICO — SEM MOVIMENTAÇÃO DE DINHEIRO. Propor não confirma; confirmar um pagamento não abate automaticamente uma dívida. Só uma afectação confirmada reduz o saldo. Não há execução bancária, reconciliação, stock, orçamento adicional ou lançamento contabilístico.
As referências de pagamento e evidência são artificiais e começam por SIM-. Não introduza dados bancários ou comprovativos reais.
Actualizar consulta
Obrigações e saldo canónico Reconheça primeiro a obrigação no percurso existente. Não é criada uma dívida por registar um pagamento.
1. Propor pagamento sintético
2. Pagamentos propostos e decisões Pagamento #= $e($p['id']) ?> · = $e($p['fact_reference']) ?> = $money($p['amount_minor']) ?> · Data simulada = $e($p['paid_on']) ?> · Estado: = $e(['proposed'=>'Proposto','confirmed'=>'Confirmado em ensaio','rejected'=>'Rejeitado'][$p['state']]) ?>
Por afectar: = $money($p['unallocated_minor']) ?> · Reconciliação bancária: não implementada.
Preparação e evidência preservadas = $e($p['snapshot']) ?> = $e(json_encode($p['decision'], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)) ?>
Decisão explícitaConfirmar com evidência sintética Rejeitar Evidência artificial da conferência Fundamento da conferência Registar decisão independente Sem pagamentos propostos neste contexto.
4. Propostas de afectação Proposta #= $e($p['id']) ?> · = $e($p['reference']) ?> · Pagamento #= $e($p['payment_id']) ?> Preparador #= $e($p['prepared_by']) ?> · = $e($p['reason']) ?>
Obrigação #= $e($line['obligation_id']) ?>: = $money($line['amount_minor']) ?> · versão = $e($line['source_revision']) ?> Estado: = $p['decision'] ? $e($p['decision']->decision === 'confirmed' ? 'Afectação confirmada' : 'Rejeitada') : 'Proposta — sem efeito no saldo' ?>
DecisãoConfirmar estas afectações Rejeitar Fundamento da decisão Confirmar decisão e revalidar saldos
Histórico durável #= $e($event->id) ?> · = $e($event->kind) ?> · actor #= $e($event->actor_id) ?> · = $e($event->created_at) ?> = $e($event->payload) ?>
Correcções, reversões, reconciliação e novos pagamentos sobre documentos com histórico importado ficam para âmbito próprio. Os originais e as decisões confirmadas não são editados ou apagados.