import {useState} from 'react'; import {foreignOperationBook,foreignOperationCurrent,foreignOperationReportRows,foreignOperationSource,foreignSources,foreignEvents,newForeignOperation,recordForeignOperations,saveForeignOperationBook,switchForeignSource,type ForeignOperationBook,type ForeignOperationRow} from '@/lib/iva-foreign-operations'; export function SimulationForeignOperations({draft,onChange}:{draft:Record;onChange:(field:string,value:string)=>void}){ const[error,setError]=useState('');let book:ForeignOperationBook;try{book=foreignOperationBook(draft);}catch(e){return

{String(e)}

;} const save=(next:ForeignOperationBook)=>{try{onChange('modelo_a_snapshot',saveForeignOperationBook(draft,next));setError('');}catch(e){setError(String(e));}}; const change=(id:string,patch:Partial)=>save({...book,rows:book.rows.map(r=>r.id===id?{...r,...patch}:r)}); return
Operações no estrangeiro — localização e enquadramento

Reutilize uma localização já guardada nesta oportunidade. Fora do território não significa isenção,IVA zero ou dedução concedida. Não é necessário repetir os factos/documentos da localização.

{foreignOperationSource}

{error&&

{error}

} {book.rows.map(row=>{let sources:ReturnType=[],events:ReturnType=[];try{sources=foreignSources(draft,row.sourceKind);events=foreignEvents(draft);}catch{/* Existing readers retain corrupt originals. */}const source=sources.find(s=>s.id===row.sourceRowId);return
{source?.description||'Operação por associar'} — {source?.period||'período da origem'} {row.sourceKind&&!sources.length&&

Prepare a localização nas secções de bens/serviços existentes desta oportunidade. Nenhuma localização é presumida ou copiada de outro projecto.

} {source&&

Operação: {source.operationRef}. Âmbito: {source.scope}. {source.reason}

} {source?.territory==='partial'&&} {source&&source.territory!=='national'&&<> {row.hypotheticalTaxable==='yes'&&} }

Trocar origem conserva fundamentos ocultos;reveja as confirmações. Nenhuma dedução é lançada por esta análise.

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

{foreignOperationCurrent(draft,book)?'Análise corresponde às entradas e origens guardadas.':'Entradas ou origens alteradas;resultado histórico conservado. Reveja apenas o delta afectado.'} {book.history?.length??0} versões anteriores.Sem dedução/IVA calculados.

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