@chevre/domain 21.20.0-alpha.23 → 21.20.0-alpha.25

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.
@@ -1,11 +1,16 @@
1
1
  import * as factory from '../../../../factory';
2
- declare function createNextSendOrderTasks(params: {
3
- order: Pick<factory.order.IOrder, 'confirmationNumber' | 'project' | 'typeOf' | 'seller' | 'orderNumber' | 'price' | 'priceCurrency' | 'orderDate' | 'customer' | 'id'> & {
4
- acceptedOffers: {
5
- limit: number;
6
- page: number;
7
- };
8
- orderStatus: factory.orderStatus.OrderProcessing | factory.orderStatus.OrderInTransit;
2
+ type IInTransitOrder = Pick<factory.order.IOrder, 'confirmationNumber' | 'project' | 'typeOf' | 'seller' | 'orderNumber' | 'price' | 'priceCurrency' | 'orderDate' | 'customer' | 'id'> & {
3
+ acceptedOffers: {
4
+ limit: number;
5
+ page: number;
9
6
  };
7
+ deliveredAcceptedOffers: factory.order.IAcceptedOffer<factory.order.IItemOffered>[];
8
+ orderStatus: factory.orderStatus.OrderProcessing | factory.orderStatus.OrderInTransit;
9
+ };
10
+ declare function createInformTasks(params: {
11
+ order: IInTransitOrder;
12
+ }): factory.task.IAttributes<factory.taskName.TriggerWebhook>[];
13
+ declare function createNextSendOrderTasks(params: {
14
+ order: IInTransitOrder;
10
15
  }): (import("@chevre/factory/lib/task").IAttributes | import("@chevre/factory/lib/task/confirmMoneyTransfer").IAttributes | import("@chevre/factory/lib/task/confirmRegisterService").IAttributes | import("@chevre/factory/lib/task/confirmPayTransaction").IAttributes | import("@chevre/factory/lib/task/confirmRegisterServiceTransaction").IAttributes | import("@chevre/factory/lib/task/confirmReserveTransaction").IAttributes | import("@chevre/factory/lib/task/createEvent").IAttributes | import("@chevre/factory/lib/task/deleteTransaction").IAttributes | import("@chevre/factory/lib/task/givePointAward").IAttributes | import("@chevre/factory/lib/task/onAssetTransactionStatusChanged").IAttributes | import("@chevre/factory/lib/task/onAuthorizationCreated").IAttributes | import("@chevre/factory/lib/task/onEventChanged").IAttributes | import("@chevre/factory/lib/task/onResourceUpdated").IAttributes | import("@chevre/factory/lib/task/onOrderPaymentCompleted").IAttributes | import("@chevre/factory/lib/task/placeOrder").IAttributes | import("@chevre/factory/lib/task/returnOrder").IAttributes | import("@chevre/factory/lib/task/returnMoneyTransfer").IAttributes | import("@chevre/factory/lib/task/returnPayTransaction").IAttributes | import("@chevre/factory/lib/task/returnPointAward").IAttributes | import("@chevre/factory/lib/task/returnReserveTransaction").IAttributes | import("@chevre/factory/lib/task/sendEmailMessage").IAttributes | import("@chevre/factory/lib/task/sendOrder").IAttributes | import("@chevre/factory/lib/task/syncScreeningRooms").IAttributes | import("@chevre/factory/lib/task/triggerWebhook").IAttributes | import("@chevre/factory/lib/task/useReservation").IAttributes | import("@chevre/factory/lib/task/voidMoneyTransferTransaction").IAttributes | import("@chevre/factory/lib/task/voidPayTransaction").IAttributes | import("@chevre/factory/lib/task/voidRegisterServiceTransaction").IAttributes | import("@chevre/factory/lib/task/voidReserveTransaction").IAttributes)[];
11
- export { createNextSendOrderTasks };
16
+ export { createInformTasks, createNextSendOrderTasks, IInTransitOrder };
@@ -1,8 +1,54 @@
1
1
  "use strict";
2
+ var _a;
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createNextSendOrderTasks = void 0;
4
+ exports.createNextSendOrderTasks = exports.createInformTasks = void 0;
4
5
  const factory = require("../../../../factory");
5
6
  const order_1 = require("../../../../factory/order");
7
+ const settings_1 = require("../../../../settings");
8
+ const informOrder = (_a = settings_1.settings.onOrderStatusChanged) === null || _a === void 0 ? void 0 : _a.informOrder;
9
+ function creteOrder4inform(order) {
10
+ return Object.assign({ project: order.project, typeOf: order.typeOf, orderNumber: order.orderNumber, acceptedOffers: order.deliveredAcceptedOffers, orderStatus: factory.orderStatus.OrderInTransit }, (typeof order.id === 'string') ? { id: order.id } : undefined);
11
+ }
12
+ function createInformTasks(params) {
13
+ if (!settings_1.USE_INFORM_ORDER_IN_TRANSIT) {
14
+ return [];
15
+ }
16
+ const { order } = params;
17
+ const taskRunsAt = new Date();
18
+ let informTasks = [];
19
+ if (Array.isArray(informOrder) && informOrder.length > 0) {
20
+ const order4inform = creteOrder4inform(order);
21
+ let recipientId = '';
22
+ recipientId = order.customer.id;
23
+ informTasks = informOrder.map((informOrderParams) => {
24
+ var _a, _b;
25
+ const informActionAttributes = {
26
+ agent: order.project,
27
+ object: order4inform,
28
+ project: order.project,
29
+ recipient: {
30
+ url: (_a = informOrderParams.recipient) === null || _a === void 0 ? void 0 : _a.url,
31
+ id: recipientId,
32
+ name: (_b = informOrderParams.recipient) === null || _b === void 0 ? void 0 : _b.name,
33
+ typeOf: factory.creativeWorkType.WebApplication
34
+ },
35
+ typeOf: factory.actionType.InformAction
36
+ };
37
+ return {
38
+ project: order.project,
39
+ name: factory.taskName.TriggerWebhook,
40
+ status: factory.taskStatus.Ready,
41
+ runsAt: taskRunsAt,
42
+ remainingNumberOfTries: 10,
43
+ numberOfTried: 0,
44
+ executionResults: [],
45
+ data: informActionAttributes
46
+ };
47
+ });
48
+ }
49
+ return informTasks;
50
+ }
51
+ exports.createInformTasks = createInformTasks;
6
52
  function createNextSendOrderTasks(params) {
7
53
  const now = new Date();
8
54
  const taskAttributes = [];
@@ -1,13 +1,7 @@
1
1
  import type { MongoRepository as TaskRepo } from '../../../repo/task';
2
- import * as factory from '../../../factory';
2
+ import { IInTransitOrder } from './onOrderDeliveredPartially/factory';
3
3
  declare function onOrderDeliveredPartially(params: {
4
- order: Pick<factory.order.IOrder, 'confirmationNumber' | 'project' | 'typeOf' | 'seller' | 'orderNumber' | 'price' | 'priceCurrency' | 'orderDate' | 'customer' | 'id'> & {
5
- acceptedOffers: {
6
- limit: number;
7
- page: number;
8
- };
9
- orderStatus: factory.orderStatus.OrderProcessing | factory.orderStatus.OrderInTransit;
10
- };
4
+ order: IInTransitOrder;
11
5
  }): (repos: {
12
6
  task: TaskRepo;
13
7
  }) => Promise<void>;
@@ -17,7 +17,6 @@ const createDebug = require("debug");
17
17
  const factory = require("../../../factory");
18
18
  const factory_1 = require("./onOrderDeliveredPartially/factory");
19
19
  const debug = createDebug('chevre-domain:service:order');
20
- // type IPlaceOrderTransaction = Pick<factory.transaction.placeOrder.ITransaction, 'id' | 'project' | 'typeOf' | 'potentialActions'>;
21
20
  function onOrderDeliveredPartially(params) {
22
21
  return (repos) => __awaiter(this, void 0, void 0, function* () {
23
22
  debug('onOrderStatusChanged called.', params.order.orderNumber, params.order.orderStatus, params.order.orderDate);
@@ -25,8 +24,10 @@ function onOrderDeliveredPartially(params) {
25
24
  switch (params.order.orderStatus) {
26
25
  case factory.orderStatus.OrderInTransit:
27
26
  case factory.orderStatus.OrderProcessing:
28
- // 次の配送タスクを作成
29
- tasks = (0, factory_1.createNextSendOrderTasks)({ order: params.order });
27
+ tasks = [
28
+ ...(0, factory_1.createInformTasks)({ order: params.order }),
29
+ ...(0, factory_1.createNextSendOrderTasks)({ order: params.order }) // 次の配送タスクを作成
30
+ ];
30
31
  break;
31
32
  default:
32
33
  throw new factory.errors.NotImplemented(`${params.order.orderStatus} not implemented`);
@@ -50,7 +50,7 @@ function creteOrder4inform(order) {
50
50
  // 冗長な個人情報をmask
51
51
  return Object.assign({
52
52
  // whitelistで作成する(2022-07-19~)
53
- project: order.project, typeOf: order.typeOf, seller: order.seller, price: order.price, priceCurrency: order.priceCurrency, confirmationNumber: order.confirmationNumber, orderNumber: order.orderNumber, acceptedOffers: order.acceptedOffers, orderStatus: order.orderStatus, orderDate: order.orderDate,
53
+ project: order.project, typeOf: order.typeOf, seller: order.seller, price: order.price, priceCurrency: order.priceCurrency, confirmationNumber: order.confirmationNumber, orderNumber: order.orderNumber, acceptedOffers: order.acceptedOffers, numAcceptedOffers: order.acceptedOffers.length, orderStatus: order.orderStatus, orderDate: order.orderDate,
54
54
  // mask
55
55
  customer: Object.assign(Object.assign({}, (0, order_1.createMaskedCustomer)(order, { noProfile: false })), { additionalProperty: (Array.isArray(order.customer.additionalProperty)) ? order.customer.additionalProperty : [],
56
56
  // identifierは必要
@@ -81,9 +81,7 @@ function sendOrder(params) {
81
81
  const sendOrderActionAttributes = {
82
82
  agent: (typeof ((_c = params.agent) === null || _c === void 0 ? void 0 : _c.typeOf) === 'string') ? params.agent : order.project,
83
83
  object: sendOrderObject,
84
- potentialActions: {
85
- // sendEmailMessage: undefined
86
- },
84
+ potentialActions: {},
87
85
  project: order.project,
88
86
  recipient: { id: order.customer.id, typeOf: order.customer.typeOf },
89
87
  typeOf: factory.actionType.SendAction
@@ -91,16 +89,14 @@ function sendOrder(params) {
91
89
  const action = yield repos.action.start(sendOrderActionAttributes);
92
90
  let ownershipInfos;
93
91
  let allOffersDelivered = false;
92
+ let acceptedOffers;
94
93
  try {
95
- // const acceptedOffers = await repos.acceptedOffer.searchAcceptedOffersByOrderNumber({
96
- // orderNumber: { $eq: order.orderNumber },
97
- // project: { id: { $eq: order.project.id } }
98
- // });
99
- const { acceptedOffers, numAcceptedOffers } = yield repos.acceptedOffer.searchSlicedAcceptedOffersByOrderNumber({
94
+ const searchSlicedAcceptedOffersResult = yield repos.acceptedOffer.searchSlicedAcceptedOffersByOrderNumber({
100
95
  $slice: [limit * (page - 1), limit],
101
96
  orderNumber: { $eq: order.orderNumber },
102
97
  project: { id: { $eq: order.project.id } }
103
98
  });
99
+ acceptedOffers = searchSlicedAcceptedOffersResult.acceptedOffers;
104
100
  debug('delivering...', order.orderNumber, acceptedOffers.map((offer) => `${offer.itemOffered.id}`), params.object.acceptedOffers);
105
101
  // 所有権作成
106
102
  ownershipInfos = (0, factory_1.createOwnershipInfosFromOrder)({ order: Object.assign(Object.assign({}, order), { acceptedOffers }) });
@@ -109,7 +105,8 @@ function sendOrder(params) {
109
105
  })));
110
106
  const deliveredCount = limit * page;
111
107
  debug(deliveredCount, 'delivered.', order.orderNumber, params.object.acceptedOffers);
112
- if (deliveredCount >= numAcceptedOffers) {
108
+ // if (deliveredCount >= numAcceptedOffers) {
109
+ if (acceptedOffers.length === 0) {
113
110
  order = yield repos.order.changeStatus({
114
111
  project: { id: order.project.id },
115
112
  orderNumber,
@@ -150,8 +147,7 @@ function sendOrder(params) {
150
147
  }
151
148
  else {
152
149
  yield (0, onOrderStatusChanged_1.onOrderDeliveredPartially)({
153
- order: Object.assign(Object.assign({}, order), { acceptedOffers: params.object.acceptedOffers, orderStatus: params.object.previousOrderStatus })
154
- // placeOrderTransaction
150
+ order: Object.assign(Object.assign({}, order), { acceptedOffers: params.object.acceptedOffers, orderStatus: params.object.previousOrderStatus, deliveredAcceptedOffers: acceptedOffers })
155
151
  })({
156
152
  task: repos.task
157
153
  });
@@ -42,6 +42,7 @@ export declare const USE_ORDER_PAYMENT_METHOD_TYPE_OF: boolean;
42
42
  export declare const USE_FETCH_API: boolean;
43
43
  export declare const USE_SEND_ORDER_ON_ORDER_PROCESSING: boolean;
44
44
  export declare const USE_ORDER_IN_TRANSIT: boolean;
45
+ export declare const USE_INFORM_ORDER_IN_TRANSIT: boolean;
45
46
  export declare const MONGO_MAX_TIME_MS: number;
46
47
  export declare const MONGO_READ_PREFERENCE: string;
47
48
  export declare const MONGO_AUTO_INDEX: boolean;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.settings = exports.DELIVER_ORDER_LIMIT = exports.MONGO_AUTO_INDEX = exports.MONGO_READ_PREFERENCE = exports.MONGO_MAX_TIME_MS = exports.USE_ORDER_IN_TRANSIT = exports.USE_SEND_ORDER_ON_ORDER_PROCESSING = exports.USE_FETCH_API = exports.USE_ORDER_PAYMENT_METHOD_TYPE_OF = exports.USE_OPTIMIZE_TICKET_OFFER = exports.USE_DELETE_EVENT_BY_ORDER = exports.USE_OBJECT_AS_PAY_TRANSACTION_AMOUNT = exports.USE_ASSET_TRANSACTION_SYNC_PROCESSING = exports.DEFAULT_TASKS_EXPORT_AGENT_NAME = exports.DEFAULT_SENDER_EMAIL = exports.TRANSACTION_CANCELED_STORAGE_PERIOD_IN_DAYS = exports.TRANSACTION_CONFIRMED_STORAGE_PERIOD_IN_DAYS = exports.ASSET_TRANSACTION_STORAGE_PERIOD_IN_DAYS = exports.MAX_NUM_CREDIT_CARD_PAYMENT_METHOD = exports.ABORTED_TASKS_WITHOUT_REPORT = exports.TRIGGER_WEBHOOK_RETRY_INTERVAL_IN_MS = exports.TRIGGER_WEBHOOK_MAX_RETRY_COUNT = void 0;
3
+ exports.settings = exports.DELIVER_ORDER_LIMIT = exports.MONGO_AUTO_INDEX = exports.MONGO_READ_PREFERENCE = exports.MONGO_MAX_TIME_MS = exports.USE_INFORM_ORDER_IN_TRANSIT = exports.USE_ORDER_IN_TRANSIT = exports.USE_SEND_ORDER_ON_ORDER_PROCESSING = exports.USE_FETCH_API = exports.USE_ORDER_PAYMENT_METHOD_TYPE_OF = exports.USE_OPTIMIZE_TICKET_OFFER = exports.USE_DELETE_EVENT_BY_ORDER = exports.USE_OBJECT_AS_PAY_TRANSACTION_AMOUNT = exports.USE_ASSET_TRANSACTION_SYNC_PROCESSING = exports.DEFAULT_TASKS_EXPORT_AGENT_NAME = exports.DEFAULT_SENDER_EMAIL = exports.TRANSACTION_CANCELED_STORAGE_PERIOD_IN_DAYS = exports.TRANSACTION_CONFIRMED_STORAGE_PERIOD_IN_DAYS = exports.ASSET_TRANSACTION_STORAGE_PERIOD_IN_DAYS = exports.MAX_NUM_CREDIT_CARD_PAYMENT_METHOD = exports.ABORTED_TASKS_WITHOUT_REPORT = exports.TRIGGER_WEBHOOK_RETRY_INTERVAL_IN_MS = exports.TRIGGER_WEBHOOK_MAX_RETRY_COUNT = void 0;
4
4
  const factory = require("./factory");
5
5
  const transactionWebhookUrls = (typeof process.env.INFORM_TRANSACTION_URL === 'string')
6
6
  ? process.env.INFORM_TRANSACTION_URL.split(' ')
@@ -66,6 +66,7 @@ exports.USE_ORDER_PAYMENT_METHOD_TYPE_OF = process.env.USE_ORDER_PAYMENT_METHOD_
66
66
  exports.USE_FETCH_API = process.env.USE_FETCH_API === '1';
67
67
  exports.USE_SEND_ORDER_ON_ORDER_PROCESSING = process.env.USE_SEND_ORDER_ON_ORDER_PROCESSING === '1';
68
68
  exports.USE_ORDER_IN_TRANSIT = process.env.USE_ORDER_IN_TRANSIT === '1';
69
+ exports.USE_INFORM_ORDER_IN_TRANSIT = process.env.USE_INFORM_ORDER_IN_TRANSIT === '1';
69
70
  exports.MONGO_MAX_TIME_MS = (typeof process.env.MONGO_MAX_TIME_MS === 'string')
70
71
  ? Number(process.env.MONGO_MAX_TIME_MS)
71
72
  // tslint:disable-next-line:no-magic-numbers
package/package.json CHANGED
@@ -115,5 +115,5 @@
115
115
  "postversion": "git push origin --tags",
116
116
  "prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
117
117
  },
118
- "version": "21.20.0-alpha.23"
118
+ "version": "21.20.0-alpha.25"
119
119
  }