diff --git a/src/components/JobCardMetrics.tsx b/src/components/JobCardMetrics.tsx index 92f1e6c..9cfc281 100644 --- a/src/components/JobCardMetrics.tsx +++ b/src/components/JobCardMetrics.tsx @@ -1,4 +1,3 @@ - import { useState } from 'react'; import { formatISK, parseISKAmount } from '@/utils/priceUtils'; import { IndJob } from '@/lib/types'; @@ -29,15 +28,13 @@ const JobCardMetrics: React.FC = ({ job }) => { const profit = totalIncome - totalExpenditure; const margin = totalIncome > 0 ? ((profit / totalIncome) * 100) : 0; - // Calculate performance metrics + // Calculate performance metrics - Fixed logic const itemsSold = sortedIncome.reduce((sum, tx) => sum + tx.quantity, 0); - const expectedRevenuePerItem = job.projectedRevenue && job.outputQuantity > 0 ? job.projectedRevenue / job.outputQuantity : 0; - const actualRevenuePerItem = itemsSold > 0 ? totalIncome / itemsSold : 0; - const performanceRatio = expectedRevenuePerItem > 0 ? (actualRevenuePerItem / expectedRevenuePerItem) : 0; - const performancePercentage = performanceRatio * 100; + const revenuePerformanceRatio = job.projectedRevenue > 0 ? (totalIncome / job.projectedRevenue) : 0; + const revenuePerformancePercentage = revenuePerformanceRatio * 100; - // Show performance indicator only if we have the necessary data - const showPerformanceIndicator = job.projectedRevenue > 0 && job.outputQuantity > 0 && itemsSold > 0; + // Show performance indicator only if we have the necessary data and have sold items + const showPerformanceIndicator = job.projectedRevenue > 0 && itemsSold > 0; const handleFieldClick = (fieldName: string, currentValue: number, e: React.MouseEvent) => { e.stopPropagation(); @@ -85,7 +82,7 @@ const JobCardMetrics: React.FC = ({ job }) => { {job.projectedCost > 0 && (
- vs {editingField === 'projectedCost' ? ( +
vs {editingField === 'projectedCost' ? ( setTempValues({ ...tempValues, projectedCost: e.target.value })} @@ -104,7 +101,7 @@ const JobCardMetrics: React.FC = ({ job }) => { > {formatISK(job.projectedCost)} - )} + )}
= ({ job }) => { {job.projectedRevenue > 0 && (
- vs {editingField === 'projectedRevenue' ? ( +
vs {editingField === 'projectedRevenue' ? ( setTempValues({ ...tempValues, projectedRevenue: e.target.value })} @@ -146,7 +143,7 @@ const JobCardMetrics: React.FC = ({ job }) => { > {formatISK(job.projectedRevenue)} - )} + )}
= ({ job }) => { {showPerformanceIndicator && (
= 100 + revenuePerformancePercentage >= 100 ? 'bg-green-900/50 text-green-400' - : performancePercentage >= 90 + : revenuePerformancePercentage >= 90 ? 'bg-yellow-900/50 text-yellow-400' : 'bg-red-900/50 text-red-400' }`} - title={`Performance: ${formatISK(actualRevenuePerItem)}/item vs ${formatISK(expectedRevenuePerItem)}/item expected (${performancePercentage.toFixed(1)}%)`} + title={`Performance: ${formatISK(totalIncome)} actual vs ${formatISK(job.projectedRevenue)} expected (${revenuePerformancePercentage.toFixed(1)}%)`} > - {performancePercentage >= 100 ? '📈' : performancePercentage >= 90 ? '⚠️' : '📉'} {performancePercentage.toFixed(0)}% + {revenuePerformancePercentage >= 100 ? '📈' : revenuePerformancePercentage >= 90 ? '⚠️' : '📉'} {revenuePerformancePercentage.toFixed(0)}%
)}