import {useState} from 'react'; import {digitalBook,digitalConditions,digitalCurrent,digitalReportRows,digitalSource,digitalTreatments,newDigitalRow,recordDigital,saveDigitalBook,switchDigitalKind,switchDigitalTreatment,type DigitalBook,type DigitalRow} from '@/lib/iva-digital'; export function SimulationDigital({draft,onChange}:{draft:Record;onChange:(field:string,value:string)=>void}){ const[error,setError]=useState('');let book:DigitalBook; try{book=digitalBook(draft);}catch(e){return

{String(e)}

;} const save=(next:DigitalBook)=>{try{onChange('modelo_a_snapshot',saveDigitalBook(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
Bens e serviços digitais — natureza, localização e obrigações

Distinga o activo transmitido da funcionalidade prestada. O nome comercial, a moeda, a nacionalidade ou um servidor não determinam sozinhos o tratamento. Reutilize as referências da operação e os documentos disponíveis.

Localização não concede isenção nem calcula IVA ou dedução. A identificação do responsável não apresenta uma declaração nem inicia pagamento. As formalidades remetidas para regulamentação ficam assinaladas.

Cobertura digital deste incremento: identificação da natureza, localização, responsável, rascunho, histórico e relatório. As formalidades regulamentares ainda não cotejadas — modelos da declaração e do mapa de retenções, procedimentos de entrega e pagamento — não estão automatizadas. Não representa cobertura digital integral nem calcula imposto ou dedução.

{digitalSource}

{error&&

{error}

} {book.rows.map(row=>
{row.description||'Operação digital por identificar'} — {row.period||'mês por indicar'}
{row.kind&&} {([['description','Operação digital identificada'],['operationRef','Referência da operação / pressuposto'],['operationDate','Data da operação / prevista'],['period','Mês da operação'],['subjectRef','Objecto, direitos transmitidos ou funcionalidade prestada'],['natureRef','Fundamento da distinção bem/serviço e natureza digital'],['useRef','Destinatário e utilização / pressuposto'],['documentRef','Documento existente / referência da previsão'],['documentDate','Data do documento / prevista'],['scope','Âmbito: operação, bens/serviços, período e condições'],['evidence','Factos disponíveis / pressupostos expressos'],['buyerPlace','Estabelecimento ou domicílio do adquirente'],['buyerRef','Referência do estabelecimento ou domicílio adquirente']] as const).map(([field,label])=>)} {row.buyerCountry!=='foreign'&&<> } {row.buyerCountry==='MZ'&&row.providerCountry==='foreign'&&<>

A qualidade fiscal serve para identificar o responsável; a sua falta não transforma a localização nacional em operação estrangeira.

{row.buyerTaxable==='no'&&<> {row.representative==='yes'&&<>} {row.representative==='no'&&<>} } } {row.buyerCountry==='MZ'&&row.providerCountry==='MZ'&&<> {row.kind==='goods'&&<>} }
Factos próprios da natureza escolhida{digitalConditions(row.kind).map(([key,label])=>)}

Mudar natureza ou tratamento conserva referências e campos ocultos; reveja as confirmações próprias. Os dados não são copiados de outra oportunidade.

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

{digitalCurrent(draft,book)?'Resultados correspondem às entradas guardadas.':'Entradas alteradas; resultados históricos conservados. Reveja o delta afectado.'} {book.history?.length??0} versões anteriores. Sem cálculo de IVA ou dedução.

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