@chevre/domain 21.20.0-alpha.41 → 21.20.0-alpha.43

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.
@@ -80,6 +80,18 @@ export declare class MongoRepository {
80
80
  };
81
81
  };
82
82
  }): Promise<ISearchSlicedAcceptedOffersResult>;
83
+ countByOrderNumber(filter: {
84
+ orderNumber: {
85
+ $eq: string;
86
+ };
87
+ project: {
88
+ id: {
89
+ $eq: string;
90
+ };
91
+ };
92
+ }): Promise<{
93
+ numAcceptedOffers: number;
94
+ }>;
83
95
  /**
84
96
  * 特定のフィールド値リストを検索する
85
97
  */
@@ -182,6 +182,28 @@ class MongoRepository {
182
182
  return result;
183
183
  });
184
184
  }
185
+ countByOrderNumber(filter) {
186
+ return __awaiter(this, void 0, void 0, function* () {
187
+ const aggregate = this.orderModel.aggregate([
188
+ { $match: { orderNumber: { $eq: filter.orderNumber.$eq } } },
189
+ { $match: { 'project.id': { $eq: filter.project.id.$eq } } },
190
+ { $match: { typeOf: { $eq: factory.order.OrderType.Order } } },
191
+ {
192
+ $project: {
193
+ _id: 0,
194
+ numAcceptedOffers: { $size: '$acceptedOffers' }
195
+ }
196
+ }
197
+ ]);
198
+ const result = (yield aggregate
199
+ .option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
200
+ .exec()).shift();
201
+ if (result === undefined) {
202
+ throw new factory.errors.NotFound(factory.order.OrderType.Order);
203
+ }
204
+ return result;
205
+ });
206
+ }
185
207
  /**
186
208
  * 特定のフィールド値リストを検索する
187
209
  */
@@ -0,0 +1,19 @@
1
+ import * as factory from '../../factory';
2
+ import type { MongoRepository as AcceptedOfferRepo } from '../../repo/acceptedOffer';
3
+ import type { MongoRepository as OrderRepo } from '../../repo/order';
4
+ interface IConfirmRepo {
5
+ acceptedOffer: AcceptedOfferRepo;
6
+ order: OrderRepo;
7
+ }
8
+ type IConfirmOperation<T> = (repos: IConfirmRepo) => Promise<T>;
9
+ /**
10
+ * 取引確定
11
+ */
12
+ declare function confirm(params: {
13
+ project: {
14
+ id: string;
15
+ };
16
+ object: factory.action.interact.confirm.reservation.IObject4COA;
17
+ purpose: factory.action.interact.confirm.reservation.IPurpose;
18
+ }): IConfirmOperation<void>;
19
+ export { confirm };
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.confirm = void 0;
13
+ /**
14
+ * COA予約取引サービス
15
+ */
16
+ const COA = require("@motionpicture/coa-service");
17
+ const createDebug = require("debug");
18
+ const google_libphonenumber_1 = require("google-libphonenumber");
19
+ const util_1 = require("util");
20
+ const credentials_1 = require("../../credentials");
21
+ const factory = require("../../factory");
22
+ const debug = createDebug('chevre-domain:service:assetTransaction');
23
+ const coaAuthClient = new COA.auth.RefreshToken({
24
+ endpoint: credentials_1.credentials.coa.endpoint,
25
+ refreshToken: credentials_1.credentials.coa.refreshToken
26
+ });
27
+ function createConfirmObject4COAByOrder(params) {
28
+ // COA予約のみ
29
+ const coaReservationOffers = params.order.acceptedOffers.filter((o) => {
30
+ var _a;
31
+ return o.itemOffered.typeOf === factory.reservationType.EventReservation
32
+ && ((_a = o.offeredThrough) === null || _a === void 0 ? void 0 : _a.identifier) === factory.service.webAPI.Identifier.COA;
33
+ });
34
+ const customer = params.order.customer;
35
+ // 電話番号のフォーマットを日本人にリーダブルに調整(COAではこのフォーマットで扱うので)
36
+ const phoneUtil = google_libphonenumber_1.PhoneNumberUtil.getInstance();
37
+ const phoneNumber = phoneUtil.parse(customer.telephone, 'JP');
38
+ let telNum = phoneUtil.format(phoneNumber, google_libphonenumber_1.PhoneNumberFormat.NATIONAL);
39
+ // COAでは数字のみ受け付けるので数字以外を除去
40
+ telNum = telNum.replace(/[^\d]/g, '');
41
+ const mailAddr = customer.email;
42
+ if (mailAddr === undefined) {
43
+ throw new factory.errors.Argument('order', 'order.customer.email undefined');
44
+ }
45
+ const coaReservations = coaReservationOffers
46
+ .filter((o) => o.itemOffered.reservationNumber === params.reservationNumber)
47
+ .map((o) => {
48
+ return o.itemOffered;
49
+ });
50
+ const coaReservation = coaReservations[0];
51
+ const reservationForCOAInfo = coaReservation.reservationFor.coaInfo;
52
+ if (reservationForCOAInfo === undefined) {
53
+ throw new factory.errors.NotFound('reservationFor.coaInfo');
54
+ }
55
+ const totalPrice = coaReservation.reservedTicket.coaReserveAmount;
56
+ if (totalPrice === undefined) {
57
+ throw new factory.errors.NotFound('reservedTicket.coaReserveAmount');
58
+ }
59
+ const listTicket = coaReservations.map((r) => {
60
+ var _a;
61
+ if (typeof ((_a = r.reservedTicket.coaTicketInfo) === null || _a === void 0 ? void 0 : _a.ticketCode) !== 'string') {
62
+ throw new factory.errors.NotFound('reservedTicket.coaTicketInfo');
63
+ }
64
+ // 冗長な属性を排除(2023-03-20~)
65
+ const { ticketCode, stdPrice, addPrice, spseatAdd1, spseatAdd2, disPrice, salePrice, mvtkAppPrice, ticketCount, spseatKbn, seatNum, addGlasses, kbnEisyahousiki, mvtkNum, mvtkKbnDenshiken, mvtkKbnMaeuriken, mvtkKbnKensyu, mvtkSalesPrice, kbnMgtk } = r.reservedTicket.coaTicketInfo;
66
+ return {
67
+ ticketCode, stdPrice, addPrice, spseatAdd1, spseatAdd2,
68
+ disPrice, salePrice, mvtkAppPrice, ticketCount, spseatKbn,
69
+ seatNum, addGlasses, kbnEisyahousiki, mvtkNum, mvtkKbnDenshiken,
70
+ mvtkKbnMaeuriken, mvtkKbnKensyu, mvtkSalesPrice, kbnMgtk
71
+ };
72
+ });
73
+ return {
74
+ theaterCode: reservationForCOAInfo.theaterCode,
75
+ dateJouei: reservationForCOAInfo.dateJouei,
76
+ titleCode: reservationForCOAInfo.titleCode,
77
+ titleBranchNum: reservationForCOAInfo.titleBranchNum,
78
+ timeBegin: reservationForCOAInfo.timeBegin,
79
+ tmpReserveNum: params.reservationNumber,
80
+ // tslint:disable-next-line:no-irregular-whitespace
81
+ reserveName: (0, util_1.format)('%s %s', customer.familyName, customer.givenName),
82
+ // tslint:disable-next-line:no-irregular-whitespace
83
+ reserveNameJkana: (0, util_1.format)('%s %s', customer.familyName, customer.givenName),
84
+ telNum: telNum,
85
+ mailAddr: mailAddr,
86
+ reserveAmount: totalPrice,
87
+ listTicket
88
+ // transactionNumber: reservationNumber,
89
+ // typeOf: 'COAReserveTransaction'
90
+ };
91
+ }
92
+ /**
93
+ * 取引確定
94
+ */
95
+ function confirm(params) {
96
+ return (repos) => __awaiter(this, void 0, void 0, function* () {
97
+ // ここでIObject4COAを注文から生成する(2024-01-24~)
98
+ const order = yield fixOrderAsPurpose(params)(repos);
99
+ const updReserveArgs = createConfirmObject4COAByOrder({ order, reservationNumber: params.object.transactionNumber });
100
+ debug('confirming coa reserve transaction...', order, updReserveArgs);
101
+ // 未本予約であれば実行(COA本予約は一度成功すると成功できない)
102
+ // リトライ可能な前提でつくる必要があるので、要注意
103
+ // すでに本予約済みかどうか確認
104
+ const reserveService = new COA.service.Reserve({
105
+ endpoint: credentials_1.credentials.coa.endpoint,
106
+ auth: coaAuthClient
107
+ }, { timeout: credentials_1.credentials.coa.timeout });
108
+ const stateReserveResult = yield reserveService.stateReserve({
109
+ theaterCode: params.object.theaterCode,
110
+ reserveNum: params.object.tmpReserveNum,
111
+ telNum: params.object.telNum
112
+ });
113
+ if (stateReserveResult === null) {
114
+ yield reserveService.updReserve(params.object);
115
+ }
116
+ });
117
+ }
118
+ exports.confirm = confirm;
119
+ function fixOrderAsPurpose(params) {
120
+ return (repos) => __awaiter(this, void 0, void 0, function* () {
121
+ let order;
122
+ const purposeOrderNumber = params.purpose.orderNumber;
123
+ const orders = yield repos.order.search({
124
+ limit: 1,
125
+ page: 1,
126
+ project: { id: { $eq: params.project.id } },
127
+ // confirmationNumbers: [payPurposeConfirmationNumber],
128
+ orderNumbers: [purposeOrderNumber]
129
+ }, { customer: 1, orderNumber: 1, typeOf: 1 });
130
+ order = orders.shift();
131
+ if (order === undefined) {
132
+ throw new factory.errors.NotFound('Order as purpose');
133
+ }
134
+ const acceptedOffers = yield repos.acceptedOffer.searchAcceptedOffersByOrderNumber({
135
+ orderNumber: { $eq: order.orderNumber },
136
+ project: { id: { $eq: params.project.id } }
137
+ }, ['itemOffered', 'offeredThrough']);
138
+ return Object.assign(Object.assign({}, order), { acceptedOffers });
139
+ });
140
+ }
@@ -10,9 +10,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.processing2inTransit = exports.paymentDue2Processing = exports.onAssetTransactionStatusChanged = void 0;
13
+ const createDebug = require("debug");
13
14
  const findPlaceOrderTransaction_1 = require("./findPlaceOrderTransaction");
14
15
  const onOrderStatusChanged_1 = require("./onOrderStatusChanged");
15
16
  const factory = require("../../factory");
17
+ const debug = createDebug('chevre-domain:service:order');
16
18
  // tslint:disable-next-line:max-func-body-length
17
19
  function onAssetTransactionStatusChanged(params) {
18
20
  return (repos) => __awaiter(this, void 0, void 0, function* () {
@@ -200,9 +202,15 @@ function paymentDue2Processing(params) {
200
202
  const acceptedOffers = yield repos.acceptedOffer.searchAcceptedOffersByOrderNumber({
201
203
  orderNumber: { $eq: order.orderNumber },
202
204
  project: { id: { $eq: params.project.id } }
205
+ }, ['itemOffered', 'offeredThrough']);
206
+ const { numAcceptedOffers } = yield repos.acceptedOffer.countByOrderNumber({
207
+ orderNumber: { $eq: order.orderNumber },
208
+ project: { id: { $eq: params.project.id } }
203
209
  });
210
+ debug('onAssetTransactionStatusChanged paymentDue2Processing: calling onOrderProcessing...', numAcceptedOffers, acceptedOffers);
204
211
  yield (0, onOrderStatusChanged_1.onOrderProcessing)({
205
- order: Object.assign(Object.assign({}, order), { acceptedOffers, orderStatus: factory.orderStatus.OrderProcessing // 強制的にOrderProcessingとして処理する
212
+ order: Object.assign(Object.assign({}, order), { acceptedOffers,
213
+ numAcceptedOffers, orderStatus: factory.orderStatus.OrderProcessing // 強制的にOrderProcessingとして処理する
206
214
  }),
207
215
  placeOrderTransaction
208
216
  })({
@@ -1,17 +1,18 @@
1
1
  import * as factory from '../../../../factory';
2
+ type IAcceptedOffer = Pick<factory.order.IAcceptedOffer<factory.order.IItemOffered>, 'itemOffered' | 'offeredThrough'>;
2
3
  type IProcessingOrder = factory.order.IOrder & {
3
- acceptedOffers: factory.order.IAcceptedOffer<factory.order.IItemOffered>[];
4
+ numAcceptedOffers: number;
4
5
  orderStatus: factory.orderStatus.OrderProcessing;
5
6
  };
6
7
  declare function createInformTasks(order: IProcessingOrder): factory.task.IAttributes<factory.taskName.TriggerWebhook>[];
7
8
  declare function createConfirmReservationActionObject4ChevreByOrder(params: {
8
9
  order: factory.order.IOrder & {
9
- acceptedOffers: factory.order.IAcceptedOffer<factory.order.IItemOffered>[];
10
+ acceptedOffers: IAcceptedOffer[];
10
11
  };
11
12
  }): factory.action.interact.confirm.reservation.IObject<factory.service.webAPI.Identifier.Chevre>[];
12
13
  declare function createConfirmReservationActionObject4COAByOrder(params: {
13
14
  order: factory.order.IOrder & {
14
- acceptedOffers: factory.order.IAcceptedOffer<factory.order.IItemOffered>[];
15
+ acceptedOffers: IAcceptedOffer[];
15
16
  };
16
17
  }): factory.action.interact.confirm.reservation.IObject<factory.service.webAPI.Identifier.COA>[];
17
18
  declare function createConfirmRegisterServiceActionObjectByOrder(params: {
@@ -20,4 +21,4 @@ declare function createConfirmRegisterServiceActionObjectByOrder(params: {
20
21
  };
21
22
  }): factory.action.interact.confirm.registerService.IObject[];
22
23
  type IExternalOrder = Pick<factory.order.IOrder, 'project' | 'typeOf' | 'seller' | 'customer' | 'confirmationNumber' | 'orderNumber' | 'price' | 'priceCurrency' | 'orderDate' | 'name' | 'orderStatus' | 'orderedItem' | 'paymentMethods'>;
23
- export { IExternalOrder, createInformTasks, createConfirmReservationActionObject4ChevreByOrder, createConfirmReservationActionObject4COAByOrder, createConfirmRegisterServiceActionObjectByOrder };
24
+ export { IAcceptedOffer, IExternalOrder, createInformTasks, createConfirmReservationActionObject4ChevreByOrder, createConfirmReservationActionObject4COAByOrder, createConfirmRegisterServiceActionObjectByOrder };
@@ -49,7 +49,9 @@ exports.createInformTasks = createInformTasks;
49
49
  function creteOrder4inform(order) {
50
50
  return Object.assign({
51
51
  // whitelistで作成する(2022-07-19~)
52
- project: order.project, typeOf: order.typeOf, seller: order.seller, price: order.price, priceCurrency: order.priceCurrency, confirmationNumber: order.confirmationNumber, orderNumber: order.orderNumber, acceptedOffers: (settings_1.USE_INFORM_ACCEPTED_OFFERS_ON_ORDER_PROCESSING) ? order.acceptedOffers : [], numAcceptedOffers: order.acceptedOffers.length, orderStatus: order.orderStatus, orderDate: order.orderDate,
52
+ project: order.project, typeOf: order.typeOf, seller: order.seller, price: order.price, priceCurrency: order.priceCurrency, confirmationNumber: order.confirmationNumber, orderNumber: order.orderNumber, acceptedOffers: [],
53
+ // numAcceptedOffers: order.acceptedOffers.length,
54
+ numAcceptedOffers: order.numAcceptedOffers, orderStatus: order.orderStatus, orderDate: order.orderDate,
53
55
  // mask
54
56
  customer: Object.assign(Object.assign({}, (0, order_1.createMaskedCustomer)(order, { noProfile: false })), { additionalProperty: (Array.isArray(order.customer.additionalProperty)) ? order.customer.additionalProperty : [],
55
57
  // identifierは必要
@@ -1,11 +1,12 @@
1
1
  import type { MongoRepository as TaskRepo } from '../../../repo/task';
2
2
  import * as factory from '../../../factory';
3
- import { IExternalOrder } from './onOrderProcessing/factory';
3
+ import { IAcceptedOffer, IExternalOrder } from './onOrderProcessing/factory';
4
4
  type IPlaceOrderTransaction = Pick<factory.transaction.placeOrder.ITransaction, 'id' | 'typeOf' | 'potentialActions'>;
5
5
  declare function onOrderProcessing(params: {
6
6
  order: Omit<factory.order.IOrder, 'orderStatus'> & {
7
7
  orderStatus: factory.orderStatus.OrderProcessing;
8
- acceptedOffers: factory.order.IAcceptedOffer<factory.order.IItemOffered>[];
8
+ acceptedOffers: IAcceptedOffer[];
9
+ numAcceptedOffers: number;
9
10
  };
10
11
  placeOrderTransaction?: IPlaceOrderTransaction;
11
12
  }): (repos: {
@@ -21,7 +21,6 @@ const settings_1 = require("../../../settings");
21
21
  const createSendEmailMessageTaskIfNotExist_1 = require("./onOrderProcessing/createSendEmailMessageTaskIfNotExist");
22
22
  const factory_1 = require("./onOrderProcessing/factory");
23
23
  const debug = createDebug('chevre-domain:service:order');
24
- const USE_CONFIRM_REGISTER_SERVICE_TRANSACTION = process.env.USE_CONFIRM_REGISTER_SERVICE_TRANSACTION === '1';
25
24
  function onOrderProcessing(params) {
26
25
  return (repos) => __awaiter(this, void 0, void 0, function* () {
27
26
  var _a, _b, _c, _d, _e, _f, _g, _h;
@@ -45,8 +44,8 @@ function onOrderProcessing(params) {
45
44
  switch (params.order.orderStatus) {
46
45
  case factory.orderStatus.OrderProcessing:
47
46
  tasks = [
48
- ...(0, factory_1.createInformTasks)(params.order),
49
- ...yield createConfirmRegisterServiceTransactionTasks(params.order, simpleOrder)(repos)
47
+ ...(0, factory_1.createInformTasks)(params.order)
48
+ // ...await createConfirmRegisterServiceTransactionTasks(params.order, simpleOrder)(repos) // ひとまず保留
50
49
  ];
51
50
  break;
52
51
  default:
@@ -108,58 +107,67 @@ function createConfirmReserveTransactionTasksIfNotExist(order, simpleOrder) {
108
107
  })));
109
108
  });
110
109
  }
111
- function createConfirmRegisterServiceTransactionTasks(order, simpleOrder) {
112
- return (repos) => __awaiter(this, void 0, void 0, function* () {
113
- const taskRunsAt = new Date();
114
- if (USE_CONFIRM_REGISTER_SERVICE_TRANSACTION) {
115
- const confirmObjects = (0, factory_1.createConfirmRegisterServiceActionObjectByOrder)({ order });
116
- const tasks = [];
117
- yield Promise.all(confirmObjects.map((confirmObject) => __awaiter(this, void 0, void 0, function* () {
118
- // 冗長なタスク作成を回避
119
- const existingTasks = yield repos.task.search({
120
- limit: 1,
121
- page: 1,
122
- project: { id: { $eq: order.project.id } },
123
- name: factory.taskName.ConfirmReserveTransaction,
124
- data: {
125
- object: { transactionNumber: { $eq: confirmObject.transactionNumber } },
126
- purpose: { orderNumber: { $eq: order.orderNumber } }
127
- }
128
- }, {
129
- data: 0, executionResults: 0, name: 0, numberOfTried: 0,
130
- remainingNumberOfTries: 0, runsAt: 0, status: 0
131
- });
132
- if (existingTasks.length === 0) {
133
- const data = {
134
- project: order.project,
135
- typeOf: factory.actionType.ConfirmAction,
136
- object: confirmObject,
137
- agent: order.project,
138
- purpose: simpleOrder,
139
- instrument: {
140
- typeOf: 'WebAPI',
141
- identifier: factory.service.webAPI.Identifier.Chevre
142
- }
143
- };
144
- tasks.push({
145
- project: order.project,
146
- name: factory.taskName.ConfirmRegisterServiceTransaction,
147
- status: factory.taskStatus.Ready,
148
- runsAt: taskRunsAt,
149
- remainingNumberOfTries: 10,
150
- numberOfTried: 0,
151
- executionResults: [],
152
- data
153
- });
154
- }
155
- })));
156
- return tasks;
157
- }
158
- else {
159
- return [];
160
- }
161
- });
162
- }
110
+ // function createConfirmRegisterServiceTransactionTasks(
111
+ // order: factory.order.IOrder & {
112
+ // acceptedOffers: factory.order.IAcceptedOffer<factory.order.IItemOffered>[];
113
+ // },
114
+ // simpleOrder: factory.order.ISimpleOrder
115
+ // ) {
116
+ // return async (repos: {
117
+ // task: TaskRepo;
118
+ // }): Promise<factory.task.IAttributes<factory.taskName.ConfirmRegisterServiceTransaction>[]> => {
119
+ // const taskRunsAt = new Date();
120
+ // if (USE_CONFIRM_REGISTER_SERVICE_TRANSACTION) {
121
+ // const confirmObjects = createConfirmRegisterServiceActionObjectByOrder({ order });
122
+ // const tasks: factory.task.IAttributes<factory.taskName.ConfirmRegisterServiceTransaction>[] = [];
123
+ // await Promise.all(confirmObjects.map(async (confirmObject) => {
124
+ // // 冗長なタスク作成を回避
125
+ // const existingTasks = await repos.task.search(
126
+ // {
127
+ // limit: 1,
128
+ // page: 1,
129
+ // project: { id: { $eq: order.project.id } },
130
+ // name: factory.taskName.ConfirmReserveTransaction,
131
+ // data: {
132
+ // object: { transactionNumber: { $eq: confirmObject.transactionNumber } },
133
+ // purpose: { orderNumber: { $eq: order.orderNumber } }
134
+ // }
135
+ // },
136
+ // {
137
+ // data: 0, executionResults: 0, name: 0, numberOfTried: 0,
138
+ // remainingNumberOfTries: 0, runsAt: 0, status: 0
139
+ // }
140
+ // );
141
+ // if (existingTasks.length === 0) {
142
+ // const data: factory.task.IData<factory.taskName.ConfirmRegisterServiceTransaction> = {
143
+ // project: order.project,
144
+ // typeOf: factory.actionType.ConfirmAction,
145
+ // object: confirmObject,
146
+ // agent: order.project,
147
+ // purpose: simpleOrder,
148
+ // instrument: {
149
+ // typeOf: 'WebAPI',
150
+ // identifier: factory.service.webAPI.Identifier.Chevre
151
+ // }
152
+ // };
153
+ // tasks.push({
154
+ // project: order.project,
155
+ // name: factory.taskName.ConfirmRegisterServiceTransaction,
156
+ // status: factory.taskStatus.Ready,
157
+ // runsAt: taskRunsAt,
158
+ // remainingNumberOfTries: 10,
159
+ // numberOfTried: 0,
160
+ // executionResults: [],
161
+ // data
162
+ // });
163
+ // }
164
+ // }));
165
+ // return tasks;
166
+ // } else {
167
+ // return [];
168
+ // }
169
+ // };
170
+ // }
163
171
  function createGivePointAwardTaskIfNotExist(params) {
164
172
  return (repos) => __awaiter(this, void 0, void 0, function* () {
165
173
  var _a;
@@ -1,5 +1,6 @@
1
1
  import { IOperation } from '../task';
2
2
  import * as factory from '../../factory';
3
+ import { MongoRepository as AcceptedOfferRepo } from '../../repo/acceptedOffer';
3
4
  import { MongoRepository as ActionRepo } from '../../repo/action';
4
5
  import { MongoRepository as AssetTransactionRepo } from '../../repo/assetTransaction';
5
6
  import { MongoRepository as OrderRepo } from '../../repo/order';
@@ -16,6 +17,7 @@ export declare function confirmReserveTransaction(params: factory.action.interac
16
17
  sendOrder: boolean;
17
18
  useOnOrderStatusChanged: boolean;
18
19
  }): (repos: {
20
+ acceptedOffer: AcceptedOfferRepo;
19
21
  action: ActionRepo;
20
22
  assetTransaction: AssetTransactionRepo;
21
23
  order: OrderRepo;
@@ -10,19 +10,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.confirmReserveTransaction = exports.call = void 0;
13
- const COA = require("@motionpicture/coa-service");
14
13
  const factory = require("../../factory");
14
+ const acceptedOffer_1 = require("../../repo/acceptedOffer");
15
15
  const action_1 = require("../../repo/action");
16
16
  const assetTransaction_1 = require("../../repo/assetTransaction");
17
17
  const order_1 = require("../../repo/order");
18
18
  const reservation_1 = require("../../repo/reservation");
19
19
  const task_1 = require("../../repo/task");
20
20
  const ReserveTransactionService = require("../assetTransaction/reserve");
21
- const credentials_1 = require("../../credentials");
22
- const coaAuthClient = new COA.auth.RefreshToken({
23
- endpoint: credentials_1.credentials.coa.endpoint,
24
- refreshToken: credentials_1.credentials.coa.refreshToken
25
- });
21
+ const COAReserveService = require("../assetTransaction/reserveCOA");
26
22
  /**
27
23
  * タスク実行関数
28
24
  */
@@ -32,6 +28,7 @@ function call(data) {
32
28
  sendOrder: true,
33
29
  useOnOrderStatusChanged: true
34
30
  })({
31
+ acceptedOffer: new acceptedOffer_1.MongoRepository(settings.connection),
35
32
  action: new action_1.MongoRepository(settings.connection),
36
33
  assetTransaction: new assetTransaction_1.MongoRepository(settings.connection),
37
34
  order: new order_1.MongoRepository(settings.connection),
@@ -54,22 +51,12 @@ function confirmReserveTransaction(params, options) {
54
51
  switch (params.instrument.identifier) {
55
52
  case factory.service.webAPI.Identifier.COA:
56
53
  // COA本予約
57
- // 未本予約であれば実行(COA本予約は一度成功すると成功できない)
58
54
  object = object;
59
- // リトライ可能な前提でつくる必要があるので、要注意
60
- // すでに本予約済みかどうか確認
61
- const reserveService = new COA.service.Reserve({
62
- endpoint: credentials_1.credentials.coa.endpoint,
63
- auth: coaAuthClient
64
- }, { timeout: credentials_1.credentials.coa.timeout });
65
- const stateReserveResult = yield reserveService.stateReserve({
66
- theaterCode: object.theaterCode,
67
- reserveNum: object.tmpReserveNum,
68
- telNum: object.telNum
69
- });
70
- if (stateReserveResult === null) {
71
- yield reserveService.updReserve(object);
72
- }
55
+ yield COAReserveService.confirm({
56
+ project: { id: confirmActionAttributes.project.id },
57
+ object,
58
+ purpose: confirmActionAttributes.purpose
59
+ })(repos);
73
60
  break;
74
61
  default:
75
62
  // 予約取引確定
@@ -39,7 +39,6 @@ export declare const USE_DELETE_EVENT_BY_ORDER: boolean;
39
39
  export declare const USE_OPTIMIZE_TICKET_OFFER: boolean;
40
40
  export declare const USE_FETCH_API: boolean;
41
41
  export declare const USE_INFORM_ORDER_IN_TRANSIT: boolean;
42
- export declare const USE_INFORM_ACCEPTED_OFFERS_ON_ORDER_PROCESSING: boolean;
43
42
  export declare const USE_SEND_EMAIL_MESSAGE_ON_ORDER_PROCESSING: boolean;
44
43
  export declare const USE_VERIFY_ACCEPTED_OFFERS: boolean;
45
44
  export declare const USE_MINIMIZED_PAY_TASK: boolean;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.settings = exports.DELIVER_ORDER_LIMIT = exports.MONGO_AUTO_INDEX = exports.MONGO_READ_PREFERENCE = exports.MONGO_MAX_TIME_MS = exports.USE_KANA_NAME_IN_ACCEPTED_OFFER = exports.USE_MINIMIZED_PAY_TASK = exports.USE_VERIFY_ACCEPTED_OFFERS = exports.USE_SEND_EMAIL_MESSAGE_ON_ORDER_PROCESSING = exports.USE_INFORM_ACCEPTED_OFFERS_ON_ORDER_PROCESSING = exports.USE_INFORM_ORDER_IN_TRANSIT = exports.USE_FETCH_API = exports.USE_OPTIMIZE_TICKET_OFFER = exports.USE_DELETE_EVENT_BY_ORDER = exports.USE_ASSET_TRANSACTION_SYNC_PROCESSING = exports.DEFAULT_TASKS_EXPORT_AGENT_NAME = 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.MAX_NUM_CREDIT_CARD_PAYMENT_METHOD = exports.ABORTED_TASKS_WITHOUT_REPORT = exports.TRIGGER_WEBHOOK_RETRY_INTERVAL_IN_MS = exports.TRIGGER_WEBHOOK_MAX_RETRY_COUNT = void 0;
3
+ exports.settings = exports.DELIVER_ORDER_LIMIT = exports.MONGO_AUTO_INDEX = exports.MONGO_READ_PREFERENCE = exports.MONGO_MAX_TIME_MS = exports.USE_KANA_NAME_IN_ACCEPTED_OFFER = exports.USE_MINIMIZED_PAY_TASK = exports.USE_VERIFY_ACCEPTED_OFFERS = exports.USE_SEND_EMAIL_MESSAGE_ON_ORDER_PROCESSING = exports.USE_INFORM_ORDER_IN_TRANSIT = exports.USE_FETCH_API = exports.USE_OPTIMIZE_TICKET_OFFER = exports.USE_DELETE_EVENT_BY_ORDER = exports.USE_ASSET_TRANSACTION_SYNC_PROCESSING = exports.DEFAULT_TASKS_EXPORT_AGENT_NAME = 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.MAX_NUM_CREDIT_CARD_PAYMENT_METHOD = exports.ABORTED_TASKS_WITHOUT_REPORT = exports.TRIGGER_WEBHOOK_RETRY_INTERVAL_IN_MS = exports.TRIGGER_WEBHOOK_MAX_RETRY_COUNT = void 0;
4
4
  const factory = require("./factory");
5
5
  const transactionWebhookUrls = (typeof process.env.INFORM_TRANSACTION_URL === 'string')
6
6
  ? process.env.INFORM_TRANSACTION_URL.split(' ')
@@ -63,7 +63,6 @@ exports.USE_DELETE_EVENT_BY_ORDER = process.env.USE_DELETE_EVENT_BY_ORDER === '1
63
63
  exports.USE_OPTIMIZE_TICKET_OFFER = process.env.USE_OPTIMIZE_TICKET_OFFER === '1';
64
64
  exports.USE_FETCH_API = process.env.USE_FETCH_API === '1';
65
65
  exports.USE_INFORM_ORDER_IN_TRANSIT = process.env.USE_INFORM_ORDER_IN_TRANSIT === '1';
66
- exports.USE_INFORM_ACCEPTED_OFFERS_ON_ORDER_PROCESSING = process.env.USE_INFORM_ACCEPTED_OFFERS_ON_ORDER_PROCESSING === '1';
67
66
  exports.USE_SEND_EMAIL_MESSAGE_ON_ORDER_PROCESSING = process.env.USE_SEND_EMAIL_MESSAGE_ON_ORDER_PROCESSING === '1';
68
67
  exports.USE_VERIFY_ACCEPTED_OFFERS = process.env.USE_VERIFY_ACCEPTED_OFFERS === '1';
69
68
  exports.USE_MINIMIZED_PAY_TASK = process.env.USE_MINIMIZED_PAY_TASK === '1';
package/package.json CHANGED
@@ -12,7 +12,7 @@
12
12
  "@aws-sdk/credential-providers": "3.433.0",
13
13
  "@chevre/factory": "4.352.0-alpha.4",
14
14
  "@cinerino/sdk": "5.9.0-alpha.1",
15
- "@motionpicture/coa-service": "9.2.0",
15
+ "@motionpicture/coa-service": "9.3.0-alpha.0",
16
16
  "@motionpicture/gmo-service": "5.3.0-alpha.0",
17
17
  "@sendgrid/mail": "6.4.0",
18
18
  "@surfrock/sdk": "1.2.0",
@@ -112,5 +112,5 @@
112
112
  "postversion": "git push origin --tags",
113
113
  "prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
114
114
  },
115
- "version": "21.20.0-alpha.41"
115
+ "version": "21.20.0-alpha.43"
116
116
  }