import { useState } from 'react'; import { closureSources } from '@/lib/iva-closure'; import { substitutionBook, saveSubstitutionBook, newSubstitution, previousDeclarations, recordSubstitution, substitutionReportRows, type SubstitutionBook, type SubstitutionInput, } from '@/lib/iva-substitution'; export function AcquisitionSubstitution({ draft, onChange, }: { draft: Record; onChange: (field: string, value: string) => void; }) { const [error, setError] = useState(''); let b: SubstitutionBook; try { b = substitutionBook(draft); } catch (e) { return

{String(e)}

; } const save = (next: SubstitutionBook) => { try { onChange('modelo_a_snapshot', saveSubstitutionBook(draft, next)); setError(''); } catch (e) { setError(String(e)); } }; const change = (id: string, p: Partial) => save({ ...b, rows: b.rows.map((r) => (r.id === id ? { ...r, ...p } : r)), }); const previous = previousDeclarations(draft, b), sources = closureSources(draft); return (
L3-C — substituições e diferencial

Escolha a declaração anterior e o resultado corrigido do mesmo período. Créditos utilizados e pagamentos anteriores conservam-se no histórico;registe apenas pagamentos adicionais.

O diferencial credor aguarda comunicação dos serviços para utilização posterior no campo20. Não compensa automaticamente dívida nem cria reporte26. A preparação não submete à AT;formulário de substituição e formalidades permanecem fora do InvesteMoz.

{error &&

{error}

} {b.rows.map((r) => (
Substituição —{' '} {r.prior?.period || 'período por escolher'} {r.prior && (

Anterior:{r.prior.entityRef}; {r.prior.origin === 'projected' ? 'pressuposto de simulação' : 'dados efectivos declarados'} ;pagamentos e reporte conservados na versão escolhida.

)}