@chevre/domain 25.0.0-alpha.8 → 25.0.0

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 (96) hide show
  1. package/lib/chevre/repo/message.d.ts +7 -15
  2. package/lib/chevre/repo/message.js +37 -74
  3. package/lib/chevre/repo/mongoose/schemas/message.d.ts +1 -1
  4. package/lib/chevre/repo/mongoose/schemas/order.d.ts +4 -0
  5. package/lib/chevre/repo/mongoose/schemas/order.js +11 -110
  6. package/lib/chevre/repo/mongoose/schemas/setting.d.ts +7 -15
  7. package/lib/chevre/repo/mongoose/schemas/setting.js +1 -1
  8. package/lib/chevre/repo/mongoose/schemas/transaction.js +51 -50
  9. package/lib/chevre/repo/order.d.ts +3 -7
  10. package/lib/chevre/repo/order.js +56 -26
  11. package/lib/chevre/repo/orderInTransaction.d.ts +45 -22
  12. package/lib/chevre/repo/orderInTransaction.js +108 -77
  13. package/lib/chevre/repo/orderNumber.d.ts +4 -0
  14. package/lib/chevre/repo/orderNumber.js +32 -60
  15. package/lib/chevre/repo/passport.d.ts +5 -2
  16. package/lib/chevre/repo/setting/waiter.d.ts +17 -0
  17. package/lib/chevre/repo/setting/waiter.js +39 -0
  18. package/lib/chevre/repo/setting.d.ts +12 -11
  19. package/lib/chevre/repo/setting.js +6 -18
  20. package/lib/chevre/repo/task.d.ts +1 -1
  21. package/lib/chevre/repo/transaction/placeOrder.d.ts +1 -6
  22. package/lib/chevre/repo/transaction/placeOrder.js +37 -26
  23. package/lib/chevre/repo/transaction.d.ts +1 -1
  24. package/lib/chevre/repo/transaction.js +2 -2
  25. package/lib/chevre/repository.d.ts +5 -0
  26. package/lib/chevre/repository.js +11 -0
  27. package/lib/chevre/service/assetTransaction/reserve/start.d.ts +0 -2
  28. package/lib/chevre/service/offer/any.d.ts +2 -3
  29. package/lib/chevre/service/offer/any.js +8 -8
  30. package/lib/chevre/service/offer/event/authorize/processStartReserve4chevre.d.ts +0 -2
  31. package/lib/chevre/service/offer/event/authorize.d.ts +0 -4
  32. package/lib/chevre/service/offer/event/authorize.js +6 -8
  33. package/lib/chevre/service/offer/event/voidTransaction.js +29 -17
  34. package/lib/chevre/service/offer/event/voidTransactionByActionId.js +16 -12
  35. package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer.d.ts +0 -6
  36. package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer.js +10 -12
  37. package/lib/chevre/service/offer/eventServiceByCOA/authorize/factory.d.ts +1 -1
  38. package/lib/chevre/service/offer/eventServiceByCOA/authorize.js +7 -7
  39. package/lib/chevre/service/offer/eventServiceByCOA/changeOffers.js +21 -17
  40. package/lib/chevre/service/order/deleteOrder.d.ts +6 -10
  41. package/lib/chevre/service/order/deleteOrder.js +7 -48
  42. package/lib/chevre/service/order/onOrderStatusChanged/onOrderCancelled/factory.d.ts +1 -1
  43. package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially/factory.d.ts +1 -1
  44. package/lib/chevre/service/order/onOrderStatusChanged/onOrderPaymentDue.d.ts +4 -1
  45. package/lib/chevre/service/order/onOrderStatusChanged/onOrderPaymentDue.js +1 -26
  46. package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned/factory.d.ts +1 -1
  47. package/lib/chevre/service/order/placeOrder/createPlacingOrderFromExistingTransaction.js +3 -2
  48. package/lib/chevre/service/order/placeOrder/factory.d.ts +1 -1
  49. package/lib/chevre/service/order/placeOrder/factory.js +6 -6
  50. package/lib/chevre/service/order/placeOrder/voidAcceptedOfferIfNecessary.d.ts +1 -3
  51. package/lib/chevre/service/order/placeOrder/voidAcceptedOfferIfNecessary.js +3 -15
  52. package/lib/chevre/service/order/placeOrder.js +6 -6
  53. package/lib/chevre/service/order.d.ts +1 -2
  54. package/lib/chevre/service/order.js +1 -5
  55. package/lib/chevre/service/payment/any/authorize/fixOrderAsNeeded.d.ts +2 -4
  56. package/lib/chevre/service/payment/any/authorize/fixOrderAsNeeded.js +4 -6
  57. package/lib/chevre/service/payment/any/authorize.d.ts +2 -0
  58. package/lib/chevre/service/payment/any/publishPaymentUrl.d.ts +0 -4
  59. package/lib/chevre/service/payment/any/publishPaymentUrl.js +5 -8
  60. package/lib/chevre/service/task/acceptCOAOffer.js +8 -10
  61. package/lib/chevre/service/task/authorizePayment.js +2 -6
  62. package/lib/chevre/service/task/deleteTransaction.js +2 -10
  63. package/lib/chevre/service/task/publishPaymentUrl.js +6 -9
  64. package/lib/chevre/service/taskHandler.js +0 -1
  65. package/lib/chevre/service/transaction/deleteTransaction.d.ts +8 -16
  66. package/lib/chevre/service/transaction/deleteTransaction.js +46 -145
  67. package/lib/chevre/service/transaction/placeOrder/confirm/factory/result.d.ts +7 -2
  68. package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions/sendEmailMessage.d.ts +3 -2
  69. package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions.d.ts +3 -2
  70. package/lib/chevre/service/transaction/placeOrder/confirm.d.ts +2 -5
  71. package/lib/chevre/service/transaction/placeOrder/confirm.js +29 -24
  72. package/lib/chevre/service/transaction/placeOrder/exportTasks/factory.d.ts +2 -3
  73. package/lib/chevre/service/transaction/placeOrder/exportTasks/factory.js +45 -54
  74. package/lib/chevre/service/transaction/placeOrder/exportTasksById.d.ts +0 -4
  75. package/lib/chevre/service/transaction/placeOrder/exportTasksById.js +2 -3
  76. package/lib/chevre/service/transaction/placeOrder/issueOrderNumberIfNotExist.d.ts +5 -0
  77. package/lib/chevre/service/transaction/placeOrder/issueOrderNumberIfNotExist.js +37 -23
  78. package/lib/chevre/service/transaction/placeOrder/start/factory.d.ts +20 -4
  79. package/lib/chevre/service/transaction/placeOrder/start/factory.js +20 -7
  80. package/lib/chevre/service/transaction/placeOrder/start.d.ts +9 -4
  81. package/lib/chevre/service/transaction/placeOrder/start.js +18 -1
  82. package/lib/chevre/service/transaction/placeOrder/updateAgent.d.ts +0 -4
  83. package/lib/chevre/service/transaction/placeOrder/updateAgent.js +20 -22
  84. package/lib/chevre/service/transaction/placeOrder.d.ts +1 -2
  85. package/lib/chevre/service/transaction/placeOrder.js +1 -3
  86. package/lib/chevre/service/transaction.d.ts +0 -4
  87. package/lib/chevre/service/transaction.js +1 -1
  88. package/lib/chevre/service.d.ts +0 -2
  89. package/lib/chevre/service.js +0 -2
  90. package/package.json +2 -2
  91. package/lib/chevre/factory/order.d.ts +0 -2
  92. package/lib/chevre/factory/order.js +0 -5
  93. package/lib/chevre/service/order/placeOrderWithoutTransaction.d.ts +0 -22
  94. package/lib/chevre/service/order/placeOrderWithoutTransaction.js +0 -51
  95. package/lib/chevre/service/task/deletePerson.d.ts +0 -6
  96. package/lib/chevre/service/task/deletePerson.js +0 -465
@@ -11,118 +11,15 @@ const deleteOrder_1 = require("../order/deleteOrder");
11
11
  function deleteTransaction(params) {
12
12
  return async (repos) => {
13
13
  if (params.object.specifyingMethod === factory_1.factory.action.update.deleteAction.ObjectAsTransactionSpecifyingMethod.AgentId) {
14
- // transaction.agent.id指定による取引削除に対応(2023-06-30~)
15
- await createDeleteTransactionTasksByAgentId(params)(repos);
14
+ throw new factory_1.factory.errors.NotImplemented('deleteTransaction by agentId discontinued'); // discontinue(2026-06-28~)
15
+ // // transaction.agent.id指定による取引削除に対応(2023-06-30~)
16
+ // await createDeleteTransactionTasksByAgentId(params)(repos);
16
17
  }
17
18
  else {
18
19
  await deleteTransactionById(params)(repos);
19
20
  }
20
21
  };
21
22
  }
22
- function createDeleteTransactionTasksByAgentId(params) {
23
- return async (repos) => {
24
- if (params.object.specifyingMethod !== factory_1.factory.action.update.deleteAction.ObjectAsTransactionSpecifyingMethod.AgentId) {
25
- throw new factory_1.factory.errors.Argument('object.specifyingMethod', `must be ${factory_1.factory.action.update.deleteAction.ObjectAsTransactionSpecifyingMethod.AgentId}`);
26
- }
27
- const agentIdSpecified = params.object.agent.id;
28
- // agentIdによる全取引についてDeleteTransactionタスクを作成する
29
- if (typeof agentIdSpecified === 'string' && agentIdSpecified.length > 0) {
30
- const transactionTypeOf = params.object.typeOf;
31
- let transactions;
32
- if (transactionTypeOf === factory_1.factory.transactionType.PlaceOrder) {
33
- transactions = await repos.placeOrder.findPlaceOrderTransactions({
34
- project: { id: { $eq: params.object.project.id } },
35
- agent: {
36
- ids: [agentIdSpecified],
37
- typeOf: factory_1.factory.personType.Person
38
- },
39
- typeOf: transactionTypeOf,
40
- inclusion: ['typeOf', 'startDate', 'endDate', 'object', 'project']
41
- });
42
- }
43
- else if (transactionTypeOf === factory_1.factory.transactionType.ReturnOrder) {
44
- transactions = await repos.returnOrder.findReturnOrderTransactions({
45
- project: { id: { $eq: params.object.project.id } },
46
- agent: {
47
- ids: [agentIdSpecified],
48
- typeOf: factory_1.factory.personType.Person
49
- },
50
- typeOf: transactionTypeOf,
51
- inclusion: ['typeOf', 'startDate', 'endDate', 'object', 'project']
52
- });
53
- }
54
- else {
55
- throw new factory_1.factory.errors.NotImplemented(`${transactionTypeOf} not implemented`);
56
- }
57
- const deleteAt = new Date();
58
- let deleteTransactionTasks;
59
- switch (transactionTypeOf) {
60
- case factory_1.factory.transactionType.PlaceOrder:
61
- deleteTransactionTasks = transactions.map((transaction) => {
62
- return {
63
- project: transaction.project,
64
- name: factory_1.factory.taskName.DeleteTransaction,
65
- status: factory_1.factory.taskStatus.Ready,
66
- runsAt: deleteAt,
67
- remainingNumberOfTries: 3,
68
- numberOfTried: 0,
69
- executionResults: [],
70
- data: {
71
- object: {
72
- specifyingMethod: factory_1.factory.action.update.deleteAction.ObjectAsTransactionSpecifyingMethod.Id,
73
- id: transaction.id,
74
- object: {
75
- ...(typeof transaction.object.confirmationNumber === 'string')
76
- ? { confirmationNumber: transaction.object.confirmationNumber }
77
- : undefined,
78
- ...(typeof transaction.object.orderNumber === 'string')
79
- ? { orderNumber: transaction.object.orderNumber }
80
- : undefined
81
- },
82
- project: transaction.project,
83
- startDate: transaction.startDate,
84
- typeOf: transaction.typeOf,
85
- ...(transaction.endDate !== undefined) ? { endDate: transaction.endDate } : undefined
86
- }
87
- }
88
- };
89
- });
90
- break;
91
- case factory_1.factory.transactionType.ReturnOrder:
92
- deleteTransactionTasks = transactions.map((transaction) => {
93
- return {
94
- project: transaction.project,
95
- name: factory_1.factory.taskName.DeleteTransaction,
96
- status: factory_1.factory.taskStatus.Ready,
97
- runsAt: deleteAt,
98
- remainingNumberOfTries: 3,
99
- numberOfTried: 0,
100
- executionResults: [],
101
- data: {
102
- object: {
103
- specifyingMethod: factory_1.factory.action.update.deleteAction.ObjectAsTransactionSpecifyingMethod.Id,
104
- id: transaction.id,
105
- object: {
106
- order: transaction.object.order
107
- },
108
- project: transaction.project,
109
- startDate: transaction.startDate,
110
- typeOf: transaction.typeOf,
111
- ...(transaction.endDate !== undefined) ? { endDate: transaction.endDate } : undefined
112
- }
113
- }
114
- };
115
- });
116
- break;
117
- default:
118
- throw new factory_1.factory.errors.NotImplemented(`${transactionTypeOf} not implemented`);
119
- }
120
- if (deleteTransactionTasks.length > 0) {
121
- await repos.task.saveMany(deleteTransactionTasks, { emitImmediately: true });
122
- }
123
- }
124
- };
125
- }
126
23
  function deleteTransactionById(params) {
127
24
  return async (repos) => {
128
25
  if (typeof params.object.specifyingMethod === 'string'
@@ -133,7 +30,7 @@ function deleteTransactionById(params) {
133
30
  if (typeof deletingTransactionId !== 'string' || deletingTransactionId.length === 0) {
134
31
  throw new factory_1.factory.errors.ArgumentNull('object.id');
135
32
  }
136
- let deletingOrderNumberByTask;
33
+ // let deletingOrderNumberByTask: string | undefined;
137
34
  let transaction;
138
35
  if (params.object.typeOf === factory_1.factory.transactionType.PlaceOrder) {
139
36
  transaction = (await repos.placeOrder.findPlaceOrderTransactions({
@@ -141,7 +38,7 @@ function deleteTransactionById(params) {
141
38
  typeOf: params.object.typeOf,
142
39
  inclusion: ['typeOf', 'project', 'status']
143
40
  })).shift();
144
- deletingOrderNumberByTask = params.object.object.orderNumber;
41
+ // deletingOrderNumberByTask = params.object.object.orderNumber;
145
42
  }
146
43
  else if (params.object.typeOf === factory_1.factory.transactionType.ReturnOrder) {
147
44
  transaction = (await repos.returnOrder.findReturnOrderTransactions({
@@ -172,7 +69,7 @@ function deleteTransactionById(params) {
172
69
  let deleteCancelReservationTransactionResult;
173
70
  let deletedReservationNumbers = [];
174
71
  let deleteActionResult;
175
- let deleteMessagessResult;
72
+ // let deleteMessagessResult: IDeleteResult | undefined;
176
73
  const action = await repos.action.start(actionAttributes);
177
74
  try {
178
75
  const transactionTypeOf = transaction.typeOf;
@@ -191,18 +88,15 @@ function deleteTransactionById(params) {
191
88
  case factory_1.factory.transactionStatusType.Expired:
192
89
  break;
193
90
  case factory_1.factory.transactionStatusType.Confirmed: {
194
- // 削除対象の注文番号についてはタスクを参照する(2026-06-15~)
195
- // const deletingOrder = transaction.result?.order;
196
- // if (typeof deletingOrder?.orderNumber === 'string') {
91
+ // identifierによる削除に変更(2026-06-28~)
92
+ // if (typeof deletingOrderNumberByTask === 'string') {
197
93
  // await deleteOrder({
198
- // object: deletingOrder
94
+ // object: { orderNumber: deletingOrderNumberByTask }
199
95
  // })(repos);
200
96
  // }
201
- if (typeof deletingOrderNumberByTask === 'string') {
202
- await (0, deleteOrder_1.deleteOrder)({
203
- object: { orderNumber: deletingOrderNumberByTask }
204
- })(repos);
205
- }
97
+ await (0, deleteOrder_1.deleteOrder)({
98
+ object: { identifier: transaction.id }
99
+ })(repos);
206
100
  break;
207
101
  }
208
102
  default:
@@ -233,11 +127,12 @@ function deleteTransactionById(params) {
233
127
  ]
234
128
  }
235
129
  });
236
- // messages削除(2024-05-01~)
237
- const deleteMessagesByPlaceOrderResult = await deleteMessagesByPlaceOrder({
238
- transaction: params.object
239
- })(repos);
240
- deleteMessagessResult = deleteMessagesByPlaceOrderResult.deleteResult;
130
+ // メッセージはcronで定期削除するため取引削除における連動は廃止(2026-06-29~)
131
+ // // messages削除(2024-05-01~)
132
+ // const deleteMessagesByPlaceOrderResult = await deleteMessagesByPlaceOrder({
133
+ // transaction: params.object
134
+ // })(repos);
135
+ // deleteMessagessResult = deleteMessagesByPlaceOrderResult.deleteResult;
241
136
  // 取引削除
242
137
  await repos.transaction.findByIdAndDelete({ id: transaction.id });
243
138
  break;
@@ -270,7 +165,7 @@ function deleteTransactionById(params) {
270
165
  deleteCancelReservationTransactionResult,
271
166
  deletedReservationNumbers,
272
167
  deleteActionResult,
273
- ...(deleteMessagessResult !== undefined) ? { deleteMessagessResult } : undefined
168
+ // ...(deleteMessagessResult !== undefined) ? { deleteMessagessResult } : undefined
274
169
  };
275
170
  await repos.action.completeWithVoid({ typeOf: action.typeOf, id: action.id, result: actionResult });
276
171
  };
@@ -383,24 +278,30 @@ function deletePayTransactionsByPlaceOrder(params) {
383
278
  return { deletePayTransactionResult, deleteRefundResult, payTransactionNumbers };
384
279
  };
385
280
  }
386
- function deleteMessagesByPlaceOrder(params) {
387
- return async (repos) => {
388
- let deleteResult;
389
- if (params.transaction.typeOf === factory_1.factory.transactionType.PlaceOrder
390
- && params.transaction.specifyingMethod === factory_1.factory.action.update.deleteAction.ObjectAsTransactionSpecifyingMethod.Id) {
391
- const orderNumber = params.transaction.object.orderNumber;
392
- if (typeof orderNumber === 'string' && orderNumber.length > 0) {
393
- const deleteReservationsResult = await repos.message.deleteByMainEntityOrderNumber({
394
- project: { id: params.transaction.project.id },
395
- mainEntity: { orderNumber }
396
- });
397
- deleteResult = {
398
- n: deleteReservationsResult?.n,
399
- ok: deleteReservationsResult?.ok,
400
- deletedCount: deleteReservationsResult?.deletedCount
401
- };
402
- }
403
- }
404
- return { deleteResult };
405
- };
406
- }
281
+ // function deleteMessagesByPlaceOrder(params: {
282
+ // transaction: factory.task.deleteTransaction.IObject;
283
+ // }) {
284
+ // return async (repos: {
285
+ // message: MessageRepo;
286
+ // }): Promise<{
287
+ // deleteResult?: IDeleteResult;
288
+ // }> => {
289
+ // let deleteResult: IDeleteResult | undefined;
290
+ // if (params.transaction.typeOf === factory.transactionType.PlaceOrder
291
+ // && params.transaction.specifyingMethod === factory.action.update.deleteAction.ObjectAsTransactionSpecifyingMethod.Id) {
292
+ // const orderNumber = params.transaction.object.orderNumber;
293
+ // if (typeof orderNumber === 'string' && orderNumber.length > 0) {
294
+ // const deleteReservationsResult = await repos.message.deleteByMainEntityOrderNumber({
295
+ // project: { id: params.transaction.project.id },
296
+ // mainEntity: { orderNumber }
297
+ // });
298
+ // deleteResult = {
299
+ // n: deleteReservationsResult?.n,
300
+ // ok: deleteReservationsResult?.ok,
301
+ // deletedCount: deleteReservationsResult?.deletedCount
302
+ // };
303
+ // }
304
+ // }
305
+ // return { deleteResult };
306
+ // };
307
+ // }
@@ -1,4 +1,9 @@
1
1
  import { factory } from '../../../../../factory';
2
+ type IOrderAsResult = Pick<factory.order.IOrder, 'confirmationNumber' | 'orderDate' | 'orderNumber' | 'price' | 'priceCurrency' | 'typeOf'> & {
3
+ orderStatus: factory.orderStatus.OrderPaymentDue;
4
+ identifier?: never;
5
+ url?: never;
6
+ };
2
7
  /**
3
8
  * 注文取引結果としての注文を生成する
4
9
  */
@@ -6,5 +11,5 @@ declare function createOrderAsResult(params: {
6
11
  orderNumber: string;
7
12
  orderDate: Date;
8
13
  price: number;
9
- }): factory.transaction.placeOrder.IOrderAsResult;
10
- export { createOrderAsResult };
14
+ }): IOrderAsResult;
15
+ export { createOrderAsResult, IOrderAsResult };
@@ -1,7 +1,8 @@
1
1
  import { factory } from '../../../../../factory';
2
2
  import type { ISetting } from '../../../../../repo/setting';
3
+ import type { IOrderAsResult } from '../factory/result';
3
4
  export declare function createSendEmailMessageActions(params: {
4
- order: factory.transaction.placeOrder.IOrderAsResult & {
5
+ order: IOrderAsResult & {
5
6
  confirmationNumber: string;
6
7
  orderStatus: factory.orderStatus;
7
8
  price: number;
@@ -9,7 +10,7 @@ export declare function createSendEmailMessageActions(params: {
9
10
  typeOf: factory.order.OrderType;
10
11
  };
11
12
  customer: factory.order.ICustomer;
12
- seller: factory.order.ISeller;
13
+ seller: Pick<factory.order.ISeller, 'name' | 'typeOf'>;
13
14
  paymentMethods: factory.order.IReferencedInvoice[];
14
15
  potentialActions?: factory.transaction.placeOrder.IPotentialActionsParams;
15
16
  }, setting: Pick<ISetting, 'defaultSenderEmail'>): Promise<{
@@ -1,10 +1,11 @@
1
1
  import { factory } from '../../../../factory';
2
2
  import type { ISetting } from '../../../../repo/setting';
3
+ import { IOrderAsResult } from './factory/result';
3
4
  /**
4
5
  * 取引のポストアクションを作成する
5
6
  */
6
7
  export declare function createPotentialActions(params: {
7
- order: factory.transaction.placeOrder.IOrderAsResult & {
8
+ order: IOrderAsResult & {
8
9
  confirmationNumber: string;
9
10
  orderStatus: factory.orderStatus.OrderPaymentDue;
10
11
  price: number;
@@ -12,7 +13,7 @@ export declare function createPotentialActions(params: {
12
13
  typeOf: factory.order.OrderType;
13
14
  };
14
15
  customer: factory.order.ICustomer;
15
- seller: factory.order.ISeller;
16
+ seller: Pick<factory.order.ISeller, 'name' | 'typeOf'>;
16
17
  paymentMethods: factory.order.IReferencedInvoice[];
17
18
  potentialActions?: factory.transaction.placeOrder.IPotentialActionsParams;
18
19
  }, setting: Pick<ISetting, 'defaultSenderEmail'>): Promise<{
@@ -11,6 +11,7 @@ import type { SettingRepo } from '../../../repo/setting';
11
11
  import type { PlaceOrderRepo } from '../../../repo/transaction/placeOrder';
12
12
  import { factory } from '../../../factory';
13
13
  import { PlaceOrderFactory } from '../../../factory/transaction';
14
+ import { IOrderAsResult } from './confirm/factory/result';
14
15
  interface IConfirmOperationRepos {
15
16
  acceptPayAction: AcceptPayActionRepo;
16
17
  authorizePaymentMethodAction: AuthorizePaymentMethodActionRepo;
@@ -38,14 +39,10 @@ interface IConfirmOptions {
38
39
  * 注文における最大CreditCardIF決済方法数
39
40
  */
40
41
  maxNumCreditCardPaymentMethod: number;
41
- /**
42
- * 取引ドキュメントのresult.order,result,numAcceptedOffersを保管しないオプション(2026-06-15~)
43
- */
44
- disableResultOrder: boolean;
45
42
  }
46
43
  type IConfirmParams = PlaceOrderFactory.IConfirmParams;
47
44
  interface IConfirmResult {
48
- order: Pick<factory.transaction.placeOrder.IOrderAsResult, 'confirmationNumber' | 'orderNumber'>;
45
+ order: Pick<IOrderAsResult, 'confirmationNumber' | 'orderNumber'>;
49
46
  customer: factory.order.ICustomer;
50
47
  code?: string;
51
48
  /**
@@ -19,16 +19,17 @@ const debug = (0, debug_1.default)('chevre-domain:service:transaction');
19
19
  /**
20
20
  * 進行中でない取引を処理する
21
21
  */
22
- function processTransactionNotInProgress(transaction) {
22
+ function processTransactionNotInProgress(params) {
23
23
  return async (repos) => {
24
+ const { transaction, orderNumber } = params;
24
25
  if (transaction.status === factory_1.factory.transactionStatusType.Confirmed) {
25
- const resultCustomer = await repos.orderInTransaction.findCustomerByOrderNumber({
26
- orderNumber: { $eq: String(transaction.object.orderNumber) }
26
+ const resultCustomer = await repos.orderInTransaction.findCustomerByOrderIdentifier({
27
+ identifier: transaction.id
27
28
  });
28
29
  // if (resultCustomer === undefined) {
29
30
  // throw new factory.errors.Internal('resultCustomer undefined'); // impossible process
30
31
  // }
31
- const { confirmationNumber, orderNumber } = transaction.object;
32
+ const { confirmationNumber } = transaction.object;
32
33
  // Confirmedの取引であればobjectには必ず存在するはず
33
34
  if (typeof confirmationNumber !== 'string' || typeof orderNumber !== 'string'
34
35
  || confirmationNumber === '' || orderNumber === '') {
@@ -62,30 +63,30 @@ function confirm(params, options) {
62
63
  object: { orderDate: params.result.order.orderDate }
63
64
  })(repos);
64
65
  const transaction = await repos.placeOrder.findPlaceOrderById({ typeOf: factory_1.factory.transactionType.PlaceOrder, id: params.id }, ['typeOf', 'project', 'status', 'agent', 'seller', 'object', 'result']);
65
- const confirmResult = await processTransactionNotInProgress(transaction)(repos);
66
+ // 注文ドキュメントから注文番号を参照(取引開始時に発行済の前提)(2026-06-26~)
67
+ const orderNumber = await repos.orderInTransaction.findOrderNumberByIdentifier({
68
+ identifier: params.id,
69
+ project: { id: transaction.project.id }
70
+ }, { onlyPlaceOrder: false } // すでに取引確定済かもしれないのでfalse
71
+ );
72
+ const confirmResult = await processTransactionNotInProgress({ transaction, orderNumber })(repos);
66
73
  if (confirmResult !== undefined) {
67
74
  return confirmResult;
68
75
  }
69
76
  if (typeof params.agent?.id === 'string' && transaction.agent.id !== params.agent.id) {
70
77
  throw new factory_1.factory.errors.Forbidden('Transaction not yours');
71
78
  }
72
- // 注文番号は興行オファー承認時に発行済のはず(2026-06-16~)
73
- const orderNumber = transaction.object.orderNumber;
74
- if (typeof orderNumber !== 'string' || orderNumber === '') {
75
- throw new factory_1.factory.errors.Argument('transactionId', 'orderNumber not issued');
76
- }
79
+ // // 注文番号は興行オファー承認時に発行済のはず(2026-06-16~)
80
+ // const orderNumber = transaction.object.orderNumber;
81
+ // if (typeof orderNumber !== 'string' || orderNumber === '') {
82
+ // throw new factory.errors.Argument('transactionId', 'orderNumber not issued');
83
+ // }
77
84
  // 取引に対する全ての承認アクションをマージ
78
85
  const completedAuthorizeActions = await searchAuthorizeActions(params)(repos);
79
86
  let acceptPayActions = [];
80
87
  if (typeof transaction.object.paymentMethods?.paymentMethodId === 'string') {
81
88
  acceptPayActions = await searchAcceptPayActions(params)(repos);
82
89
  }
83
- // 注文番号は興行オファー承認時に発行済のはずなので、ここは不要(承認オファーなしの注文は存在しえない)(2026-06-16~)
84
- // const orderNumber = await issueOrderNumberIfNotExist({
85
- // project: { id: transaction.project.id },
86
- // id: transaction.id,
87
- // object: { orderDate: params.result.order.orderDate }
88
- // })(repos);
89
90
  // 必要あらば注文コード発行(2024-02-05~)
90
91
  let code;
91
92
  const publishCodeExpiresInSeconds = options.publishCodeExpiresInSeconds;
@@ -107,8 +108,9 @@ function confirm(params, options) {
107
108
  // authorizeProductOfferActions,
108
109
  serialNumbers } = dissolveAuthorizeActions(completedAuthorizeActions);
109
110
  // orderInTransactionから検索する(2024-03-04~)
110
- const acceptedOffers = (await repos.orderInTransaction.findAcceptedOffersWithPriceByOrderNumber({
111
- orderNumber,
111
+ const acceptedOffers = (await repos.orderInTransaction.findAcceptedOffersWithPriceByIdentifier({
112
+ // orderNumber,
113
+ identifier: transaction.id,
112
114
  project: { id: transaction.project.id }
113
115
  }))
114
116
  .filter(({ serialNumber }) => typeof serialNumber === 'string' && serialNumbers.includes(serialNumber));
@@ -125,7 +127,7 @@ function confirm(params, options) {
125
127
  }
126
128
  // retrieve customer from orderInTransaction(2024-06-24~)
127
129
  // let customer: factory.order.ICustomer = createCustomer({ transaction });
128
- const customer = await repos.orderInTransaction.findCustomerByOrderNumber({ orderNumber: { $eq: orderNumber } });
130
+ const customer = await repos.orderInTransaction.findCustomerByOrderIdentifier({ identifier: transaction.id });
129
131
  const seller = (0, factory_2.createSeller)({ transaction });
130
132
  const { paymentMethods, placingOrder, result, eventId, reservationIds } = createResult({
131
133
  ...params,
@@ -175,7 +177,10 @@ function confirm(params, options) {
175
177
  await repos.placeOrder.confirmPlaceOrder({
176
178
  typeOf: transaction.typeOf,
177
179
  id: transaction.id,
178
- object: { orderDate: params.result.order.orderDate },
180
+ object: {
181
+ orderDate: params.result.order.orderDate,
182
+ orderNumber
183
+ },
179
184
  result: result,
180
185
  potentialActions: potentialActions
181
186
  });
@@ -374,10 +379,10 @@ function createResult(params, options) {
374
379
  result: {
375
380
  authorizeActions, // 追加(2024-01-17~)
376
381
  ...(typeof params.code === 'string') ? { code: params.code } : undefined,
377
- ...((!options.disableResultOrder) && { order: orderAsResult }), // support disableResultOrder(2026-06-15~)
378
- ...((!options.disableResultOrder) && {
379
- numAcceptedOffers: params.acceptedOffers.length, // 追加(2024-01-17~)
380
- }) // support disableResultOrder(2026-06-17~)
382
+ // ...((!options.disableResultOrder) && { order: orderAsResult }), // 完全廃止(2026-06-26~)
383
+ // ...((!options.disableResultOrder) && {
384
+ // numAcceptedOffers: params.acceptedOffers.length,
385
+ // }) // 完全廃止(2026-06-26~)
381
386
  },
382
387
  ...(typeof eventId === 'string') ? { eventId } : undefined,
383
388
  ...(Array.isArray(reservationIds)) ? { reservationIds } : undefined
@@ -1,12 +1,11 @@
1
1
  import { factory } from '../../../../factory';
2
2
  import type { ISetting } from '../../../../repo/setting';
3
- type IPlaceOrderPotentialTask = factory.task.IAttributes<factory.taskName.PlaceOrder> | factory.task.IAttributes<factory.taskName.TriggerWebhook> | factory.task.IAttributes<factory.taskName.DeleteTransaction> | factory.task.IAttributes<factory.taskName.VoidPayTransaction> | factory.task.IAttributes<factory.taskName.VoidReserveTransaction>;
3
+ type IPlaceOrderPotentialTask = factory.task.IAttributes<factory.taskName.PlaceOrder> | factory.task.IAttributes<factory.taskName.DeleteTransaction> | factory.task.IAttributes<factory.taskName.VoidPayTransaction> | factory.task.IAttributes<factory.taskName.VoidReserveTransaction>;
4
4
  /**
5
5
  * 取引のタスクを作成する
6
6
  */
7
7
  export declare function createTasks(params: {
8
8
  transaction: Pick<factory.transaction.ITransaction<factory.transactionType.PlaceOrder>, 'endDate' | 'id' | 'object' | 'project' | 'seller' | 'startDate' | 'status' | 'typeOf'>;
9
9
  runsAt: Date;
10
- optimizeRedundantTasks: boolean;
11
- }, setting: Pick<ISetting, 'onTransactionStatusChanged' | 'storage'> | null): IPlaceOrderPotentialTask[];
10
+ }, setting: Pick<ISetting, 'storage'> | null): IPlaceOrderPotentialTask[];
12
11
  export {};
@@ -9,53 +9,52 @@ const factory_1 = require("../../../../factory");
9
9
  /**
10
10
  * 取引のタスクを作成する
11
11
  */
12
- function createTasks(params, setting
13
- // settings: Settings
14
- ) {
12
+ function createTasks(params, setting) {
15
13
  const taskAttributes = [];
16
14
  const transaction = params.transaction;
17
15
  const taskRunsAt = params.runsAt;
18
- const informTransaction = setting?.onTransactionStatusChanged?.informTransaction;
19
- const transactionWebhookUrls = (Array.isArray(informTransaction)) ? informTransaction : [];
20
- const triggerWebhookTaskAttributes = [];
21
- transactionWebhookUrls.forEach(({ recipient }) => {
22
- if (typeof recipient?.url === 'string') {
23
- const informObject = {
24
- id: transaction.id,
25
- typeOf: transaction.typeOf,
26
- project: transaction.project,
27
- seller: transaction.seller,
28
- startDate: transaction.startDate,
29
- status: transaction.status,
30
- ...(transaction.endDate !== undefined) ? { endDate: transaction.endDate } : undefined
31
- };
32
- const data = {
33
- object: informObject,
34
- recipient: {
35
- id: (typeof recipient?.id === 'string') ? recipient.id : '',
36
- name: recipient?.name,
37
- typeOf: factory_1.factory.creativeWorkType.WebApplication
38
- // url: recipient.url // discontinue(2025-02-13~)
39
- },
40
- target: {
41
- httpMethod: 'POST',
42
- encodingType: factory_1.factory.encodingFormat.Application.json,
43
- typeOf: 'EntryPoint',
44
- urlTemplate: recipient.url
45
- }
46
- };
47
- triggerWebhookTaskAttributes.push({
48
- project: transaction.project,
49
- name: factory_1.factory.taskName.TriggerWebhook,
50
- status: factory_1.factory.taskStatus.Ready,
51
- runsAt: taskRunsAt,
52
- remainingNumberOfTries: 3,
53
- numberOfTried: 0,
54
- executionResults: [],
55
- data
56
- });
57
- }
58
- });
16
+ // 取引通知は廃止(2026-06-29~)
17
+ // const informTransaction = setting?.onTransactionStatusChanged?.informTransaction;
18
+ // const transactionWebhookUrls = (Array.isArray(informTransaction)) ? informTransaction : [];
19
+ // const triggerWebhookTaskAttributes: factory.task.IAttributes<factory.taskName.TriggerWebhook>[] = [];
20
+ // transactionWebhookUrls.forEach(({ recipient }) => {
21
+ // if (typeof recipient?.url === 'string') {
22
+ // const informObject: factory.notification.transaction.IPlaceOrderAsNotification = {
23
+ // id: transaction.id,
24
+ // typeOf: transaction.typeOf,
25
+ // project: transaction.project,
26
+ // seller: transaction.seller,
27
+ // startDate: transaction.startDate,
28
+ // status: transaction.status,
29
+ // ...(transaction.endDate !== undefined) ? { endDate: transaction.endDate } : undefined
30
+ // };
31
+ // const data: factory.task.triggerWebhook.IInformAnyResourceAction = {
32
+ // object: informObject,
33
+ // recipient: {
34
+ // id: (typeof recipient?.id === 'string') ? recipient.id : '',
35
+ // name: recipient?.name,
36
+ // typeOf: factory.creativeWorkType.WebApplication
37
+ // // url: recipient.url // discontinue(2025-02-13~)
38
+ // },
39
+ // target: {
40
+ // httpMethod: 'POST',
41
+ // encodingType: factory.encodingFormat.Application.json,
42
+ // typeOf: 'EntryPoint',
43
+ // urlTemplate: recipient.url
44
+ // }
45
+ // };
46
+ // triggerWebhookTaskAttributes.push({
47
+ // project: transaction.project,
48
+ // name: factory.taskName.TriggerWebhook,
49
+ // status: factory.taskStatus.Ready,
50
+ // runsAt: taskRunsAt,
51
+ // remainingNumberOfTries: 3,
52
+ // numberOfTried: 0,
53
+ // executionResults: [],
54
+ // data
55
+ // });
56
+ // }
57
+ // });
59
58
  const confirmedStoragePeriodInDays = setting?.storage?.transactionConfirmedInDays;
60
59
  const canceledStoragePeriodInDays = setting?.storage?.transactionCanceledInDays;
61
60
  if (typeof confirmedStoragePeriodInDays !== 'number') {
@@ -140,7 +139,7 @@ function createTasks(params, setting
140
139
  purpose: { typeOf: transaction.typeOf, id: transaction.id }
141
140
  }
142
141
  };
143
- taskAttributes.push(...triggerWebhookTaskAttributes, deleteTransactionTask);
142
+ taskAttributes.push(deleteTransactionTask);
144
143
  switch (transaction.status) {
145
144
  case factory_1.factory.transactionStatusType.Confirmed: {
146
145
  taskAttributes.push(voidReserveTaskAttributes, voidPaymentTaskAttributes);
@@ -182,15 +181,7 @@ function createTasks(params, setting
182
181
  taskAttributes.push(voidReserveTaskAttributes, voidPaymentTaskAttributes);
183
182
  break;
184
183
  case factory_1.factory.transactionStatusType.Expired:
185
- // optimizeRedundantTasks(2025-03-)
186
- if (params.optimizeRedundantTasks === true) {
187
- if (typeof params.transaction.object.orderNumber === 'string') {
188
- taskAttributes.push(voidReserveTaskAttributes, voidPaymentTaskAttributes);
189
- }
190
- }
191
- else {
192
- taskAttributes.push(voidReserveTaskAttributes, voidPaymentTaskAttributes);
193
- }
184
+ taskAttributes.push(voidReserveTaskAttributes, voidPaymentTaskAttributes);
194
185
  break;
195
186
  default:
196
187
  throw new factory_1.factory.errors.NotImplemented(`Transaction status "${transaction.status}" not implemented.`);
@@ -16,9 +16,5 @@ declare function exportTasksById(params: {
16
16
  * タスク実行日時バッファ
17
17
  */
18
18
  runsTasksAfterInSeconds?: number;
19
- /**
20
- * support optimizeRedundantTasks(2025-03-11~)
21
- */
22
- optimizeRedundantTasks: boolean;
23
19
  }): ITaskAndTransactionOperation<void>;
24
20
  export { IExportTasksByIdRepos, exportTasksById };
@@ -26,11 +26,10 @@ function exportTasksById(params) {
26
26
  .toDate();
27
27
  }
28
28
  // search settings
29
- const setting = await repos.setting.findOne({ project: { id: { $eq: '*' } } }, ['onTransactionStatusChanged', 'storage']);
29
+ const setting = await repos.setting.findOne({ project: { id: { $eq: '*' } } }, ['storage']);
30
30
  const taskAttributes = (0, factory_2.createTasks)({
31
31
  transaction,
32
- runsAt: taskRunsAt,
33
- optimizeRedundantTasks: params.optimizeRedundantTasks === true
32
+ runsAt: taskRunsAt
34
33
  }, setting
35
34
  // settings
36
35
  );
@@ -1,3 +1,4 @@
1
+ import type { OrderInTransactionRepo, IOrderInTransaction } from '../../../repo/orderInTransaction';
1
2
  import type { OrderNumberRepo } from '../../../repo/orderNumber';
2
3
  import type { ProjectRepo } from '../../../repo/project';
3
4
  import type { PlaceOrderRepo } from '../../../repo/transaction/placeOrder';
@@ -15,9 +16,13 @@ declare function issueOrderNumberIfNotExist(params: {
15
16
  object: {
16
17
  orderDate: Date;
17
18
  };
19
+ creatingOrderInTransaction: Pick<IOrderInTransaction, 'broker' | 'seller' | 'customer'>;
20
+ }, options: {
21
+ saveOrderNumberInPlaceOrderInProgress: boolean;
18
22
  }): (repos: {
19
23
  project: ProjectRepo;
20
24
  placeOrder: PlaceOrderRepo;
25
+ orderInTransaction: OrderInTransactionRepo;
21
26
  orderNumber: OrderNumberRepo;
22
27
  }) => Promise<string>;
23
28
  export { issueOrderNumberIfNotExist };