import { useState } from 'react'; import { newRegularization, regularizationBook, regularizationSources, saveRegularizationBook, recordRegularizations, regularizationReportRows, frozenAssetRows, type RegularizationEvent, type RegularizationBook, } from '@/lib/iva-regularizations'; export function AcquisitionRegularizations({ draft, onChange, }: { draft: Record; onChange: (field: string, value: string) => void; }) { const [error, setError] = useState(''); let b: RegularizationBook; try { b = regularizationBook(draft); } catch (cause) { return

{String(cause)}

; } const save = (next: RegularizationBook) => { try { onChange('modelo_a_snapshot', saveRegularizationBook(draft, next)); setError(''); } catch (cause) { setError(String(cause)); } }; const change = (id: string, patch: Partial) => save({ ...b, events: b.events.map((e) => (e.id === id ? { ...e, ...patch } : e)), }); const sources = regularizationSources(draft); const add = (kind: RegularizationEvent['kind']) => save({ ...b, events: [ ...b.events, newRegularization( crypto.randomUUID(), kind, sources.at(-1) ?? null, ), ], }); const labels = { scope: 'As parcelas e o âmbito correspondem ao evento,sem estender o direito a outros bens/operações', recorded: 'O valor original foi deduzido ou é pressuposto explicitamente assumido nesta simulação', annual: 'Bases finais do ano completo22(4),semIVA,incluindo operações fora de campo', exclusions: 'Excluí vendas de activo usado e operações imobiliárias/financeiras acessórias22(5)', supplierCorrection: 'O fornecedor anulou/reduziu a operação e emitiu o documento rectificativo', rightUnchanged: 'O documento conserva o âmbito e as condições de dedução;sem alteração de direito', }; return (
E — activos e regularizações por evento

Reutiliza resultados congelados de D e documentos existentes. O acerto anual usa o IVA elegível antes de D, já limitado por C, e compara com o deduzido. Uma rectificação da compra tem documento e prazo próprios. Guardar E não altera as deduções originais; depois actualize expressamente o apuramento parcial para conferir F.

18.º(6) com afectação mista continua pendente. Não existe regularização plurianual genérica de activos,correcção de erros ou incobráveis automatizada neste percurso. Submissão fiscal fora do InvesteMoz;19–27/restituição em L3.

{error &&

{error}

} {' '} {b.events.map((e, index) => (
{index + 1}.{' '} {e.kind === 'annual' ? 'Acerto anual22(6)' : 'Rectificação51(4)'}

Escolher outra versão adopta expressamente as parcelas dessa versão,conservando os outros dados do evento. Desmarque parcelas fora do âmbito;não pode regularizar a mesma aquisição duas vezes.

{e.source?.inputs.map((r) => ( ))} {e.kind === 'annual' ? ( <> ) : ( <> )} {Object.entries(labels) .filter(([k]) => [ 'scope', 'recorded', ...(e.kind === 'annual' ? ['annual', 'exclusions'] : ['supplierCorrection', 'rightUnchanged']), ].includes(k), ) .map(([k, label]) => ( ))}
))} {[...new Set(b.events.map((e) => e.period))] .filter(Boolean) .map((period) => ( ))}

Quando existirem eventos E, retire as declarações «Sem operações» nos campos12/13 desse período. Uma cobertura incompleta mantém os totais afectados indeterminados.

{[ ...regularizationReportRows(draft), ...frozenAssetRows(draft), ].map(([, label, value, source], i) => (

{label}: {value} {source}

))}
); }