i need a shit
This commit is contained in:
@@ -27,7 +27,8 @@ import {
|
||||
ChevronRight,
|
||||
ArrowUpDown,
|
||||
Truck,
|
||||
MessageCircle
|
||||
MessageCircle,
|
||||
AlertTriangle
|
||||
} from "lucide-react";
|
||||
import Link from "next/link";
|
||||
import { clientFetch } from '@/lib/api';
|
||||
@@ -53,6 +54,10 @@ interface Order {
|
||||
orderDate: Date;
|
||||
telegramUsername?: string;
|
||||
telegramBuyerId?: string;
|
||||
underpaid?: boolean;
|
||||
underpaymentAmount?: number;
|
||||
lastBalanceReceived?: number;
|
||||
cryptoTotal?: number;
|
||||
}
|
||||
|
||||
type SortableColumns = "orderId" | "totalPrice" | "status" | "orderDate";
|
||||
@@ -281,6 +286,27 @@ export default function OrderTable() {
|
||||
}
|
||||
};
|
||||
|
||||
// Helper function to determine if order is underpaid
|
||||
const isOrderUnderpaid = (order: Order) => {
|
||||
return order.underpaid === true && order.underpaymentAmount && order.underpaymentAmount > 0;
|
||||
};
|
||||
|
||||
// Helper function to get underpaid display info
|
||||
const getUnderpaidInfo = (order: Order) => {
|
||||
if (!isOrderUnderpaid(order)) return null;
|
||||
|
||||
const received = order.lastBalanceReceived || 0;
|
||||
const required = order.cryptoTotal || 0;
|
||||
const missing = order.underpaymentAmount || 0;
|
||||
|
||||
return {
|
||||
received,
|
||||
required,
|
||||
missing,
|
||||
percentage: required > 0 ? ((received / required) * 100).toFixed(1) : 0
|
||||
};
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="space-y-4">
|
||||
<div className="border border-zinc-800 rounded-md bg-black/40 overflow-hidden">
|
||||
@@ -368,6 +394,7 @@ export default function OrderTable() {
|
||||
<TableBody>
|
||||
{paginatedOrders.map((order) => {
|
||||
const StatusIcon = statusConfig[order.status as keyof typeof statusConfig]?.icon || XCircle;
|
||||
const underpaidInfo = getUnderpaidInfo(order);
|
||||
|
||||
return (
|
||||
<TableRow key={order._id}>
|
||||
@@ -379,15 +406,32 @@ export default function OrderTable() {
|
||||
/>
|
||||
</TableCell>
|
||||
<TableCell>#{order.orderId}</TableCell>
|
||||
<TableCell>£{order.totalPrice.toFixed(2)}</TableCell>
|
||||
<TableCell>
|
||||
<div className={`inline-flex items-center gap-2 px-3 py-1 rounded-full text-sm ${
|
||||
statusConfig[order.status as OrderStatus]?.bgColor || "bg-gray-500"
|
||||
} ${statusConfig[order.status as OrderStatus]?.color || "text-white"}`}>
|
||||
{React.createElement(statusConfig[order.status as OrderStatus]?.icon || XCircle, {
|
||||
className: `h-4 w-4 ${statusConfig[order.status as OrderStatus]?.animate || ""}`
|
||||
})}
|
||||
{order.status.charAt(0).toUpperCase() + order.status.slice(1)}
|
||||
<div className="flex flex-col">
|
||||
<span>£{order.totalPrice.toFixed(2)}</span>
|
||||
{underpaidInfo && (
|
||||
<span className="text-xs text-red-400">
|
||||
Missing: £{(underpaidInfo.missing * 100).toFixed(2)}
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<div className="flex items-center gap-2">
|
||||
<div className={`inline-flex items-center gap-2 px-3 py-1 rounded-full text-sm ${
|
||||
statusConfig[order.status as OrderStatus]?.bgColor || "bg-gray-500"
|
||||
} ${statusConfig[order.status as OrderStatus]?.color || "text-white"}`}>
|
||||
{React.createElement(statusConfig[order.status as OrderStatus]?.icon || XCircle, {
|
||||
className: `h-4 w-4 ${statusConfig[order.status as OrderStatus]?.animate || ""}`
|
||||
})}
|
||||
{order.status.charAt(0).toUpperCase() + order.status.slice(1)}
|
||||
</div>
|
||||
{isOrderUnderpaid(order) && (
|
||||
<div className="flex items-center gap-1 px-2 py-0.5 rounded text-xs bg-red-600 text-white">
|
||||
<AlertTriangle className="h-3 w-3" />
|
||||
{underpaidInfo?.percentage}%
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
|
||||
Reference in New Issue
Block a user