import { inputText } from '../lib/input-text.ts'; import { useState } from 'react'; import { minerBook, minerCurrent, minerReportRows, minerSource, minerTreatments, minerCommon, minerVehicle, minerReturn, minerNeedsDeadlineExtension, minerNeedsStayException, newMiner, recordMiners, saveMinerBook, type MinerBook, type MinerRow, } from '@/lib/iva-miners'; export function SimulationMiners({ draft, onChange, }: { draft: Record; onChange: (field: string, value: string) => void; }) { const [error, setError] = useState(''); let book: MinerBook; try { book = minerBook(draft); } catch (e) { return

{String(e)}

; } const save = (next: MinerBook) => { try { onChange('modelo_a_snapshot', saveMinerBook(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 (
Importações dos mineiros — regime da África do Sul (P059)

Lei n.º2/2011,artigos1–4:página1 doPDF;artigo5:página2/p110-(8). O exemplar reúne vários diplomas;«Lei do Voluntariado» é o nome do ficheiro original de uma das ligações,não a base deste benefício. Regulamento:Decreto3/2011,artigos1–8,páginas2–3/p152–153.

Prepare apenas o percurso dos bens desta importação. A redução de50% pertence ao veículo separado da bagagem,não a todas as importações dos mineiros. O simulador não concede autorizações,nem emite declaração aduaneira. Importação temporária em férias tem licença/prazos próprios;use o percurso aduaneiro existente,não a transforme em isenção definitiva.

{error &&

{error}

} {book.rows.map((row) => { const rule = minerTreatments.find( (t) => t.id === row.treatment, ); const text = ( field: Exclude, label: string, type = 'text', ) => ( ); const choice = ( key: keyof MinerRow['conditions'], label: string, ) => ( ); return (
{row.description || 'Importação de mineiro por preparar'}{' '} — {row.period || 'período por indicar'} {text('description', 'Bens desta importação')} {text('beneficiary', 'Mineiro beneficiário originário')} {text( 'contractRef', 'Contrato e referência do visto de trabalho', )} {text('period', 'Período da importação', 'month')} {text( 'importDate', 'Data da importação ou previsão', 'date', )} {text( 'documentRef', 'Documento disponível ou previsão', )} {text( 'documentDate', 'Data do documento ou previsão', 'date', )} {text( 'scope', 'Âmbito:bens,operação,período e condições', )} {text('evidence', 'Factos ou pressupostos expressos')} {minerCommon.map(([k, label]) => choice(k, label))} {rule?.conditions.map(([k, label]) => choice(k, label))} {row.rightHolder === 'heir' && ( <> {text( 'heirRef', 'Herdeiro e fundamento da transmissão do direito', )} {text('deathDate', 'Data do óbito', 'date')} {text( 'requestDate', 'Data do requerimento', 'date', )} {choice( 'heir', 'Qualidade de herdeiro legal identificada', )} {choice( 'unusedRight', 'Direito não usado pelo beneficiário originário', )} {choice( 'acquiredAlive', 'Bens adquiridos pelo mineiro em vida', )} )} {['baggage', 'return_baggage', 'monthly'].includes( row.treatment, ) && ( )} {text( 'customsRef', 'Referência aduaneira aplicável ou pressuposto da projecção', )} {text( 'customsScope', 'Âmbito do enquadramento aduaneiro nesta importação', )} {['monthly', 'accumulated'].includes(row.treatment) && ( <> {text('value', 'Valor desta remessa emMZN')} {text( 'periodTotal', 'Total do âmbito mensal/acumulado,incluindo esta e outras remessas', )} {text( 'quotaRef', 'Registo completo ou pressuposto do saldo,incluindo fora do dossier', )}

Cobertura dos exemplares:15.000MZN por mês. Revisão do limite2(5) não é presumida. Não misturar saldos mensais com meses já acumulados.

)} {row.treatment === 'accumulated' && ( <> {text( 'accumulationStart', 'Primeiro mês acumulado', 'month', )} {text( 'accumulationMonths', 'Número de meses acumulados:1a6', )} )} {row.treatment === 'appliance' && text( 'kind', 'Tipo de electrodoméstico para o limite anual', )} {minerVehicle(row.treatment) && ( <> {row.previousBenefit === 'known' && text( 'previousBenefitDate', 'Data do benefício anterior aplicável', 'date', )} )} {(row.treatment === 'appliance' || minerVehicle(row.treatment)) && ( <> {text( 'quantity', 'Quantidade abrangida nesta linha', )} {text( 'quotaRef', 'Histórico do direito,incluindo benefícios fora do dossier', )} )} {minerReturn(row.treatment) && ( <> {text( 'arrivalDate', 'Data da chegada no regresso definitivo', 'date', )} {row.rightHolder !== 'heir' && text( 'requestDate', 'Data do requerimento do benefício', 'date', )} {minerNeedsDeadlineExtension(row) && ( <> {choice( 'deadlineExtension', 'Invoca prorrogação excepcional do prazo de90dias,por motivo justificado?', )} {row.conditions.deadlineExtension === 'yes' && text( 'extensionRef', 'Prorrogação e motivo justificado,âmbito e prazo concedido ou pressuposto expresso', )} )} )} {['return_vehicle', 'separate_vehicle'].includes( row.treatment, ) && ( <> {text( 'stayStart', 'Início da estadia naRSA', 'date', )} {text( 'stayEnd', 'Fim da estadia naRSA', 'date', )} {minerNeedsStayException(row) && ( <> {choice( 'stayException', 'Invoca autorização excepcional6(7) por estadia inferior a um ano?', )} {row.conditions.stayException === 'yes' && text( 'exceptionRef', 'Autorização/âmbito da excepção6(7)ou pressuposto expresso', )} )} )} {row.treatment === 'separate_vehicle' && ( <> {text( 'normalVat', 'IVA informado sem o benefício de50%,emMZN', )} {text( 'normalVatRef', 'Referência do IVA normal ou pressuposto expresso', )} )}

Trocar percurso conserva os dados ocultos no rascunho e limpa as suas confirmações específicas. Referências aduaneiras disponíveis podem ser reutilizadas;nenhum procedimento específico daKAWENA é imposto às outras vias.

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

{minerCurrent(draft, book) ? 'Resultado corresponde às entradas guardadas.' : 'Entradas alteradas;resultado histórico conservado.'}{' '} {book.history?.length ?? 0} versões anteriores.Sem dedução/campo11 ou declaração aduaneira emitida.

{minerReportRows(draft).map( ([, label, value, source], i) => (
{label}
{value} {source}
), )}
)}
Fonte e âmbito documental

{minerSource}

); }