'use client' import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from '@/components/ui/dialog' import { formatCurrency, formatDate } from '@/lib/utils' import { ArrowUpRight, ArrowDownRight } from 'lucide-react' import JournalEntryForm from '@/components/bookkeeping/JournalEntryForm' import type { FormLine } from '@/components/bookkeeping/JournalEntryForm' import type { TransactionWithInvoice } from './transaction-types' interface TransactionBookingDialogProps { open: boolean onOpenChange: (open: boolean) => void transaction: TransactionWithInvoice | null onBooked: (transactionId: string, journalEntryId: string) => void } function buildInitialLines(transaction: TransactionWithInvoice): FormLine[] { const amount = Math.round(Math.abs(transaction.amount_sek ?? transaction.amount) * 100) / 100 const amountStr = amount.toFixed(2) const isExpense = transaction.amount < 0 if (isExpense) { return [ { account_number: '', debit_amount: amountStr, credit_amount: '', line_description: '' }, { account_number: '1930', debit_amount: '', credit_amount: amountStr, line_description: 'Företagskonto' }, ] } return [ { account_number: '1930', debit_amount: amountStr, credit_amount: '', line_description: 'Företagskonto' }, { account_number: '', debit_amount: '', credit_amount: amountStr, line_description: '' }, ] } export default function TransactionBookingDialog({ open, onOpenChange, transaction, onBooked, }: TransactionBookingDialogProps) { if (!transaction) return null const isIncome = transaction.amount > 0 return ( Bokför transaktion Skapa en verifikation för transaktionen {/* Transaction summary */}
{isIncome ? ( ) : ( )}

{transaction.description}

{formatDate(transaction.date)}

{isIncome ? '+' : ''} {formatCurrency(transaction.amount, transaction.currency)}

onBooked(transaction.id, entryId)} />
) }