@chevre/domain 21.37.0-alpha.11 → 21.37.0-alpha.12

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.
@@ -69,5 +69,6 @@ declare function start(params: IStartParams & {
69
69
  transaction: Pick<factory.assetTransaction.ITransaction<factory.assetTransactionType.Reserve>, 'id'>;
70
70
  objectSubReservations: IObjectSubReservation[];
71
71
  issuedThrough: factory.assetTransaction.reserve.IIssuedThrough;
72
+ reservationFor: factory.assetTransaction.reserve.IReservationFor;
72
73
  }>;
73
74
  export { start };
@@ -77,14 +77,15 @@ function start(params) {
77
77
  transaction: { id },
78
78
  objectSubReservations,
79
79
  // issuedThrough: addReservationsResult.issuedThrough
80
- issuedThrough: startParams.object.issuedThrough
80
+ issuedThrough: startParams.object.issuedThrough,
81
+ reservationFor: startParams.object.reservationFor
81
82
  };
82
83
  });
83
84
  }
84
85
  exports.start = start;
85
86
  function fixEvent(params) {
86
87
  return (repos) => __awaiter(this, void 0, void 0, function* () {
87
- var _a, _b;
88
+ var _a, _b, _c;
88
89
  const reservationForId = (_a = params.object.reservationFor) === null || _a === void 0 ? void 0 : _a.id;
89
90
  if (typeof reservationForId !== 'string' || reservationForId.length === 0) {
90
91
  throw new factory.errors.ArgumentNull('object.reservationFor.id');
@@ -96,6 +97,13 @@ function fixEvent(params) {
96
97
  else {
97
98
  event = yield repos.event.findMinimizedIndividualEventById({ id: reservationForId });
98
99
  }
100
+ let offeredThrough = (_c = event.offers) === null || _c === void 0 ? void 0 : _c.offeredThrough;
101
+ if (offeredThrough === undefined) {
102
+ offeredThrough = { typeOf: 'WebAPI', identifier: factory.service.webAPI.Identifier.Chevre };
103
+ }
104
+ if (offeredThrough.identifier === factory.service.webAPI.Identifier.COA) {
105
+ throw new factory.errors.NotImplemented(`${offeredThrough.identifier} not implemented`);
106
+ }
99
107
  return event;
100
108
  });
101
109
  }
@@ -1,4 +1,4 @@
1
- import * as factory from '../../../factory';
1
+ import * as factory from '../../../../factory';
2
2
  declare const DEFAULT_OFFER_ID = "****AUTOMATICALLY_APPLIED****";
3
3
  declare const DEFAULT_TICKET_OFFER: factory.product.ITicketOffer;
4
4
  declare const DEFAULT_AVAILABLE_OFFER: factory.unitPriceOffer.IUnitPriceOffer;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DEFAULT_AVAILABLE_OFFER = exports.DEFAULT_TICKET_OFFER = exports.DEFAULT_OFFER_ID = void 0;
4
- const factory = require("../../../factory");
4
+ const factory = require("../../../../factory");
5
5
  const DEFAULT_OFFER_ID = '****AUTOMATICALLY_APPLIED****';
6
6
  exports.DEFAULT_OFFER_ID = DEFAULT_OFFER_ID;
7
7
  const DEFAULT_OFFER_IDENTIFIER = '****AUTOMATICALLY_APPLIED****';
@@ -1,20 +1,19 @@
1
- import * as COA from '@motionpicture/coa-service';
2
- import * as factory from '../../../factory';
3
- import { IMinimizedIndividualEvent } from '../../../factory/event';
4
- export declare function createReserveTransactionStartParams(params: {
1
+ import * as factory from '../../../../factory';
2
+ import { IMinimizedIndividualEvent } from '../../../../factory/event';
3
+ declare function createReserveTransactionStartParams(params: {
5
4
  project: {
6
5
  id: string;
7
6
  };
8
- acceptedOffer: factory.action.authorize.offer.eventService.IAcceptedOffer4chevre[];
7
+ acceptedOffers: factory.action.authorize.offer.eventService.IAcceptedOffer4chevre[];
9
8
  event: {
10
9
  id: string;
11
10
  };
12
11
  broker?: factory.reservation.IBroker<factory.reservationType>;
13
- transaction: Pick<factory.transaction.ITransaction<factory.transactionType.PlaceOrder>, 'agent' | 'expires' | 'id' | 'project' | 'seller' | 'typeOf'>;
12
+ transaction: Pick<factory.transaction.ITransaction<factory.transactionType.PlaceOrder>, 'expires' | 'seller'>;
14
13
  transactionNumber: string;
15
14
  }): factory.assetTransaction.reserve.IStartParamsWithoutDetail;
16
- export declare function createAuthorizeSeatReservationActionAttributes(params: {
17
- event: IMinimizedIndividualEvent<factory.eventType.ScreeningEvent>;
15
+ declare function createAuthorizeSeatReservationActionAttributes(params: {
16
+ event: Pick<IMinimizedIndividualEvent<factory.eventType.ScreeningEvent>, 'id' | 'typeOf'>;
18
17
  instrument: {
19
18
  /**
20
19
  * 予約取引番号
@@ -22,12 +21,11 @@ export declare function createAuthorizeSeatReservationActionAttributes(params: {
22
21
  transactionNumber: string;
23
22
  };
24
23
  transaction: Pick<factory.transaction.ITransaction<factory.transactionType.PlaceOrder>, 'agent' | 'id' | 'project' | 'seller' | 'typeOf'>;
25
- broker?: factory.reservation.IBroker<factory.reservationType.EventReservation>;
26
24
  }): factory.action.authorize.offer.eventService.IAttributes<factory.service.webAPI.Identifier.Chevre>;
27
- export declare function acceptedOffers2amount(params: {
25
+ declare function acceptedOffers2amount(params: {
28
26
  acceptedOffers: IResultAcceptedOffer[];
29
27
  }): number;
30
- export declare function acceptedOffers2authorizeResult(params: {
28
+ declare function acceptedOffers2authorizeResult(params: {
31
29
  acceptedOffers: factory.action.authorize.offer.eventService.IAcceptedOffer4chevre[];
32
30
  acceptedOffers4result: IResultAcceptedOffer[];
33
31
  noOfferSpecified: boolean;
@@ -35,21 +33,15 @@ export declare function acceptedOffers2authorizeResult(params: {
35
33
  }): factory.action.authorize.offer.eventService.IResult;
36
34
  type IObjectSubReservation = factory.assetTransaction.reserve.IObjectSubReservation;
37
35
  type IResultAcceptedOffer = factory.action.authorize.offer.eventService.IResultAcceptedOffer;
38
- export declare function responseBody2acceptedOffers4result(params: {
36
+ declare function responseBody2acceptedOffers4result(params: {
39
37
  issuedThrough: factory.assetTransaction.reserve.IIssuedThrough;
38
+ reservationFor: factory.assetTransaction.reserve.IReservationFor;
40
39
  objectSubReservations: IObjectSubReservation[];
41
40
  transactionNumber: string;
42
- event: IMinimizedIndividualEvent<factory.eventType.ScreeningEvent>;
43
41
  project: {
44
42
  id: string;
45
43
  typeOf: factory.organizationType.Project;
46
44
  };
47
45
  seller: factory.transaction.placeOrder.ISeller;
48
46
  }): IResultAcceptedOffer[];
49
- export declare function coaTicket2offer(params: {
50
- theaterCode: string;
51
- ticketResult: COA.factory.master.ITicketResult;
52
- defaultCurrencyType?: factory.categoryCode.ICategoryCode;
53
- defaultMembershipType?: factory.categoryCode.ICategoryCode;
54
- }): factory.aggregateOffer.ISubOffer;
55
- export {};
47
+ export { acceptedOffers2amount, acceptedOffers2authorizeResult, createAuthorizeSeatReservationActionAttributes, createReserveTransactionStartParams, responseBody2acceptedOffers4result };
@@ -1,20 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.coaTicket2offer = exports.responseBody2acceptedOffers4result = exports.acceptedOffers2authorizeResult = exports.acceptedOffers2amount = exports.createAuthorizeSeatReservationActionAttributes = exports.createReserveTransactionStartParams = void 0;
4
- const COA = require("@motionpicture/coa-service");
3
+ exports.responseBody2acceptedOffers4result = exports.createReserveTransactionStartParams = exports.createAuthorizeSeatReservationActionAttributes = exports.acceptedOffers2authorizeResult = exports.acceptedOffers2amount = void 0;
5
4
  const moment = require("moment");
6
- const util_1 = require("util");
7
- const factory = require("../../../factory");
5
+ const factory = require("../../../../factory");
8
6
  function createReserveTransactionStartParams(params) {
9
7
  var _a;
10
- const acceptedTicketOffersWithoutDetail = (Array.isArray(params.acceptedOffer))
11
- ? params.acceptedOffer.map((o) => {
8
+ const { transaction, transactionNumber } = params;
9
+ const { seller } = transaction;
10
+ const acceptedTicketOffersWithoutDetail = (Array.isArray(params.acceptedOffers))
11
+ ? params.acceptedOffers.map((o) => {
12
12
  var _a, _b, _c, _d, _e;
13
13
  const issuedBy = {
14
- typeOf: params.transaction.seller.typeOf,
15
- name: (typeof params.transaction.seller.name === 'string')
16
- ? params.transaction.seller.name
17
- : String((_a = params.transaction.seller.name) === null || _a === void 0 ? void 0 : _a.ja)
14
+ typeOf: seller.typeOf,
15
+ name: (typeof seller.name === 'string') ? seller.name : String((_a = seller.name) === null || _a === void 0 ? void 0 : _a.ja)
18
16
  };
19
17
  // 適用決済カード情報を連携(複数対応)(2022-08-02~)
20
18
  let appliesToMovieTicket;
@@ -29,32 +27,28 @@ function createReserveTransactionStartParams(params) {
29
27
  // 必要な属性のみ指定する
30
28
  id: o.id, itemOffered: Object.assign(Object.assign({}, o.itemOffered), { serviceOutput: Object.assign(Object.assign({}, (_c = o.itemOffered) === null || _c === void 0 ? void 0 : _c.serviceOutput), { reservedTicket: Object.assign(Object.assign({}, (_e = (_d = o.itemOffered) === null || _d === void 0 ? void 0 : _d.serviceOutput) === null || _e === void 0 ? void 0 : _e.reservedTicket), {
31
29
  // issuedByを明示的に指定する
32
- issuedBy, typeOf: 'Ticket' }), typeOf: factory.reservationType.EventReservation }) }) }, (Array.isArray(o.addOn)) ? { addOn: o.addOn } : undefined), (appliesToMovieTicket !== undefined)
33
- ? { priceSpecification: { appliesToMovieTicket } }
34
- : undefined);
30
+ issuedBy, typeOf: 'Ticket' }), typeOf: factory.reservationType.EventReservation }) }) }, (Array.isArray(o.addOn)) ? { addOn: o.addOn } : undefined), (appliesToMovieTicket !== undefined) ? { priceSpecification: { appliesToMovieTicket } } : undefined);
35
31
  })
36
32
  : undefined;
33
+ const agent = {
34
+ typeOf: seller.typeOf,
35
+ id: seller.id,
36
+ name: (typeof seller.name === 'string') ? seller.name : String((_a = seller.name) === null || _a === void 0 ? void 0 : _a.ja)
37
+ // identifierを廃止(2024-03-05~)
38
+ // identifier: [
39
+ // { name: 'transaction', value: params.transaction.id },
40
+ // {
41
+ // name: 'transactionExpires',
42
+ // value: moment(params.transaction.expires)
43
+ // .toISOString()
44
+ // }
45
+ // ]
46
+ };
47
+ const object = Object.assign({ acceptedOffer: acceptedTicketOffersWithoutDetail, reservationFor: { id: params.event.id } }, (params.broker !== undefined) ? { broker: params.broker } : undefined);
37
48
  return {
38
49
  project: { typeOf: factory.organizationType.Project, id: params.project.id },
39
50
  typeOf: factory.assetTransactionType.Reserve,
40
- transactionNumber: params.transactionNumber,
41
- agent: {
42
- typeOf: params.transaction.seller.typeOf,
43
- id: params.transaction.seller.id,
44
- name: (typeof params.transaction.seller.name === 'string')
45
- ? params.transaction.seller.name
46
- : String((_a = params.transaction.seller.name) === null || _a === void 0 ? void 0 : _a.ja)
47
- // identifierを廃止(2024-03-05~)
48
- // identifier: [
49
- // { name: 'transaction', value: params.transaction.id },
50
- // {
51
- // name: 'transactionExpires',
52
- // value: moment(params.transaction.expires)
53
- // .toISOString()
54
- // }
55
- // ]
56
- },
57
- object: Object.assign({ acceptedOffer: acceptedTicketOffersWithoutDetail, reservationFor: { id: params.event.id } }, (params.broker !== undefined) ? { broker: params.broker } : undefined),
51
+ transactionNumber, agent, object,
58
52
  expires: moment(params.transaction.expires)
59
53
  .add(1, 'month')
60
54
  .toDate() // 余裕を持って
@@ -64,20 +58,7 @@ exports.createReserveTransactionStartParams = createReserveTransactionStartParam
64
58
  function createAuthorizeSeatReservationActionAttributes(params) {
65
59
  var _a;
66
60
  // const acceptedOffers = params.acceptedOffers;
67
- const event = params.event;
68
- const transaction = params.transaction;
69
- const offers = event.offers;
70
- if (offers === undefined) {
71
- throw new factory.errors.NotFound('EventOffers', 'Event offers undefined');
72
- }
73
- let offeredThrough = offers.offeredThrough;
74
- if (offeredThrough === undefined) {
75
- offeredThrough = { typeOf: 'WebAPI', identifier: factory.service.webAPI.Identifier.Chevre };
76
- }
77
- if (offeredThrough.identifier === factory.service.webAPI.Identifier.COA) {
78
- throw new factory.errors.NotImplemented(`offeredThrough.identifier not implemented`);
79
- }
80
- // 最適化(2022-06-07~)
61
+ const { event, transaction } = params;
81
62
  const authorizeObjectEvent = {
82
63
  id: event.id,
83
64
  // イベント提供サービスを識別できるようにするために追加(2022-06-04~)
@@ -103,23 +84,22 @@ function createAuthorizeSeatReservationActionAttributes(params) {
103
84
  identifier: factory.service.webAPI.Identifier.Chevre,
104
85
  transactionNumber: params.instrument.transactionNumber
105
86
  };
87
+ const agent = {
88
+ id: transaction.seller.id,
89
+ typeOf: transaction.seller.typeOf,
90
+ name: (typeof transaction.seller.name === 'string')
91
+ ? transaction.seller.name
92
+ : String((_a = transaction.seller.name) === null || _a === void 0 ? void 0 : _a.ja)
93
+ };
94
+ const recipient = {
95
+ typeOf: transaction.agent.typeOf,
96
+ id: transaction.agent.id
97
+ };
106
98
  return {
107
99
  project: transaction.project,
108
100
  typeOf: factory.actionType.AuthorizeAction,
109
- object,
110
- agent: {
111
- id: transaction.seller.id,
112
- typeOf: transaction.seller.typeOf,
113
- name: (typeof transaction.seller.name === 'string')
114
- ? transaction.seller.name
115
- : String((_a = transaction.seller.name) === null || _a === void 0 ? void 0 : _a.ja)
116
- },
117
- recipient: {
118
- typeOf: transaction.agent.typeOf,
119
- id: transaction.agent.id
120
- },
121
- purpose: { typeOf: transaction.typeOf, id: transaction.id },
122
- instrument
101
+ object, agent, recipient, instrument,
102
+ purpose: { typeOf: transaction.typeOf, id: transaction.id }
123
103
  };
124
104
  }
125
105
  exports.createAuthorizeSeatReservationActionAttributes = createAuthorizeSeatReservationActionAttributes;
@@ -199,7 +179,8 @@ function responseBody2acceptedOffers4result(params) {
199
179
  const reservation = createReservation({
200
180
  project: params.project,
201
181
  itemOffered,
202
- event: params.event,
182
+ // event: params.event,
183
+ reservationFor: params.reservationFor,
203
184
  issuedThrough: params.issuedThrough,
204
185
  reservationNumber: params.transactionNumber
205
186
  });
@@ -249,9 +230,10 @@ exports.responseBody2acceptedOffers4result = responseBody2acceptedOffers4result;
249
230
  */
250
231
  // tslint:disable-next-line:max-func-body-length
251
232
  function createReservation(params) {
252
- var _a, _b, _c, _d;
253
- const itemOffered = params.itemOffered;
254
- const event = params.event;
233
+ var _a, _b;
234
+ // const { itemOffered, event, reservationFor } = params;
235
+ const { itemOffered } = params;
236
+ const event = params.reservationFor;
255
237
  let reservationItem;
256
238
  const reservedTicket = Object.assign(Object.assign({ typeOf: itemOffered.reservedTicket.typeOf, ticketType: {
257
239
  typeOf: itemOffered.reservedTicket.ticketType.typeOf,
@@ -293,30 +275,30 @@ function createReservation(params) {
293
275
  : undefined);
294
276
  }
295
277
  else if (itemOffered.typeOf === factory.reservationType.BusReservation
296
- && event.typeOf === factory.eventType.Event) {
297
- const tripByEvent = (_c = (_b = event.offers) === null || _b === void 0 ? void 0 : _b.itemOffered.serviceOutput) === null || _c === void 0 ? void 0 : _c.reservationFor;
298
- if (typeof (tripByEvent === null || tripByEvent === void 0 ? void 0 : tripByEvent.typeOf) !== 'string') {
299
- throw new factory.errors.NotFound('event.offers.itemOffered.serviceOutput.reservationFor');
300
- }
278
+ && event.typeOf === factory.tripType.BusTrip) {
279
+ // const tripByEvent = event.offers?.itemOffered.serviceOutput?.reservationFor;
280
+ // if (typeof tripByEvent?.typeOf !== 'string') {
281
+ // throw new factory.errors.NotFound('event.offers.itemOffered.serviceOutput.reservationFor');
282
+ // }
301
283
  const reservationFor = {
302
- typeOf: tripByEvent.typeOf,
284
+ typeOf: event.typeOf,
303
285
  id: event.id,
304
- arrivalBusStop: tripByEvent.arrivalBusStop,
305
- departureBusStop: tripByEvent.departureBusStop,
286
+ arrivalBusStop: event.arrivalBusStop,
287
+ departureBusStop: event.departureBusStop,
306
288
  name: event.name,
307
- departureTime: moment(tripByEvent.departureTime)
289
+ departureTime: moment(event.departureTime)
308
290
  .toDate(),
309
- arrivalTime: moment(tripByEvent.arrivalTime)
291
+ arrivalTime: moment(event.arrivalTime)
310
292
  .toDate(),
311
- busName: tripByEvent.busName,
312
- busNumber: tripByEvent.busNumber,
313
- identifier: tripByEvent.identifier
293
+ busName: event.busName,
294
+ busNumber: event.busNumber,
295
+ identifier: event.identifier
314
296
  };
315
297
  if (params.issuedThrough.typeOf !== factory.product.ProductType.Transportation) {
316
298
  throw new factory.errors.Argument('issuedThrough', `issuedThrough.typeOf must be ${factory.product.ProductType.Transportation}`);
317
299
  }
318
300
  reservationItem = Object.assign({ typeOf: itemOffered.typeOf, additionalProperty: itemOffered.additionalProperty, additionalTicketText: itemOffered.additionalTicketText, id: itemOffered.id, issuedThrough: params.issuedThrough, reservationNumber: params.reservationNumber, reservationFor,
319
- reservedTicket }, (typeof ((_d = itemOffered.programMembershipUsed) === null || _d === void 0 ? void 0 : _d.typeOf) === 'string')
301
+ reservedTicket }, (typeof ((_b = itemOffered.programMembershipUsed) === null || _b === void 0 ? void 0 : _b.typeOf) === 'string')
320
302
  ? { programMembershipUsed: itemOffered.programMembershipUsed }
321
303
  : undefined);
322
304
  }
@@ -325,64 +307,3 @@ function createReservation(params) {
325
307
  }
326
308
  return reservationItem;
327
309
  }
328
- // tslint:disable-next-line:max-func-body-length
329
- function coaTicket2offer(params) {
330
- var _a, _b;
331
- // 適用通貨区分
332
- const eligibleMonetaryAmount = (typeof params.ticketResult.usePoint === 'number' && params.ticketResult.usePoint > 0
333
- && typeof ((_a = params.defaultCurrencyType) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string')
334
- ? [{
335
- typeOf: 'MonetaryAmount',
336
- currency: params.defaultCurrencyType.codeValue,
337
- value: Number(params.ticketResult.usePoint)
338
- }]
339
- : undefined;
340
- // 適用メンバーシップ区分
341
- const eligibleMembershipType = (params.ticketResult.flgMember === COA.factory.master.FlgMember.Member
342
- && typeof ((_b = params.defaultMembershipType) === null || _b === void 0 ? void 0 : _b.typeOf) === 'string')
343
- ? [{
344
- typeOf: params.defaultMembershipType.typeOf,
345
- id: params.defaultMembershipType.id,
346
- codeValue: params.defaultMembershipType.codeValue,
347
- inCodeSet: params.defaultMembershipType.inCodeSet
348
- }]
349
- : undefined;
350
- const unitPriceSpec = {
351
- typeOf: factory.priceSpecificationType.UnitPriceSpecification,
352
- price: 0,
353
- priceCurrency: factory.priceCurrency.JPY,
354
- valueAddedTaxIncluded: true,
355
- referenceQuantity: {
356
- typeOf: 'QuantitativeValue',
357
- unitCode: factory.unitCode.C62,
358
- value: 1
359
- }
360
- };
361
- const identifier = (0, util_1.format)('%s-%s-%s', factory.service.webAPI.Identifier.COA, params.theaterCode, params.ticketResult.ticketCode);
362
- const offerName = {
363
- ja: params.ticketResult.ticketName,
364
- en: (typeof params.ticketResult.ticketNameEng === 'string')
365
- ? params.ticketResult.ticketNameEng
366
- : ''
367
- };
368
- return Object.assign(Object.assign(Object.assign({ typeOf: factory.offerType.Offer, priceCurrency: factory.priceCurrency.JPY,
369
- // id: '',
370
- identifier: identifier, name: offerName, description: {
371
- ja: '',
372
- en: ''
373
- }, alternateName: {
374
- ja: params.ticketResult.ticketName,
375
- en: (typeof params.ticketResult.ticketNameEng === 'string')
376
- ? params.ticketResult.ticketNameEng
377
- : ''
378
- }, availability: factory.itemAvailability.InStock, itemOffered: {
379
- typeOf: factory.product.ProductType.EventService
380
- }, priceSpecification: unitPriceSpec }, (Array.isArray(eligibleMembershipType)) ? { eligibleMembershipType } : undefined), (Array.isArray(eligibleMonetaryAmount)) ? { eligibleMonetaryAmount } : undefined), { additionalProperty: [
381
- { name: 'theaterCode', value: params.theaterCode },
382
- ...Object.keys(params.ticketResult)
383
- .map((key) => {
384
- return { name: String(key), value: String(params.ticketResult[key]) };
385
- })
386
- ] });
387
- }
388
- exports.coaTicket2offer = coaTicket2offer;
@@ -1,23 +1,23 @@
1
- import * as factory from '../../../factory';
2
- import type { MongoRepository as ActionRepo } from '../../../repo/action';
3
- import type { MongoRepository as AssetTransactionRepo } from '../../../repo/assetTransaction';
4
- import type { AuthorizationRepo } from '../../../repo/code';
5
- import type { IMinimizedIndividualEvent, MongoRepository as EventRepo } from '../../../repo/event';
6
- import type { MongoRepository as OfferRepo } from '../../../repo/offer';
7
- import type { MongoRepository as OfferCatalogRepo } from '../../../repo/offerCatalog';
8
- import type { MongoRepository as OfferCatalogItemRepo } from '../../../repo/offerCatalogItem';
9
- import type { MongoRepository as PaymentServiceRepo } from '../../../repo/paymentService';
10
- import type { MongoRepository as SeatRepo } from '../../../repo/place/seat';
11
- import type { MongoRepository as PriceSpecificationRepo } from '../../../repo/priceSpecification';
12
- import type { MongoRepository as ProductRepo } from '../../../repo/product';
13
- import type { MongoRepository as ProductOfferRepo } from '../../../repo/productOffer';
14
- import type { MongoRepository as ProjectRepo } from '../../../repo/project';
15
- import type { RedisRepository as OfferRateLimitRepo } from '../../../repo/rateLimit/offer';
16
- import type { StockHolderRepository as StockHolderRepo } from '../../../repo/stockHolder';
17
- import type { MongoRepository as TaskRepo } from '../../../repo/task';
18
- import type { TicketRepo } from '../../../repo/ticket';
1
+ import * as factory from '../../../../factory';
2
+ import type { MongoRepository as ActionRepo } from '../../../../repo/action';
3
+ import type { MongoRepository as AssetTransactionRepo } from '../../../../repo/assetTransaction';
4
+ import type { AuthorizationRepo } from '../../../../repo/code';
5
+ import type { IMinimizedIndividualEvent, MongoRepository as EventRepo } from '../../../../repo/event';
6
+ import type { MongoRepository as OfferRepo } from '../../../../repo/offer';
7
+ import type { MongoRepository as OfferCatalogRepo } from '../../../../repo/offerCatalog';
8
+ import type { MongoRepository as OfferCatalogItemRepo } from '../../../../repo/offerCatalogItem';
9
+ import type { MongoRepository as PaymentServiceRepo } from '../../../../repo/paymentService';
10
+ import type { MongoRepository as SeatRepo } from '../../../../repo/place/seat';
11
+ import type { MongoRepository as PriceSpecificationRepo } from '../../../../repo/priceSpecification';
12
+ import type { MongoRepository as ProductRepo } from '../../../../repo/product';
13
+ import type { MongoRepository as ProductOfferRepo } from '../../../../repo/productOffer';
14
+ import type { MongoRepository as ProjectRepo } from '../../../../repo/project';
15
+ import type { RedisRepository as OfferRateLimitRepo } from '../../../../repo/rateLimit/offer';
16
+ import type { StockHolderRepository as StockHolderRepo } from '../../../../repo/stockHolder';
17
+ import type { MongoRepository as TaskRepo } from '../../../../repo/task';
18
+ import type { TicketRepo } from '../../../../repo/ticket';
19
19
  declare function processStartReserve4chevre(params: {
20
- acceptedOffer: factory.action.authorize.offer.eventService.IAcceptedOffer4chevre[];
20
+ acceptedOffers: factory.action.authorize.offer.eventService.IAcceptedOffer4chevre[];
21
21
  event: IMinimizedIndividualEvent<factory.eventType.ScreeningEvent>;
22
22
  broker?: factory.reservation.IBroker<factory.reservationType>;
23
23
  transactionNumber: string;
@@ -10,35 +10,30 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.processStartReserve4chevre = void 0;
13
- const factory = require("../../../factory");
14
- const ReserveTransactionService = require("../../assetTransaction/reserve");
15
- const CodeService = require("../../code");
13
+ const factory = require("../../../../factory");
14
+ const ReserveTransactionService = require("../../../assetTransaction/reserve");
15
+ const CodeService = require("../../../code");
16
16
  const factory_1 = require("./factory");
17
17
  function processStartReserve4chevre(params) {
18
18
  return (repos) => __awaiter(this, void 0, void 0, function* () {
19
- const event = params.event;
20
- const transactionNumber = params.transactionNumber;
21
- const transaction = params.transaction;
22
- // let responseBody: factory.assetTransaction.reserve.ITransaction;
19
+ const { event, transaction, transactionNumber } = params;
23
20
  let acceptedOffers4result = [];
24
21
  // 予約取引開始
25
22
  const startParams = (0, factory_1.createReserveTransactionStartParams)(Object.assign({ project: transaction.project,
26
23
  // object: <IObjectWithDetail>action.object,
27
- acceptedOffer: params.acceptedOffer, event: { id: event.id }, transaction,
24
+ acceptedOffers: params.acceptedOffers, event: { id: event.id }, transaction,
28
25
  transactionNumber }, (params.broker !== undefined) ? { broker: params.broker } : undefined));
29
26
  const startParamObject = yield validateObjectWithoutDetail(startParams)(repos);
30
- // 予約取引開始
31
27
  const startReserveTransactionResult = yield ReserveTransactionService.start(Object.assign(Object.assign({}, startParams), { object: startParamObject, preSearchedEvent: event, preSearchedTicketOffers: params.ticketOffers, preSearchedUnitPriceOffers: params.unitPriceOffers, availableAtOrFrom: { id: params.availableAtOrFrom.id }, validateEvent: params.validateEvent, validateEventOfferPeriod: params.validateEventOfferPeriod, validateAppliesToMovieTicket: true,
32
28
  // useHoldStockByTransactionNumber: params.useHoldStockByTransactionNumber, // discontinue(2024-07-02~)
33
29
  stockHoldUntilDaysAfterEventEnd: params.stockHoldUntilDaysAfterEventEnd }))(repos);
34
- // responseBody = startReserveTransactionResult.transaction; // responseBody参照必要なし(2024-07-01~)
35
- // 予約取引からオファー情報を生成する
30
+ // 予約取引結果から注文オファーを生成する
36
31
  acceptedOffers4result = (0, factory_1.responseBody2acceptedOffers4result)({
37
32
  issuedThrough: startReserveTransactionResult.issuedThrough,
33
+ reservationFor: startReserveTransactionResult.reservationFor,
38
34
  objectSubReservations: startReserveTransactionResult.objectSubReservations,
39
35
  transactionNumber,
40
- // responseBody: responseBody,
41
- event: event,
36
+ // event: event,
42
37
  project: transaction.project,
43
38
  seller: transaction.seller
44
39
  });
@@ -12,65 +12,49 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.authorize = void 0;
13
13
  const factory = require("../../../factory");
14
14
  const any_1 = require("../any");
15
- const defaultOffer_1 = require("./defaultOffer");
16
- const processStartReserve4chevre_1 = require("./processStartReserve4chevre");
15
+ const defaultOffer_1 = require("./authorize/defaultOffer");
16
+ const factory_1 = require("./authorize/factory");
17
+ const processStartReserve4chevre_1 = require("./authorize/processStartReserve4chevre");
17
18
  const searchEventTicketOffers_1 = require("./searchEventTicketOffers");
18
- const factory_1 = require("./factory");
19
19
  /**
20
20
  * 興行オファー承認
21
21
  */
22
22
  function authorize(params) {
23
- // tslint:disable-next-line:max-func-body-length
24
23
  return (repos) => __awaiter(this, void 0, void 0, function* () {
25
24
  var _a;
26
25
  const noOfferSpecified = params.noOfferSpecified === true;
27
- const { transaction, event, bookingServiceIdentifire } = yield validateCreateRequest(params)({ event: repos.event, transaction: repos.transaction });
26
+ const { transaction, event } = yield validateCreateRequest(params)(repos);
28
27
  const { acceptedOffers, ticketOffers, unitPriceOffers } = yield validateAcceptedOffers({
29
28
  object: params.object,
30
29
  event,
31
- seller: { typeOf: transaction.seller.typeOf, id: String(transaction.seller.id) },
30
+ seller: { typeOf: transaction.seller.typeOf, id: transaction.seller.id },
32
31
  transaction,
33
32
  store: params.store,
34
33
  noOfferSpecified
35
34
  })(repos);
36
35
  let acceptedOffers4result = [];
37
- // Chevre予約の場合、まず取引番号発行
36
+ // まず取引番号発行
38
37
  const { transactionNumber } = yield repos.transactionNumber.publishByTimestamp({ startDate: new Date() });
39
- // 承認アクションを開始
40
38
  const actionAttributes = (0, factory_1.createAuthorizeSeatReservationActionAttributes)({
41
- // acceptedOffers: acceptedOffers,
42
- event: event,
43
- transaction: transaction,
44
- instrument: { transactionNumber },
45
- broker: params.object.broker
39
+ event, transaction,
40
+ instrument: { transactionNumber }
46
41
  });
47
42
  const action = yield repos.action.start(actionAttributes);
48
43
  try {
49
- switch (bookingServiceIdentifire) {
50
- // 実質使用する予定なしなので廃止(2022-05-12~)
51
- // case factory.service.webAPI.Identifier.COA:
52
- // break;
53
- case factory.service.webAPI.Identifier.Chevre:
54
- const processStartReserveResult = yield (0, processStartReserve4chevre_1.processStartReserve4chevre)(Object.assign({ acceptedOffer: acceptedOffers, event,
55
- transactionNumber,
56
- transaction, availableAtOrFrom: { id: params.store.id }, ticketOffers,
57
- unitPriceOffers, validateEvent: params.validateEvent === true, validateEventOfferPeriod: params.validateEventOfferPeriod === true,
58
- // useHoldStockByTransactionNumber: params.useHoldStockByTransactionNumber, // discontinue(2024-07-02~)
59
- stockHoldUntilDaysAfterEventEnd: params.stockHoldUntilDaysAfterEventEnd }, (typeof ((_a = params.object.broker) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string') ? { broker: params.object.broker } : undefined))(repos);
60
- acceptedOffers4result = processStartReserveResult.acceptedOffers4result;
61
- // add orderInTransaction(2024-01-15~)
62
- if (!noOfferSpecified) {
63
- // if (params.options.useCreateOrderOnOfferAccepted) {
64
- yield (0, any_1.acceptOffer)({
65
- project: transaction.project,
66
- purpose: { id: transaction.id },
67
- acceptedOffers: acceptedOffers4result
68
- })(repos);
69
- // }
70
- }
71
- break;
72
- default:
73
- throw new factory.errors.Argument('Event', `Unknown booking service '${bookingServiceIdentifire}'`);
44
+ const processStartReserveResult = yield (0, processStartReserve4chevre_1.processStartReserve4chevre)(Object.assign({ acceptedOffers, event,
45
+ transactionNumber, transaction, availableAtOrFrom: { id: params.store.id }, ticketOffers, unitPriceOffers, validateEvent: params.validateEvent === true, validateEventOfferPeriod: params.validateEventOfferPeriod === true,
46
+ // useHoldStockByTransactionNumber: params.useHoldStockByTransactionNumber, // discontinue(2024-07-02~)
47
+ stockHoldUntilDaysAfterEventEnd: params.stockHoldUntilDaysAfterEventEnd }, (typeof ((_a = params.object.broker) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string') ? { broker: params.object.broker } : undefined))(repos);
48
+ acceptedOffers4result = processStartReserveResult.acceptedOffers4result;
49
+ // add orderInTransaction(2024-01-15~)
50
+ if (!noOfferSpecified) {
51
+ // if (params.options.useCreateOrderOnOfferAccepted) {
52
+ yield (0, any_1.acceptOffer)({
53
+ project: transaction.project,
54
+ purpose: { id: transaction.id },
55
+ acceptedOffers: acceptedOffers4result
56
+ })(repos);
57
+ // }
74
58
  }
75
59
  }
76
60
  catch (error) {
@@ -80,15 +64,6 @@ function authorize(params) {
80
64
  catch (__) {
81
65
  // no op
82
66
  }
83
- switch (bookingServiceIdentifire) {
84
- case factory.service.webAPI.Identifier.COA:
85
- // error = handleCOAReserveTemporarilyError(error);
86
- break;
87
- case factory.service.webAPI.Identifier.Chevre:
88
- // error = handleChevreError(error);
89
- break;
90
- default:
91
- }
92
67
  throw error;
93
68
  }
94
69
  const result = (0, factory_1.acceptedOffers2authorizeResult)({ acceptedOffers, acceptedOffers4result, noOfferSpecified, ticketOffers });
@@ -98,7 +73,7 @@ function authorize(params) {
98
73
  exports.authorize = authorize;
99
74
  function validateCreateRequest(params) {
100
75
  return (repos) => __awaiter(this, void 0, void 0, function* () {
101
- var _a, _b, _c;
76
+ var _a, _b;
102
77
  const transaction = yield repos.transaction.findInProgressById({
103
78
  typeOf: factory.transactionType.PlaceOrder,
104
79
  id: params.transaction.id
@@ -122,12 +97,12 @@ function validateCreateRequest(params) {
122
97
  const event = yield repos.event.findMinimizedIndividualEventById({
123
98
  id: params.object.reservationFor.id
124
99
  });
125
- let offeredThrough = (_c = event.offers) === null || _c === void 0 ? void 0 : _c.offeredThrough;
126
- if (offeredThrough === undefined) {
127
- offeredThrough = { typeOf: 'WebAPI', identifier: factory.service.webAPI.Identifier.Chevre };
128
- }
129
- const bookingServiceIdentifire = offeredThrough.identifier;
130
- return { transaction, event, bookingServiceIdentifire };
100
+ // let offeredThrough = event.offers?.offeredThrough;
101
+ // if (offeredThrough === undefined) {
102
+ // offeredThrough = { typeOf: 'WebAPI', identifier: factory.service.webAPI.Identifier.Chevre };
103
+ // }
104
+ // const bookingServiceIdentifire = offeredThrough.identifier;
105
+ return { transaction, event };
131
106
  });
132
107
  }
133
108
  /**
@@ -182,7 +157,7 @@ function validateAcceptedOffers(params) {
182
157
  return acceptedOfferWithoutDetail2acceptedOffer({
183
158
  availableTicketOffers: ticketOffers,
184
159
  offerWithoutDetail,
185
- event: params.event,
160
+ // event: params.event,
186
161
  transaction: params.transaction,
187
162
  seller: params.seller
188
163
  })();
@@ -239,7 +214,7 @@ function validateAcceptedOffers(params) {
239
214
  function acceptedOfferWithoutDetail2acceptedOffer(params) {
240
215
  // tslint:disable-next-line:cyclomatic-complexity max-func-body-length
241
216
  return () => __awaiter(this, void 0, void 0, function* () {
242
- var _a, _b, _c, _d;
217
+ var _a, _b, _c;
243
218
  const availableTicketOffers = params.availableTicketOffers;
244
219
  const offerWithoutDetail = params.offerWithoutDetail;
245
220
  const offer = availableTicketOffers.find((o) => o.id === offerWithoutDetail.id);
@@ -310,33 +285,24 @@ function acceptedOfferWithoutDetail2acceptedOffer(params) {
310
285
  // no op
311
286
  }
312
287
  }
313
- const acceptedOffer = Object.assign({
288
+ return {
314
289
  // オファーの中身を最適化する(必要最低限の情報のみに)
315
- id: String(offer.id),
290
+ id: String(offer.id),
316
291
  // identifier: offer.identifier,
317
- priceSpecification,
292
+ priceSpecification,
318
293
  // typeOf: offer.typeOf,
319
294
  // priceCurrency: offer.priceCurrency,
320
- itemOffered: Object.assign(Object.assign({}, (itemOfferedServiceOutput !== undefined) ? { serviceOutput: itemOfferedServiceOutput } : undefined), (pointAward !== undefined) ? { pointAward } : undefined), addOn: acceptedAddOns,
295
+ itemOffered: Object.assign(Object.assign({}, (itemOfferedServiceOutput !== undefined) ? { serviceOutput: itemOfferedServiceOutput } : undefined), (pointAward !== undefined) ? { pointAward } : undefined),
296
+ addOn: acceptedAddOns,
321
297
  // 追加属性をマージ
322
298
  additionalProperty: [
323
299
  ...(Array.isArray(offerWithoutDetail.additionalProperty)) ? offerWithoutDetail.additionalProperty : [],
324
300
  ...(Array.isArray(offer.additionalProperty)) ? offer.additionalProperty : []
325
- ] }, (Array.isArray(offer.acceptedPaymentMethod))
326
- ? { acceptedPaymentMethod: offer.acceptedPaymentMethod } // add(2023-11-15~)
327
- : undefined);
328
- let offeredThrough = (_d = params.event.offers) === null || _d === void 0 ? void 0 : _d.offeredThrough;
329
- if (typeof (offeredThrough === null || offeredThrough === void 0 ? void 0 : offeredThrough.typeOf) !== 'string') {
330
- offeredThrough = { typeOf: 'WebAPI', identifier: factory.service.webAPI.Identifier.Chevre };
331
- }
332
- switch (offeredThrough.identifier) {
333
- case factory.service.webAPI.Identifier.COA:
334
- // 実質使用する予定なしなので廃止(2022-05-12~)
335
- throw new factory.errors.NotImplemented(`booking service '${offeredThrough.identifier}' not implemented`);
336
- default:
337
- // no op
338
- }
339
- return acceptedOffer;
301
+ ]
302
+ // ...(Array.isArray(offer.acceptedPaymentMethod)) // discontinue(2024-07-03~)
303
+ // ? { acceptedPaymentMethod: offer.acceptedPaymentMethod }
304
+ // : undefined
305
+ };
340
306
  });
341
307
  }
342
308
  function createPointAwardByOfferWithoutDetail(params) {
@@ -0,0 +1,9 @@
1
+ import * as COA from '@motionpicture/coa-service';
2
+ import * as factory from '../../../../factory';
3
+ declare function coaTicket2offer(params: {
4
+ theaterCode: string;
5
+ ticketResult: COA.factory.master.ITicketResult;
6
+ defaultCurrencyType?: factory.categoryCode.ICategoryCode;
7
+ defaultMembershipType?: factory.categoryCode.ICategoryCode;
8
+ }): factory.aggregateOffer.ISubOffer;
9
+ export { coaTicket2offer };
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.coaTicket2offer = void 0;
4
+ const COA = require("@motionpicture/coa-service");
5
+ const util_1 = require("util");
6
+ const factory = require("../../../../factory");
7
+ // tslint:disable-next-line:max-func-body-length
8
+ function coaTicket2offer(params) {
9
+ var _a, _b;
10
+ // 適用通貨区分
11
+ const eligibleMonetaryAmount = (typeof params.ticketResult.usePoint === 'number' && params.ticketResult.usePoint > 0
12
+ && typeof ((_a = params.defaultCurrencyType) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string')
13
+ ? [{
14
+ typeOf: 'MonetaryAmount',
15
+ currency: params.defaultCurrencyType.codeValue,
16
+ value: Number(params.ticketResult.usePoint)
17
+ }]
18
+ : undefined;
19
+ // 適用メンバーシップ区分
20
+ const eligibleMembershipType = (params.ticketResult.flgMember === COA.factory.master.FlgMember.Member
21
+ && typeof ((_b = params.defaultMembershipType) === null || _b === void 0 ? void 0 : _b.typeOf) === 'string')
22
+ ? [{
23
+ typeOf: params.defaultMembershipType.typeOf,
24
+ id: params.defaultMembershipType.id,
25
+ codeValue: params.defaultMembershipType.codeValue,
26
+ inCodeSet: params.defaultMembershipType.inCodeSet
27
+ }]
28
+ : undefined;
29
+ const unitPriceSpec = {
30
+ typeOf: factory.priceSpecificationType.UnitPriceSpecification,
31
+ price: 0,
32
+ priceCurrency: factory.priceCurrency.JPY,
33
+ valueAddedTaxIncluded: true,
34
+ referenceQuantity: {
35
+ typeOf: 'QuantitativeValue',
36
+ unitCode: factory.unitCode.C62,
37
+ value: 1
38
+ }
39
+ };
40
+ const identifier = (0, util_1.format)('%s-%s-%s', factory.service.webAPI.Identifier.COA, params.theaterCode, params.ticketResult.ticketCode);
41
+ const offerName = {
42
+ ja: params.ticketResult.ticketName,
43
+ en: (typeof params.ticketResult.ticketNameEng === 'string')
44
+ ? params.ticketResult.ticketNameEng
45
+ : ''
46
+ };
47
+ return Object.assign(Object.assign(Object.assign({ typeOf: factory.offerType.Offer, priceCurrency: factory.priceCurrency.JPY,
48
+ // id: '',
49
+ identifier: identifier, name: offerName, description: {
50
+ ja: '',
51
+ en: ''
52
+ }, alternateName: {
53
+ ja: params.ticketResult.ticketName,
54
+ en: (typeof params.ticketResult.ticketNameEng === 'string')
55
+ ? params.ticketResult.ticketNameEng
56
+ : ''
57
+ }, availability: factory.itemAvailability.InStock, itemOffered: {
58
+ typeOf: factory.product.ProductType.EventService
59
+ }, priceSpecification: unitPriceSpec }, (Array.isArray(eligibleMembershipType)) ? { eligibleMembershipType } : undefined), (Array.isArray(eligibleMonetaryAmount)) ? { eligibleMonetaryAmount } : undefined), { additionalProperty: [
60
+ { name: 'theaterCode', value: params.theaterCode },
61
+ ...Object.keys(params.ticketResult)
62
+ .map((key) => {
63
+ return { name: String(key), value: String(params.ticketResult[key]) };
64
+ })
65
+ ] });
66
+ }
67
+ exports.coaTicket2offer = coaTicket2offer;
@@ -11,7 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.importCategoryCodesFromCOA = exports.importFromCOA = void 0;
13
13
  const factory = require("../../../factory");
14
- const factory_1 = require("./factory");
14
+ const factory_1 = require("./importFromCOA/factory");
15
15
  function importFromCOA(params) {
16
16
  return (repos) => __awaiter(this, void 0, void 0, function* () {
17
17
  // 通貨区分検索
@@ -13,7 +13,7 @@ exports.validateOrder = void 0;
13
13
  // import * as createDebug from 'debug';
14
14
  const moment = require("moment");
15
15
  const factory = require("../../factory");
16
- const factory_1 = require("../offer/event/factory");
16
+ const factory_1 = require("../offer/event/authorize/factory");
17
17
  const factory_2 = require("../offer/product/factory");
18
18
  const validateMovieTicket_1 = require("../transaction/placeOrderInProgress/validation/validateMovieTicket");
19
19
  // const debug = createDebug('chevre-domain:service:validation');
package/package.json CHANGED
@@ -110,5 +110,5 @@
110
110
  "postversion": "git push origin --tags",
111
111
  "prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
112
112
  },
113
- "version": "21.37.0-alpha.11"
113
+ "version": "21.37.0-alpha.12"
114
114
  }