@chevre/domain 24.0.0-alpha.2 → 24.0.0-alpha.21

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 (177) hide show
  1. package/lib/chevre/repo/action/acceptCOAOffer.d.ts +23 -0
  2. package/lib/chevre/repo/action/acceptCOAOffer.js +64 -0
  3. package/lib/chevre/repo/action/acceptPay.d.ts +8 -0
  4. package/lib/chevre/repo/action/acceptPay.js +13 -0
  5. package/lib/chevre/repo/action/actionProcess.d.ts +115 -0
  6. package/lib/chevre/repo/action/actionProcess.js +293 -0
  7. package/lib/chevre/repo/action/authorizeOffer.d.ts +21 -0
  8. package/lib/chevre/repo/action/authorizeOffer.js +85 -0
  9. package/lib/chevre/repo/action/checkMovieTicket.d.ts +111 -0
  10. package/lib/chevre/repo/action/checkMovieTicket.js +200 -0
  11. package/lib/chevre/repo/action/checkThing.d.ts +8 -0
  12. package/lib/chevre/repo/action/checkThing.js +13 -0
  13. package/lib/chevre/repo/action.d.ts +9 -249
  14. package/lib/chevre/repo/action.js +308 -708
  15. package/lib/chevre/repo/aggregateAction.d.ts +102 -0
  16. package/lib/chevre/repo/aggregateAction.js +379 -0
  17. package/lib/chevre/repo/mongoose/schemas/transaction.js +31 -0
  18. package/lib/chevre/repo/orderInTransaction.d.ts +8 -0
  19. package/lib/chevre/repo/orderInTransaction.js +16 -2
  20. package/lib/chevre/repo/orderNumber.d.ts +3 -2
  21. package/lib/chevre/repo/orderNumber.js +23 -28
  22. package/lib/chevre/repo/transaction/moneyTransfer.d.ts +61 -0
  23. package/lib/chevre/repo/transaction/moneyTransfer.js +379 -0
  24. package/lib/chevre/repo/transaction/placeOrder.d.ts +140 -0
  25. package/lib/chevre/repo/transaction/placeOrder.js +528 -0
  26. package/lib/chevre/repo/transaction/returnOrder.d.ts +45 -0
  27. package/lib/chevre/repo/transaction/returnOrder.js +341 -0
  28. package/lib/chevre/repo/transaction.d.ts +1 -125
  29. package/lib/chevre/repo/transaction.js +726 -632
  30. package/lib/chevre/repository.d.ts +49 -0
  31. package/lib/chevre/repository.js +107 -2
  32. package/lib/chevre/service/aggregation/system.d.ts +10 -10
  33. package/lib/chevre/service/aggregation/system.js +9 -9
  34. package/lib/chevre/service/assetTransaction/pay/check.d.ts +5 -4
  35. package/lib/chevre/service/assetTransaction/pay/publishPaymentUrl.d.ts +5 -2
  36. package/lib/chevre/service/assetTransaction/pay/publishPaymentUrl.js +3 -3
  37. package/lib/chevre/service/assetTransaction/pay/start/factory.d.ts +51 -3
  38. package/lib/chevre/service/assetTransaction/pay/start/factory.js +58 -21
  39. package/lib/chevre/service/assetTransaction/pay/start/preStart/fixPaymentService.d.ts +10 -0
  40. package/lib/chevre/service/assetTransaction/pay/start/preStart/fixPaymentService.js +88 -0
  41. package/lib/chevre/service/assetTransaction/pay/start/processAuthorize.d.ts +55 -0
  42. package/lib/chevre/service/assetTransaction/pay/start/processAuthorize.js +56 -0
  43. package/lib/chevre/service/assetTransaction/pay/start/processAuthorizeMovieTicket.d.ts +3 -1
  44. package/lib/chevre/service/assetTransaction/pay/start/processAuthorizeMovieTicket.js +1 -11
  45. package/lib/chevre/service/assetTransaction/pay/start.d.ts +2 -0
  46. package/lib/chevre/service/assetTransaction/pay/start.js +8 -132
  47. package/lib/chevre/service/notification/triggerWebhook.d.ts +7 -6
  48. package/lib/chevre/service/offer/event/authorize.d.ts +2 -2
  49. package/lib/chevre/service/offer/event/authorize.js +3 -3
  50. package/lib/chevre/service/offer/event/issueEventOfferTicket.d.ts +2 -2
  51. package/lib/chevre/service/offer/event/issueEventOfferTicket.js +1 -1
  52. package/lib/chevre/service/offer/event/voidTransaction/processVoidTransaction4chevre.d.ts +0 -2
  53. package/lib/chevre/service/offer/event/voidTransaction/processVoidTransaction4chevre.js +1 -0
  54. package/lib/chevre/service/offer/event/voidTransaction.d.ts +2 -2
  55. package/lib/chevre/service/offer/event/voidTransaction.js +2 -2
  56. package/lib/chevre/service/offer/event/voidTransactionByActionId.d.ts +3 -3
  57. package/lib/chevre/service/offer/event/voidTransactionByActionId.js +2 -2
  58. package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer.d.ts +16 -5
  59. package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer.js +7 -7
  60. package/lib/chevre/service/offer/eventServiceByCOA/authorize.d.ts +6 -4
  61. package/lib/chevre/service/offer/eventServiceByCOA/authorize.js +3 -10
  62. package/lib/chevre/service/offer/eventServiceByCOA/authorizeByAcceptAction.js +21 -13
  63. package/lib/chevre/service/offer/eventServiceByCOA/changeOffers.js +19 -10
  64. package/lib/chevre/service/offer/eventServiceByCOA/findAcceptAction.d.ts +2 -2
  65. package/lib/chevre/service/offer/moneyTransfer/authorize.d.ts +2 -2
  66. package/lib/chevre/service/offer/moneyTransfer/authorize.js +6 -3
  67. package/lib/chevre/service/offer/moneyTransfer/voidTransaction.d.ts +2 -2
  68. package/lib/chevre/service/offer/moneyTransfer/voidTransaction.js +4 -1
  69. package/lib/chevre/service/offer/product.d.ts +3 -3
  70. package/lib/chevre/service/offer/product.js +4 -4
  71. package/lib/chevre/service/order/confirmPayTransaction.d.ts +0 -2
  72. package/lib/chevre/service/order/confirmPayTransaction.js +1 -0
  73. package/lib/chevre/service/order/findPlaceOrderTransaction.d.ts +2 -2
  74. package/lib/chevre/service/order/findPlaceOrderTransaction.js +1 -1
  75. package/lib/chevre/service/order/onAssetTransactionStatusChanged/isDeliverable.d.ts +16 -0
  76. package/lib/chevre/service/order/onAssetTransactionStatusChanged/isDeliverable.js +97 -0
  77. package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionCanceled.d.ts +21 -0
  78. package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionCanceled.js +86 -0
  79. package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionConfirmed.d.ts +22 -0
  80. package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionConfirmed.js +112 -0
  81. package/lib/chevre/service/order/onAssetTransactionStatusChanged/onReserveTransactionConfirmed.d.ts +22 -0
  82. package/lib/chevre/service/order/onAssetTransactionStatusChanged/onReserveTransactionConfirmed.js +74 -0
  83. package/lib/chevre/service/order/onAssetTransactionStatusChanged/paymentDue2Processing.d.ts +25 -0
  84. package/lib/chevre/service/order/onAssetTransactionStatusChanged/paymentDue2Processing.js +111 -0
  85. package/lib/chevre/service/order/onAssetTransactionStatusChanged/processing2inTransit.d.ts +16 -0
  86. package/lib/chevre/service/order/onAssetTransactionStatusChanged/processing2inTransit.js +74 -0
  87. package/lib/chevre/service/order/onAssetTransactionStatusChanged.d.ts +8 -30
  88. package/lib/chevre/service/order/onAssetTransactionStatusChanged.js +37 -348
  89. package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered.d.ts +6 -7
  90. package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially.d.ts +6 -5
  91. package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.d.ts +7 -6
  92. package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.js +1 -1
  93. package/lib/chevre/service/order/payOrder.d.ts +2 -2
  94. package/lib/chevre/service/order/placeOrder/createPlacingOrderFromExistingTransaction.d.ts +2 -2
  95. package/lib/chevre/service/order/placeOrder/createPlacingOrderFromExistingTransaction.js +1 -1
  96. package/lib/chevre/service/order/placeOrder.d.ts +13 -12
  97. package/lib/chevre/service/order/returnOrder.d.ts +2 -2
  98. package/lib/chevre/service/order/returnOrder.js +1 -1
  99. package/lib/chevre/service/order/sendOrder.d.ts +6 -6
  100. package/lib/chevre/service/order/sendOrder.js +10 -8
  101. package/lib/chevre/service/order.d.ts +3 -6
  102. package/lib/chevre/service/order.js +3 -9
  103. package/lib/chevre/service/payment/any/{fixOrderAsNeeded.d.ts → authorize/fixOrderAsNeeded.d.ts} +6 -6
  104. package/lib/chevre/service/payment/any/{fixOrderAsNeeded.js → authorize/fixOrderAsNeeded.js} +5 -8
  105. package/lib/chevre/service/payment/any/authorize/fixTransactionNumber.d.ts +3 -3
  106. package/lib/chevre/service/payment/any/authorize/handlePrePublishedPaymentMethodIdOnAuthorizing.d.ts +3 -3
  107. package/lib/chevre/service/payment/any/authorize/handlePrePublishedPaymentMethodIdOnAuthorizing.js +1 -1
  108. package/lib/chevre/service/payment/any/authorize.d.ts +92 -0
  109. package/lib/chevre/service/payment/any/authorize.js +225 -0
  110. package/lib/chevre/service/payment/any/findAcceptAction.d.ts +43 -0
  111. package/lib/chevre/service/payment/any/findAcceptAction.js +94 -0
  112. package/lib/chevre/service/payment/any/findAuthorizeAction.d.ts +41 -0
  113. package/lib/chevre/service/payment/any/findAuthorizeAction.js +83 -0
  114. package/lib/chevre/service/payment/any/findCheckAction.d.ts +45 -0
  115. package/lib/chevre/service/payment/any/findCheckAction.js +89 -0
  116. package/lib/chevre/service/payment/any/invalidatePaymentUrl.d.ts +28 -0
  117. package/lib/chevre/service/payment/any/invalidatePaymentUrl.js +185 -0
  118. package/lib/chevre/service/payment/any/onPayActionCompleted.d.ts +7 -3
  119. package/lib/chevre/service/payment/any/onPayActionCompleted.js +3 -0
  120. package/lib/chevre/service/payment/any/processVoidPayTransaction.d.ts +29 -0
  121. package/lib/chevre/service/payment/any/processVoidPayTransaction.js +125 -0
  122. package/lib/chevre/service/payment/any/publishPaymentUrl/fixTransactionNumberOnPublishPaymentUrl.d.ts +2 -2
  123. package/lib/chevre/service/payment/any/publishPaymentUrl.d.ts +66 -0
  124. package/lib/chevre/service/payment/any/publishPaymentUrl.js +133 -0
  125. package/lib/chevre/service/payment/any/voidPayTransaction.d.ts +31 -0
  126. package/lib/chevre/service/payment/any/voidPayTransaction.js +38 -0
  127. package/lib/chevre/service/payment/any.d.ts +8 -305
  128. package/lib/chevre/service/payment/any.js +17 -857
  129. package/lib/chevre/service/payment/movieTicket/authorize.d.ts +2 -0
  130. package/lib/chevre/service/payment/movieTicket/checkMovieTicket.d.ts +3 -3
  131. package/lib/chevre/service/payment/movieTicket/checkMovieTicket.js +3 -3
  132. package/lib/chevre/service/payment/movieTicket/validation.d.ts +11 -10
  133. package/lib/chevre/service/payment/movieTicket/validation.js +19 -15
  134. package/lib/chevre/service/report/telemetry.d.ts +4 -0
  135. package/lib/chevre/service/report/telemetry.js +7 -12
  136. package/lib/chevre/service/task/acceptCOAOffer.js +11 -6
  137. package/lib/chevre/service/task/authorizePayment.js +6 -2
  138. package/lib/chevre/service/task/checkMovieTicket.js +3 -3
  139. package/lib/chevre/service/task/checkResource.js +2 -2
  140. package/lib/chevre/service/task/confirmPayTransaction.js +2 -2
  141. package/lib/chevre/service/task/deleteTransaction.js +7 -1
  142. package/lib/chevre/service/task/onAssetTransactionStatusChanged.js +4 -2
  143. package/lib/chevre/service/task/onOrderPaymentCompleted.js +2 -2
  144. package/lib/chevre/service/task/payment/payByTask.d.ts +14 -12
  145. package/lib/chevre/service/task/placeOrder.js +6 -4
  146. package/lib/chevre/service/task/publishPaymentUrl.js +8 -4
  147. package/lib/chevre/service/task/returnOrder.js +4 -4
  148. package/lib/chevre/service/task/returnPayTransaction.js +4 -3
  149. package/lib/chevre/service/task/sendOrder.js +4 -4
  150. package/lib/chevre/service/task/voidMoneyTransferTransaction.js +6 -3
  151. package/lib/chevre/service/task/voidPayTransaction.js +4 -2
  152. package/lib/chevre/service/task/voidRegisterServiceTransaction.js +3 -3
  153. package/lib/chevre/service/task/voidReserveTransaction.js +4 -3
  154. package/lib/chevre/service/transaction/deleteTransaction.d.ts +6 -0
  155. package/lib/chevre/service/transaction/deleteTransaction.js +56 -14
  156. package/lib/chevre/service/transaction/moneyTransfer.d.ts +5 -5
  157. package/lib/chevre/service/transaction/moneyTransfer.js +5 -5
  158. package/lib/chevre/service/transaction/placeOrder/confirm.d.ts +2 -2
  159. package/lib/chevre/service/transaction/placeOrder/confirm.js +10 -9
  160. package/lib/chevre/service/transaction/placeOrder/exportTasksById.d.ts +7 -6
  161. package/lib/chevre/service/transaction/placeOrder/exportTasksById.js +1 -1
  162. package/lib/chevre/service/transaction/placeOrder/{publishOrderNumberIfNotExist.d.ts → issueOrderNumberIfNotExist.d.ts} +4 -4
  163. package/lib/chevre/service/transaction/placeOrder/{publishOrderNumberIfNotExist.js → issueOrderNumberIfNotExist.js} +21 -13
  164. package/lib/chevre/service/transaction/placeOrder/publishConfirmationNumberIfNotExist.d.ts +2 -2
  165. package/lib/chevre/service/transaction/placeOrder/publishConfirmationNumberIfNotExist.js +3 -3
  166. package/lib/chevre/service/transaction/placeOrder/start.d.ts +3 -3
  167. package/lib/chevre/service/transaction/placeOrder/start.js +2 -2
  168. package/lib/chevre/service/transaction/placeOrder/updateAgent.d.ts +23 -0
  169. package/lib/chevre/service/transaction/placeOrder/updateAgent.js +126 -0
  170. package/lib/chevre/service/transaction/placeOrder.d.ts +2 -1
  171. package/lib/chevre/service/transaction/placeOrder.js +3 -1
  172. package/lib/chevre/service/transaction/returnOrder/preStart.d.ts +1 -1
  173. package/lib/chevre/service/transaction/returnOrder.d.ts +16 -14
  174. package/lib/chevre/service/transaction/returnOrder.js +4 -4
  175. package/lib/chevre/service/transaction.d.ts +9 -21
  176. package/lib/chevre/service/transaction.js +5 -111
  177. package/package.json +4 -8
@@ -22,18 +22,18 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.processing2inTransit = exports.paymentDue2Processing = void 0;
29
27
  exports.onAssetTransactionStatusChanged = onAssetTransactionStatusChanged;
30
- exports.paymentDue2Processing = paymentDue2Processing;
31
- exports.processing2inTransit = processing2inTransit;
32
- const debug_1 = __importDefault(require("debug"));
33
- const findPlaceOrderTransaction_1 = require("./findPlaceOrderTransaction");
34
- const onOrderStatusChanged_1 = require("./onOrderStatusChanged");
28
+ const isDeliverable_1 = require("./onAssetTransactionStatusChanged/isDeliverable");
29
+ const onPayTransactionCanceled_1 = require("./onAssetTransactionStatusChanged/onPayTransactionCanceled");
30
+ const onPayTransactionConfirmed_1 = require("./onAssetTransactionStatusChanged/onPayTransactionConfirmed");
31
+ const onReserveTransactionConfirmed_1 = require("./onAssetTransactionStatusChanged/onReserveTransactionConfirmed");
32
+ const paymentDue2Processing_1 = require("./onAssetTransactionStatusChanged/paymentDue2Processing");
33
+ Object.defineProperty(exports, "paymentDue2Processing", { enumerable: true, get: function () { return paymentDue2Processing_1.paymentDue2Processing; } });
34
+ const processing2inTransit_1 = require("./onAssetTransactionStatusChanged/processing2inTransit");
35
+ Object.defineProperty(exports, "processing2inTransit", { enumerable: true, get: function () { return processing2inTransit_1.processing2inTransit; } });
35
36
  const factory = __importStar(require("../../factory"));
36
- const debug = (0, debug_1.default)('chevre-domain:service:order');
37
37
  function onAssetTransactionStatusChanged(params) {
38
38
  return async (repos, settings) => {
39
39
  if (typeof params.useOnOrderStatusChanged !== 'boolean') {
@@ -45,70 +45,41 @@ function onAssetTransactionStatusChanged(params) {
45
45
  const confirmationNumber = params.purpose?.confirmationNumber;
46
46
  switch (params.object.typeOf) {
47
47
  case factory.assetTransactionType.Pay:
48
- // 確定時の決済方法区分指定(2023-08-29~)
49
- const specifiedPaymentMethodIdentifire = params.object?.object?.paymentMethod?.identifier;
50
- if (typeof specifiedPaymentMethodIdentifire === 'string' && specifiedPaymentMethodIdentifire.length > 0) {
51
- await fixPaymentMethodIdentifierIfPossible({
52
- project: { id: params.project.id },
53
- paymentMethodId: params.object.transactionNumber,
54
- paymentMethod: { identifier: specifiedPaymentMethodIdentifire },
55
- referencesOrder: { orderNumber }
56
- })(repos);
57
- }
58
- if (typeof orderNumber === 'string' && typeof confirmationNumber === 'string') {
59
- // PayTransactionのステータス検証
60
- const processable = await isProcessable({ project: { id: params.project.id }, orderNumber })(repos);
61
- if (processable) {
62
- await paymentDue2Processing({
63
- project: { id: params.project.id },
64
- confirmationNumber,
65
- orderNumber,
66
- useOnOrderStatusChanged: params.useOnOrderStatusChanged
67
- })(repos, settings);
48
+ await (0, onPayTransactionConfirmed_1.onPayTransactionConfirmed)({
49
+ ...params,
50
+ object: {
51
+ ...params.object,
52
+ status: params.object.status
68
53
  }
69
- }
54
+ })(repos, settings);
70
55
  break;
71
56
  case factory.assetTransactionType.COAReserveTransaction:
72
- if (typeof orderNumber === 'string' && typeof confirmationNumber === 'string') {
73
- // 基本的に1注文に1予約番号なのでdeliverable = true
74
- const deliverable = true;
75
- if (deliverable) {
76
- await processing2inTransit({
77
- project: { id: params.project.id },
78
- // confirmationNumber,
79
- orderNumber,
80
- useOnOrderStatusChanged: params.useOnOrderStatusChanged
81
- })(repos, settings);
57
+ await (0, onReserveTransactionConfirmed_1.onReserveTransactionConfirmed)({
58
+ ...params,
59
+ object: {
60
+ ...params.object,
61
+ status: params.object.status
82
62
  }
83
- }
63
+ })(repos, settings);
84
64
  break;
85
65
  case factory.assetTransactionType.Reserve:
86
- if (typeof orderNumber === 'string' && typeof confirmationNumber === 'string') {
87
- // ReserveTransactionのステータス検証
88
- const deliverable = await isDeliverable({
89
- project: { id: params.project.id },
90
- orderNumber,
91
- assetTransactionType: params.object.typeOf
92
- })(repos);
93
- if (deliverable) {
94
- await processing2inTransit({
95
- project: { id: params.project.id },
96
- // confirmationNumber,
97
- orderNumber,
98
- useOnOrderStatusChanged: params.useOnOrderStatusChanged
99
- })(repos, settings);
66
+ await (0, onReserveTransactionConfirmed_1.onReserveTransactionConfirmed)({
67
+ ...params,
68
+ object: {
69
+ ...params.object,
70
+ status: params.object.status
100
71
  }
101
- }
72
+ })(repos, settings);
102
73
  break;
103
74
  case factory.assetTransactionType.MoneyTransfer:
104
75
  if (typeof orderNumber === 'string' && typeof confirmationNumber === 'string') {
105
- const deliverable = await isDeliverable({
76
+ const deliverable = await (0, isDeliverable_1.isDeliverable)({
106
77
  project: { id: params.project.id },
107
78
  orderNumber,
108
79
  assetTransactionType: params.object.typeOf
109
80
  })(repos);
110
81
  if (deliverable) {
111
- await processing2inTransit({
82
+ await (0, processing2inTransit_1.processing2inTransit)({
112
83
  project: { id: params.project.id },
113
84
  // confirmationNumber,
114
85
  orderNumber,
@@ -119,13 +90,13 @@ function onAssetTransactionStatusChanged(params) {
119
90
  break;
120
91
  case factory.assetTransactionType.RegisterService:
121
92
  if (typeof orderNumber === 'string' && typeof confirmationNumber === 'string') {
122
- const deliverable = await isDeliverable({
93
+ const deliverable = await (0, isDeliverable_1.isDeliverable)({
123
94
  project: { id: params.project.id },
124
95
  orderNumber,
125
96
  assetTransactionType: params.object.typeOf
126
97
  })(repos);
127
98
  if (deliverable) {
128
- await processing2inTransit({
99
+ await (0, processing2inTransit_1.processing2inTransit)({
129
100
  project: { id: params.project.id },
130
101
  // confirmationNumber,
131
102
  orderNumber,
@@ -142,11 +113,12 @@ function onAssetTransactionStatusChanged(params) {
142
113
  case factory.transactionStatusType.Expired:
143
114
  switch (params.object.typeOf) {
144
115
  case factory.assetTransactionType.Pay:
145
- // 注文が存在すればキャンセル(2023-08-30~)
146
- await cancelOrderIfExist({
147
- project: { id: params.project.id },
148
- paymentMethodId: params.object.transactionNumber,
149
- useOnOrderStatusChanged: params.useOnOrderStatusChanged
116
+ await (0, onPayTransactionCanceled_1.onPayTransactionCanceled)({
117
+ ...params,
118
+ object: {
119
+ ...params.object,
120
+ status: params.object.status
121
+ }
150
122
  })(repos);
151
123
  break;
152
124
  default:
@@ -158,286 +130,3 @@ function onAssetTransactionStatusChanged(params) {
158
130
  }
159
131
  };
160
132
  }
161
- function fixPaymentMethodIdentifierIfPossible(params) {
162
- return async (repos) => {
163
- const referencedPayTransactions = await repos.assetTransaction.search({
164
- project: { id: { $eq: params.project.id } },
165
- typeOf: factory.assetTransactionType.Pay,
166
- statuses: [factory.transactionStatusType.Confirmed],
167
- transactionNumber: { $in: [params.paymentMethodId] }
168
- }, ['object']);
169
- const referencedPayTransaction = referencedPayTransactions.shift();
170
- if (referencedPayTransaction === undefined) {
171
- throw new factory.errors.NotFound(factory.assetTransactionType.Pay);
172
- }
173
- // 対面決済かつ決済取引上の決済方法区分と一致すれば、注文を変更
174
- if (referencedPayTransaction.object.typeOf === factory.service.paymentService.PaymentServiceType.FaceToFace
175
- && referencedPayTransaction.object.paymentMethod.identifier === params.paymentMethod.identifier) {
176
- await repos.order.fixPaymentMethodIdentifier({
177
- project: { id: params.project.id },
178
- orderNumber: params.referencesOrder.orderNumber,
179
- invoice: {
180
- paymentMethodId: params.paymentMethodId,
181
- paymentMethod: { identifier: params.paymentMethod.identifier }
182
- }
183
- });
184
- }
185
- };
186
- }
187
- function isProcessable(params) {
188
- return async (repos) => {
189
- // 注文のpaymentMethodIdを取得
190
- const order = await repos.order.projectFieldsByOrderNumber({
191
- orderNumber: params.orderNumber,
192
- project: { id: params.project.id },
193
- inclusion: ['paymentMethods']
194
- });
195
- // PayTransactionのステータス検証
196
- let allPayTransactionConfirmed;
197
- const paymentMethodIds = order.paymentMethods.filter((invoice) => typeof invoice.paymentMethodId === 'string' && invoice.paymentMethodId.length > 0)
198
- .map((invoice) => invoice.paymentMethodId);
199
- if (paymentMethodIds.length > 0) {
200
- const referencedPayTransactions = await repos.assetTransaction.search({
201
- project: { id: { $eq: params.project.id } },
202
- typeOf: factory.assetTransactionType.Pay,
203
- transactionNumber: { $in: paymentMethodIds }
204
- }, ['status']);
205
- allPayTransactionConfirmed =
206
- referencedPayTransactions.every((payTransation) => payTransation.status === factory.transactionStatusType.Confirmed);
207
- }
208
- else {
209
- allPayTransactionConfirmed = true;
210
- }
211
- return allPayTransactionConfirmed;
212
- };
213
- }
214
- function paymentDue2Processing(params) {
215
- return async (repos, settings) => {
216
- const placeOrderTransaction = await (0, findPlaceOrderTransaction_1.findPlaceOrderTransaction)({
217
- project: { id: params.project.id },
218
- confirmationNumber: params.confirmationNumber,
219
- orderNumber: params.orderNumber
220
- })({ transaction: repos.transaction });
221
- // const existingOrder: Pick<factory.order.IOrder, 'project'> = await repos.order.projectFieldsByOrderNumber({
222
- // orderNumber: params.orderNumber,
223
- // project: { id: params.project.id },
224
- // inclusion: ['project']
225
- // });
226
- let order;
227
- try {
228
- order = await repos.order.changeStatus({
229
- project: { id: params.project.id },
230
- orderNumber: params.orderNumber,
231
- orderStatus: factory.orderStatus.OrderProcessing,
232
- previousOrderStatus: factory.orderStatus.OrderPaymentDue
233
- });
234
- }
235
- catch (error) {
236
- let throwsError = true;
237
- // すでにステータスが進行していた場合、OrderPaymentDue->OrderProcessingの処理自体は成功しているので、後処理を続行する
238
- order = await repos.order.projectFieldsByOrderNumber({
239
- orderNumber: params.orderNumber,
240
- project: { id: params.project.id },
241
- inclusion: [
242
- 'orderNumber', 'broker', 'confirmationNumber', 'customer', 'dateReturned',
243
- 'name', 'orderDate', 'orderStatus', 'orderedItem', 'paymentMethods',
244
- 'previousOrderStatus', 'price', 'priceCurrency', 'project', 'returner', 'seller', 'typeOf'
245
- ] // explicit projection(2024-07-25~)
246
- });
247
- if (order.orderStatus === factory.orderStatus.OrderInTransit
248
- || order.orderStatus === factory.orderStatus.OrderDelivered
249
- || order.orderStatus === factory.orderStatus.OrderReturned) {
250
- throwsError = false;
251
- }
252
- if (throwsError) {
253
- throw error;
254
- }
255
- }
256
- if (params.useOnOrderStatusChanged) {
257
- // 全acceptedOffersを検索(2023-12-08~)
258
- // const acceptedOffers = await repos.acceptedOffer.searchAcceptedOffersByOrderNumber(
259
- // {
260
- // orderNumber: { $eq: order.orderNumber },
261
- // project: { id: { $eq: params.project.id } }
262
- // },
263
- // ['itemOffered', 'offeredThrough']
264
- // );
265
- const { numAcceptedOffers } = await repos.acceptedOffer.countByOrderNumber({
266
- orderNumber: { $eq: order.orderNumber },
267
- project: { id: { $eq: params.project.id } }
268
- });
269
- const itemOfferedTypeOfs = await repos.acceptedOffer.distinctValues({ orderNumber: { $in: [params.orderNumber] } }, 'acceptedOffers.itemOffered.typeOf');
270
- const serialNumbers = await repos.acceptedOffer.distinctValues({ orderNumber: { $in: [params.orderNumber] } }, 'acceptedOffers.serialNumber');
271
- const offeredThroughIdentifier = (await repos.acceptedOffer.distinctValues({ orderNumber: { $in: [params.orderNumber] } }, 'acceptedOffers.offeredThrough.identifier')).shift();
272
- debug('onAssetTransactionStatusChanged paymentDue2Processing: calling onOrderProcessing...', 'numAcceptedOffers:', numAcceptedOffers, 'itemOfferedTypeOfs:', itemOfferedTypeOfs, 'serialNumbers:', serialNumbers, 'offeredThroughIdentifier:', offeredThroughIdentifier);
273
- await (0, onOrderStatusChanged_1.onOrderProcessing)({
274
- order: {
275
- ...order,
276
- // acceptedOffers,
277
- numAcceptedOffers,
278
- itemOfferedTypeOf: itemOfferedTypeOfs[0], // 1つしかない前提
279
- serialNumbers,
280
- offeredThroughIdentifier,
281
- orderStatus: factory.orderStatus.OrderProcessing // 強制的にOrderProcessingとして処理する
282
- },
283
- placeOrderTransaction
284
- })(repos, settings);
285
- }
286
- };
287
- }
288
- function cancelOrderIfExist(params) {
289
- return async (repos) => {
290
- if (params.paymentMethodId.length === 0) {
291
- return;
292
- }
293
- // 注文のpaymentMethodIdを取得
294
- const ordersByPaymentMethodId = await repos.order.projectFields({
295
- limit: 1,
296
- page: 1,
297
- paymentMethods: {
298
- paymentMethodIds: [params.paymentMethodId]
299
- },
300
- project: { id: { $eq: params.project.id } }
301
- }, { inclusion: ['confirmationNumber', 'orderNumber'] });
302
- const orderByPaymentMethodId = ordersByPaymentMethodId.shift();
303
- if (orderByPaymentMethodId !== undefined) {
304
- const placeOrderTransaction = await (0, findPlaceOrderTransaction_1.findPlaceOrderTransaction)({
305
- project: { id: params.project.id },
306
- confirmationNumber: orderByPaymentMethodId.confirmationNumber,
307
- orderNumber: orderByPaymentMethodId.orderNumber
308
- })({ transaction: repos.transaction });
309
- const order = await repos.order.changeStatus({
310
- project: { id: params.project.id },
311
- orderNumber: orderByPaymentMethodId.orderNumber,
312
- orderStatus: factory.orderStatus.OrderCancelled,
313
- previousOrderStatus: factory.orderStatus.OrderPaymentDue
314
- });
315
- if (params.useOnOrderStatusChanged) {
316
- await (0, onOrderStatusChanged_1.onOrderCancelled)({
317
- order: {
318
- orderDate: order.orderDate,
319
- orderNumber: order.orderNumber,
320
- orderStatus: factory.orderStatus.OrderCancelled // 強制的にOrderCancelledとして処理する
321
- },
322
- placeOrderTransaction
323
- })({
324
- task: repos.task
325
- });
326
- }
327
- }
328
- };
329
- }
330
- function isDeliverable(params) {
331
- return async (repos) => {
332
- let allReserveTransactionConfirmed = false;
333
- let allMoneyTransferTransactionConfirmed = false;
334
- let allRegisterServiceTransactionConfirmed = false;
335
- if (params.assetTransactionType === factory.assetTransactionType.Reserve) {
336
- allMoneyTransferTransactionConfirmed = true;
337
- allRegisterServiceTransactionConfirmed = true;
338
- // 注文のreservationNumberを取得
339
- const reservationNumbers = await repos.acceptedOffer.distinctValues({ orderNumber: { $in: [params.orderNumber] } }, 'acceptedOffers.itemOffered.reservationNumber');
340
- if (reservationNumbers.length > 0) {
341
- const referencedReserveTransactions = await repos.assetTransaction.search({
342
- project: { id: { $eq: params.project.id } },
343
- typeOf: factory.assetTransactionType.Reserve,
344
- transactionNumber: { $in: reservationNumbers }
345
- }, ['status']);
346
- allReserveTransactionConfirmed =
347
- referencedReserveTransactions.length === reservationNumbers.length
348
- && referencedReserveTransactions.every(({ status }) => status === factory.transactionStatusType.Confirmed);
349
- }
350
- else {
351
- allReserveTransactionConfirmed = true;
352
- }
353
- }
354
- else if (params.assetTransactionType === factory.assetTransactionType.MoneyTransfer) {
355
- allReserveTransactionConfirmed = true;
356
- allRegisterServiceTransactionConfirmed = true;
357
- // 注文のMoneyTransferTransaction.transactionNumberを取得
358
- const moneyTransferTransactionNumbers = await repos.acceptedOffer.distinctValues({ orderNumber: { $in: [params.orderNumber] } }, 'acceptedOffers.serialNumber');
359
- if (moneyTransferTransactionNumbers.length > 0) {
360
- debug('is deliverable?...', params.orderNumber, 'moneyTransferTransactionNumbers:', moneyTransferTransactionNumbers);
361
- const referencedMoneyTransferTransactions = await repos.assetTransaction.search({
362
- project: { id: { $eq: params.project.id } },
363
- typeOf: factory.assetTransactionType.MoneyTransfer,
364
- transactionNumber: { $in: moneyTransferTransactionNumbers }
365
- }, ['status']);
366
- allMoneyTransferTransactionConfirmed =
367
- referencedMoneyTransferTransactions.length === moneyTransferTransactionNumbers.length
368
- && referencedMoneyTransferTransactions.every(({ status }) => status === factory.transactionStatusType.Confirmed);
369
- }
370
- else {
371
- allMoneyTransferTransactionConfirmed = true;
372
- }
373
- }
374
- else if (params.assetTransactionType === factory.assetTransactionType.RegisterService) {
375
- allReserveTransactionConfirmed = true;
376
- allMoneyTransferTransactionConfirmed = true;
377
- const registerServiceTransactionNumbers = await repos.acceptedOffer.distinctValues({ orderNumber: { $in: [params.orderNumber] } }, 'acceptedOffers.serialNumber');
378
- if (registerServiceTransactionNumbers.length > 0) {
379
- const referencedRegisterServiceTransactions = await repos.assetTransaction.search({
380
- project: { id: { $eq: params.project.id } },
381
- typeOf: factory.assetTransactionType.RegisterService,
382
- transactionNumber: { $in: registerServiceTransactionNumbers }
383
- }, ['status']);
384
- allRegisterServiceTransactionConfirmed =
385
- referencedRegisterServiceTransactions.length === registerServiceTransactionNumbers.length
386
- && referencedRegisterServiceTransactions.every(({ status }) => status === factory.transactionStatusType.Confirmed);
387
- }
388
- else {
389
- allRegisterServiceTransactionConfirmed = true;
390
- }
391
- }
392
- return allReserveTransactionConfirmed && allMoneyTransferTransactionConfirmed && allRegisterServiceTransactionConfirmed;
393
- };
394
- }
395
- function processing2inTransit(params) {
396
- return async (repos, settings) => {
397
- // const existingOrder: Pick<factory.order.IOrder, 'project'> = await repos.order.projectFieldsByOrderNumber({
398
- // orderNumber: params.orderNumber,
399
- // project: { id: params.project.id },
400
- // inclusion: ['project']
401
- // });
402
- let order;
403
- try {
404
- order = await repos.order.changeStatus({
405
- project: { id: params.project.id },
406
- orderNumber: params.orderNumber,
407
- orderStatus: factory.orderStatus.OrderInTransit,
408
- previousOrderStatus: factory.orderStatus.OrderProcessing
409
- });
410
- }
411
- catch (error) {
412
- let throwsError = true;
413
- // すでにステータスが進行していた場合、OrderProcessing->OrderInTransitの処理自体は成功しているので、後処理を続行する
414
- order = await repos.order.projectFieldsByOrderNumber({
415
- orderNumber: params.orderNumber,
416
- project: { id: params.project.id },
417
- inclusion: [
418
- 'orderNumber', 'broker', 'confirmationNumber', 'customer', 'dateReturned',
419
- 'name', 'orderDate', 'orderStatus', 'orderedItem', 'paymentMethods',
420
- 'previousOrderStatus', 'price', 'priceCurrency', 'project', 'returner', 'seller', 'typeOf'
421
- ] // explicit projection(2024-07-25~)
422
- });
423
- if (order.orderStatus === factory.orderStatus.OrderDelivered
424
- || order.orderStatus === factory.orderStatus.OrderReturned) {
425
- throwsError = false;
426
- }
427
- if (throwsError) {
428
- throw error;
429
- }
430
- }
431
- if (params.useOnOrderStatusChanged) {
432
- await (0, onOrderStatusChanged_1.onOrderInTransit)({
433
- order: {
434
- ...order,
435
- orderStatus: factory.orderStatus.OrderInTransit
436
- }
437
- })({
438
- task: repos.task,
439
- transaction: repos.transaction
440
- }, settings);
441
- }
442
- };
443
- }
@@ -1,14 +1,13 @@
1
1
  import * as factory from '../../../factory';
2
2
  import type { SettingRepo } from '../../../repo/setting';
3
3
  import type { TaskRepo } from '../../../repo/task';
4
- type IPlaceOrderTransaction = Pick<factory.transaction.placeOrder.ITransaction, 'id' | 'project' | 'typeOf' | 'potentialActions'>;
4
+ interface IOnOrderDeliveredRepos {
5
+ setting: SettingRepo;
6
+ task: TaskRepo;
7
+ }
5
8
  declare function onOrderDelivered(params: {
6
9
  order: Pick<factory.order.IOrder, 'id' | 'customer' | 'orderDate' | 'orderNumber' | 'project' | 'typeOf' | 'price' | 'priceCurrency'> & {
7
10
  orderStatus: factory.orderStatus.OrderDelivered;
8
11
  };
9
- placeOrderTransaction?: IPlaceOrderTransaction;
10
- }): (repos: {
11
- setting: SettingRepo;
12
- task: TaskRepo;
13
- }) => Promise<void>;
14
- export { onOrderDelivered };
12
+ }): (repos: IOnOrderDeliveredRepos) => Promise<void>;
13
+ export { IOnOrderDeliveredRepos, onOrderDelivered };
@@ -1,10 +1,11 @@
1
1
  import type { SettingRepo } from '../../../repo/setting';
2
2
  import type { TaskRepo } from '../../../repo/task';
3
3
  import { IInTransitOrder } from './onOrderDeliveredPartially/factory';
4
- declare function onOrderDeliveredPartially(params: {
5
- order: IInTransitOrder;
6
- }): (repos: {
4
+ interface IOnOrderDeliveredPartiallyRepos {
7
5
  setting: SettingRepo;
8
6
  task: TaskRepo;
9
- }) => Promise<void>;
10
- export { onOrderDeliveredPartially };
7
+ }
8
+ declare function onOrderDeliveredPartially(params: {
9
+ order: IInTransitOrder;
10
+ }): (repos: IOnOrderDeliveredPartiallyRepos) => Promise<void>;
11
+ export { IOnOrderDeliveredPartiallyRepos, onOrderDeliveredPartially };
@@ -1,13 +1,14 @@
1
1
  import type { TaskRepo } from '../../../repo/task';
2
- import type { TransactionRepo } from '../../../repo/transaction';
2
+ import type { PlaceOrderRepo } from '../../../repo/transaction/placeOrder';
3
3
  import * as factory from '../../../factory';
4
4
  import { Settings } from '../../../settings';
5
+ interface IOnOrderInTransitRepos {
6
+ task: TaskRepo;
7
+ placeOrder: PlaceOrderRepo;
8
+ }
5
9
  declare function onOrderInTransit(params: {
6
10
  order: Pick<factory.order.IOrder, 'id' | 'orderNumber' | 'broker' | 'confirmationNumber' | 'customer' | 'dateReturned' | 'name' | 'orderDate' | 'orderedItem' | 'paymentMethods' | 'previousOrderStatus' | 'price' | 'priceCurrency' | 'project' | 'returner' | 'seller' | 'typeOf'> & {
7
11
  orderStatus: factory.orderStatus.OrderInTransit;
8
12
  };
9
- }): (repos: {
10
- task: TaskRepo;
11
- transaction: TransactionRepo;
12
- }, settings: Settings) => Promise<void>;
13
- export { onOrderInTransit };
13
+ }): (repos: IOnOrderInTransitRepos, settings: Settings) => Promise<void>;
14
+ export { IOnOrderInTransitRepos, onOrderInTransit };
@@ -103,7 +103,7 @@ function createSendOrderTaskIfNotExist(params) {
103
103
  }
104
104
  function createOnAuthorizationCreatedTask(order) {
105
105
  return async (repos) => {
106
- const placeOrderTransaction = (await repos.transaction.projectFields({
106
+ const placeOrderTransaction = (await repos.placeOrder.findPlaceOrderTransactions({
107
107
  limit: 1,
108
108
  page: 1,
109
109
  typeOf: factory.transactionType.PlaceOrder,
@@ -2,7 +2,7 @@ import type { AcceptedOfferRepo } from '../../repo/acceptedOffer';
2
2
  import type { OrderRepo } from '../../repo/order';
3
3
  import type { SettingRepo } from '../../repo/setting';
4
4
  import type { TaskRepo } from '../../repo/task';
5
- import type { TransactionRepo } from '../../repo/transaction';
5
+ import type { PlaceOrderRepo } from '../../repo/transaction/placeOrder';
6
6
  import * as factory from '../../factory';
7
7
  import { Settings } from '../../settings';
8
8
  /**
@@ -13,6 +13,6 @@ declare function payOrder(params: factory.task.IData<factory.taskName.OnOrderPay
13
13
  order: OrderRepo;
14
14
  setting: SettingRepo;
15
15
  task: TaskRepo;
16
- transaction: TransactionRepo;
16
+ placeOrder: PlaceOrderRepo;
17
17
  }, settings: Settings) => Promise<void>;
18
18
  export { payOrder };
@@ -1,6 +1,6 @@
1
1
  import type { ActionRepo } from '../../../repo/action';
2
2
  import type { IPlacingOrder, OrderInTransactionRepo } from '../../../repo/orderInTransaction';
3
- import type { TransactionRepo } from '../../../repo/transaction';
3
+ import type { PlaceOrderRepo } from '../../../repo/transaction/placeOrder';
4
4
  import * as factory from '../../../factory';
5
5
  type IPlaceOrderTransaction = Pick<factory.transaction.placeOrder.ITransaction, 'id' | 'project' | 'typeOf' | 'result' | 'object' | 'seller'>;
6
6
  declare function createPlacingOrderFromExistingTransaction(params: {
@@ -12,7 +12,7 @@ declare function createPlacingOrderFromExistingTransaction(params: {
12
12
  }): (repos: {
13
13
  action: ActionRepo;
14
14
  orderInTransaction: OrderInTransactionRepo;
15
- transaction: TransactionRepo;
15
+ placeOrder: PlaceOrderRepo;
16
16
  }) => Promise<{
17
17
  order: IPlacingOrder;
18
18
  placeOrderTransaction: IPlaceOrderTransaction;
@@ -30,7 +30,7 @@ function createPlacingOrderFromExistingTransaction(params) {
30
30
  return async (repos) => {
31
31
  const confirmationNumber = String(params.confirmationNumber);
32
32
  const orderNumber = params.orderNumber;
33
- const placeOrderTransactions = await repos.transaction.projectFields({
33
+ const placeOrderTransactions = await repos.placeOrder.findPlaceOrderTransactions({
34
34
  limit: 1,
35
35
  page: 1,
36
36
  project: { id: { $eq: params.project.id } },
@@ -5,9 +5,19 @@ import type { OrderRepo } from '../../repo/order';
5
5
  import type { OrderInTransactionRepo } from '../../repo/orderInTransaction';
6
6
  import type { SettingRepo } from '../../repo/setting';
7
7
  import type { TaskRepo } from '../../repo/task';
8
- import type { TransactionRepo } from '../../repo/transaction';
8
+ import type { PlaceOrderRepo } from '../../repo/transaction/placeOrder';
9
9
  import * as factory from '../../factory';
10
10
  import { Settings } from '../../settings';
11
+ interface IPlaceOrderRepos {
12
+ acceptedOffer: AcceptedOfferRepo;
13
+ accountingReport: AccountingReportRepo;
14
+ action: ActionRepo;
15
+ order: OrderRepo;
16
+ orderInTransaction: OrderInTransactionRepo;
17
+ setting: SettingRepo;
18
+ task: TaskRepo;
19
+ placeOrder: PlaceOrderRepo;
20
+ }
11
21
  /**
12
22
  * 注文を作成する
13
23
  */
@@ -21,16 +31,7 @@ declare function placeOrder(params: {
21
31
  orderNumber: string;
22
32
  };
23
33
  useOnOrderStatusChanged: boolean;
24
- }): (repos: {
25
- acceptedOffer: AcceptedOfferRepo;
26
- accountingReport: AccountingReportRepo;
27
- action: ActionRepo;
28
- order: OrderRepo;
29
- orderInTransaction: OrderInTransactionRepo;
30
- setting: SettingRepo;
31
- task: TaskRepo;
32
- transaction: TransactionRepo;
33
- }, settings: Settings) => Promise<{
34
+ }): (repos: IPlaceOrderRepos, settings: Settings) => Promise<{
34
35
  order: factory.transaction.placeOrder.IOrderAsResult;
35
36
  }>;
36
- export { placeOrder };
37
+ export { IPlaceOrderRepos, placeOrder };
@@ -4,7 +4,7 @@ import type { OrderRepo } from '../../repo/order';
4
4
  import type { OwnershipInfoRepo } from '../../repo/ownershipInfo';
5
5
  import type { SettingRepo } from '../../repo/setting';
6
6
  import type { TaskRepo } from '../../repo/task';
7
- import type { TransactionRepo } from '../../repo/transaction';
7
+ import type { ReturnOrderRepo } from '../../repo/transaction/returnOrder';
8
8
  import * as factory from '../../factory';
9
9
  declare function returnOrder(params: {
10
10
  agent: factory.action.transfer.returnAction.order.IAgent;
@@ -23,6 +23,6 @@ declare function returnOrder(params: {
23
23
  ownershipInfo: OwnershipInfoRepo;
24
24
  setting: SettingRepo;
25
25
  task: TaskRepo;
26
- transaction: TransactionRepo;
26
+ returnOrder: ReturnOrderRepo;
27
27
  }) => Promise<void>;
28
28
  export { returnOrder };
@@ -72,7 +72,7 @@ function returnOrder(params) {
72
72
  throw new factory.errors.Argument('object.orderNumber', `orderStatus not returnable: ${order.orderStatus}`);
73
73
  }
74
74
  // 返品取引検索
75
- const returnOrderTransactions = await repos.transaction.projectFields({
75
+ const returnOrderTransactions = await repos.returnOrder.findReturnOrderTransactions({
76
76
  limit: 1,
77
77
  page: 1,
78
78
  project: { id: { $eq: order.project.id } },