import { newNormalSchedules, newScheduleRow, newNormalAsset, scheduleRules, type NormalSchedules, type ScheduleRow, type NormalAsset, } from '@/lib/irpc-normal-schedules'; import type { NormalBook } from '@/lib/irpc-normal'; export function SimulationIrpcSchedules({ book, save, }: { book: NormalBook; save: (b: NormalBook) => void; }) { const s = book.schedules; if (!s) return ( save({ ...book, schedules: newNormalSchedules() }) } > Iniciar mapas complementares L6 ); const patch = (p: Partial) => save({ ...book, schedules: { ...s, ...p } }); const row = (id: string, p: Partial) => patch({ rows: s.rows.map((r) => (r.id === id ? { ...r, ...p } : r)) }); const asset = (id: string, p: Partial) => patch({ assets: s.assets.map((a) => (a.id === id ? { ...a, ...p } : a)), }); return ( Mapas complementares — regras ordinárias documentadas Reutiliza o resultado e as linhas do plano. As somas brutas de cada tema devem corresponder à conferência do lucro tributável. Os efeitos com sinal ficam discriminados; uma dúvida não apaga as parcelas independentes. L7 conserva benefícios e casos especiais; L8 conserva o fecho anual. {book.periodsFx && book.periodsFx.kind !== 'annual' ? ( Período actual no mapa «Período fiscal e conversão do plano». O período anual anterior permanece conservado no histórico. ) : ( Período anual e correspondência dos meses Tipo de período patch({ period: { ...s.period, kind: e.target .value as NormalSchedules['period']['kind'], }, }) } > Por identificar Ano civil — artigo7(1) Anual diferente — autorização artigo7(2) Anual diferente de EP — comunicação artigo7(3) {(['from', 'to', 'reference'] as const).map((k) => ( { { from: 'Início do período AAAA-MM-DD', to: 'Termo do período AAAA-MM-DD', reference: 'Suporte do período e da correspondência mensal', }[k] } patch({ period: { ...s.period, [k]: e.target.value, }, }) } /> ))} Período anual diferente: documente autorização do artigo7(2) ou comunicação do EP do artigo7(3), início de aplicação e manutenção por cinco exercícios. O plano representa o período completo com termo em2026, emMZN. Períodos curtos e conversão fiscal anual de outra moeda ficam por corresponder. )} patch({ rows: [...s.rows, newScheduleRow(crypto.randomUUID())], }) } > Acrescentar regra complementar {s.rows.map((r, n) => ( Regra complementar {n + 1} Tratamento row(r.id, { rule: e.target.value as ScheduleRow['rule'], }) } > Por identificar {Object.entries(scheduleRules).map(([k, v]) => ( {v[0]} — {v[2]} ))} {( [ ['amount', 'Montante MZN'], [ 'sourceCode', 'Código da linha de origem (custos/proveitos já incluídos)', ], ['document', 'Documento'], ['line', 'Linha distinta'], ['reference', 'Suporte da regra e dos factos'], [ 'fiscalYear', 'Exercício de imputação (periodização)', ], ] as const ).map(([k, label]) => ( {label} row(r.id, { [k]: e.target.value }) } /> ))} Entradas/distribuições de capital e variações patrimoniais são externas ao resultado. Variação negativa ordinária: indispensável à actividade sujeita, sem liberalidade, menos-valia latente ou distribuição; sem gratificações especiais. Periodização: operação ordinária e exercício de realização documentados; sem obra plurianual ou correcção de exercício anterior. Condições demonstradas row(r.id, { conditions: e.target.value as '' | 'yes', }) } > Informação em falta Sim, nos documentos identificados patch({ rows: s.rows.filter((q) => q.id !== r.id) }) } > Retirar regra {n + 1} das entradas actuais ))} Juros financeiros ordinários — artigo22c Somente capitais alheios aplicados na exploração, encargos documentados, não capitalizáveis, sem partes relacionadas, subcapitalização ou outra limitação especial. Identifique o remanescente após os juros compensatórios acrescidos no mapa anterior. Outros juros permanecem pendentes neste caso. Juros ordinários remanescentes MZN patch({ interest: { ...s.interest, amount: e.target.value, }, }) } /> Suporte dos juros e condições patch({ interest: { ...s.interest, reference: e.target.value, }, }) } /> Condições dos juros patch({ interest: { ...s.interest, conditions: e.target.value as '' | 'yes', }, }) } > Informação em falta Demonstradas no recorte ordinário {!book.depreciation ? ( Amortizações fiscais — quotas constantes anuais Decreto72/2013, artigos3–7. Activo próprio sujeito a deperecimento, custo histórico, uso no início de2026, método uniforme, vida útil fiscal não excedida. Documente que não há regra sectorial específica prevalecente ou limitação especial. A categoria exige qualificação documentada; os itens genéricos9/9.1 só se aplicam quando não há taxa específica da tabelaI. Duodécimos, reavaliação, bens usados e recuperação de quotas antes tributadas ficam separados. Reconciliação de todos os activos com a depreciação do plano patch({ assetsReference: e.target.value }) } /> patch({ assets: [ ...s.assets, newNormalAsset(crypto.randomUUID()), ], }) } > Acrescentar activo fiscal {s.assets.map((a, n) => ( Activo {n + 1} Categoria fiscal asset(a.id, { category: e.target .value as NormalAsset['category'], rate: e.target.value === 'computer' ? '25' : e.target.value === 'server' ? '20' : '', tableReference: e.target.value === 'computer' ? 'Decreto72/2013 tabelaII grupo3 item9' : e.target.value === 'server' ? 'Decreto72/2013 tabelaII grupo3 item9.1' : '', }) } > Por identificar Computador, impressora, UPS — II/3/9 — 25% Servidor — II/3/9.1 — 20% Outra categoria — correspondência pendente {( [ ['description', 'Descrição'], ['cost', 'Custo fiscal documentado MZN'], ['residual', 'Valor residual MZN'], ['rate', 'Taxa anual documentada %'], [ 'accounting', 'Depreciação contabilística de2026 MZN', ], [ 'previousFiscal', 'Amortização fiscal acumulada anterior MZN', ], [ 'inUseFrom', 'Data de entrada em uso AAAA-MM-DD', ], [ 'tableReference', 'Diploma, tabela, código e taxa aplicáveis', ], [ 'reference', 'Documentos e condições do activo', ], ] as const ).map(([k, label]) => ( {label} asset(a.id, { [k]: e.target.value }) } /> ))} Condições do activo asset(a.id, { conditions: e.target.value as | '' | 'yes', }) } > Informação em falta Demonstradas no recorte anual constante patch({ assets: s.assets.filter( (q) => q.id !== a.id, ), }) } > Retirar activo {n + 1} das entradas actuais ))} ) : ( Activos do mapa inicial conservados; a depreciação é agora reconciliada exclusivamente pelo mapa de tabelas, métodos, duodécimos e quotas anteriores abaixo. )} Suporte da perda fiscal do próprio exercício, se apurada patch({ currentLossReference: e.target.value }) } /> Perda actual conhecida: matéria colectável e colecta zero apenas depois de conferidas as restantes condições. Não é dedução a si própria nem saldo oficial de reporte. Informação insuficiente mantém os totais dependentes indeterminados. ); }
Reutiliza o resultado e as linhas do plano. As somas brutas de cada tema devem corresponder à conferência do lucro tributável. Os efeitos com sinal ficam discriminados; uma dúvida não apaga as parcelas independentes. L7 conserva benefícios e casos especiais; L8 conserva o fecho anual.
Período actual no mapa «Período fiscal e conversão do plano». O período anual anterior permanece conservado no histórico.
Período anual diferente: documente autorização do artigo7(2) ou comunicação do EP do artigo7(3), início de aplicação e manutenção por cinco exercícios. O plano representa o período completo com termo em2026, emMZN. Períodos curtos e conversão fiscal anual de outra moeda ficam por corresponder.
Entradas/distribuições de capital e variações patrimoniais são externas ao resultado. Variação negativa ordinária: indispensável à actividade sujeita, sem liberalidade, menos-valia latente ou distribuição; sem gratificações especiais. Periodização: operação ordinária e exercício de realização documentados; sem obra plurianual ou correcção de exercício anterior.
Somente capitais alheios aplicados na exploração, encargos documentados, não capitalizáveis, sem partes relacionadas, subcapitalização ou outra limitação especial. Identifique o remanescente após os juros compensatórios acrescidos no mapa anterior. Outros juros permanecem pendentes neste caso.
Decreto72/2013, artigos3–7. Activo próprio sujeito a deperecimento, custo histórico, uso no início de2026, método uniforme, vida útil fiscal não excedida. Documente que não há regra sectorial específica prevalecente ou limitação especial. A categoria exige qualificação documentada; os itens genéricos9/9.1 só se aplicam quando não há taxa específica da tabelaI. Duodécimos, reavaliação, bens usados e recuperação de quotas antes tributadas ficam separados.
Activos do mapa inicial conservados; a depreciação é agora reconciliada exclusivamente pelo mapa de tabelas, métodos, duodécimos e quotas anteriores abaixo.
Perda actual conhecida: matéria colectável e colecta zero apenas depois de conferidas as restantes condições. Não é dedução a si própria nem saldo oficial de reporte. Informação insuficiente mantém os totais dependentes indeterminados.