import React, { useState } from 'react'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Textarea } from '@/components/ui/textarea'; import { Badge } from '@/components/ui/badge'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'; import { parseTransactionLine, formatISK } from '@/utils/priceUtils'; import { IndTransactionRecord, IndTransactionRecordNoId } from '@/lib/pbtypes'; import { Check, X } from 'lucide-react'; interface TransactionFormProps { jobId: string; onTransactionsAdded: (transactions: IndTransactionRecordNoId[], type: 'expenditure' | 'income') => void; } const TransactionForm: React.FC = ({ jobId, onTransactionsAdded }) => { const [pastedData, setPastedData] = useState(''); const [parsedTransactions, setParsedTransactions] = useState([]); const [transactionType, setTransactionType] = useState<'expenditure' | 'income'>('expenditure'); const handlePaste = (value: string) => { setPastedData(value); const lines = value.trim().split('\n'); const transactions: IndTransactionRecordNoId[] = []; lines.forEach((line, index) => { const parsed = parseTransactionLine(line); if (parsed) { transactions.push({ date: parsed.date.toISOString(), quantity: parsed.quantity, itemName: parsed.itemName, unitPrice: parsed.unitPrice, totalPrice: Math.abs(parsed.totalAmount), buyer: parsed.buyer, location: parsed.location, corporation: parsed.corporation, wallet: parsed.wallet, job: jobId }); } }); setParsedTransactions(transactions); }; const handleSubmit = () => { if (parsedTransactions.length > 0) { onTransactionsAdded(parsedTransactions, transactionType); setPastedData(''); setParsedTransactions([]); } }; const totalAmount = parsedTransactions.reduce((sum, tx) => sum + tx.totalPrice, 0); return ( Add Transactions setTransactionType(value as 'expenditure' | 'income')}> Expenditures Income