import {SimulationIrpcSpecial} from '@/components/simulation-irpc-special'; import {SimulationIrpcFormPreparation} from '@/components/simulation-irpc-form-preparation'; import {SimulationIrpcPeriodFx} from '@/components/simulation-irpc-period-fx'; import {SimulationIrpcDepreciation} from '@/components/simulation-irpc-depreciation'; import {SimulationIrpcCosts} from '@/components/simulation-irpc-costs'; import {SimulationIrpcSchedules} from '@/components/simulation-irpc-schedules'; import {SimulationIrpcAssessment} from '@/components/simulation-irpc-assessment'; import {useState} from 'react'; import {SimulationIrpcTaxableBase} from '@/components/simulation-irpc-taxable-base'; import {newNormalProfitInput,profitTopics,type NormalProfitInput,type ProfitEvidence} from '@/lib/irpc-normal-profit'; import {normalBook,saveNormalBook,normalFinancialSource,newNormalAdjustment,recordNormal,normalHtml,normalReportRows,type NormalBook,type NormalAdjustment} from '@/lib/irpc-normal'; export function SimulationIrpcNormal({draft,onChange}:{draft:Record;onChange:(field:string,value:string)=>void}){ const[error,setError]=useState('');if(draft.fiscal_component!=='irpc')return null; try{ const b=normalBook(draft),source=normalFinancialSource(draft); const save=(next:NormalBook)=>{try{onChange('modelo_a_snapshot',saveNormalBook(draft,next));setError('');}catch(e){setError(String(e));}}; const patch=(id:string,p:Partial)=>save({...b,rows:b.rows.map(r=>r.id===id?{...r,...p}:r)}); const profit=(patch:Partial)=>save({...b,profit:{...(b.profit??newNormalProfitInput()),...patch}}); const field=(r:NormalAdjustment,k:'document'|'line'|'amount'|'reference',label:string)=>; return

L6 — IRPC normal: ajustamentos ao resultado financeiro

Acréscimos de multas sem origem contratual e juros compensatórios incluídos nos custos do plano, artigo 36(1)c. A conferência anual pode determinar o lucro tributável simulado no recorte ordinário documentado. A matéria colectável exige conferência específica de deduções e perdas; a colecta tem cálculo próprio e o saldo final a pagar ou recuperar pertence aL8. Não reutiliza automaticamente juros simulados de L5.

{error&&

{error}

} {source?

Origem: plano financeiro desta oportunidade; {source.periods} meses; {source.currency}; resultado antes de imposto: {source.accountingProfitBeforeTax}. Cobranças, pagamentos e reembolso de capital ficam fora do resultado.

:

{b.periodsFx?'Complete a correspondência do período e moeda abaixo para reutilizar o plano existente emMZN.':'Prepare o plano financeiro para reutilizar o resultado e os custos reconciliados.'}

} {b.rows.map(r=>
{r.document||'Ajustamento por identificar'}{field(r,'document','Documento ou pressuposto identificado')}{field(r,'line','Linha distinta do documento')}{field(r,'amount','Parcela do custo em MZN')} {field(r,'reference','Suporte da qualificação, ocorrência e inclusão contabilística')}

Juros bancários e penalidades contratuais não são classificados automaticamente como infracções.

)} {!b.profit?:
Resultado financeiro → ajustamentos → lucro tributável simulado

Conferência do sujeito passivo/exercício completo. Cada receita remanescente deve ser ordinária do exercício;cada custo remanescente deve estar documentado e ser indispensável à fonte produtora,sem outras exclusões ou limites. Outras situações conhecidas permanecem discriminadas. Ausência declarada exige suporte e não é informação em falta.

{source?.accountingLines.map(l=>{const review=b.profit!.lines.find(r=>r.code===l.code)??{code:l.code,state:'' as const,reference:''};const change=(p:Partial)=>profit({lines:[...b.profit!.lines.filter(r=>r.code!==l.code),{...review,...p}]});return
{l.origin} — {l.total} {source.currency}
;})}

Depreciação positiva e juros financeiros não integralmente acrescidos exigem correspondência própria;uma declaração de ausência não apaga os valores do plano.

{profitTopics.map(([k,label])=>{const t=b.profit!.topics[k];const change=(p:Partial)=>profit({topics:{...b.profit!.topics,[k]:{...t,...p}}});return
{label}{(t.state==='known'||t.amount!=='')&&}
;})}
} {normalReportRows(draft).map((r,n)=>

{r[1]} — {r[2]} — {r[3]}

)}
; }catch(e){return

Preparação L6 não recuperável: {String(e)}. Originais e histórico conservados.

;} }