import { QualificationFields } from './simulation-irpc-special'; import { FiscalProofParcelFields } from './fiscal-proof-parcel'; import { prepareInvestmentCredit, prepareInvestmentCarry, type AnnualBook, } from '@/lib/irpc-annual-settlement'; import { investmentCreditSource, newInvestmentAsset, type InvestmentCredit, type InvestmentAsset, } from '@/lib/irpc-investment-credit'; export function SimulationIrpcInvestment({ draft, book, save, }: { draft: Record; book: AnnualBook; save: (b: AnnualBook) => void; }) { const c = book.investmentCredit; if (!c) return (
Crédito fiscal por investimento — CBF15

Prepare o detalhe do investimento efectivo e da qualificação do projecto. Substitui neste cálculo o resumo anterior dos benefícios, que fica conservado. O recorte cobre investimento efectivo de2026 dentro dos cinco exercícios do prazo,com colecta integral ou quota residual documental do projecto, sem outros benefícios próprios ou transportes anteriores.

); const patch = (v: Partial) => save({ ...book, investmentCredit: { ...c, ...v } }); const text = ( key: | 'projectReference' | 'locationReference' | 'startDate' | 'startReference' | 'recognitionReference' | 'noOtherBenefitsReference' | 'soleProjectReference', label: string, ) => ( ); const choice = ( key: | 'cbfRequirements' | 'genericOnly' | 'noOtherBenefits' | 'soleProject', label: string, ) => ( ); return (
Crédito fiscal por investimento — CBF15

{investmentCreditSource}

Beneficiário {c.subjectNuit}, exercício {c.year}. Resumo anterior conservado:{' '} {book.internationalCredits?.benefits.state || 'informação em falta'} ; montante{' '} {book.internationalCredits?.benefits.amount || 'não preenchido'} . O detalhe aplica apenas o benefício aqui qualificado; não volta a deduzir o resumo.

patch({ qualification })} /> {choice( 'noOtherBenefits', 'Sem outros benefícios próprios/cumulações neste recorte', )} {text( 'noOtherBenefitsReference', 'Reconciliação dos outros benefícios e tratamentos L6/L7', )} {c.qualification.state === 'known' && ( <> {text( 'projectReference', 'Despacho/termos ou instrumento legal do projecto', )} {choice( 'cbfRequirements', 'Condições CBF3/9 e âmbito do projecto documentados', )} {choice( 'genericOnly', 'Investimento no regime genérico, fora dos benefícios específicos — art.13', )} {text( 'recognitionReference', 'Suporte do reconhecimento ou norma de excepção', )} {choice( 'soleProject', 'Toda a colecta corrente respeita à actividade do projecto', )} {c.soleProject === 'yes' ? text( 'soleProjectReference', 'Suporte da correspondência integral da colecta ao projecto', ) : c.soleProject === 'no' && (
Parte da colecta respeitante ao projecto

Indique a colecta residual do projecto depois dos créditos económicos/internacionais que lhe respeitam. Documente a atribuição entre actividades; a quota não pode exceder a colecta global remanescente. O portal não reparte rendimentos, custos ou perdas por presunção.

)} {text( 'locationReference', 'Suporte da localização do investimento', )} {text('startDate', 'Data do início aplicável — AAAA-MM-DD')} {text( 'startReference', 'Suporte do início e contagem dos cinco exercícios', )}

Indique investimento efectivamente realizado, documentado em MZN, adquirido novo e afecto à exploração nacional. Art15(6) exclui edifícios, viaturas ligeiras, mobiliário/conforto/decoração, equipamentos sociais, tecnologia de ponta e outros bens não directa e imprescindivelmente ligados à actividade produtiva. Não copiar investimento projectado como realização.

)} {!c.carryForward ? ( ) : (
Transporte CBF15 do mesmo projecto

Declare activos de origem anterior, taxa e qualificação históricas. Não copie saldos de simulações como uso fiscal. O prazo original de cinco exercícios mantém-se; investimentos correntes ficam separados.

)} {c.assets.map((r, index) => { const change = (v: Partial) => patch({ assets: c.assets.map((x) => x.id === r.id ? { ...r, ...v } : x, ), }); return (
Investimento {index + 1} {r.originYear !== undefined && ( <>

Origem anterior — mantém a data real de aquisição e o prazo original do projecto.

{( [ [ 'originYear', 'Exercício que originou o crédito', ], [ 'originNuit', 'NUIT do contribuinte de origem', ], [ 'originProject', 'Referência do projecto de origem', ], [ 'originRate', 'Taxa original documentada — 5 ou 10', ], [ 'originReference', 'Suporte da qualificação e crédito de origem,mesmo projecto/local/regime', ], ] as const ).map(([key, label]) => ( ))} )} {( [ ['issuer', 'Fornecedor/emitente'], ['document', 'Factura/documento'], [ 'date', 'Data do investimento efectivo — AAAA-MM-DD', ], [ 'proofAmount', 'Montante total do documento — MZN', ], [ 'amount', 'Investimento atribuído a este activo/projecto — MZN', ], ['currency', 'Moeda documental (recorte MZN)'], [ 'reference', 'Suporte do activo, valor e realização', ], ] as const ).map(([key, label]) => ( ))} {( [ [ 'realised', 'Investimento efectivamente realizado', ], [ 'newTangible', 'Activo imobilizado corpóreo adquirido em estado novo', ], [ 'domesticUse', 'Afecto à exploração do projecto em território nacional', ], [ 'directProductive', 'Directa e imprescindivelmente ligado à actividade produtiva', ], [ 'excluded15_6', 'Abrangido por alguma exclusão15(6) (para deduzir exige Não)', ], ] as const ).map(([key, label]) => ( ))}
); })}
Uso anterior efectivo do crédito

Calcule e guarde pelo percurso L8 existente. O crédito não utilizado fica discriminado; transporte para outros exercícios e formalidades oficiais conservam percurso próprio.

); }