@chevre/domain 21.2.0-alpha.9 → 21.2.0-alpha.91

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 (247) hide show
  1. package/example/src/chevre/aggregation/aggregateSystem.ts +58 -31
  2. package/example/src/chevre/createManyEventsIfNotExist.ts +4 -1
  3. package/example/src/chevre/deleteTasksByName.ts +10 -2
  4. package/example/src/chevre/importEventsFromCOA.ts +3 -4
  5. package/example/src/chevre/migrateOrderAdditionalProperties.ts +85 -0
  6. package/example/src/chevre/processReserve.ts +2 -1
  7. package/example/src/chevre/saveTasks.ts +13 -10
  8. package/example/src/chevre/searchAbortedTasks.ts +36 -0
  9. package/example/src/chevre/searchReservationNumbersByOrderNumbers.ts +37 -1
  10. package/example/src/chevre/searchSellers.ts +33 -0
  11. package/example/src/chevre/searchSendEmailActions.ts +44 -0
  12. package/example/src/chevre/task/executeTasks.ts +26 -0
  13. package/example/src/chevre/transaction/findCreditCard.ts +1 -1
  14. package/example/src/chevre/transaction/orderMembershipService.ts +1 -1
  15. package/example/src/chevre/transaction/processReturnOrder.ts +40 -0
  16. package/example/src/chevre/transaction/startExportTasks.ts +20 -0
  17. package/example/src/chevre/updateTransaction.ts +1 -1
  18. package/example/src/playOnMoment.ts +24 -0
  19. package/lib/chevre/credentials.d.ts +1 -0
  20. package/lib/chevre/credentials.js +2 -1
  21. package/lib/chevre/eventEmitter/assetTransaction.d.ts +21 -0
  22. package/lib/chevre/eventEmitter/assetTransaction.js +25 -0
  23. package/lib/chevre/eventEmitter/task.d.ts +18 -0
  24. package/lib/chevre/eventEmitter/task.js +25 -0
  25. package/lib/chevre/eventEmitter/transaction.d.ts +21 -0
  26. package/lib/chevre/eventEmitter/transaction.js +25 -0
  27. package/lib/chevre/eventEmitter.d.ts +4 -0
  28. package/lib/chevre/eventEmitter.js +9 -0
  29. package/lib/chevre/index.d.ts +3 -2
  30. package/lib/chevre/index.js +5 -3
  31. package/lib/chevre/repo/accountTransaction.d.ts +3 -11
  32. package/lib/chevre/repo/accountTransaction.js +1 -54
  33. package/lib/chevre/repo/action.d.ts +29 -1
  34. package/lib/chevre/repo/action.js +32 -25
  35. package/lib/chevre/repo/assetTransaction.d.ts +25 -9
  36. package/lib/chevre/repo/assetTransaction.js +241 -80
  37. package/lib/chevre/repo/comment.d.ts +4 -1
  38. package/lib/chevre/repo/comment.js +20 -5
  39. package/lib/chevre/repo/confirmationNumber.d.ts +0 -1
  40. package/lib/chevre/repo/confirmationNumber.js +3 -15
  41. package/lib/chevre/repo/creativeWork.d.ts +1 -3
  42. package/lib/chevre/repo/emailMessage.d.ts +1 -27
  43. package/lib/chevre/repo/event.d.ts +5 -1
  44. package/lib/chevre/repo/merchantReturnPolicy.d.ts +1 -3
  45. package/lib/chevre/repo/mongoose/schemas/account.d.ts +5 -2
  46. package/lib/chevre/repo/mongoose/schemas/account.js +1 -0
  47. package/lib/chevre/repo/mongoose/schemas/accountTitle.d.ts +30 -3
  48. package/lib/chevre/repo/mongoose/schemas/accountTitle.js +1 -0
  49. package/lib/chevre/repo/mongoose/schemas/accountTransaction.d.ts +32 -3
  50. package/lib/chevre/repo/mongoose/schemas/accountTransaction.js +2 -1
  51. package/lib/chevre/repo/mongoose/schemas/accountingReport.d.ts +14 -3
  52. package/lib/chevre/repo/mongoose/schemas/accountingReport.js +1 -0
  53. package/lib/chevre/repo/mongoose/schemas/action.d.ts +44 -3
  54. package/lib/chevre/repo/mongoose/schemas/action.js +2 -1
  55. package/lib/chevre/repo/mongoose/schemas/additionalProperty.d.ts +18 -3
  56. package/lib/chevre/repo/mongoose/schemas/additionalProperty.js +1 -0
  57. package/lib/chevre/repo/mongoose/schemas/aggregation.d.ts +5 -2
  58. package/lib/chevre/repo/mongoose/schemas/aggregation.js +1 -0
  59. package/lib/chevre/repo/mongoose/schemas/assetTransaction.d.ts +45 -3
  60. package/lib/chevre/repo/mongoose/schemas/assetTransaction.js +27 -19
  61. package/lib/chevre/repo/mongoose/schemas/authorization.d.ts +20 -3
  62. package/lib/chevre/repo/mongoose/schemas/authorization.js +2 -1
  63. package/lib/chevre/repo/mongoose/schemas/categoryCode.d.ts +26 -3
  64. package/lib/chevre/repo/mongoose/schemas/categoryCode.js +1 -0
  65. package/lib/chevre/repo/mongoose/schemas/comments.d.ts +28 -3
  66. package/lib/chevre/repo/mongoose/schemas/comments.js +2 -1
  67. package/lib/chevre/repo/mongoose/schemas/creativeWork.d.ts +44 -3
  68. package/lib/chevre/repo/mongoose/schemas/creativeWork.js +1 -0
  69. package/lib/chevre/repo/mongoose/schemas/customer.d.ts +26 -3
  70. package/lib/chevre/repo/mongoose/schemas/customer.js +1 -0
  71. package/lib/chevre/repo/mongoose/schemas/emailMessages.d.ts +22 -3
  72. package/lib/chevre/repo/mongoose/schemas/emailMessages.js +1 -0
  73. package/lib/chevre/repo/mongoose/schemas/event.d.ts +72 -3
  74. package/lib/chevre/repo/mongoose/schemas/event.js +1 -0
  75. package/lib/chevre/repo/mongoose/schemas/member.d.ts +14 -3
  76. package/lib/chevre/repo/mongoose/schemas/member.js +1 -0
  77. package/lib/chevre/repo/mongoose/schemas/merchantReturnPolicy.d.ts +22 -3
  78. package/lib/chevre/repo/mongoose/schemas/merchantReturnPolicy.js +1 -0
  79. package/lib/chevre/repo/mongoose/schemas/offer.d.ts +66 -3
  80. package/lib/chevre/repo/mongoose/schemas/offer.js +1 -0
  81. package/lib/chevre/repo/mongoose/schemas/offerCatalog.d.ts +28 -3
  82. package/lib/chevre/repo/mongoose/schemas/offerCatalog.js +1 -0
  83. package/lib/chevre/repo/mongoose/schemas/offerItemCondition.d.ts +74 -0
  84. package/lib/chevre/repo/mongoose/schemas/offerItemCondition.js +45 -0
  85. package/lib/chevre/repo/mongoose/schemas/order.d.ts +52 -3
  86. package/lib/chevre/repo/mongoose/schemas/order.js +2 -1
  87. package/lib/chevre/repo/mongoose/schemas/ownershipInfo.d.ts +26 -3
  88. package/lib/chevre/repo/mongoose/schemas/ownershipInfo.js +2 -1
  89. package/lib/chevre/repo/mongoose/schemas/place.d.ts +50 -3
  90. package/lib/chevre/repo/mongoose/schemas/place.js +1 -0
  91. package/lib/chevre/repo/mongoose/schemas/priceSpecification.d.ts +30 -3
  92. package/lib/chevre/repo/mongoose/schemas/priceSpecification.js +1 -0
  93. package/lib/chevre/repo/mongoose/schemas/product.d.ts +32 -3
  94. package/lib/chevre/repo/mongoose/schemas/product.js +1 -0
  95. package/lib/chevre/repo/mongoose/schemas/project.d.ts +24 -3
  96. package/lib/chevre/repo/mongoose/schemas/project.js +1 -0
  97. package/lib/chevre/repo/mongoose/schemas/reservation.d.ts +63 -4
  98. package/lib/chevre/repo/mongoose/schemas/reservation.js +2 -1
  99. package/lib/chevre/repo/mongoose/schemas/role.d.ts +12 -3
  100. package/lib/chevre/repo/mongoose/schemas/role.js +1 -0
  101. package/lib/chevre/repo/mongoose/schemas/seller.d.ts +32 -3
  102. package/lib/chevre/repo/mongoose/schemas/seller.js +7 -0
  103. package/lib/chevre/repo/mongoose/schemas/serviceOutput.d.ts +12 -3
  104. package/lib/chevre/repo/mongoose/schemas/serviceOutput.js +2 -1
  105. package/lib/chevre/repo/mongoose/schemas/task.d.ts +31 -3
  106. package/lib/chevre/repo/mongoose/schemas/task.js +3 -1
  107. package/lib/chevre/repo/mongoose/schemas/telemetry.d.ts +22 -3
  108. package/lib/chevre/repo/mongoose/schemas/telemetry.js +1 -0
  109. package/lib/chevre/repo/mongoose/schemas/transaction.d.ts +41 -3
  110. package/lib/chevre/repo/mongoose/schemas/transaction.js +3 -1
  111. package/lib/chevre/repo/mongoose/schemas/trip.d.ts +12 -3
  112. package/lib/chevre/repo/mongoose/schemas/trip.js +1 -0
  113. package/lib/chevre/repo/offerItemCondition.d.ts +22 -0
  114. package/lib/chevre/repo/offerItemCondition.js +120 -0
  115. package/lib/chevre/repo/order.d.ts +55 -3
  116. package/lib/chevre/repo/order.js +56 -5
  117. package/lib/chevre/repo/reservation.d.ts +8 -4
  118. package/lib/chevre/repo/reservation.js +12 -42
  119. package/lib/chevre/repo/seller.js +19 -19
  120. package/lib/chevre/repo/task.d.ts +42 -2
  121. package/lib/chevre/repo/task.js +90 -9
  122. package/lib/chevre/repo/transaction.d.ts +23 -3
  123. package/lib/chevre/repo/transaction.js +174 -54
  124. package/lib/chevre/repository.d.ts +5 -2
  125. package/lib/chevre/repository.js +8 -4
  126. package/lib/chevre/service/aggregation/system.d.ts +67 -22
  127. package/lib/chevre/service/aggregation/system.js +101 -89
  128. package/lib/chevre/service/assetTransaction/cancelReservation.js +1 -28
  129. package/lib/chevre/service/assetTransaction/moneyTransfer.js +1 -23
  130. package/lib/chevre/service/assetTransaction/pay/potentialActions.js +17 -1
  131. package/lib/chevre/service/assetTransaction/pay.js +10 -25
  132. package/lib/chevre/service/assetTransaction/refund.js +1 -23
  133. package/lib/chevre/service/assetTransaction/registerService.js +1 -25
  134. package/lib/chevre/service/assetTransaction/reserve/factory.d.ts +7 -2
  135. package/lib/chevre/service/assetTransaction/reserve/factory.js +33 -22
  136. package/lib/chevre/service/assetTransaction/reserve.d.ts +7 -1
  137. package/lib/chevre/service/assetTransaction/reserve.js +40 -41
  138. package/lib/chevre/service/assetTransaction.d.ts +6 -2
  139. package/lib/chevre/service/assetTransaction.js +9 -5
  140. package/lib/chevre/service/event.js +3 -1
  141. package/lib/chevre/service/notification/factory.js +2 -2
  142. package/lib/chevre/service/notification.d.ts +3 -1
  143. package/lib/chevre/service/notification.js +41 -7
  144. package/lib/chevre/service/offer/event/authorize.d.ts +1 -0
  145. package/lib/chevre/service/offer/event/authorize.js +5 -2
  146. package/lib/chevre/service/offer/event/factory.d.ts +2 -0
  147. package/lib/chevre/service/offer/event/factory.js +2 -2
  148. package/lib/chevre/service/offer/event/voidTransaction.d.ts +2 -0
  149. package/lib/chevre/service/offer/event/voidTransaction.js +17 -1
  150. package/lib/chevre/service/offer.js +1 -1
  151. package/lib/chevre/service/order/deleteOrder.d.ts +3 -1
  152. package/lib/chevre/service/order/deleteOrder.js +8 -8
  153. package/lib/chevre/service/order/onOrderStatusChanged/factory.d.ts +4 -2
  154. package/lib/chevre/service/order/onOrderStatusChanged/factory.js +41 -81
  155. package/lib/chevre/service/order/onOrderStatusChanged.js +1 -3
  156. package/lib/chevre/service/order/onOrderUpdated.d.ts +15 -0
  157. package/lib/chevre/service/order/onOrderUpdated.js +22 -0
  158. package/lib/chevre/service/order/placeOrder.d.ts +1 -0
  159. package/lib/chevre/service/order/placeOrder.js +41 -24
  160. package/lib/chevre/service/order/returnOrder.d.ts +1 -0
  161. package/lib/chevre/service/order/returnOrder.js +7 -12
  162. package/lib/chevre/service/order/sendOrder.d.ts +1 -0
  163. package/lib/chevre/service/order/sendOrder.js +7 -10
  164. package/lib/chevre/service/order.d.ts +2 -1
  165. package/lib/chevre/service/order.js +3 -1
  166. package/lib/chevre/service/payment/any/onPaid.js +1 -1
  167. package/lib/chevre/service/payment/any/onRefund.js +1 -1
  168. package/lib/chevre/service/payment/any.js +74 -16
  169. package/lib/chevre/service/payment/movieTicket/validation.d.ts +3 -2
  170. package/lib/chevre/service/payment/movieTicket/validation.js +12 -25
  171. package/lib/chevre/service/payment/movieTicket.d.ts +1 -1
  172. package/lib/chevre/service/payment/movieTicket.js +4 -3
  173. package/lib/chevre/service/product.js +1 -5
  174. package/lib/chevre/service/report/telemetry.d.ts +0 -11
  175. package/lib/chevre/service/report/telemetry.js +21 -24
  176. package/lib/chevre/service/reserve/cancelReservation.d.ts +4 -2
  177. package/lib/chevre/service/reserve/cancelReservation.js +2 -4
  178. package/lib/chevre/service/reserve/checkInReservation.d.ts +9 -4
  179. package/lib/chevre/service/reserve/checkInReservation.js +77 -3
  180. package/lib/chevre/service/reserve/confirmReservation.d.ts +7 -4
  181. package/lib/chevre/service/reserve/confirmReservation.js +121 -58
  182. package/lib/chevre/service/reserve/potentialActions/onReservationCanceled.d.ts +0 -3
  183. package/lib/chevre/service/reserve/potentialActions/onReservationCanceled.js +20 -20
  184. package/lib/chevre/service/reserve/potentialActions/onReservationCheckedIn.js +2 -3
  185. package/lib/chevre/service/reserve/potentialActions/onReservationConfirmed.js +2 -31
  186. package/lib/chevre/service/reserve/potentialActions/onReservationUsed.js +2 -3
  187. package/lib/chevre/service/reserve/useReservation.d.ts +7 -3
  188. package/lib/chevre/service/reserve/useReservation.js +61 -71
  189. package/lib/chevre/service/reserve/verifyToken4reservation.d.ts +15 -0
  190. package/lib/chevre/service/reserve/verifyToken4reservation.js +56 -0
  191. package/lib/chevre/service/reserve.d.ts +3 -2
  192. package/lib/chevre/service/reserve.js +4 -2
  193. package/lib/chevre/service/task/confirmRegisterServiceTransaction.js +1 -1
  194. package/lib/chevre/service/task/deleteTransaction.js +10 -8
  195. package/lib/chevre/service/task/importOffersFromCOA.js +4 -0
  196. package/lib/chevre/service/task/onAuthorizationCreated.d.ts +7 -0
  197. package/lib/chevre/service/task/onAuthorizationCreated.js +108 -0
  198. package/lib/chevre/service/task/placeOrder.js +1 -1
  199. package/lib/chevre/service/task/reserve.js +10 -7
  200. package/lib/chevre/service/task/returnOrder.js +1 -1
  201. package/lib/chevre/service/task/returnPayTransaction.js +2 -12
  202. package/lib/chevre/service/task/sendOrder.js +1 -1
  203. package/lib/chevre/service/task/useReservation.d.ts +7 -0
  204. package/lib/chevre/service/task/useReservation.js +36 -0
  205. package/lib/chevre/service/task/voidReserveTransaction.js +3 -1
  206. package/lib/chevre/service/task.d.ts +9 -0
  207. package/lib/chevre/service/task.js +43 -4
  208. package/lib/chevre/service/transaction/deleteTransaction.d.ts +21 -0
  209. package/lib/chevre/service/transaction/deleteTransaction.js +232 -0
  210. package/lib/chevre/service/transaction/moneyTransfer/exportTasks/factory.js +11 -1
  211. package/lib/chevre/service/transaction/moneyTransfer/factory.js +3 -1
  212. package/lib/chevre/service/transaction/moneyTransfer/potentialActions.d.ts +1 -0
  213. package/lib/chevre/service/transaction/moneyTransfer/potentialActions.js +1 -1
  214. package/lib/chevre/service/transaction/moneyTransfer.js +9 -12
  215. package/lib/chevre/service/transaction/placeOrder/exportTasks/factory.js +42 -30
  216. package/lib/chevre/service/transaction/placeOrder.js +1 -5
  217. package/lib/chevre/service/transaction/placeOrderInProgress/factory.js +1 -1
  218. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/moneyTransfer.d.ts +1 -0
  219. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/moneyTransfer.js +1 -1
  220. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.d.ts +1 -0
  221. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.js +1 -1
  222. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions.d.ts +1 -0
  223. package/lib/chevre/service/transaction/placeOrderInProgress/result/acceptedOffers.d.ts +3 -0
  224. package/lib/chevre/service/transaction/placeOrderInProgress/result/acceptedOffers.js +7 -3
  225. package/lib/chevre/service/transaction/placeOrderInProgress/result.d.ts +1 -0
  226. package/lib/chevre/service/transaction/placeOrderInProgress/result.js +2 -2
  227. package/lib/chevre/service/transaction/placeOrderInProgress/validation/validateMovieTicket.d.ts +1 -1
  228. package/lib/chevre/service/transaction/placeOrderInProgress/validation/validateMovieTicket.js +2 -2
  229. package/lib/chevre/service/transaction/placeOrderInProgress/validation.d.ts +2 -1
  230. package/lib/chevre/service/transaction/placeOrderInProgress/validation.js +23 -17
  231. package/lib/chevre/service/transaction/placeOrderInProgress.d.ts +0 -3
  232. package/lib/chevre/service/transaction/placeOrderInProgress.js +22 -11
  233. package/lib/chevre/service/transaction/returnOrder/exportTasks/factory.js +10 -1
  234. package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPaymentMethod.js +25 -17
  235. package/lib/chevre/service/transaction/returnOrder.d.ts +4 -0
  236. package/lib/chevre/service/transaction/returnOrder.js +225 -35
  237. package/lib/chevre/service/transaction.d.ts +8 -13
  238. package/lib/chevre/service/transaction.js +12 -145
  239. package/lib/chevre/settings.d.ts +4 -1
  240. package/lib/chevre/settings.js +15 -5
  241. package/package.json +5 -5
  242. package/example/src/chevre/migrateMoneyTransferPendingTransactionIdentifier.ts +0 -96
  243. package/example/src/chevre/migrateMovieAdditionalProperties.ts +0 -98
  244. package/lib/chevre/service/task/deleteAssetTransaction.d.ts +0 -12
  245. package/lib/chevre/service/task/deleteAssetTransaction.js +0 -65
  246. package/lib/chevre/service/task/deleteOrder.d.ts +0 -6
  247. package/lib/chevre/service/task/deleteOrder.js +0 -35
@@ -1,7 +1,9 @@
1
1
  import * as factory from '../factory';
2
2
  import { MongoRepository as ActionRepo } from '../repo/action';
3
3
  import { MongoRepository as ProjectRepo } from '../repo/project';
4
- export type Operation<T> = () => Promise<T>;
4
+ export type Operation<T> = (repos: {
5
+ accessToken: string;
6
+ }) => Promise<T>;
5
7
  /**
6
8
  * Eメールメッセージを送信する
7
9
  * https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/errors.html
@@ -111,15 +111,11 @@ exports.sendEmailMessage = sendEmailMessage;
111
111
  * https://notify-bot.line.me/doc/ja/
112
112
  */
113
113
  function report2developers(subject, content, imageThumbnail, imageFullsize) {
114
- return () => __awaiter(this, void 0, void 0, function* () {
114
+ return (repos) => __awaiter(this, void 0, void 0, function* () {
115
115
  const LINE_NOTIFY_URL = credentials_1.credentials.lineNotify.url;
116
- const LINE_NOTIFY_ACCESS_TOKEN = credentials_1.credentials.lineNotify.accessToken;
117
116
  if (LINE_NOTIFY_URL === undefined) {
118
117
  throw new Error('Environment variable LINE_NOTIFY_URL not set');
119
118
  }
120
- if (LINE_NOTIFY_ACCESS_TOKEN === undefined) {
121
- throw new Error('Environment variable LINE_NOTIFY_ACCESS_TOKEN not set');
122
- }
123
119
  const message = `--------
124
120
  ${subject}
125
121
  --------
@@ -130,7 +126,7 @@ ${content}`;
130
126
  var _a;
131
127
  request.post({
132
128
  url: LINE_NOTIFY_URL,
133
- auth: { bearer: LINE_NOTIFY_ACCESS_TOKEN },
129
+ auth: { bearer: repos.accessToken },
134
130
  form: formData,
135
131
  json: true,
136
132
  timeout: (_a = settings_1.settings.webhook) === null || _a === void 0 ? void 0 : _a.timeout
@@ -154,6 +150,45 @@ ${content}`;
154
150
  exports.report2developers = report2developers;
155
151
  const USERNAME_ARGUMENT_REQUIRED_MESSAGE = 'Missing required key \'Username\' in params';
156
152
  function triggerWebhook(params) {
153
+ return (repos) => __awaiter(this, void 0, void 0, function* () {
154
+ // retryableにする(2023-05-12~)
155
+ let retry = true;
156
+ let numberOfTry = 0;
157
+ while (numberOfTry >= 0) {
158
+ try {
159
+ numberOfTry += 1;
160
+ if (numberOfTry > settings_1.TRIGGER_WEBHOOK_MAX_RETRY_COUNT) {
161
+ retry = false;
162
+ }
163
+ // retryInterval
164
+ if (numberOfTry > 1) {
165
+ yield sleep(settings_1.TRIGGER_WEBHOOK_RETRY_INTERVAL_IN_MS * (numberOfTry - 1));
166
+ }
167
+ yield processInformAction(params)(repos);
168
+ break;
169
+ }
170
+ catch (error) {
171
+ if (retry) {
172
+ continue;
173
+ }
174
+ else {
175
+ throw error;
176
+ }
177
+ }
178
+ }
179
+ });
180
+ }
181
+ exports.triggerWebhook = triggerWebhook;
182
+ function sleep(waitTime) {
183
+ return __awaiter(this, void 0, void 0, function* () {
184
+ return new Promise((resolve) => {
185
+ setTimeout(() => {
186
+ resolve();
187
+ }, waitTime);
188
+ });
189
+ });
190
+ }
191
+ function processInformAction(params) {
157
192
  return (repos) => __awaiter(this, void 0, void 0, function* () {
158
193
  var _a, _b;
159
194
  // アクション開始
@@ -219,4 +254,3 @@ function triggerWebhook(params) {
219
254
  yield repos.action.complete({ typeOf: action.typeOf, id: action.id, result: result });
220
255
  });
221
256
  }
222
- exports.triggerWebhook = triggerWebhook;
@@ -57,5 +57,6 @@ declare function authorize(params: {
57
57
  */
58
58
  id: string;
59
59
  };
60
+ disablePendingReservations: boolean;
60
61
  }): IAuthorizeOperation<IAuthorizeOfferAction>;
61
62
  export { authorize };
@@ -66,7 +66,8 @@ function authorize(params) {
66
66
  ticketOffers,
67
67
  unitPriceOffers,
68
68
  validateEvent: params.validateEvent === true,
69
- validateEventOfferPeriod: params.validateEventOfferPeriod === true
69
+ validateEventOfferPeriod: params.validateEventOfferPeriod === true,
70
+ disablePendingReservations: params.disablePendingReservations
70
71
  })(repos);
71
72
  // requestBody = processStartReserveResult.requestBody;
72
73
  // responseBody = processStartReserveResult.responseBody;
@@ -162,9 +163,11 @@ function processStartReserve4chevre(params) {
162
163
  // requestBody = startParams;
163
164
  const startParamObject = yield validateObjectWithoutDetail(startParams)(repos);
164
165
  // 予約取引開始
165
- responseBody = yield ReserveTransactionService.start(Object.assign(Object.assign({}, startParams), { object: startParamObject, preSearchedEvent: event, preSearchedTicketOffers: params.ticketOffers, preSearchedUnitPriceOffers: params.unitPriceOffers, availableAtOrFrom: { id: params.availableAtOrFrom.id }, validateEvent: params.validateEvent, validateEventOfferPeriod: params.validateEventOfferPeriod, validateAppliesToMovieTicket: true }))(repos);
166
+ const startReserveTransactionResult = yield ReserveTransactionService.start(Object.assign(Object.assign({}, startParams), { object: startParamObject, preSearchedEvent: event, preSearchedTicketOffers: params.ticketOffers, preSearchedUnitPriceOffers: params.unitPriceOffers, availableAtOrFrom: { id: params.availableAtOrFrom.id }, validateEvent: params.validateEvent, validateEventOfferPeriod: params.validateEventOfferPeriod, validateAppliesToMovieTicket: true, disablePendingReservations: params.disablePendingReservations }))(repos);
167
+ responseBody = startReserveTransactionResult.transaction;
166
168
  // 予約取引からオファー情報を生成する
167
169
  acceptedOffers4result = (0, factory_1.responseBody2acceptedOffers4result)({
170
+ objectSubReservations: startReserveTransactionResult.objectSubReservations,
168
171
  responseBody: responseBody,
169
172
  event: event,
170
173
  project: transaction.project,
@@ -23,8 +23,10 @@ export declare function createAuthorizeSeatReservationActionAttributes(params: {
23
23
  export declare function acceptedOffers2amount(params: {
24
24
  acceptedOffers: IResultAcceptedOffer[];
25
25
  }): number;
26
+ type IObjectSubReservation = factory.assetTransaction.reserve.IObjectSubReservation;
26
27
  type IResultAcceptedOffer = factory.action.authorize.offer.seatReservation.IResultAcceptedOffer;
27
28
  export declare function responseBody2acceptedOffers4result(params: {
29
+ objectSubReservations: IObjectSubReservation[];
28
30
  responseBody: factory.assetTransaction.reserve.ITransaction;
29
31
  event: IMinimizedIndividualEvent<factory.eventType.ScreeningEvent>;
30
32
  project: {
@@ -154,8 +154,8 @@ exports.acceptedOffers2amount = acceptedOffers2amount;
154
154
  function responseBody2acceptedOffers4result(params) {
155
155
  let acceptedOffers4result = [];
156
156
  // 予約取引からacceptedOffers4resultを生成する
157
- if (Array.isArray(params.responseBody.object.subReservation)) {
158
- acceptedOffers4result = params.responseBody.object.subReservation.map((itemOffered) => {
157
+ if (Array.isArray(params.objectSubReservations)) {
158
+ acceptedOffers4result = params.objectSubReservations.map((itemOffered) => {
159
159
  var _a;
160
160
  const reservation = createReservation({ project: params.project, itemOffered, event: params.event });
161
161
  // appliesToMovieTicketがArrayでないケースは廃止(2022-09-12~)
@@ -5,6 +5,7 @@ import { RedisRepository as OfferRateLimitRepo } from '../../../repo/rateLimit/o
5
5
  import { MongoRepository as ReservationRepo } from '../../../repo/reservation';
6
6
  import { StockHolderRepository as StockHolderRepo } from '../../../repo/stockHolder';
7
7
  import { MongoRepository as TaskRepo } from '../../../repo/task';
8
+ import { MongoRepository as TransactionRepo } from '../../../repo/transaction';
8
9
  export import WebAPIIdentifier = factory.service.webAPI.Identifier;
9
10
  interface IVoidTransactionRepos {
10
11
  action: ActionRepo;
@@ -13,6 +14,7 @@ interface IVoidTransactionRepos {
13
14
  offerRateLimit: OfferRateLimitRepo;
14
15
  reservation: ReservationRepo;
15
16
  task: TaskRepo;
17
+ transaction: TransactionRepo;
16
18
  }
17
19
  /**
18
20
  * イベントオファー承認取消(タスクから実行)
@@ -26,8 +26,13 @@ exports.WebAPIIdentifier = factory.service.webAPI.Identifier;
26
26
  */
27
27
  function voidTransaction(params) {
28
28
  return (repos) => __awaiter(this, void 0, void 0, function* () {
29
+ const transaction = yield repos.transaction.findById({
30
+ typeOf: params.purpose.typeOf,
31
+ id: params.purpose.id,
32
+ inclusion: ['_id', 'typeOf', 'status']
33
+ });
29
34
  // 座席仮予約アクション検索
30
- const authorizeActions = yield repos.action.searchByPurpose({
35
+ let authorizeActions = yield repos.action.searchByPurpose({
31
36
  typeOf: factory.actionType.AuthorizeAction,
32
37
  purpose: {
33
38
  typeOf: params.purpose.typeOf,
@@ -36,6 +41,17 @@ function voidTransaction(params) {
36
41
  })
37
42
  .then((actions) => actions
38
43
  .filter((a) => a.object.typeOf === factory.action.authorize.offer.seatReservation.ObjectType.SeatReservation));
44
+ switch (transaction.status) {
45
+ case factory.transactionStatusType.InProgress:
46
+ throw new factory.errors.NotImplemented(`${transaction.status} not implemented`);
47
+ // 確定取引に対応(2023-05-07~)
48
+ case factory.transactionStatusType.Confirmed:
49
+ // アクションステータスを検証する
50
+ authorizeActions = authorizeActions.filter((a) => a.actionStatus !== factory.actionStatusType.CompletedActionStatus);
51
+ break;
52
+ default:
53
+ // no op
54
+ }
39
55
  yield Promise.all(authorizeActions.map((action) => __awaiter(this, void 0, void 0, function* () {
40
56
  yield repos.action.cancel({ typeOf: action.typeOf, id: action.id });
41
57
  switch (action.instrument.identifier) {
@@ -186,7 +186,7 @@ function createAggregateScreeningEventIfNotExist(params) {
186
186
  }
187
187
  }
188
188
  if (aggregateTasks.length > 0) {
189
- yield repos.task.saveMany(aggregateTasks);
189
+ yield repos.task.saveMany(aggregateTasks, { emitImmediately: true });
190
190
  }
191
191
  });
192
192
  }
@@ -7,7 +7,9 @@ import * as factory from '../../factory';
7
7
  * 注文に関わるリソースを削除する
8
8
  * 冪等性を確保すること
9
9
  */
10
- declare function deleteOrder(params: factory.task.IData<factory.taskName.DeleteOrder>): (repos: {
10
+ declare function deleteOrder(params: {
11
+ object: Pick<factory.order.IOrder, 'project' | 'typeOf' | 'confirmationNumber' | 'orderDate' | 'orderNumber'>;
12
+ }): (repos: {
11
13
  accountingReport: AccountingReportRepo;
12
14
  order: OrderRepo;
13
15
  ownershipInfo: OwnershipInfoRepo;
@@ -18,7 +18,14 @@ const factory = require("../../factory");
18
18
  */
19
19
  function deleteOrder(params) {
20
20
  return (repos) => __awaiter(this, void 0, void 0, function* () {
21
- const order = params.object;
21
+ const orders = yield repos.order.search({
22
+ orderNumbers: [params.object.orderNumber]
23
+ });
24
+ const order = orders.shift();
25
+ if (order === undefined) {
26
+ // すでに削除済
27
+ return;
28
+ }
22
29
  // 注文アイテムの予約を削除
23
30
  yield deleteReservationsByOrder(order)(repos);
24
31
  // 所有権削除
@@ -63,13 +70,6 @@ function deleteOwnershipInfosByOrder(order) {
63
70
  // 所有期限切れのもの(ownedThroughの存在しないものは削除してはいけない)
64
71
  ownedThrough: { $lt: now }
65
72
  });
66
- // await repos.ownershipInfo.ownershipInfoModel.deleteMany({
67
- // 'project.id': { $eq: order.project.id },
68
- // identifier: { $in: ownershipIdentifiers },
69
- // // 所有期限切れのもの(ownedThroughの存在しないものは削除してはいけない)
70
- // ownedThrough: { $exists: true, $lt: now }
71
- // })
72
- // .exec();
73
73
  }
74
74
  });
75
75
  }
@@ -6,8 +6,10 @@ export declare function getOrderWithToken(params: {
6
6
  order: factory.order.IOrder;
7
7
  expiresIn: number;
8
8
  }): Promise<factory.order.IOrder | IOrderWithToken>;
9
- export declare function createInformTasks(order: factory.order.IOrder | IOrderWithToken): factory.task.IAttributes<factory.taskName.TriggerWebhook>[];
10
- export declare function createDeleteTasks(order: factory.order.IOrder): factory.task.IAttributes<factory.taskName.DeleteOrder>[];
9
+ export type IUpdatedOrder4inform = Pick<factory.order.IOrder, 'typeOf' | 'orderNumber' | 'name' | 'additionalProperty' | 'project'> & {
10
+ orderStatus?: undefined;
11
+ };
12
+ export declare function createInformTasks(order: factory.order.IOrder | IOrderWithToken | IUpdatedOrder4inform): factory.task.IAttributes<factory.taskName.TriggerWebhook>[];
11
13
  export declare function createConfirmReservationActionObject4ChevreByOrder(params: {
12
14
  order: factory.order.IOrder;
13
15
  }): factory.action.interact.confirm.reservation.IObject<factory.service.webAPI.Identifier.Chevre>[];
@@ -10,10 +10,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  var _a;
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.createConfirmRegisterServiceActionObjectByOrder = exports.createConfirmReservationActionObject4COAByOrder = exports.createConfirmReservationActionObject4ChevreByOrder = exports.createDeleteTasks = exports.createInformTasks = exports.getOrderWithToken = void 0;
13
+ exports.createConfirmRegisterServiceActionObjectByOrder = exports.createConfirmReservationActionObject4COAByOrder = exports.createConfirmReservationActionObject4ChevreByOrder = exports.createInformTasks = exports.getOrderWithToken = void 0;
14
14
  const google_libphonenumber_1 = require("google-libphonenumber");
15
15
  const jwt = require("jsonwebtoken");
16
- const moment = require("moment");
17
16
  const util_1 = require("util");
18
17
  const credentials_1 = require("../../../credentials");
19
18
  const factory = require("../../../factory");
@@ -26,32 +25,10 @@ function getOrderWithToken(params) {
26
25
  if (typeof credentials_1.credentials.hub.clientId !== 'string') {
27
26
  return params.order;
28
27
  }
29
- // 冗長な個人情報をマスク(最低限の情報に)
30
- // const customer4orderToken: factory.order.ISimpleCustomer =
31
- // (params.order.customer.typeOf === factory.organizationType.Organization)
32
- // ? {
33
- // id: params.order.customer.id,
34
- // name: '****',
35
- // // project: params.order.customer.project,
36
- // typeOf: params.order.customer.typeOf
37
- // }
38
- // : {
39
- // id: params.order.customer.id,
40
- // typeOf: params.order.customer.typeOf
41
- // };
42
- // const seller4orderToken: Omit<factory.order.ISeller, 'name'> = {
43
- // id: params.order.seller.id,
44
- // typeOf: params.order.seller.typeOf
45
- // };
46
28
  // 最適化(2023-01-31~)
47
29
  const order4token = {
48
30
  typeOf: params.order.typeOf,
49
- // seller: seller4orderToken,
50
- // customer: customer4orderToken,
51
31
  orderNumber: params.order.orderNumber
52
- // price: params.order.price,
53
- // priceCurrency: params.order.priceCurrency,
54
- // orderDate: params.order.orderDate
55
32
  };
56
33
  const token = yield new Promise((resolve, reject) => {
57
34
  // 所有権を暗号化する
@@ -86,10 +63,13 @@ function createInformTasks(order) {
86
63
  let informTasks = [];
87
64
  if (Array.isArray(informOrder) && informOrder.length > 0) {
88
65
  const order4inform = creteOrder4inform(order);
89
- let recipientId = order.customer.id;
90
- if (order.orderStatus === factory.orderStatus.OrderReturned) {
91
- if (typeof ((_a = order.returner) === null || _a === void 0 ? void 0 : _a.id) === 'string') {
92
- recipientId = order.returner.id;
66
+ let recipientId = '';
67
+ if (typeof order.orderStatus === 'string') {
68
+ recipientId = order.customer.id;
69
+ if (order.orderStatus === factory.orderStatus.OrderReturned) {
70
+ if (typeof ((_a = order.returner) === null || _a === void 0 ? void 0 : _a.id) === 'string') {
71
+ recipientId = order.returner.id;
72
+ }
93
73
  }
94
74
  }
95
75
  informTasks = informOrder.map((informOrderParams) => {
@@ -98,7 +78,6 @@ function createInformTasks(order) {
98
78
  agent: order.project,
99
79
  object: order4inform,
100
80
  project: order.project,
101
- // purpose: params.transaction,
102
81
  recipient: {
103
82
  url: (_a = informOrderParams.recipient) === null || _a === void 0 ? void 0 : _a.url,
104
83
  id: recipientId,
@@ -123,62 +102,43 @@ function createInformTasks(order) {
123
102
  }
124
103
  exports.createInformTasks = createInformTasks;
125
104
  function creteOrder4inform(order) {
126
- if (order.orderStatus === factory.orderStatus.OrderReturned) {
127
- // 返品注文通知内容を最適化(2022-12-28~)
128
- return Object.assign(Object.assign({ project: order.project, typeOf: order.typeOf, orderNumber: order.orderNumber, orderStatus: order.orderStatus }, (order.dateReturned !== undefined) ? { dateReturned: order.dateReturned } : undefined), (typeof order.id === 'string') ? { id: order.id } : undefined);
129
- }
130
- else if (order.orderStatus === factory.orderStatus.OrderDelivered) {
131
- // 配送済注文通知内容を最適化(2022-12-29~)
132
- return Object.assign({ project: order.project, typeOf: order.typeOf, orderNumber: order.orderNumber, orderStatus: order.orderStatus }, (typeof order.id === 'string') ? { id: order.id } : undefined);
105
+ if (typeof order.orderStatus === 'string') {
106
+ if (order.orderStatus === factory.orderStatus.OrderReturned) {
107
+ // 返品注文通知内容を最適化(2022-12-28~)
108
+ return Object.assign(Object.assign({ project: order.project, typeOf: order.typeOf, orderNumber: order.orderNumber, orderStatus: order.orderStatus }, (order.dateReturned !== undefined) ? { dateReturned: order.dateReturned } : undefined), (typeof order.id === 'string') ? { id: order.id } : undefined);
109
+ }
110
+ else if (order.orderStatus === factory.orderStatus.OrderDelivered) {
111
+ // 配送済注文通知内容を最適化(2022-12-29~)
112
+ return Object.assign({ project: order.project, typeOf: order.typeOf, orderNumber: order.orderNumber, orderStatus: order.orderStatus }, (typeof order.id === 'string') ? { id: order.id } : undefined);
113
+ }
114
+ else {
115
+ // 冗長な個人情報をmask
116
+ return Object.assign(Object.assign({
117
+ // whitelistで作成する(2022-07-19~)
118
+ project: order.project, typeOf: order.typeOf, seller: order.seller, price: order.price, priceCurrency: order.priceCurrency, confirmationNumber: order.confirmationNumber, orderNumber: order.orderNumber, acceptedOffers: order.acceptedOffers, orderStatus: order.orderStatus, orderDate: order.orderDate,
119
+ // mask
120
+ customer: Object.assign(Object.assign({}, (0, order_1.createMaskedCustomer)(order)), { additionalProperty: (Array.isArray(order.customer.additionalProperty)) ? order.customer.additionalProperty : [],
121
+ // identifierは必要
122
+ // 予約後を隠蔽(2022-12-24~)
123
+ identifier: (Array.isArray(order.customer.identifier))
124
+ ? order.customer.identifier.filter((p) => {
125
+ return !reservedAgentIdentifireNames_1.RESERVED_AGENT_IDENTIFIER_NAMES.includes(p.name);
126
+ })
127
+ : [] }),
128
+ // paymentMethodsに関してもmask(2022-05-30~)
129
+ paymentMethods: order.paymentMethods.map((p) => {
130
+ return Object.assign(Object.assign({}, p), (typeof p.accountId === 'string' && p.accountId.length > 0)
131
+ ? { accountId: ASTERISK_CHARACTER.repeat(p.accountId.length) }
132
+ : undefined);
133
+ }) }, (typeof order.token === 'string')
134
+ ? { token: order.token }
135
+ : undefined), (typeof order.id === 'string') ? { id: order.id } : undefined);
136
+ }
133
137
  }
134
138
  else {
135
- // 冗長な個人情報をmask
136
- return Object.assign(Object.assign({
137
- // whitelistで作成する(2022-07-19~)
138
- project: order.project, typeOf: order.typeOf, seller: order.seller, price: order.price, priceCurrency: order.priceCurrency, confirmationNumber: order.confirmationNumber, orderNumber: order.orderNumber, acceptedOffers: order.acceptedOffers, orderStatus: order.orderStatus, orderDate: order.orderDate,
139
- // mask
140
- customer: Object.assign(Object.assign({}, (0, order_1.createMaskedCustomer)(order)), { additionalProperty: (Array.isArray(order.customer.additionalProperty)) ? order.customer.additionalProperty : [],
141
- // identifierは必要
142
- // 予約後を隠蔽(2022-12-24~)
143
- identifier: (Array.isArray(order.customer.identifier))
144
- ? order.customer.identifier.filter((p) => {
145
- return !reservedAgentIdentifireNames_1.RESERVED_AGENT_IDENTIFIER_NAMES.includes(p.name);
146
- })
147
- : [] }),
148
- // paymentMethodsに関してもmask(2022-05-30~)
149
- paymentMethods: order.paymentMethods.map((p) => {
150
- return Object.assign(Object.assign({}, p), (typeof p.accountId === 'string' && p.accountId.length > 0)
151
- ? { accountId: ASTERISK_CHARACTER.repeat(p.accountId.length) }
152
- : undefined);
153
- }) }, (typeof order.token === 'string')
154
- ? { token: order.token }
155
- : undefined), (typeof order.id === 'string') ? { id: order.id } : undefined);
139
+ return order;
156
140
  }
157
141
  }
158
- /**
159
- * 注文保管期間
160
- */
161
- const ORDER_STORAGE_PERIOD_IN_DAYS = (typeof process.env.ORDER_STORAGE_PERIOD_IN_DAYS === 'string')
162
- ? Number(process.env.ORDER_STORAGE_PERIOD_IN_DAYS) :
163
- // tslint:disable-next-line:no-magic-numbers
164
- 365;
165
- function createDeleteTasks(order) {
166
- return [{
167
- project: order.project,
168
- name: factory.taskName.DeleteOrder,
169
- status: factory.taskStatus.Ready,
170
- runsAt: moment(order.orderDate)
171
- .add(ORDER_STORAGE_PERIOD_IN_DAYS, 'days')
172
- .toDate(),
173
- remainingNumberOfTries: 10,
174
- numberOfTried: 0,
175
- executionResults: [],
176
- data: {
177
- object: order
178
- }
179
- }];
180
- }
181
- exports.createDeleteTasks = createDeleteTasks;
182
142
  function createConfirmReservationActionObject4ChevreByOrder(params) {
183
143
  const chevreReservationNumbers = (Array.isArray(params.order.acceptedOffers))
184
144
  ? params.order.acceptedOffers.filter((o) => {
@@ -72,8 +72,6 @@ function onOrderStatusChanged(params) {
72
72
  tasks = [
73
73
  // 注文作成時のみトークン付加
74
74
  ...(0, factory_1.createInformTasks)(orderWithToken),
75
- // リソース削除タスク
76
- ...(0, factory_1.createDeleteTasks)(params.order),
77
75
  ...yield createConfirmPayTransactionTasks(params.order, simpleOrder)(repos),
78
76
  ...yield createConfirmReserveTransactionTasks(params.order, simpleOrder)(repos),
79
77
  ...yield createConfirmRegisterServiceTransactionTasks(params.order, simpleOrder)(repos)
@@ -89,7 +87,7 @@ function onOrderStatusChanged(params) {
89
87
  break;
90
88
  default:
91
89
  }
92
- yield repos.task.saveMany(tasks);
90
+ yield repos.task.saveMany(tasks, { emitImmediately: true });
93
91
  });
94
92
  }
95
93
  exports.onOrderStatusChanged = onOrderStatusChanged;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * 注文変更時処理
3
+ */
4
+ import { MongoRepository as TaskRepo } from '../../repo/task';
5
+ import * as factory from '../../factory';
6
+ export declare function onOrderUpdated(params: {
7
+ additionalProperty?: factory.propertyValue.IPropertyValue<string>[];
8
+ name?: string;
9
+ orderNumber: string;
10
+ project: {
11
+ id: string;
12
+ };
13
+ }): (repos: {
14
+ task: TaskRepo;
15
+ }) => Promise<void>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.onOrderUpdated = void 0;
13
+ const factory = require("../../factory");
14
+ const factory_1 = require("./onOrderStatusChanged/factory");
15
+ function onOrderUpdated(params) {
16
+ return (repos) => __awaiter(this, void 0, void 0, function* () {
17
+ let tasks = [];
18
+ tasks = (0, factory_1.createInformTasks)(Object.assign(Object.assign({ typeOf: factory.order.OrderType.Order, orderNumber: params.orderNumber, project: { id: params.project.id, typeOf: factory.organizationType.Project } }, (typeof params.name === 'string') ? { name: params.name } : undefined), (Array.isArray(params.additionalProperty)) ? { additionalProperty: params.additionalProperty } : undefined));
19
+ yield repos.task.saveMany(tasks, { emitImmediately: true });
20
+ });
21
+ }
22
+ exports.onOrderUpdated = onOrderUpdated;
@@ -36,6 +36,7 @@ declare function placeOrder(params: {
36
36
  orderNumber: string;
37
37
  };
38
38
  potentialActions?: factory.action.trade.order.IPotentialActions;
39
+ useOnOrderStatusChanged: boolean;
39
40
  }): (repos: {
40
41
  accountingReport: AccountingReportRepo;
41
42
  action: ActionRepo;
@@ -168,50 +168,67 @@ function placeOrder(params) {
168
168
  confirmationNumber: params.object.confirmationNumber,
169
169
  orderNumber: params.object.orderNumber
170
170
  })({ transaction: repos.transaction });
171
- // アクションを作成する(2022-04-11~)
172
171
  const maskedCustomer = (0, order_1.createMaskedCustomer)(order);
173
172
  const simpleOrder = {
174
- // project: order.project,
175
173
  typeOf: order.typeOf,
176
174
  seller: order.seller,
177
175
  customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id, name: maskedCustomer.name },
178
- // IOrderへ移行(2022-11-17~)
179
- // confirmationNumber: order.confirmationNumber,
180
176
  orderNumber: order.orderNumber,
181
177
  price: order.price,
182
178
  priceCurrency: order.priceCurrency,
183
179
  orderDate: order.orderDate
184
180
  };
181
+ const orderActionPurpose = {
182
+ typeOf: placeOrderTransaction.typeOf, id: placeOrderTransaction.id
183
+ };
185
184
  const orderActionAttributes = {
186
185
  agent: (typeof ((_a = params.agent) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string') ? params.agent : order.project,
187
186
  object: simpleOrder,
188
187
  potentialActions: {},
189
188
  project: order.project,
190
- purpose: { typeOf: placeOrderTransaction.typeOf, id: placeOrderTransaction.id },
189
+ purpose: orderActionPurpose,
191
190
  typeOf: factory.actionType.OrderAction
192
191
  };
193
- const action = yield repos.action.start(orderActionAttributes);
194
- try {
195
- yield repos.order.createIfNotExist(order);
196
- }
197
- catch (error) {
198
- // actionにエラー結果を追加
192
+ // 冪等性を担保(2023-05-31~)
193
+ const completedActions = yield repos.action.search({
194
+ limit: 1,
195
+ page: 1,
196
+ actionStatus: { $in: [factory.actionStatusType.CompletedActionStatus] },
197
+ typeOf: { $eq: orderActionAttributes.typeOf },
198
+ object: {
199
+ orderNumber: { $in: [orderActionAttributes.object.orderNumber] }
200
+ },
201
+ purpose: {
202
+ id: { $in: [orderActionPurpose.id] },
203
+ typeOf: { $in: [orderActionPurpose.typeOf] }
204
+ }
205
+ }, ['_id'], []);
206
+ if (completedActions.length === 0) {
207
+ const action = yield repos.action.start(orderActionAttributes);
199
208
  try {
200
- const actionError = Object.assign(Object.assign({}, error), { message: error.message, name: error.name });
201
- yield repos.action.giveUp({ typeOf: orderActionAttributes.typeOf, id: action.id, error: actionError });
209
+ yield repos.order.createIfNotExist(order);
202
210
  }
203
- catch (__) {
204
- // 失敗したら仕方ない
211
+ catch (error) {
212
+ // actionにエラー結果を追加
213
+ try {
214
+ const actionError = Object.assign(Object.assign({}, error), { message: error.message, name: error.name });
215
+ yield repos.action.giveUp({ typeOf: orderActionAttributes.typeOf, id: action.id, error: actionError });
216
+ }
217
+ catch (__) {
218
+ // 失敗したら仕方ない
219
+ }
220
+ throw error;
205
221
  }
206
- throw error;
222
+ yield repos.action.complete({ typeOf: orderActionAttributes.typeOf, id: action.id, result: {} });
223
+ }
224
+ if (params.useOnOrderStatusChanged || params.useOnOrderStatusChanged === undefined) {
225
+ // 経理レポートを保管
226
+ yield (0, createAccountingReportIfNotExist_1.createAccountingReportIfNotExist)(order)({ accountingReport: repos.accountingReport });
227
+ yield (0, onOrderStatusChanged_1.onOrderStatusChanged)({ order })({
228
+ registerActionInProgress: repos.registerActionInProgress,
229
+ task: repos.task
230
+ });
207
231
  }
208
- yield repos.action.complete({ typeOf: orderActionAttributes.typeOf, id: action.id, result: {} });
209
- // 経理レポートを保管
210
- yield (0, createAccountingReportIfNotExist_1.createAccountingReportIfNotExist)(order)({ accountingReport: repos.accountingReport });
211
- yield (0, onOrderStatusChanged_1.onOrderStatusChanged)({ order })({
212
- registerActionInProgress: repos.registerActionInProgress,
213
- task: repos.task
214
- });
215
232
  // 潜在アクション
216
233
  yield onPlaceOrder({
217
234
  object: order,
@@ -269,6 +286,6 @@ function onPlaceOrder(params) {
269
286
  }
270
287
  }
271
288
  // タスク保管
272
- yield repos.task.saveMany(taskAttributes);
289
+ yield repos.task.saveMany(taskAttributes, { emitImmediately: true });
273
290
  });
274
291
  }
@@ -15,6 +15,7 @@ declare function returnOrder(params: {
15
15
  id: string;
16
16
  };
17
17
  potentialActions?: factory.action.transfer.returnAction.order.IPotentialActions;
18
+ useOnOrderStatusChanged: boolean;
18
19
  }): (repos: {
19
20
  action: ActionRepo;
20
21
  order: OrderRepo;
@@ -42,12 +42,9 @@ function returnOrder(params) {
42
42
  throw new factory.errors.NotFound(factory.transactionType.ReturnOrder);
43
43
  }
44
44
  const simpleOrder = {
45
- // project: order.project,
46
45
  typeOf: order.typeOf,
47
46
  seller: order.seller,
48
47
  customer: (0, order_1.createMaskedCustomer)(order),
49
- // IOrderへ移行(2022-11-17~)
50
- // confirmationNumber: order.confirmationNumber,
51
48
  orderNumber: order.orderNumber,
52
49
  price: order.price,
53
50
  priceCurrency: order.priceCurrency,
@@ -80,10 +77,12 @@ function returnOrder(params) {
80
77
  }
81
78
  const result = returnedOwnershipInfos;
82
79
  yield repos.action.complete({ typeOf: action.typeOf, id: action.id, result: result });
83
- yield (0, onOrderStatusChanged_1.onOrderStatusChanged)({ order, returnOrderTransaction })({
84
- registerActionInProgress: repos.registerServiceInProgress,
85
- task: repos.task
86
- });
80
+ if (params.useOnOrderStatusChanged || params.useOnOrderStatusChanged === undefined) {
81
+ yield (0, onOrderStatusChanged_1.onOrderStatusChanged)({ order, returnOrderTransaction })({
82
+ registerActionInProgress: repos.registerServiceInProgress,
83
+ task: repos.task
84
+ });
85
+ }
87
86
  // 潜在アクション
88
87
  yield onReturn(returnOrderActionAttributes)({ task: repos.task });
89
88
  });
@@ -204,10 +203,6 @@ function onReturn(returnActionAttributes) {
204
203
  }
205
204
  }
206
205
  // タスク保管
207
- // saveManyに変更(2023-02-01~)
208
- yield repos.task.saveMany(taskAttributes);
209
- // await Promise.all(taskAttributes.map(async (taskAttribute) => {
210
- // return repos.task.save(taskAttribute);
211
- // }));
206
+ yield repos.task.saveMany(taskAttributes, { emitImmediately: true });
212
207
  });
213
208
  }