Files
Investidor-V2/resources/js/components/simulation-irpc-assessment.tsx
T
2026-10-25 21:58:59 +02:00

14 lines
1.8 KiB
TypeScript

import {newNormalAssessmentInput,type NormalAssessmentInput} from '@/lib/irpc-normal-assessment';
import type {NormalBook} from '@/lib/irpc-normal';
export function SimulationIrpcAssessment({book,save}:{book:NormalBook;save:(b:NormalBook)=>void}){
if(!book.base)return null;
const a=book.assessment,change=(p:Partial<NormalAssessmentInput>)=>save({...book,assessment:{...(a??newNormalAssessmentInput()),...p}});
if(!a)return<button type="button" onClick={()=>change({})}>Iniciar cálculo da colecta normal</button>;
return<fieldset aria-label="Colecta — regime normal" className="space-y-3 rounded border p-3"><legend>Matéria colectável → colecta</legend><p>Reutiliza a matéria colectável actual. Exercício:{book.year||'por identificar'};período anual correspondente à conferência financeira. A taxa geral identificada para2026 é32%,artigo61(1). Benefícios,taxas reduzidas,tributações autónomas e outros casos especiais permanecem separados.</p>
<label className="block">Enquadramento da colecta<select aria-label="Enquadramento da colecta" value={a.treatment} onChange={e=>change({treatment:e.target.value as NormalAssessmentInput['treatment']})}><option value="">Informação em falta</option><option value="general_61_1">Regime normal — taxa geral32%,artigo61(1)</option><option value="other">Benefício ou caso especial — correspondência própria</option></select></label>
<label className="block">Suporte ou pressuposto da taxa geral neste caso<input value={a.reference} onChange={e=>change({reference:e.target.value})}/></label>
<p>Lucro tributável → matéria colectável → colecta → saldo final a pagar ou recuperar. O saldo final pertence aL8:retenções,pagamentos e créditos anuais não são abatidos aqui. Uma colecta conhecida não significa saldo final conhecido.</p>
</fieldset>;
}