@chevre/domain 21.2.0-alpha.99 → 21.2.0

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 (162) hide show
  1. package/example/src/chevre/aggregateEventReservation.ts +1 -1
  2. package/example/src/chevre/aggregateSellerPaymentAccepted.ts +27 -0
  3. package/example/src/chevre/aggregation/aggregateSystem.ts +53 -22
  4. package/example/src/chevre/countDelayedTasks.ts +7 -2
  5. package/example/src/chevre/createManyEventsIfNotExist.ts +199 -46
  6. package/example/src/chevre/findScreeningRoomsByBranchCode.ts +4 -3
  7. package/example/src/chevre/giveUpStartDatePassedCertainPeriod.ts +56 -0
  8. package/example/src/chevre/lockStockHolder.ts +5 -2
  9. package/example/src/chevre/migrateCategoryCodeAdditionalProperties.ts +116 -0
  10. package/example/src/chevre/migrateScreeningEventSeriesVersion.ts +79 -0
  11. package/example/src/chevre/processRegisterMembership.ts +8 -4
  12. package/example/src/chevre/processRegisterPaymentCard.ts +8 -4
  13. package/example/src/chevre/processReserve.ts +1 -1
  14. package/example/src/chevre/searchAbortedTasks.ts +4 -6
  15. package/example/src/chevre/searchEventSeats.ts +5 -2
  16. package/example/src/chevre/searchHoldReservations.ts +38 -0
  17. package/example/src/chevre/searchPermissions.ts +54 -0
  18. package/example/src/chevre/searchScreeningRooms.ts +35 -0
  19. package/example/src/chevre/sendEmailMessage.ts +1 -2
  20. package/example/src/chevre/syncScreeningRooms.ts +22 -0
  21. package/example/src/chevre/syncScreeningRoomsAll.ts +44 -0
  22. package/example/src/chevre/unsetContainsInPlaceFromMovieTheater.ts +41 -0
  23. package/lib/chevre/factory/order.d.ts +4 -1
  24. package/lib/chevre/factory/order.js +19 -6
  25. package/lib/chevre/repo/account.js +3 -2
  26. package/lib/chevre/repo/accountTransaction.js +2 -1
  27. package/lib/chevre/repo/accountingReport.d.ts +1 -3
  28. package/lib/chevre/repo/action.d.ts +50 -1
  29. package/lib/chevre/repo/action.js +53 -2
  30. package/lib/chevre/repo/additionalProperty.js +2 -1
  31. package/lib/chevre/repo/aggregation.d.ts +3 -0
  32. package/lib/chevre/repo/aggregation.js +3 -0
  33. package/lib/chevre/repo/assetTransaction.js +6 -5
  34. package/lib/chevre/repo/categoryCode.d.ts +1 -1
  35. package/lib/chevre/repo/categoryCode.js +37 -25
  36. package/lib/chevre/repo/code.js +3 -2
  37. package/lib/chevre/repo/comment.js +2 -1
  38. package/lib/chevre/repo/creativeWork.d.ts +1 -1
  39. package/lib/chevre/repo/creativeWork.js +35 -12
  40. package/lib/chevre/repo/customer.js +2 -1
  41. package/lib/chevre/repo/emailMessage.js +2 -1
  42. package/lib/chevre/repo/event.d.ts +30 -2
  43. package/lib/chevre/repo/event.js +87 -36
  44. package/lib/chevre/repo/member.d.ts +14 -0
  45. package/lib/chevre/repo/member.js +31 -3
  46. package/lib/chevre/repo/merchantReturnPolicy.js +2 -1
  47. package/lib/chevre/repo/mongoose/schemas/assetTransaction.d.ts +3 -3
  48. package/lib/chevre/repo/mongoose/schemas/holdReservation.d.ts +75 -0
  49. package/lib/chevre/repo/mongoose/schemas/holdReservation.js +93 -0
  50. package/lib/chevre/repo/mongoose/schemas/offer.d.ts +3 -3
  51. package/lib/chevre/repo/mongoose/schemas/order.d.ts +21 -21
  52. package/lib/chevre/repo/mongoose/schemas/place.d.ts +6 -0
  53. package/lib/chevre/repo/mongoose/schemas/place.js +16 -1
  54. package/lib/chevre/repo/mongoose/schemas/product.js +6 -0
  55. package/lib/chevre/repo/mongoose/schemas/reservation.d.ts +9 -9
  56. package/lib/chevre/repo/mongoose/schemas/transaction.d.ts +3 -3
  57. package/lib/chevre/repo/offer.js +3 -2
  58. package/lib/chevre/repo/offerCatalog.js +0 -27
  59. package/lib/chevre/repo/offerItemCondition.js +2 -1
  60. package/lib/chevre/repo/order.js +8 -7
  61. package/lib/chevre/repo/ownershipInfo.js +2 -7
  62. package/lib/chevre/repo/paymentServiceProvider.d.ts +65 -0
  63. package/lib/chevre/repo/paymentServiceProvider.js +156 -0
  64. package/lib/chevre/repo/place.d.ts +203 -27
  65. package/lib/chevre/repo/place.js +1726 -694
  66. package/lib/chevre/repo/priceSpecification.js +3 -2
  67. package/lib/chevre/repo/product.d.ts +5 -3
  68. package/lib/chevre/repo/product.js +92 -5
  69. package/lib/chevre/repo/project.js +2 -1
  70. package/lib/chevre/repo/reservation.d.ts +9 -1
  71. package/lib/chevre/repo/reservation.js +29 -20
  72. package/lib/chevre/repo/role.d.ts +7 -0
  73. package/lib/chevre/repo/role.js +39 -2
  74. package/lib/chevre/repo/seller.d.ts +21 -1
  75. package/lib/chevre/repo/seller.js +59 -4
  76. package/lib/chevre/repo/serviceOutput.js +2 -1
  77. package/lib/chevre/repo/stockHolder.d.ts +143 -7
  78. package/lib/chevre/repo/stockHolder.js +622 -104
  79. package/lib/chevre/repo/task.d.ts +12 -1
  80. package/lib/chevre/repo/task.js +17 -7
  81. package/lib/chevre/repo/transaction.js +6 -5
  82. package/lib/chevre/repo/trip.js +2 -1
  83. package/lib/chevre/repository.d.ts +6 -0
  84. package/lib/chevre/repository.js +8 -1
  85. package/lib/chevre/service/aggregation/event/aggregateScreeningEvent.js +18 -8
  86. package/lib/chevre/service/aggregation/event/aggregateUseActionsOnEvent.js +19 -8
  87. package/lib/chevre/service/aggregation/system.d.ts +43 -1
  88. package/lib/chevre/service/aggregation/system.js +112 -2
  89. package/lib/chevre/service/assetTransaction/moneyTransfer.js +1 -1
  90. package/lib/chevre/service/assetTransaction/pay/account/validation.js +1 -1
  91. package/lib/chevre/service/assetTransaction/pay.js +2 -2
  92. package/lib/chevre/service/assetTransaction/refund.js +1 -1
  93. package/lib/chevre/service/assetTransaction/reserve.js +10 -3
  94. package/lib/chevre/service/event.d.ts +3 -0
  95. package/lib/chevre/service/event.js +52 -21
  96. package/lib/chevre/service/iam.d.ts +6 -2
  97. package/lib/chevre/service/iam.js +23 -9
  98. package/lib/chevre/service/offer/event/factory.js +22 -13
  99. package/lib/chevre/service/offer/event/importFromCOA.js +2 -2
  100. package/lib/chevre/service/offer/eventServiceByCOA/factory.js +15 -8
  101. package/lib/chevre/service/offer/eventServiceByCOA.js +7 -9
  102. package/lib/chevre/service/offer/product/factory.js +13 -6
  103. package/lib/chevre/service/offer/product.js +2 -2
  104. package/lib/chevre/service/offer.d.ts +16 -8
  105. package/lib/chevre/service/offer.js +71 -8
  106. package/lib/chevre/service/order/createAccountingReportIfNotExist.js +31 -17
  107. package/lib/chevre/service/order/onOrderStatusChanged/factory.js +1 -1
  108. package/lib/chevre/service/order/onOrderStatusChanged.js +2 -2
  109. package/lib/chevre/service/order/placeOrder.js +4 -4
  110. package/lib/chevre/service/order/returnOrder.js +1 -1
  111. package/lib/chevre/service/order/sendOrder.js +3 -3
  112. package/lib/chevre/service/payment/any/onPaymentStatusChanged.js +4 -6
  113. package/lib/chevre/service/payment/any/onRefund.js +46 -42
  114. package/lib/chevre/service/payment/creditCard.js +2 -2
  115. package/lib/chevre/service/payment/movieTicket/checkByIdentifier.d.ts +1 -1
  116. package/lib/chevre/service/payment/movieTicket/factory.d.ts +1 -1
  117. package/lib/chevre/service/payment/movieTicket/getCredentials.d.ts +1 -1
  118. package/lib/chevre/service/payment/movieTicket/getCredentials.js +1 -1
  119. package/lib/chevre/service/payment/movieTicket/validation.js +16 -9
  120. package/lib/chevre/service/payment/movieTicket.js +2 -2
  121. package/lib/chevre/service/reserve/cancelReservation.js +15 -3
  122. package/lib/chevre/service/reserve/confirmReservation.js +19 -11
  123. package/lib/chevre/service/task/aggregateScreeningEvent.js +1 -1
  124. package/lib/chevre/service/task/cancelPendingReservation.js +1 -1
  125. package/lib/chevre/service/task/cancelReservation.js +1 -1
  126. package/lib/chevre/service/task/deleteTransaction.js +2 -0
  127. package/lib/chevre/service/task/onEventChanged.d.ts +7 -0
  128. package/lib/chevre/service/task/onEventChanged.js +29 -0
  129. package/lib/chevre/service/task/onResourceUpdated.d.ts +7 -0
  130. package/lib/chevre/service/task/onResourceUpdated.js +396 -0
  131. package/lib/chevre/service/task/syncScreeningRooms.d.ts +7 -0
  132. package/lib/chevre/service/task/syncScreeningRooms.js +24 -0
  133. package/lib/chevre/service/task/voidReserveTransaction.js +1 -1
  134. package/lib/chevre/service/transaction/deleteTransaction.d.ts +2 -0
  135. package/lib/chevre/service/transaction/deleteTransaction.js +129 -1
  136. package/lib/chevre/service/transaction/moneyTransfer/exportTasks/factory.js +1 -0
  137. package/lib/chevre/service/transaction/moneyTransfer/factory.d.ts +1 -1
  138. package/lib/chevre/service/transaction/moneyTransfer.js +1 -1
  139. package/lib/chevre/service/transaction/orderProgramMembership/findCreditCard.js +1 -1
  140. package/lib/chevre/service/transaction/orderProgramMembership/findPaymentCardPermit.js +1 -1
  141. package/lib/chevre/service/transaction/orderProgramMembership.js +1 -1
  142. package/lib/chevre/service/transaction/placeOrder/exportTasks/factory.js +1 -0
  143. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/givePointAward.js +1 -1
  144. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/moneyTransfer.js +1 -1
  145. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.js +1 -1
  146. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/sendEmailMessage.js +4 -4
  147. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions.js +3 -4
  148. package/lib/chevre/service/transaction/placeOrderInProgress/result/acceptedOffers.js +8 -12
  149. package/lib/chevre/service/transaction/placeOrderInProgress.js +6 -4
  150. package/lib/chevre/service/transaction/returnOrder/exportTasks/factory.js +1 -0
  151. package/lib/chevre/service/transaction/returnOrder/potentialActions/returnMoneyTransfer.js +2 -2
  152. package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPaymentMethod.js +5 -5
  153. package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPointAward.js +2 -2
  154. package/lib/chevre/service/transaction/returnOrder/potentialActions/sendEmailMessage.js +3 -3
  155. package/lib/chevre/service/transaction/returnOrder/potentialActions.js +1 -1
  156. package/lib/chevre/service/transaction/returnOrder.js +3 -1
  157. package/lib/chevre/settings.d.ts +11 -0
  158. package/lib/chevre/settings.js +44 -2
  159. package/package.json +3 -3
  160. package/example/src/chevre/eventCatalog2eventService.ts +0 -123
  161. package/example/src/chevre/migrateOrderAdditionalProperties.ts +0 -85
  162. package/example/src/chevre/migrateStockHolderKeys.ts +0 -89
@@ -12,17 +12,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.createAccountingReportIfNotExist = void 0;
13
13
  const moment = require("moment-timezone");
14
14
  const factory = require("../../factory");
15
- const order_1 = require("../../factory/order");
15
+ // import { createMaskedCustomer } from '../../factory/order';
16
16
  function createAccountingReportIfNotExist(params) {
17
17
  return (repos) => __awaiter(this, void 0, void 0, function* () {
18
18
  const order4report = createOrder4report(params);
19
- const accountingReport = createAccountingReport(order4report);
19
+ const accountingReport = createAccountingReport({
20
+ mainEntity: order4report,
21
+ project: { id: params.project.id }
22
+ });
20
23
  // 経理レポートを保管
21
24
  yield repos.accountingReport.createIfNotExist(accountingReport);
22
25
  });
23
26
  }
24
27
  exports.createAccountingReportIfNotExist = createAccountingReportIfNotExist;
28
+ // 最適化(2023-06-30~)
25
29
  function createOrder4report(params) {
30
+ var _a;
26
31
  const numItems = (Array.isArray(params.acceptedOffers)) ? params.acceptedOffers.length : 0;
27
32
  // 必要な属性についてDate型に変換(でないと検索クエリを効率的に使えない)
28
33
  const acceptedOffers = (Array.isArray(params.acceptedOffers))
@@ -53,26 +58,35 @@ function createOrder4report(params) {
53
58
  }
54
59
  })
55
60
  : [];
56
- return Object.assign(Object.assign(Object.assign({}, params), {
57
- // mask
58
- customer: Object.assign(Object.assign({}, (0, order_1.createMaskedCustomer)(params)), { additionalProperty: (Array.isArray(params.customer.additionalProperty))
59
- ? params.customer.additionalProperty
60
- : [], identifier: (Array.isArray(params.customer.identifier))
61
- ? params.customer.identifier
62
- : [] }), orderDate: moment(params.orderDate)
61
+ const customer = {
62
+ // ...createMaskedCustomer(params),
63
+ id: params.customer.id,
64
+ typeOf: params.customer.typeOf,
65
+ additionalProperty: (Array.isArray(params.customer.additionalProperty))
66
+ ? params.customer.additionalProperty
67
+ : [],
68
+ identifier: (Array.isArray(params.customer.identifier))
69
+ ? params.customer.identifier
70
+ : []
71
+ };
72
+ return Object.assign({
73
+ // ...params,
74
+ confirmationNumber: params.confirmationNumber, id: params.id, orderNumber: params.orderNumber, orderedItem: params.orderedItem, paymentMethods: params.paymentMethods, price: params.price, priceCurrency: params.priceCurrency, seller: params.seller, typeOf: params.typeOf, customer, orderDate: moment(params.orderDate)
63
75
  .toDate(), acceptedOffers,
64
- numItems }), (params.dateReturned !== null && params.dateReturned !== undefined)
65
- ? {
66
- dateReturned: moment(params.dateReturned)
67
- .toDate()
68
- }
69
- : undefined);
76
+ numItems }, (typeof ((_a = params.broker) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string') ? { broker: params.broker } : undefined
77
+ // ...(params.dateReturned !== null && params.dateReturned !== undefined)
78
+ // ? {
79
+ // dateReturned: moment(params.dateReturned)
80
+ // .toDate()
81
+ // }
82
+ // : undefined
83
+ );
70
84
  }
71
85
  function createAccountingReport(params) {
72
86
  return {
73
- project: params.project,
87
+ project: { id: params.project.id, typeOf: factory.organizationType.Project },
74
88
  typeOf: 'Report',
75
89
  hasPart: [],
76
- mainEntity: params
90
+ mainEntity: params.mainEntity
77
91
  };
78
92
  }
@@ -117,7 +117,7 @@ function creteOrder4inform(order) {
117
117
  // whitelistで作成する(2022-07-19~)
118
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
119
  // mask
120
- customer: Object.assign(Object.assign({}, (0, order_1.createMaskedCustomer)(order)), { additionalProperty: (Array.isArray(order.customer.additionalProperty)) ? order.customer.additionalProperty : [],
120
+ customer: Object.assign(Object.assign({}, (0, order_1.createMaskedCustomer)(order, { noProfile: false })), { additionalProperty: (Array.isArray(order.customer.additionalProperty)) ? order.customer.additionalProperty : [],
121
121
  // identifierは必要
122
122
  // 予約後を隠蔽(2022-12-24~)
123
123
  identifier: (Array.isArray(order.customer.identifier))
@@ -24,11 +24,11 @@ const TOKEN_EXPIRES_IN = 604800;
24
24
  function onOrderStatusChanged(params) {
25
25
  return (repos) => __awaiter(this, void 0, void 0, function* () {
26
26
  let tasks = [];
27
- const maskedCustomer = (0, order_1.createMaskedCustomer)(params.order);
27
+ const maskedCustomer = (0, order_1.createMaskedCustomer)(params.order, { noProfile: true });
28
28
  const simpleOrder = {
29
29
  typeOf: params.order.typeOf,
30
30
  seller: params.order.seller,
31
- customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id, name: maskedCustomer.name },
31
+ customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id },
32
32
  // IOrderへ移行(2022-11-17~)
33
33
  // confirmationNumber: params.order.confirmationNumber,
34
34
  orderNumber: params.order.orderNumber,
@@ -105,12 +105,12 @@ function placeOrderWithoutTransaction(params) {
105
105
  // orderNumber: params.object.orderNumber
106
106
  // })({ transaction: repos.transaction });
107
107
  // アクションを作成する(2022-04-11~)
108
- const maskedCustomer = (0, order_1.createMaskedCustomer)(order);
108
+ const maskedCustomer = (0, order_1.createMaskedCustomer)(order, { noProfile: true });
109
109
  const simpleOrder = {
110
110
  // project: order.project,
111
111
  typeOf: order.typeOf,
112
112
  seller: order.seller,
113
- customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id, name: maskedCustomer.name },
113
+ customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id },
114
114
  // IOrderへ移行(2022-11-17~)
115
115
  // confirmationNumber: order.confirmationNumber,
116
116
  orderNumber: order.orderNumber,
@@ -168,11 +168,11 @@ function placeOrder(params) {
168
168
  confirmationNumber: params.object.confirmationNumber,
169
169
  orderNumber: params.object.orderNumber
170
170
  })({ transaction: repos.transaction });
171
- const maskedCustomer = (0, order_1.createMaskedCustomer)(order);
171
+ const maskedCustomer = (0, order_1.createMaskedCustomer)(order, { noProfile: true });
172
172
  const simpleOrder = {
173
173
  typeOf: order.typeOf,
174
174
  seller: order.seller,
175
- customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id, name: maskedCustomer.name },
175
+ customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id },
176
176
  orderNumber: order.orderNumber,
177
177
  price: order.price,
178
178
  priceCurrency: order.priceCurrency,
@@ -44,7 +44,7 @@ function returnOrder(params) {
44
44
  const simpleOrder = {
45
45
  typeOf: order.typeOf,
46
46
  seller: order.seller,
47
- customer: (0, order_1.createMaskedCustomer)(order),
47
+ customer: (0, order_1.createMaskedCustomer)(order, { noProfile: true }),
48
48
  orderNumber: order.orderNumber,
49
49
  price: order.price,
50
50
  priceCurrency: order.priceCurrency,
@@ -40,11 +40,11 @@ function sendOrder(params) {
40
40
  if (order.confirmationNumber !== confirmationNumber) {
41
41
  throw new factory.errors.NotFound('Order');
42
42
  }
43
- const maskedCustomer = (0, order_1.createMaskedCustomer)(order);
43
+ const maskedCustomer = (0, order_1.createMaskedCustomer)(order, { noProfile: true });
44
44
  const simpleOrder = {
45
45
  typeOf: order.typeOf,
46
46
  seller: order.seller,
47
- customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id, name: maskedCustomer.name },
47
+ customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id },
48
48
  orderNumber: order.orderNumber,
49
49
  price: order.price,
50
50
  priceCurrency: order.priceCurrency,
@@ -57,7 +57,7 @@ function sendOrder(params) {
57
57
  // sendEmailMessage: undefined
58
58
  },
59
59
  project: order.project,
60
- recipient: order.customer,
60
+ recipient: { id: order.customer.id, typeOf: order.customer.typeOf },
61
61
  typeOf: factory.actionType.SendAction
62
62
  };
63
63
  const action = yield repos.action.start(sendOrderActionAttributes);
@@ -56,12 +56,11 @@ function optimizeAction4report(action) {
56
56
  endDate: action.endDate,
57
57
  id: action.id,
58
58
  object: optimizedPayActionObject,
59
- project: action.project,
59
+ // 最適化(2023-06-30~)
60
+ // project: action.project,
60
61
  purpose: action.purpose,
61
62
  startDate: action.startDate,
62
63
  typeOf: action.typeOf
63
- // 不要なので廃止(2022-05-19~)
64
- // ...(maskedRecipient !== undefined) ? { recipient: <factory.action.trade.pay.IRecipient>maskedRecipient } : undefined
65
64
  };
66
65
  optimizedAction = optimizedPayAction;
67
66
  break;
@@ -78,12 +77,11 @@ function optimizeAction4report(action) {
78
77
  endDate: action.endDate,
79
78
  id: action.id,
80
79
  object: optimizedRefundActionObject,
81
- project: action.project,
80
+ // 最適化(2023-06-30~)
81
+ // project: action.project,
82
82
  purpose: action.purpose,
83
83
  startDate: action.startDate,
84
84
  typeOf: action.typeOf
85
- // 不要なので廃止(2022-05-19~)
86
- // ...(maskedRecipient !== undefined) ? { recipient: maskedRecipient } : undefined
87
85
  };
88
86
  optimizedAction = optimizedRefundAction;
89
87
  break;
@@ -21,7 +21,7 @@ const onPaymentStatusChanged_1 = require("./onPaymentStatusChanged");
21
21
  */
22
22
  function onRefund(refundAction) {
23
23
  return (repos) => __awaiter(this, void 0, void 0, function* () {
24
- var _a;
24
+ var _a, _b;
25
25
  const aciton4inform = (0, factory_1.optimizeAction4inform)(refundAction);
26
26
  const potentialActions = refundAction.potentialActions;
27
27
  const now = new Date();
@@ -33,49 +33,53 @@ function onRefund(refundAction) {
33
33
  }
34
34
  const informPayment = potentialActions === null || potentialActions === void 0 ? void 0 : potentialActions.informPayment;
35
35
  // 手数料決済があれば処理
36
- const refundFee = (_a = refundAction.object[0]) === null || _a === void 0 ? void 0 : _a.refundFee;
37
- if (typeof refundFee === 'number' && refundFee > 0) {
38
- const payObject = refundAction.object.map((o) => {
39
- return {
40
- typeOf: o.typeOf,
41
- id: o.id,
42
- paymentMethod: {
43
- accountId: o.paymentMethod.accountId,
44
- additionalProperty: o.paymentMethod.additionalProperty,
45
- name: o.paymentMethod.name,
46
- paymentMethodId: o.paymentMethod.paymentMethodId,
47
- totalPaymentDue: {
48
- typeOf: 'MonetaryAmount',
49
- currency: factory.priceCurrency.JPY,
50
- value: refundFee
51
- },
52
- typeOf: o.paymentMethod.typeOf
36
+ // CreditCardIFのみ(2023-06-29~)
37
+ const paymentServiceType = (_a = refundAction.object[0]) === null || _a === void 0 ? void 0 : _a.typeOf;
38
+ if (paymentServiceType === factory.service.paymentService.PaymentServiceType.CreditCard) {
39
+ const refundFee = (_b = refundAction.object[0]) === null || _b === void 0 ? void 0 : _b.refundFee;
40
+ if (typeof refundFee === 'number' && refundFee > 0) {
41
+ const payObject = refundAction.object.map((o) => {
42
+ return {
43
+ typeOf: o.typeOf,
44
+ id: o.id,
45
+ paymentMethod: {
46
+ accountId: o.paymentMethod.accountId,
47
+ additionalProperty: o.paymentMethod.additionalProperty,
48
+ name: o.paymentMethod.name,
49
+ paymentMethodId: o.paymentMethod.paymentMethodId,
50
+ totalPaymentDue: {
51
+ typeOf: 'MonetaryAmount',
52
+ currency: factory.priceCurrency.JPY,
53
+ value: refundFee
54
+ },
55
+ typeOf: o.paymentMethod.typeOf
56
+ }
57
+ };
58
+ });
59
+ const payAction = {
60
+ project: refundAction.project,
61
+ typeOf: factory.actionType.PayAction,
62
+ object: payObject,
63
+ agent: refundAction.recipient,
64
+ recipient: refundAction.agent,
65
+ purpose: refundAction.purpose,
66
+ potentialActions: {
67
+ add2report: true,
68
+ informPayment: (Array.isArray(informPayment)) ? informPayment : []
53
69
  }
54
70
  };
55
- });
56
- const payAction = {
57
- project: refundAction.project,
58
- typeOf: factory.actionType.PayAction,
59
- object: payObject,
60
- agent: refundAction.recipient,
61
- recipient: refundAction.agent,
62
- purpose: refundAction.purpose,
63
- potentialActions: {
64
- add2report: true,
65
- informPayment: (Array.isArray(informPayment)) ? informPayment : []
66
- }
67
- };
68
- const payTask = {
69
- project: refundAction.project,
70
- name: factory.taskName.Pay,
71
- status: factory.taskStatus.Ready,
72
- runsAt: now,
73
- remainingNumberOfTries: 10,
74
- numberOfTried: 0,
75
- executionResults: [],
76
- data: payAction
77
- };
78
- taskAttributes.push(payTask);
71
+ const payTask = {
72
+ project: refundAction.project,
73
+ name: factory.taskName.Pay,
74
+ status: factory.taskStatus.Ready,
75
+ runsAt: now,
76
+ remainingNumberOfTries: 10,
77
+ numberOfTried: 0,
78
+ executionResults: [],
79
+ data: payAction
80
+ };
81
+ taskAttributes.push(payTask);
82
+ }
79
83
  }
80
84
  if (Array.isArray(informPayment)) {
81
85
  taskAttributes.push(...informPayment.map((a) => {
@@ -521,7 +521,7 @@ function processChangeTransaction(params) {
521
521
  function getGMOInfoFromSeller(params) {
522
522
  return (repos) => __awaiter(this, void 0, void 0, function* () {
523
523
  var _a, _b, _c, _d;
524
- const seller = yield repos.seller.findById({ id: String(params.seller.id) });
524
+ const seller = yield repos.seller.findById({ id: String(params.seller.id) }, ['paymentAccepted', 'project'], []);
525
525
  const paymentAccepted = (_a = seller.paymentAccepted) === null || _a === void 0 ? void 0 : _a.some((a) => a.paymentMethodType === params.paymentMethodType);
526
526
  if (paymentAccepted !== true) {
527
527
  throw new factory.errors.Argument('transaction', 'payment not accepted');
@@ -534,7 +534,7 @@ function getGMOInfoFromSeller(params) {
534
534
  typeOf: { $eq: factory.service.paymentService.PaymentServiceType.CreditCard },
535
535
  // serviceType: { codeValue: { $eq: params.paymentMethodType } },
536
536
  id: { $eq: params.paymentServiceId }
537
- });
537
+ }, [], []);
538
538
  const paymentService = paymentServices.shift();
539
539
  if (paymentService === undefined) {
540
540
  throw new factory.errors.NotFound('PaymentService');
@@ -8,7 +8,7 @@ interface ICheckResult {
8
8
  }
9
9
  interface ICheckByIdentifierParams {
10
10
  movieTickets: factory.action.check.paymentMethod.movieTicket.IMovieTicket[];
11
- seller: factory.seller.ISeller;
11
+ seller: Pick<factory.seller.ISeller, 'id' | 'project'>;
12
12
  screeningEvent: IMinimizedIndividualEvent<factory.eventType.ScreeningEvent>;
13
13
  paymentServiceId: string;
14
14
  }
@@ -6,7 +6,7 @@ export declare function createSeatInfoSyncIn(params: {
6
6
  movieTickets: factory.action.trade.pay.IMovieTicket[];
7
7
  event: factory.event.screeningEvent.IEvent;
8
8
  purpose: factory.action.trade.pay.IPurpose;
9
- seller: factory.seller.ISeller;
9
+ seller: Pick<factory.seller.ISeller, 'paymentAccepted'>;
10
10
  credentials: {
11
11
  kgygishCd: string;
12
12
  stCd: string;
@@ -2,7 +2,7 @@ import { MongoRepository as ProductRepo } from '../../../repo/product';
2
2
  import * as factory from '../../../factory';
3
3
  declare function getCredentials(params: {
4
4
  paymentMethodType: string;
5
- seller: factory.seller.ISeller;
5
+ seller: Pick<factory.seller.ISeller, 'id' | 'project'>;
6
6
  paymentServiceId: string;
7
7
  }): (repos: {
8
8
  product: ProductRepo;
@@ -22,7 +22,7 @@ function getCredentials(params) {
22
22
  typeOf: { $eq: factory.service.paymentService.PaymentServiceType.MovieTicket },
23
23
  // serviceType: { codeValue: { $eq: params.paymentMethodType } },
24
24
  id: { $eq: params.paymentServiceId }
25
- });
25
+ }, [], []);
26
26
  const paymentService = paymentServices.shift();
27
27
  if (paymentService === undefined) {
28
28
  throw new factory.errors.NotFound('PaymentService');
@@ -20,19 +20,24 @@ function validateMovieTicket(params, paymentServiceId, useCheckMovieTicketBefore
20
20
  var _a, _b, _c, _d;
21
21
  const movieTickets = (_a = params.object.paymentMethod) === null || _a === void 0 ? void 0 : _a.movieTickets;
22
22
  if (!Array.isArray(movieTickets)) {
23
- throw new factory.errors.Argument('object.paymentMethod.movieTickets must be an array');
23
+ throw new factory.errors.Argument('movieTickets', 'object.paymentMethod.movieTickets must be an array');
24
24
  }
25
25
  // イベント1つのみ許可
26
- const eventIds = [...new Set(movieTickets === null || movieTickets === void 0 ? void 0 : movieTickets.map((t) => t.serviceOutput.reservationFor.id))];
26
+ const eventIds = [...new Set(movieTickets.map((t) => t.serviceOutput.reservationFor.id))];
27
27
  if (eventIds.length !== 1) {
28
28
  throw new factory.errors.Argument('movieTickets', 'Number of events must be 1');
29
29
  }
30
- // ムビチケ購入管理番号は1つのみ許可
31
- const movieTicketIdentifiers = [...new Set(movieTickets === null || movieTickets === void 0 ? void 0 : movieTickets.map((t) => t.identifier))];
30
+ // 決済カードidentifierは1つのみ許可
31
+ const movieTicketIdentifiers = [...new Set(movieTickets.map((t) => t.identifier))];
32
32
  if (movieTicketIdentifiers.length !== 1) {
33
33
  throw new factory.errors.Argument('movieTickets', 'Number of movie ticket identifiers must be 1');
34
34
  }
35
35
  const movieTicketIdentifier = movieTicketIdentifiers[0];
36
+ // 決済カードaccessCodeは1つのみ許可(2023-06-23~)
37
+ const accessCodes = [...new Set(movieTickets.map((t) => t.accessCode))];
38
+ if (accessCodes.length !== 1) {
39
+ throw new factory.errors.Argument('movieTickets', 'Number of movie ticket accessCodes must be 1');
40
+ }
36
41
  // ムビチケ系統の決済方法タイプは動的
37
42
  const paymentMethodType = (_b = params.object.paymentMethod) === null || _b === void 0 ? void 0 : _b.typeOf;
38
43
  if (typeof paymentMethodType !== 'string') {
@@ -47,7 +52,7 @@ function validateMovieTicket(params, paymentServiceId, useCheckMovieTicketBefore
47
52
  if (typeof sellerId !== 'string') {
48
53
  throw new factory.errors.ArgumentNull('recipient.id');
49
54
  }
50
- const seller = yield repos.seller.findById({ id: sellerId });
55
+ const seller = yield repos.seller.findById({ id: sellerId }, ['paymentAccepted', 'project'], []);
51
56
  const paymentAccepted = (_d = seller.paymentAccepted) === null || _d === void 0 ? void 0 : _d.some((a) => a.paymentMethodType === paymentMethodType);
52
57
  if (paymentAccepted !== true) {
53
58
  throw new factory.errors.Argument('recipient', 'payment not accepted');
@@ -71,7 +76,7 @@ function validateMovieTicket(params, paymentServiceId, useCheckMovieTicketBefore
71
76
  var _a, _b;
72
77
  const requiredMovieTicketsCountByServiceType = movieTickets.filter((t) => t.serviceType === serviceType).length;
73
78
  let availableMovieTicketsCountByServiceType = 0;
74
- const ykknInfos = (_b = (_a = checkResult.purchaseNumberAuthResult.knyknrNoInfoOut) === null || _a === void 0 ? void 0 : _a.find((knyknrNoInfoOut) => knyknrNoInfoOut.knyknrNo === movieTicketIdentifiers[0])) === null || _b === void 0 ? void 0 : _b.ykknInfo;
79
+ const ykknInfos = (_b = (_a = checkResult.purchaseNumberAuthResult.knyknrNoInfoOut) === null || _a === void 0 ? void 0 : _a.find((knyknrNoInfoOut) => knyknrNoInfoOut.knyknrNo === movieTicketIdentifier)) === null || _b === void 0 ? void 0 : _b.ykknInfo;
75
80
  const ykknInfoOfServiceType = ykknInfos === null || ykknInfos === void 0 ? void 0 : ykknInfos.find((ykknInfo) => ykknInfo.ykknshTyp === serviceType);
76
81
  const ykknKnshbtsmiNum = ykknInfoOfServiceType === null || ykknInfoOfServiceType === void 0 ? void 0 : ykknInfoOfServiceType.ykknKnshbtsmiNum;
77
82
  if (typeof ykknKnshbtsmiNum === 'string') {
@@ -97,24 +102,26 @@ function checkByIdentifierIfNotYet(params) {
97
102
  let checkResult;
98
103
  if (params.useCheckByIdentifierIfNotYet === true) {
99
104
  // すでにCheckActionが存在すれば認証しない(2023-06-06~)
100
- debug('searching alreadyCheckedActions...movieTicketIdentifier:', params.movieTicketIdentifier, 'screeningEvent.id:', params.screeningEvent.id, new Date());
105
+ debug('searching alreadyCheckedActions...movieTicketIdentifier:', params.movieTicketIdentifier, 'screeningEvent.id:', params.screeningEvent.id);
101
106
  const alreadyCheckedAction = yield repos.action.search({
102
107
  limit: 1,
103
108
  page: 1,
109
+ sort: { startDate: factory.sortType.Descending },
104
110
  typeOf: { $eq: factory.actionType.CheckAction },
105
111
  actionStatus: { $in: [factory.actionStatusType.CompletedActionStatus] },
106
112
  object: {
107
113
  typeOf: { $eq: factory.service.paymentService.PaymentServiceType.MovieTicket },
114
+ id: { $eq: params.paymentServiceId },
108
115
  movieTickets: {
109
116
  identifier: { $eq: params.movieTicketIdentifier },
110
117
  serviceOutput: {
111
- reservationFor: { id: { $eq: params.screeningEvent.id } }
118
+ reservationFor: { id: { $eq: params.screeningEvent.id } } // 指定のイベントにおいて
112
119
  }
113
120
  }
114
121
  }
115
122
  }, ['result'], []);
123
+ debug('alreadyCheckedAction found', alreadyCheckedAction, 'movieTicketIdentifier:', params.movieTicketIdentifier, 'screeningEvent.id:', params.screeningEvent.id);
116
124
  checkResult = (_a = alreadyCheckedAction.shift()) === null || _a === void 0 ? void 0 : _a.result;
117
- debug('checkResult found', checkResult, 'movieTicketIdentifier:', params.movieTicketIdentifier, 'screeningEvent.id:', params.screeningEvent.id, new Date());
118
125
  }
119
126
  if (checkResult === undefined) {
120
127
  debug('checkByIdentifier processing because movieTickets not checked yet...', checkResult);
@@ -58,7 +58,7 @@ function checkMovieTicket(params) {
58
58
  id: eventIds[0]
59
59
  });
60
60
  // ショップ情報取得
61
- const seller = yield repos.seller.findById({ id: (_e = params.object[0]) === null || _e === void 0 ? void 0 : _e.seller.id });
61
+ const seller = yield repos.seller.findById({ id: (_e = params.object[0]) === null || _e === void 0 ? void 0 : _e.seller.id }, ['paymentAccepted', 'project'], []);
62
62
  const paymentAccepted = (_f = seller.paymentAccepted) === null || _f === void 0 ? void 0 : _f.some((a) => a.paymentMethodType === paymentMethodType);
63
63
  if (paymentAccepted !== true) {
64
64
  throw new factory.errors.Argument('transactionId', 'payment not accepted');
@@ -302,7 +302,7 @@ function payActionParams2seatInfoSyncIn(params) {
302
302
  // イベント取得属性最適化(2023-01-23~)
303
303
  // const event = await repos.event.findById<factory.eventType.ScreeningEvent>({ id: eventIds[0] });
304
304
  const event = yield repos.event.findMinimizedIndividualEventById({ id: eventIds[0] });
305
- const seller = yield repos.seller.findById({ id: String((_d = params.recipient) === null || _d === void 0 ? void 0 : _d.id) });
305
+ const seller = yield repos.seller.findById({ id: String((_d = params.recipient) === null || _d === void 0 ? void 0 : _d.id) }, ['paymentAccepted', 'project'], []);
306
306
  // 全購入管理番号のMovieTicketをマージ
307
307
  const movieTickets = params.object.reduce((a, b) => [...a, ...(Array.isArray(b.movieTickets)) ? b.movieTickets : []], []);
308
308
  const sellerCredentials = yield (0, getCredentials_1.getCredentials)({ paymentMethodType, seller, paymentServiceId })(repos);
@@ -98,6 +98,7 @@ function cancelPengindIfNotYet(params, now) {
98
98
  yield processUnlockSeat({
99
99
  reservation: {
100
100
  id: cancelingSubReservation.id,
101
+ project: { id: reserveTransaction.project.id },
101
102
  reservedTicket: cancelingSubReservation.reservedTicket,
102
103
  subReservation: cancelingSubReservation.subReservation,
103
104
  reservationFor: {
@@ -204,6 +205,7 @@ function cancelReservation(actionAttributesList) {
204
205
  yield processUnlockSeat({
205
206
  reservation: {
206
207
  id: cancelingSubReservation.id,
208
+ project: { id: reserveTransaction.project.id },
207
209
  reservedTicket: cancelingSubReservation.reservedTicket,
208
210
  subReservation: cancelingSubReservation.subReservation,
209
211
  reservationFor: {
@@ -255,6 +257,7 @@ function cancelReservation(actionAttributesList) {
255
257
  yield processUnlockSeat({
256
258
  reservation: {
257
259
  id: reservation.id,
260
+ project: { id: reservation.project.id },
258
261
  reservedTicket: reservation.reservedTicket,
259
262
  subReservation: reservation.subReservation,
260
263
  reservationFor: {
@@ -344,13 +347,16 @@ function processUnlockSeat(params) {
344
347
  .toDate();
345
348
  // 予約IDでロックされていれば解除
346
349
  let lockKey = {
350
+ project: reservation.project,
347
351
  eventId: reservation.reservationFor.id,
348
352
  startDate: eventStartDate,
353
+ hasTicketedSeat: false,
349
354
  offer: {
350
355
  itemOffered: { serviceOutput: { id: reservation.id } },
351
356
  seatNumber: '',
352
357
  seatSection: ''
353
- }
358
+ },
359
+ holder: params.expectedHolder
354
360
  };
355
361
  let holder = yield repos.stockHolder.getHolder(lockKey);
356
362
  if (holder === params.expectedHolder) {
@@ -360,12 +366,15 @@ function processUnlockSeat(params) {
360
366
  const ticketedSeat = reservation.reservedTicket.ticketedSeat;
361
367
  if (ticketedSeat !== undefined) {
362
368
  lockKey = {
369
+ project: reservation.project,
363
370
  eventId: reservation.reservationFor.id,
364
371
  startDate: eventStartDate,
372
+ hasTicketedSeat: true,
365
373
  offer: {
366
374
  seatNumber: ticketedSeat.seatNumber,
367
375
  seatSection: ticketedSeat.seatSection
368
- }
376
+ },
377
+ holder: params.expectedHolder
369
378
  };
370
379
  holder = yield repos.stockHolder.getHolder(lockKey);
371
380
  if (holder === params.expectedHolder) {
@@ -381,12 +390,15 @@ function processUnlockSeat(params) {
381
390
  const seatNumber4sub = (_d = (_c = subReservation.reservedTicket) === null || _c === void 0 ? void 0 : _c.ticketedSeat) === null || _d === void 0 ? void 0 : _d.seatNumber;
382
391
  if (typeof seatSection4sub === 'string' && typeof seatNumber4sub === 'string') {
383
392
  const lockKey4sub = {
393
+ project: reservation.project,
384
394
  eventId: reservation.reservationFor.id,
385
395
  startDate: eventStartDate,
396
+ hasTicketedSeat: true,
386
397
  offer: {
387
398
  seatNumber: seatNumber4sub,
388
399
  seatSection: seatSection4sub
389
- }
400
+ },
401
+ holder: params.expectedHolder
390
402
  };
391
403
  const holder4sub = yield repos.stockHolder.getHolder(lockKey4sub);
392
404
  if (holder4sub === params.expectedHolder) {
@@ -97,17 +97,25 @@ function reserveIfNotYet(params, options) {
97
97
  if (reserveTransaction.object.disablePendingReservations === true) {
98
98
  const reservationFor = reserveTransaction.object.reservationFor;
99
99
  const subReservations = reserveTransaction.object.subReservation;
100
- if (Array.isArray(subReservations)
101
- && typeof (reservationFor === null || reservationFor === void 0 ? void 0 : reservationFor.typeOf) === 'string') {
102
- yield Promise.all(subReservations.map((subReservation) => __awaiter(this, void 0, void 0, function* () {
103
- yield repos.reservation.confirmByIdIfNotExist({
104
- reservation: subReservation,
105
- reservationFor,
106
- underName,
107
- broker: reserveTransaction.object.broker,
108
- issuedThrough: reserveTransaction.object.issuedThrough
109
- });
110
- })));
100
+ if (Array.isArray(subReservations) && typeof (reservationFor === null || reservationFor === void 0 ? void 0 : reservationFor.typeOf) === 'string') {
101
+ // confirmManyに変更(2023-06-13~)
102
+ const confirmManyIfNotExistResult = yield repos.reservation.confirmManyIfNotExist({
103
+ subReservation: subReservations,
104
+ reservationFor,
105
+ underName,
106
+ broker: reserveTransaction.object.broker,
107
+ issuedThrough: reserveTransaction.object.issuedThrough
108
+ });
109
+ debug('confirmManyIfNotExistResult:', confirmManyIfNotExistResult, 'reservationNumber:', reservationPackage.reservationNumber);
110
+ // await Promise.all(subReservations.map(async (subReservation) => {
111
+ // await repos.reservation.confirmByIdIfNotExist({
112
+ // reservation: subReservation,
113
+ // reservationFor,
114
+ // underName,
115
+ // broker: reserveTransaction.object.broker,
116
+ // issuedThrough: reserveTransaction.object.issuedThrough
117
+ // });
118
+ // }));
111
119
  }
112
120
  }
113
121
  else {
@@ -32,7 +32,7 @@ function call(data) {
32
32
  }
33
33
  yield AggregationService.event.aggregateScreeningEvent(data)({
34
34
  event: new event_1.MongoRepository(settings.connection),
35
- stockHolder: new stockHolder_1.StockHolderRepository(settings.redisClient),
35
+ stockHolder: new stockHolder_1.StockHolderRepository(settings.redisClient, settings.connection),
36
36
  offer: new offer_1.MongoRepository(settings.connection),
37
37
  offerCatalog: new offerCatalog_1.MongoRepository(settings.connection),
38
38
  offerRateLimit: new offer_2.RedisRepository(settings.redisClient),
@@ -30,7 +30,7 @@ function call(data) {
30
30
  const assetTransactionRepo = new assetTransaction_1.MongoRepository(settings.connection);
31
31
  const taskRepo = new task_1.MongoRepository(settings.connection);
32
32
  const reservationRepo = new reservation_1.MongoRepository(settings.connection);
33
- const stockHolderRepo = new stockHolder_1.StockHolderRepository(settings.redisClient);
33
+ const stockHolderRepo = new stockHolder_1.StockHolderRepository(settings.redisClient, settings.connection);
34
34
  const offerRateLimitRepo = new offer_1.RedisRepository(settings.redisClient);
35
35
  // アクション数は予約番号単位で1しかありえないはず(2023-06-05~)
36
36
  if (data.actionAttributes.length !== 1) {
@@ -30,7 +30,7 @@ function call(data) {
30
30
  const reservationRepo = new reservation_1.MongoRepository(settings.connection);
31
31
  const taskRepo = new task_1.MongoRepository(settings.connection);
32
32
  const transactionRepo = new assetTransaction_1.MongoRepository(settings.connection);
33
- const stockHolderRepo = new stockHolder_1.StockHolderRepository(settings.redisClient);
33
+ const stockHolderRepo = new stockHolder_1.StockHolderRepository(settings.redisClient, settings.connection);
34
34
  const offerRateLimitRepo = new offer_1.RedisRepository(settings.redisClient);
35
35
  yield ReserveService.cancelReservation(data.actionAttributes)({
36
36
  action: actionRepo,
@@ -16,6 +16,7 @@ const assetTransaction_1 = require("../../repo/assetTransaction");
16
16
  const order_1 = require("../../repo/order");
17
17
  const ownershipInfo_1 = require("../../repo/ownershipInfo");
18
18
  const reservation_1 = require("../../repo/reservation");
19
+ const task_1 = require("../../repo/task");
19
20
  const transaction_1 = require("../../repo/transaction");
20
21
  const TransactionService = require("../transaction");
21
22
  /**
@@ -30,6 +31,7 @@ function call(data) {
30
31
  order: new order_1.MongoRepository(settings.connection),
31
32
  ownershipInfo: new ownershipInfo_1.MongoRepository(settings.connection),
32
33
  reservation: new reservation_1.MongoRepository(settings.connection),
34
+ task: new task_1.MongoRepository(settings.connection),
33
35
  transaction: new transaction_1.MongoRepository(settings.connection)
34
36
  });
35
37
  });
@@ -0,0 +1,7 @@
1
+ import * as factory from '../../factory';
2
+ import { IConnectionSettings } from '../task';
3
+ export type IOperation<T> = (settings: IConnectionSettings) => Promise<T>;
4
+ /**
5
+ * タスク実行関数
6
+ */
7
+ export declare function call(data: factory.task.onEventChanged.IData): IOperation<void>;