This commit is contained in:
2026-03-18 11:24:59 -05:00
parent 02e14319ac
commit f85563ce99
17 changed files with 1578 additions and 2 deletions

View File

@@ -10,6 +10,8 @@ export const permissions = {
manufacturingWrite: "manufacturing.write",
filesRead: "files.read",
filesWrite: "files.write",
financeRead: "finance.read",
financeWrite: "finance.write",
ganttRead: "gantt.read",
salesRead: "sales.read",
salesWrite: "sales.write",

131
shared/src/finance/types.ts Normal file
View File

@@ -0,0 +1,131 @@
export const financePaymentTypes = ["DEPOSIT", "PROGRESS", "FINAL", "ADJUSTMENT"] as const;
export const financePaymentMethods = ["ACH", "WIRE", "CHECK", "CARD", "CASH", "OTHER"] as const;
export const capexCategories = ["EQUIPMENT", "TOOLING", "CONSUMABLE"] as const;
export const capexStatuses = ["PLANNED", "APPROVED", "ORDERED", "IN_SERVICE", "CLOSED", "CANCELLED"] as const;
export type FinancePaymentType = (typeof financePaymentTypes)[number];
export type FinancePaymentMethod = (typeof financePaymentMethods)[number];
export type CapexCategory = (typeof capexCategories)[number];
export type CapexStatus = (typeof capexStatuses)[number];
export interface FinanceProfileDto {
id: string;
currencyCode: string;
standardLaborRatePerHour: number;
overheadRatePerHour: number;
createdAt: string;
updatedAt: string;
}
export interface FinanceProfileInput {
currencyCode: string;
standardLaborRatePerHour: number;
overheadRatePerHour: number;
}
export interface FinanceCustomerPaymentDto {
id: string;
salesOrderId: string;
salesOrderNumber: string;
customerId: string;
customerName: string;
paymentType: FinancePaymentType;
paymentMethod: FinancePaymentMethod;
paymentDate: string;
amount: number;
reference: string;
notes: string;
createdAt: string;
createdByName: string;
}
export interface FinanceCustomerPaymentInput {
salesOrderId: string;
paymentType: FinancePaymentType;
paymentMethod: FinancePaymentMethod;
paymentDate: string;
amount: number;
reference: string;
notes: string;
}
export interface FinanceCapexDto {
id: string;
title: string;
category: CapexCategory;
status: CapexStatus;
vendorId: string | null;
vendorName: string | null;
purchaseOrderId: string | null;
purchaseOrderNumber: string | null;
plannedAmount: number;
actualAmount: number;
requestDate: string;
targetInServiceDate: string | null;
purchasedAt: string | null;
notes: string;
createdAt: string;
updatedAt: string;
}
export interface FinanceCapexInput {
title: string;
category: CapexCategory;
status: CapexStatus;
vendorId: string | null;
purchaseOrderId: string | null;
plannedAmount: number;
actualAmount: number;
requestDate: string;
targetInServiceDate: string | null;
purchasedAt: string | null;
notes: string;
}
export interface FinanceSalesOrderLedgerDto {
salesOrderId: string;
salesOrderNumber: string;
customerId: string;
customerName: string;
status: string;
issueDate: string;
revenueTotal: number;
paymentsReceived: number;
accountsReceivableOpen: number;
linkedPurchaseCommitted: number;
linkedPurchaseReceivedValue: number;
manufacturingMaterialCost: number;
manufacturingLaborCost: number;
manufacturingOverheadCost: number;
manufacturingTotalCost: number;
totalRecognizedSpend: number;
grossMarginEstimate: number;
grossMarginPercent: number;
paymentCoveragePercent: number;
linkedPurchaseOrderCount: number;
linkedWorkOrderCount: number;
}
export interface FinanceSummaryDto {
bookedRevenue: number;
paymentsReceived: number;
accountsReceivableOpen: number;
linkedPurchaseCommitted: number;
linkedPurchaseReceivedValue: number;
manufacturingMaterialCost: number;
manufacturingLaborCost: number;
manufacturingOverheadCost: number;
manufacturingTotalCost: number;
capexPlanned: number;
capexActual: number;
grossMarginEstimate: number;
}
export interface FinanceDashboardDto {
generatedAt: string;
profile: FinanceProfileDto;
summary: FinanceSummaryDto;
salesOrderLedgers: FinanceSalesOrderLedgerDto[];
payments: FinanceCustomerPaymentDto[];
capex: FinanceCapexDto[];
}

View File

@@ -5,6 +5,7 @@ export * from "./common/api.js";
export * from "./company/types.js";
export * from "./crm/types.js";
export * from "./files/types.js";
export * from "./finance/types.js";
export * from "./gantt/types.js";
export * from "./inventory/types.js";
export * from "./manufacturing/types.js";