@unchainedshop/core-orders 3.0.0-alpha7 → 3.0.0-rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/db/OrderDeliveriesCollection.d.ts +1 -1
- package/lib/db/OrderDeliveriesCollection.d.ts.map +1 -1
- package/lib/db/OrderDiscountsCollection.d.ts +1 -1
- package/lib/db/OrderDiscountsCollection.d.ts.map +1 -1
- package/lib/db/OrderPaymentsCollection.d.ts +1 -1
- package/lib/db/OrderPaymentsCollection.d.ts.map +1 -1
- package/lib/db/OrderPositionsCollection.d.ts +1 -1
- package/lib/db/OrderPositionsCollection.d.ts.map +1 -1
- package/lib/director/OrderDiscountAdapter.d.ts +2 -2
- package/lib/director/OrderDiscountAdapter.d.ts.map +1 -1
- package/lib/director/OrderDiscountAdapter.js.map +1 -1
- package/lib/director/OrderDiscountDirector.d.ts +1 -1
- package/lib/director/OrderDiscountDirector.d.ts.map +1 -1
- package/lib/director/OrderDiscountDirector.js.map +1 -1
- package/lib/director/OrderPricingAdapter.d.ts +3 -3
- package/lib/director/OrderPricingAdapter.d.ts.map +1 -1
- package/lib/director/OrderPricingAdapter.js.map +1 -1
- package/lib/director/OrderPricingDirector.d.ts +1 -1
- package/lib/director/OrderPricingDirector.d.ts.map +1 -1
- package/lib/module/buildFindSelector.d.ts +5 -0
- package/lib/module/buildFindSelector.d.ts.map +1 -0
- package/lib/module/buildFindSelector.js +18 -0
- package/lib/module/buildFindSelector.js.map +1 -0
- package/lib/module/configureOrderDeliveriesModule.d.ts +14 -27
- package/lib/module/configureOrderDeliveriesModule.d.ts.map +1 -1
- package/lib/module/configureOrderDeliveriesModule.js +7 -68
- package/lib/module/configureOrderDeliveriesModule.js.map +1 -1
- package/lib/module/configureOrderDeliveriesModule_BACKUP_54554.d.ts +24 -0
- package/lib/module/configureOrderDeliveriesModule_BACKUP_54554.d.ts.map +1 -0
- package/lib/module/configureOrderDeliveriesModule_BACKUP_54554.js +101 -0
- package/lib/module/configureOrderDeliveriesModule_BACKUP_54554.js.map +1 -0
- package/lib/module/configureOrderDeliveriesModule_BASE_54554.d.ts +36 -0
- package/lib/module/configureOrderDeliveriesModule_BASE_54554.d.ts.map +1 -0
- package/lib/module/configureOrderDeliveriesModule_BASE_54554.js +162 -0
- package/lib/module/configureOrderDeliveriesModule_BASE_54554.js.map +1 -0
- package/lib/module/configureOrderDeliveriesModule_LOCAL_54554.d.ts +23 -0
- package/lib/module/configureOrderDeliveriesModule_LOCAL_54554.d.ts.map +1 -0
- package/lib/module/configureOrderDeliveriesModule_LOCAL_54554.js +97 -0
- package/lib/module/configureOrderDeliveriesModule_LOCAL_54554.js.map +1 -0
- package/lib/module/configureOrderDeliveriesModule_REMOTE_54554.d.ts +37 -0
- package/lib/module/configureOrderDeliveriesModule_REMOTE_54554.d.ts.map +1 -0
- package/lib/module/configureOrderDeliveriesModule_REMOTE_54554.js +166 -0
- package/lib/module/configureOrderDeliveriesModule_REMOTE_54554.js.map +1 -0
- package/lib/module/configureOrderDiscountsModule.d.ts +17 -18
- package/lib/module/configureOrderDiscountsModule.d.ts.map +1 -1
- package/lib/module/configureOrderDiscountsModule.js +31 -140
- package/lib/module/configureOrderDiscountsModule.js.map +1 -1
- package/lib/module/configureOrderDiscountsModule_BACKUP_55046.d.ts +26 -0
- package/lib/module/configureOrderDiscountsModule_BACKUP_55046.d.ts.map +1 -0
- package/lib/module/configureOrderDiscountsModule_BACKUP_55046.js +69 -0
- package/lib/module/configureOrderDiscountsModule_BACKUP_55046.js.map +1 -0
- package/lib/module/configureOrderDiscountsModule_BASE_55046.d.ts +26 -0
- package/lib/module/configureOrderDiscountsModule_BASE_55046.d.ts.map +1 -0
- package/lib/module/configureOrderDiscountsModule_BASE_55046.js +178 -0
- package/lib/module/configureOrderDiscountsModule_BASE_55046.js.map +1 -0
- package/lib/module/configureOrderDiscountsModule_LOCAL_55046.d.ts +25 -0
- package/lib/module/configureOrderDiscountsModule_LOCAL_55046.d.ts.map +1 -0
- package/lib/module/configureOrderDiscountsModule_LOCAL_55046.js +65 -0
- package/lib/module/configureOrderDiscountsModule_LOCAL_55046.js.map +1 -0
- package/lib/module/configureOrderDiscountsModule_REMOTE_55046.d.ts +27 -0
- package/lib/module/configureOrderDiscountsModule_REMOTE_55046.d.ts.map +1 -0
- package/lib/module/configureOrderDiscountsModule_REMOTE_55046.js +182 -0
- package/lib/module/configureOrderDiscountsModule_REMOTE_55046.js.map +1 -0
- package/lib/module/configureOrderPaymentsModule.d.ts +17 -37
- package/lib/module/configureOrderPaymentsModule.d.ts.map +1 -1
- package/lib/module/configureOrderPaymentsModule.js +10 -118
- package/lib/module/configureOrderPaymentsModule.js.map +1 -1
- package/lib/module/configureOrderPaymentsModule_BACKUP_55464.d.ts +32 -0
- package/lib/module/configureOrderPaymentsModule_BACKUP_55464.d.ts.map +1 -0
- package/lib/module/configureOrderPaymentsModule_BACKUP_55464.js +135 -0
- package/lib/module/configureOrderPaymentsModule_BACKUP_55464.js.map +1 -0
- package/lib/module/configureOrderPaymentsModule_BACKUP_55877.d.ts +32 -0
- package/lib/module/configureOrderPaymentsModule_BACKUP_55877.d.ts.map +1 -0
- package/lib/module/configureOrderPaymentsModule_BACKUP_55877.js +135 -0
- package/lib/module/configureOrderPaymentsModule_BACKUP_55877.js.map +1 -0
- package/lib/module/configureOrderPaymentsModule_BASE_55464.d.ts +51 -0
- package/lib/module/configureOrderPaymentsModule_BASE_55464.d.ts.map +1 -0
- package/lib/module/configureOrderPaymentsModule_BASE_55464.js +243 -0
- package/lib/module/configureOrderPaymentsModule_BASE_55464.js.map +1 -0
- package/lib/module/configureOrderPaymentsModule_BASE_55877.d.ts +51 -0
- package/lib/module/configureOrderPaymentsModule_BASE_55877.d.ts.map +1 -0
- package/lib/module/configureOrderPaymentsModule_BASE_55877.js +243 -0
- package/lib/module/configureOrderPaymentsModule_BASE_55877.js.map +1 -0
- package/lib/module/configureOrderPaymentsModule_LOCAL_55464.d.ts +31 -0
- package/lib/module/configureOrderPaymentsModule_LOCAL_55464.d.ts.map +1 -0
- package/lib/module/configureOrderPaymentsModule_LOCAL_55464.js +131 -0
- package/lib/module/configureOrderPaymentsModule_LOCAL_55464.js.map +1 -0
- package/lib/module/configureOrderPaymentsModule_LOCAL_55877.d.ts +31 -0
- package/lib/module/configureOrderPaymentsModule_LOCAL_55877.d.ts.map +1 -0
- package/lib/module/configureOrderPaymentsModule_LOCAL_55877.js +131 -0
- package/lib/module/configureOrderPaymentsModule_LOCAL_55877.js.map +1 -0
- package/lib/module/configureOrderPaymentsModule_REMOTE_55464.d.ts +52 -0
- package/lib/module/configureOrderPaymentsModule_REMOTE_55464.d.ts.map +1 -0
- package/lib/module/configureOrderPaymentsModule_REMOTE_55464.js +247 -0
- package/lib/module/configureOrderPaymentsModule_REMOTE_55464.js.map +1 -0
- package/lib/module/configureOrderPaymentsModule_REMOTE_55877.d.ts +52 -0
- package/lib/module/configureOrderPaymentsModule_REMOTE_55877.d.ts.map +1 -0
- package/lib/module/configureOrderPaymentsModule_REMOTE_55877.js +247 -0
- package/lib/module/configureOrderPaymentsModule_REMOTE_55877.js.map +1 -0
- package/lib/module/configureOrderPositionsModule.d.ts +22 -41
- package/lib/module/configureOrderPositionsModule.d.ts.map +1 -1
- package/lib/module/configureOrderPositionsModule.js +19 -82
- package/lib/module/configureOrderPositionsModule.js.map +1 -1
- package/lib/module/configureOrderPositionsModule_BACKUP_56197.d.ts +44 -0
- package/lib/module/configureOrderPositionsModule_BACKUP_56197.d.ts.map +1 -0
- package/lib/module/configureOrderPositionsModule_BACKUP_56197.js +138 -0
- package/lib/module/configureOrderPositionsModule_BACKUP_56197.js.map +1 -0
- package/lib/module/configureOrderPositionsModule_BASE_56197.d.ts +60 -0
- package/lib/module/configureOrderPositionsModule_BASE_56197.d.ts.map +1 -0
- package/lib/module/configureOrderPositionsModule_BASE_56197.js +201 -0
- package/lib/module/configureOrderPositionsModule_BASE_56197.js.map +1 -0
- package/lib/module/configureOrderPositionsModule_LOCAL_56197.d.ts +43 -0
- package/lib/module/configureOrderPositionsModule_LOCAL_56197.d.ts.map +1 -0
- package/lib/module/configureOrderPositionsModule_LOCAL_56197.js +134 -0
- package/lib/module/configureOrderPositionsModule_LOCAL_56197.js.map +1 -0
- package/lib/module/configureOrderPositionsModule_REMOTE_56197.d.ts +61 -0
- package/lib/module/configureOrderPositionsModule_REMOTE_56197.d.ts.map +1 -0
- package/lib/module/configureOrderPositionsModule_REMOTE_56197.js +205 -0
- package/lib/module/configureOrderPositionsModule_REMOTE_56197.js.map +1 -0
- package/lib/module/configureOrdersModule-mutations.d.ts +4 -11
- package/lib/module/configureOrdersModule-mutations.d.ts.map +1 -1
- package/lib/module/configureOrdersModule-mutations.js +10 -49
- package/lib/module/configureOrdersModule-mutations.js.map +1 -1
- package/lib/module/configureOrdersModule-processing.d.ts +4 -8
- package/lib/module/configureOrdersModule-processing.d.ts.map +1 -1
- package/lib/module/configureOrdersModule-processing.js +3 -1
- package/lib/module/configureOrdersModule-processing.js.map +1 -1
- package/lib/module/configureOrdersModule-queries.d.ts +10 -5
- package/lib/module/configureOrdersModule-queries.d.ts.map +1 -1
- package/lib/module/configureOrdersModule-queries.js +35 -22
- package/lib/module/configureOrdersModule-queries.js.map +1 -1
- package/lib/module/configureOrdersModule-transformations.d.ts +2 -3
- package/lib/module/configureOrdersModule-transformations.d.ts.map +1 -1
- package/lib/module/configureOrdersModule-transformations.js +3 -3
- package/lib/module/configureOrdersModule-transformations.js.map +1 -1
- package/lib/module/configureOrdersModule.d.ts +11 -8
- package/lib/module/configureOrdersModule.d.ts.map +1 -1
- package/lib/module/configureOrdersModule.js +133 -153
- package/lib/module/configureOrdersModule.js.map +1 -1
- package/lib/orders-index.d.ts +0 -7
- package/lib/orders-index.d.ts.map +1 -1
- package/lib/orders-index.js +0 -7
- package/lib/orders-index.js.map +1 -1
- package/lib/orders-settings.d.ts +3 -7
- package/lib/orders-settings.d.ts.map +1 -1
- package/lib/orders-settings.js.map +1 -1
- package/lib/types.d.ts +8 -9
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/package.json +9 -12
- package/src/db/OrderDeliveriesCollection.ts +1 -1
- package/src/db/OrderDiscountsCollection.ts +1 -1
- package/src/db/OrderPaymentsCollection.ts +1 -1
- package/src/db/OrderPositionsCollection.ts +1 -1
- package/src/module/buildFindSelector.test.ts +1 -1
- package/src/module/buildFindSelector.ts +24 -0
- package/src/module/configureOrderDeliveriesModule.ts +29 -172
- package/src/module/configureOrderDiscountsModule.ts +44 -210
- package/src/module/configureOrderPaymentsModule.ts +51 -261
- package/src/module/configureOrderPositionsModule.ts +54 -205
- package/src/module/configureOrdersModule-mutations.ts +12 -85
- package/src/module/configureOrdersModule-queries.ts +53 -29
- package/src/module/configureOrdersModule.ts +180 -263
- package/src/orders-index.ts +0 -9
- package/src/orders-settings.ts +4 -6
- package/src/types.ts +8 -9
- package/tsconfig.json +5 -7
- package/lib/service/migrateOrderCartService.d.ts +0 -10
- package/lib/service/migrateOrderCartService.d.ts.map +0 -1
- package/lib/service/migrateOrderCartService.js +0 -32
- package/lib/service/migrateOrderCartService.js.map +0 -1
- package/lib/service/nextUserCartService.d.ts +0 -11
- package/lib/service/nextUserCartService.d.ts.map +0 -1
- package/lib/service/nextUserCartService.js +0 -34
- package/lib/service/nextUserCartService.js.map +0 -1
- package/lib/service/orderServices.d.ts +0 -8
- package/lib/service/orderServices.d.ts.map +0 -1
- package/lib/service/orderServices.js +0 -7
- package/lib/service/orderServices.js.map +0 -1
- package/src/director/OrderDiscountAdapter.ts +0 -8
- package/src/director/OrderDiscountConfiguration.ts +0 -5
- package/src/director/OrderDiscountDirector.ts +0 -5
- package/src/director/OrderPricingAdapter.ts +0 -61
- package/src/director/OrderPricingDirector.ts +0 -72
- package/src/director/OrderPricingSheet.ts +0 -146
- package/src/module/configureOrdersModule-processing.ts +0 -508
- package/src/module/configureOrdersModule-transformations.ts +0 -171
- package/src/service/migrateOrderCartService.ts +0 -53
- package/src/service/nextUserCartService.ts +0 -54
- package/src/service/orderServices.ts +0 -12
|
@@ -1,63 +1,14 @@
|
|
|
1
|
-
import { UnchainedCore } from '@unchainedshop/core';
|
|
2
1
|
import { emit, registerEvents } from '@unchainedshop/events';
|
|
3
2
|
import { generateDbFilterById, generateDbObjectId, mongodb } from '@unchainedshop/mongodb';
|
|
4
3
|
import { OrderDiscountTrigger } from '../db/OrderDiscountTrigger.js';
|
|
5
|
-
import {
|
|
6
|
-
import { Order, OrderDiscount } from '../types.js';
|
|
7
|
-
import {
|
|
8
|
-
IPricingSheet,
|
|
9
|
-
PricingCalculation,
|
|
10
|
-
DiscountAdapterActions,
|
|
11
|
-
DiscountContext,
|
|
12
|
-
} from '@unchainedshop/utils';
|
|
13
|
-
|
|
14
|
-
export type OrderDiscountsModule = {
|
|
15
|
-
// Queries
|
|
16
|
-
findOrderDiscount: (
|
|
17
|
-
params: { discountId: string },
|
|
18
|
-
options?: mongodb.FindOptions,
|
|
19
|
-
) => Promise<OrderDiscount>;
|
|
20
|
-
findOrderDiscounts: (params: { orderId: string }) => Promise<Array<OrderDiscount>>;
|
|
21
|
-
|
|
22
|
-
// Transformations
|
|
23
|
-
interface: (
|
|
24
|
-
orderDiscount: OrderDiscount,
|
|
25
|
-
unchainedAPI: UnchainedCore,
|
|
26
|
-
) => Promise<DiscountAdapterActions<any>>;
|
|
27
|
-
|
|
28
|
-
isValid: (orderDiscount: OrderDiscount, unchainedAPI: UnchainedCore) => Promise<boolean>;
|
|
29
|
-
|
|
30
|
-
// Adapter
|
|
31
|
-
configurationForPricingAdapterKey: (
|
|
32
|
-
orderDiscount: OrderDiscount,
|
|
33
|
-
adapterKey: string,
|
|
34
|
-
calculationSheet: IPricingSheet<PricingCalculation>,
|
|
35
|
-
pricingContext: DiscountContext & UnchainedCore,
|
|
36
|
-
) => Promise<any>;
|
|
37
|
-
|
|
38
|
-
// Mutations
|
|
39
|
-
createManualOrderDiscount: (
|
|
40
|
-
params: { code: string; order: Order },
|
|
41
|
-
unchainedAPI: UnchainedCore,
|
|
42
|
-
) => Promise<OrderDiscount>;
|
|
43
|
-
|
|
44
|
-
create: (doc: OrderDiscount) => Promise<OrderDiscount>;
|
|
45
|
-
update: (orderDiscountId: string, doc: OrderDiscount) => Promise<OrderDiscount>;
|
|
46
|
-
delete: (orderDiscountId: string, unchainedAPI: UnchainedCore) => Promise<OrderDiscount>;
|
|
47
|
-
};
|
|
4
|
+
import { OrderDiscount } from '../types.js';
|
|
48
5
|
|
|
49
6
|
const ORDER_DISCOUNT_EVENTS: string[] = [
|
|
50
7
|
'ORDER_CREATE_DISCOUNT',
|
|
51
8
|
'ORDER_UPDATE_DISCOUNT',
|
|
52
9
|
'ORDER_REMOVE_DISCOUNT',
|
|
53
|
-
'ORDER_ADD_DISCOUNT',
|
|
54
10
|
];
|
|
55
11
|
|
|
56
|
-
const OrderDiscountErrorCode = {
|
|
57
|
-
CODE_ALREADY_PRESENT: 'CODE_ALREADY_PRESENT',
|
|
58
|
-
CODE_NOT_VALID: 'CODE_NOT_VALID',
|
|
59
|
-
};
|
|
60
|
-
|
|
61
12
|
export const buildFindByIdSelector = (orderDiscountId: string) =>
|
|
62
13
|
generateDbFilterById(orderDiscountId) as mongodb.Filter<OrderDiscount>;
|
|
63
14
|
|
|
@@ -65,187 +16,64 @@ export const configureOrderDiscountsModule = ({
|
|
|
65
16
|
OrderDiscounts,
|
|
66
17
|
}: {
|
|
67
18
|
OrderDiscounts: mongodb.Collection<OrderDiscount>;
|
|
68
|
-
})
|
|
19
|
+
}) => {
|
|
69
20
|
registerEvents(ORDER_DISCOUNT_EVENTS);
|
|
70
21
|
|
|
71
|
-
const getAdapter = async (orderDiscount: OrderDiscount, unchainedAPI: UnchainedCore) => {
|
|
72
|
-
const order = await unchainedAPI.modules.orders.findOrder({
|
|
73
|
-
orderId: orderDiscount.orderId,
|
|
74
|
-
});
|
|
75
|
-
const Adapter = OrderDiscountDirector.getAdapter(orderDiscount.discountKey);
|
|
76
|
-
if (!Adapter) return null;
|
|
77
|
-
const adapter = await Adapter.actions({
|
|
78
|
-
context: { order, orderDiscount, code: orderDiscount.code, ...unchainedAPI },
|
|
79
|
-
});
|
|
80
|
-
return adapter;
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
const createDiscount: OrderDiscountsModule['create'] = async (doc) => {
|
|
84
|
-
const normalizedTrigger = doc.trigger || OrderDiscountTrigger.USER;
|
|
85
|
-
const { insertedId: discountId } = await OrderDiscounts.insertOne({
|
|
86
|
-
_id: generateDbObjectId(),
|
|
87
|
-
created: new Date(),
|
|
88
|
-
...doc,
|
|
89
|
-
trigger: normalizedTrigger,
|
|
90
|
-
});
|
|
91
|
-
const discount = await OrderDiscounts.findOne(buildFindByIdSelector(discountId));
|
|
92
|
-
return discount;
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
const deleteDiscount: OrderDiscountsModule['delete'] = async (orderDiscountId, unchainedAPI) => {
|
|
96
|
-
const selector = buildFindByIdSelector(orderDiscountId);
|
|
97
|
-
const discount = await OrderDiscounts.findOne(selector, {});
|
|
98
|
-
if (discount.trigger === OrderDiscountTrigger.USER) {
|
|
99
|
-
// Release
|
|
100
|
-
const adapter = await getAdapter(discount, unchainedAPI);
|
|
101
|
-
if (!adapter) return null;
|
|
102
|
-
await adapter.release();
|
|
103
|
-
}
|
|
104
|
-
await OrderDiscounts.deleteOne(selector);
|
|
105
|
-
await emit('ORDER_REMOVE_DISCOUNT', { discount });
|
|
106
|
-
return discount;
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
const updateDiscount: OrderDiscountsModule['update'] = async (orderDiscountId, doc) => {
|
|
110
|
-
const discount = await OrderDiscounts.findOneAndUpdate(
|
|
111
|
-
generateDbFilterById(orderDiscountId),
|
|
112
|
-
{
|
|
113
|
-
$set: {
|
|
114
|
-
updated: new Date(),
|
|
115
|
-
...doc,
|
|
116
|
-
},
|
|
117
|
-
},
|
|
118
|
-
{ returnDocument: 'after' },
|
|
119
|
-
);
|
|
120
|
-
await emit('ORDER_UPDATE_DISCOUNT', { discount });
|
|
121
|
-
return discount;
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
const reserveDiscount = async (orderDiscount: OrderDiscount, unchainedAPI: UnchainedCore) => {
|
|
125
|
-
const adapter = await getAdapter(orderDiscount, unchainedAPI);
|
|
126
|
-
if (!adapter) return null;
|
|
127
|
-
|
|
128
|
-
const reservation = await adapter.reserve({
|
|
129
|
-
code: orderDiscount.code,
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
return updateDiscount(orderDiscount._id, { orderId: orderDiscount.orderId, reservation });
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
const grabDiscount = async (
|
|
136
|
-
{ code, orderId }: { code: string; orderId: string },
|
|
137
|
-
unchainedAPI: UnchainedCore,
|
|
138
|
-
) => {
|
|
139
|
-
const existingDiscount = await OrderDiscounts.findOne({ code, orderId });
|
|
140
|
-
if (existingDiscount) throw new Error(OrderDiscountErrorCode.CODE_ALREADY_PRESENT);
|
|
141
|
-
const discount = await OrderDiscounts.findOne({ code, orderId: null });
|
|
142
|
-
if (!discount) return null;
|
|
143
|
-
const discountId = discount._id;
|
|
144
|
-
try {
|
|
145
|
-
const updatedDiscount = await updateDiscount(discountId, { orderId });
|
|
146
|
-
const reservedDiscount = await reserveDiscount(updatedDiscount, unchainedAPI);
|
|
147
|
-
return reservedDiscount;
|
|
148
|
-
} catch (error) {
|
|
149
|
-
// Rollback
|
|
150
|
-
await updateDiscount(discountId, { orderId: discount.orderId });
|
|
151
|
-
|
|
152
|
-
throw error;
|
|
153
|
-
}
|
|
154
|
-
};
|
|
155
|
-
|
|
156
22
|
return {
|
|
157
23
|
// Queries
|
|
158
|
-
findOrderDiscount: async (
|
|
24
|
+
findOrderDiscount: async (
|
|
25
|
+
{ discountId }: { discountId: string },
|
|
26
|
+
options?: mongodb.FindOptions,
|
|
27
|
+
): Promise<OrderDiscount> => {
|
|
159
28
|
return OrderDiscounts.findOne(buildFindByIdSelector(discountId), options);
|
|
160
29
|
},
|
|
161
|
-
|
|
30
|
+
|
|
31
|
+
findOrderDiscounts: async ({ orderId }: { orderId: string }): Promise<Array<OrderDiscount>> => {
|
|
162
32
|
const discounts = OrderDiscounts.find({ orderId });
|
|
163
33
|
return discounts.toArray();
|
|
164
34
|
},
|
|
165
35
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
const
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
const adapter = await getAdapter(orderDiscount, unchainedAPI);
|
|
174
|
-
if (!adapter) return null;
|
|
175
|
-
|
|
176
|
-
if (orderDiscount.trigger === OrderDiscountTrigger.SYSTEM) {
|
|
177
|
-
return adapter.isValidForSystemTriggering();
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
return adapter.isValidForCodeTriggering({
|
|
181
|
-
code: orderDiscount.code,
|
|
36
|
+
create: async (doc: OrderDiscount): Promise<OrderDiscount> => {
|
|
37
|
+
const normalizedTrigger = doc.trigger || OrderDiscountTrigger.USER;
|
|
38
|
+
const { insertedId: discountId } = await OrderDiscounts.insertOne({
|
|
39
|
+
_id: generateDbObjectId(),
|
|
40
|
+
created: new Date(),
|
|
41
|
+
...doc,
|
|
42
|
+
trigger: normalizedTrigger,
|
|
182
43
|
});
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
// Adapter
|
|
186
|
-
configurationForPricingAdapterKey: async (
|
|
187
|
-
orderDiscount,
|
|
188
|
-
adapterKey,
|
|
189
|
-
calculationSheet,
|
|
190
|
-
unchainedAPI,
|
|
191
|
-
) => {
|
|
192
|
-
const adapter = await getAdapter(orderDiscount, unchainedAPI);
|
|
193
|
-
if (!adapter) return null;
|
|
194
|
-
|
|
195
|
-
return adapter.discountForPricingAdapterKey({
|
|
196
|
-
pricingAdapterKey: adapterKey,
|
|
197
|
-
calculationSheet,
|
|
44
|
+
const discount = await OrderDiscounts.findOne({
|
|
45
|
+
_id: discountId,
|
|
198
46
|
});
|
|
47
|
+
await emit('ORDER_CREATE_DISCOUNT', { discount });
|
|
48
|
+
return discount;
|
|
199
49
|
},
|
|
200
50
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
if (fetchedDiscount) return fetchedDiscount;
|
|
208
|
-
|
|
209
|
-
const director = await OrderDiscountDirector.actions({ order, code }, unchainedAPI);
|
|
210
|
-
const discountKey = await director.resolveDiscountKeyFromStaticCode({
|
|
211
|
-
code,
|
|
212
|
-
});
|
|
51
|
+
delete: async (orderDiscountId: string): Promise<OrderDiscount> => {
|
|
52
|
+
const selector = buildFindByIdSelector(orderDiscountId);
|
|
53
|
+
const orderDiscount = await OrderDiscounts.findOneAndDelete(selector);
|
|
54
|
+
await emit('ORDER_REMOVE_DISCOUNT', { discount: orderDiscount });
|
|
55
|
+
return orderDiscount;
|
|
56
|
+
},
|
|
213
57
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
58
|
+
isDiscountCodeUsed: async ({ code, orderId }): Promise<boolean> => {
|
|
59
|
+
return (
|
|
60
|
+
(await OrderDiscounts.countDocuments({
|
|
217
61
|
code,
|
|
218
|
-
|
|
219
|
-
})
|
|
220
|
-
|
|
221
|
-
try {
|
|
222
|
-
const reservedDiscount = await reserveDiscount(newDiscount, unchainedAPI);
|
|
223
|
-
await emit('ORDER_ADD_DISCOUNT', { discount: reserveDiscount });
|
|
224
|
-
return reservedDiscount;
|
|
225
|
-
} catch (error) {
|
|
226
|
-
await deleteDiscount(newDiscount._id, unchainedAPI);
|
|
227
|
-
throw error;
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
throw new Error(OrderDiscountErrorCode.CODE_NOT_VALID);
|
|
62
|
+
orderId,
|
|
63
|
+
})) > 0
|
|
64
|
+
);
|
|
232
65
|
},
|
|
233
66
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
return discount;
|
|
67
|
+
findSpareDiscount: async ({ code }): Promise<OrderDiscount> => {
|
|
68
|
+
return OrderDiscounts.findOne({
|
|
69
|
+
code,
|
|
70
|
+
orderId: { $in: [undefined, null] },
|
|
71
|
+
});
|
|
242
72
|
},
|
|
243
73
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
update: async (orderDiscountId, doc) => {
|
|
74
|
+
update: async (orderDiscountId: string, doc: OrderDiscount): Promise<OrderDiscount> => {
|
|
247
75
|
const discount = await OrderDiscounts.findOneAndUpdate(
|
|
248
|
-
|
|
76
|
+
{ _id: orderDiscountId },
|
|
249
77
|
{
|
|
250
78
|
$set: {
|
|
251
79
|
updated: new Date(),
|
|
@@ -258,5 +86,11 @@ export const configureOrderDiscountsModule = ({
|
|
|
258
86
|
await emit('ORDER_UPDATE_DISCOUNT', { discount });
|
|
259
87
|
return discount;
|
|
260
88
|
},
|
|
89
|
+
deleteOrderDiscounts: async (orderId: string) => {
|
|
90
|
+
const { deletedCount } = await OrderDiscounts.deleteMany({ orderId });
|
|
91
|
+
return deletedCount;
|
|
92
|
+
},
|
|
261
93
|
};
|
|
262
94
|
};
|
|
95
|
+
|
|
96
|
+
export type OrderDiscountsModule = ReturnType<typeof configureOrderDiscountsModule>;
|
|
@@ -1,94 +1,7 @@
|
|
|
1
|
-
import { UnchainedCore } from '@unchainedshop/core';
|
|
2
1
|
import { emit, registerEvents } from '@unchainedshop/events';
|
|
3
2
|
import { generateDbFilterById, generateDbObjectId, mongodb } from '@unchainedshop/mongodb';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { OrderPricingDiscount } from '../director/OrderPricingDirector.js';
|
|
7
|
-
|
|
8
|
-
export type OrderPaymentsModule = {
|
|
9
|
-
// Queries
|
|
10
|
-
findOrderPayment: (
|
|
11
|
-
params: {
|
|
12
|
-
orderPaymentId: string;
|
|
13
|
-
},
|
|
14
|
-
options?: mongodb.FindOptions,
|
|
15
|
-
) => Promise<OrderPayment>;
|
|
16
|
-
|
|
17
|
-
findOrderPaymentByContextData: (
|
|
18
|
-
params: {
|
|
19
|
-
context: any;
|
|
20
|
-
},
|
|
21
|
-
options?: mongodb.FindOptions,
|
|
22
|
-
) => Promise<OrderPayment>;
|
|
23
|
-
|
|
24
|
-
countOrderPaymentsByContextData: (
|
|
25
|
-
params: {
|
|
26
|
-
context: any;
|
|
27
|
-
},
|
|
28
|
-
options?: mongodb.FindOptions,
|
|
29
|
-
) => Promise<number>;
|
|
30
|
-
|
|
31
|
-
// Transformations
|
|
32
|
-
discounts: (
|
|
33
|
-
orderPayment: OrderPayment,
|
|
34
|
-
params: { order: Order; orderDiscount: OrderDiscount },
|
|
35
|
-
unchainedAPI: UnchainedCore,
|
|
36
|
-
) => Array<OrderPricingDiscount>;
|
|
37
|
-
isBlockingOrderConfirmation: (
|
|
38
|
-
orderPayment: OrderPayment,
|
|
39
|
-
unchainedAPI: UnchainedCore,
|
|
40
|
-
) => Promise<boolean>;
|
|
41
|
-
isBlockingOrderFullfillment: (orderPayment: OrderPayment) => boolean;
|
|
42
|
-
normalizedStatus: (orderPayment: OrderPayment) => string;
|
|
43
|
-
pricingSheet: (
|
|
44
|
-
orderPayment: OrderPayment,
|
|
45
|
-
currency: string,
|
|
46
|
-
unchainedAPI: UnchainedCore,
|
|
47
|
-
) => IPaymentPricingSheet;
|
|
48
|
-
|
|
49
|
-
// Mutations
|
|
50
|
-
create: (doc: OrderPayment) => Promise<OrderPayment>;
|
|
51
|
-
|
|
52
|
-
cancel: (
|
|
53
|
-
orderPayment: OrderPayment,
|
|
54
|
-
paymentContext: {
|
|
55
|
-
transactionContext: any;
|
|
56
|
-
userId: string;
|
|
57
|
-
},
|
|
58
|
-
unchainedAPI: UnchainedCore,
|
|
59
|
-
) => Promise<OrderPayment>;
|
|
60
|
-
|
|
61
|
-
confirm: (
|
|
62
|
-
orderPayment: OrderPayment,
|
|
63
|
-
paymentContext: {
|
|
64
|
-
transactionContext: any;
|
|
65
|
-
userId: string;
|
|
66
|
-
},
|
|
67
|
-
unchainedAPI: UnchainedCore,
|
|
68
|
-
) => Promise<OrderPayment>;
|
|
69
|
-
|
|
70
|
-
charge: (
|
|
71
|
-
orderPayment: OrderPayment,
|
|
72
|
-
paymentContext: {
|
|
73
|
-
transactionContext: any;
|
|
74
|
-
userId: string;
|
|
75
|
-
},
|
|
76
|
-
unchainedAPI: UnchainedCore,
|
|
77
|
-
) => Promise<OrderPayment>;
|
|
78
|
-
|
|
79
|
-
logEvent: (orderPaymentId: string, event: any) => Promise<boolean>;
|
|
80
|
-
|
|
81
|
-
markAsPaid: (payment: OrderPayment, meta: any) => Promise<void>;
|
|
82
|
-
|
|
83
|
-
updateContext: (orderPaymentId: string, context: any) => Promise<OrderPayment | null>;
|
|
84
|
-
|
|
85
|
-
updateStatus: (
|
|
86
|
-
orderPaymentId: string,
|
|
87
|
-
params: { transactionId?: string; status: OrderPaymentStatus; info?: string },
|
|
88
|
-
) => Promise<OrderPayment>;
|
|
89
|
-
|
|
90
|
-
updateCalculation: (orderPayment: OrderPayment, unchainedAPI: UnchainedCore) => Promise<OrderPayment>;
|
|
91
|
-
};
|
|
3
|
+
import { OrderPayment, OrderPaymentStatus } from '../types.js';
|
|
4
|
+
import { PricingCalculation } from '@unchainedshop/utils';
|
|
92
5
|
|
|
93
6
|
const ORDER_PAYMENT_EVENTS: string[] = ['ORDER_UPDATE_PAYMENT', 'ORDER_SIGN_PAYMENT', 'ORDER_PAY'];
|
|
94
7
|
|
|
@@ -117,32 +30,23 @@ export const configureOrderPaymentsModule = ({
|
|
|
117
30
|
OrderPayments,
|
|
118
31
|
}: {
|
|
119
32
|
OrderPayments: mongodb.Collection<OrderPayment>;
|
|
120
|
-
})
|
|
33
|
+
}) => {
|
|
121
34
|
registerEvents(ORDER_PAYMENT_EVENTS);
|
|
122
35
|
|
|
123
|
-
const normalizedStatus
|
|
36
|
+
const normalizedStatus = (orderPayment: OrderPayment) => {
|
|
124
37
|
return orderPayment.status === null
|
|
125
38
|
? OrderPaymentStatus.OPEN
|
|
126
39
|
: (orderPayment.status as OrderPaymentStatus);
|
|
127
40
|
};
|
|
128
41
|
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
{
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
...(transactionContext || {}),
|
|
138
|
-
...(orderPayment.context || {}),
|
|
139
|
-
},
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
const updateStatus: OrderPaymentsModule['updateStatus'] = async (
|
|
143
|
-
orderPaymentId,
|
|
144
|
-
{ status, transactionId, info },
|
|
145
|
-
) => {
|
|
42
|
+
const updateStatus = async (
|
|
43
|
+
orderPaymentId: string,
|
|
44
|
+
{
|
|
45
|
+
transactionId,
|
|
46
|
+
status,
|
|
47
|
+
info,
|
|
48
|
+
}: { transactionId?: string; status: OrderPaymentStatus; info?: string },
|
|
49
|
+
): Promise<OrderPayment> => {
|
|
146
50
|
const date = new Date();
|
|
147
51
|
const modifier: mongodb.UpdateFilter<OrderPayment> = {
|
|
148
52
|
$set: { status, updated: new Date() },
|
|
@@ -171,61 +75,46 @@ export const configureOrderPaymentsModule = ({
|
|
|
171
75
|
|
|
172
76
|
return {
|
|
173
77
|
// Queries
|
|
174
|
-
findOrderPayment: async (
|
|
78
|
+
findOrderPayment: async (
|
|
79
|
+
{
|
|
80
|
+
orderPaymentId,
|
|
81
|
+
}: {
|
|
82
|
+
orderPaymentId: string;
|
|
83
|
+
},
|
|
84
|
+
options?: mongodb.FindOptions,
|
|
85
|
+
): Promise<OrderPayment> => {
|
|
175
86
|
return OrderPayments.findOne(buildFindByIdSelector(orderPaymentId), options);
|
|
176
87
|
},
|
|
177
|
-
findOrderPaymentByContextData: async (
|
|
88
|
+
findOrderPaymentByContextData: async (
|
|
89
|
+
{
|
|
90
|
+
context,
|
|
91
|
+
}: {
|
|
92
|
+
context: any;
|
|
93
|
+
},
|
|
94
|
+
options?: mongodb.FindOptions,
|
|
95
|
+
): Promise<OrderPayment> => {
|
|
178
96
|
const selector = buildFindByContextDataSelector(context);
|
|
179
97
|
|
|
180
98
|
return OrderPayments.findOne(selector, options);
|
|
181
99
|
},
|
|
182
|
-
countOrderPaymentsByContextData: async (
|
|
100
|
+
countOrderPaymentsByContextData: async (
|
|
101
|
+
{
|
|
102
|
+
context,
|
|
103
|
+
}: {
|
|
104
|
+
context: any;
|
|
105
|
+
},
|
|
106
|
+
options?: mongodb.FindOptions,
|
|
107
|
+
) => {
|
|
183
108
|
const selector = buildFindByContextDataSelector(context);
|
|
184
109
|
|
|
185
110
|
return OrderPayments.countDocuments(selector, options);
|
|
186
111
|
},
|
|
187
|
-
// Transformations
|
|
188
|
-
discounts: (orderPayment, { order, orderDiscount }, context) => {
|
|
189
|
-
const { modules } = context;
|
|
190
|
-
if (!orderPayment) return [];
|
|
191
|
-
const pricingSheet = modules.orders.payments.pricingSheet(orderPayment, order.currency, context);
|
|
192
|
-
return pricingSheet.discountPrices(orderDiscount._id).map((discount) => ({
|
|
193
|
-
payment: orderPayment,
|
|
194
|
-
...discount,
|
|
195
|
-
}));
|
|
196
|
-
},
|
|
197
|
-
|
|
198
|
-
isBlockingOrderConfirmation: async (orderPayment, unchainedAPI) => {
|
|
199
|
-
if (orderPayment.status === OrderPaymentStatus.PAID) return false;
|
|
200
|
-
|
|
201
|
-
const provider = await unchainedAPI.modules.payment.paymentProviders.findProvider({
|
|
202
|
-
paymentProviderId: orderPayment.paymentProviderId,
|
|
203
|
-
});
|
|
204
|
-
|
|
205
|
-
const isPayLaterAllowed = await unchainedAPI.modules.payment.paymentProviders.isPayLaterAllowed(
|
|
206
|
-
provider,
|
|
207
|
-
unchainedAPI,
|
|
208
|
-
);
|
|
209
|
-
|
|
210
|
-
return !isPayLaterAllowed;
|
|
211
|
-
},
|
|
212
|
-
isBlockingOrderFullfillment: (orderPayment) => {
|
|
213
|
-
if (orderPayment.status === OrderPaymentStatus.PAID) return false;
|
|
214
|
-
return true;
|
|
215
|
-
},
|
|
216
112
|
|
|
217
113
|
normalizedStatus,
|
|
218
114
|
|
|
219
|
-
pricingSheet: (orderPayment, currency, { modules }) => {
|
|
220
|
-
return modules.payment.paymentProviders.pricingSheet({
|
|
221
|
-
calculation: orderPayment.calculation,
|
|
222
|
-
currency,
|
|
223
|
-
});
|
|
224
|
-
},
|
|
225
|
-
|
|
226
115
|
// Mutations
|
|
227
116
|
|
|
228
|
-
create: async (doc) => {
|
|
117
|
+
create: async (doc: OrderPayment): Promise<OrderPayment> => {
|
|
229
118
|
const { insertedId: orderPaymentId } = await OrderPayments.insertOne({
|
|
230
119
|
_id: generateDbObjectId(),
|
|
231
120
|
created: new Date(),
|
|
@@ -239,108 +128,7 @@ export const configureOrderPaymentsModule = ({
|
|
|
239
128
|
return orderPayment;
|
|
240
129
|
},
|
|
241
130
|
|
|
242
|
-
|
|
243
|
-
const { modules } = unchainedAPI;
|
|
244
|
-
|
|
245
|
-
if (normalizedStatus(orderPayment) !== OrderPaymentStatus.PAID) {
|
|
246
|
-
return orderPayment;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
const arbitraryResponseData = await modules.payment.paymentProviders.confirm(
|
|
250
|
-
orderPayment.paymentProviderId,
|
|
251
|
-
buildPaymentProviderActionsContext(orderPayment, paymentContext),
|
|
252
|
-
unchainedAPI,
|
|
253
|
-
);
|
|
254
|
-
|
|
255
|
-
if (arbitraryResponseData) {
|
|
256
|
-
return updateStatus(orderPayment._id, {
|
|
257
|
-
status: OrderPaymentStatus.PAID,
|
|
258
|
-
info: JSON.stringify(arbitraryResponseData),
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
return orderPayment;
|
|
263
|
-
},
|
|
264
|
-
|
|
265
|
-
cancel: async (orderPayment, paymentContext, unchainedAPI) => {
|
|
266
|
-
const { modules } = unchainedAPI;
|
|
267
|
-
|
|
268
|
-
if (normalizedStatus(orderPayment) !== OrderPaymentStatus.PAID) {
|
|
269
|
-
return orderPayment;
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
const arbitraryResponseData = await modules.payment.paymentProviders.cancel(
|
|
273
|
-
orderPayment.paymentProviderId,
|
|
274
|
-
buildPaymentProviderActionsContext(orderPayment, paymentContext),
|
|
275
|
-
unchainedAPI,
|
|
276
|
-
);
|
|
277
|
-
|
|
278
|
-
if (arbitraryResponseData) {
|
|
279
|
-
return updateStatus(orderPayment._id, {
|
|
280
|
-
status: OrderPaymentStatus.REFUNDED,
|
|
281
|
-
info: JSON.stringify(arbitraryResponseData),
|
|
282
|
-
});
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
return orderPayment;
|
|
286
|
-
},
|
|
287
|
-
|
|
288
|
-
charge: async (orderPayment, context, unchainedAPI) => {
|
|
289
|
-
const { modules } = unchainedAPI;
|
|
290
|
-
|
|
291
|
-
if (normalizedStatus(orderPayment) !== OrderPaymentStatus.OPEN) {
|
|
292
|
-
return orderPayment;
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
const paymentCredentials =
|
|
296
|
-
context.transactionContext?.paymentCredentials ||
|
|
297
|
-
(await modules.payment.paymentCredentials.findPaymentCredential({
|
|
298
|
-
userId: context.userId,
|
|
299
|
-
paymentProviderId: orderPayment.paymentProviderId,
|
|
300
|
-
isPreferred: true,
|
|
301
|
-
}));
|
|
302
|
-
|
|
303
|
-
const paymentContext = buildPaymentProviderActionsContext(orderPayment, {
|
|
304
|
-
...context,
|
|
305
|
-
transactionContext: {
|
|
306
|
-
...context.transactionContext,
|
|
307
|
-
paymentCredentials,
|
|
308
|
-
},
|
|
309
|
-
});
|
|
310
|
-
|
|
311
|
-
const result = await modules.payment.paymentProviders.charge(
|
|
312
|
-
orderPayment.paymentProviderId,
|
|
313
|
-
paymentContext,
|
|
314
|
-
unchainedAPI,
|
|
315
|
-
);
|
|
316
|
-
|
|
317
|
-
if (!result) return orderPayment;
|
|
318
|
-
|
|
319
|
-
const { credentials, ...arbitraryResponseData } = result;
|
|
320
|
-
|
|
321
|
-
if (credentials) {
|
|
322
|
-
const { token, ...meta } = credentials;
|
|
323
|
-
await modules.payment.paymentCredentials.upsertCredentials({
|
|
324
|
-
userId: paymentContext.userId,
|
|
325
|
-
paymentProviderId: orderPayment.paymentProviderId,
|
|
326
|
-
token,
|
|
327
|
-
...meta,
|
|
328
|
-
});
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
if (arbitraryResponseData) {
|
|
332
|
-
const { transactionId, ...info } = arbitraryResponseData;
|
|
333
|
-
return updateStatus(orderPayment._id, {
|
|
334
|
-
transactionId,
|
|
335
|
-
status: OrderPaymentStatus.PAID,
|
|
336
|
-
info: JSON.stringify(info),
|
|
337
|
-
});
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
return orderPayment;
|
|
341
|
-
},
|
|
342
|
-
|
|
343
|
-
logEvent: async (orderPaymentId, event) => {
|
|
131
|
+
logEvent: async (orderPaymentId: string, event: any): Promise<boolean> => {
|
|
344
132
|
const date = new Date();
|
|
345
133
|
const modifier = {
|
|
346
134
|
$push: {
|
|
@@ -356,7 +144,7 @@ export const configureOrderPaymentsModule = ({
|
|
|
356
144
|
return true;
|
|
357
145
|
},
|
|
358
146
|
|
|
359
|
-
markAsPaid: async (orderPayment, meta) => {
|
|
147
|
+
markAsPaid: async (orderPayment: OrderPayment, meta: any) => {
|
|
360
148
|
if (normalizedStatus(orderPayment) !== OrderPaymentStatus.OPEN) return;
|
|
361
149
|
|
|
362
150
|
await updateStatus(orderPayment._id, {
|
|
@@ -366,7 +154,7 @@ export const configureOrderPaymentsModule = ({
|
|
|
366
154
|
await emit('ORDER_PAY', { orderPayment });
|
|
367
155
|
},
|
|
368
156
|
|
|
369
|
-
updateContext: async (orderPaymentId, context) => {
|
|
157
|
+
updateContext: async (orderPaymentId: string, context: any): Promise<OrderPayment> => {
|
|
370
158
|
const selector = buildFindByIdSelector(orderPaymentId);
|
|
371
159
|
if (!context || Object.keys(context).length === 0) return OrderPayments.findOne(selector, {});
|
|
372
160
|
|
|
@@ -396,16 +184,12 @@ export const configureOrderPaymentsModule = ({
|
|
|
396
184
|
|
|
397
185
|
updateStatus,
|
|
398
186
|
|
|
399
|
-
updateCalculation: async
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
},
|
|
404
|
-
unchainedAPI,
|
|
405
|
-
);
|
|
406
|
-
|
|
187
|
+
updateCalculation: async <T extends PricingCalculation>(
|
|
188
|
+
orderPaymentId: string,
|
|
189
|
+
calculation: Array<T>,
|
|
190
|
+
) => {
|
|
407
191
|
return OrderPayments.findOneAndUpdate(
|
|
408
|
-
buildFindByIdSelector(
|
|
192
|
+
buildFindByIdSelector(orderPaymentId),
|
|
409
193
|
{
|
|
410
194
|
$set: {
|
|
411
195
|
calculation,
|
|
@@ -417,5 +201,11 @@ export const configureOrderPaymentsModule = ({
|
|
|
417
201
|
},
|
|
418
202
|
);
|
|
419
203
|
},
|
|
204
|
+
deleteOrderPayments: async (orderId: string) => {
|
|
205
|
+
const { deletedCount } = await OrderPayments.deleteMany({ orderId });
|
|
206
|
+
return deletedCount;
|
|
207
|
+
},
|
|
420
208
|
};
|
|
421
209
|
};
|
|
210
|
+
|
|
211
|
+
export type OrderPaymentsModule = ReturnType<typeof configureOrderPaymentsModule>;
|