feat: add pendingRent and pendingRentDays fields to rental interface and update status badge logic

This commit is contained in:
sazzadulalambd
2026-05-10 01:31:22 +06:00
parent 0924d84983
commit 93e1d289ca
2 changed files with 23 additions and 3 deletions

View File

@@ -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 (