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:
Vendored
+167
-42
@@ -1,6 +1,7 @@
|
||||
import { Prisma } from '@prisma/client';
|
||||
import { PrismaService } from '../prisma/prisma.service';
|
||||
import { AdminCreateOrderDto, SubmitOrderDto, UpdateOrderChecksDto, UpdateOrderPricingDto, UpdateOrderStatusDto } from './dto/order.dto';
|
||||
import { AdminCreateOrderDto, ChooseSettlementDto, SubmitOrderDto, UpdateOrderChecksDto, UpdateOrderPricingDto, UpdateOrderStatusDto } from './dto/order.dto';
|
||||
import { NotificationsService } from '../notifications/notifications.service';
|
||||
declare const orderInclude: {
|
||||
items: true;
|
||||
checks: {
|
||||
@@ -23,24 +24,27 @@ type OrderFull = Prisma.OrderGetPayload<{
|
||||
}>;
|
||||
export declare class OrdersService {
|
||||
private readonly prisma;
|
||||
constructor(prisma: PrismaService);
|
||||
private readonly notifications;
|
||||
constructor(prisma: PrismaService, notifications: NotificationsService);
|
||||
findMyOrders(userId: string): Promise<{
|
||||
id: string;
|
||||
orderNumber: string;
|
||||
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;
|
||||
@@ -62,8 +66,8 @@ export declare class OrdersService {
|
||||
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;
|
||||
@@ -131,17 +135,19 @@ export declare class OrdersService {
|
||||
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;
|
||||
@@ -163,8 +169,8 @@ export declare class OrdersService {
|
||||
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;
|
||||
@@ -235,17 +241,19 @@ export declare class OrdersService {
|
||||
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;
|
||||
@@ -267,8 +275,8 @@ export declare class OrdersService {
|
||||
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;
|
||||
@@ -336,17 +344,19 @@ export declare class OrdersService {
|
||||
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;
|
||||
@@ -368,8 +378,8 @@ export declare class OrdersService {
|
||||
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;
|
||||
@@ -437,17 +447,19 @@ export declare class OrdersService {
|
||||
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;
|
||||
@@ -469,8 +481,111 @@ export declare class OrdersService {
|
||||
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(userId: string, 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;
|
||||
@@ -538,17 +653,19 @@ export declare class OrdersService {
|
||||
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;
|
||||
@@ -570,8 +687,8 @@ export declare class OrdersService {
|
||||
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;
|
||||
@@ -639,17 +756,19 @@ export declare class OrdersService {
|
||||
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;
|
||||
@@ -671,8 +790,8 @@ export declare class OrdersService {
|
||||
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;
|
||||
@@ -740,17 +859,19 @@ export declare class OrdersService {
|
||||
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;
|
||||
@@ -772,8 +893,8 @@ export declare class OrdersService {
|
||||
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;
|
||||
@@ -841,17 +962,19 @@ export declare class OrdersService {
|
||||
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;
|
||||
@@ -873,8 +996,8 @@ export declare class OrdersService {
|
||||
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;
|
||||
@@ -946,17 +1069,19 @@ export declare class OrdersService {
|
||||
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;
|
||||
@@ -978,8 +1103,8 @@ export declare class OrdersService {
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user