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: {String(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}
)}
}
; }