import {useState} from 'react'; import {newValueReview,switchValueReview,switchPriceContext,switchValueOrigin,valueReviewBook,valueReviewConditions,valueReviewCurrent,valueReviewReportRows,valueReviewSource,valueReviewTreatments,priceContexts,recordValueReviews,saveValueReviewBook,type ValueReviewBook,type ValueReviewRow} from '@/lib/iva-value-review'; export function SimulationValueReview({draft,onChange}:{draft:Record;onChange:(field:string,value:string)=>void}){ const[error,setError]=useState('');let book:ValueReviewBook; try{book=valueReviewBook(draft);}catch(cause){return

{String(cause)}

;} const save=(next:ValueReviewBook)=>{try{onChange('modelo_a_snapshot',saveValueReviewBook(draft,next));setError('');}catch(cause){setError(String(cause));}}; const change=(id:string,patch:Partial)=>save({...book,rows:book.rows.map(row=>row.id===id?{...row,...patch}:row)}); return
Base tributável — comparação de preços e correcção referenciada

Oportunidade: {String(draft.context_opportunity||'entrada geral')}. Compare a contraprestação com o preço corrente ou normal correspondente à natureza da operação. Um preço inferior permite à AT proceder à correcção;esta comparação não exerce esse poder nem substitui automaticamente a contraprestação.

Para registar uma correcção,identifique o montante,referência,data e âmbito aplicáveis à operação e período. Na projecção,um cenário condicionado permanece identificado como pressuposto,não decisão AT concedida. Base e IVA são resultados distintos.

{valueReviewSource}

{error&&

{error}

} {book.rows.map(row=>
{row.description||'Operação por identificar'} — {row.period||'mês por indicar'}
{([['description','Operação identificada'],['operationRef','Referência da operação / pressuposto'],['documentRef','Documento da operação / referência da previsão'],['documentDate','Data do documento / prevista'],['period','Mês da operação'],['currency','Moeda de origem'],['declaredAmount','Contraprestação declarada sem IVA (moeda indicada)'],['referenceAmount','Preço corrente ou normal comparável sem IVA (moeda indicada)'],['referenceRef','Referência do preço corrente ou normal / pressuposto'],['referenceScope','Âmbito do preço: bens/serviços, estádio, período, local e condições'],['compositionRef','Referência da composição equivalente sem próprio IVA'],['evidence','Fundamento factual / pressupostos']] as const).map(([field,label])=>)} {row.treatment==='referenced_correction'&&<> {([['correctedAmount','Montante da base corrigida / pressuposto condicionado'],['correctionRef','Referência da correcção AT / pressuposto condicionado'],['correctionScope','Âmbito da correcção: bens/serviços, operação, período e condições'],['correctionDate','Data da correcção / prevista']] as const).map(([field,label])=>)} }

Mudar percurso/contexto conserva montantes e documentos,mas exige rever as correspondências afectadas. Campos sem aplicação ficam ocultos e conservados;uma comparação não concede nem determina uma correcção.

Condições próprias da comparação{valueReviewConditions.map(([key,label])=>)}
)} {!!book.rows.length&&} {book.result&&<>

{valueReviewCurrent(draft,book)?'Comparações correspondentes às entradas guardadas.':'Entradas alteradas;comparações históricas conservadas. Reveja e determine novamente.'} {book.history?.length??0} versões anteriores. IVA e campo11 não são preenchidos por estas bases.

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