import {useState} from 'react'; import {newGoodsAllocation,switchAllocationTreatment,switchAllocationValuation,goodsAllocationBook,goodsAllocationConditions,allocationSpecificConditions,goodsAllocationCurrent,goodsAllocationReportRows,goodsAllocationSource,goodsAllocationTreatments,recordGoodsAllocations,saveGoodsAllocationBook,type GoodsAllocationBook,type GoodsAllocationRow} from '@/lib/iva-goods-allocation'; export function SimulationGoodsAllocation({draft,onChange}:{draft:Record;onChange:(field:string,value:string)=>void}){ const[error,setError]=useState('');let book:GoodsAllocationBook; try{book=goodsAllocationBook(draft);}catch(cause){return

{String(cause)}

;} const save=(next:GoodsAllocationBook)=>{try{onChange('modelo_a_snapshot',saveGoodsAllocationBook(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
Afectação de bens — classificação ebase de aquisição/custo

Oportunidade: {String(draft.context_opportunity||'entrada geral')}. P124identifica a transmissão assimilada;P088determina a base. Uma operação conserva a sua identidade nos dois requisitos,não se soma duas vezes. Uso temporário de bens como serviçoP089segue o seu percurso.

A dedução anterior total/parcial é um facto histórico dos bens ou elementos;não é calculada nem concedida aqui. A base usa preço de aquisição reportado ao momento da operação ou,na sua falta demonstrada,preço de custo.Não substituir um preço desconhecido por zero ou por custo automaticamente.

{goodsAllocationSource}

{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'],['currency','Moeda da base'],['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/elementos e identificação do conjunto afectado'],['deductionRef','Referência da dedução anterior total ou parcial'],['destinationRef','Destino,finalidade ou sector eâmbito'],['evidence','Fundamento factual / pressupostos']] as const).map(([field,label])=>)} {['permanent_private_goods','free_goods_transfer'].includes(row.treatment)&&} {row.treatment==='fixed_asset_20a'&&} {row.valuationMode==='acquisition'&&<>} {row.valuationMode==='cost'&&<>}

Mudar percurso/modo conserva referências e valores ocultos,mas exige rever confirmações próprias. Não se presume limiar de oferta,custo histórico actualizado ou nova dedução.

Factos próprios da operação{[...goodsAllocationConditions,...allocationSpecificConditions(row.treatment)].map(([key,label])=>)}
)} {!!book.rows.length&&} {book.result&&<>

{goodsAllocationCurrent(draft,book)?'Classificações/bases correspondentes às entradas guardadas.':'Entradas alteradas;resultados históricos conservados. Reveja e determine novamente.'} {book.history?.length??0} versões anteriores. Dedução histórica não é nova dedução/campo11;sem IVA ou regularização calculados.

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