diff --git a/frontend/src/components/JobCard.tsx b/frontend/src/components/JobCard.tsx index 2afdeb2..7383eb4 100644 --- a/frontend/src/components/JobCard.tsx +++ b/frontend/src/components/JobCard.tsx @@ -18,12 +18,21 @@ interface JobCardProps { const JobCard: React.FC = ({ job, onEdit, onDelete, onUpdateProduced }) => { const [isEditingProduced, setIsEditingProduced] = useState(false); const [producedValue, setProducedValue] = useState(job.produced?.toString() || '0'); - const totalExpenditure = job.expenditures.reduce((sum, tx) => sum + tx.totalPrice, 0); - const totalIncome = job.income.reduce((sum, tx) => sum + tx.totalPrice, 0); + + // Sort transactions by date descending + const sortedExpenditures = [...job.expenditures].sort((a, b) => + new Date(b.date).getTime() - new Date(a.date).getTime() + ); + const sortedIncome = [...job.income].sort((a, b) => + new Date(b.date).getTime() - new Date(a.date).getTime() + ); + + const totalExpenditure = sortedExpenditures.reduce((sum, tx) => sum + tx.totalPrice, 0); + const totalIncome = sortedIncome.reduce((sum, tx) => sum + tx.totalPrice, 0); const profit = totalIncome - totalExpenditure; const margin = totalIncome > 0 ? ((profit / totalIncome) * 100) : 0; - const itemsSold = job.income.reduce((sum, tx) => sum + tx.quantity, 0); + const itemsSold = sortedIncome.reduce((sum, tx) => sum + tx.quantity, 0); const saleStartTime = job.saleStart ? new Date(job.saleStart).getTime() : null; const daysSinceStart = saleStartTime ? Math.max(1, Math.ceil((Date.now() - saleStartTime) / (1000 * 60 * 60 * 24))) : 0; const itemsPerDay = daysSinceStart > 0 ? itemsSold / daysSinceStart : 0; diff --git a/frontend/src/components/TransactionTable.tsx b/frontend/src/components/TransactionTable.tsx index eb9885a..0278a27 100644 --- a/frontend/src/components/TransactionTable.tsx +++ b/frontend/src/components/TransactionTable.tsx @@ -26,7 +26,12 @@ const TransactionTable: React.FC = ({ const [editingId, setEditingId] = useState(null); const [editingTransaction, setEditingTransaction] = useState(null); - const totalAmount = transactions.reduce((sum, tx) => sum + tx.totalPrice, 0); + // Sort transactions by date descending + const sortedTransactions = [...transactions].sort((a, b) => + new Date(b.date).getTime() - new Date(a.date).getTime() + ); + + const totalAmount = sortedTransactions.reduce((sum, tx) => sum + tx.totalPrice, 0); const handleEdit = (transaction: IndTransactionRecord) => { setEditingId(transaction.id); @@ -92,7 +97,7 @@ const TransactionTable: React.FC = ({ - {transactions.map((transaction) => ( + {sortedTransactions.map((transaction) => ( {editingId === transaction.id ? (