feat: add pendingRent and pendingRentDays fields to rental interface and update status badge logic
This commit is contained in:
@@ -47,6 +47,8 @@ interface Rental {
|
||||
monthlyRate: number;
|
||||
totalPaid: number;
|
||||
dueRental: number;
|
||||
pendingRent?: number;
|
||||
pendingRentDays?: number;
|
||||
paymentStatus: PaymentStatus;
|
||||
penaltyLevel: PenaltyLevel;
|
||||
penaltyAmount: number;
|
||||
@@ -130,6 +132,8 @@ const mockRentals: Rental[] = [
|
||||
monthlyRate: 3500,
|
||||
totalPaid: 38500,
|
||||
dueRental: 0,
|
||||
pendingRent: 0,
|
||||
pendingRentDays: 0,
|
||||
paymentStatus: 'paid',
|
||||
penaltyLevel: 'none',
|
||||
penaltyAmount: 0,
|
||||
@@ -162,6 +166,8 @@ const mockRentals: Rental[] = [
|
||||
monthlyRate: 3500,
|
||||
totalPaid: 3000,
|
||||
dueRental: 3500,
|
||||
pendingRent: 3500,
|
||||
pendingRentDays: 5,
|
||||
paymentStatus: 'partial',
|
||||
penaltyLevel: 'none',
|
||||
penaltyAmount: 0,
|
||||
@@ -193,6 +199,8 @@ const mockRentals: Rental[] = [
|
||||
monthlyRate: 12000,
|
||||
totalPaid: 82000,
|
||||
dueRental: 0,
|
||||
pendingRent: 0,
|
||||
pendingRentDays: 0,
|
||||
paymentStatus: 'paid',
|
||||
penaltyLevel: 'none',
|
||||
penaltyAmount: 0,
|
||||
@@ -225,6 +233,8 @@ const mockRentals: Rental[] = [
|
||||
monthlyRate: 2200,
|
||||
totalPaid: 2600,
|
||||
dueRental: 600,
|
||||
pendingRent: 600,
|
||||
pendingRentDays: 3,
|
||||
paymentStatus: 'overdue',
|
||||
penaltyLevel: 'day3',
|
||||
penaltyAmount: 1000,
|
||||
@@ -304,7 +314,7 @@ export default function RentalsPage() {
|
||||
return { style: styles[status], label: labels[status] || status };
|
||||
};
|
||||
|
||||
const getPaymentStatusBadge = (status: PaymentStatus) => {
|
||||
const getPaymentStatusBadge = (status: PaymentStatus, pendingRent?: number, pendingRentDays?: number) => {
|
||||
const styles: Record<PaymentStatus, string> = {
|
||||
paid: 'bg-green-100 text-green-700',
|
||||
partial: 'bg-amber-100 text-amber-700',
|
||||
@@ -317,7 +327,7 @@ export default function RentalsPage() {
|
||||
overdue: 'Overdue',
|
||||
unpaid: 'Unpaid',
|
||||
};
|
||||
return { style: styles[status], label: labels[status] || status };
|
||||
return { style: styles[status], label: labels[status] || status, pendingRent: pendingRent || 0, pendingRentDays: pendingRentDays || 0 };
|
||||
};
|
||||
|
||||
const getPenaltyBadge = (level: PenaltyLevel) => {
|
||||
@@ -540,7 +550,7 @@ export default function RentalsPage() {
|
||||
<tbody className="divide-y divide-slate-50">
|
||||
{filteredRentals.map(rental => {
|
||||
const statusBadge = getStatusBadge(rental.status);
|
||||
const paymentBadge = getPaymentStatusBadge(rental.paymentStatus);
|
||||
const paymentBadge = getPaymentStatusBadge(rental.paymentStatus, rental.pendingRent, rental.pendingRentDays);
|
||||
const penaltyBadge = getPenaltyBadge(rental.penaltyLevel);
|
||||
const typeBadge = getTypeBadge(rental.type);
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user