import {useState} from 'react'; import {newServiceNormal,switchServiceTreatment,serviceNormalBook,serviceNormalConditions,ownServiceConditions,serviceNormalCurrent,serviceNormalReportRows,serviceNormalSource,serviceNormalTreatments,recordServiceNormals,saveServiceNormalBook,type ServiceNormalBook,type ServiceNormalRow} from '@/lib/iva-service-normal'; export function SimulationServiceNormal({draft,onChange}:{draft:Record;onChange:(field:string,value:string)=>void}){ const[error,setError]=useState('');let book:ServiceNormalBook; try{book=serviceNormalBook(draft);}catch(cause){return

{String(cause)}

;} const save=(next:ServiceNormalBook)=>{try{onChange('modelo_a_snapshot',saveServiceNormalBook(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 — serviços gratuitos e utilização de bens da empresa

Oportunidade: {String(draft.context_opportunity||'entrada geral')}. Identifique o serviço e a finalidade abrangida pelo artigo4(2). A base é o valor normal do serviço,com fundamento e âmbito identificados;nenhum custo ou preço de aquisição dos bens é usado como substituto automático.

O serviço gratuito da alínea a)não exige a dedução anterior prevista na alínea b). A utilização de bens exige identificar os bens/elementos e a dedução total/parcial anterior,sem a calcular ou conceder aqui. Utilização não é transmissão permanente de bens. Base e IVA são resultados distintos.

{serviceNormalSource}

{error&&

{error}

} {book.rows.map(row=>
{row.description||'Operação por identificar'} — {row.period||'mês por indicar'}
{([['description','Serviço e operação identificados'],['operationRef','Referência da operação / pressuposto'],['purposeRef','Finalidade e destinatário / sector isento'],['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'],['normalValue','Valor normal do serviço sem IVA (moeda indicada)'],['valuationRef','Fundamento do valor normal / pressuposto'],['valuationScope','Âmbito do valor normal: serviço, estádio, tempo, lugar e condições'],['compositionRef','Referência da composição sem próprio IVA'],['evidence','Fundamento factual / pressupostos']] as const).map(([field,label])=>)} {row.treatment&&row.treatment!=='free_company_service'&&<>}

Mudar o tratamento conserva os valores e documentos,mas exige rever as condições próprias. Os campos sem aplicação ficam ocultos e conservados.

Condições próprias deste percurso{[...serviceNormalConditions,...ownServiceConditions(row.treatment)].map(([key,label])=>)}
)} {!!book.rows.length&&} {book.result&&<>

{serviceNormalCurrent(draft,book)?'Valores normais correspondentes às entradas guardadas.':'Entradas alteradas;valores normais históricos conservados. Reveja e determine novamente.'} {book.history?.length??0} versões anteriores. IVA e campo11 não são preenchidos por estas bases.

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