188 lines
3.7 KiB
TypeScript
188 lines
3.7 KiB
TypeScript
import { Merchant } from './auth';
|
|
|
|
export interface OrderRequest {
|
|
addressId: string;
|
|
paymentMethodId: string;
|
|
paymentMethod: string;
|
|
orderType: string;
|
|
idempotencyKey: string;
|
|
}
|
|
|
|
export interface PlaceOrderResponse {
|
|
success: boolean;
|
|
message: string;
|
|
orders: Order[];
|
|
}
|
|
|
|
export interface Order {
|
|
id: string;
|
|
orderNumber: string;
|
|
customerId: string;
|
|
merchantId: string;
|
|
couponCode: string | null;
|
|
appliedPromotionId: string | null;
|
|
status: OrderStatus;
|
|
orderType: OrderType;
|
|
paymentMethodId: string;
|
|
paymentMethod: PaymentMethod;
|
|
currency: string;
|
|
subtotal: string;
|
|
deliveryFee: string;
|
|
platformFee: string;
|
|
serviceFee: string;
|
|
taxAmount: string;
|
|
discountAmount: string;
|
|
totalAmount: string;
|
|
pickupAddress: PickupAddress;
|
|
dropAddress: DropAddress;
|
|
metadata: OrderMetadata;
|
|
version: number;
|
|
createdAt: string;
|
|
updatedAt: string;
|
|
deletedAt: string | null;
|
|
|
|
orderItems?: OrderItem[];
|
|
payments?: Payment[];
|
|
delivery?: Delivery;
|
|
merchant?: Merchant;
|
|
|
|
customer?: OrderCustomer;
|
|
tracking?: TrackingEntry[];
|
|
}
|
|
|
|
// Add these new interfaces
|
|
|
|
export interface OrderCustomerUser {
|
|
name: string;
|
|
phone: string;
|
|
}
|
|
|
|
export interface OrderCustomer {
|
|
id: string;
|
|
userId: string;
|
|
customerCode: string;
|
|
createdAt: string;
|
|
deletedAt: string | null;
|
|
user: OrderCustomerUser;
|
|
}
|
|
|
|
export interface TrackingEntry {
|
|
status: OrderStatus;
|
|
time: string;
|
|
}
|
|
|
|
export interface PickupAddress {
|
|
city: string;
|
|
label: string | null;
|
|
phone: string;
|
|
state: string;
|
|
landmark: string;
|
|
postalCode: string;
|
|
houseNumber: string;
|
|
addressLine1: string;
|
|
}
|
|
|
|
export interface DropAddress {
|
|
city: string;
|
|
label: string;
|
|
phone: string;
|
|
state: string;
|
|
landmark: string;
|
|
latitude: number;
|
|
longitude: number;
|
|
postalCode: string;
|
|
houseNumber: string;
|
|
addressLine1: string;
|
|
}
|
|
|
|
export interface OrderMetadata {
|
|
idempotencyKey: string;
|
|
trackingHistory: TrackingHistory;
|
|
}
|
|
|
|
export interface TrackingHistory {
|
|
PLACED: string;
|
|
CONFIRMED: string;
|
|
// Future statuses can be added here:
|
|
// PREPARING?: string;
|
|
// OUT_FOR_DELIVERY?: string;
|
|
// DELIVERED?: string;
|
|
// CANCELLED?: string;
|
|
}
|
|
|
|
export interface OrderItem {
|
|
id: string;
|
|
orderId: string;
|
|
productId: string;
|
|
itemType: 'PRODUCT' | 'SERVICE';
|
|
name: string;
|
|
quantity: string;
|
|
unitPrice: string;
|
|
totalAmount: string;
|
|
attributes: Record<string, any>;
|
|
}
|
|
|
|
export interface Payment {
|
|
id: string;
|
|
orderId: string;
|
|
paymentReference: string;
|
|
paymentMethodId: string;
|
|
method: PaymentMethod;
|
|
provider: PaymentMethod;
|
|
providerPaymentId: string | null;
|
|
status: PaymentStatus;
|
|
amount: string;
|
|
currency: string;
|
|
idempotencyKey: string;
|
|
metadata: Record<string, any>;
|
|
createdAt: string;
|
|
updatedAt: string;
|
|
}
|
|
|
|
export interface Delivery {
|
|
id: string;
|
|
orderId: string;
|
|
deliveryPartnerId: string | null;
|
|
deliveryNumber: string;
|
|
status: DeliveryStatus;
|
|
estimatedDistanceKm: number | null;
|
|
actualDistanceKm: number | null;
|
|
proofOfPickupKey: string | null;
|
|
proofOfDeliveryKey: string | null;
|
|
pickedUpAt: string | null;
|
|
deliveredAt: string | null;
|
|
}
|
|
|
|
// export interface Merchant {
|
|
// name: string;
|
|
// imageUrl: string | null;
|
|
// }
|
|
|
|
export type PaymentStatus =
|
|
| 'PENDING'
|
|
| 'PROCESSING'
|
|
| 'COMPLETED'
|
|
| 'FAILED'
|
|
| 'REFUNDED';
|
|
|
|
export type DeliveryStatus =
|
|
| 'PENDING_ASSIGNMENT'
|
|
| 'ASSIGNED'
|
|
| 'PICKED_UP'
|
|
| 'IN_TRANSIT'
|
|
| 'DELIVERED'
|
|
| 'CANCELLED';
|
|
|
|
export type OrderStatus =
|
|
| 'PENDING'
|
|
| 'CONFIRMED'
|
|
| 'PREPARING'
|
|
| 'READY_FOR_PICKUP'
|
|
| 'OUT_FOR_DELIVERY'
|
|
| 'DELIVERED'
|
|
| 'CANCELLED';
|
|
|
|
export type OrderType = 'DELIVERY' | 'PICKUP';
|
|
|
|
export type PaymentMethod = 'CARD' | 'CASH' | 'UPI' | 'WALLET' | 'NET_BANKING';
|