Rebuild order flow: settle after pricing, notifications, and invoice expiry.

Hide prices until admin sends the invoice, enforce status transitions, add customer/admin SMS+in-app notifications, schedule cash invoice reminders, and ship updated dist/prisma-client/deploy-bundle for git-pull deploys.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-09 12:00:13 +03:30
co-authored by Cursor
parent 06e5f48d07
commit d4aaa8e997
102 changed files with 2989 additions and 509 deletions
+158 -37
View File
@@ -1,6 +1,6 @@
import { OrdersService } from './orders.service';
import type { AuthPrincipal } from '../common/decorators/current-user.decorator';
import { AdminCreateOrderDto, SubmitOrderDto, UpdateOrderChecksDto, UpdateOrderPricingDto, UpdateOrderStatusDto } from './dto/order.dto';
import { AdminCreateOrderDto, ChooseSettlementDto, SubmitOrderDto, UpdateOrderChecksDto, UpdateOrderPricingDto, UpdateOrderStatusDto } from './dto/order.dto';
export declare class CustomerOrdersController {
private readonly ordersService;
constructor(ordersService: OrdersService);
@@ -10,17 +10,19 @@ export declare class CustomerOrdersController {
userId: string;
companyId: string;
companyName: string;
settlementType: import("@prisma/client").$Enums.SettlementType;
settlementMethod: import("@prisma/client").$Enums.SettlementType;
settlementType: import("@prisma/client").$Enums.SettlementType | null;
settlementMethod: import("@prisma/client").$Enums.SettlementType | null;
checkMode: import("@prisma/client").$Enums.CheckRegistrationMode | undefined;
status: import("@prisma/client").$Enums.OrderStatus;
adminStatus: string;
allowedTransitions: import("@prisma/client").$Enums.OrderStatus[];
totalMeterage: number;
meterage: number;
totalAmount: number | null;
shippingCost: number | null;
totalDiscount: number | null;
finalAmount: number | null;
pricesVisible: boolean;
notes: string | undefined;
checkRassDays: number | undefined;
checkRassDate: string | undefined;
@@ -42,8 +44,8 @@ export declare class CustomerOrdersController {
confirmedMeterage: number | null;
unitPrice: number | null;
supplyPrice: number | null;
unitDiscount: number;
discount: number;
unitDiscount: number | null;
discount: number | null;
lineTotal: number | null;
totalAmount: number | null;
notes: string | undefined;
@@ -111,17 +113,19 @@ export declare class CustomerOrdersController {
userId: string;
companyId: string;
companyName: string;
settlementType: import("@prisma/client").$Enums.SettlementType;
settlementMethod: import("@prisma/client").$Enums.SettlementType;
settlementType: import("@prisma/client").$Enums.SettlementType | null;
settlementMethod: import("@prisma/client").$Enums.SettlementType | null;
checkMode: import("@prisma/client").$Enums.CheckRegistrationMode | undefined;
status: import("@prisma/client").$Enums.OrderStatus;
adminStatus: string;
allowedTransitions: import("@prisma/client").$Enums.OrderStatus[];
totalMeterage: number;
meterage: number;
totalAmount: number | null;
shippingCost: number | null;
totalDiscount: number | null;
finalAmount: number | null;
pricesVisible: boolean;
notes: string | undefined;
checkRassDays: number | undefined;
checkRassDate: string | undefined;
@@ -143,8 +147,8 @@ export declare class CustomerOrdersController {
confirmedMeterage: number | null;
unitPrice: number | null;
supplyPrice: number | null;
unitDiscount: number;
discount: number;
unitDiscount: number | null;
discount: number | null;
lineTotal: number | null;
totalAmount: number | null;
notes: string | undefined;
@@ -212,17 +216,19 @@ export declare class CustomerOrdersController {
userId: string;
companyId: string;
companyName: string;
settlementType: import("@prisma/client").$Enums.SettlementType;
settlementMethod: import("@prisma/client").$Enums.SettlementType;
settlementType: import("@prisma/client").$Enums.SettlementType | null;
settlementMethod: import("@prisma/client").$Enums.SettlementType | null;
checkMode: import("@prisma/client").$Enums.CheckRegistrationMode | undefined;
status: import("@prisma/client").$Enums.OrderStatus;
adminStatus: string;
allowedTransitions: import("@prisma/client").$Enums.OrderStatus[];
totalMeterage: number;
meterage: number;
totalAmount: number | null;
shippingCost: number | null;
totalDiscount: number | null;
finalAmount: number | null;
pricesVisible: boolean;
notes: string | undefined;
checkRassDays: number | undefined;
checkRassDate: string | undefined;
@@ -244,8 +250,111 @@ export declare class CustomerOrdersController {
confirmedMeterage: number | null;
unitPrice: number | null;
supplyPrice: number | null;
unitDiscount: number;
discount: number;
unitDiscount: number | null;
discount: number | null;
lineTotal: number | null;
totalAmount: number | null;
notes: string | undefined;
}[];
checks: {
id: string;
orderId: string;
row: number;
amount: number;
dueDate: string;
sayadId: string | undefined;
checkNumber: string | undefined;
ownerNationalId: string | undefined;
ownerFirstName: string | undefined;
ownerLastName: string | undefined;
bankName: string;
branchName: string | undefined;
frontImage: string | undefined;
backImage: string | undefined;
notes: string | undefined;
mode: import("@prisma/client").$Enums.CheckRegistrationMode;
status: import("@prisma/client").$Enums.CheckStatus;
createdAt: string;
updatedAt: string;
}[];
cashReceipt: {
id: string;
amount: number;
paidAmount: number | null;
transferDate: string | null;
transferTime: string | undefined;
trackingNumber: string | undefined;
trackingCode: string | undefined;
destinationAccountId: string | undefined;
receiptImage: string | undefined;
notes: string | undefined;
expiresAt: string | undefined;
status: import("@prisma/client").$Enums.CashPaymentStatus;
submittedAt: string | undefined;
createdAt: string;
} | undefined;
shipment: {
id: string;
orderId: string;
carrier: string;
trackingNumber: string;
meterage: number;
status: import("@prisma/client").$Enums.ShipmentStatus;
shippedAt: string | null;
deliveredAt: string | null;
} | undefined;
statusHistory: {
id: string;
fromStatus: import("@prisma/client").$Enums.OrderStatus | null;
toStatus: import("@prisma/client").$Enums.OrderStatus;
changedBy: string;
note: string | undefined;
reason: string | undefined;
changedAt: string;
}[];
}>;
chooseSettlement(user: AuthPrincipal, id: string, dto: ChooseSettlementDto): Promise<{
id: string;
orderNumber: string;
userId: string;
companyId: string;
companyName: string;
settlementType: import("@prisma/client").$Enums.SettlementType | null;
settlementMethod: import("@prisma/client").$Enums.SettlementType | null;
checkMode: import("@prisma/client").$Enums.CheckRegistrationMode | undefined;
status: import("@prisma/client").$Enums.OrderStatus;
adminStatus: string;
allowedTransitions: import("@prisma/client").$Enums.OrderStatus[];
totalMeterage: number;
meterage: number;
totalAmount: number | null;
shippingCost: number | null;
totalDiscount: number | null;
finalAmount: number | null;
pricesVisible: boolean;
notes: string | undefined;
checkRassDays: number | undefined;
checkRassDate: string | undefined;
cashInvoiceExpiresAt: string | undefined;
createdAt: string;
updatedAt: string;
customerName: string;
customerPhone: string;
customerNationalId: string | undefined;
customerType: import("@prisma/client").$Enums.CustomerType;
items: {
id: string;
productId: string | undefined;
catalogCode: string;
productName: string;
productCode: string | undefined;
color: string;
requestedMeterage: number;
confirmedMeterage: number | null;
unitPrice: number | null;
supplyPrice: number | null;
unitDiscount: number | null;
discount: number | null;
lineTotal: number | null;
totalAmount: number | null;
notes: string | undefined;
@@ -313,17 +422,19 @@ export declare class CustomerOrdersController {
userId: string;
companyId: string;
companyName: string;
settlementType: import("@prisma/client").$Enums.SettlementType;
settlementMethod: import("@prisma/client").$Enums.SettlementType;
settlementType: import("@prisma/client").$Enums.SettlementType | null;
settlementMethod: import("@prisma/client").$Enums.SettlementType | null;
checkMode: import("@prisma/client").$Enums.CheckRegistrationMode | undefined;
status: import("@prisma/client").$Enums.OrderStatus;
adminStatus: string;
allowedTransitions: import("@prisma/client").$Enums.OrderStatus[];
totalMeterage: number;
meterage: number;
totalAmount: number | null;
shippingCost: number | null;
totalDiscount: number | null;
finalAmount: number | null;
pricesVisible: boolean;
notes: string | undefined;
checkRassDays: number | undefined;
checkRassDate: string | undefined;
@@ -345,8 +456,8 @@ export declare class CustomerOrdersController {
confirmedMeterage: number | null;
unitPrice: number | null;
supplyPrice: number | null;
unitDiscount: number;
discount: number;
unitDiscount: number | null;
discount: number | null;
lineTotal: number | null;
totalAmount: number | null;
notes: string | undefined;
@@ -418,17 +529,19 @@ export declare class AdminOrdersController {
userId: string;
companyId: string;
companyName: string;
settlementType: import("@prisma/client").$Enums.SettlementType;
settlementMethod: import("@prisma/client").$Enums.SettlementType;
settlementType: import("@prisma/client").$Enums.SettlementType | null;
settlementMethod: import("@prisma/client").$Enums.SettlementType | null;
checkMode: import("@prisma/client").$Enums.CheckRegistrationMode | undefined;
status: import("@prisma/client").$Enums.OrderStatus;
adminStatus: string;
allowedTransitions: import("@prisma/client").$Enums.OrderStatus[];
totalMeterage: number;
meterage: number;
totalAmount: number | null;
shippingCost: number | null;
totalDiscount: number | null;
finalAmount: number | null;
pricesVisible: boolean;
notes: string | undefined;
checkRassDays: number | undefined;
checkRassDate: string | undefined;
@@ -450,8 +563,8 @@ export declare class AdminOrdersController {
confirmedMeterage: number | null;
unitPrice: number | null;
supplyPrice: number | null;
unitDiscount: number;
discount: number;
unitDiscount: number | null;
discount: number | null;
lineTotal: number | null;
totalAmount: number | null;
notes: string | undefined;
@@ -519,17 +632,19 @@ export declare class AdminOrdersController {
userId: string;
companyId: string;
companyName: string;
settlementType: import("@prisma/client").$Enums.SettlementType;
settlementMethod: import("@prisma/client").$Enums.SettlementType;
settlementType: import("@prisma/client").$Enums.SettlementType | null;
settlementMethod: import("@prisma/client").$Enums.SettlementType | null;
checkMode: import("@prisma/client").$Enums.CheckRegistrationMode | undefined;
status: import("@prisma/client").$Enums.OrderStatus;
adminStatus: string;
allowedTransitions: import("@prisma/client").$Enums.OrderStatus[];
totalMeterage: number;
meterage: number;
totalAmount: number | null;
shippingCost: number | null;
totalDiscount: number | null;
finalAmount: number | null;
pricesVisible: boolean;
notes: string | undefined;
checkRassDays: number | undefined;
checkRassDate: string | undefined;
@@ -551,8 +666,8 @@ export declare class AdminOrdersController {
confirmedMeterage: number | null;
unitPrice: number | null;
supplyPrice: number | null;
unitDiscount: number;
discount: number;
unitDiscount: number | null;
discount: number | null;
lineTotal: number | null;
totalAmount: number | null;
notes: string | undefined;
@@ -620,17 +735,19 @@ export declare class AdminOrdersController {
userId: string;
companyId: string;
companyName: string;
settlementType: import("@prisma/client").$Enums.SettlementType;
settlementMethod: import("@prisma/client").$Enums.SettlementType;
settlementType: import("@prisma/client").$Enums.SettlementType | null;
settlementMethod: import("@prisma/client").$Enums.SettlementType | null;
checkMode: import("@prisma/client").$Enums.CheckRegistrationMode | undefined;
status: import("@prisma/client").$Enums.OrderStatus;
adminStatus: string;
allowedTransitions: import("@prisma/client").$Enums.OrderStatus[];
totalMeterage: number;
meterage: number;
totalAmount: number | null;
shippingCost: number | null;
totalDiscount: number | null;
finalAmount: number | null;
pricesVisible: boolean;
notes: string | undefined;
checkRassDays: number | undefined;
checkRassDate: string | undefined;
@@ -652,8 +769,8 @@ export declare class AdminOrdersController {
confirmedMeterage: number | null;
unitPrice: number | null;
supplyPrice: number | null;
unitDiscount: number;
discount: number;
unitDiscount: number | null;
discount: number | null;
lineTotal: number | null;
totalAmount: number | null;
notes: string | undefined;
@@ -721,17 +838,19 @@ export declare class AdminOrdersController {
userId: string;
companyId: string;
companyName: string;
settlementType: import("@prisma/client").$Enums.SettlementType;
settlementMethod: import("@prisma/client").$Enums.SettlementType;
settlementType: import("@prisma/client").$Enums.SettlementType | null;
settlementMethod: import("@prisma/client").$Enums.SettlementType | null;
checkMode: import("@prisma/client").$Enums.CheckRegistrationMode | undefined;
status: import("@prisma/client").$Enums.OrderStatus;
adminStatus: string;
allowedTransitions: import("@prisma/client").$Enums.OrderStatus[];
totalMeterage: number;
meterage: number;
totalAmount: number | null;
shippingCost: number | null;
totalDiscount: number | null;
finalAmount: number | null;
pricesVisible: boolean;
notes: string | undefined;
checkRassDays: number | undefined;
checkRassDate: string | undefined;
@@ -753,8 +872,8 @@ export declare class AdminOrdersController {
confirmedMeterage: number | null;
unitPrice: number | null;
supplyPrice: number | null;
unitDiscount: number;
discount: number;
unitDiscount: number | null;
discount: number | null;
lineTotal: number | null;
totalAmount: number | null;
notes: string | undefined;
@@ -822,17 +941,19 @@ export declare class AdminOrdersController {
userId: string;
companyId: string;
companyName: string;
settlementType: import("@prisma/client").$Enums.SettlementType;
settlementMethod: import("@prisma/client").$Enums.SettlementType;
settlementType: import("@prisma/client").$Enums.SettlementType | null;
settlementMethod: import("@prisma/client").$Enums.SettlementType | null;
checkMode: import("@prisma/client").$Enums.CheckRegistrationMode | undefined;
status: import("@prisma/client").$Enums.OrderStatus;
adminStatus: string;
allowedTransitions: import("@prisma/client").$Enums.OrderStatus[];
totalMeterage: number;
meterage: number;
totalAmount: number | null;
shippingCost: number | null;
totalDiscount: number | null;
finalAmount: number | null;
pricesVisible: boolean;
notes: string | undefined;
checkRassDays: number | undefined;
checkRassDate: string | undefined;
@@ -854,8 +975,8 @@ export declare class AdminOrdersController {
confirmedMeterage: number | null;
unitPrice: number | null;
supplyPrice: number | null;
unitDiscount: number;
discount: number;
unitDiscount: number | null;
discount: number | null;
lineTotal: number | null;
totalAmount: number | null;
notes: string | undefined;