@chevre/domain 21.6.0-alpha.0 → 21.6.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.
- package/example/src/chevre/createManyEventsIfNotExist.ts +0 -2
- package/example/src/chevre/migrateEventOrganizer.ts +33 -12
- package/example/src/chevre/migrateMovieAvailabilityStarts.ts +11 -0
- package/example/src/chevre/searchSellers.ts +28 -0
- package/example/src/chevre/unsetUnnecessaryFields.ts +18 -6
- package/lib/chevre/repo/event.d.ts +15 -0
- package/lib/chevre/repo/event.js +12 -0
- package/lib/chevre/repo/mongoose/schemas/seller.js +12 -0
- package/lib/chevre/repo/offer.d.ts +15 -0
- package/lib/chevre/repo/offer.js +21 -0
- package/lib/chevre/repo/offerCatalog.d.ts +14 -0
- package/lib/chevre/repo/offerCatalog.js +21 -0
- package/lib/chevre/repo/product.d.ts +8 -0
- package/lib/chevre/repo/product.js +9 -0
- package/lib/chevre/repo/seller.js +14 -2
- package/lib/chevre/service/assetTransaction/pay/factory.js +33 -29
- package/lib/chevre/service/assetTransaction/pay/potentialActions.js +21 -26
- package/lib/chevre/service/assetTransaction/pay.js +0 -3
- package/lib/chevre/service/event.js +3 -7
- package/lib/chevre/service/order/onOrderStatusChanged.js +5 -3
- package/lib/chevre/service/order/placeOrder.js +10 -5
- package/lib/chevre/service/order/returnOrder.js +5 -1
- package/lib/chevre/service/order/sendOrder.js +5 -1
- package/lib/chevre/service/payment/any/factory.js +10 -9
- package/lib/chevre/service/payment/movieTicket.js +2 -2
- package/lib/chevre/service/task/onResourceUpdated/onResourceDeleted.d.ts +4 -0
- package/lib/chevre/service/task/onResourceUpdated/onResourceDeleted.js +158 -1
- package/lib/chevre/service/task/onResourceUpdated.js +4 -0
- package/lib/chevre/service/transaction/placeOrderInProgress/factory.d.ts +1 -1
- package/lib/chevre/service/transaction/placeOrderInProgress/factory.js +3 -6
- package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/givePointAward.js +15 -15
- package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/moneyTransfer.js +15 -42
- package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.js +15 -15
- package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/sendEmailMessage.js +5 -3
- package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions.js +5 -4
- package/lib/chevre/service/transaction/placeOrderInProgress/result.js +14 -7
- package/lib/chevre/service/transaction/placeOrderInProgress/validation.js +10 -2
- package/lib/chevre/service/transaction/placeOrderInProgress.js +1 -1
- package/lib/chevre/service/transaction/returnOrder/potentialActions/returnMoneyTransfer.js +5 -3
- package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPaymentMethod.js +25 -21
- package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPointAward.js +5 -3
- package/lib/chevre/service/transaction/returnOrder/potentialActions/sendEmailMessage.js +5 -4
- package/lib/chevre/service/transaction/returnOrder/potentialActions.js +17 -13
- package/lib/chevre/service/transaction/returnOrder.js +124 -95
- package/package.json +3 -3
|
@@ -455,14 +455,13 @@ function createScreeningEventFromCOA(params) {
|
|
|
455
455
|
.toDate();
|
|
456
456
|
}
|
|
457
457
|
const offers = {
|
|
458
|
-
// 不要なので廃止(2022-12-19~)
|
|
459
|
-
// project: { typeOf: params.project.typeOf, id: params.project.id },
|
|
460
458
|
typeOf: factory.offerType.Offer,
|
|
461
459
|
offeredThrough: {
|
|
462
460
|
typeOf: 'WebAPI',
|
|
463
461
|
identifier: factory.service.webAPI.Identifier.COA
|
|
464
462
|
},
|
|
465
|
-
|
|
463
|
+
// 廃止(2023-08-07~)
|
|
464
|
+
// priceCurrency: factory.priceCurrency.JPY,
|
|
466
465
|
itemOffered: {
|
|
467
466
|
serviceOutput: {
|
|
468
467
|
reservedTicket: {
|
|
@@ -605,10 +604,7 @@ function createScreeningEventSeriesFromCOA(params) {
|
|
|
605
604
|
endDate: endDate,
|
|
606
605
|
startDate: startDate,
|
|
607
606
|
coaInfo,
|
|
608
|
-
offers: Object.assign({
|
|
609
|
-
// 不要なので廃止(2023-06-09~)
|
|
610
|
-
// project: { typeOf: params.project.typeOf, id: params.project.id },
|
|
611
|
-
typeOf: factory.offerType.Offer, priceCurrency: factory.priceCurrency.JPY }, (Array.isArray(unacceptedPaymentMethod)) ? { unacceptedPaymentMethod: unacceptedPaymentMethod } : undefined),
|
|
607
|
+
offers: Object.assign({ typeOf: factory.offerType.Offer }, (Array.isArray(unacceptedPaymentMethod)) ? { unacceptedPaymentMethod: unacceptedPaymentMethod } : undefined),
|
|
612
608
|
additionalProperty
|
|
613
609
|
};
|
|
614
610
|
}
|
|
@@ -27,10 +27,12 @@ function onOrderStatusChanged(params) {
|
|
|
27
27
|
const maskedCustomer = (0, order_1.createMaskedCustomer)(params.order, { noProfile: true });
|
|
28
28
|
const simpleOrder = {
|
|
29
29
|
typeOf: params.order.typeOf,
|
|
30
|
-
seller:
|
|
30
|
+
seller: {
|
|
31
|
+
id: params.order.seller.id,
|
|
32
|
+
typeOf: params.order.seller.typeOf,
|
|
33
|
+
name: params.order.seller.name
|
|
34
|
+
},
|
|
31
35
|
customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id },
|
|
32
|
-
// IOrderへ移行(2022-11-17~)
|
|
33
|
-
// confirmationNumber: params.order.confirmationNumber,
|
|
34
36
|
orderNumber: params.order.orderNumber,
|
|
35
37
|
price: params.order.price,
|
|
36
38
|
priceCurrency: params.order.priceCurrency,
|
|
@@ -107,12 +107,13 @@ function placeOrderWithoutTransaction(params) {
|
|
|
107
107
|
// アクションを作成する(2022-04-11~)
|
|
108
108
|
const maskedCustomer = (0, order_1.createMaskedCustomer)(order, { noProfile: true });
|
|
109
109
|
const simpleOrder = {
|
|
110
|
-
// project: order.project,
|
|
111
110
|
typeOf: order.typeOf,
|
|
112
|
-
seller:
|
|
111
|
+
seller: {
|
|
112
|
+
id: order.seller.id,
|
|
113
|
+
typeOf: order.seller.typeOf,
|
|
114
|
+
name: order.seller.name
|
|
115
|
+
},
|
|
113
116
|
customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id },
|
|
114
|
-
// IOrderへ移行(2022-11-17~)
|
|
115
|
-
// confirmationNumber: order.confirmationNumber,
|
|
116
117
|
orderNumber: order.orderNumber,
|
|
117
118
|
price: order.price,
|
|
118
119
|
priceCurrency: order.priceCurrency,
|
|
@@ -171,7 +172,11 @@ function placeOrder(params) {
|
|
|
171
172
|
const maskedCustomer = (0, order_1.createMaskedCustomer)(order, { noProfile: true });
|
|
172
173
|
const simpleOrder = {
|
|
173
174
|
typeOf: order.typeOf,
|
|
174
|
-
seller:
|
|
175
|
+
seller: {
|
|
176
|
+
id: order.seller.id,
|
|
177
|
+
typeOf: order.seller.typeOf,
|
|
178
|
+
name: order.seller.name
|
|
179
|
+
},
|
|
175
180
|
customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id },
|
|
176
181
|
orderNumber: order.orderNumber,
|
|
177
182
|
price: order.price,
|
|
@@ -49,7 +49,11 @@ function returnOrder(params) {
|
|
|
49
49
|
}
|
|
50
50
|
const simpleOrder = {
|
|
51
51
|
typeOf: order.typeOf,
|
|
52
|
-
seller:
|
|
52
|
+
seller: {
|
|
53
|
+
id: order.seller.id,
|
|
54
|
+
typeOf: order.seller.typeOf,
|
|
55
|
+
name: order.seller.name
|
|
56
|
+
},
|
|
53
57
|
customer: (0, order_1.createMaskedCustomer)(order, { noProfile: true }),
|
|
54
58
|
orderNumber: order.orderNumber,
|
|
55
59
|
price: order.price,
|
|
@@ -48,7 +48,11 @@ function sendOrder(params) {
|
|
|
48
48
|
const maskedCustomer = (0, order_1.createMaskedCustomer)(order, { noProfile: true });
|
|
49
49
|
const simpleOrder = {
|
|
50
50
|
typeOf: order.typeOf,
|
|
51
|
-
seller:
|
|
51
|
+
seller: {
|
|
52
|
+
id: order.seller.id,
|
|
53
|
+
typeOf: order.seller.typeOf,
|
|
54
|
+
name: order.seller.name
|
|
55
|
+
},
|
|
52
56
|
customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id },
|
|
53
57
|
orderNumber: order.orderNumber,
|
|
54
58
|
price: order.price,
|
|
@@ -80,27 +80,28 @@ function createMovieTicket(params) {
|
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
82
|
function createAuthorizeResult(params) {
|
|
83
|
-
var _a, _b, _c, _d;
|
|
83
|
+
var _a, _b, _c, _d, _e, _f;
|
|
84
84
|
const payTransactionObject = params.payTransaction.object;
|
|
85
85
|
const totalPaymentDue = (_a = payTransactionObject.paymentMethod) === null || _a === void 0 ? void 0 : _a.totalPaymentDue;
|
|
86
86
|
if (typeof (totalPaymentDue === null || totalPaymentDue === void 0 ? void 0 : totalPaymentDue.typeOf) !== 'string') {
|
|
87
87
|
throw new factory.errors.ServiceUnavailable('payTransaction.object.paymentMethod.totalPaymentDue undefined');
|
|
88
88
|
}
|
|
89
|
+
const issuedThrough = Object.assign({ typeOf: payTransactionObject.typeOf, id: (typeof payTransactionObject.id === 'string') ? payTransactionObject.id : '' }, (typeof ((_c = (_b = payTransactionObject.serviceOutput) === null || _b === void 0 ? void 0 : _b.amount) === null || _c === void 0 ? void 0 : _c.currency) === 'string')
|
|
90
|
+
? { serviceOutput: payTransactionObject.serviceOutput }
|
|
91
|
+
: undefined);
|
|
89
92
|
return {
|
|
90
|
-
accountId: (typeof ((
|
|
93
|
+
accountId: (typeof ((_d = payTransactionObject.paymentMethod) === null || _d === void 0 ? void 0 : _d.accountId) === 'string')
|
|
91
94
|
? payTransactionObject.paymentMethod.accountId
|
|
92
95
|
: '',
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
id: (typeof payTransactionObject.id === 'string') ? payTransactionObject.id : ''
|
|
97
|
-
},
|
|
96
|
+
// 廃止(2023-08-07~)
|
|
97
|
+
// amount: params.object.amount,
|
|
98
|
+
issuedThrough,
|
|
98
99
|
paymentMethod: params.object.paymentMethod,
|
|
99
100
|
paymentStatus: factory.paymentStatusType.PaymentDue,
|
|
100
|
-
paymentMethodId: (typeof ((
|
|
101
|
+
paymentMethodId: (typeof ((_e = payTransactionObject.paymentMethod) === null || _e === void 0 ? void 0 : _e.paymentMethodId) === 'string')
|
|
101
102
|
? payTransactionObject.paymentMethod.paymentMethodId
|
|
102
103
|
: '',
|
|
103
|
-
name: (typeof ((
|
|
104
|
+
name: (typeof ((_f = payTransactionObject.paymentMethod) === null || _f === void 0 ? void 0 : _f.name) === 'string')
|
|
104
105
|
? payTransactionObject.paymentMethod.name
|
|
105
106
|
: params.object.paymentMethod,
|
|
106
107
|
totalPaymentDue: totalPaymentDue,
|
|
@@ -113,7 +113,7 @@ exports.checkMovieTicket = checkMovieTicket;
|
|
|
113
113
|
*/
|
|
114
114
|
function authorize(params, transaction, paymentServiceId, useCheckMovieTicketBeforePay, useCheckByIdentifierIfNotYet) {
|
|
115
115
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
116
|
-
var _a
|
|
116
|
+
var _a;
|
|
117
117
|
let accountId;
|
|
118
118
|
let payAction;
|
|
119
119
|
let accountsReceivablesByServiceType = [];
|
|
@@ -138,7 +138,7 @@ function authorize(params, transaction, paymentServiceId, useCheckMovieTicketBef
|
|
|
138
138
|
paymentMethod: Object.assign({ additionalProperty: (Array.isArray(additionalProperty)) ? additionalProperty : [], name: paymentMethodName, paymentMethodId: paymentMethodId, totalPaymentDue: {
|
|
139
139
|
typeOf: 'MonetaryAmount',
|
|
140
140
|
currency: factory.unitCode.C62,
|
|
141
|
-
value: (
|
|
141
|
+
value: (Array.isArray(paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.movieTickets)) ? paymentMethod.movieTickets.length : 0
|
|
142
142
|
}, typeOf: paymentMethodType }, (typeof accountId === 'string') ? { accountId } : undefined),
|
|
143
143
|
movieTickets: paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.movieTickets
|
|
144
144
|
};
|
|
@@ -5,6 +5,8 @@ import { MongoRepository as CategoryCodeRepo } from '../../../repo/categoryCode'
|
|
|
5
5
|
import { MongoRepository as CreativeWorkRepo } from '../../../repo/creativeWork';
|
|
6
6
|
import { MongoRepository as EventRepo } from '../../../repo/event';
|
|
7
7
|
import { MongoRepository as MemberRepo } from '../../../repo/member';
|
|
8
|
+
import { MongoRepository as OfferRepo } from '../../../repo/offer';
|
|
9
|
+
import { MongoRepository as OfferCatalogRepo } from '../../../repo/offerCatalog';
|
|
8
10
|
import { MongoRepository as PaymentServiceProviderRepo } from '../../../repo/paymentServiceProvider';
|
|
9
11
|
import { MongoRepository as PlaceRepo } from '../../../repo/place';
|
|
10
12
|
import { MongoRepository as ProductRepo } from '../../../repo/product';
|
|
@@ -18,6 +20,8 @@ export declare function onResourceDeleted(params: factory.task.onResourceUpdated
|
|
|
18
20
|
event: EventRepo;
|
|
19
21
|
member: MemberRepo;
|
|
20
22
|
paymentServiceProvider: PaymentServiceProviderRepo;
|
|
23
|
+
offer: OfferRepo;
|
|
24
|
+
offerCatalog: OfferCatalogRepo;
|
|
21
25
|
place: PlaceRepo;
|
|
22
26
|
product: ProductRepo;
|
|
23
27
|
productOffer: ProductOfferRepo;
|
|
@@ -41,8 +41,30 @@ function onResourceDeleted(params) {
|
|
|
41
41
|
ids: params.id
|
|
42
42
|
})(repos);
|
|
43
43
|
break;
|
|
44
|
+
case factory.offerType.Offer:
|
|
45
|
+
yield deleteResourcesByOffer({
|
|
46
|
+
project: { id: params.project.id },
|
|
47
|
+
ids: params.id
|
|
48
|
+
})(repos);
|
|
49
|
+
break;
|
|
50
|
+
case 'OfferCatalog':
|
|
51
|
+
yield deleteResourcesByOfferCatalog({
|
|
52
|
+
project: { id: params.project.id },
|
|
53
|
+
ids: params.id
|
|
54
|
+
})(repos);
|
|
55
|
+
break;
|
|
56
|
+
case factory.product.ProductType.EventService:
|
|
57
|
+
case factory.product.ProductType.Product:
|
|
58
|
+
case factory.product.ProductType.Transportation:
|
|
59
|
+
yield deleteResourcesByProduct({
|
|
60
|
+
project: { id: params.project.id },
|
|
61
|
+
ids: params.id,
|
|
62
|
+
typeOf: params.typeOf
|
|
63
|
+
})(repos);
|
|
64
|
+
break;
|
|
44
65
|
default:
|
|
45
|
-
|
|
66
|
+
// no op
|
|
67
|
+
throw new factory.errors.NotImplemented(`${params.typeOf} onDeleted not implemented`);
|
|
46
68
|
}
|
|
47
69
|
}
|
|
48
70
|
});
|
|
@@ -228,3 +250,138 @@ function deleteResourcesBySeller(params) {
|
|
|
228
250
|
}
|
|
229
251
|
});
|
|
230
252
|
}
|
|
253
|
+
function deleteResourcesByOffer(params) {
|
|
254
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
255
|
+
if (params.ids.length !== 1) {
|
|
256
|
+
throw new factory.errors.Argument('id', 'id.length must be 1');
|
|
257
|
+
}
|
|
258
|
+
for (const offerId of params.ids) {
|
|
259
|
+
const deleteActionAttributes = {
|
|
260
|
+
agent: { id: params.project.id, typeOf: factory.organizationType.Project },
|
|
261
|
+
object: { id: offerId, typeOf: factory.offerType.Offer },
|
|
262
|
+
project: { id: params.project.id, typeOf: factory.organizationType.Project },
|
|
263
|
+
typeOf: factory.actionType.DeleteAction
|
|
264
|
+
};
|
|
265
|
+
let deleteResult;
|
|
266
|
+
const action = yield repos.action.start(deleteActionAttributes);
|
|
267
|
+
try {
|
|
268
|
+
// カタログからpullItemListElement
|
|
269
|
+
const updateCatalogResult = yield repos.offerCatalog.pullItemListElement({
|
|
270
|
+
project: { id: params.project.id },
|
|
271
|
+
$pull: { itemListElement: { $elemMatch: { id: { $in: [offerId] } } } }
|
|
272
|
+
});
|
|
273
|
+
deleteResult = { updateCatalogResult };
|
|
274
|
+
}
|
|
275
|
+
catch (error) {
|
|
276
|
+
try {
|
|
277
|
+
const actionError = Object.assign(Object.assign({}, error), { message: error.message, name: error.name });
|
|
278
|
+
yield repos.action.giveUp({ typeOf: deleteActionAttributes.typeOf, id: action.id, error: actionError });
|
|
279
|
+
}
|
|
280
|
+
catch (_) {
|
|
281
|
+
// no op
|
|
282
|
+
}
|
|
283
|
+
throw error;
|
|
284
|
+
}
|
|
285
|
+
yield repos.action.complete({ typeOf: deleteActionAttributes.typeOf, id: action.id, result: deleteResult });
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
function deleteResourcesByOfferCatalog(params) {
|
|
290
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
291
|
+
if (params.ids.length !== 1) {
|
|
292
|
+
throw new factory.errors.Argument('id', 'id.length must be 1');
|
|
293
|
+
}
|
|
294
|
+
for (const catalogId of params.ids) {
|
|
295
|
+
const deleteActionAttributes = {
|
|
296
|
+
agent: { id: params.project.id, typeOf: factory.organizationType.Project },
|
|
297
|
+
object: { id: catalogId, typeOf: 'OfferCatalog' },
|
|
298
|
+
project: { id: params.project.id, typeOf: factory.organizationType.Project },
|
|
299
|
+
typeOf: factory.actionType.DeleteAction
|
|
300
|
+
};
|
|
301
|
+
let deleteResult;
|
|
302
|
+
const action = yield repos.action.start(deleteActionAttributes);
|
|
303
|
+
try {
|
|
304
|
+
// カタログからプロダクト検索
|
|
305
|
+
const productsWithCatalog = yield repos.product.search({
|
|
306
|
+
project: { id: { $eq: params.project.id } },
|
|
307
|
+
hasOfferCatalog: { id: { $eq: catalogId } }
|
|
308
|
+
}, ['_id'], []);
|
|
309
|
+
let deleteEventResult;
|
|
310
|
+
let updateOfferResult;
|
|
311
|
+
if (productsWithCatalog.length > 0) {
|
|
312
|
+
const deletingProductIds = productsWithCatalog.map((product) => product.id);
|
|
313
|
+
// 興行を設定されたイベント削除
|
|
314
|
+
deleteEventResult = yield repos.event.deleteManyByItemOfferedId({
|
|
315
|
+
project: { id: params.project.id },
|
|
316
|
+
offers: { itemOffered: { id: { $in: deletingProductIds } } }
|
|
317
|
+
});
|
|
318
|
+
// アドオンから除外
|
|
319
|
+
updateOfferResult = yield repos.offer.pullAddOns({
|
|
320
|
+
project: { id: params.project.id },
|
|
321
|
+
addOn: { itemOffered: { id: { $in: deletingProductIds } } }
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
// プロダクト削除
|
|
325
|
+
const deleteProductResult = yield repos.product.deleteByHasOfferCatalog({
|
|
326
|
+
project: { id: params.project.id },
|
|
327
|
+
hasOfferCatalog: { id: catalogId }
|
|
328
|
+
});
|
|
329
|
+
deleteResult = { deleteEventResult, deleteProductResult, updateOfferResult };
|
|
330
|
+
}
|
|
331
|
+
catch (error) {
|
|
332
|
+
try {
|
|
333
|
+
const actionError = Object.assign(Object.assign({}, error), { message: error.message, name: error.name });
|
|
334
|
+
yield repos.action.giveUp({ typeOf: deleteActionAttributes.typeOf, id: action.id, error: actionError });
|
|
335
|
+
}
|
|
336
|
+
catch (_) {
|
|
337
|
+
// no op
|
|
338
|
+
}
|
|
339
|
+
throw error;
|
|
340
|
+
}
|
|
341
|
+
yield repos.action.complete({ typeOf: deleteActionAttributes.typeOf, id: action.id, result: deleteResult });
|
|
342
|
+
}
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
function deleteResourcesByProduct(params) {
|
|
346
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
347
|
+
if (params.ids.length !== 1) {
|
|
348
|
+
throw new factory.errors.Argument('id', 'id.length must be 1');
|
|
349
|
+
}
|
|
350
|
+
for (const productId of params.ids) {
|
|
351
|
+
const deleteActionAttributes = {
|
|
352
|
+
agent: { id: params.project.id, typeOf: factory.organizationType.Project },
|
|
353
|
+
object: { id: productId, typeOf: params.typeOf },
|
|
354
|
+
project: { id: params.project.id, typeOf: factory.organizationType.Project },
|
|
355
|
+
typeOf: factory.actionType.DeleteAction
|
|
356
|
+
};
|
|
357
|
+
let deleteResult;
|
|
358
|
+
const action = yield repos.action.start(deleteActionAttributes);
|
|
359
|
+
try {
|
|
360
|
+
let deleteEventResult;
|
|
361
|
+
let updateOfferResult;
|
|
362
|
+
// 興行を設定されたイベント削除
|
|
363
|
+
deleteEventResult = yield repos.event.deleteManyByItemOfferedId({
|
|
364
|
+
project: { id: params.project.id },
|
|
365
|
+
offers: { itemOffered: { id: { $in: [productId] } } }
|
|
366
|
+
});
|
|
367
|
+
// アドオンから除外
|
|
368
|
+
updateOfferResult = yield repos.offer.pullAddOns({
|
|
369
|
+
project: { id: params.project.id },
|
|
370
|
+
addOn: { itemOffered: { id: { $in: [productId] } } }
|
|
371
|
+
});
|
|
372
|
+
deleteResult = { deleteEventResult, updateOfferResult };
|
|
373
|
+
}
|
|
374
|
+
catch (error) {
|
|
375
|
+
try {
|
|
376
|
+
const actionError = Object.assign(Object.assign({}, error), { message: error.message, name: error.name });
|
|
377
|
+
yield repos.action.giveUp({ typeOf: deleteActionAttributes.typeOf, id: action.id, error: actionError });
|
|
378
|
+
}
|
|
379
|
+
catch (_) {
|
|
380
|
+
// no op
|
|
381
|
+
}
|
|
382
|
+
throw error;
|
|
383
|
+
}
|
|
384
|
+
yield repos.action.complete({ typeOf: deleteActionAttributes.typeOf, id: action.id, result: deleteResult });
|
|
385
|
+
}
|
|
386
|
+
});
|
|
387
|
+
}
|
|
@@ -17,6 +17,8 @@ const categoryCode_1 = require("../../repo/categoryCode");
|
|
|
17
17
|
const creativeWork_1 = require("../../repo/creativeWork");
|
|
18
18
|
const event_1 = require("../../repo/event");
|
|
19
19
|
const member_1 = require("../../repo/member");
|
|
20
|
+
const offer_1 = require("../../repo/offer");
|
|
21
|
+
const offerCatalog_1 = require("../../repo/offerCatalog");
|
|
20
22
|
const paymentServiceProvider_1 = require("../../repo/paymentServiceProvider");
|
|
21
23
|
const place_1 = require("../../repo/place");
|
|
22
24
|
const product_1 = require("../../repo/product");
|
|
@@ -37,6 +39,8 @@ function call(data) {
|
|
|
37
39
|
creativeWork: new creativeWork_1.MongoRepository(connectionSettings.connection),
|
|
38
40
|
event: new event_1.MongoRepository(connectionSettings.connection),
|
|
39
41
|
member: new member_1.MongoRepository(connectionSettings.connection),
|
|
42
|
+
offer: new offer_1.MongoRepository(connectionSettings.connection),
|
|
43
|
+
offerCatalog: new offerCatalog_1.MongoRepository(connectionSettings.connection),
|
|
40
44
|
paymentServiceProvider: new paymentServiceProvider_1.MongoRepository(connectionSettings.connection),
|
|
41
45
|
place: new place_1.MongoRepository(connectionSettings.connection),
|
|
42
46
|
product: new product_1.MongoRepository(connectionSettings.connection),
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import * as factory from '../../../factory';
|
|
2
|
-
export declare function createStartParams(params: factory.transaction.placeOrder.IStartParamsWithoutDetail, passport: factory.waiter.passport.IPassport | undefined, seller: Pick<factory.seller.ISeller, 'id' | 'name' | 'typeOf' | 'project'>, broker?: factory.order.IBroker): factory.transaction.placeOrder.IStartParams;
|
|
2
|
+
export declare function createStartParams(params: factory.transaction.placeOrder.IStartParamsWithoutDetail, passport: factory.waiter.passport.IPassport | undefined, seller: Pick<factory.seller.ISeller, 'id' | 'name' | 'typeOf' | 'project' | 'additionalProperty'>, broker?: factory.order.IBroker): factory.transaction.placeOrder.IStartParams;
|
|
@@ -20,15 +20,12 @@ function createStartParams(params, passport, seller, broker) {
|
|
|
20
20
|
seller: {
|
|
21
21
|
id: seller.id,
|
|
22
22
|
name: seller.name,
|
|
23
|
-
typeOf: seller.typeOf
|
|
23
|
+
typeOf: seller.typeOf,
|
|
24
|
+
// 追加特性を追加(2023-08-08~)
|
|
25
|
+
additionalProperty: (Array.isArray(seller.additionalProperty)) ? seller.additionalProperty : []
|
|
24
26
|
},
|
|
25
27
|
object: transactionObject,
|
|
26
|
-
// expires: params.expires,
|
|
27
28
|
expiresInSeconds: params.expiresInSeconds
|
|
28
|
-
// 販売者にexpires設定があれば適用
|
|
29
|
-
// ...(typeof makesOfferFromClient?.eligibleTransactionDuration?.maxValue === 'number')
|
|
30
|
-
// ? { expiresInSeconds: makesOfferFromClient.eligibleTransactionDuration.maxValue }
|
|
31
|
-
// : undefined
|
|
32
29
|
};
|
|
33
30
|
}
|
|
34
31
|
exports.createStartParams = createStartParams;
|
package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/givePointAward.js
CHANGED
|
@@ -19,6 +19,20 @@ function createGivePointAwardActions(params) {
|
|
|
19
19
|
// インセンティブ付与アクションの指定があればそちらを反映
|
|
20
20
|
const givePointAwardParams = (_a = params.transaction.object.potentialActions) === null || _a === void 0 ? void 0 : _a.givePointAward;
|
|
21
21
|
if (Array.isArray(givePointAwardParams)) {
|
|
22
|
+
const givePointAwardPurpose = {
|
|
23
|
+
typeOf: params.order.typeOf,
|
|
24
|
+
seller: {
|
|
25
|
+
id: params.order.seller.id,
|
|
26
|
+
typeOf: params.order.seller.typeOf,
|
|
27
|
+
name: params.order.seller.name
|
|
28
|
+
},
|
|
29
|
+
// mask
|
|
30
|
+
customer: (0, order_1.createMaskedCustomer)(params.order, { noProfile: true }),
|
|
31
|
+
orderNumber: params.order.orderNumber,
|
|
32
|
+
price: params.order.price,
|
|
33
|
+
priceCurrency: params.order.priceCurrency,
|
|
34
|
+
orderDate: params.order.orderDate
|
|
35
|
+
};
|
|
22
36
|
// メンバーシップごとに、特典を確認してインセンティブ付与
|
|
23
37
|
givePointAwardParams.forEach((givePointAwardParam) => {
|
|
24
38
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
@@ -31,8 +45,6 @@ function createGivePointAwardActions(params) {
|
|
|
31
45
|
project: params.transaction.project,
|
|
32
46
|
typeOf: factory.actionType.GiveAction,
|
|
33
47
|
agent: params.transaction.project,
|
|
34
|
-
// order.customerからrecipientを生成する(2022-05-25~)
|
|
35
|
-
// recipient: params.transaction.agent,
|
|
36
48
|
recipient: {
|
|
37
49
|
typeOf: params.order.customer.typeOf,
|
|
38
50
|
id: params.order.customer.id,
|
|
@@ -42,19 +54,7 @@ function createGivePointAwardActions(params) {
|
|
|
42
54
|
accountNumber: accountNumber,
|
|
43
55
|
issuedThrough: { id: String((_h = (_g = (_f = givePointAwardParam.object) === null || _f === void 0 ? void 0 : _f.toLocation) === null || _g === void 0 ? void 0 : _g.issuedThrough) === null || _h === void 0 ? void 0 : _h.id) }
|
|
44
56
|
}, description: (typeof description === 'string') ? description : '' }, (typeof pointAwardIdentifier === 'string') ? { identifier: pointAwardIdentifier } : undefined),
|
|
45
|
-
purpose:
|
|
46
|
-
// project: params.order.project,
|
|
47
|
-
typeOf: params.order.typeOf,
|
|
48
|
-
seller: params.order.seller,
|
|
49
|
-
// mask
|
|
50
|
-
customer: (0, order_1.createMaskedCustomer)(params.order, { noProfile: true }),
|
|
51
|
-
// IOrderへ移行(2022-11-17~)
|
|
52
|
-
// confirmationNumber: params.order.confirmationNumber,
|
|
53
|
-
orderNumber: params.order.orderNumber,
|
|
54
|
-
price: params.order.price,
|
|
55
|
-
priceCurrency: params.order.priceCurrency,
|
|
56
|
-
orderDate: params.order.orderDate
|
|
57
|
-
}
|
|
57
|
+
purpose: givePointAwardPurpose
|
|
58
58
|
});
|
|
59
59
|
}
|
|
60
60
|
});
|
package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/moneyTransfer.js
CHANGED
|
@@ -19,6 +19,20 @@ function createMoneyTransferActions(params) {
|
|
|
19
19
|
.filter((a) => a.actionStatus === factory.actionStatusType.CompletedActionStatus)
|
|
20
20
|
.filter((a) => a.object.typeOf === factory.offerType.Offer)
|
|
21
21
|
.filter((a) => { var _a; return ((_a = a.object.itemOffered) === null || _a === void 0 ? void 0 : _a.typeOf) === factory.actionType.MoneyTransfer; });
|
|
22
|
+
const moneyTransferPurpose = {
|
|
23
|
+
typeOf: params.order.typeOf,
|
|
24
|
+
seller: {
|
|
25
|
+
id: params.order.seller.id,
|
|
26
|
+
typeOf: params.order.seller.typeOf,
|
|
27
|
+
name: params.order.seller.name
|
|
28
|
+
},
|
|
29
|
+
// mask
|
|
30
|
+
customer: (0, order_1.createMaskedCustomer)(params.order, { noProfile: true }),
|
|
31
|
+
orderNumber: params.order.orderNumber,
|
|
32
|
+
price: params.order.price,
|
|
33
|
+
priceCurrency: params.order.priceCurrency,
|
|
34
|
+
orderDate: params.order.orderDate
|
|
35
|
+
};
|
|
22
36
|
// const paymentMethod = params.order.paymentMethods[0];
|
|
23
37
|
authorizeMoneyTransferActions.forEach((a) => {
|
|
24
38
|
var _a;
|
|
@@ -33,49 +47,8 @@ function createMoneyTransferActions(params) {
|
|
|
33
47
|
transactionNumber: pendingTransaction.transactionNumber,
|
|
34
48
|
typeOf: factory.assetTransactionType.MoneyTransfer
|
|
35
49
|
},
|
|
36
|
-
// agent: Projectに統一(2022-05-16~)
|
|
37
50
|
agent: params.transaction.project,
|
|
38
|
-
|
|
39
|
-
// ↓recipient廃止(2022-05-16~)
|
|
40
|
-
// recipient: a.recipient,
|
|
41
|
-
// amount: {
|
|
42
|
-
// typeOf: 'MonetaryAmount',
|
|
43
|
-
// currency: pendingTransaction.object.amount.currency,
|
|
44
|
-
// value: pendingTransaction.object.amount.value
|
|
45
|
-
// },
|
|
46
|
-
// fromLocation: (paymentMethod !== undefined)
|
|
47
|
-
// ? {
|
|
48
|
-
// accountId: paymentMethod.accountId,
|
|
49
|
-
// typeOf: paymentMethod.typeOf,
|
|
50
|
-
// name: paymentMethod.name,
|
|
51
|
-
// paymentMethodId: paymentMethod.paymentMethodId,
|
|
52
|
-
// additionalProperty: paymentMethod.additionalProperty
|
|
53
|
-
// }
|
|
54
|
-
// : {
|
|
55
|
-
// typeOf: params.transaction.agent.typeOf,
|
|
56
|
-
// id: params.transaction.agent.id,
|
|
57
|
-
// name: <string>params.transaction.agent.name
|
|
58
|
-
// },
|
|
59
|
-
// toLocation: {
|
|
60
|
-
// typeOf: pendingTransaction.object.toLocation.typeOf,
|
|
61
|
-
// identifier: pendingTransaction.object.toLocation.identifier
|
|
62
|
-
// },
|
|
63
|
-
purpose: {
|
|
64
|
-
// project: params.order.project,
|
|
65
|
-
typeOf: params.order.typeOf,
|
|
66
|
-
seller: params.order.seller,
|
|
67
|
-
// mask
|
|
68
|
-
customer: (0, order_1.createMaskedCustomer)(params.order, { noProfile: true }),
|
|
69
|
-
// IOrderへ移行(2022-11-17~)
|
|
70
|
-
// confirmationNumber: params.order.confirmationNumber,
|
|
71
|
-
orderNumber: params.order.orderNumber,
|
|
72
|
-
price: params.order.price,
|
|
73
|
-
priceCurrency: params.order.priceCurrency,
|
|
74
|
-
orderDate: params.order.orderDate
|
|
75
|
-
}
|
|
76
|
-
// ...(typeof pendingTransaction.object.description === 'string')
|
|
77
|
-
// ? { description: pendingTransaction.object.description }
|
|
78
|
-
// : {}
|
|
51
|
+
purpose: moneyTransferPurpose
|
|
79
52
|
});
|
|
80
53
|
}
|
|
81
54
|
});
|
package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.js
CHANGED
|
@@ -23,6 +23,20 @@ function createRegisterServiceActions(params) {
|
|
|
23
23
|
&& a.object.length > 0
|
|
24
24
|
&& a.object[0].typeOf === factory.offerType.Offer
|
|
25
25
|
&& availableProductTypes_1.availableProductTypes.indexOf(a.object[0].itemOffered.typeOf) >= 0);
|
|
26
|
+
const registerServicePurpose = {
|
|
27
|
+
typeOf: params.order.typeOf,
|
|
28
|
+
seller: {
|
|
29
|
+
id: params.order.seller.id,
|
|
30
|
+
typeOf: params.order.seller.typeOf,
|
|
31
|
+
name: params.order.seller.name
|
|
32
|
+
},
|
|
33
|
+
// mask
|
|
34
|
+
customer: (0, order_1.createMaskedCustomer)(params.order, { noProfile: true }),
|
|
35
|
+
orderNumber: params.order.orderNumber,
|
|
36
|
+
price: params.order.price,
|
|
37
|
+
priceCurrency: params.order.priceCurrency,
|
|
38
|
+
orderDate: params.order.orderDate
|
|
39
|
+
};
|
|
26
40
|
authorizeProductOfferActions.forEach((a) => {
|
|
27
41
|
var _a;
|
|
28
42
|
const actionResult = a.result;
|
|
@@ -42,22 +56,8 @@ function createRegisterServiceActions(params) {
|
|
|
42
56
|
project: params.transaction.project,
|
|
43
57
|
typeOf: factory.actionType.ConfirmAction,
|
|
44
58
|
object: registerServiceObject,
|
|
45
|
-
// agent: Projectに統一(2022-05-16~)
|
|
46
59
|
agent: params.transaction.project,
|
|
47
|
-
|
|
48
|
-
purpose: {
|
|
49
|
-
// project: params.order.project,
|
|
50
|
-
typeOf: params.order.typeOf,
|
|
51
|
-
seller: params.order.seller,
|
|
52
|
-
// mask
|
|
53
|
-
customer: (0, order_1.createMaskedCustomer)(params.order, { noProfile: true }),
|
|
54
|
-
// IOrderへ移行(2022-11-17~)
|
|
55
|
-
// confirmationNumber: params.order.confirmationNumber,
|
|
56
|
-
orderNumber: params.order.orderNumber,
|
|
57
|
-
price: params.order.price,
|
|
58
|
-
priceCurrency: params.order.priceCurrency,
|
|
59
|
-
orderDate: params.order.orderDate
|
|
60
|
-
},
|
|
60
|
+
purpose: registerServicePurpose,
|
|
61
61
|
potentialActions: Object.assign({}, (orderProgramMembershipTask !== undefined)
|
|
62
62
|
? { orderProgramMembership: [orderProgramMembershipTask] }
|
|
63
63
|
: undefined)
|
package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/sendEmailMessage.js
CHANGED
|
@@ -22,11 +22,13 @@ function createSendEmailMessageActions(params) {
|
|
|
22
22
|
const maskedCustomer = (0, order_1.createMaskedCustomer)(params.order, { noProfile: true });
|
|
23
23
|
const sendActionPurpose = {
|
|
24
24
|
typeOf: params.order.typeOf,
|
|
25
|
-
seller:
|
|
25
|
+
seller: {
|
|
26
|
+
id: params.order.seller.id,
|
|
27
|
+
typeOf: params.order.seller.typeOf,
|
|
28
|
+
name: params.order.seller.name
|
|
29
|
+
},
|
|
26
30
|
// mask
|
|
27
31
|
customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id },
|
|
28
|
-
// IOrderへ移行(2022-11-17~)
|
|
29
|
-
// confirmationNumber: params.order.confirmationNumber,
|
|
30
32
|
orderNumber: params.order.orderNumber,
|
|
31
33
|
price: params.order.price,
|
|
32
34
|
priceCurrency: params.order.priceCurrency,
|
|
@@ -30,13 +30,14 @@ function createPotentialActions(params) {
|
|
|
30
30
|
const sendEmailMessageActions = yield (0, sendEmailMessage_1.createSendEmailMessageActions)(params);
|
|
31
31
|
const maskedCustomer = (0, order_1.createMaskedCustomer)(params.order, { noProfile: true });
|
|
32
32
|
const simpleOrder = {
|
|
33
|
-
// project: params.order.project,
|
|
34
33
|
typeOf: params.order.typeOf,
|
|
35
|
-
seller:
|
|
34
|
+
seller: {
|
|
35
|
+
id: params.order.seller.id,
|
|
36
|
+
typeOf: params.order.seller.typeOf,
|
|
37
|
+
name: params.order.seller.name
|
|
38
|
+
},
|
|
36
39
|
// mask
|
|
37
40
|
customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id },
|
|
38
|
-
// IOrderへ移行(2022-11-17~)
|
|
39
|
-
// confirmationNumber: params.order.confirmationNumber,
|
|
40
41
|
orderNumber: params.order.orderNumber,
|
|
41
42
|
price: params.order.price,
|
|
42
43
|
priceCurrency: params.order.priceCurrency,
|
|
@@ -34,11 +34,11 @@ function createSeller(params) {
|
|
|
34
34
|
var _a;
|
|
35
35
|
const seller = params.transaction.seller;
|
|
36
36
|
return {
|
|
37
|
-
// 最適化(2022-11-15~)
|
|
38
|
-
// project: { typeOf: params.transaction.project.typeOf, id: params.transaction.project.id },
|
|
39
37
|
id: seller.id,
|
|
40
38
|
name: (typeof seller.name === 'string') ? seller.name : String((_a = seller.name) === null || _a === void 0 ? void 0 : _a.ja),
|
|
41
|
-
typeOf: seller.typeOf
|
|
39
|
+
typeOf: seller.typeOf,
|
|
40
|
+
// 追加特性を追加(2023-08-08~)
|
|
41
|
+
additionalProperty: (Array.isArray(seller.additionalProperty)) ? seller.additionalProperty : []
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
function createCustomer(params) {
|
|
@@ -82,11 +82,18 @@ function createPaymentMethods(params) {
|
|
|
82
82
|
});
|
|
83
83
|
});
|
|
84
84
|
// 決済方法から注文金額の計算
|
|
85
|
+
// price += authorizePaymentActions
|
|
86
|
+
// .filter((a) => {
|
|
87
|
+
// return a.result?.totalPaymentDue?.currency === factory.priceCurrency.JPY;
|
|
88
|
+
// })
|
|
89
|
+
// .reduce((a, b) => a + (<IAuthorizeAnyPaymentResult>b.result).amount, 0);
|
|
85
90
|
price += authorizePaymentActions
|
|
86
|
-
.
|
|
91
|
+
.reduce((a, b) => {
|
|
87
92
|
var _a, _b;
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
93
|
+
const jpyAmount = (((_b = (_a = b.result) === null || _a === void 0 ? void 0 : _a.totalPaymentDue) === null || _b === void 0 ? void 0 : _b.currency) === factory.priceCurrency.JPY)
|
|
94
|
+
? b.result.totalPaymentDue.value
|
|
95
|
+
: 0;
|
|
96
|
+
return a + jpyAmount;
|
|
97
|
+
}, 0);
|
|
91
98
|
return { paymentMethods, price };
|
|
92
99
|
}
|