'use client' import { Badge } from '@/components/ui/badge' import { AccountNumber } from '@/components/ui/account-number' import { CheckCircle2, Paperclip } from 'lucide-react' import { formatDate } from '@/lib/utils' interface ReviewLine { account_number: string debit_amount: string credit_amount: string line_description: string } interface JournalEntryReviewContentProps { periodName: string entryDate: string description: string notes?: string voucherSeries?: string lines: ReviewLine[] totalDebit: number totalCredit: number attachmentCount?: number showBalanceBadge?: boolean hideDate?: boolean } function formatAmount(amount: number): string { return amount.toLocaleString('sv-SE', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) } export function JournalEntryReviewContent({ periodName, entryDate, description, notes, voucherSeries, lines, totalDebit, totalCredit, attachmentCount, showBalanceBadge = true, hideDate = false, }: JournalEntryReviewContentProps) { const activeLines = lines.filter( (l) => l.account_number && (l.debit_amount || l.credit_amount) ) return (
{/* Header info */}
Räkenskapsår

{periodName}

{!hideDate && (
Datum

{formatDate(entryDate)}

)} {voucherSeries && (
Serie

{voucherSeries}

)}
Beskrivning

{description}

{notes && (
Intern anteckning

{notes}

)}
{/* Balance status */} {(showBalanceBadge || (attachmentCount != null && attachmentCount > 0)) && (
{showBalanceBadge && ( Debet = Kredit )} {attachmentCount != null && attachmentCount > 0 && ( {attachmentCount} underlag )}
)} {/* Debit/Credit: table on desktop, cards on mobile */}
{activeLines.map((line, index) => ( ))}
Konto Beskrivning Debet Kredit
{line.line_description || ''} {parseFloat(line.debit_amount) > 0 ? formatAmount(parseFloat(line.debit_amount)) : ''} {parseFloat(line.credit_amount) > 0 ? formatAmount(parseFloat(line.credit_amount)) : ''}
Summa {formatAmount(totalDebit)} {formatAmount(totalCredit)}
{activeLines.map((line, index) => (
{line.line_description && ( {line.line_description} )}
{parseFloat(line.debit_amount) > 0 ? `D ${formatAmount(parseFloat(line.debit_amount))}` : `K ${formatAmount(parseFloat(line.credit_amount))}`}
))}
Summa D {formatAmount(totalDebit)} / K {formatAmount(totalCredit)}
) }