@chevre/domain 24.1.0-alpha.3 → 24.1.0-alpha.30

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 (105) hide show
  1. package/README.md +0 -2
  2. package/lib/chevre/repo/acceptedOffer.d.ts +14 -13
  3. package/lib/chevre/repo/acceptedOffer.js +135 -51
  4. package/lib/chevre/repo/acceptedOfferInReserve.d.ts +30 -0
  5. package/lib/chevre/repo/acceptedOfferInReserve.js +78 -0
  6. package/lib/chevre/repo/accountingReport.d.ts +9 -2
  7. package/lib/chevre/repo/accountingReport.js +6 -34
  8. package/lib/chevre/repo/action/actionProcess.d.ts +1 -1
  9. package/lib/chevre/repo/assetTransaction/reserve.d.ts +0 -1
  10. package/lib/chevre/repo/assetTransaction/reserve.js +4 -50
  11. package/lib/chevre/repo/event.js +12 -8
  12. package/lib/chevre/repo/factory/acceptedOffer/reserveTransaction2itemOffered.d.ts +7 -0
  13. package/lib/chevre/repo/factory/acceptedOffer/reserveTransaction2itemOffered.js +74 -0
  14. package/lib/chevre/repo/factory/reservation/createMongoConditions.js +155 -180
  15. package/lib/chevre/repo/mongoose/schemas/accountingReport.js +42 -42
  16. package/lib/chevre/repo/mongoose/schemas/order.js +108 -108
  17. package/lib/chevre/repo/mongoose/schemas/reservation.d.ts +3 -1
  18. package/lib/chevre/repo/mongoose/schemas/reservation.js +128 -146
  19. package/lib/chevre/repo/order.d.ts +2 -83
  20. package/lib/chevre/repo/order.js +171 -364
  21. package/lib/chevre/repo/orderInTransaction.d.ts +39 -3
  22. package/lib/chevre/repo/orderInTransaction.js +43 -1
  23. package/lib/chevre/repo/reservation.d.ts +20 -7
  24. package/lib/chevre/repo/reservation.js +14 -10
  25. package/lib/chevre/repo/role.d.ts +1 -15
  26. package/lib/chevre/repo/role.js +7 -14
  27. package/lib/chevre/repo/transaction.d.ts +6 -6
  28. package/lib/chevre/service/aggregation/event/aggregateOffers.js +22 -26
  29. package/lib/chevre/service/assetTransaction/cancelReservation/factory.js +14 -11
  30. package/lib/chevre/service/assetTransaction/cancelReservation/start.d.ts +1 -1
  31. package/lib/chevre/service/assetTransaction/cancelReservation/start.js +1 -1
  32. package/lib/chevre/service/assetTransaction/reserve/start/factory/createReservation.js +0 -12
  33. package/lib/chevre/service/assetTransaction/reserve/start/factory/price.d.ts +1 -1
  34. package/lib/chevre/service/delivery/factory.d.ts +6 -1
  35. package/lib/chevre/service/delivery/factory.js +1 -1
  36. package/lib/chevre/service/delivery/reservation/factory.d.ts +1 -3
  37. package/lib/chevre/service/delivery/reservation/factory.js +0 -17
  38. package/lib/chevre/service/notification/notifyAbortedTasksByEmail.d.ts +1 -1
  39. package/lib/chevre/service/notification/notifyAbortedTasksByEmail.js +1 -1
  40. package/lib/chevre/service/offer/any.d.ts +6 -1
  41. package/lib/chevre/service/offer/event/authorize/factory.d.ts +6 -3
  42. package/lib/chevre/service/offer/event/authorize/factory.js +4 -7
  43. package/lib/chevre/service/offer/event/authorize.d.ts +6 -0
  44. package/lib/chevre/service/offer/event/authorize.js +11 -3
  45. package/lib/chevre/service/offer/eventServiceByCOA/authorize/factory.d.ts +1 -3
  46. package/lib/chevre/service/order/createAccountingReportIfNotExist.d.ts +1 -3
  47. package/lib/chevre/service/order/createAccountingReportIfNotExist.js +67 -72
  48. package/lib/chevre/service/order/deleteOrder.js +21 -44
  49. package/lib/chevre/service/order/onAssetTransactionStatusChanged/paymentDue2Processing.js +9 -11
  50. package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially/factory.d.ts +6 -1
  51. package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.js +1 -1
  52. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.js +2 -1
  53. package/lib/chevre/service/order/placeOrder/factory/orderedItem.d.ts +1 -1
  54. package/lib/chevre/service/order/placeOrder/factory/orderedItem.js +0 -5
  55. package/lib/chevre/service/order/placeOrder/factory.d.ts +1 -1
  56. package/lib/chevre/service/order/sendOrder.js +2 -4
  57. package/lib/chevre/service/payment/creditCard/authorize.js +3 -3
  58. package/lib/chevre/service/payment/creditCard/payCreditCard.js +1 -1
  59. package/lib/chevre/service/payment/creditCard/refundCreditCard.js +1 -1
  60. package/lib/chevre/service/payment/creditCard/searchGMOTrade.js +1 -1
  61. package/lib/chevre/service/payment/creditCard/voidTransaction.js +1 -1
  62. package/lib/chevre/service/payment/factory/createPayObjectServiceOutput.d.ts +8 -1
  63. package/lib/chevre/service/payment/factory/createPayObjectServiceOutput.js +1 -1
  64. package/lib/chevre/service/payment/movieTicket/payMovieTicket.js +1 -1
  65. package/lib/chevre/service/payment/movieTicket/processPurchaseNumberAuth.js +1 -1
  66. package/lib/chevre/service/payment/movieTicket/refundMovieTicket.js +2 -2
  67. package/lib/chevre/service/reserve/confirmReservation.js +7 -7
  68. package/lib/chevre/service/reserve/factory.js +2 -1
  69. package/lib/chevre/service/reserve/findByCode.d.ts +1 -1
  70. package/lib/chevre/service/reserve/findByCode.js +2 -1
  71. package/lib/chevre/service/reserve/findReservations.d.ts +4 -4
  72. package/lib/chevre/service/reserve/findReservations.js +16 -26
  73. package/lib/chevre/service/reserve/potentialActions/onReservationConfirmed.d.ts +4 -3
  74. package/lib/chevre/service/reserve/potentialActions/onReservationConfirmed.js +1 -9
  75. package/lib/chevre/service/reserve/searchByOrder.js +8 -3
  76. package/lib/chevre/service/reserve/useReservation.d.ts +1 -1
  77. package/lib/chevre/service/reserve/useReservation.js +20 -24
  78. package/lib/chevre/service/task/acceptCOAOffer.js +2 -2
  79. package/lib/chevre/service/task/authorizePayment.js +1 -1
  80. package/lib/chevre/service/task/cancelPendingReservation.js +1 -1
  81. package/lib/chevre/service/task/checkMovieTicket.js +1 -1
  82. package/lib/chevre/service/task/confirmReserveTransaction.js +3 -2
  83. package/lib/chevre/service/task/createAccountingReport.js +7 -9
  84. package/lib/chevre/service/task/importEventCapacitiesFromCOA.js +1 -1
  85. package/lib/chevre/service/task/importEventsFromCOA.js +1 -1
  86. package/lib/chevre/service/task/importOffersFromCOA.js +1 -1
  87. package/lib/chevre/service/task/pay.js +1 -1
  88. package/lib/chevre/service/task/payment/payByTask.js +3 -2
  89. package/lib/chevre/service/task/refund.js +1 -1
  90. package/lib/chevre/service/task/returnReserveTransaction.js +1 -1
  91. package/lib/chevre/service/task/syncResourcesFromCOA.js +1 -1
  92. package/lib/chevre/service/task/useReservation.d.ts +2 -2
  93. package/lib/chevre/service/task/useReservation.js +6 -18
  94. package/lib/chevre/service/task/voidPayment.js +1 -1
  95. package/lib/chevre/service/task/voidReserveTransaction.js +1 -1
  96. package/lib/chevre/service/taskHandler.js +1 -0
  97. package/lib/chevre/service/transaction/placeOrder/confirm/validation/validateInvoiceReferencesOrder.d.ts +1 -1
  98. package/lib/chevre/service/transaction/placeOrder/confirm/validation/validateMovieTicket.d.ts +1 -1
  99. package/lib/chevre/service/transaction/placeOrder/confirm/validation.d.ts +2 -2
  100. package/lib/chevre/service/transaction/placeOrder/confirm.js +5 -2
  101. package/lib/chevre/service/transaction/returnOrder/preStart.js +2 -4
  102. package/lib/chevre/service/validation/validateOrder.js +5 -79
  103. package/lib/chevre/settings.d.ts +15 -16
  104. package/lib/chevre/settings.js +53 -19
  105. package/package.json +2 -2
@@ -67,6 +67,12 @@ interface IAuthorizeOptions {
67
67
  * 最大n日前から予約可能
68
68
  */
69
69
  maxReservationGracePeriodInDays: number;
70
+ /**
71
+ * 価格仕様なしのacceptedOfferを採用するかどうか
72
+ * 実験的に導入
73
+ * 2026-005-19~
74
+ */
75
+ useAcceptedOfferNoPriceSpec?: boolean;
70
76
  }
71
77
  /**
72
78
  * 興行オファー承認
@@ -58,13 +58,21 @@ function authorize(params, options) {
58
58
  acceptedOffers4result = processStartReserveResult.acceptedOffers4result;
59
59
  // add orderInTransaction(2024-01-15~)
60
60
  if (!noOfferSpecified) {
61
- // if (params.options.useCreateOrderOnOfferAccepted) {
61
+ const useAcceptedOfferNoPriceSpec = options.useAcceptedOfferNoPriceSpec === true;
62
62
  await (0, any_1.acceptOffer)({
63
63
  orderNumber,
64
64
  project: transaction.project,
65
- acceptedOffers: acceptedOffers4result
65
+ acceptedOffers: acceptedOffers4result.map((acceptOffer4result) => {
66
+ // support useAcceptedOfferNoPriceSpec(2026-05-19~)
67
+ if (useAcceptedOfferNoPriceSpec) {
68
+ const { priceSpecification: _priceSpecification, ...acceptOfferNoPriceSpec } = acceptOffer4result;
69
+ return acceptOfferNoPriceSpec;
70
+ }
71
+ else {
72
+ return acceptOffer4result;
73
+ }
74
+ })
66
75
  })(repos);
67
- // }
68
76
  }
69
77
  }
70
78
  catch (error) {
@@ -21,9 +21,7 @@ export declare function createAuthorizeSeatReservationActionAttributes(params: {
21
21
  export declare function offers2resultPrice(offers: IAcceptedOffer4COA[]): {
22
22
  price: number;
23
23
  };
24
- type IResultAcceptedOffer = Omit<factory.order.IAcceptedOffer, 'itemOffered'> & {
25
- itemOffered: factory.order.ICOAEventReservation;
26
- };
24
+ type IResultAcceptedOffer = factory.order.ICOAAcceptedOffer;
27
25
  /**
28
26
  * COA仮予約結果から注文アイテムを生成する
29
27
  */
@@ -1,7 +1,5 @@
1
1
  import { AccountingReportRepo } from '../../repo/accountingReport';
2
2
  import { factory } from '../../factory';
3
- export declare function createAccountingReportIfNotExist(params: Pick<factory.order.IOrder, 'id' | 'orderNumber' | 'project' | 'customer' | 'confirmationNumber' | 'paymentMethods' | 'orderedItem' | 'price' | 'priceCurrency' | 'seller' | 'broker' | 'typeOf' | 'orderDate'> & {
4
- acceptedOffers: factory.order.IAcceptedOffer[];
5
- }): (repos: {
3
+ export declare function createAccountingReportIfNotExist(params: Pick<factory.order.IOrder, 'id' | 'orderNumber' | 'project' | 'paymentMethods' | 'seller' | 'typeOf' | 'orderDate'> & {}): (repos: {
6
4
  accountingReport: AccountingReportRepo;
7
5
  }) => Promise<void>;
@@ -19,84 +19,79 @@ function createAccountingReportIfNotExist(params) {
19
19
  }
20
20
  // 最適化(2023-06-30~)
21
21
  function createOrder4report(params) {
22
- if (!Array.isArray(params.acceptedOffers)) {
23
- throw new factory_1.factory.errors.ArgumentNull('order.acceptedOffers');
24
- }
25
- const numItems = params.acceptedOffers.length;
26
- // 必要な属性についてDate型に変換(でないと検索クエリを効率的に使えない)
27
- const acceptedOffers = (Array.isArray(params.acceptedOffers))
28
- ? params.acceptedOffers.map((o) => {
29
- if (o.itemOffered.typeOf === factory_1.factory.reservationType.EventReservation) {
30
- let itemOffered = o.itemOffered;
31
- const reservationFor = itemOffered.reservationFor;
32
- itemOffered = {
33
- ...itemOffered,
34
- reservationFor: {
35
- ...reservationFor,
36
- ...(reservationFor.doorTime !== undefined)
37
- ? {
38
- doorTime: (0, moment_timezone_1.default)(reservationFor.doorTime)
39
- .toDate()
40
- }
41
- : undefined,
42
- ...(reservationFor.endDate !== undefined)
43
- ? {
44
- endDate: (0, moment_timezone_1.default)(reservationFor.endDate)
45
- .toDate()
46
- }
47
- : undefined,
48
- ...(reservationFor.startDate !== undefined)
49
- ? {
50
- startDate: (0, moment_timezone_1.default)(reservationFor.startDate)
51
- .toDate()
52
- }
53
- : undefined
54
- }
55
- };
56
- return {
57
- ...o,
58
- itemOffered
59
- };
60
- }
61
- else {
62
- return o;
63
- }
64
- })
65
- : [];
66
- const customer = {
67
- // ...createMaskedCustomer(params),
68
- id: params.customer.id,
69
- typeOf: params.customer.typeOf,
70
- additionalProperty: (Array.isArray(params.customer.additionalProperty))
71
- ? params.customer.additionalProperty
72
- : [],
73
- identifier: (Array.isArray(params.customer.identifier))
74
- ? params.customer.identifier
75
- : []
76
- };
22
+ // if (!Array.isArray(params.acceptedOffers)) {
23
+ // throw new factory.errors.ArgumentNull('order.acceptedOffers');
24
+ // }
25
+ // const numItems: number = params.acceptedOffers.length;
26
+ // // 必要な属性についてDate型に変換(でないと検索クエリを効率的に使えない)
27
+ // const acceptedOffers = (Array.isArray(params.acceptedOffers))
28
+ // ? params.acceptedOffers.map((o) => {
29
+ // if (o.itemOffered.typeOf === factory.reservationType.EventReservation) {
30
+ // let itemOffered = o.itemOffered;
31
+ // const reservationFor = itemOffered.reservationFor;
32
+ // itemOffered = {
33
+ // ...itemOffered,
34
+ // reservationFor: {
35
+ // ...reservationFor,
36
+ // ...(reservationFor.doorTime !== undefined)
37
+ // ? {
38
+ // doorTime: moment(reservationFor.doorTime)
39
+ // .toDate()
40
+ // }
41
+ // : undefined,
42
+ // ...(reservationFor.endDate !== undefined)
43
+ // ? {
44
+ // endDate: moment(reservationFor.endDate)
45
+ // .toDate()
46
+ // }
47
+ // : undefined,
48
+ // ...(reservationFor.startDate !== undefined)
49
+ // ? {
50
+ // startDate: moment(reservationFor.startDate)
51
+ // .toDate()
52
+ // }
53
+ // : undefined
54
+ // }
55
+ // } as factory.order.IReservation;
56
+ // return {
57
+ // ...o,
58
+ // itemOffered
59
+ // };
60
+ // } else {
61
+ // return o;
62
+ // }
63
+ // })
64
+ // : [];
65
+ // const customer: factory.report.accountingReport.IOptimizedCustomer = {
66
+ // id: params.customer.id,
67
+ // typeOf: params.customer.typeOf,
68
+ // additionalProperty: (Array.isArray(params.customer.additionalProperty))
69
+ // ? params.customer.additionalProperty
70
+ // : [],
71
+ // identifier: (Array.isArray(params.customer.identifier))
72
+ // ? params.customer.identifier
73
+ // : []
74
+ // };
77
75
  return {
78
- // ...params,
79
- confirmationNumber: params.confirmationNumber,
80
76
  id: params.id,
81
77
  orderNumber: params.orderNumber,
82
- orderedItem: params.orderedItem,
83
- paymentMethods: params.paymentMethods,
84
- price: params.price,
85
- priceCurrency: params.priceCurrency,
86
- seller: params.seller,
78
+ paymentMethods: params.paymentMethods.map(({ paymentMethodId }) => ({ paymentMethodId })),
79
+ seller: {
80
+ id: params.seller.id,
81
+ name: params.seller.name,
82
+ typeOf: params.seller.typeOf
83
+ },
87
84
  typeOf: params.typeOf,
88
- customer,
89
85
  orderDate: (0, moment_timezone_1.default)(params.orderDate)
90
86
  .toDate(),
91
- acceptedOffers,
92
- numItems,
93
- ...(typeof params.broker?.typeOf === 'string') ? { broker: params.broker } : undefined
94
- // ...(params.dateReturned !== null && params.dateReturned !== undefined)
95
- // ? {
96
- // dateReturned: moment(params.dateReturned)
97
- // .toDate()
98
- // }
99
- // : undefined
87
+ // confirmationNumber: params.confirmationNumber, // discontinue(2026-05-06~)
88
+ // price: params.price, // discontinue(2026-05-06~)
89
+ // priceCurrency: params.priceCurrency, // discontinue(2026-05-06~)
90
+ // customer, // discontinue(2026-05-06~)
91
+ // numItems, // discontinue(2026-05-06~)
92
+ // orderedItem: params.orderedItem, // discontinue(2026-05-06~)
93
+ // acceptedOffers, // discontinue(2026-05-06~)
94
+ // ...(typeof params.broker?.typeOf === 'string') ? { broker: params.broker } : undefined // discontinue(2026-05-06~)
100
95
  };
101
96
  }
102
97
  function createAccountingReport(params) {
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.deleteOrder = deleteOrder;
4
- const factory_1 = require("../delivery/factory");
5
- const factory_2 = require("../../factory");
4
+ // import { createOwnershipInfosFromOrder } from '../delivery/factory';
5
+ const factory_1 = require("../../factory");
6
6
  /**
7
7
  * 注文に関わるリソースを削除する
8
8
  * 冪等性を確保すること
@@ -20,24 +20,24 @@ function deleteOrder(params) {
20
20
  return;
21
21
  }
22
22
  if (typeof order.id !== 'string') {
23
- throw new factory_2.factory.errors.Internal(`order.id undefined. orderNumber: ${params.object.orderNumber}`);
23
+ throw new factory_1.factory.errors.Internal(`order.id undefined. orderNumber: ${params.object.orderNumber}`);
24
24
  }
25
25
  // 注文アイテムの予約を削除
26
26
  await deleteReservationsByOrder(order)(repos);
27
- // 所有権削除
28
- try {
29
- await deleteOwnershipInfosByOrder(order)(repos);
30
- }
31
- catch (error) {
32
- console.error('deleteOwnershipInfosByOrder throws', error);
33
- }
27
+ // 所有権は所有期限でcleanされるので、注文削除時連動はひとまず廃止(2026-05-17~)
28
+ // // 所有権削除
29
+ // try {
30
+ // await deleteOwnershipInfosByOrder(order)(repos);
31
+ // } catch (error) {
32
+ // console.error('deleteOwnershipInfosByOrder throws', error);
33
+ // }
34
34
  // 経理レポート削除
35
35
  await repos.accountingReport.deleteByOrderNumber({ mainEntity: { orderNumber: order.orderNumber } });
36
36
  // メモ削除(2024-02-15~)
37
37
  await repos.note.deleteNotesByAbout({
38
38
  about: {
39
39
  id: order.id,
40
- typeOf: factory_2.factory.order.OrderType.Order
40
+ typeOf: factory_1.factory.order.OrderType.Order
41
41
  }
42
42
  });
43
43
  // 注文削除
@@ -49,7 +49,7 @@ function deleteOrder(params) {
49
49
  function deletePersonIfNecessary(order) {
50
50
  return async (repos) => {
51
51
  // 代理注文を除く
52
- const isCustomerPerson = order.customer.typeOf === factory_2.factory.personType.Person
52
+ const isCustomerPerson = order.customer.typeOf === factory_1.factory.personType.Person
53
53
  && typeof order.broker?.typeOf !== 'string';
54
54
  if (isCustomerPerson) {
55
55
  const ordersByPerson = await repos.order.projectFields({
@@ -60,12 +60,12 @@ function deletePersonIfNecessary(order) {
60
60
  if (ordersByPerson.length === 0) {
61
61
  const setting = await repos.setting.findOne({ project: { id: { $eq: '*' } } }, ['userPoolIdNew']);
62
62
  if (typeof setting?.userPoolIdNew !== 'string') {
63
- throw new factory_2.factory.errors.NotFound('setting.userPoolIdNew');
63
+ throw new factory_1.factory.errors.NotFound('setting.userPoolIdNew');
64
64
  }
65
65
  const deletePersonTask = {
66
- project: { typeOf: factory_2.factory.organizationType.Project, id: order.project.id },
67
- name: factory_2.factory.taskName.DeletePerson,
68
- status: factory_2.factory.taskStatus.Ready,
66
+ project: { typeOf: factory_1.factory.organizationType.Project, id: order.project.id },
67
+ name: factory_1.factory.taskName.DeletePerson,
68
+ status: factory_1.factory.taskStatus.Ready,
69
69
  runsAt: new Date(),
70
70
  remainingNumberOfTries: 10,
71
71
  numberOfTried: 0,
@@ -74,8 +74,8 @@ function deletePersonIfNecessary(order) {
74
74
  id: order.customer.id,
75
75
  agent: {
76
76
  id: order.project.id,
77
- typeOf: factory_2.factory.organizationType.Project,
78
- name: factory_2.factory.organizationType.Project
77
+ typeOf: factory_1.factory.organizationType.Project,
78
+ name: factory_1.factory.organizationType.Project
79
79
  },
80
80
  physically: true,
81
81
  userPoolId: setting.userPoolIdNew,
@@ -94,36 +94,13 @@ function deleteReservationsByOrder(order) {
94
94
  orderNumber: { $eq: order.orderNumber },
95
95
  project: { id: { $eq: order.project.id } },
96
96
  acceptedOffers: {
97
- itemOffered: { typeOf: { $in: [factory_2.factory.reservationType.EventReservation] } }
97
+ // itemOffered: { typeOf: { $in: [factory.reservationType.EventReservation] } }
98
98
  }
99
- });
99
+ }, { useReserveTransaction: true } // 予約取引参照(2026-05-18~)
100
+ );
100
101
  const reservationIds = acceptedOffers.map((o) => String(o.itemOffered.id));
101
102
  if (reservationIds.length > 0) {
102
103
  await repos.reservation.deleteByIds({ project: { id: order.project.id }, ids: reservationIds });
103
104
  }
104
105
  };
105
106
  }
106
- function deleteOwnershipInfosByOrder(order) {
107
- return async (repos) => {
108
- const now = new Date();
109
- const ownershipInfos = (0, factory_1.createOwnershipInfosFromOrder)({
110
- order: {
111
- ...order,
112
- acceptedOffers: await repos.acceptedOffer.searchAcceptedOffersByOrderNumber({
113
- orderNumber: { $eq: order.orderNumber },
114
- project: { id: { $eq: order.project.id } }
115
- })
116
- },
117
- offerIndexBase: 0
118
- });
119
- const ownershipIdentifiers = ownershipInfos.map((o) => String(o.identifier));
120
- if (ownershipIdentifiers.length > 0) {
121
- await repos.ownershipInfo.deleteExpiredByIdentifiers({
122
- project: { id: order.project.id },
123
- identifiers: ownershipIdentifiers,
124
- // 所有期限切れのもの(ownedThroughの存在しないものは削除してはいけない)
125
- ownedThrough: { $lte: now }
126
- });
127
- }
128
- };
129
- }
@@ -55,28 +55,26 @@ function paymentDue2Processing(params) {
55
55
  }
56
56
  }
57
57
  if (params.useOnOrderStatusChanged) {
58
- // 全acceptedOffersを検索(2023-12-08~)
59
- // const acceptedOffers = await repos.acceptedOffer.searchAcceptedOffersByOrderNumber(
60
- // {
61
- // orderNumber: { $eq: order.orderNumber },
62
- // project: { id: { $eq: params.project.id } }
63
- // },
64
- // ['itemOffered', 'offeredThrough']
65
- // );
66
58
  const { numAcceptedOffers } = await repos.acceptedOffer.countByOrderNumber({
67
59
  orderNumber: { $eq: order.orderNumber },
68
60
  project: { id: { $eq: params.project.id } }
69
61
  });
70
- const itemOfferedTypeOfs = await repos.acceptedOffer.distinctValues({ orderNumber: { $in: [params.orderNumber] } }, 'acceptedOffers.itemOffered.typeOf');
62
+ // const itemOfferedTypeOfs = await repos.acceptedOffer.distinctValues(
63
+ // { orderNumber: { $in: [params.orderNumber] } },
64
+ // 'acceptedOffers.itemOffered.typeOf'
65
+ // ) as factory.order.IItemOffered['typeOf'][];
71
66
  const serialNumbers = await repos.acceptedOffer.distinctValues({ orderNumber: { $in: [params.orderNumber] } }, 'acceptedOffers.serialNumber');
72
67
  const offeredThroughIdentifier = (await repos.acceptedOffer.distinctValues({ orderNumber: { $in: [params.orderNumber] } }, 'acceptedOffers.offeredThrough.identifier')).shift();
73
- debug('onAssetTransactionStatusChanged paymentDue2Processing: calling onOrderProcessing...', 'numAcceptedOffers:', numAcceptedOffers, 'itemOfferedTypeOfs:', itemOfferedTypeOfs, 'serialNumbers:', serialNumbers, 'offeredThroughIdentifier:', offeredThroughIdentifier);
68
+ debug('onAssetTransactionStatusChanged paymentDue2Processing: calling onOrderProcessing...', 'numAcceptedOffers:', numAcceptedOffers,
69
+ // 'itemOfferedTypeOfs:', itemOfferedTypeOfs,
70
+ 'serialNumbers:', serialNumbers, 'offeredThroughIdentifier:', offeredThroughIdentifier);
74
71
  await (0, onOrderStatusChanged_1.onOrderProcessing)({
75
72
  order: {
76
73
  ...order,
77
74
  // acceptedOffers,
78
75
  numAcceptedOffers,
79
- itemOfferedTypeOf: itemOfferedTypeOfs[0], // 1つしかない前提
76
+ // itemOfferedTypeOf: itemOfferedTypeOfs[0], // 1つしかない前提
77
+ itemOfferedTypeOf: factory_1.factory.reservationType.EventReservation, // EventReservationしか存在しないので固定でよし
80
78
  serialNumbers,
81
79
  offeredThroughIdentifier,
82
80
  orderStatus: factory_1.factory.orderStatus.OrderProcessing // 強制的にOrderProcessingとして処理する
@@ -5,7 +5,12 @@ type IInTransitOrder = Pick<factory.order.IOrder, 'confirmationNumber' | 'projec
5
5
  limit: number;
6
6
  page: number;
7
7
  };
8
- deliveredAcceptedOffers: factory.order.IAcceptedOffer[];
8
+ deliveredAcceptedOffers: (Omit<factory.order.IAcceptedOffer, 'priceSpecification'> & {
9
+ /**
10
+ * COA以外では注文ドキュメントにpriceSpecificationが存在しないのでIFを補完
11
+ */
12
+ priceSpecification?: factory.order.ITicketPriceSpecification;
13
+ })[];
9
14
  orderStatus: factory.orderStatus.OrderInTransit;
10
15
  };
11
16
  declare function createInformTasks(params: {
@@ -48,7 +48,7 @@ function createSendOrderTaskIfNotExist(params) {
48
48
  const sendOrderObject = {
49
49
  ...simpleOrder,
50
50
  acceptedOffers: {
51
- limit: settings.deliverOrderLimit,
51
+ limit: (await settings.getByKey('deliverOrderLimit')),
52
52
  page: 1 // page1から配送
53
53
  }
54
54
  };
@@ -18,7 +18,8 @@ const debug = (0, debug_1.default)('chevre-domain:service:order');
18
18
  function onOrderProcessing(params) {
19
19
  return async (repos, settings) => {
20
20
  const setting = await repos.setting.findOne({ project: { id: { $eq: '*' } } }, ['onOrderStatusChanged']);
21
- const { numTryConfirmReserveTransaction } = settings;
21
+ // const { numTryConfirmReserveTransaction } = settings;
22
+ const numTryConfirmReserveTransaction = await settings.getByKey('numTryConfirmReserveTransaction');
22
23
  debug('onOrderStatusChanged called.', params.order.orderNumber, params.order.orderStatus, params.order.orderDate);
23
24
  let tasks;
24
25
  let creatingCheckResourceTask;
@@ -3,6 +3,6 @@ import { factory } from '../../../../factory';
3
3
  * 受入オファーを注文アイテムに変換する
4
4
  */
5
5
  declare function acceptedOffers2orderedItem(params: {
6
- eventReservationAcceptedOffers: factory.order.IAcceptedOffer[];
6
+ eventReservationAcceptedOffers: Pick<factory.order.IAcceptedOffer, 'itemOffered'>[];
7
7
  }): factory.order.IOrderedItem[];
8
8
  export { acceptedOffers2orderedItem };
@@ -9,11 +9,6 @@ function acceptedOffers2orderedItem(params) {
9
9
  // 予約がある場合
10
10
  const { reservationOrderItems } = createReservationAcceptedOffers(params);
11
11
  // 通貨転送がある場合
12
- // const { moneyTransferOrderItems } = createMoneyTransferAcceptedOffers(params);
13
- // プロダクトがある場合
14
- // const { productOrderItems } = createProductItems(params);
15
- // return [...reservationOrderItems, ...moneyTransferOrderItems, ...productOrderItems];
16
- // return [...reservationOrderItems, ...productOrderItems];
17
12
  return reservationOrderItems;
18
13
  }
19
14
  function createReservationAcceptedOffers(params) {
@@ -1,7 +1,7 @@
1
1
  import type { IPlacingOrder } from '../../../repo/orderInTransaction';
2
2
  import { factory } from '../../../factory';
3
3
  type IPlaceOrderTransaction = Pick<factory.transaction.placeOrder.ITransaction, 'id' | 'project' | 'typeOf' | 'result' | 'object' | 'seller'>;
4
- type IOrderAcceptedOffer = factory.order.IAcceptedOffer;
4
+ type IOrderAcceptedOffer = Pick<factory.order.IAcceptedOffer, 'itemOffered' | 'serialNumber'>;
5
5
  declare function createPaymentMethods(params: {
6
6
  authorizePaymentActions: Pick<factory.action.authorize.paymentMethod.any.IAction, 'result'>[];
7
7
  }): {
@@ -94,10 +94,7 @@ function sendOrder(params) {
94
94
  case factory_2.factory.personType.Person:
95
95
  createOwnerships = true; // Personのみに限定(2026-03-15~)
96
96
  break;
97
- // case factory.creativeWorkType.WebApplication:
98
- // break;
99
97
  default:
100
- // createOwnerships = true;
101
98
  }
102
99
  try {
103
100
  const offerIndexBase = (limit * (page - 1));
@@ -105,7 +102,8 @@ function sendOrder(params) {
105
102
  $slice: [offerIndexBase, limit],
106
103
  orderNumber: { $eq: order.orderNumber },
107
104
  project: { id: { $eq: order.project.id } }
108
- });
105
+ }, { useReserveTransaction: true } // 予約取引参照(2026-05-18~)
106
+ );
109
107
  acceptedOffers = searchSlicedAcceptedOffersResult.acceptedOffers;
110
108
  debug('delivering...', order.orderNumber, acceptedOffers.map((offer) => `${offer.itemOffered.id}`), // eslint-disable-line @typescript-eslint/no-explicit-any
111
109
  params.object.acceptedOffers, 'offerIndexBase:', offerIndexBase);
@@ -48,9 +48,9 @@ payTransaction, paymentServiceId, options) {
48
48
  // タスクによって実行されているかどうか
49
49
  const executedByTask = typeof options.executor?.id === 'string' && options.executor.id !== '';
50
50
  // 非同期承認時に長時間対応(2024-05-18~)
51
- const timeout = (executedByTask && typeof settings.gmo.timeoutBackground === 'number')
52
- ? settings.gmo.timeoutBackground
53
- : settings.gmo.timeout;
51
+ const timeout = (executedByTask && typeof (await settings.getByKey('gmo')).timeoutBackground === 'number')
52
+ ? (await settings.getByKey('gmo')).timeoutBackground
53
+ : (await settings.getByKey('gmo')).timeout;
54
54
  debug('processAuthorizeCreditCard processing... executor:', options.executor?.id, 'timeout:', timeout);
55
55
  const creditCardService = new gmo_service_1.GMO.service.Credit({
56
56
  endpoint: String(availableChannel.serviceUrl)
@@ -39,7 +39,7 @@ function payCreditCard(params) {
39
39
  try {
40
40
  const creditService = new gmo_service_1.GMO.service.Credit({
41
41
  endpoint: String(availableChannel.serviceUrl)
42
- }, { timeout: settings.gmo.timeout });
42
+ }, { timeout: (await settings.getByKey('gmo')).timeout });
43
43
  await Promise.all(payObject.map(async (paymentMethod) => {
44
44
  const processAlterTranResult = await processAlterTran({
45
45
  shopId, shopPass, availableChannel, paymentMethod
@@ -59,7 +59,7 @@ function refundCreditCard(params
59
59
  try {
60
60
  const creditService = new gmo_service_1.GMO.service.Credit({
61
61
  endpoint: String(availableChannel.serviceUrl)
62
- }, { timeout: settings.gmo.timeout });
62
+ }, { timeout: (await settings.getByKey('gmo')).timeout });
63
63
  processAlterTranResult = await processAlterTran({
64
64
  availableChannel,
65
65
  alterTranResultByPayAction,
@@ -11,7 +11,7 @@ const gmoError_1 = require("./gmoError");
11
11
  async function searchGMOTrade(params, settings) {
12
12
  const creditCardService = new gmo_service_1.GMO.service.Credit({
13
13
  endpoint: String(params.availableChannel.serviceUrl)
14
- }, { timeout: settings.gmo.timeout });
14
+ }, { timeout: (await settings.getByKey('gmo')).timeout });
15
15
  // 取引状態参照
16
16
  let searchTradeResult;
17
17
  try {
@@ -59,7 +59,7 @@ function voidTransaction(params) {
59
59
  }
60
60
  const creditCardService = new gmo_service_1.GMO.service.Credit({
61
61
  endpoint: String(availableChannel.serviceUrl)
62
- }, { timeout: settings.gmo.timeout });
62
+ }, { timeout: (await settings.getByKey('gmo')).timeout });
63
63
  let searchTradeResult;
64
64
  try {
65
65
  searchTradeResult = await creditCardService.searchTrade({
@@ -12,5 +12,12 @@ declare function createPayObjectServiceOutput(params: {
12
12
  purchaseNumberAuthResult: factory.action.check.paymentMethod.movieTicket.IPurchaseNumberAuthResult;
13
13
  };
14
14
  }): factory.invoice.IPaymentServiceOutput | undefined;
15
- type IAcceptedOfferMovieTicketUsed = Pick<factory.order.IAcceptedOffer, 'itemOffered' | 'priceSpecification'>;
15
+ /**
16
+ * 決済カードの適用された注文オファー
17
+ */
18
+ type IAcceptedOfferMovieTicketUsed = Pick<factory.order.IAcceptedOffer, 'priceSpecification'> & {
19
+ itemOffered: Pick<factory.order.IReservation, 'reservationFor' | 'reservationNumber'> & {
20
+ reservedTicket: Pick<factory.order.IReservedTicket, 'identifier' | 'ticketedSeat' | 'ticketToken'> | Pick<factory.order.ICOAReservedTicket, 'identifier' | 'ticketedSeat' | 'ticketToken'>;
21
+ };
22
+ };
16
23
  export { createPayObjectServiceOutput, IAcceptedOfferMovieTicketUsed };
@@ -131,7 +131,7 @@ function reservationPriceComponent2invoicePriceComponent(component) {
131
131
  * 決済カードの対象予約情報を作成する
132
132
  */
133
133
  function movieTicket2reservation4invoice(movieTicket, order, paymentMethodType, payTransactionNumber) {
134
- // Orderから対象予約を取得
134
+ // Orderから決済カードの対象予約を取得
135
135
  const reservationOffer = order.acceptedOffersMovieTicketUsed.find(({ itemOffered, priceSpecification }) => {
136
136
  let mvtkUnitPriceSpec;
137
137
  // MovieTicket適用単価オファーからidentifierを取り出す
@@ -53,7 +53,7 @@ function payMovieTicket(params, options) {
53
53
  state: '',
54
54
  credentialsRepo: repos.credentials // set credentialsRepo(2024-11-20~)
55
55
  });
56
- const seatService = new sdk_1.Surfrock.service.seat.SeatService({ endpoint: String(availableChannel.serviceUrl), auth: mvtkReserveAuthClient }, { timeout: settings.movieticketReserve.timeout });
56
+ const seatService = new sdk_1.Surfrock.service.seat.SeatService({ endpoint: String(availableChannel.serviceUrl), auth: mvtkReserveAuthClient }, { timeout: (await settings.getByKey('movieticketReserve')).timeoutPay });
57
57
  processSeatInfoSyncResult = await (0, processSeatInfoSync_1.processSeatInfoSync)({ seatInfoSyncIn })({ seatService });
58
58
  }
59
59
  // add recipe(2024-06-03~)
@@ -73,7 +73,7 @@ function processPurchaseNumberAuth(params) {
73
73
  const authService = new sdk_1.Surfrock.service.auth.AuthService({
74
74
  endpoint: String(availableChannel.serviceUrl),
75
75
  auth: mvtkReserveAuthClient
76
- }, { timeout: settings.movieticketReserve.timeoutCheck });
76
+ }, { timeout: (await settings.getByKey('movieticketReserve')).timeoutCheck });
77
77
  const purchaseNumberAuthResult = await authService.purchaseNumberAuth(purchaseNumberAuthIn);
78
78
  return { purchaseNumberAuthIn, purchaseNumberAuthResult };
79
79
  };
@@ -17,7 +17,7 @@ const processSeatInfoSyncCancel_1 = require("./refundMovieTicket/processSeatInfo
17
17
  function wait4payActionDelayIfNeeded(params) {
18
18
  return async (settings) => {
19
19
  const { payAction } = params;
20
- const minIntervalBetweenPayAndRefund = settings.movieticketReserve.minIntervalBetweenPayAndRefund;
20
+ const minIntervalBetweenPayAndRefund = (await settings.getByKey('movieticketReserve')).minIntervalBetweenPayAndRefund;
21
21
  let waitingNecessary = false;
22
22
  if (typeof minIntervalBetweenPayAndRefund === 'number' && minIntervalBetweenPayAndRefund > 0) {
23
23
  if (payAction.actionStatus !== factory_1.factory.actionStatusType.CompletedActionStatus) {
@@ -74,7 +74,7 @@ function refundMovieTicket(params, options) {
74
74
  state: '',
75
75
  credentialsRepo: repos.credentials // set credentialsRepo(2024-11-20~)
76
76
  });
77
- const seatService = new sdk_1.Surfrock.service.seat.SeatService({ endpoint: String(availableChannel.serviceUrl), auth: mvtkReserveAuthClient }, { timeout: settings.movieticketReserve.timeout });
77
+ const seatService = new sdk_1.Surfrock.service.seat.SeatService({ endpoint: String(availableChannel.serviceUrl), auth: mvtkReserveAuthClient }, { timeout: (await settings.getByKey('movieticketReserve')).timeoutRefund });
78
78
  let seatInfoSyncCancelIn;
79
79
  let seatInfoSyncIn;
80
80
  const useSeatInfoSyncCancel = availableChannel.credentials?.useSeatInfoSyncCancel === true;