WFDASH-WEBAPP/src/lib/types.ts
SJCoetz c4e1c62882 chore: standardize line endings and add full test + config scaffolding
Fix inconsistent line endings across all project files for cross-environment consistency.
Add complete unit test suite covering core utilities, API routes, and server services.
Add Playwright E2E test setup with smoke, auth, and agent API tests.
Update all project configuration files to match standardized formatting.
Fix MCP API error handling to properly propagate HTTP status codes and use correct JSON-RPC error codes.
Add VSCode workspace configuration, extensions, and example MCP config files.
Update .gitignore to exclude new test and build artifacts.
2026-06-11 20:30:02 +02:00

251 lines
5.3 KiB
TypeScript

export interface BaseRecord {
id: string;
created: string;
updated: string;
collectionId: string;
collectionName: string;
}
export interface Customer extends BaseRecord {
customer: string;
email: string;
alternative_email: string;
buyer_email: string;
number: string;
company: string;
dateadded: string;
lastvisiteddate: string;
rep: string;
coordinates: string;
description: string;
}
export interface Company extends BaseRecord {
company: string;
address: string;
vendor: string;
}
export interface CompanyDetails extends BaseRecord {
company_name: string;
address: string;
number: string;
email: string;
vat_number: string;
registration_number: string;
}
export interface Supplier extends BaseRecord {
suppliername: string;
email: string;
suppliernumber: string;
supplieraddress: string;
supply_tags: string;
coordinates: string;
closingtime: string;
}
export type QuoteStatus =
| "new"
| "claimed"
| "processed"
| "emailed"
| "approval_pending"
| "approved"
| "rejected"
| "problem"
| "complete"
| "cancelled"
| "follow_up"
| "email_failed"
| "unmatched_bounce";
export interface Quote extends BaseRecord {
quote_number: string;
quote_reference: string;
external_number: string;
rfq_number: string;
markup: number;
customer: string;
company: string;
claimed_by: string;
description: string;
status: QuoteStatus;
approved_by: string;
notes: string;
email_sender: string;
email_subject: string;
email_body: string;
has_attachments: boolean;
company_letterhead: string;
email_delivered: boolean;
email_delivered_at: string;
email_opened: boolean;
email_opened_at: string;
email_tracking_id: string;
has_new_reply: boolean;
last_reply_at: string;
email_failed_at: string;
pdf_generated_at: string;
expand?: {
customer?: Customer;
company?: Company;
};
}
export interface QuoteItem extends BaseRecord {
quote: string;
description: string;
quote_number: string;
quote_reference: string;
quantity: number;
supplier: string;
cost_price: number;
selling_price: number;
notes: string;
is_processed: boolean;
markup: number;
included_in_quote: boolean;
quote_pdf_id: string;
expand?: {
supplier?: Supplier;
};
}
export type OrderStatus =
| "new"
| "processing"
| "order_ready"
| "po_generated"
| "completed"
| "cancelled";
export type ItemStatus =
| "pending"
| "processed"
| "po_generated"
| "driver_pool"
| "assigned"
| "collected"
| "stock_verified"
| "picking"
| "ready_delivery"
| "delivered"
| "cancelled";
export interface Order extends BaseRecord {
order_number: string;
company: string;
customer: string;
quote: string;
status: OrderStatus;
notes: string;
quote_matching_attempted: boolean;
quote_match_confidence: number;
potential_quote: string;
potential_quote_confidence: number;
is_repair_order: boolean;
expand?: {
company?: Company;
customer?: Customer;
quote?: Quote;
};
}
export interface OrderItem extends BaseRecord {
order: string;
description: string;
po_description: string;
quantity: number;
order_qty: number;
selling_price: number;
supplier: string;
cost_price: number;
markup: number;
purchase_order: string;
item_status: ItemStatus;
drv_status?: "unassigned" | "assigned" | "en_route" | "collected" | "failed";
drv_id?: string;
notes: string;
expand?: {
supplier?: Supplier;
};
}
export interface CollectionPool extends BaseRecord {
order: string;
order_item: string;
supplier?: string;
drv_id?: string;
pool_status: "queued" | "assigned" | "in_progress" | "completed" | "failed";
priority?: "low" | "normal" | "high" | "urgent";
pool_notes?: string;
assigned_at?: string;
completed_at?: string;
expand?: {
order?: Order;
order_item?: OrderItem;
supplier?: Supplier;
};
}
export interface PurchaseOrder extends BaseRecord {
po_number: string;
order: string;
supplier: string;
status: string;
total_amount: number;
expand?: {
order?: Order;
supplier?: Supplier;
};
}
export interface DeliveryNote extends BaseRecord {
delivery_note_number: string;
order: string;
company?: string;
customer?: string;
status: "draft" | "ready" | "delivered" | "cancelled";
delivery_date?: string;
notes?: string;
expand?: {
order?: Order;
company?: Company;
customer?: Customer;
};
}
export interface DeliveryNoteItem extends BaseRecord {
delivery_note: string;
order_item: string;
description: string;
quantity: number;
expand?: {
delivery_note?: DeliveryNote;
order_item?: OrderItem;
};
}
export interface Repair extends BaseRecord {
repair_number: string;
customer?: string;
company?: string;
order?: string;
status: "new" | "assessing" | "quoted" | "approved" | "in_progress" | "completed" | "cancelled";
item_description: string;
fault_description: string;
notes?: string;
expand?: {
customer?: Customer;
company?: Company;
order?: Order;
};
}
export interface DashboardStats {
totalCustomers: number;
activeQuotes: number;
ordersThisMonth: number;
totalRevenue: number;
}