import { prepareEconomicBook, type AnnualBook, } from '@/lib/irpc-annual-settlement'; import { economicSource, newEconomicPosition, type EconomicPosition, } from '@/lib/irpc-economic-credit'; export function SimulationIrpcEconomic({ book, save, residentConfirmed, }: { book: AnnualBook; save: (book: AnnualBook) => void; residentConfirmed: boolean; }) { const c = book.economicCredits; if (!c) return (
Crédito por dupla tributação económica

Para lucros distribuídos por entidade moçambicana sujeita e não isenta de IRPC, distinga o imposto correspondente aos lucros da retenção sofrida e do imposto estrangeiro. Reutiliza a colecta e conserva o resumo de créditos anterior.

); const update = (next: typeof c) => save({ ...book, economicCredits: next }); const rowChange = (r: EconomicPosition) => update({ ...c, rows: c.rows.map((x) => (x.id === r.id ? r : x)) }); return (
Crédito económico — lucros distribuídos

{economicSource}

O detalhe substitui nesta execução o resumo económico anterior, que permanece conservado:{' '} {book.internationalCredits?.economic.state || 'informação em falta'} ; montante{' '} {book.internationalCredits?.economic.amount || 'não preenchido'} . Os benefícios e o crédito internacional mantêm os seus estados próprios.

{(c.state === 'known' || c.rows.length > 0) && ( )} {c.rows.map((r, i) => { const patch = (v: Partial) => rowChange({ ...r, ...v }); const prefix = 'Crédito económico ' + (i + 1) + ' — '; const field = ( key: Exclude, label: string, ) => ( ); const choice = ( key: | 'recipientResident' | 'payerResident' | 'payerIrpc' | 'payerExempt' | 'article40' | 'incomeIncluded', label: string, ) => ( ); const outside = (!!r.kind && r.kind !== 'ordinary_profit') || r.article40 === 'yes'; const detail = ( <> {( [ [ 'distributionDocument', 'Documento da distribuição', ], [ 'distributionParcel', 'Parcela dos lucros no documento', ], [ 'distributionDate', 'Data da distribuição (AAAA-MM-DD)', ], [ 'income', 'Lucros incluídos antes do crédito — MZN, ilíquidos de retenção', ], [ 'incomeReference', 'Suporte da inclusão e do valor ilíquido na base corrente', ], [ 'taxIssuer', 'Emitente do comprovativo de IRPC correspondente', ], [ 'taxDocument', 'Documento do IRPC correspondente aos lucros', ], [ 'taxParcel', 'Parcela desse IRPC no documento', ], [ 'parcelReference', 'Suporte da identificação da parcela de imposto', ], ['currency', 'Moeda comprovada'], [ 'proofAmount', 'IRPC comprovado nesta parcela — MZN', ], [ 'taxAmount', 'IRPC correspondente aos lucros seleccionados — MZN', ], [ 'attributionReference', 'Suporte da correspondência entre imposto e lucros', ], [ 'previouslyAttributed', 'IRPC desta parcela já atribuído a outros lucros — MZN', ], [ 'priorAttributionReference', 'Suporte das atribuições anteriores, incluindo zero conhecido', ], [ 'grossUpIncluded', 'Crédito nominal já acrescido à base (art.53) — MZN', ], [ 'grossUpReference', 'Suporte do acréscimo art.53 já incluído em L6', ], [ 'nationalLimit', 'Quota proporcional da colecta após acréscimo — MZN', ], [ 'nationalLimitReference', 'Suporte da quota proporcional da colecta', ], ] as const ).map(([key, label]) => field(key, label))} {choice( 'incomeIncluded', 'Lucros ilíquidos e acréscimo incluídos na base corrente', )}

O cálculo confere 60% do IRPC correspondente com o acréscimo já incluído em L6 e a quota proporcional documentada. Se a base estiver incompleta, reconcilie-a no percurso existente. Esta acção conserva os valores e não altera a colecta automaticamente.

{(r.previousUse.state === 'known' || r.previousUse.amount) && ( )} ); return (
Lucros {i + 1} {field('subjectNuit', 'NUIT beneficiário')} {field('payerNuit', 'NUIT distribuidor')} {field('year', 'Exercício')} {residentConfirmed && r.recipientResident === 'yes' ? (

Residência do beneficiário reutilizada da colecta corrente no regime geral. NUIT e exercício conservados.

) : ( choice( 'recipientResident', 'Beneficiário com sede/direcção efectiva em Moçambique', ) )} {choice( 'payerResident', 'Distribuidor com sede/direcção efectiva em Moçambique', )} {choice('payerIrpc', 'Distribuidor sujeito a IRPC')} {choice('payerExempt', 'Distribuidor isento de IRPC')} {field( 'qualificationReference', 'Suporte da qualificação das entidades e dos lucros', )} {choice( 'article40', 'Esta parcela está abrangida pela exclusão do art.40(1)', )} {field( 'article40Reference', 'Suporte da correspondência do art.40(1) e seu período', )}

O art.40(1), na redacção de 2009, contempla as entidades e condições próprias, incluindo participação directa de pelo menos20% e prazo de dois anos, nos termos da fonte. Uma parcela excluída da base não recebe também o crédito64. A simples percentagem de participação não decide todas as condições.

{outside ? ( <>

Esta parcela exige o tratamento específico identificado. O crédito ordinário não é aplicado; os valores introduzidos ficam conservados.

Consultar ou reconciliar dados conservados {detail}
) : ( detail )}
); })}
); }