@chevre/domain 21.7.0-alpha.0 → 21.7.0-alpha.10

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 (38) hide show
  1. package/example/src/chevre/migrateAuthorizePaymentActionResult.ts +83 -0
  2. package/example/src/chevre/searchOffers.ts +20 -20
  3. package/example/src/chevre/unsetUnnecessaryFields.ts +17 -11
  4. package/lib/chevre/emailMessageBuilder.d.ts +1 -1
  5. package/lib/chevre/repo/action.d.ts +4 -0
  6. package/lib/chevre/repo/action.js +6 -0
  7. package/lib/chevre/repo/event.d.ts +12 -0
  8. package/lib/chevre/repo/event.js +11 -0
  9. package/lib/chevre/repo/mongoose/schemas/offer.d.ts +4 -4
  10. package/lib/chevre/repo/mongoose/schemas/offer.js +6 -6
  11. package/lib/chevre/repo/offer.js +11 -7
  12. package/lib/chevre/repo/product.d.ts +1 -1
  13. package/lib/chevre/repo/product.js +1 -0
  14. package/lib/chevre/repo/transaction.d.ts +4 -1
  15. package/lib/chevre/repo/transaction.js +7 -1
  16. package/lib/chevre/service/assetTransaction/pay/factory.d.ts +1 -1
  17. package/lib/chevre/service/assetTransaction/pay/factory.js +49 -27
  18. package/lib/chevre/service/assetTransaction/pay/potentialActions.js +39 -18
  19. package/lib/chevre/service/assetTransaction/refund/factory.js +2 -2
  20. package/lib/chevre/service/order/deleteOrder.d.ts +2 -0
  21. package/lib/chevre/service/order/deleteOrder.js +42 -0
  22. package/lib/chevre/service/payment/any/factory.js +18 -7
  23. package/lib/chevre/service/payment/creditCard.js +3 -1
  24. package/lib/chevre/service/payment/paymentCard.js +6 -2
  25. package/lib/chevre/service/task/deleteTransaction.js +2 -0
  26. package/lib/chevre/service/transaction/deleteTransaction.d.ts +2 -0
  27. package/lib/chevre/service/transaction/moneyTransfer/factory.js +1 -5
  28. package/lib/chevre/service/transaction/moneyTransfer.js +0 -1
  29. package/lib/chevre/service/transaction/placeOrderInProgress/result/acceptedOffers.js +0 -4
  30. package/lib/chevre/service/transaction/placeOrderInProgress/result.js +11 -9
  31. package/lib/chevre/service/transaction/placeOrderInProgress/validation/validateMovieTicket.js +6 -4
  32. package/lib/chevre/service/transaction/placeOrderInProgress/validation.js +6 -20
  33. package/lib/chevre/service/transaction/placeOrderInProgress.js +0 -3
  34. package/lib/chevre/service/transaction/returnOrder.js +0 -1
  35. package/lib/chevre/settings.d.ts +2 -0
  36. package/lib/chevre/settings.js +3 -1
  37. package/package.json +3 -3
  38. package/example/src/chevre/migrateReservationProvider.ts +0 -119
@@ -28,7 +28,7 @@ function createPayActions(params) {
28
28
  }
29
29
  return payActions;
30
30
  }
31
- // tslint:disable-next-line:cyclomatic-complexity
31
+ // tslint:disable-next-line:cyclomatic-complexity max-func-body-length
32
32
  function createPayObject(params) {
33
33
  var _a;
34
34
  const transaction = params.transaction;
@@ -37,12 +37,20 @@ function createPayObject(params) {
37
37
  const additionalProperty = paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.additionalProperty;
38
38
  const paymentMethodId = (typeof (paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.paymentMethodId) === 'string') ? paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.paymentMethodId : transaction.id;
39
39
  const paymentMethodName = (typeof (paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.name) === 'string') ? paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.name : paymentMethodType;
40
+ // MonetaryAmount対応(2023-08-13~)
41
+ const paymentMethodAmountValue = (typeof (paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.amount) === 'number')
42
+ ? paymentMethod.amount
43
+ : paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.amount.value;
40
44
  const paymentServiceOutput = createPayObjectServiceOutput(params);
41
45
  let payObject;
42
46
  switch (transaction.object.typeOf) {
43
47
  case factory.service.paymentService.PaymentServiceType.FaceToFace:
44
48
  // 対面決済ではとりあえず問答無用にJPY
45
- const totalPaymentDue4faceToFace = { typeOf: 'MonetaryAmount', currency: factory.priceCurrency.JPY, value: Number(paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.amount) };
49
+ const totalPaymentDue4faceToFace = {
50
+ typeOf: 'MonetaryAmount',
51
+ currency: factory.priceCurrency.JPY,
52
+ value: paymentMethodAmountValue
53
+ };
46
54
  payObject = {
47
55
  typeOf: transaction.object.typeOf,
48
56
  id: (typeof transaction.object.id === 'string') ? transaction.object.id : '',
@@ -52,7 +60,11 @@ function createPayObject(params) {
52
60
  case factory.service.paymentService.PaymentServiceType.PaymentCard:
53
61
  const totalPaymentDue = (typeof ((_a = paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.totalPaymentDue) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string')
54
62
  ? paymentMethod.totalPaymentDue
55
- : { typeOf: 'MonetaryAmount', currency: factory.priceCurrency.JPY, value: Number(paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.amount) };
63
+ : {
64
+ typeOf: 'MonetaryAmount',
65
+ currency: factory.priceCurrency.JPY,
66
+ value: paymentMethodAmountValue
67
+ };
56
68
  payObject = {
57
69
  typeOf: transaction.object.typeOf,
58
70
  id: (typeof transaction.object.id === 'string') ? transaction.object.id : '',
@@ -68,11 +80,17 @@ function createPayObject(params) {
68
80
  };
69
81
  break;
70
82
  case factory.service.paymentService.PaymentServiceType.CreditCard:
71
- payObject = Object.assign({ typeOf: transaction.object.typeOf, id: (typeof transaction.object.id === 'string') ? transaction.object.id : '', paymentMethod: Object.assign({ additionalProperty: (Array.isArray(additionalProperty)) ? additionalProperty : [], name: paymentMethodName, paymentMethodId: paymentMethodId, totalPaymentDue: {
83
+ payObject = {
84
+ typeOf: transaction.object.typeOf,
85
+ id: (typeof transaction.object.id === 'string') ? transaction.object.id : '',
86
+ paymentMethod: Object.assign({ additionalProperty: (Array.isArray(additionalProperty)) ? additionalProperty : [], name: paymentMethodName, paymentMethodId: paymentMethodId, totalPaymentDue: {
72
87
  typeOf: 'MonetaryAmount',
73
88
  currency: factory.priceCurrency.JPY,
74
- value: Number(paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.amount)
75
- }, typeOf: paymentMethodType }, (typeof (paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.accountId) === 'string') ? { accountId: paymentMethod.accountId } : undefined) }, (paymentServiceOutput !== undefined) ? { serviceOutput: paymentServiceOutput } : undefined);
89
+ value: paymentMethodAmountValue
90
+ }, typeOf: paymentMethodType }, (typeof (paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.accountId) === 'string') ? { accountId: paymentMethod.accountId } : undefined)
91
+ // CreditCardIFのカード通貨区分を追加(2023-08-07~)
92
+ // ...(paymentServiceOutput !== undefined) ? { serviceOutput: paymentServiceOutput } : undefined
93
+ };
76
94
  break;
77
95
  case factory.service.paymentService.PaymentServiceType.MovieTicket:
78
96
  payObject = Object.assign({ typeOf: transaction.object.typeOf, id: (typeof transaction.object.id === 'string') ? transaction.object.id : '', paymentMethod: {
@@ -94,7 +112,6 @@ function createPayObject(params) {
94
112
  return payObject;
95
113
  }
96
114
  function createPayObjectServiceOutput(params) {
97
- var _a, _b;
98
115
  const transaction = params.transaction;
99
116
  const paymentMethod = transaction.object.paymentMethod;
100
117
  const order = params.order;
@@ -105,17 +122,21 @@ function createPayObjectServiceOutput(params) {
105
122
  break;
106
123
  case factory.service.paymentService.PaymentServiceType.CreditCard:
107
124
  // CreditCardIFのカード通貨区分を追加(2023-08-07~)
108
- const creditCardAsPaymentServiceOutput = (typeof ((_b = (_a = transaction.object.serviceOutput) === null || _a === void 0 ? void 0 : _a.amount) === null || _b === void 0 ? void 0 : _b.currency) === 'string')
109
- ? {
110
- amount: {
111
- currency: transaction.object.serviceOutput.amount.currency,
112
- value: transaction.object.paymentMethod.amount
113
- }
114
- }
115
- : undefined;
116
- if (creditCardAsPaymentServiceOutput !== undefined) {
117
- paymentServiceOutput = creditCardAsPaymentServiceOutput;
118
- }
125
+ // const creditCardAsPaymentServiceOutput: factory.order.IOrderPaymentMethodIssuedThroughServiceOutput | undefined =
126
+ // (typeof transaction.object.paymentMethod?.amount !== 'number'
127
+ // && typeof transaction.object.paymentMethod?.amount?.currency === 'string')
128
+ // ? {
129
+ // paymentMethod: {
130
+ // amount: {
131
+ // currency: transaction.object.paymentMethod.amount.currency,
132
+ // value: transaction.object.paymentMethod.amount.value
133
+ // }
134
+ // }
135
+ // }
136
+ // : undefined;
137
+ // if (creditCardAsPaymentServiceOutput !== undefined) {
138
+ // paymentServiceOutput = creditCardAsPaymentServiceOutput;
139
+ // }
119
140
  break;
120
141
  case factory.service.paymentService.PaymentServiceType.MovieTicket:
121
142
  const paymentMethodType = paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.typeOf;
@@ -6,7 +6,7 @@ exports.createStartParams = void 0;
6
6
  */
7
7
  const factory = require("../../../factory");
8
8
  function createStartParams(params) {
9
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
9
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
10
10
  const paymentMethodType = (_a = params.object.paymentMethod) === null || _a === void 0 ? void 0 : _a.typeOf;
11
11
  if (typeof paymentMethodType !== 'string') {
12
12
  throw new factory.errors.ArgumentNull('object.paymentMethod.typeOf');
@@ -23,7 +23,7 @@ function createStartParams(params) {
23
23
  let refundFee;
24
24
  if (((_g = params.paymentService) === null || _g === void 0 ? void 0 : _g.typeOf) === factory.service.paymentService.PaymentServiceType.CreditCard) {
25
25
  // カード通貨区分の存在する決済サービスを考慮(2023-08-09~)
26
- const paymentServiceOutputAmountCurrency = (_j = (_h = params.paymentService.serviceOutput) === null || _h === void 0 ? void 0 : _h.amount) === null || _j === void 0 ? void 0 : _j.currency;
26
+ const paymentServiceOutputAmountCurrency = (_k = (_j = (_h = params.paymentService.serviceOutput) === null || _h === void 0 ? void 0 : _h.paymentMethod) === null || _j === void 0 ? void 0 : _j.amount) === null || _k === void 0 ? void 0 : _k.currency;
27
27
  if (typeof paymentServiceOutputAmountCurrency !== 'string') {
28
28
  if (typeof params.object.refundFee === 'number') {
29
29
  refundFee = params.object.refundFee;
@@ -1,4 +1,5 @@
1
1
  import { MongoRepository as AccountingReportRepo } from '../../repo/accountingReport';
2
+ import { MongoRepository as EventRepo } from '../../repo/event';
2
3
  import { MongoRepository as OrderRepo } from '../../repo/order';
3
4
  import { MongoRepository as OwnershipInfoRepo } from '../../repo/ownershipInfo';
4
5
  import { MongoRepository as ReservationRepo } from '../../repo/reservation';
@@ -11,6 +12,7 @@ declare function deleteOrder(params: {
11
12
  object: Pick<factory.order.IOrder, 'project' | 'typeOf' | 'confirmationNumber' | 'orderDate' | 'orderNumber'>;
12
13
  }): (repos: {
13
14
  accountingReport: AccountingReportRepo;
15
+ event: EventRepo;
14
16
  order: OrderRepo;
15
17
  ownershipInfo: OwnershipInfoRepo;
16
18
  reservation: ReservationRepo;
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.deleteOrder = void 0;
13
13
  const factory_1 = require("../delivery/factory");
14
14
  const factory = require("../../factory");
15
+ const settings_1 = require("../../settings");
15
16
  /**
16
17
  * 注文に関わるリソースを削除する
17
18
  * 冪等性を確保すること
@@ -38,6 +39,10 @@ function deleteOrder(params) {
38
39
  }
39
40
  // 経理レポート削除
40
41
  yield repos.accountingReport.deleteByOrderNumber({ mainEntity: { orderNumber: order.orderNumber } });
42
+ // 終了済の関連イベントを削除(2023-08-16~)
43
+ if (settings_1.USE_DELETE_EVENT_BY_ORDER) {
44
+ yield deleteEventsByOrder(order)(repos);
45
+ }
41
46
  // 注文削除
42
47
  yield repos.order.deleteByOrderNumber({ orderNumber: order.orderNumber });
43
48
  });
@@ -73,3 +78,40 @@ function deleteOwnershipInfosByOrder(order) {
73
78
  }
74
79
  });
75
80
  }
81
+ function deleteEventsByOrder(order) {
82
+ return (repos) => __awaiter(this, void 0, void 0, function* () {
83
+ const now = new Date();
84
+ const acceptedOffers = (Array.isArray(order.acceptedOffers)) ? order.acceptedOffers : [];
85
+ const reservationForIds = acceptedOffers.filter((o) => {
86
+ return (o.itemOffered.typeOf === factory.reservationType.EventReservation
87
+ || o.itemOffered.typeOf === factory.reservationType.BusReservation)
88
+ && typeof o.itemOffered.reservationFor.id === 'string';
89
+ })
90
+ .map((o) => {
91
+ return String(o.itemOffered.reservationFor.id);
92
+ });
93
+ if (reservationForIds.length > 0) {
94
+ for (const reservationForId of reservationForIds) {
95
+ // 関連注文が存在しなければ削除
96
+ const relatedOrders = yield repos.order.search({
97
+ limit: 1,
98
+ page: 1,
99
+ project: { id: { $eq: order.project.id } },
100
+ acceptedOffers: {
101
+ itemOffered: {
102
+ reservationFor: { ids: [reservationForId] }
103
+ }
104
+ }
105
+ }, { _id: 1 });
106
+ if (relatedOrders.length === 0) {
107
+ yield repos.event.deleteManyEndedByIds({
108
+ typeOf: { $in: [factory.eventType.Event, factory.eventType.ScreeningEvent] },
109
+ project: { id: order.project.id },
110
+ ids: [reservationForId],
111
+ endDate: { $lte: now }
112
+ });
113
+ }
114
+ }
115
+ }
116
+ });
117
+ }
@@ -80,28 +80,39 @@ function createMovieTicket(params) {
80
80
  };
81
81
  }
82
82
  function createAuthorizeResult(params) {
83
- var _a, _b, _c, _d, _e, _f;
83
+ var _a, _b, _c, _d, _e, _f, _g;
84
84
  const payTransactionObject = params.payTransaction.object;
85
85
  const totalPaymentDue = (_a = payTransactionObject.paymentMethod) === null || _a === void 0 ? void 0 : _a.totalPaymentDue;
86
86
  if (typeof (totalPaymentDue === null || totalPaymentDue === void 0 ? void 0 : totalPaymentDue.typeOf) !== 'string') {
87
87
  throw new factory.errors.ServiceUnavailable('payTransaction.object.paymentMethod.totalPaymentDue undefined');
88
88
  }
89
- const issuedThrough = Object.assign({ typeOf: payTransactionObject.typeOf, id: (typeof payTransactionObject.id === 'string') ? payTransactionObject.id : '' }, (typeof ((_c = (_b = payTransactionObject.serviceOutput) === null || _b === void 0 ? void 0 : _b.amount) === null || _c === void 0 ? void 0 : _c.currency) === 'string')
90
- ? { serviceOutput: payTransactionObject.serviceOutput }
89
+ const issuedThrough = {
90
+ typeOf: payTransactionObject.typeOf,
91
+ id: (typeof payTransactionObject.id === 'string') ? payTransactionObject.id : ''
92
+ };
93
+ // 決済取引から決済カード通貨区分を取り出す
94
+ const paymentMethodAmountCurrencyByPayTransaction = (typeof ((_b = payTransactionObject.paymentMethod) === null || _b === void 0 ? void 0 : _b.amount) !== 'number')
95
+ ? (_d = (_c = payTransactionObject.paymentMethod) === null || _c === void 0 ? void 0 : _c.amount) === null || _d === void 0 ? void 0 : _d.currency
96
+ : undefined;
97
+ const paymentMethodAsObject = Object.assign({ typeOf: params.object.paymentMethod }, (payTransactionObject.typeOf === factory.service.paymentService.PaymentServiceType.CreditCard
98
+ && typeof paymentMethodAmountCurrencyByPayTransaction === 'string')
99
+ ? { amount: { currency: paymentMethodAmountCurrencyByPayTransaction } }
91
100
  : undefined);
92
101
  return {
93
- accountId: (typeof ((_d = payTransactionObject.paymentMethod) === null || _d === void 0 ? void 0 : _d.accountId) === 'string')
102
+ accountId: (typeof ((_e = payTransactionObject.paymentMethod) === null || _e === void 0 ? void 0 : _e.accountId) === 'string')
94
103
  ? payTransactionObject.paymentMethod.accountId
95
104
  : '',
96
105
  // 廃止(2023-08-07~)
97
106
  // amount: params.object.amount,
98
107
  issuedThrough,
99
- paymentMethod: params.object.paymentMethod,
108
+ // 完全廃止(paymentMethodAsObjectへ完全移行)(2023-08-16~)
109
+ // paymentMethod: params.object.paymentMethod,
110
+ paymentMethodAsObject,
100
111
  paymentStatus: factory.paymentStatusType.PaymentDue,
101
- paymentMethodId: (typeof ((_e = payTransactionObject.paymentMethod) === null || _e === void 0 ? void 0 : _e.paymentMethodId) === 'string')
112
+ paymentMethodId: (typeof ((_f = payTransactionObject.paymentMethod) === null || _f === void 0 ? void 0 : _f.paymentMethodId) === 'string')
102
113
  ? payTransactionObject.paymentMethod.paymentMethodId
103
114
  : '',
104
- name: (typeof ((_f = payTransactionObject.paymentMethod) === null || _f === void 0 ? void 0 : _f.name) === 'string')
115
+ name: (typeof ((_g = payTransactionObject.paymentMethod) === null || _g === void 0 ? void 0 : _g.name) === 'string')
105
116
  ? payTransactionObject.paymentMethod.name
106
117
  : params.object.paymentMethod,
107
118
  totalPaymentDue: totalPaymentDue,
@@ -114,7 +114,9 @@ function processAuthorizeCreditCard(params) {
114
114
  shopPass: params.shopPass,
115
115
  orderId: params.orderId,
116
116
  jobCd: GMO.utils.util.JobCd.Auth,
117
- amount: params.object.amount,
117
+ amount: (typeof params.object.amount === 'number')
118
+ ? params.object.amount
119
+ : params.object.amount.value,
118
120
  siteId: (_a = params.availableChannel.credentials) === null || _a === void 0 ? void 0 : _a.siteId,
119
121
  sitePass: (_b = params.availableChannel.credentials) === null || _b === void 0 ? void 0 : _b.sitePass
120
122
  };
@@ -127,7 +127,7 @@ function validatePaymentMethod(params, paymentServiceId) {
127
127
  }
128
128
  function processAccountTransaction(params) {
129
129
  return (repos) => __awaiter(this, void 0, void 0, function* () {
130
- var _a, _b, _c, _d, _e, _f;
130
+ var _a, _b, _c, _d, _e, _f, _g, _h;
131
131
  let pendingTransaction;
132
132
  const defaultName = `${factory.assetTransactionType.Pay} Transaction ${params.transactionNumber}`;
133
133
  const agent = Object.assign(Object.assign({}, params.agent), { name: (typeof params.agent.name === 'string') ? params.agent.name : defaultName });
@@ -165,7 +165,11 @@ function processAccountTransaction(params) {
165
165
  expires: params.expires,
166
166
  recipient: recipient,
167
167
  object: {
168
- amount: { value: (_f = params.paymentMethod) === null || _f === void 0 ? void 0 : _f.amount },
168
+ amount: {
169
+ value: (typeof ((_f = params.paymentMethod) === null || _f === void 0 ? void 0 : _f.amount) === 'number')
170
+ ? (_g = params.paymentMethod) === null || _g === void 0 ? void 0 : _g.amount
171
+ : (_h = params.paymentMethod) === null || _h === void 0 ? void 0 : _h.amount.value
172
+ },
169
173
  description: description,
170
174
  fromLocation: {
171
175
  accountNumber: accountNumber
@@ -13,6 +13,7 @@ exports.call = void 0;
13
13
  const accountingReport_1 = require("../../repo/accountingReport");
14
14
  const action_1 = require("../../repo/action");
15
15
  const assetTransaction_1 = require("../../repo/assetTransaction");
16
+ const event_1 = require("../../repo/event");
16
17
  const order_1 = require("../../repo/order");
17
18
  const ownershipInfo_1 = require("../../repo/ownershipInfo");
18
19
  const reservation_1 = require("../../repo/reservation");
@@ -28,6 +29,7 @@ function call(data) {
28
29
  accountingReport: new accountingReport_1.MongoRepository(settings.connection),
29
30
  action: new action_1.MongoRepository(settings.connection),
30
31
  assetTransaction: new assetTransaction_1.MongoRepository(settings.connection),
32
+ event: new event_1.MongoRepository(settings.connection),
31
33
  order: new order_1.MongoRepository(settings.connection),
32
34
  ownershipInfo: new ownershipInfo_1.MongoRepository(settings.connection),
33
35
  reservation: new reservation_1.MongoRepository(settings.connection),
@@ -2,6 +2,7 @@ import * as factory from '../../factory';
2
2
  import { MongoRepository as AccountingReportRepo } from '../../repo/accountingReport';
3
3
  import { MongoRepository as ActionRepo } from '../../repo/action';
4
4
  import { MongoRepository as AssetTransactionRepo } from '../../repo/assetTransaction';
5
+ import { MongoRepository as EventRepo } from '../../repo/event';
5
6
  import { MongoRepository as OrderRepo } from '../../repo/order';
6
7
  import { MongoRepository as OwnershipInfoRepo } from '../../repo/ownershipInfo';
7
8
  import { MongoRepository as ReservationRepo } from '../../repo/reservation';
@@ -15,6 +16,7 @@ export declare function deleteTransaction(params: factory.task.IData<factory.tas
15
16
  accountingReport: AccountingReportRepo;
16
17
  action: ActionRepo;
17
18
  assetTransaction: AssetTransactionRepo;
19
+ event: EventRepo;
18
20
  order: OrderRepo;
19
21
  ownershipInfo: OwnershipInfoRepo;
20
22
  reservation: ReservationRepo;
@@ -14,12 +14,8 @@ function createStartParams(params, passport, seller, amount, fromLocation, toLoc
14
14
  id: String(seller.id),
15
15
  name: seller.name,
16
16
  typeOf: seller.typeOf
17
- // ↓最適化(2022-05-24~)
18
- // ...{ project: seller.project }
19
17
  },
20
- object: Object.assign(Object.assign({ amount: amount, fromLocation: fromLocation, toLocation: toLocation,
21
- // authorizeActions: [],
22
- pendingTransaction: Object.assign({ transactionNumber }, (typeof ((_a = params.object.pendingTransaction) === null || _a === void 0 ? void 0 : _a.identifier) === 'string')
18
+ object: Object.assign(Object.assign({ amount: amount, fromLocation: fromLocation, toLocation: toLocation, pendingTransaction: Object.assign({ transactionNumber }, (typeof ((_a = params.object.pendingTransaction) === null || _a === void 0 ? void 0 : _a.identifier) === 'string')
23
19
  ? { identifier: params.object.pendingTransaction.identifier }
24
20
  : undefined) }, (passport !== undefined) ? { passport } : undefined), (typeof params.object.description === 'string') ? { description: params.object.description } : undefined),
25
21
  expires: params.expires
@@ -537,7 +537,6 @@ function confirm(params) {
537
537
  yield repos.transaction.confirm({
538
538
  typeOf: factory.transactionType.MoneyTransfer,
539
539
  id: transaction.id,
540
- authorizeActions: [],
541
540
  result: {},
542
541
  potentialActions: potentialActions
543
542
  });
@@ -117,10 +117,6 @@ function createProductItems(params) {
117
117
  exports.createProductItems = createProductItems;
118
118
  function createMoneyTransferAcceptedOffers(params) {
119
119
  // 通貨転送承認アクション
120
- // const authorizeMoneyTansferActions = (<IAuthorizeMoneyTransferOffer[]>params.transaction.object.authorizeActions)
121
- // .filter((a) => a.actionStatus === factory.actionStatusType.CompletedActionStatus)
122
- // .filter((a) => a.object.typeOf === factory.offerType.Offer)
123
- // .filter((a) => a.object.itemOffered?.typeOf === factory.actionType.MoneyTransfer);
124
120
  const authorizeMoneyTansferActions = params.authorizeActions
125
121
  .filter((a) => a.actionStatus === factory.actionStatusType.CompletedActionStatus)
126
122
  .filter((a) => a.object.typeOf === factory.offerType.Offer)
@@ -70,16 +70,18 @@ function createPaymentMethods(params) {
70
70
  });
71
71
  // 決済方法をセット
72
72
  authorizePaymentActions.forEach((a) => {
73
+ var _a, _b, _c;
73
74
  const result = a.result;
74
- paymentMethods.push({
75
- accountId: result.accountId,
76
- additionalProperty: (Array.isArray(result.additionalProperty)) ? result.additionalProperty : [],
77
- issuedThrough: result.issuedThrough,
78
- name: result.name,
79
- paymentMethodId: result.paymentMethodId,
80
- totalPaymentDue: result.totalPaymentDue,
81
- typeOf: result.paymentMethod
82
- });
75
+ const paymentMethodAmountCurrencyByAuthorizeAction = (_b = (_a = result.paymentMethodAsObject) === null || _a === void 0 ? void 0 : _a.amount) === null || _b === void 0 ? void 0 : _b.currency;
76
+ const paymentMethodOfInvoice = (typeof paymentMethodAmountCurrencyByAuthorizeAction === 'string') ?
77
+ { amount: { currency: paymentMethodAmountCurrencyByAuthorizeAction } }
78
+ : undefined;
79
+ // 決済方法区分は必ず存在するはず(2023-08-15~)
80
+ const paymentMethodType = (_c = result.paymentMethodAsObject) === null || _c === void 0 ? void 0 : _c.typeOf;
81
+ if (typeof paymentMethodType !== 'string') {
82
+ throw new factory.errors.NotFound('authorizePaymentAction.result.paymentMethodAsObject.typeOf');
83
+ }
84
+ paymentMethods.push(Object.assign({ accountId: result.accountId, additionalProperty: (Array.isArray(result.additionalProperty)) ? result.additionalProperty : [], issuedThrough: result.issuedThrough, name: result.name, paymentMethodId: result.paymentMethodId, totalPaymentDue: result.totalPaymentDue, typeOf: paymentMethodType }, (paymentMethodOfInvoice !== undefined) ? { paymentMethod: paymentMethodOfInvoice } : undefined));
83
85
  });
84
86
  // 決済方法から注文金額の計算
85
87
  // price += authorizePaymentActions
@@ -11,14 +11,16 @@ const debug = createDebug('cinerino-domain:service:validateMovieTicket');
11
11
  * 座席予約オファー承認に対してムビチケ承認条件が整っているかどうか検証する
12
12
  */
13
13
  function validateMovieTicket(paymentMethodType, transaction, authorizeActions) {
14
- // const authorizeActions = transaction.object.authorizeActions;
15
14
  const authorizeMovieTicketActions = authorizeActions.filter((a) => {
16
- var _a, _b, _c;
15
+ var _a, _b, _c, _d;
17
16
  return a.actionStatus === factory.actionStatusType.CompletedActionStatus
18
17
  && ((_a = a.result) === null || _a === void 0 ? void 0 : _a.typeOf) === factory.action.authorize.paymentMethod.any.ResultType.Payment
19
18
  && ((_b = a.result) === null || _b === void 0 ? void 0 : _b.issuedThrough.typeOf) === factory.service.paymentService.PaymentServiceType.MovieTicket
20
- && ((_c = a.result) === null || _c === void 0 ? void 0 : _c.paymentMethod) === paymentMethodType;
21
- });
19
+ // 決済方法区分は必ず存在するはず(2023-08-15~)
20
+ && ((_d = (_c = a.result) === null || _c === void 0 ? void 0 : _c.paymentMethodAsObject) === null || _d === void 0 ? void 0 : _d.typeOf) === paymentMethodType;
21
+ }
22
+ // && a.result?.paymentMethod === paymentMethodType
23
+ );
22
24
  const seatReservationAuthorizeActions = authorizeActions.filter((a) => a.actionStatus === factory.actionStatusType.CompletedActionStatus
23
25
  && a.object.typeOf === factory.action.authorize.offer.seatReservation.ObjectType.SeatReservation);
24
26
  // 予約によって必要とされるMovieTicket
@@ -38,10 +38,7 @@ function validateTransaction(transaction, authorizeActions) {
38
38
  validatePaymentUrl(transaction, authorizeActions);
39
39
  }
40
40
  exports.validateTransaction = validateTransaction;
41
- function findMovieTicketPaymentMethodTypesFromTransaction(
42
- // transaction: factory.transaction.placeOrder.ITransaction,
43
- authorizeActions) {
44
- // const authorizeActions = transaction.object.authorizeActions;
41
+ function findMovieTicketPaymentMethodTypesFromTransaction(authorizeActions) {
45
42
  const authorizeMovieTicketPaymentActions = authorizeActions.filter((a) => {
46
43
  var _a, _b;
47
44
  return a.actionStatus === factory.actionStatusType.CompletedActionStatus
@@ -55,9 +52,6 @@ authorizeActions) {
55
52
  seatReservationAuthorizeActions.forEach((action) => {
56
53
  var _a;
57
54
  // a.objectではなくa.resultを使用する(2022-06-04~)
58
- // const acceptedOffer =
59
- // tslint:disable-next-line:max-line-length
60
- // (<factory.action.authorize.offer.seatReservation.IObject<factory.service.webAPI.Identifier.Chevre>>action.object).acceptedOffer;
61
55
  const acceptedOffers = (_a = action.result) === null || _a === void 0 ? void 0 : _a.acceptedOffers;
62
56
  acceptedOffers === null || acceptedOffers === void 0 ? void 0 : acceptedOffers.forEach((offer) => {
63
57
  var _a;
@@ -72,14 +66,15 @@ authorizeActions) {
72
66
  });
73
67
  });
74
68
  const paymentMethodTypes = [
75
- ...authorizeMovieTicketPaymentActions.map((a) => { var _a; return String((_a = a.result) === null || _a === void 0 ? void 0 : _a.paymentMethod); }),
69
+ // 決済方法区分は必ず存在するはず(2023-08-15~)
70
+ ...authorizeMovieTicketPaymentActions.map((a) => { var _a, _b; return String((_b = (_a = a.result) === null || _a === void 0 ? void 0 : _a.paymentMethodAsObject) === null || _b === void 0 ? void 0 : _b.typeOf); }),
71
+ // ...authorizeMovieTicketPaymentActions.map((a) => String(a.result?.paymentMethod)),
76
72
  ...requiredMovieTicketPaymentMethodTypes
77
73
  ];
78
74
  return [...new Set(paymentMethodTypes)];
79
75
  }
80
76
  function validateProfile(transaction) {
81
77
  // object.customerで検証(2022-05-26~)
82
- // const profile = transaction.agent;
83
78
  const profile = transaction.object.customer;
84
79
  if (typeof (profile === null || profile === void 0 ? void 0 : profile.email) !== 'string' || (profile === null || profile === void 0 ? void 0 : profile.email.length) === 0
85
80
  || typeof (profile === null || profile === void 0 ? void 0 : profile.familyName) !== 'string' || (profile === null || profile === void 0 ? void 0 : profile.familyName.length) === 0
@@ -89,7 +84,6 @@ function validateProfile(transaction) {
89
84
  }
90
85
  }
91
86
  function validatePrice(transaction, authorizeActions) {
92
- // const authorizeActions = transaction.object.authorizeActions;
93
87
  let priceByAgent = 0;
94
88
  let priceBySeller = 0;
95
89
  // 決済承認を確認
@@ -121,7 +115,6 @@ function validatePrice(transaction, authorizeActions) {
121
115
  }
122
116
  }
123
117
  function validatePaymentUrl(transaction, authorizeActions) {
124
- // const authorizeActions = transaction.object.authorizeActions;
125
118
  var _a, _b;
126
119
  // 決済URLが発行されている場合、検証
127
120
  const paymentMethodId = (_a = transaction.object.paymentMethods) === null || _a === void 0 ? void 0 : _a.paymentMethodId;
@@ -145,10 +138,7 @@ function validatePaymentUrl(transaction, authorizeActions) {
145
138
  /**
146
139
  * JPY以外の通貨について取引を検証する
147
140
  */
148
- function validateMonetaryAmount(
149
- // transaction: factory.transaction.placeOrder.ITransaction,
150
- authorizeActions) {
151
- // const authorizeActions = transaction.object.authorizeActions;
141
+ function validateMonetaryAmount(authorizeActions) {
152
142
  const authorizeMonetaryAmountActions = authorizeActions
153
143
  .filter((a) => {
154
144
  var _a, _b;
@@ -216,7 +206,7 @@ function validatePaymentMethods(params) {
216
206
  const creditCardPaymentMethodCount = params.order.paymentMethods.filter((p) => {
217
207
  var _a, _b;
218
208
  // カード通貨区分の存在する決済サービスを考慮(2023-08-09~)
219
- const serviceOutputAmountCurrency = (_b = (_a = p.issuedThrough.serviceOutput) === null || _a === void 0 ? void 0 : _a.amount) === null || _b === void 0 ? void 0 : _b.currency;
209
+ const serviceOutputAmountCurrency = (_b = (_a = p.paymentMethod) === null || _a === void 0 ? void 0 : _a.amount) === null || _b === void 0 ? void 0 : _b.currency;
220
210
  return p.issuedThrough.typeOf === factory.service.paymentService.PaymentServiceType.CreditCard
221
211
  && typeof serviceOutputAmountCurrency !== 'string';
222
212
  }).length;
@@ -230,10 +220,6 @@ exports.validatePaymentMethods = validatePaymentMethods;
230
220
  * イベントオファー適用条件確認
231
221
  */
232
222
  function validateEventOffers(params) {
233
- // const seatReservationAuthorizeActions = <IAuthorizeSeatReservationOffer[]>
234
- // params.transaction.object.authorizeActions
235
- // .filter((a) => a.actionStatus === factory.actionStatusType.CompletedActionStatus)
236
- // .filter((a) => a.object.typeOf === factory.action.authorize.offer.seatReservation.ObjectType.SeatReservation);
237
223
  const seatReservationAuthorizeActions = params.authorizeActions
238
224
  .filter((a) => a.actionStatus === factory.actionStatusType.CompletedActionStatus)
239
225
  .filter((a) => a.object.typeOf === factory.action.authorize.offer.seatReservation.ObjectType.SeatReservation);
@@ -102,7 +102,6 @@ function confirm(params) {
102
102
  }
103
103
  // 取引に対する全ての承認アクションをマージ
104
104
  const authorizeActions = yield searchAuthorizeActions(params)(repos);
105
- // transaction.object.authorizeActions = authorizeActions;
106
105
  // 注文番号を発行
107
106
  const orderNumber = yield publishOrderNumberIfNotExist({
108
107
  project: { id: transaction.project.id },
@@ -134,8 +133,6 @@ function confirm(params) {
134
133
  yield repos.transaction.confirm({
135
134
  typeOf: transaction.typeOf,
136
135
  id: transaction.id,
137
- // 保管有無を設定化(2023-05-16~)
138
- authorizeActions: [],
139
136
  result: result,
140
137
  potentialActions: potentialActions
141
138
  });
@@ -588,7 +588,6 @@ function confirm(params) {
588
588
  yield repos.transaction.confirm({
589
589
  typeOf: transaction.typeOf,
590
590
  id: transaction.id,
591
- authorizeActions: [],
592
591
  result: result,
593
592
  potentialActions: potentialActions
594
593
  });
@@ -40,6 +40,8 @@ export declare const USE_ASSET_TRANSACTION_SYNC_PROCESSING: boolean;
40
40
  export declare const USE_PAY_ASSET_TRANSACTION_SYNC_PROCESSING: boolean;
41
41
  export declare const USE_NEW_EVENT_AVAILABILITY_KEY_FROM: moment.Moment;
42
42
  export declare const USE_ADVANCE_BOOKING_REQUIREMENT: boolean;
43
+ export declare const USE_OBJECT_AS_PAY_TRANSACTION_AMOUNT: boolean;
44
+ export declare const USE_DELETE_EVENT_BY_ORDER: boolean;
43
45
  export declare const INFORM_RESERVATION_TASK_DELAY_IN_SECONDS: number;
44
46
  export declare const MONGO_MAX_TIME_MS: number;
45
47
  /**
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.settings = exports.MONGO_MAX_TIME_MS = exports.INFORM_RESERVATION_TASK_DELAY_IN_SECONDS = exports.USE_ADVANCE_BOOKING_REQUIREMENT = exports.USE_NEW_EVENT_AVAILABILITY_KEY_FROM = exports.USE_PAY_ASSET_TRANSACTION_SYNC_PROCESSING = exports.USE_ASSET_TRANSACTION_SYNC_PROCESSING = exports.DEFAULT_TASKS_EXPORT_AGENT_NAME = exports.DEFAULT_PAYMENT_METHOD_TYPE_FOR_CREDIT_CARD = exports.DEFAULT_SENDER_EMAIL = exports.TRANSACTION_CANCELED_STORAGE_PERIOD_IN_DAYS = exports.TRANSACTION_CONFIRMED_STORAGE_PERIOD_IN_DAYS = exports.ASSET_TRANSACTION_STORAGE_PERIOD_IN_DAYS = exports.ABORTED_TASKS_WITHOUT_REPORT = exports.TRIGGER_WEBHOOK_RETRY_INTERVAL_IN_MS = exports.TRIGGER_WEBHOOK_MAX_RETRY_COUNT = void 0;
3
+ exports.settings = exports.MONGO_MAX_TIME_MS = exports.INFORM_RESERVATION_TASK_DELAY_IN_SECONDS = exports.USE_DELETE_EVENT_BY_ORDER = exports.USE_OBJECT_AS_PAY_TRANSACTION_AMOUNT = exports.USE_ADVANCE_BOOKING_REQUIREMENT = exports.USE_NEW_EVENT_AVAILABILITY_KEY_FROM = exports.USE_PAY_ASSET_TRANSACTION_SYNC_PROCESSING = exports.USE_ASSET_TRANSACTION_SYNC_PROCESSING = exports.DEFAULT_TASKS_EXPORT_AGENT_NAME = exports.DEFAULT_PAYMENT_METHOD_TYPE_FOR_CREDIT_CARD = exports.DEFAULT_SENDER_EMAIL = exports.TRANSACTION_CANCELED_STORAGE_PERIOD_IN_DAYS = exports.TRANSACTION_CONFIRMED_STORAGE_PERIOD_IN_DAYS = exports.ASSET_TRANSACTION_STORAGE_PERIOD_IN_DAYS = exports.ABORTED_TASKS_WITHOUT_REPORT = exports.TRIGGER_WEBHOOK_RETRY_INTERVAL_IN_MS = exports.TRIGGER_WEBHOOK_MAX_RETRY_COUNT = void 0;
4
4
  const moment = require("moment");
5
5
  const factory = require("./factory");
6
6
  const transactionWebhookUrls = (typeof process.env.INFORM_TRANSACTION_URL === 'string')
@@ -72,6 +72,8 @@ exports.USE_NEW_EVENT_AVAILABILITY_KEY_FROM = (typeof process.env.USE_NEW_EVENT_
72
72
  // ? process.env.USE_NEW_STOCK_HOLDER_REPO_IDS.split(' ')
73
73
  // : [];
74
74
  exports.USE_ADVANCE_BOOKING_REQUIREMENT = process.env.USE_ADVANCE_BOOKING_REQUIREMENT === '1';
75
+ exports.USE_OBJECT_AS_PAY_TRANSACTION_AMOUNT = process.env.USE_OBJECT_AS_PAY_TRANSACTION_AMOUNT === '1';
76
+ exports.USE_DELETE_EVENT_BY_ORDER = process.env.USE_DELETE_EVENT_BY_ORDER === '1';
75
77
  exports.INFORM_RESERVATION_TASK_DELAY_IN_SECONDS = (typeof process.env.INFORM_RESERVATION_TASK_DELAY_IN_SECONDS === 'string')
76
78
  ? Number(process.env.INFORM_RESERVATION_TASK_DELAY_IN_SECONDS)
77
79
  : 0;
package/package.json CHANGED
@@ -9,8 +9,8 @@
9
9
  }
10
10
  ],
11
11
  "dependencies": {
12
- "@chevre/factory": "4.325.0-alpha.0",
13
- "@cinerino/sdk": "3.163.0",
12
+ "@chevre/factory": "4.325.0-alpha.5",
13
+ "@cinerino/sdk": "3.164.0",
14
14
  "@motionpicture/coa-service": "9.2.0",
15
15
  "@motionpicture/gmo-service": "5.2.0",
16
16
  "@sendgrid/mail": "6.4.0",
@@ -117,5 +117,5 @@
117
117
  "postversion": "git push origin --tags",
118
118
  "prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
119
119
  },
120
- "version": "21.7.0-alpha.0"
120
+ "version": "21.7.0-alpha.10"
121
121
  }