import { inputText } from '../lib/input-text.ts'; import { useState } from 'react'; import { propertyTransferBook, propertyTransferCurrent, propertyTransferReportRows, propertyTransferSource, propertyTransferTreatments, newPropertyTransfer, transferConditions, recordPropertyTransfers, savePropertyTransferBook, switchPropertyTreatment, type PropertyTransferBook, type PropertyTransferRow, } from '@/lib/iva-property-transfers'; export function SimulationPropertyTransfers({ draft, onChange, }: { draft: Record; onChange: (field: string, value: string) => void; }) { const [error, setError] = useState(''); let book: PropertyTransferBook; try { book = propertyTransferBook(draft); } catch (cause) { return

{String(cause)}

; } const save = (next: PropertyTransferBook) => { try { onChange( 'modelo_a_snapshot', savePropertyTransferBook(draft, next), ); setError(''); } catch (cause) { setError(String(cause)); } }; const change = (id: string, patch: Partial) => save({ ...book, rows: book.rows.map((r) => (r.id === id ? { ...r, ...patch } : r)), }); return (
Locação vinculativa e cessão de estabelecimento

Locação:entrega material e cláusula vinculante para ambas as partes;mera opção de compra não basta. Cessão de estabelecimento:identifique conjunto autónomo e enquadramento do adquirente. Não exigibilidade3(5) não é isenção genérica.

Oportunidade:{' '} {inputText(draft.context_opportunity ?? 'projecto')}. Reutilize dados/documentos disponíveis,identificando apenas o âmbito aplicável.

{propertyTransferSource}

{error &&

{error}

} {book.rows.map((row) => (
{row.description || 'Transmissão por identificar'} —{' '} {row.period || 'mês por indicar'}
{( [ ['description', 'Transmissão identificada'], [ 'operationRef', 'Referência da operação / pressuposto', ], [ 'operationDate', 'Data da operação / prevista', ], ['period', 'Mês da operação'], [ 'documentRef', 'Documento / referência da previsão', ], [ 'documentDate', 'Data do documento / prevista', ], ['goodsRef', 'Bens e elementos identificados'], ['scope', 'Âmbito:conjunto,operação e período'], ['contractRef', 'Contrato/cessão e referência'], [ 'evidence', 'Fundamento factual / pressupostos', ], ] as const ).map(([field, label]) => ( ))} {row.treatment === 'binding_lease' ? ( <> {( [ [ 'propertyClauseRef', 'Cláusula vinculante de transferência para ambas as partes', ], [ 'consideration', 'Contraprestação obtida/a obter,sem próprio IVA', ], [ 'considerationRef', 'Referência e composição da contraprestação', ], [ 'currency', 'Moeda da contraprestação', ], ] as const ).map(([field, label]) => ( ))}

Não somar rendas,preço de aquisição e valor residual automaticamente. Base por esclarecer mantém classificação separada.

) : ( row.treatment && ( <> {( [ [ 'acquirerRef', 'Adquirente e enquadramento2(1)a', ], [ 'autonomousRef', 'Conjunto susceptível de constituir ramo independente', ], [ 'activitiesRef', 'Operações do adquirente que conferem direito à dedução', ], ] as const ).map(([field, label]) => ( ))}

Factos do enquadramento,não nova dedução concedida. Uma venda isolada de activos não demonstra o conjunto autónomo.

) )}
Condições próprias da transmissão {transferConditions(row.treatment).map( ([key, label]) => ( ), )}

Trocar percurso conserva dados ocultos e referências;reveja as confirmações aplicáveis.

))} {!!book.rows.length && ( )} {book.result && ( <>

{propertyTransferCurrent(draft, book) ? 'Resultados correspondentes às entradas guardadas.' : 'Entradas alteradas;resultado histórico conservado.Reveja e confira novamente.'}{' '} {book.history?.length ?? 0} versões anteriores.Sem IVA,exigibilidade ou nova dedução calculados.

{propertyTransferReportRows(draft).map( ([, label, value, origin], i) => (
{label}
{value} {origin}
), )}
)}
); }