import {useState} from 'react'; import {newGoodsLocation,switchGoodsTreatment,goodsLocationBook,goodsLocationConditions,ownGoodsConditions,goodsLocationCurrent,goodsLocationReportRows,goodsLocationSource,goodsLocationTreatments,recordGoodsLocations,saveGoodsLocationBook,type GoodsLocationBook,type GoodsLocationRow} from '@/lib/iva-goods-location'; export function SimulationGoodsLocation({draft,onChange}:{draft:Record;onChange:(field:string,value:string)=>void}){ const[error,setError]=useState('');let book:GoodsLocationBook; try{book=goodsLocationBook(draft);}catch(cause){return

{String(cause)}

;} const save=(next:GoodsLocationBook)=>{try{onChange('modelo_a_snapshot',saveGoodsLocationBook(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
Localização — transmissões de bens e antes da importação

Oportunidade: {String(draft.context_opportunity||'entrada geral')}. Identifique os bens e os factos da transmissão. Com transporte,indique onde se encontram ao iniciá-lo;sem transporte,onde são postos à disposição. O endereço ou nacionalidade do cliente não substituem estes factos.

Na transmissão pelo importador ou subsequente antes da importação nacional de bens vindos do estrangeiro,confira a regra própria6(2). A localização física anterior no estrangeiro não a afasta por si. Fora do âmbito territorial não equivale a isenção ou IVA zero;esta classificação não calcula imposto.

{goodsLocationSource}

{error&&

{error}

} {book.rows.map(row=>
{row.description||'Operação por identificar'} — {row.period||'mês por indicar'}
{([['description','Bens e transmissão identificados'],['operationRef','Referência da operação / pressuposto'],['operationDate','Data da transmissão / prevista'],['period','Mês da transmissão'],['documentRef','Documento da operação / referência da previsão'],['documentDate','Data do documento / prevista'],['scope','Âmbito: bens, operação, período e condições'],['evidence','Fundamento factual / pressupostos']] as const).map(([field,label])=>)} {row.treatment&&row.treatment!=='goods_before_import'&&<> } {['goods_with_transport','goods_before_import'].includes(row.treatment)&&} {row.treatment==='goods_before_import'&&<>}

Mudar percurso conserva os locais e referências,mas exige rever os factos próprios. Campos sem aplicação ficam ocultos e conservados.

Factos próprios deste percurso{[...goodsLocationConditions,...ownGoodsConditions(row.treatment)].map(([key,label])=>)}
)} {!!book.rows.length&&} {book.result&&<>

{goodsLocationCurrent(draft,book)?'Localizações correspondentes às entradas guardadas.':'Entradas alteradas;localizações históricas conservadas. Reveja e classifique novamente.'} {book.history?.length??0} versões anteriores. Classificação não determina isenção,IVA ou campo11.

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