This commit is contained in:
2026-03-14 23:03:17 -05:00
parent ce6dec316e
commit 8bf69c67e0
22 changed files with 1660 additions and 175 deletions

View File

@@ -10,6 +10,7 @@ export const permissions = {
filesWrite: "files.write",
ganttRead: "gantt.read",
salesRead: "sales.read",
salesWrite: "sales.write",
shippingRead: "shipping.read",
} as const;

View File

@@ -6,3 +6,4 @@ export * from "./crm/types.js";
export * from "./files/types.js";
export * from "./gantt/types.js";
export * from "./inventory/types.js";
export * from "./sales/types.js";

63
shared/src/sales/types.ts Normal file
View File

@@ -0,0 +1,63 @@
import type { InventoryUnitOfMeasure } from "../inventory/types.js";
export const salesDocumentStatuses = ["DRAFT", "ISSUED", "APPROVED", "CLOSED"] as const;
export type SalesDocumentStatus = (typeof salesDocumentStatuses)[number];
export type SalesDocumentType = "QUOTE" | "ORDER";
export interface SalesCustomerOptionDto {
id: string;
name: string;
email: string;
}
export interface SalesLineDto {
id: string;
itemId: string;
itemSku: string;
itemName: string;
description: string;
quantity: number;
unitOfMeasure: InventoryUnitOfMeasure;
unitPrice: number;
lineTotal: number;
position: number;
}
export interface SalesLineInput {
itemId: string;
description: string;
quantity: number;
unitOfMeasure: InventoryUnitOfMeasure;
unitPrice: number;
position: number;
}
export interface SalesDocumentSummaryDto {
id: string;
documentNumber: string;
customerId: string;
customerName: string;
status: SalesDocumentStatus;
subtotal: number;
issueDate: string;
updatedAt: string;
lineCount: number;
}
export interface SalesDocumentDetailDto extends SalesDocumentSummaryDto {
customerEmail: string;
notes: string;
expiresAt: string | null;
createdAt: string;
lines: SalesLineDto[];
}
export interface SalesDocumentInput {
customerId: string;
status: SalesDocumentStatus;
issueDate: string;
expiresAt: string | null;
notes: string;
lines: SalesLineInput[];
}