@unchainedshop/core-orders 3.0.0-alpha7 → 3.0.0-rc2

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.
Files changed (204) hide show
  1. package/lib/db/OrderDeliveriesCollection.d.ts +21 -2
  2. package/lib/db/OrderDeliveriesCollection.d.ts.map +1 -1
  3. package/lib/db/OrderDeliveriesCollection.js +6 -0
  4. package/lib/db/OrderDeliveriesCollection.js.map +1 -1
  5. package/lib/db/OrderDiscountsCollection.d.ts +16 -2
  6. package/lib/db/OrderDiscountsCollection.d.ts.map +1 -1
  7. package/lib/db/OrderDiscountsCollection.js +5 -0
  8. package/lib/db/OrderDiscountsCollection.js.map +1 -1
  9. package/lib/db/OrderPaymentsCollection.d.ts +22 -2
  10. package/lib/db/OrderPaymentsCollection.d.ts.map +1 -1
  11. package/lib/db/OrderPaymentsCollection.js +6 -0
  12. package/lib/db/OrderPaymentsCollection.js.map +1 -1
  13. package/lib/db/OrderPositionsCollection.d.ts +22 -2
  14. package/lib/db/OrderPositionsCollection.d.ts.map +1 -1
  15. package/lib/db/OrderPositionsCollection.js.map +1 -1
  16. package/lib/db/OrdersCollection.d.ts +33 -2
  17. package/lib/db/OrdersCollection.d.ts.map +1 -1
  18. package/lib/db/OrdersCollection.js +8 -1
  19. package/lib/db/OrdersCollection.js.map +1 -1
  20. package/lib/director/OrderDiscountAdapter.d.ts +2 -2
  21. package/lib/director/OrderDiscountAdapter.d.ts.map +1 -1
  22. package/lib/director/OrderDiscountAdapter.js.map +1 -1
  23. package/lib/director/OrderDiscountDirector.d.ts +1 -1
  24. package/lib/director/OrderDiscountDirector.d.ts.map +1 -1
  25. package/lib/director/OrderDiscountDirector.js.map +1 -1
  26. package/lib/director/OrderPricingAdapter.d.ts +3 -3
  27. package/lib/director/OrderPricingAdapter.d.ts.map +1 -1
  28. package/lib/director/OrderPricingAdapter.js.map +1 -1
  29. package/lib/director/OrderPricingDirector.d.ts +1 -1
  30. package/lib/director/OrderPricingDirector.d.ts.map +1 -1
  31. package/lib/module/buildFindSelector.d.ts +5 -0
  32. package/lib/module/buildFindSelector.d.ts.map +1 -0
  33. package/lib/module/buildFindSelector.js +18 -0
  34. package/lib/module/buildFindSelector.js.map +1 -0
  35. package/lib/module/configureOrderDeliveriesModule.d.ts +14 -27
  36. package/lib/module/configureOrderDeliveriesModule.d.ts.map +1 -1
  37. package/lib/module/configureOrderDeliveriesModule.js +8 -69
  38. package/lib/module/configureOrderDeliveriesModule.js.map +1 -1
  39. package/lib/module/configureOrderDeliveriesModule_BACKUP_54554.d.ts +24 -0
  40. package/lib/module/configureOrderDeliveriesModule_BACKUP_54554.d.ts.map +1 -0
  41. package/lib/module/configureOrderDeliveriesModule_BACKUP_54554.js +101 -0
  42. package/lib/module/configureOrderDeliveriesModule_BACKUP_54554.js.map +1 -0
  43. package/lib/module/configureOrderDeliveriesModule_BASE_54554.d.ts +36 -0
  44. package/lib/module/configureOrderDeliveriesModule_BASE_54554.d.ts.map +1 -0
  45. package/lib/module/configureOrderDeliveriesModule_BASE_54554.js +162 -0
  46. package/lib/module/configureOrderDeliveriesModule_BASE_54554.js.map +1 -0
  47. package/lib/module/configureOrderDeliveriesModule_LOCAL_54554.d.ts +23 -0
  48. package/lib/module/configureOrderDeliveriesModule_LOCAL_54554.d.ts.map +1 -0
  49. package/lib/module/configureOrderDeliveriesModule_LOCAL_54554.js +97 -0
  50. package/lib/module/configureOrderDeliveriesModule_LOCAL_54554.js.map +1 -0
  51. package/lib/module/configureOrderDeliveriesModule_REMOTE_54554.d.ts +37 -0
  52. package/lib/module/configureOrderDeliveriesModule_REMOTE_54554.d.ts.map +1 -0
  53. package/lib/module/configureOrderDeliveriesModule_REMOTE_54554.js +166 -0
  54. package/lib/module/configureOrderDeliveriesModule_REMOTE_54554.js.map +1 -0
  55. package/lib/module/configureOrderDiscountsModule.d.ts +17 -18
  56. package/lib/module/configureOrderDiscountsModule.d.ts.map +1 -1
  57. package/lib/module/configureOrderDiscountsModule.js +34 -143
  58. package/lib/module/configureOrderDiscountsModule.js.map +1 -1
  59. package/lib/module/configureOrderDiscountsModule_BACKUP_55046.d.ts +26 -0
  60. package/lib/module/configureOrderDiscountsModule_BACKUP_55046.d.ts.map +1 -0
  61. package/lib/module/configureOrderDiscountsModule_BACKUP_55046.js +69 -0
  62. package/lib/module/configureOrderDiscountsModule_BACKUP_55046.js.map +1 -0
  63. package/lib/module/configureOrderDiscountsModule_BASE_55046.d.ts +26 -0
  64. package/lib/module/configureOrderDiscountsModule_BASE_55046.d.ts.map +1 -0
  65. package/lib/module/configureOrderDiscountsModule_BASE_55046.js +178 -0
  66. package/lib/module/configureOrderDiscountsModule_BASE_55046.js.map +1 -0
  67. package/lib/module/configureOrderDiscountsModule_LOCAL_55046.d.ts +25 -0
  68. package/lib/module/configureOrderDiscountsModule_LOCAL_55046.d.ts.map +1 -0
  69. package/lib/module/configureOrderDiscountsModule_LOCAL_55046.js +65 -0
  70. package/lib/module/configureOrderDiscountsModule_LOCAL_55046.js.map +1 -0
  71. package/lib/module/configureOrderDiscountsModule_REMOTE_55046.d.ts +27 -0
  72. package/lib/module/configureOrderDiscountsModule_REMOTE_55046.d.ts.map +1 -0
  73. package/lib/module/configureOrderDiscountsModule_REMOTE_55046.js +182 -0
  74. package/lib/module/configureOrderDiscountsModule_REMOTE_55046.js.map +1 -0
  75. package/lib/module/configureOrderPaymentsModule.d.ts +17 -37
  76. package/lib/module/configureOrderPaymentsModule.d.ts.map +1 -1
  77. package/lib/module/configureOrderPaymentsModule.js +16 -124
  78. package/lib/module/configureOrderPaymentsModule.js.map +1 -1
  79. package/lib/module/configureOrderPaymentsModule_BACKUP_55464.d.ts +32 -0
  80. package/lib/module/configureOrderPaymentsModule_BACKUP_55464.d.ts.map +1 -0
  81. package/lib/module/configureOrderPaymentsModule_BACKUP_55464.js +135 -0
  82. package/lib/module/configureOrderPaymentsModule_BACKUP_55464.js.map +1 -0
  83. package/lib/module/configureOrderPaymentsModule_BACKUP_55877.d.ts +32 -0
  84. package/lib/module/configureOrderPaymentsModule_BACKUP_55877.d.ts.map +1 -0
  85. package/lib/module/configureOrderPaymentsModule_BACKUP_55877.js +135 -0
  86. package/lib/module/configureOrderPaymentsModule_BACKUP_55877.js.map +1 -0
  87. package/lib/module/configureOrderPaymentsModule_BASE_55464.d.ts +51 -0
  88. package/lib/module/configureOrderPaymentsModule_BASE_55464.d.ts.map +1 -0
  89. package/lib/module/configureOrderPaymentsModule_BASE_55464.js +243 -0
  90. package/lib/module/configureOrderPaymentsModule_BASE_55464.js.map +1 -0
  91. package/lib/module/configureOrderPaymentsModule_BASE_55877.d.ts +51 -0
  92. package/lib/module/configureOrderPaymentsModule_BASE_55877.d.ts.map +1 -0
  93. package/lib/module/configureOrderPaymentsModule_BASE_55877.js +243 -0
  94. package/lib/module/configureOrderPaymentsModule_BASE_55877.js.map +1 -0
  95. package/lib/module/configureOrderPaymentsModule_LOCAL_55464.d.ts +31 -0
  96. package/lib/module/configureOrderPaymentsModule_LOCAL_55464.d.ts.map +1 -0
  97. package/lib/module/configureOrderPaymentsModule_LOCAL_55464.js +131 -0
  98. package/lib/module/configureOrderPaymentsModule_LOCAL_55464.js.map +1 -0
  99. package/lib/module/configureOrderPaymentsModule_LOCAL_55877.d.ts +31 -0
  100. package/lib/module/configureOrderPaymentsModule_LOCAL_55877.d.ts.map +1 -0
  101. package/lib/module/configureOrderPaymentsModule_LOCAL_55877.js +131 -0
  102. package/lib/module/configureOrderPaymentsModule_LOCAL_55877.js.map +1 -0
  103. package/lib/module/configureOrderPaymentsModule_REMOTE_55464.d.ts +52 -0
  104. package/lib/module/configureOrderPaymentsModule_REMOTE_55464.d.ts.map +1 -0
  105. package/lib/module/configureOrderPaymentsModule_REMOTE_55464.js +247 -0
  106. package/lib/module/configureOrderPaymentsModule_REMOTE_55464.js.map +1 -0
  107. package/lib/module/configureOrderPaymentsModule_REMOTE_55877.d.ts +52 -0
  108. package/lib/module/configureOrderPaymentsModule_REMOTE_55877.d.ts.map +1 -0
  109. package/lib/module/configureOrderPaymentsModule_REMOTE_55877.js +247 -0
  110. package/lib/module/configureOrderPaymentsModule_REMOTE_55877.js.map +1 -0
  111. package/lib/module/configureOrderPositionsModule.d.ts +22 -41
  112. package/lib/module/configureOrderPositionsModule.d.ts.map +1 -1
  113. package/lib/module/configureOrderPositionsModule.js +22 -85
  114. package/lib/module/configureOrderPositionsModule.js.map +1 -1
  115. package/lib/module/configureOrderPositionsModule_BACKUP_56197.d.ts +44 -0
  116. package/lib/module/configureOrderPositionsModule_BACKUP_56197.d.ts.map +1 -0
  117. package/lib/module/configureOrderPositionsModule_BACKUP_56197.js +138 -0
  118. package/lib/module/configureOrderPositionsModule_BACKUP_56197.js.map +1 -0
  119. package/lib/module/configureOrderPositionsModule_BASE_56197.d.ts +60 -0
  120. package/lib/module/configureOrderPositionsModule_BASE_56197.d.ts.map +1 -0
  121. package/lib/module/configureOrderPositionsModule_BASE_56197.js +201 -0
  122. package/lib/module/configureOrderPositionsModule_BASE_56197.js.map +1 -0
  123. package/lib/module/configureOrderPositionsModule_LOCAL_56197.d.ts +43 -0
  124. package/lib/module/configureOrderPositionsModule_LOCAL_56197.d.ts.map +1 -0
  125. package/lib/module/configureOrderPositionsModule_LOCAL_56197.js +134 -0
  126. package/lib/module/configureOrderPositionsModule_LOCAL_56197.js.map +1 -0
  127. package/lib/module/configureOrderPositionsModule_REMOTE_56197.d.ts +61 -0
  128. package/lib/module/configureOrderPositionsModule_REMOTE_56197.d.ts.map +1 -0
  129. package/lib/module/configureOrderPositionsModule_REMOTE_56197.js +205 -0
  130. package/lib/module/configureOrderPositionsModule_REMOTE_56197.js.map +1 -0
  131. package/lib/module/configureOrdersModule-mutations.d.ts +5 -11
  132. package/lib/module/configureOrdersModule-mutations.d.ts.map +1 -1
  133. package/lib/module/configureOrdersModule-mutations.js +11 -50
  134. package/lib/module/configureOrdersModule-mutations.js.map +1 -1
  135. package/lib/module/configureOrdersModule-processing.d.ts +4 -8
  136. package/lib/module/configureOrdersModule-processing.d.ts.map +1 -1
  137. package/lib/module/configureOrdersModule-processing.js +3 -1
  138. package/lib/module/configureOrdersModule-processing.js.map +1 -1
  139. package/lib/module/configureOrdersModule-queries.d.ts +18 -6
  140. package/lib/module/configureOrdersModule-queries.d.ts.map +1 -1
  141. package/lib/module/configureOrdersModule-queries.js +35 -22
  142. package/lib/module/configureOrdersModule-queries.js.map +1 -1
  143. package/lib/module/configureOrdersModule-transformations.d.ts +2 -3
  144. package/lib/module/configureOrdersModule-transformations.d.ts.map +1 -1
  145. package/lib/module/configureOrdersModule-transformations.js +3 -3
  146. package/lib/module/configureOrdersModule-transformations.js.map +1 -1
  147. package/lib/module/configureOrdersModule.d.ts +11 -8
  148. package/lib/module/configureOrdersModule.d.ts.map +1 -1
  149. package/lib/module/configureOrdersModule.js +133 -154
  150. package/lib/module/configureOrdersModule.js.map +1 -1
  151. package/lib/orders-index.d.ts +11 -8
  152. package/lib/orders-index.d.ts.map +1 -1
  153. package/lib/orders-index.js +11 -8
  154. package/lib/orders-index.js.map +1 -1
  155. package/lib/orders-settings.d.ts +4 -8
  156. package/lib/orders-settings.d.ts.map +1 -1
  157. package/lib/orders-settings.js.map +1 -1
  158. package/lib/types.d.ts +7 -22
  159. package/lib/types.d.ts.map +1 -1
  160. package/lib/types.js +0 -5
  161. package/lib/types.js.map +1 -1
  162. package/package.json +9 -12
  163. package/src/db/OrderDeliveriesCollection.ts +25 -2
  164. package/src/db/OrderDiscountsCollection.ts +18 -2
  165. package/src/db/OrderPaymentsCollection.ts +26 -2
  166. package/src/db/OrderPositionsCollection.ts +21 -2
  167. package/src/db/OrdersCollection.ts +44 -2
  168. package/src/module/buildFindSelector.test.ts +8 -8
  169. package/src/module/buildFindSelector.ts +24 -0
  170. package/src/module/configureOrderDeliveriesModule.ts +29 -172
  171. package/src/module/configureOrderDiscountsModule.ts +46 -213
  172. package/src/module/configureOrderPaymentsModule.ts +58 -266
  173. package/src/module/configureOrderPositionsModule.ts +57 -208
  174. package/src/module/configureOrdersModule-mutations.ts +13 -85
  175. package/src/module/configureOrdersModule-queries.ts +61 -29
  176. package/src/module/configureOrdersModule.ts +180 -264
  177. package/src/orders-index.ts +11 -10
  178. package/src/orders-settings.ts +5 -7
  179. package/tsconfig.json +5 -7
  180. package/lib/service/migrateOrderCartService.d.ts +0 -10
  181. package/lib/service/migrateOrderCartService.d.ts.map +0 -1
  182. package/lib/service/migrateOrderCartService.js +0 -32
  183. package/lib/service/migrateOrderCartService.js.map +0 -1
  184. package/lib/service/nextUserCartService.d.ts +0 -11
  185. package/lib/service/nextUserCartService.d.ts.map +0 -1
  186. package/lib/service/nextUserCartService.js +0 -34
  187. package/lib/service/nextUserCartService.js.map +0 -1
  188. package/lib/service/orderServices.d.ts +0 -8
  189. package/lib/service/orderServices.d.ts.map +0 -1
  190. package/lib/service/orderServices.js +0 -7
  191. package/lib/service/orderServices.js.map +0 -1
  192. package/src/db/OrderDiscountTrigger.ts +0 -4
  193. package/src/director/OrderDiscountAdapter.ts +0 -8
  194. package/src/director/OrderDiscountConfiguration.ts +0 -5
  195. package/src/director/OrderDiscountDirector.ts +0 -5
  196. package/src/director/OrderPricingAdapter.ts +0 -61
  197. package/src/director/OrderPricingDirector.ts +0 -72
  198. package/src/director/OrderPricingSheet.ts +0 -146
  199. package/src/module/configureOrdersModule-processing.ts +0 -508
  200. package/src/module/configureOrdersModule-transformations.ts +0 -171
  201. package/src/service/migrateOrderCartService.ts +0 -53
  202. package/src/service/nextUserCartService.ts +0 -54
  203. package/src/service/orderServices.ts +0 -12
  204. package/src/types.ts +0 -129
@@ -0,0 +1,31 @@
1
+ import { mongodb } from '@unchainedshop/mongodb';
2
+ import { OrderPayment, OrderPaymentStatus } from '../types.js';
3
+ import { PricingCalculation } from '@unchainedshop/utils';
4
+ export declare const buildFindByIdSelector: (orderPaymentId: string) => mongodb.Filter<OrderPayment>;
5
+ export declare const buildFindByContextDataSelector: (context: any) => mongodb.Filter<OrderPayment>;
6
+ export declare const configureOrderPaymentsModule: ({ OrderPayments, }: {
7
+ OrderPayments: mongodb.Collection<OrderPayment>;
8
+ }) => {
9
+ findOrderPayment: ({ orderPaymentId, }: {
10
+ orderPaymentId: string;
11
+ }, options?: mongodb.FindOptions) => Promise<OrderPayment>;
12
+ findOrderPaymentByContextData: ({ context, }: {
13
+ context: any;
14
+ }, options?: mongodb.FindOptions) => Promise<OrderPayment>;
15
+ countOrderPaymentsByContextData: ({ context, }: {
16
+ context: any;
17
+ }, options?: mongodb.FindOptions) => Promise<number>;
18
+ normalizedStatus: (orderPayment: OrderPayment) => OrderPaymentStatus;
19
+ create: (doc: OrderPayment) => Promise<OrderPayment>;
20
+ logEvent: (orderPaymentId: string, event: any) => Promise<boolean>;
21
+ markAsPaid: (orderPayment: OrderPayment, meta: any) => Promise<void>;
22
+ updateContext: (orderPaymentId: string, context: any) => Promise<OrderPayment>;
23
+ updateStatus: (orderPaymentId: string, { transactionId, status, info, }: {
24
+ transactionId?: string;
25
+ status: OrderPaymentStatus;
26
+ info?: string;
27
+ }) => Promise<OrderPayment>;
28
+ updateCalculation: <T extends PricingCalculation>(orderPaymentId: string, calculation: Array<T>) => Promise<mongodb.WithId<OrderPayment>>;
29
+ };
30
+ export type OrderPaymentsModule = ReturnType<typeof configureOrderPaymentsModule>;
31
+ //# sourceMappingURL=configureOrderPaymentsModule_LOCAL_55464.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configureOrderPaymentsModule_LOCAL_55464.d.ts","sourceRoot":"","sources":["../../src/module/configureOrderPaymentsModule_LOCAL_55464.ts"],"names":[],"mappings":"AACA,OAAO,EAA4C,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,eAAO,MAAM,qBAAqB,mBAAoB,MAAM,KAClB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAEvE,eAAO,MAAM,8BAA8B,YAAa,GAAG,KAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAgBxF,CAAC;AAEF,eAAO,MAAM,4BAA4B,uBAEtC;IACD,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;CACjD;4CAgDQ;QACD,cAAc,EAAE,MAAM,CAAC;KACxB,YACS,OAAO,CAAC,WAAW,KAC5B,OAAO,CAAC,YAAY,CAAC;kDAMnB;QACD,OAAO,EAAE,GAAG,CAAC;KACd,YACS,OAAO,CAAC,WAAW,KAC5B,OAAO,CAAC,YAAY,CAAC;oDAQnB;QACD,OAAO,EAAE,GAAG,CAAC;KACd,YACS,OAAO,CAAC,WAAW;qCAtEO,YAAY;kBAiF9B,YAAY,KAAG,OAAO,CAAC,YAAY,CAAC;+BAcvB,MAAM,SAAS,GAAG,KAAG,OAAO,CAAC,OAAO,CAAC;+BAgBrC,YAAY,QAAQ,GAAG;oCAUlB,MAAM,WAAW,GAAG,KAAG,OAAO,CAAC,YAAY,CAAC;mCAlHlE,MAAM,oCAKnB;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,kBAAkB,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KACvE,OAAO,CAAC,YAAY,CAAC;wBA0II,CAAC,SAAS,kBAAkB,kBACpC,MAAM,eACT,KAAK,CAAC,CAAC,CAAC;CAgB1B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC"}
@@ -0,0 +1,131 @@
1
+ import { emit, registerEvents } from '@unchainedshop/events';
2
+ import { generateDbFilterById, generateDbObjectId } from '@unchainedshop/mongodb';
3
+ import { OrderPaymentStatus } from '../types.js';
4
+ const ORDER_PAYMENT_EVENTS = ['ORDER_UPDATE_PAYMENT', 'ORDER_SIGN_PAYMENT', 'ORDER_PAY'];
5
+ export const buildFindByIdSelector = (orderPaymentId) => generateDbFilterById(orderPaymentId);
6
+ export const buildFindByContextDataSelector = (context) => {
7
+ const contextKeys = Object.keys(context);
8
+ if (contextKeys.length === 0)
9
+ return null;
10
+ const selector = contextKeys.reduce((currentSelector, key) => context[key] !== undefined
11
+ ? {
12
+ ...currentSelector,
13
+ [`context.${key}`]: context[key],
14
+ }
15
+ : currentSelector, {});
16
+ return selector;
17
+ };
18
+ export const configureOrderPaymentsModule = ({ OrderPayments, }) => {
19
+ registerEvents(ORDER_PAYMENT_EVENTS);
20
+ const normalizedStatus = (orderPayment) => {
21
+ return orderPayment.status === null
22
+ ? OrderPaymentStatus.OPEN
23
+ : orderPayment.status;
24
+ };
25
+ const updateStatus = async (orderPaymentId, { transactionId, status, info, }) => {
26
+ const date = new Date();
27
+ const modifier = {
28
+ $set: { status, updated: new Date() },
29
+ $push: {
30
+ log: {
31
+ date,
32
+ status,
33
+ info,
34
+ },
35
+ },
36
+ };
37
+ if (transactionId) {
38
+ // eslint-disable-next-line
39
+ // @ts-ignore
40
+ modifier.$set.transactionId = transactionId;
41
+ }
42
+ if (status === OrderPaymentStatus.PAID) {
43
+ // eslint-disable-next-line
44
+ // @ts-ignore
45
+ modifier.$set.paid = date;
46
+ }
47
+ const selector = buildFindByIdSelector(orderPaymentId);
48
+ return OrderPayments.findOneAndUpdate(selector, modifier, { returnDocument: 'after' });
49
+ };
50
+ return {
51
+ // Queries
52
+ findOrderPayment: async ({ orderPaymentId, }, options) => {
53
+ return OrderPayments.findOne(buildFindByIdSelector(orderPaymentId), options);
54
+ },
55
+ findOrderPaymentByContextData: async ({ context, }, options) => {
56
+ const selector = buildFindByContextDataSelector(context);
57
+ return OrderPayments.findOne(selector, options);
58
+ },
59
+ countOrderPaymentsByContextData: async ({ context, }, options) => {
60
+ const selector = buildFindByContextDataSelector(context);
61
+ return OrderPayments.countDocuments(selector, options);
62
+ },
63
+ normalizedStatus,
64
+ // Mutations
65
+ create: async (doc) => {
66
+ const { insertedId: orderPaymentId } = await OrderPayments.insertOne({
67
+ _id: generateDbObjectId(),
68
+ created: new Date(),
69
+ ...doc,
70
+ status: null,
71
+ context: doc.context || {},
72
+ });
73
+ const orderPayment = await OrderPayments.findOne(buildFindByIdSelector(orderPaymentId));
74
+ return orderPayment;
75
+ },
76
+ logEvent: async (orderPaymentId, event) => {
77
+ const date = new Date();
78
+ const modifier = {
79
+ $push: {
80
+ log: {
81
+ date,
82
+ status: undefined,
83
+ info: JSON.stringify(event),
84
+ },
85
+ },
86
+ };
87
+ await OrderPayments.updateOne(generateDbFilterById(orderPaymentId), modifier);
88
+ return true;
89
+ },
90
+ markAsPaid: async (orderPayment, meta) => {
91
+ if (normalizedStatus(orderPayment) !== OrderPaymentStatus.OPEN)
92
+ return;
93
+ await updateStatus(orderPayment._id, {
94
+ status: OrderPaymentStatus.PAID,
95
+ info: meta ? JSON.stringify(meta) : 'mark paid manually',
96
+ });
97
+ await emit('ORDER_PAY', { orderPayment });
98
+ },
99
+ updateContext: async (orderPaymentId, context) => {
100
+ const selector = buildFindByIdSelector(orderPaymentId);
101
+ if (!context || Object.keys(context).length === 0)
102
+ return OrderPayments.findOne(selector, {});
103
+ const contextSetters = Object.fromEntries(Object.entries(context).map(([key, value]) => [`context.${key}`, value]));
104
+ const result = await OrderPayments.findOneAndUpdate(selector, {
105
+ $set: {
106
+ ...contextSetters,
107
+ updated: new Date(),
108
+ },
109
+ }, { includeResultMetadata: true, returnDocument: 'after' });
110
+ if (result.ok) {
111
+ await emit('ORDER_UPDATE_PAYMENT', {
112
+ orderPayment: result.value,
113
+ });
114
+ return result.value;
115
+ }
116
+ return null;
117
+ },
118
+ updateStatus,
119
+ updateCalculation: async (orderPaymentId, calculation) => {
120
+ return OrderPayments.findOneAndUpdate(buildFindByIdSelector(orderPaymentId), {
121
+ $set: {
122
+ calculation,
123
+ updated: new Date(),
124
+ },
125
+ }, {
126
+ returnDocument: 'after',
127
+ });
128
+ },
129
+ };
130
+ };
131
+ //# sourceMappingURL=configureOrderPaymentsModule_LOCAL_55464.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configureOrderPaymentsModule_LOCAL_55464.js","sourceRoot":"","sources":["../../src/module/configureOrderPaymentsModule_LOCAL_55464.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAW,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAgB,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAG/D,MAAM,oBAAoB,GAAa,CAAC,sBAAsB,EAAE,oBAAoB,EAAE,WAAW,CAAC,CAAC;AAEnG,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,cAAsB,EAAE,EAAE,CAC9D,oBAAoB,CAAC,cAAc,CAAiC,CAAC;AAEvE,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,OAAY,EAAgC,EAAE;IAC3F,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEzC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1C,MAAM,QAAQ,GAAiC,WAAW,CAAC,MAAM,CAC/D,CAAC,eAAe,EAAE,GAAG,EAAE,EAAE,CACvB,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS;QACxB,CAAC,CAAC;YACE,GAAG,eAAe;YAClB,CAAC,WAAW,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC;SACjC;QACH,CAAC,CAAC,eAAe,EACrB,EAAE,CACH,CAAC;IACF,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,EAC3C,aAAa,GAGd,EAAE,EAAE;IACH,cAAc,CAAC,oBAAoB,CAAC,CAAC;IAErC,MAAM,gBAAgB,GAAG,CAAC,YAA0B,EAAE,EAAE;QACtD,OAAO,YAAY,CAAC,MAAM,KAAK,IAAI;YACjC,CAAC,CAAC,kBAAkB,CAAC,IAAI;YACzB,CAAC,CAAE,YAAY,CAAC,MAA6B,CAAC;IAClD,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,KAAK,EACxB,cAAsB,EACtB,EACE,aAAa,EACb,MAAM,EACN,IAAI,GACkE,EACjD,EAAE;QACzB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAuC;YACnD,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,EAAE;YACrC,KAAK,EAAE;gBACL,GAAG,EAAE;oBACH,IAAI;oBACJ,MAAM;oBACN,IAAI;iBACL;aACF;SACF,CAAC;QACF,IAAI,aAAa,EAAE,CAAC;YAClB,2BAA2B;YAC3B,aAAa;YACb,QAAQ,CAAC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAC9C,CAAC;QACD,IAAI,MAAM,KAAK,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACvC,2BAA2B;YAC3B,aAAa;YACb,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAC5B,CAAC;QAED,MAAM,QAAQ,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;QACvD,OAAO,aAAa,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;IACzF,CAAC,CAAC;IAEF,OAAO;QACL,UAAU;QACV,gBAAgB,EAAE,KAAK,EACrB,EACE,cAAc,GAGf,EACD,OAA6B,EACN,EAAE;YACzB,OAAO,aAAa,CAAC,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/E,CAAC;QACD,6BAA6B,EAAE,KAAK,EAClC,EACE,OAAO,GAGR,EACD,OAA6B,EACN,EAAE;YACzB,MAAM,QAAQ,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;YAEzD,OAAO,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC;QACD,+BAA+B,EAAE,KAAK,EACpC,EACE,OAAO,GAGR,EACD,OAA6B,EAC7B,EAAE;YACF,MAAM,QAAQ,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;YAEzD,OAAO,aAAa,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACzD,CAAC;QAED,gBAAgB;QAEhB,YAAY;QAEZ,MAAM,EAAE,KAAK,EAAE,GAAiB,EAAyB,EAAE;YACzD,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC;gBACnE,GAAG,EAAE,kBAAkB,EAAE;gBACzB,OAAO,EAAE,IAAI,IAAI,EAAE;gBACnB,GAAG,GAAG;gBACN,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;aAC3B,CAAC,CAAC;YAEH,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;YAExF,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,QAAQ,EAAE,KAAK,EAAE,cAAsB,EAAE,KAAU,EAAoB,EAAE;YACvE,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG;gBACf,KAAK,EAAE;oBACL,GAAG,EAAE;wBACH,IAAI;wBACJ,MAAM,EAAE,SAAS;wBACjB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;qBAC5B;iBACF;aACF,CAAC;YACF,MAAM,aAAa,CAAC,SAAS,CAAC,oBAAoB,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,CAAC;YAE9E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,UAAU,EAAE,KAAK,EAAE,YAA0B,EAAE,IAAS,EAAE,EAAE;YAC1D,IAAI,gBAAgB,CAAC,YAAY,CAAC,KAAK,kBAAkB,CAAC,IAAI;gBAAE,OAAO;YAEvE,MAAM,YAAY,CAAC,YAAY,CAAC,GAAG,EAAE;gBACnC,MAAM,EAAE,kBAAkB,CAAC,IAAI;gBAC/B,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,oBAAoB;aACzD,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,aAAa,EAAE,KAAK,EAAE,cAAsB,EAAE,OAAY,EAAyB,EAAE;YACnF,MAAM,QAAQ,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAE9F,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CACvC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,CACzE,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,gBAAgB,CACjD,QAAQ,EACR;gBACE,IAAI,EAAE;oBACJ,GAAG,cAAc;oBACjB,OAAO,EAAE,IAAI,IAAI,EAAE;iBACpB;aACF,EACD,EAAE,qBAAqB,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CACzD,CAAC;YAEF,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACd,MAAM,IAAI,CAAC,sBAAsB,EAAE;oBACjC,YAAY,EAAE,MAAM,CAAC,KAAK;iBAC3B,CAAC,CAAC;gBACH,OAAO,MAAM,CAAC,KAAK,CAAC;YACtB,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAED,YAAY;QAEZ,iBAAiB,EAAE,KAAK,EACtB,cAAsB,EACtB,WAAqB,EACrB,EAAE;YACF,OAAO,aAAa,CAAC,gBAAgB,CACnC,qBAAqB,CAAC,cAAc,CAAC,EACrC;gBACE,IAAI,EAAE;oBACJ,WAAW;oBACX,OAAO,EAAE,IAAI,IAAI,EAAE;iBACpB;aACF,EACD;gBACE,cAAc,EAAE,OAAO;aACxB,CACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { mongodb } from '@unchainedshop/mongodb';
2
+ import { OrderPayment, OrderPaymentStatus } from '../types.js';
3
+ import { PricingCalculation } from '@unchainedshop/utils';
4
+ export declare const buildFindByIdSelector: (orderPaymentId: string) => mongodb.Filter<OrderPayment>;
5
+ export declare const buildFindByContextDataSelector: (context: any) => mongodb.Filter<OrderPayment>;
6
+ export declare const configureOrderPaymentsModule: ({ OrderPayments, }: {
7
+ OrderPayments: mongodb.Collection<OrderPayment>;
8
+ }) => {
9
+ findOrderPayment: ({ orderPaymentId, }: {
10
+ orderPaymentId: string;
11
+ }, options?: mongodb.FindOptions) => Promise<OrderPayment>;
12
+ findOrderPaymentByContextData: ({ context, }: {
13
+ context: any;
14
+ }, options?: mongodb.FindOptions) => Promise<OrderPayment>;
15
+ countOrderPaymentsByContextData: ({ context, }: {
16
+ context: any;
17
+ }, options?: mongodb.FindOptions) => Promise<number>;
18
+ normalizedStatus: (orderPayment: OrderPayment) => OrderPaymentStatus;
19
+ create: (doc: OrderPayment) => Promise<OrderPayment>;
20
+ logEvent: (orderPaymentId: string, event: any) => Promise<boolean>;
21
+ markAsPaid: (orderPayment: OrderPayment, meta: any) => Promise<void>;
22
+ updateContext: (orderPaymentId: string, context: any) => Promise<OrderPayment>;
23
+ updateStatus: (orderPaymentId: string, { transactionId, status, info, }: {
24
+ transactionId?: string;
25
+ status: OrderPaymentStatus;
26
+ info?: string;
27
+ }) => Promise<OrderPayment>;
28
+ updateCalculation: <T extends PricingCalculation>(orderPaymentId: string, calculation: Array<T>) => Promise<mongodb.WithId<OrderPayment>>;
29
+ };
30
+ export type OrderPaymentsModule = ReturnType<typeof configureOrderPaymentsModule>;
31
+ //# sourceMappingURL=configureOrderPaymentsModule_LOCAL_55877.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configureOrderPaymentsModule_LOCAL_55877.d.ts","sourceRoot":"","sources":["../../src/module/configureOrderPaymentsModule_LOCAL_55877.ts"],"names":[],"mappings":"AACA,OAAO,EAA4C,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,eAAO,MAAM,qBAAqB,mBAAoB,MAAM,KAClB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAEvE,eAAO,MAAM,8BAA8B,YAAa,GAAG,KAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAgBxF,CAAC;AAEF,eAAO,MAAM,4BAA4B,uBAEtC;IACD,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;CACjD;4CAgDQ;QACD,cAAc,EAAE,MAAM,CAAC;KACxB,YACS,OAAO,CAAC,WAAW,KAC5B,OAAO,CAAC,YAAY,CAAC;kDAMnB;QACD,OAAO,EAAE,GAAG,CAAC;KACd,YACS,OAAO,CAAC,WAAW,KAC5B,OAAO,CAAC,YAAY,CAAC;oDAQnB;QACD,OAAO,EAAE,GAAG,CAAC;KACd,YACS,OAAO,CAAC,WAAW;qCAtEO,YAAY;kBAiF9B,YAAY,KAAG,OAAO,CAAC,YAAY,CAAC;+BAcvB,MAAM,SAAS,GAAG,KAAG,OAAO,CAAC,OAAO,CAAC;+BAgBrC,YAAY,QAAQ,GAAG;oCAUlB,MAAM,WAAW,GAAG,KAAG,OAAO,CAAC,YAAY,CAAC;mCAlHlE,MAAM,oCAKnB;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,kBAAkB,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KACvE,OAAO,CAAC,YAAY,CAAC;wBA0II,CAAC,SAAS,kBAAkB,kBACpC,MAAM,eACT,KAAK,CAAC,CAAC,CAAC;CAgB1B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC"}
@@ -0,0 +1,131 @@
1
+ import { emit, registerEvents } from '@unchainedshop/events';
2
+ import { generateDbFilterById, generateDbObjectId } from '@unchainedshop/mongodb';
3
+ import { OrderPaymentStatus } from '../types.js';
4
+ const ORDER_PAYMENT_EVENTS = ['ORDER_UPDATE_PAYMENT', 'ORDER_SIGN_PAYMENT', 'ORDER_PAY'];
5
+ export const buildFindByIdSelector = (orderPaymentId) => generateDbFilterById(orderPaymentId);
6
+ export const buildFindByContextDataSelector = (context) => {
7
+ const contextKeys = Object.keys(context);
8
+ if (contextKeys.length === 0)
9
+ return null;
10
+ const selector = contextKeys.reduce((currentSelector, key) => context[key] !== undefined
11
+ ? {
12
+ ...currentSelector,
13
+ [`context.${key}`]: context[key],
14
+ }
15
+ : currentSelector, {});
16
+ return selector;
17
+ };
18
+ export const configureOrderPaymentsModule = ({ OrderPayments, }) => {
19
+ registerEvents(ORDER_PAYMENT_EVENTS);
20
+ const normalizedStatus = (orderPayment) => {
21
+ return orderPayment.status === null
22
+ ? OrderPaymentStatus.OPEN
23
+ : orderPayment.status;
24
+ };
25
+ const updateStatus = async (orderPaymentId, { transactionId, status, info, }) => {
26
+ const date = new Date();
27
+ const modifier = {
28
+ $set: { status, updated: new Date() },
29
+ $push: {
30
+ log: {
31
+ date,
32
+ status,
33
+ info,
34
+ },
35
+ },
36
+ };
37
+ if (transactionId) {
38
+ // eslint-disable-next-line
39
+ // @ts-ignore
40
+ modifier.$set.transactionId = transactionId;
41
+ }
42
+ if (status === OrderPaymentStatus.PAID) {
43
+ // eslint-disable-next-line
44
+ // @ts-ignore
45
+ modifier.$set.paid = date;
46
+ }
47
+ const selector = buildFindByIdSelector(orderPaymentId);
48
+ return OrderPayments.findOneAndUpdate(selector, modifier, { returnDocument: 'after' });
49
+ };
50
+ return {
51
+ // Queries
52
+ findOrderPayment: async ({ orderPaymentId, }, options) => {
53
+ return OrderPayments.findOne(buildFindByIdSelector(orderPaymentId), options);
54
+ },
55
+ findOrderPaymentByContextData: async ({ context, }, options) => {
56
+ const selector = buildFindByContextDataSelector(context);
57
+ return OrderPayments.findOne(selector, options);
58
+ },
59
+ countOrderPaymentsByContextData: async ({ context, }, options) => {
60
+ const selector = buildFindByContextDataSelector(context);
61
+ return OrderPayments.countDocuments(selector, options);
62
+ },
63
+ normalizedStatus,
64
+ // Mutations
65
+ create: async (doc) => {
66
+ const { insertedId: orderPaymentId } = await OrderPayments.insertOne({
67
+ _id: generateDbObjectId(),
68
+ created: new Date(),
69
+ ...doc,
70
+ status: null,
71
+ context: doc.context || {},
72
+ });
73
+ const orderPayment = await OrderPayments.findOne(buildFindByIdSelector(orderPaymentId));
74
+ return orderPayment;
75
+ },
76
+ logEvent: async (orderPaymentId, event) => {
77
+ const date = new Date();
78
+ const modifier = {
79
+ $push: {
80
+ log: {
81
+ date,
82
+ status: undefined,
83
+ info: JSON.stringify(event),
84
+ },
85
+ },
86
+ };
87
+ await OrderPayments.updateOne(generateDbFilterById(orderPaymentId), modifier);
88
+ return true;
89
+ },
90
+ markAsPaid: async (orderPayment, meta) => {
91
+ if (normalizedStatus(orderPayment) !== OrderPaymentStatus.OPEN)
92
+ return;
93
+ await updateStatus(orderPayment._id, {
94
+ status: OrderPaymentStatus.PAID,
95
+ info: meta ? JSON.stringify(meta) : 'mark paid manually',
96
+ });
97
+ await emit('ORDER_PAY', { orderPayment });
98
+ },
99
+ updateContext: async (orderPaymentId, context) => {
100
+ const selector = buildFindByIdSelector(orderPaymentId);
101
+ if (!context || Object.keys(context).length === 0)
102
+ return OrderPayments.findOne(selector, {});
103
+ const contextSetters = Object.fromEntries(Object.entries(context).map(([key, value]) => [`context.${key}`, value]));
104
+ const result = await OrderPayments.findOneAndUpdate(selector, {
105
+ $set: {
106
+ ...contextSetters,
107
+ updated: new Date(),
108
+ },
109
+ }, { includeResultMetadata: true, returnDocument: 'after' });
110
+ if (result.ok) {
111
+ await emit('ORDER_UPDATE_PAYMENT', {
112
+ orderPayment: result.value,
113
+ });
114
+ return result.value;
115
+ }
116
+ return null;
117
+ },
118
+ updateStatus,
119
+ updateCalculation: async (orderPaymentId, calculation) => {
120
+ return OrderPayments.findOneAndUpdate(buildFindByIdSelector(orderPaymentId), {
121
+ $set: {
122
+ calculation,
123
+ updated: new Date(),
124
+ },
125
+ }, {
126
+ returnDocument: 'after',
127
+ });
128
+ },
129
+ };
130
+ };
131
+ //# sourceMappingURL=configureOrderPaymentsModule_LOCAL_55877.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configureOrderPaymentsModule_LOCAL_55877.js","sourceRoot":"","sources":["../../src/module/configureOrderPaymentsModule_LOCAL_55877.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { mongodb } from '@unchainedshop/mongodb';
2
+ import { Order, OrderDiscount, OrderPayment, OrderPaymentStatus } from '../types.js';
3
+ import { OrderPricingDiscount } from '../director/OrderPricingDirector.js';
4
+ import type { IPaymentPricingSheet } from '@unchainedshop/core-payment';
5
+ export type OrderPaymentsModule = {
6
+ findOrderPayment: (params: {
7
+ orderPaymentId: string;
8
+ }, options?: mongodb.FindOptions) => Promise<OrderPayment>;
9
+ findOrderPaymentByContextData: (params: {
10
+ context: any;
11
+ }, options?: mongodb.FindOptions) => Promise<OrderPayment>;
12
+ countOrderPaymentsByContextData: (params: {
13
+ context: any;
14
+ }, options?: mongodb.FindOptions) => Promise<number>;
15
+ discounts: (orderPayment: OrderPayment, params: {
16
+ order: Order;
17
+ orderDiscount: OrderDiscount;
18
+ }, unchainedAPI: any) => Array<OrderPricingDiscount>;
19
+ isBlockingOrderConfirmation: (orderPayment: OrderPayment, unchainedAPI: any) => Promise<boolean>;
20
+ isBlockingOrderFullfillment: (orderPayment: OrderPayment) => boolean;
21
+ normalizedStatus: (orderPayment: OrderPayment) => string;
22
+ pricingSheet: (orderPayment: OrderPayment, currency: string, unchainedAPI: any) => IPaymentPricingSheet;
23
+ create: (doc: OrderPayment) => Promise<OrderPayment>;
24
+ cancel: (orderPayment: OrderPayment, paymentContext: {
25
+ transactionContext: any;
26
+ userId: string;
27
+ }, unchainedAPI: any) => Promise<OrderPayment>;
28
+ confirm: (orderPayment: OrderPayment, paymentContext: {
29
+ transactionContext: any;
30
+ userId: string;
31
+ }, unchainedAPI: any) => Promise<OrderPayment>;
32
+ charge: (orderPayment: OrderPayment, paymentContext: {
33
+ transactionContext: any;
34
+ userId: string;
35
+ }, unchainedAPI: any) => Promise<OrderPayment>;
36
+ logEvent: (orderPaymentId: string, event: any) => Promise<boolean>;
37
+ markAsPaid: (payment: OrderPayment, meta: any) => Promise<void>;
38
+ updateContext: (orderPaymentId: string, context: any) => Promise<OrderPayment | null>;
39
+ updateStatus: (orderPaymentId: string, params: {
40
+ transactionId?: string;
41
+ status: OrderPaymentStatus;
42
+ info?: string;
43
+ }) => Promise<OrderPayment>;
44
+ updateCalculation: (orderPayment: OrderPayment, unchainedAPI: any) => Promise<OrderPayment>;
45
+ deleteOrderPayments: (orderId: string) => Promise<number>;
46
+ };
47
+ export declare const buildFindByIdSelector: (orderPaymentId: string) => mongodb.Filter<OrderPayment>;
48
+ export declare const buildFindByContextDataSelector: (context: any) => mongodb.Filter<OrderPayment>;
49
+ export declare const configureOrderPaymentsModule: ({ OrderPayments, }: {
50
+ OrderPayments: mongodb.Collection<OrderPayment>;
51
+ }) => OrderPaymentsModule;
52
+ //# sourceMappingURL=configureOrderPaymentsModule_REMOTE_55464.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configureOrderPaymentsModule_REMOTE_55464.d.ts","sourceRoot":"","sources":["../../src/module/configureOrderPaymentsModule_REMOTE_55464.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,247 @@
1
+ import { emit, registerEvents } from '@unchainedshop/events';
2
+ import { generateDbFilterById, generateDbObjectId } from '@unchainedshop/mongodb';
3
+ import { OrderPaymentStatus } from '../types.js';
4
+ const ORDER_PAYMENT_EVENTS = ['ORDER_UPDATE_PAYMENT', 'ORDER_SIGN_PAYMENT', 'ORDER_PAY'];
5
+ export const buildFindByIdSelector = (orderPaymentId) => generateDbFilterById(orderPaymentId);
6
+ export const buildFindByContextDataSelector = (context) => {
7
+ const contextKeys = Object.keys(context);
8
+ if (contextKeys.length === 0)
9
+ return null;
10
+ const selector = contextKeys.reduce((currentSelector, key) => context[key] !== undefined
11
+ ? {
12
+ ...currentSelector,
13
+ [`context.${key}`]: context[key],
14
+ }
15
+ : currentSelector, {});
16
+ return selector;
17
+ };
18
+ export const configureOrderPaymentsModule = ({ OrderPayments, }) => {
19
+ registerEvents(ORDER_PAYMENT_EVENTS);
20
+ const normalizedStatus = (orderPayment) => {
21
+ return orderPayment.status === null
22
+ ? OrderPaymentStatus.OPEN
23
+ : orderPayment.status;
24
+ };
25
+ const buildPaymentProviderActionsContext = (orderPayment, { transactionContext, ...rest }) => ({
26
+ ...rest,
27
+ orderPayment,
28
+ paymentProviderId: orderPayment.paymentProviderId,
29
+ transactionContext: {
30
+ ...(transactionContext || {}),
31
+ ...(orderPayment.context || {}),
32
+ },
33
+ });
34
+ const updateStatus = async (orderPaymentId, { status, transactionId, info }) => {
35
+ const date = new Date();
36
+ const modifier = {
37
+ $set: { status, updated: new Date() },
38
+ $push: {
39
+ log: {
40
+ date,
41
+ status,
42
+ info,
43
+ },
44
+ },
45
+ };
46
+ if (transactionId) {
47
+ // eslint-disable-next-line
48
+ // @ts-ignore
49
+ modifier.$set.transactionId = transactionId;
50
+ }
51
+ if (status === OrderPaymentStatus.PAID) {
52
+ // eslint-disable-next-line
53
+ // @ts-ignore
54
+ modifier.$set.paid = date;
55
+ }
56
+ const selector = buildFindByIdSelector(orderPaymentId);
57
+ return OrderPayments.findOneAndUpdate(selector, modifier, { returnDocument: 'after' });
58
+ };
59
+ return {
60
+ // Queries
61
+ findOrderPayment: async ({ orderPaymentId }, options) => {
62
+ return OrderPayments.findOne(buildFindByIdSelector(orderPaymentId), options);
63
+ },
64
+ findOrderPaymentByContextData: async ({ context }, options) => {
65
+ const selector = buildFindByContextDataSelector(context);
66
+ return OrderPayments.findOne(selector, options);
67
+ },
68
+ countOrderPaymentsByContextData: async ({ context }, options) => {
69
+ const selector = buildFindByContextDataSelector(context);
70
+ return OrderPayments.countDocuments(selector, options);
71
+ },
72
+ // Transformations
73
+ discounts: (orderPayment, { order, orderDiscount }, context) => {
74
+ const { modules } = context;
75
+ if (!orderPayment)
76
+ return [];
77
+ const pricingSheet = modules.orders.payments.pricingSheet(orderPayment, order.currency, context);
78
+ return pricingSheet.discountPrices(orderDiscount._id).map((discount) => ({
79
+ payment: orderPayment,
80
+ ...discount,
81
+ }));
82
+ },
83
+ isBlockingOrderConfirmation: async (orderPayment, unchainedAPI) => {
84
+ if (orderPayment.status === OrderPaymentStatus.PAID)
85
+ return false;
86
+ const provider = await unchainedAPI.modules.payment.paymentProviders.findProvider({
87
+ paymentProviderId: orderPayment.paymentProviderId,
88
+ });
89
+ const isPayLaterAllowed = await unchainedAPI.modules.payment.paymentProviders.isPayLaterAllowed(provider, unchainedAPI);
90
+ return !isPayLaterAllowed;
91
+ },
92
+ isBlockingOrderFullfillment: (orderPayment) => {
93
+ if (orderPayment.status === OrderPaymentStatus.PAID)
94
+ return false;
95
+ return true;
96
+ },
97
+ normalizedStatus,
98
+ pricingSheet: (orderPayment, currency, { modules }) => {
99
+ return modules.payment.paymentProviders.pricingSheet({
100
+ calculation: orderPayment.calculation,
101
+ currency,
102
+ });
103
+ },
104
+ // Mutations
105
+ create: async (doc) => {
106
+ const { insertedId: orderPaymentId } = await OrderPayments.insertOne({
107
+ _id: generateDbObjectId(),
108
+ created: new Date(),
109
+ ...doc,
110
+ status: null,
111
+ context: doc.context || {},
112
+ });
113
+ const orderPayment = await OrderPayments.findOne(buildFindByIdSelector(orderPaymentId));
114
+ return orderPayment;
115
+ },
116
+ confirm: async (orderPayment, paymentContext, unchainedAPI) => {
117
+ const { modules } = unchainedAPI;
118
+ if (normalizedStatus(orderPayment) !== OrderPaymentStatus.PAID) {
119
+ return orderPayment;
120
+ }
121
+ const arbitraryResponseData = await modules.payment.paymentProviders.confirm(orderPayment.paymentProviderId, buildPaymentProviderActionsContext(orderPayment, paymentContext), unchainedAPI);
122
+ if (arbitraryResponseData) {
123
+ return updateStatus(orderPayment._id, {
124
+ status: OrderPaymentStatus.PAID,
125
+ info: JSON.stringify(arbitraryResponseData),
126
+ });
127
+ }
128
+ return orderPayment;
129
+ },
130
+ cancel: async (orderPayment, paymentContext, unchainedAPI) => {
131
+ const { modules } = unchainedAPI;
132
+ if (normalizedStatus(orderPayment) !== OrderPaymentStatus.PAID) {
133
+ return orderPayment;
134
+ }
135
+ const arbitraryResponseData = await modules.payment.paymentProviders.cancel(orderPayment.paymentProviderId, buildPaymentProviderActionsContext(orderPayment, paymentContext), unchainedAPI);
136
+ if (arbitraryResponseData) {
137
+ return updateStatus(orderPayment._id, {
138
+ status: OrderPaymentStatus.REFUNDED,
139
+ info: JSON.stringify(arbitraryResponseData),
140
+ });
141
+ }
142
+ return orderPayment;
143
+ },
144
+ charge: async (orderPayment, context, unchainedAPI) => {
145
+ const { modules } = unchainedAPI;
146
+ if (normalizedStatus(orderPayment) !== OrderPaymentStatus.OPEN) {
147
+ return orderPayment;
148
+ }
149
+ const paymentCredentials = context.transactionContext?.paymentCredentials ||
150
+ (await modules.payment.paymentCredentials.findPaymentCredential({
151
+ userId: context.userId,
152
+ paymentProviderId: orderPayment.paymentProviderId,
153
+ isPreferred: true,
154
+ }));
155
+ const paymentContext = buildPaymentProviderActionsContext(orderPayment, {
156
+ ...context,
157
+ transactionContext: {
158
+ ...context.transactionContext,
159
+ paymentCredentials,
160
+ },
161
+ });
162
+ const result = await modules.payment.paymentProviders.charge(orderPayment.paymentProviderId, paymentContext, unchainedAPI);
163
+ if (!result)
164
+ return orderPayment;
165
+ const { credentials, ...arbitraryResponseData } = result;
166
+ if (credentials) {
167
+ const { token, ...meta } = credentials;
168
+ await modules.payment.paymentCredentials.upsertCredentials({
169
+ userId: paymentContext.userId,
170
+ paymentProviderId: orderPayment.paymentProviderId,
171
+ token,
172
+ ...meta,
173
+ });
174
+ }
175
+ if (arbitraryResponseData) {
176
+ const { transactionId, ...info } = arbitraryResponseData;
177
+ return updateStatus(orderPayment._id, {
178
+ transactionId,
179
+ status: OrderPaymentStatus.PAID,
180
+ info: JSON.stringify(info),
181
+ });
182
+ }
183
+ return orderPayment;
184
+ },
185
+ logEvent: async (orderPaymentId, event) => {
186
+ const date = new Date();
187
+ const modifier = {
188
+ $push: {
189
+ log: {
190
+ date,
191
+ status: undefined,
192
+ info: JSON.stringify(event),
193
+ },
194
+ },
195
+ };
196
+ await OrderPayments.updateOne(generateDbFilterById(orderPaymentId), modifier);
197
+ return true;
198
+ },
199
+ markAsPaid: async (orderPayment, meta) => {
200
+ if (normalizedStatus(orderPayment) !== OrderPaymentStatus.OPEN)
201
+ return;
202
+ await updateStatus(orderPayment._id, {
203
+ status: OrderPaymentStatus.PAID,
204
+ info: meta ? JSON.stringify(meta) : 'mark paid manually',
205
+ });
206
+ await emit('ORDER_PAY', { orderPayment });
207
+ },
208
+ updateContext: async (orderPaymentId, context) => {
209
+ const selector = buildFindByIdSelector(orderPaymentId);
210
+ if (!context || Object.keys(context).length === 0)
211
+ return OrderPayments.findOne(selector, {});
212
+ const contextSetters = Object.fromEntries(Object.entries(context).map(([key, value]) => [`context.${key}`, value]));
213
+ const result = await OrderPayments.findOneAndUpdate(selector, {
214
+ $set: {
215
+ ...contextSetters,
216
+ updated: new Date(),
217
+ },
218
+ }, { includeResultMetadata: true, returnDocument: 'after' });
219
+ if (result.ok) {
220
+ await emit('ORDER_UPDATE_PAYMENT', {
221
+ orderPayment: result.value,
222
+ });
223
+ return result.value;
224
+ }
225
+ return null;
226
+ },
227
+ updateStatus,
228
+ updateCalculation: async (orderPayment, unchainedAPI) => {
229
+ const calculation = await unchainedAPI.modules.payment.paymentProviders.calculate({
230
+ item: orderPayment,
231
+ }, unchainedAPI);
232
+ return OrderPayments.findOneAndUpdate(buildFindByIdSelector(orderPayment._id), {
233
+ $set: {
234
+ calculation,
235
+ updated: new Date(),
236
+ },
237
+ }, {
238
+ returnDocument: 'after',
239
+ });
240
+ },
241
+ deleteOrderPayments: async (orderId) => {
242
+ const { deletedCount } = await OrderPayments.deleteMany({ orderId });
243
+ return deletedCount;
244
+ },
245
+ };
246
+ };
247
+ //# sourceMappingURL=configureOrderPaymentsModule_REMOTE_55464.js.map