import { inputText } from '../lib/input-text.ts'; import { useState } from 'react'; import { remissionBook, saveRemissionBook, newRemission, remissionFamilies, diplomaticRoles, ippItems, ippAuthority, remissionConditions, recordRemissions, remissionCurrent, remissionReportRows, remissionSource, type RemissionBook, type RemissionRow, } from '@/lib/iva-remission-imports'; import { objectiveImportBook } from '@/lib/iva-objective-imports'; export function SimulationRemissionImports({ draft, onChange, }: { draft: Record; onChange: (field: string, value: string) => void; }) { const [error, setError] = useState(''); let book: RemissionBook; try { book = remissionBook(draft); } catch (e) { return

{String(e)}

; } const save = (b: RemissionBook) => { try { onChange('modelo_a_snapshot', saveRemissionBook(draft, b)); 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)), }); let sources: ReturnType['rows'] = []; try { sources = objectiveImportBook(draft).rows; } catch { /* Direct entry remains available; source originals stay untouched. */ } return (
Importações — quatro famílias de isenção por remissão (P047)

Confirme o fundamento e o âmbito da isenção de direitos. Taxa pautal de 0%, redução e pedido apresentado são situações distintas. Uma previsão de deferimento produz apenas um cenário condicionado. O portal não concede benefícios aduaneiros nem calcula direitos, ICE ou dedução.

{error &&

{error}

} {book.rows.map((row) => { const text = ( field: Exclude, label: string, type = 'text', ) => ( ); const select = ( field: Exclude, label: string, options: ReadonlyArray, clear = false, ) => ( ); return (
{row.description || 'Importação por preparar'} —{' '} {row.period || 'período por indicar'} {sources.length > 0 && ( )} {text('description', 'Bens identificados')} {text('importer', 'Importador / beneficiário')} {text('period', 'Período da importação', 'month')} {text( 'importDate', 'Data da importação ou previsão', 'date', )} {select('origin', 'Natureza dos dados', [ ['projected', 'Pressupostos de projecção'], ['effective', 'Factos efectivos declarados'], ])} {text( 'documentRef', 'Documentos disponíveis ou previsão', )} {text( 'scope', 'Âmbito: bens, operação, período e condições', )} {text('evidence', 'Factos ou pressupostos expressos')} {select( 'family', 'Família legal', remissionFamilies, true, )} {row.family === 'patronage' && ( <> {select( 'patronagePath', 'Percurso do mecenato', [ [ 'book', 'Livro cultural/científico/escolar ou insumo de produção nacional — art7', ], [ 'donation', 'Liberalidade de livros/insumos no regulamento — arts10/11', ], [ 'specific', 'Outro fundamento expresso de isenção de direitos', ], ], true, )} {['donation', 'specific'].includes( row.patronagePath, ) && text( 'specialRef', row.patronagePath === 'donation' ? 'Acção/liberalidade: artigo4, documentos, comunicações, termo e confirmação nos termos do regulamento' : 'Disposição expressa, bens e âmbito: não basta doação genérica', )} )} {row.family === 'ipp' && ( <> {select( 'ippItem', 'Item das IPP / Quadro V', [ ...ippItems.map( (i) => [ i.id, `${i.id} — ${i.label}`, ] as const, ), [ 'specific', 'Outro artigo específico das IPP', ], ], true, )} {(row.ippItem === 'specific' || (row.ippItem === '30' && row.decisionDate < '2026-07-31')) && text( 'ippArticle', 'Disposição, versão e trecho próprios; competência anterior a31/07 quando aplicável', )} {text( 'decisionDate', 'Data da decisão ou previsão para determinar a competência', 'date', )} {text( 'specialRef', 'Referências das condições/remissões e compromisso de uso; confirmação de tutela apenas quando prevista', )}

Competência pela data da decisão/previsão:{' '} {row.decisionDate ? ippAuthority( row.ippItem, row.decisionDate, ) : 'Data por indicar'} . A inclusão no quadro não concede isenção automaticamente. Itens28/30 com encargos suportados pelo Estado não equivalem, só por isso, a isenção de direitos.

)} {row.family === 'diplomatic' && ( <> {select( 'role', 'Categoria diplomática', diplomaticRoles, true, )} {['agency', 'organisation'].includes( row.role, ) ? ( <> {text( 'agreementRef', 'Acordo de Sede ou específico: cláusula e âmbito', )} {text( 'specialRef', 'Condições e limites próprios do acordo; sem quotas presumidas', )} ) : ( row.role && ( <> {text( 'quantity', 'Veículos desta linha', 'number', )} {text( 'existingQuantity', 'Veículos já abrangidos no limite, fora destas linhas', 'number', )} {text( 'limit', row.role === 'mission' ? 'Limite fixado caso a caso pelo MINEC' : 'Limite aplicável pela reciprocidade, até ao máximo legal', 'number', )} {text( 'limitRef', 'Referência do limite/reciprocidade e restrições aplicáveis', )} {select( 'history', 'Importação anterior no mesmo direito', [ [ 'none', 'Nenhuma, segundo histórico identificado', ], [ 'known', 'Sim, data conhecida', ], ], )} {row.history === 'known' && text( 'previousDate', 'Data da importação anterior', 'date', )} {text( 'historyRef', 'Histórico, incluindo operações fora deste dossier', )}

Decreto22/2021: chefe até3; agente/cônsul de carreira até2; honorário e pessoal administrativo/técnico até1. A missão tem limite próprio. Nova importação após5anos; alienação e reexportação conservam regime próprio, sem cálculo neste percurso.

) )} )} {remissionConditions(row).map(([key, label]) => ( ))} {row.family && ( <> {select( 'rights', 'Situação dos direitos de importação', [ [ 'exempt', 'Isenção integral demonstrada ou pressuposto expresso', ], ['reduced', 'Redução parcial'], ['zero', 'Taxa pautal de 0%'], ['none', 'Sem isenção'], ], )} {text( 'rightsRef', 'Fundamento exacto da isenção de direitos e âmbito ou pressuposto expresso', )} {(['ipp', 'diplomatic'].includes(row.family) || (row.family === 'patronage' && row.patronagePath === 'donation')) && text( 'requestRef', row.family === 'diplomatic' ? 'Pedido caso a caso através do MINEC ou previsão' : 'Requerimento/comunicação prévia ou previsão', )} {select( 'decision', 'Situação da decisão / aplicação legal', [ ...(row.family === 'party' || (row.family === 'patronage' && row.patronagePath !== 'donation') ? [ [ 'not_required', 'Aplicação legal directa; não é criada aprovação adicional', ] as const, ] : []), [ 'planned', 'Deferimento previsto — apenas cenário condicionado', ], [ 'requested', 'Pedido apresentado — benefício solicitado', ], [ 'approved', 'Decisão / confirmação recebida', ], ['denied', 'Indeferido'], ], )} {row.decision !== 'not_required' && text( 'decisionRef', 'Referência da decisão / pressuposto; entidade, data e âmbito abrangido', )}

Mudar família ou subpercurso conserva campos ocultos e limpa confirmações. Documentos e históricos permanecem guardados. A submissão e a decisão administrativas ocorrem fora do InvesteMoz.

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

{remissionCurrent(draft, book) ? 'Resultado corresponde às entradas guardadas.' : 'Entradas alteradas; resultado histórico conservado.'}{' '} {book.history?.length ?? 0} versões anteriores.

{remissionReportRows(draft).map( ([, label, value, source], i) => (
{label}
{value} {source}
), )}
)}
Fontes e limites de cobertura

{remissionSource}

Avalia o IVA por remissão quando a isenção de direitos está demonstrada. Não substitui a classificação pautal nem automatiza todos os procedimentos dos regimes aduaneiros referidos. As condições específicas não identificadas permanecem indeterminadas. Sem cálculo de alienação, direitos, ICE ou dedução.

); }