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