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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/example/src/chevre/migrateAuthorizePaymentActionResult.ts +83 -0
  2. package/example/src/chevre/searchOffers.ts +20 -20
  3. package/example/src/chevre/unsetUnnecessaryFields.ts +17 -11
  4. package/lib/chevre/emailMessageBuilder.d.ts +1 -1
  5. package/lib/chevre/repo/action.d.ts +4 -0
  6. package/lib/chevre/repo/action.js +6 -0
  7. package/lib/chevre/repo/event.d.ts +12 -0
  8. package/lib/chevre/repo/event.js +11 -0
  9. package/lib/chevre/repo/mongoose/schemas/offer.d.ts +4 -4
  10. package/lib/chevre/repo/mongoose/schemas/offer.js +6 -6
  11. package/lib/chevre/repo/offer.js +11 -7
  12. package/lib/chevre/repo/product.d.ts +1 -1
  13. package/lib/chevre/repo/product.js +1 -0
  14. package/lib/chevre/repo/transaction.d.ts +4 -1
  15. package/lib/chevre/repo/transaction.js +7 -1
  16. package/lib/chevre/service/assetTransaction/pay/factory.d.ts +1 -1
  17. package/lib/chevre/service/assetTransaction/pay/factory.js +49 -27
  18. package/lib/chevre/service/assetTransaction/pay/potentialActions.js +39 -18
  19. package/lib/chevre/service/assetTransaction/refund/factory.js +2 -2
  20. package/lib/chevre/service/order/deleteOrder.d.ts +2 -0
  21. package/lib/chevre/service/order/deleteOrder.js +42 -0
  22. package/lib/chevre/service/payment/any/factory.js +18 -7
  23. package/lib/chevre/service/payment/creditCard.js +3 -1
  24. package/lib/chevre/service/payment/paymentCard.js +6 -2
  25. package/lib/chevre/service/task/deleteTransaction.js +2 -0
  26. package/lib/chevre/service/transaction/deleteTransaction.d.ts +2 -0
  27. package/lib/chevre/service/transaction/moneyTransfer/factory.js +1 -5
  28. package/lib/chevre/service/transaction/moneyTransfer.js +0 -1
  29. package/lib/chevre/service/transaction/placeOrderInProgress/result/acceptedOffers.js +0 -4
  30. package/lib/chevre/service/transaction/placeOrderInProgress/result.js +11 -9
  31. package/lib/chevre/service/transaction/placeOrderInProgress/validation/validateMovieTicket.js +6 -4
  32. package/lib/chevre/service/transaction/placeOrderInProgress/validation.js +6 -20
  33. package/lib/chevre/service/transaction/placeOrderInProgress.js +0 -3
  34. package/lib/chevre/service/transaction/returnOrder.js +0 -1
  35. package/lib/chevre/settings.d.ts +2 -0
  36. package/lib/chevre/settings.js +3 -1
  37. package/package.json +3 -3
  38. package/example/src/chevre/migrateReservationProvider.ts +0 -119
@@ -0,0 +1,83 @@
1
+ // tslint:disable:no-console
2
+ import * as moment from 'moment';
3
+ import * as mongoose from 'mongoose';
4
+
5
+ import { chevre } from '../../../lib/index';
6
+
7
+ // const project = { id: String(process.env.PROJECT_ID) };
8
+ // const EXCLUDED_PROJECT_ID = process.env.EXCLUDED_PROJECT_ID;
9
+
10
+ // tslint:disable-next-line:max-func-body-length
11
+ async function main() {
12
+ await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
13
+
14
+ const actionRepo = new chevre.repository.Action(mongoose.connection);
15
+
16
+ const cursor = actionRepo.getCursor(
17
+ {
18
+ typeOf: { $eq: chevre.factory.actionType.AuthorizeAction },
19
+ actionStatus: { $eq: chevre.factory.actionStatusType.CompletedActionStatus },
20
+ 'object.typeOf': { $exists: true, $eq: chevre.factory.action.authorize.paymentMethod.any.ResultType.Payment },
21
+ 'result.typeOf': { $exists: true, $eq: chevre.factory.action.authorize.paymentMethod.any.ResultType.Payment },
22
+ startDate: {
23
+ $gte: moment('2022-08-16T00:00:00Z')
24
+ .toDate()
25
+ // $lte: moment('2023-08-01T00:00:00Z')
26
+ // .toDate()
27
+ }
28
+ },
29
+ {
30
+ _id: 1,
31
+ typeOf: 1,
32
+ result: 1,
33
+ project: 1,
34
+ startDate: 1,
35
+ actionStatus: 1
36
+ }
37
+ );
38
+ console.log('actions found');
39
+
40
+ let i = 0;
41
+ let updateCount = 0;
42
+ await cursor.eachAsync(async (doc) => {
43
+ i += 1;
44
+ const action: Pick<
45
+ chevre.factory.action.authorize.paymentMethod.any.IAction,
46
+ 'id' | 'project' | 'result' | 'typeOf' | 'startDate' | 'actionStatus'
47
+ > = doc.toObject();
48
+
49
+ const oldPaymentMethodType = action.result?.paymentMethod;
50
+ const paymentMethodType = action.result?.paymentMethodAsObject?.typeOf;
51
+ const alreadyMigrated = typeof paymentMethodType === 'string' && oldPaymentMethodType === paymentMethodType;
52
+
53
+ if (alreadyMigrated) {
54
+ console.log('already exist...', action.project.id, action.id, action.startDate, paymentMethodType, i);
55
+ } else {
56
+ if (typeof oldPaymentMethodType !== 'string') {
57
+ console.error('updating action...', action.project.id, action.id, action.startDate, oldPaymentMethodType, i, updateCount);
58
+ throw new Error('oldPaymentMethodType undefined');
59
+ }
60
+
61
+ const newPaymentMethodAsObject: chevre.factory.action.authorize.paymentMethod.any.IResultPaymentMethod = {
62
+ typeOf: oldPaymentMethodType
63
+ };
64
+ console.log(
65
+ 'updating action...', action.project.id, action.id, action.startDate, newPaymentMethodAsObject.typeOf, i, updateCount);
66
+ await actionRepo.updateById({
67
+ id: action.id,
68
+ update: {
69
+ 'result.paymentMethodAsObject': newPaymentMethodAsObject
70
+ }
71
+ });
72
+ updateCount += 1;
73
+ console.log('updated.', action.project.id, action.id, action.startDate, newPaymentMethodAsObject.typeOf, i, updateCount);
74
+ }
75
+ });
76
+
77
+ console.log(i, 'actions checked');
78
+ console.log(updateCount, 'actions updated');
79
+ }
80
+
81
+ main()
82
+ .then()
83
+ .catch(console.error);
@@ -1,37 +1,37 @@
1
1
  // tslint:disable:no-console
2
- // import * as redis from 'redis';
3
2
  import * as mongoose from 'mongoose';
4
3
 
5
4
  import { chevre } from '../../../lib/index';
6
5
 
7
6
  async function main() {
8
- await mongoose.connect(<string>process.env.MONGOLAB_URI);
7
+ await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
9
8
 
10
9
  const offerRepo = new chevre.repository.Offer(mongoose.connection);
11
10
 
12
11
  const offers = await offerRepo.search({
13
- // limit: 1,
12
+ limit: 1,
14
13
  // page: 1,
15
14
  project: { id: { $eq: String(process.env.PROJECT_ID) } },
16
- additionalProperty: {
17
- $all: [
18
- {
19
- $elemMatch: {
20
- name: { $eq: 'theaterCode' },
21
- value: { $in: ['120'] }
22
- }
23
- },
24
- {
25
- $elemMatch: {
26
- name: { $eq: 'ticketCode' },
27
- value: { $in: ['10', '1001'] }
28
- }
29
- }
30
- ]
31
- }
15
+ availability: { $eq: chevre.factory.itemAvailability.InStock }
16
+ // additionalProperty: {
17
+ // $all: [
18
+ // {
19
+ // $elemMatch: {
20
+ // name: { $eq: 'theaterCode' },
21
+ // value: { $in: ['120'] }
22
+ // }
23
+ // },
24
+ // {
25
+ // $elemMatch: {
26
+ // name: { $eq: 'ticketCode' },
27
+ // value: { $in: ['10', '1001'] }
28
+ // }
29
+ // }
30
+ // ]
31
+ // }
32
32
  });
33
33
  console.log(offers.map((offer) => {
34
- return `${offer.additionalProperty?.find((p) => p.name === 'theaterCode')?.value} ${offer.additionalProperty?.find((p) => p.name === 'ticketCode')?.value}`;
34
+ return `${offer.project.id} ${offer.id} ${offer.identifier} ${offer.name.ja}`;
35
35
  }));
36
36
  console.log(offers.length);
37
37
  }
@@ -1,25 +1,31 @@
1
1
  // tslint:disable:no-console
2
+ import * as moment from 'moment';
2
3
  import * as mongoose from 'mongoose';
3
4
 
4
5
  import { chevre } from '../../../lib/index';
5
6
 
7
+ const PROJECT_ID = String(process.env.PROJECT_ID);
8
+
6
9
  async function main() {
7
10
  await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
8
11
 
9
- const creativeWorkRepo = new chevre.repository.CreativeWork(mongoose.connection);
12
+ const transactionRepo = new chevre.repository.Transaction(mongoose.connection);
10
13
 
11
14
  let updateResult: any;
12
- updateResult = await creativeWorkRepo.unsetUnnecessaryFields({
13
- filter: { 'offers.project': { $exists: true } },
14
- $unset: { 'offers.project': 1 }
15
- });
16
- console.log('unset processed.', updateResult);
17
-
18
- updateResult = await creativeWorkRepo.unsetUnnecessaryFields({
19
- filter: { 'offers.priceCurrency': { $exists: true } },
20
- $unset: { 'offers.priceCurrency': 1 }
15
+ updateResult = await transactionRepo.unsetUnnecessaryFields({
16
+ filter: {
17
+ 'project.id': { $eq: PROJECT_ID },
18
+ typeOf: { $eq: chevre.factory.transactionType.PlaceOrder },
19
+ status: { $eq: chevre.factory.transactionStatusType.Confirmed },
20
+ startDate: {
21
+ $lte: moment('2023-08-16T07:26:00Z')
22
+ .toDate()
23
+ },
24
+ 'object.authorizeActions': { $exists: true }
25
+ },
26
+ $unset: { 'object.authorizeActions': 1 }
21
27
  });
22
- console.log('unset processed.', updateResult);
28
+ console.log('unset processed.', updateResult, 'PROJECT_ID:', PROJECT_ID);
23
29
  }
24
30
 
25
31
  main()
@@ -24,6 +24,6 @@ export declare function createReturnOrderMessage(params: {
24
24
  */
25
25
  export declare function createRefundMessage(params: {
26
26
  order: factory.order.IOrder;
27
- paymentMethods: factory.order.IPaymentMethod[];
27
+ paymentMethods: factory.order.IReferencedInvoice[];
28
28
  email?: factory.creativeWork.message.email.ICustomization;
29
29
  }): Promise<factory.creativeWork.message.email.ICreativeWork>;
@@ -150,6 +150,10 @@ export declare class MongoRepository {
150
150
  object: factory.action.authorize.offer.seatReservation.IObject<T>;
151
151
  result: factory.action.authorize.offer.seatReservation.IResult<T>;
152
152
  }): Promise<factory.action.authorize.offer.seatReservation.IAction<T>>;
153
+ updateById(params: {
154
+ id: string;
155
+ update: any;
156
+ }): Promise<void>;
153
157
  findByIdAndUpdate<T extends factory.actionType>(params: {
154
158
  id: string;
155
159
  update: any;
@@ -643,6 +643,12 @@ class MongoRepository {
643
643
  });
644
644
  });
645
645
  }
646
+ updateById(params) {
647
+ return __awaiter(this, void 0, void 0, function* () {
648
+ yield this.actionModel.updateOne({ _id: { $eq: params.id } }, params.update)
649
+ .exec();
650
+ });
651
+ }
646
652
  findByIdAndUpdate(params) {
647
653
  return __awaiter(this, void 0, void 0, function* () {
648
654
  return this.actionModel.findOneAndUpdate({ _id: params.id }, params.update, { new: true })
@@ -252,6 +252,18 @@ export declare class MongoRepository {
252
252
  };
253
253
  };
254
254
  }): Promise<import("mongodb").DeleteResult>;
255
+ deleteManyEndedByIds(params: {
256
+ typeOf: {
257
+ $in: factory.eventType[];
258
+ };
259
+ project: {
260
+ id: string;
261
+ };
262
+ ids: string[];
263
+ endDate: {
264
+ $lte: Date;
265
+ };
266
+ }): Promise<import("mongodb").DeleteResult>;
255
267
  deleteByProject(params: {
256
268
  project: {
257
269
  id: string;
@@ -966,6 +966,17 @@ class MongoRepository {
966
966
  .exec();
967
967
  });
968
968
  }
969
+ deleteManyEndedByIds(params) {
970
+ return __awaiter(this, void 0, void 0, function* () {
971
+ return this.eventModel.deleteMany({
972
+ typeOf: { $in: params.typeOf.$in },
973
+ 'project.id': { $eq: params.project.id },
974
+ _id: { $in: params.ids },
975
+ endDate: { $lte: params.endDate.$lte }
976
+ })
977
+ .exec();
978
+ });
979
+ }
969
980
  deleteByProject(params) {
970
981
  return __awaiter(this, void 0, void 0, function* () {
971
982
  yield this.eventModel.deleteMany({
@@ -25,7 +25,7 @@
25
25
  import { Schema } from 'mongoose';
26
26
  declare const modelName = "Offer";
27
27
  /**
28
- * オファースキーマ
28
+ * 単価オファースキーマ
29
29
  */
30
30
  declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, any, any>, {}, {}, {}, {}, {
31
31
  collection: string;
@@ -53,6 +53,7 @@ declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, a
53
53
  }, {
54
54
  additionalProperty: any[];
55
55
  addOn: any[];
56
+ availability: string;
56
57
  availableAtOrFrom: any[];
57
58
  _id?: string | undefined;
58
59
  name?: any;
@@ -68,7 +69,6 @@ declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, a
68
69
  validFrom?: Date | undefined;
69
70
  category?: any;
70
71
  advanceBookingRequirement?: any;
71
- availability?: string | undefined;
72
72
  hasMerchantReturnPolicy?: any;
73
73
  priceSpecification?: any;
74
74
  eligibleCustomerType?: any;
@@ -84,6 +84,7 @@ declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, a
84
84
  }, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<{
85
85
  additionalProperty: any[];
86
86
  addOn: any[];
87
+ availability: string;
87
88
  availableAtOrFrom: any[];
88
89
  _id?: string | undefined;
89
90
  name?: any;
@@ -99,7 +100,6 @@ declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, a
99
100
  validFrom?: Date | undefined;
100
101
  category?: any;
101
102
  advanceBookingRequirement?: any;
102
- availability?: string | undefined;
103
103
  hasMerchantReturnPolicy?: any;
104
104
  priceSpecification?: any;
105
105
  eligibleCustomerType?: any;
@@ -115,6 +115,7 @@ declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, a
115
115
  }>> & Omit<import("mongoose").FlatRecord<{
116
116
  additionalProperty: any[];
117
117
  addOn: any[];
118
+ availability: string;
118
119
  availableAtOrFrom: any[];
119
120
  _id?: string | undefined;
120
121
  name?: any;
@@ -130,7 +131,6 @@ declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, a
130
131
  validFrom?: Date | undefined;
131
132
  category?: any;
132
133
  advanceBookingRequirement?: any;
133
- availability?: string | undefined;
134
134
  hasMerchantReturnPolicy?: any;
135
135
  priceSpecification?: any;
136
136
  eligibleCustomerType?: any;
@@ -6,7 +6,7 @@ const writeConcern_1 = require("../writeConcern");
6
6
  const modelName = 'Offer';
7
7
  exports.modelName = modelName;
8
8
  /**
9
- * オファースキーマ
9
+ * 単価オファースキーマ
10
10
  */
11
11
  const schema = new mongoose_1.Schema({
12
12
  project: mongoose_1.SchemaTypes.Mixed,
@@ -22,14 +22,13 @@ const schema = new mongoose_1.Schema({
22
22
  alternateName: mongoose_1.SchemaTypes.Mixed,
23
23
  // acceptedPaymentMethod: SchemaTypes.Mixed, // 削除(2023-02-27~)
24
24
  addOn: [mongoose_1.SchemaTypes.Mixed],
25
- // availableAddOn: SchemaTypes.Mixed, // 削除(2023-02-27~)
26
- availability: String,
27
- // availabilityEnds: Date, // 削除(2023-02-27~)
28
- // availabilityStarts: Date, // 削除(2023-02-27~)
25
+ availability: {
26
+ type: String,
27
+ required: true
28
+ },
29
29
  availableAtOrFrom: [mongoose_1.SchemaTypes.Mixed],
30
30
  hasMerchantReturnPolicy: mongoose_1.SchemaTypes.Mixed,
31
31
  itemOffered: mongoose_1.SchemaTypes.Mixed,
32
- // price: Number, // 削除(2023-02-27~)
33
32
  priceCurrency: String,
34
33
  priceSpecification: mongoose_1.SchemaTypes.Mixed,
35
34
  eligibleCustomerType: mongoose_1.SchemaTypes.Mixed,
@@ -208,3 +207,4 @@ schema.index({ validThrough: 1, 'priceSpecification.price': 1 }, {
208
207
  validThrough: { $exists: true }
209
208
  }
210
209
  });
210
+ schema.index({ availability: 1, 'priceSpecification.price': 1 }, { name: 'searchByAvailability' });
@@ -36,7 +36,7 @@ class MongoRepository {
36
36
  }
37
37
  // tslint:disable-next-line:cyclomatic-complexity max-func-body-length
38
38
  static CREATE_OFFER_MONGO_CONDITIONS(params) {
39
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32;
39
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33;
40
40
  // MongoDB検索条件
41
41
  const andConditions = [];
42
42
  const projectIdEq = (_b = (_a = params.project) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.$eq;
@@ -266,7 +266,11 @@ class MongoRepository {
266
266
  });
267
267
  }
268
268
  }
269
- const availableAtOrFromIdEq = (_23 = (_22 = params.availableAtOrFrom) === null || _22 === void 0 ? void 0 : _22.id) === null || _23 === void 0 ? void 0 : _23.$eq;
269
+ const availabilityEq = (_22 = params.availability) === null || _22 === void 0 ? void 0 : _22.$eq;
270
+ if (typeof availabilityEq === 'string') {
271
+ andConditions.push({ availability: { $eq: availabilityEq } });
272
+ }
273
+ const availableAtOrFromIdEq = (_24 = (_23 = params.availableAtOrFrom) === null || _23 === void 0 ? void 0 : _23.id) === null || _24 === void 0 ? void 0 : _24.$eq;
270
274
  if (typeof availableAtOrFromIdEq === 'string') {
271
275
  andConditions.push({
272
276
  'availableAtOrFrom.id': {
@@ -275,7 +279,7 @@ class MongoRepository {
275
279
  }
276
280
  });
277
281
  }
278
- const availableAtOrFromIdIn = (_25 = (_24 = params.availableAtOrFrom) === null || _24 === void 0 ? void 0 : _24.id) === null || _25 === void 0 ? void 0 : _25.$in;
282
+ const availableAtOrFromIdIn = (_26 = (_25 = params.availableAtOrFrom) === null || _25 === void 0 ? void 0 : _25.id) === null || _26 === void 0 ? void 0 : _26.$in;
279
283
  if (Array.isArray(availableAtOrFromIdIn)) {
280
284
  andConditions.push({
281
285
  'availableAtOrFrom.id': {
@@ -284,7 +288,7 @@ class MongoRepository {
284
288
  }
285
289
  });
286
290
  }
287
- const addOnItemOfferedIdEq = (_28 = (_27 = (_26 = params.addOn) === null || _26 === void 0 ? void 0 : _26.itemOffered) === null || _27 === void 0 ? void 0 : _27.id) === null || _28 === void 0 ? void 0 : _28.$eq;
291
+ const addOnItemOfferedIdEq = (_29 = (_28 = (_27 = params.addOn) === null || _27 === void 0 ? void 0 : _27.itemOffered) === null || _28 === void 0 ? void 0 : _28.id) === null || _29 === void 0 ? void 0 : _29.$eq;
288
292
  if (typeof addOnItemOfferedIdEq === 'string') {
289
293
  andConditions.push({
290
294
  'addOn.itemOffered.id': {
@@ -293,7 +297,7 @@ class MongoRepository {
293
297
  }
294
298
  });
295
299
  }
296
- const hasMerchantReturnPolicyIdEq = (_30 = (_29 = params.hasMerchantReturnPolicy) === null || _29 === void 0 ? void 0 : _29.id) === null || _30 === void 0 ? void 0 : _30.$eq;
300
+ const hasMerchantReturnPolicyIdEq = (_31 = (_30 = params.hasMerchantReturnPolicy) === null || _30 === void 0 ? void 0 : _30.id) === null || _31 === void 0 ? void 0 : _31.$eq;
297
301
  if (typeof hasMerchantReturnPolicyIdEq === 'string') {
298
302
  andConditions.push({
299
303
  'hasMerchantReturnPolicy.id': {
@@ -302,7 +306,7 @@ class MongoRepository {
302
306
  }
303
307
  });
304
308
  }
305
- const additionalPropertyAll = (_31 = params.additionalProperty) === null || _31 === void 0 ? void 0 : _31.$all;
309
+ const additionalPropertyAll = (_32 = params.additionalProperty) === null || _32 === void 0 ? void 0 : _32.$all;
306
310
  if (Array.isArray(additionalPropertyAll)) {
307
311
  andConditions.push({
308
312
  additionalProperty: {
@@ -311,7 +315,7 @@ class MongoRepository {
311
315
  }
312
316
  });
313
317
  }
314
- const additionalPropertyElemMatch = (_32 = params.additionalProperty) === null || _32 === void 0 ? void 0 : _32.$elemMatch;
318
+ const additionalPropertyElemMatch = (_33 = params.additionalProperty) === null || _33 === void 0 ? void 0 : _33.$elemMatch;
315
319
  if (additionalPropertyElemMatch !== undefined && additionalPropertyElemMatch !== null) {
316
320
  andConditions.push({
317
321
  additionalProperty: {
@@ -25,7 +25,7 @@
25
25
  import { Connection } from 'mongoose';
26
26
  import * as factory from '../factory';
27
27
  export type IProduct = factory.product.IProduct | factory.service.paymentService.IService;
28
- export type IPaymentServiceByProvider = Pick<factory.service.paymentService.IService, 'name' | 'description' | 'typeOf' | 'id' | 'productID' | 'serviceType' | 'additionalProperty'> & {
28
+ export type IPaymentServiceByProvider = Pick<factory.service.paymentService.IService, 'name' | 'description' | 'typeOf' | 'id' | 'productID' | 'serviceType' | 'serviceOutput' | 'additionalProperty'> & {
29
29
  provider?: Pick<factory.service.paymentService.IProvider, 'credentials'>;
30
30
  };
31
31
  /**
@@ -286,6 +286,7 @@ class MongoRepository {
286
286
  name: '$name',
287
287
  // provider: [ [Object] ],
288
288
  additionalProperty: '$additionalProperty',
289
+ serviceOutput: '$serviceOutput',
289
290
  serviceType: '$serviceType',
290
291
  id: { $toString: '$_id' },
291
292
  // ↓セキュアな情報を隠蔽するように
@@ -98,7 +98,6 @@ export declare class MongoRepository {
98
98
  confirm<T extends factory.transactionType>(params: {
99
99
  typeOf: T;
100
100
  id: string;
101
- authorizeActions: factory.action.authorize.IAction<factory.action.authorize.IAttributes<any, any>>[];
102
101
  result: factory.transaction.IResult<T>;
103
102
  potentialActions: factory.transaction.IPotentialActions<T>;
104
103
  }): Promise<void>;
@@ -190,6 +189,10 @@ export declare class MongoRepository {
190
189
  findByIdAndDelete(params: {
191
190
  id: string;
192
191
  }): Promise<void>;
192
+ unsetUnnecessaryFields(params: {
193
+ filter: any;
194
+ $unset: any;
195
+ }): Promise<import("mongodb").UpdateResult>;
193
196
  aggregatePlaceOrder(params: {
194
197
  project?: {
195
198
  id?: {
@@ -438,7 +438,7 @@ class MongoRepository {
438
438
  }, {
439
439
  status: factory.transactionStatusType.Confirmed,
440
440
  endDate: new Date(),
441
- 'object.authorizeActions': params.authorizeActions,
441
+ // 'object.authorizeActions': params.authorizeActions,
442
442
  result: params.result,
443
443
  potentialActions: params.potentialActions // resultを更新
444
444
  }, {
@@ -770,6 +770,12 @@ class MongoRepository {
770
770
  .exec();
771
771
  });
772
772
  }
773
+ unsetUnnecessaryFields(params) {
774
+ return __awaiter(this, void 0, void 0, function* () {
775
+ return this.transactionModel.updateMany(params.filter, { $unset: params.$unset })
776
+ .exec();
777
+ });
778
+ }
773
779
  aggregatePlaceOrder(params) {
774
780
  return __awaiter(this, void 0, void 0, function* () {
775
781
  const statuses = yield Promise.all([
@@ -6,6 +6,6 @@ export declare function createStartParams(params: factory.assetTransaction.pay.I
6
6
  transactionNumber: string;
7
7
  paymentServiceType: factory.service.paymentService.PaymentServiceType;
8
8
  amount: number;
9
- paymentService?: factory.service.paymentService.IService;
9
+ paymentService?: factory.service.paymentService.IService | factory.product.IProduct;
10
10
  location?: factory.action.trade.pay.ILocation;
11
11
  }): factory.assetTransaction.IStartParams<factory.assetTransactionType.Pay>;
@@ -5,9 +5,10 @@ exports.createStartParams = void 0;
5
5
  * 決済取引ファクトリー
6
6
  */
7
7
  const factory = require("../../../factory");
8
+ const settings_1 = require("../../../settings");
8
9
  // tslint:disable-next-line:cyclomatic-complexity max-func-body-length
9
10
  function createStartParams(params) {
10
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
11
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1;
11
12
  const paymentServiceId = (params.paymentService !== undefined)
12
13
  ? String(params.paymentService.id)
13
14
  : '';
@@ -25,14 +26,14 @@ function createStartParams(params) {
25
26
  totalPaymentDue = {
26
27
  typeOf: 'MonetaryAmount',
27
28
  currency: factory.priceCurrency.JPY,
28
- value: Number(params.amount)
29
+ value: params.amount
29
30
  };
30
31
  break;
31
32
  case factory.service.paymentService.PaymentServiceType.CreditCard:
32
33
  totalPaymentDue = {
33
34
  typeOf: 'MonetaryAmount',
34
35
  currency: factory.priceCurrency.JPY,
35
- value: Number(params.amount)
36
+ value: params.amount
36
37
  };
37
38
  break;
38
39
  case factory.service.paymentService.PaymentServiceType.MovieTicket:
@@ -54,36 +55,57 @@ function createStartParams(params) {
54
55
  default:
55
56
  // no op
56
57
  }
57
- const informPaymentParams = createInformPaymentParams({ paymentService: params.paymentService });
58
+ const informPaymentParams = createInformPaymentParams({
59
+ paymentService: params.paymentService
60
+ });
58
61
  const accountId = (_g = params.object.paymentMethod) === null || _g === void 0 ? void 0 : _g.accountId;
59
- const creditCardAsPaymentServiceOutputCurrency = (_k = (_j = (_h = params.paymentService) === null || _h === void 0 ? void 0 : _h.serviceOutput) === null || _j === void 0 ? void 0 : _j.amount) === null || _k === void 0 ? void 0 : _k.currency;
60
- const paymentMethod = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ additionalProperty: (Array.isArray((_l = params.object.paymentMethod) === null || _l === void 0 ? void 0 : _l.additionalProperty))
61
- ? (_m = params.object.paymentMethod) === null || _m === void 0 ? void 0 : _m.additionalProperty
62
- : [], name: (typeof ((_o = params.object.paymentMethod) === null || _o === void 0 ? void 0 : _o.name) === 'string')
62
+ // currencyはデフォルトでJPY
63
+ let paymentMethodCurrency = factory.priceCurrency.JPY;
64
+ if (params.paymentServiceType === factory.service.paymentService.PaymentServiceType.PaymentCard) {
65
+ const paymentCardServiceOutputCurrency = (_k = (_j = (_h = params.paymentService) === null || _h === void 0 ? void 0 : _h.serviceOutput) === null || _j === void 0 ? void 0 : _j.amount) === null || _k === void 0 ? void 0 : _k.currency;
66
+ if (typeof paymentCardServiceOutputCurrency === 'string') {
67
+ paymentMethodCurrency = paymentCardServiceOutputCurrency;
68
+ }
69
+ }
70
+ else if (params.paymentServiceType === factory.service.paymentService.PaymentServiceType.CreditCard) {
71
+ // カード通貨区分が存在すれば適用
72
+ const creditCardAsPaymentServiceOutputCurrency = (_p = (_o = (_m = (_l = params.paymentService) === null || _l === void 0 ? void 0 : _l.serviceOutput) === null || _m === void 0 ? void 0 : _m.paymentMethod) === null || _o === void 0 ? void 0 : _o.amount) === null || _p === void 0 ? void 0 : _p.currency;
73
+ if (typeof creditCardAsPaymentServiceOutputCurrency === 'string') {
74
+ paymentMethodCurrency = creditCardAsPaymentServiceOutputCurrency;
75
+ }
76
+ }
77
+ const paymentMethodAmount = {
78
+ typeOf: 'MonetaryAmount',
79
+ currency: paymentMethodCurrency,
80
+ value: params.amount
81
+ };
82
+ const paymentMethod = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ additionalProperty: (Array.isArray((_q = params.object.paymentMethod) === null || _q === void 0 ? void 0 : _q.additionalProperty))
83
+ ? (_r = params.object.paymentMethod) === null || _r === void 0 ? void 0 : _r.additionalProperty
84
+ : [], name: (typeof ((_s = params.object.paymentMethod) === null || _s === void 0 ? void 0 : _s.name) === 'string')
63
85
  ? params.object.paymentMethod.name
64
- : paymentMethodType, amount: params.amount, paymentMethodId: params.transactionNumber, typeOf: paymentMethodType }, (typeof ((_p = params.object.paymentMethod) === null || _p === void 0 ? void 0 : _p.description) === 'string')
65
- ? { description: (_q = params.object.paymentMethod) === null || _q === void 0 ? void 0 : _q.description }
86
+ : paymentMethodType,
87
+ // MonetaryAmount対応(2023-08-14~)
88
+ amount: (settings_1.USE_OBJECT_AS_PAY_TRANSACTION_AMOUNT) ? paymentMethodAmount : params.amount, paymentMethodId: params.transactionNumber, typeOf: paymentMethodType }, (typeof ((_t = params.object.paymentMethod) === null || _t === void 0 ? void 0 : _t.description) === 'string')
89
+ ? { description: (_u = params.object.paymentMethod) === null || _u === void 0 ? void 0 : _u.description }
66
90
  : undefined), (totalPaymentDue !== undefined)
67
91
  ? { totalPaymentDue: totalPaymentDue }
68
- : undefined), (typeof accountId === 'string') ? { accountId: accountId } : undefined), (typeof ((_r = params.object.paymentMethod) === null || _r === void 0 ? void 0 : _r.method) === 'string')
69
- ? { method: (_s = params.object.paymentMethod) === null || _s === void 0 ? void 0 : _s.method }
70
- : undefined), (((_t = params.object.paymentMethod) === null || _t === void 0 ? void 0 : _t.creditCard) !== undefined)
71
- ? { creditCard: (_u = params.object.paymentMethod) === null || _u === void 0 ? void 0 : _u.creditCard }
72
- : undefined), (Array.isArray((_v = params.object.paymentMethod) === null || _v === void 0 ? void 0 : _v.movieTickets))
73
- ? { movieTickets: (_w = params.object.paymentMethod) === null || _w === void 0 ? void 0 : _w.movieTickets }
92
+ : undefined), (typeof accountId === 'string') ? { accountId: accountId } : undefined), (typeof ((_v = params.object.paymentMethod) === null || _v === void 0 ? void 0 : _v.method) === 'string')
93
+ ? { method: (_w = params.object.paymentMethod) === null || _w === void 0 ? void 0 : _w.method }
94
+ : undefined), (((_x = params.object.paymentMethod) === null || _x === void 0 ? void 0 : _x.creditCard) !== undefined)
95
+ ? { creditCard: (_y = params.object.paymentMethod) === null || _y === void 0 ? void 0 : _y.creditCard }
96
+ : undefined), (Array.isArray((_z = params.object.paymentMethod) === null || _z === void 0 ? void 0 : _z.movieTickets))
97
+ ? { movieTickets: (_0 = params.object.paymentMethod) === null || _0 === void 0 ? void 0 : _0.movieTickets }
74
98
  : undefined);
75
- const serviceOutput = (typeof creditCardAsPaymentServiceOutputCurrency === 'string')
76
- ? {
77
- amount: {
78
- currency: creditCardAsPaymentServiceOutputCurrency,
79
- value: paymentMethod.amount // 通貨区分としての金額
80
- }
81
- }
82
- : undefined;
83
- const object = Object.assign({
99
+ const object = {
84
100
  // パラメータから必要なもののみ取り込む
85
- accountId: (typeof accountId === 'string') ? accountId : '', paymentMethodId: params.transactionNumber, typeOf: params.paymentServiceType, id: paymentServiceId, onPaymentStatusChanged: { informPayment: informPaymentParams }, paymentMethod }, (typeof serviceOutput !== undefined) ? { serviceOutput } : undefined);
86
- return Object.assign({ project: { typeOf: factory.organizationType.Project, id: params.project.id }, transactionNumber: params.transactionNumber, typeOf: factory.assetTransactionType.Pay, agent: params.agent, recipient: params.recipient, object, expires: params.expires }, (typeof ((_x = params.location) === null || _x === void 0 ? void 0 : _x.typeOf) === 'string')
101
+ accountId: (typeof accountId === 'string') ? accountId : '',
102
+ paymentMethodId: params.transactionNumber,
103
+ typeOf: params.paymentServiceType,
104
+ id: paymentServiceId,
105
+ onPaymentStatusChanged: { informPayment: informPaymentParams },
106
+ paymentMethod
107
+ };
108
+ return Object.assign({ project: { typeOf: factory.organizationType.Project, id: params.project.id }, transactionNumber: params.transactionNumber, typeOf: factory.assetTransactionType.Pay, agent: params.agent, recipient: params.recipient, object, expires: params.expires }, (typeof ((_1 = params.location) === null || _1 === void 0 ? void 0 : _1.typeOf) === 'string')
87
109
  ? { location: params.location }
88
110
  : undefined);
89
111
  }