import { normalFinancialSource, type NormalBook } from '@/lib/irpc-normal'; import { m20Accounts, newNormalFormPreparation, newFormAllocation, reuseDirectFormAllocations, normalFormAccountsFor, type NormalFormPreparationInput, type FormAllocation, } from '@/lib/irpc-normal-form-preparation'; export function SimulationIrpcFormPreparation({ draft, book, save, }: { draft: Record; book: NormalBook; save: (b: NormalBook) => void; }) { const i = book.forms, source = normalFinancialSource(draft); if (!i) return ( ); const patch = (p: Partial) => save({ ...book, forms: { ...i, ...p } }), row = (id: string, p: Partial) => patch({ allocations: i.allocations.map((a) => a.id === id ? { ...a, ...p } : a, ), }); return (
Representação dos valores e correspondência M20/M22

Reutiliza os valores exactos do cálculo e do período/moeda já documentados. A preparação dos campos não altera lucro tributável,matéria colectável ou colecta. M20A.1 exige meticais sem centavos;fracções conservam o valor exacto e ficam pendentes de regra de representação. O transporte201/quadro8 versus200/quadro10 continua identificado,só no resultado afectado. Não gera declaração oficial nem saldo finalL8.

{i.allocations.map((a, n) => (
Parcela M20 {n + 1}
))}
Imposto contabilizado e resultado líquido

Colecta e saldo a pagar não são usados como gasto contabilístico presumido. Indique imposto reconhecido e se já está incluído numa linha do plano,para evitar subtracção duplicada.

{(i.incomeTax.state === 'known' || i.incomeTax.amount !== '' || i.incomeTax.placement !== '') && ( <> )}
); }