'use client' import { Button } from '@/components/ui/button' import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from '@/components/ui/dialog' import { formatCurrency, formatDate } from '@/lib/utils' import { CheckCircle2, AlertTriangle } from 'lucide-react' import type { TransactionWithInvoice } from './transaction-types' interface InvoiceMatchDialogProps { open: boolean onOpenChange: (open: boolean) => void transaction: TransactionWithInvoice | null isConfirming: boolean onConfirm: () => void } export default function InvoiceMatchDialog({ open, onOpenChange, transaction, isConfirming, onConfirm, }: InvoiceMatchDialogProps) { return ( Bekräfta fakturamatchning Vill du koppla denna transaktion till fakturan? Fakturan kommer att markeras som betald. {transaction?.potential_invoice && (
{/* Transaction details */}

Transaktion

{transaction.description}

{formatDate(transaction.date)} +{formatCurrency(transaction.amount, transaction.currency)}
{/* Invoice details */}

Faktura

Faktura {transaction.potential_invoice.invoice_number}

{transaction.potential_invoice.customer?.name || 'Okänd kund'}

Förfaller: {formatDate(transaction.potential_invoice.due_date)} {formatCurrency( transaction.potential_invoice.total, transaction.potential_invoice.currency )}
{/* Amount comparison */} {(() => { const txAmount = transaction.amount const invAmount = transaction.potential_invoice!.total const sameCurrency = transaction.currency === transaction.potential_invoice!.currency const amountsMatch = sameCurrency && Math.abs(txAmount - invAmount) < 0.01 if (amountsMatch) { return (

Beloppen stammer

) } const diff = Math.abs(txAmount - invAmount) return (

Beloppen skiljer sig

Differens: {formatCurrency(diff, transaction.currency)} {!sameCurrency && ' (olika valutor)'}

) })()} {/* What will happen */}

Vid bekräftelse:

  • • Transaktionen kopplas till fakturan
  • • Fakturan markeras som betald
  • • Bokföringsverifikation skapas automatiskt
)}
) }