'use client' import { useMemo, useState } from 'react' import Link from 'next/link' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { Button } from '@/components/ui/button' import { Badge } from '@/components/ui/badge' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { FileDown, Info } from 'lucide-react' import { formatCurrency } from '@/lib/utils' import { calculateEgenavgifter, type EgenavgiftCategory } from '@/lib/bokslut/enskild-firma/egenavgifter-calculator' import { calculateRantefordelning } from '@/lib/bokslut/enskild-firma/rantefordelning-calculator' import { proposeEfPfondAvsattning } from '@/lib/bokslut/enskild-firma/periodiseringsfond-ef' import { calculateExpansionsfondChange } from '@/lib/bokslut/enskild-firma/expansionsfond-calculator' import type { EfDeclarationItem } from '@/lib/bokslut/enskild-firma/types' interface EfDeclarationSectionProps { fiscalPeriodId: string /** Bokfört resultat (income statement net_result) — used as the default * surplus base for the calculators. */ bookedSurplus: number /** Closing year of the fiscal period (for periodiseringsfond cohort). */ fiscalYear: number } /** * Read-only EF declaration computation. All values are skattemässiga * justeringar that are filed in NE-bilaga / INK1 — never booked. The card * runs calculators in the browser as the user adjusts inputs and shows the * NE-bilaga ruta where each number lands. */ export function EfDeclarationSection({ fiscalPeriodId, bookedSurplus, fiscalYear, }: EfDeclarationSectionProps) { const [category, setCategory] = useState('full') const [priorSchablon, setPriorSchablon] = useState('') const [priorActual, setPriorActual] = useState('') const [kapitalunderlag, setKapitalunderlag] = useState('') const [pfondDesired, setPfondDesired] = useState('') const [expansionsfondBalance, setExpansionsfondBalance] = useState('') const [expansionsfondChange, setExpansionsfondChange] = useState('') const items: EfDeclarationItem[] = useMemo(() => { const list: EfDeclarationItem[] = [] const eg = calculateEgenavgifter({ surplusBeforeEgenavgifter: bookedSurplus, category, priorYearSchablonavdrag: parseFloat(priorSchablon) || 0, priorYearActualCharged: parseFloat(priorActual) || 0, }) list.push(eg) const kap = parseFloat(kapitalunderlag) || 0 const r = calculateRantefordelning({ kapitalunderlag: kap }) if (r) list.push(r) const surplusAfterEg = bookedSurplus - eg.amount const pfond = proposeEfPfondAvsattning({ surplus: surplusAfterEg, fiscalYear, desiredAmount: pfondDesired === '' ? undefined : parseFloat(pfondDesired), }) if (pfond) list.push(pfond) const expChange = parseFloat(expansionsfondChange) || 0 if (expChange !== 0) { const exp = calculateExpansionsfondChange({ kapitalunderlag: kap, existingBalance: parseFloat(expansionsfondBalance) || 0, desiredChange: expChange, }) if (exp) list.push(exp) } return list }, [ bookedSurplus, category, priorSchablon, priorActual, kapitalunderlag, pfondDesired, expansionsfondBalance, expansionsfondChange, fiscalYear, ]) return (
Skattemässiga justeringar — NE-bilaga

För enskild firma bokförs inte skatt, egenavgifter, fonder eller räntefördelning. Beräkningarna nedan visar vad du fyller i på NE-bilagan när du deklarerar.

setKapitalunderlag(e.target.value)} placeholder="0" className="tabular-nums h-9" />
setPriorSchablon(e.target.value)} placeholder="0" className="tabular-nums h-9" />
setPriorActual(e.target.value)} placeholder="0" className="tabular-nums h-9" />
setPfondDesired(e.target.value)} placeholder="0" className="tabular-nums h-9" />
setExpansionsfondBalance(e.target.value)} placeholder="0" className="tabular-nums h-9" />
setExpansionsfondChange(e.target.value)} placeholder="0" className="tabular-nums h-9" />
{items.map((item) => (
{item.label}

{item.description}

{item.ne_ruta}

{formatCurrency(item.amount)}

{item.warnings.length > 0 && ( {item.warnings.map((w, i) => (

{w}

))}
)}
))} NE-bilaga räkenskapsschema (R1–R11)

Räkenskapsschema-delen genereras automatiskt från bokföringen. Ladda ner SRU-filen och ladda upp den i Skatteverkets e-tjänst för Inkomstdeklaration 1.

) }