email plus return item statuses

This commit is contained in:
jackiettran
2025-10-06 15:41:48 -04:00
parent 67cc997ddc
commit 5c3d505988
28 changed files with 5861 additions and 259 deletions

View File

@@ -107,7 +107,15 @@ export interface Rental {
// Fee tracking fields
platformFee?: number;
payoutAmount?: number;
status: "pending" | "confirmed" | "active" | "completed" | "cancelled";
status:
| "pending"
| "confirmed"
| "active"
| "completed"
| "cancelled"
| "returned_late"
| "damaged"
| "lost";
paymentStatus: "pending" | "paid" | "refunded";
// Refund tracking fields
refundAmount?: number;
@@ -140,6 +148,13 @@ export interface Rental {
// Private messages
itemPrivateMessage?: string;
renterPrivateMessage?: string;
// New condition check and dispute fields
actualReturnDateTime?: string;
lateFees?: number;
damageFees?: number;
replacementFees?: number;
itemLostReportedAt?: string;
damageAssessment?: any;
item?: Item;
renter?: User;
owner?: User;
@@ -147,6 +162,82 @@ export interface Rental {
updatedAt: string;
}
export interface ConditionCheck {
id: string;
rentalId: string;
checkType:
| "pre_rental_owner"
| "rental_start_renter"
| "rental_end_renter"
| "post_rental_owner";
photos: string[];
notes?: string;
submittedBy: string;
submittedAt: string;
metadata: any;
submittedByUser?: User;
createdAt: string;
updatedAt: string;
}
export interface LateReturnCalculation {
lateHours: number;
lateFee: number;
isLate: boolean;
gracePeriodUsed?: boolean;
billableHours?: number;
pricingType?: "hourly" | "daily";
}
export interface DamageAssessment {
description: string;
canBeFixed: boolean;
repairCost?: number;
needsReplacement: boolean;
replacementCost?: number;
proofOfOwnership?: string[];
photos?: string[];
assessedAt: string;
assessedBy: string;
feeCalculation: {
type: "repair" | "replacement" | "assessment";
amount: number;
originalCost?: number;
repairCost?: number;
percentage?: number;
baseAmount?: number;
};
}
export interface ConditionCheckTimeline {
rental: {
id: string;
startDateTime: string;
endDateTime: string;
status: string;
};
timeline: {
[key: string]: {
status:
| "completed"
| "available"
| "pending"
| "expired"
| "not_available";
submittedAt?: string;
submittedBy?: User;
photoCount?: number;
hasNotes?: boolean;
timeWindow?: {
start: string;
end: string;
};
availableFrom?: string;
availableUntil?: string;
};
};
}
export interface ItemRequest {
id: string;
title: string;