@things-factory/sales-base 4.0.42 → 4.1.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.
@@ -133,7 +133,7 @@ export class ReleaseGoodMutation {
133
133
  context,
134
134
  tx
135
135
  )
136
- } catch (error) {}
136
+ } catch (error) { }
137
137
 
138
138
  if (errorsCaught.length)
139
139
  throw new ValidationError({
@@ -196,12 +196,12 @@ export class ReleaseGoodMutation {
196
196
  ): Promise<ReleaseGood> {
197
197
  const { tx, domain, user } = context.state
198
198
  let foundReleaseGood = await tx.getRepository(ReleaseGood).findOne({
199
- where: { name: releaseGood.name, domain },
199
+ where: { id: releaseGood.id, domain },
200
200
  relations: ['shippingOrder']
201
201
  })
202
202
 
203
203
  if (!foundReleaseGood) {
204
- throw new Error(`Release order ${releaseGood.name} is not found.`)
204
+ throw new Error(`Release order ${releaseGood.id} is not found.`)
205
205
  }
206
206
 
207
207
  // case to update existing shippingOrder
@@ -362,16 +362,11 @@ export async function deleteReleaseGood(tx: EntityManager, name: string, user: U
362
362
  await tx.getRepository(OrderVas).delete({ id: In(vasIds) })
363
363
  }
364
364
 
365
- // 4. if there is SO, delete SO
366
- if (foundSO) {
367
- await tx.getRepository(ShippingOrder).delete({ domain, id: foundSO.id })
368
- }
369
-
370
365
  if (foundAttachment) {
371
366
  await tx.getRepository(Attachment).delete({ domain, id: foundAttachment.id })
372
367
  }
373
368
 
374
- // 5. Remove relation with GAN if it's cross docking
369
+ // 4. Remove relation with GAN if it's cross docking
375
370
  if (foundReleaseOrder.crossDocking && foundReleaseOrder.arrivalNotice?.id) {
376
371
  let arrivalNotice: ArrivalNotice = foundReleaseOrder.arrivalNotice
377
372
  arrivalNotice.releaseGood = null
@@ -382,6 +377,11 @@ export async function deleteReleaseGood(tx: EntityManager, name: string, user: U
382
377
  } else {
383
378
  await tx.getRepository(ReleaseGood).delete({ domain, name })
384
379
  }
380
+
381
+ // 5. if there is SO, delete SO
382
+ if (foundSO) {
383
+ await tx.getRepository(ShippingOrder).delete({ domain, id: foundSO.id })
384
+ }
385
385
  return true
386
386
  }
387
387
 
@@ -741,26 +741,25 @@ export async function confirmReleaseGood(name: string, context: any, tx?: Entity
741
741
 
742
742
  let foundReleaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({
743
743
  where: { name, status: ORDER_STATUS.PENDING },
744
- relations: [
745
- 'domain',
746
- 'bizplace',
747
- 'bizplace.domain',
748
- 'bizplace.company',
749
- 'bizplace.company.domain',
750
- 'orderProducts',
751
- 'orderProducts.product',
752
- 'orderProducts.product.productDetails',
753
- 'orderInventories',
754
- 'orderInventories.product',
755
- 'orderVass'
756
- ]
744
+ relations: ['domain', 'bizplace', 'bizplace.domain', 'bizplace.company', 'bizplace.company.domain', 'orderVass']
757
745
  })
758
746
 
759
747
  if (!foundReleaseGood) throw new Error(`Release good order doesn't exists.`)
760
- let foundOIs: OrderInventory[] = foundReleaseGood.orderInventories
748
+
749
+ // query orderInventories separately from releaseGood to reduce resource usage
750
+ let foundOIs: OrderInventory[] = await tx.getRepository(OrderInventory).find({
751
+ where: { domain, releaseGood: foundReleaseGood },
752
+ relations: ['product']
753
+ })
754
+
755
+ // query orderProducts separately from releaseGood to reduce resource usage
756
+ let foundOPs: OrderProduct[] = await tx.getRepository(OrderProduct).find({
757
+ where: { domain, releaseGood: foundReleaseGood },
758
+ relations: ['product', 'product.productDetails']
759
+ })
760
+
761
761
  let foundBundleInfo: any[] = JSON.parse(foundReleaseGood.bundleInfo)
762
762
  let foundOVs: OrderVas[] = foundReleaseGood.orderVass
763
- let foundOPs: OrderProduct[] = foundReleaseGood.orderProducts
764
763
  let customerBizplace: Bizplace = foundReleaseGood.bizplace
765
764
  const companyDomain: Domain = customerBizplace?.company.domain
766
765
  const sellercraft: Sellercraft = await tx
@@ -770,7 +769,7 @@ export async function confirmReleaseGood(name: string, context: any, tx?: Entity
770
769
  if (foundReleaseGood.type == 'b2c') {
771
770
  if (sellercraft) {
772
771
  const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
773
- foundReleaseGood = await sellercraftCtrl.packOrder(sellercraft, foundReleaseGood)
772
+ foundReleaseGood = await sellercraftCtrl.packOrder(sellercraft, { ...foundReleaseGood, orderProducts: foundOPs })
774
773
  } else {
775
774
  // find for any existing marketplace store connections
776
775
  let marketplaceStores: MarketplaceStore[] = await tx.getRepository(MarketplaceStore).find({
@@ -1,145 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- var _a;
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.DeliveryOrderSummaryReport = void 0;
17
- const type_graphql_1 = require("type-graphql");
18
- const typeorm_1 = require("typeorm");
19
- const biz_base_1 = require("@things-factory/biz-base");
20
- const shell_1 = require("@things-factory/shell");
21
- const release_good_1 = require("../release-good/release-good");
22
- const delivery_order_1 = require("./delivery-order");
23
- const delivery_order_types_1 = require("./delivery-order-types");
24
- const debug = require('debug')('things-factory:sales-base:delivery-orders');
25
- let DeliveryOrderSummaryReport = class DeliveryOrderSummaryReport {
26
- async deliveryOrderSummaryReport(context, params) {
27
- try {
28
- const { domain, user } = context.state;
29
- const bizplaceFilter = params.filters.find(param => param.name === 'bizplaceId');
30
- if (!bizplaceFilter) {
31
- params.filters.push({
32
- name: 'bizplaceId',
33
- operator: 'in',
34
- value: await (0, biz_base_1.getPermittedBizplaceIds)(domain, user),
35
- relation: false
36
- });
37
- }
38
- const releaseGoodParam = params.filters.find(param => param.name === 'releaseGoodNo');
39
- if (releaseGoodParam) {
40
- let arrFilters = [];
41
- params.filters.splice(params.filters.findIndex(item => item.name == 'releaseGoodNo'), 1);
42
- arrFilters.push(Object.assign(Object.assign({}, releaseGoodParam), { name: 'name' }));
43
- const foundReleaseGoods = await (0, typeorm_1.getRepository)(release_good_1.ReleaseGood).find(Object.assign({}, (0, shell_1.convertListParams)({ filters: arrFilters })));
44
- if (foundReleaseGoods && foundReleaseGoods.length) {
45
- params.filters.push({
46
- name: 'releaseGoodId',
47
- operator: 'in',
48
- value: foundReleaseGoods.map((releaseGood) => releaseGood.id),
49
- relation: false
50
- });
51
- }
52
- }
53
- const tzOffsetIdx = params.filters.findIndex(param => param.name === 'tzoffset');
54
- let tzOffset = 0;
55
- if (tzOffsetIdx >= 0) {
56
- tzOffset = params.filters[tzOffsetIdx].value;
57
- params.filters.splice(tzOffsetIdx, 1);
58
- }
59
- const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate');
60
- if (fromDateParamIdx >= 0) {
61
- let fromDateVal = new Date(params.filters[fromDateParamIdx].value);
62
- params.filters.splice(fromDateParamIdx, 1);
63
- params.filters.push({
64
- name: 'createdAt',
65
- operator: 'gte',
66
- value: fromDateVal.toISOString(),
67
- relation: false
68
- });
69
- }
70
- const toDateParamIdx = params.filters.findIndex(param => param.name === 'toDate');
71
- if (toDateParamIdx >= 0) {
72
- let toDateVal = new Date(params.filters[toDateParamIdx].value);
73
- params.filters.splice(toDateParamIdx, 1);
74
- params.filters.push({
75
- name: 'createdAt',
76
- operator: 'lt',
77
- value: new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),
78
- relation: false
79
- });
80
- }
81
- let refNoFilter = params.filters.find(x => x.name == 'refNo');
82
- let refNo2Filter = params.filters.find(x => x.name == 'refNo2');
83
- let refNo3Filter = params.filters.find(x => x.name == 'refNo3');
84
- params.filters = params.filters.filter(x => x.name != 'refNo' && x.name != 'refNo2' && x.name != 'refNo3');
85
- const qb = (0, typeorm_1.getRepository)(delivery_order_1.DeliveryOrder).createQueryBuilder('do');
86
- (0, shell_1.buildQuery)(qb, params, context);
87
- qb.addSelect('COALESCE("cc".rank, 99999)', 'rank');
88
- qb.leftJoinAndSelect('do.domain', 'domain');
89
- qb.leftJoinAndSelect('do.bizplace', 'bizplace');
90
- qb.leftJoinAndSelect('do.releaseGood', 'releaseGood');
91
- qb.leftJoinAndSelect('do.transportDriver', 'td');
92
- qb.leftJoinAndSelect('do.transportVehicle', 'th');
93
- qb.leftJoinAndSelect('do.orderInventories', 'oi');
94
- qb.leftJoinAndSelect('oi.inventory', 'inv');
95
- qb.leftJoinAndSelect('inv.product', 'prd');
96
- qb.leftJoinAndSelect('do.creator', 'creator');
97
- qb.leftJoinAndSelect('do.updater', 'updater');
98
- qb.leftJoin(subQuery => {
99
- return subQuery
100
- .select(`ccd.rank`, 'rank')
101
- .addSelect(`ccd.name`, 'status')
102
- .from(`common_code_details`, 'ccd')
103
- .innerJoin(`ccd.commonCode`, 'cc')
104
- .where(`ccd.domain_id = :domainId`, { domainId: domain.id })
105
- .andWhere(`cc.name = 'DELIVERY_STATUS'`);
106
- }, 'cc', 'cc.status = do.status');
107
- if (refNoFilter === null || refNoFilter === void 0 ? void 0 : refNoFilter.value) {
108
- qb.andWhere('releaseGood.ref_no ilike :refNo', { refNo: refNoFilter.value });
109
- }
110
- if (refNo2Filter === null || refNo2Filter === void 0 ? void 0 : refNo2Filter.value) {
111
- qb.andWhere('releaseGood.ref_no_2 ilike :refNo2', { refNo2: refNo2Filter.value });
112
- }
113
- if (refNo3Filter === null || refNo3Filter === void 0 ? void 0 : refNo3Filter.value) {
114
- qb.andWhere('releaseGood.ref_no_3 ilike :refNo3', { refNo3: refNo3Filter.value });
115
- }
116
- const arrChildSortData = ['refNo', 'refNo2', 'refNo3'];
117
- const arrNameSortData = ['bizplace', 'releaseGood', 'updater'];
118
- const sort = (params.sortings || []).reduce((acc, sort) => (Object.assign(Object.assign({}, acc), { [arrChildSortData.indexOf(sort.name) >= 0
119
- ? 'releaseGood.' + sort.name
120
- : arrNameSortData.indexOf(sort.name) >= 0
121
- ? sort.name + '.name'
122
- : 'do.' + sort.name]: sort.desc ? 'DESC' : 'ASC' })), params.sortings.length < 1 ? { rank: 'ASC', 'do.createdAt': 'DESC' } : {});
123
- qb.orderBy(sort);
124
- const [items, total] = await qb.getManyAndCount();
125
- return { items, total };
126
- }
127
- catch (error) {
128
- debug('deliveryOrders', error.toString());
129
- throw error;
130
- }
131
- }
132
- };
133
- __decorate([
134
- (0, type_graphql_1.Query)(returns => delivery_order_types_1.DeliveryOrderList),
135
- __param(0, (0, type_graphql_1.Ctx)()),
136
- __param(1, (0, type_graphql_1.Args)()),
137
- __metadata("design:type", Function),
138
- __metadata("design:paramtypes", [Object, typeof (_a = typeof shell_1.ListParam !== "undefined" && shell_1.ListParam) === "function" ? _a : Object]),
139
- __metadata("design:returntype", Promise)
140
- ], DeliveryOrderSummaryReport.prototype, "deliveryOrderSummaryReport", null);
141
- DeliveryOrderSummaryReport = __decorate([
142
- (0, type_graphql_1.Resolver)(delivery_order_1.DeliveryOrder)
143
- ], DeliveryOrderSummaryReport);
144
- exports.DeliveryOrderSummaryReport = DeliveryOrderSummaryReport;
145
- //# sourceMappingURL=delivery-order-summary-report.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delivery-order-summary-report.js","sourceRoot":"","sources":["../../../server/service/delivery-order/delivery-order-summary-report.ts"],"names":[],"mappings":"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"}
@@ -1,152 +0,0 @@
1
- import { Args, Ctx, Query, Resolver } from 'type-graphql'
2
- import { getRepository } from 'typeorm'
3
-
4
- import { User } from '@things-factory/auth-base'
5
- import { getPermittedBizplaceIds } from '@things-factory/biz-base'
6
- import { buildQuery, convertListParams, Domain, ListParam } from '@things-factory/shell'
7
-
8
- import { ReleaseGood } from '../release-good/release-good'
9
- import { DeliveryOrder } from './delivery-order'
10
- import { DeliveryOrderList } from './delivery-order-types'
11
-
12
- const debug = require('debug')('things-factory:sales-base:delivery-orders')
13
-
14
- @Resolver(DeliveryOrder)
15
- export class DeliveryOrderSummaryReport {
16
- @Query(returns => DeliveryOrderList)
17
- async deliveryOrderSummaryReport(@Ctx() context: any, @Args() params: ListParam): Promise<DeliveryOrderList> {
18
- try {
19
- const { domain, user }: { domain: Domain; user: User } = context.state
20
-
21
- const bizplaceFilter = params.filters.find(param => param.name === 'bizplaceId')
22
- if (!bizplaceFilter) {
23
- params.filters.push({
24
- name: 'bizplaceId',
25
- operator: 'in',
26
- value: await getPermittedBizplaceIds(domain, user),
27
- relation: false
28
- })
29
- }
30
-
31
- const releaseGoodParam = params.filters.find(param => param.name === 'releaseGoodNo')
32
- if (releaseGoodParam) {
33
- let arrFilters = []
34
- params.filters.splice(
35
- params.filters.findIndex(item => item.name == 'releaseGoodNo'),
36
- 1
37
- )
38
- arrFilters.push({ ...releaseGoodParam, name: 'name' })
39
-
40
- const foundReleaseGoods: ReleaseGood[] = await getRepository(ReleaseGood).find({
41
- ...convertListParams({ filters: arrFilters })
42
- })
43
-
44
- if (foundReleaseGoods && foundReleaseGoods.length) {
45
- params.filters.push({
46
- name: 'releaseGoodId',
47
- operator: 'in',
48
- value: foundReleaseGoods.map((releaseGood: ReleaseGood) => releaseGood.id),
49
- relation: false
50
- })
51
- }
52
- }
53
-
54
- const tzOffsetIdx = params.filters.findIndex(param => param.name === 'tzoffset')
55
- let tzOffset = 0
56
- if (tzOffsetIdx >= 0) {
57
- tzOffset = params.filters[tzOffsetIdx].value
58
- params.filters.splice(tzOffsetIdx, 1)
59
- }
60
-
61
- const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate')
62
- if (fromDateParamIdx >= 0) {
63
- let fromDateVal = new Date(params.filters[fromDateParamIdx].value)
64
- params.filters.splice(fromDateParamIdx, 1)
65
-
66
- params.filters.push({
67
- name: 'createdAt',
68
- operator: 'gte',
69
- value: fromDateVal.toISOString(),
70
- relation: false
71
- })
72
- }
73
- const toDateParamIdx = params.filters.findIndex(param => param.name === 'toDate')
74
- if (toDateParamIdx >= 0) {
75
- let toDateVal = new Date(params.filters[toDateParamIdx].value)
76
- params.filters.splice(toDateParamIdx, 1)
77
-
78
- params.filters.push({
79
- name: 'createdAt',
80
- operator: 'lt',
81
- value: new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),
82
- relation: false
83
- })
84
- }
85
-
86
- let refNoFilter = params.filters.find(x => x.name == 'refNo')
87
- let refNo2Filter = params.filters.find(x => x.name == 'refNo2')
88
- let refNo3Filter = params.filters.find(x => x.name == 'refNo3')
89
-
90
- params.filters = params.filters.filter(x => x.name != 'refNo' && x.name != 'refNo2' && x.name != 'refNo3')
91
-
92
- const qb: any = getRepository(DeliveryOrder).createQueryBuilder('do')
93
- buildQuery(qb, params, context)
94
- qb.addSelect('COALESCE("cc".rank, 99999)', 'rank')
95
- qb.leftJoinAndSelect('do.domain', 'domain')
96
- qb.leftJoinAndSelect('do.bizplace', 'bizplace')
97
- qb.leftJoinAndSelect('do.releaseGood', 'releaseGood')
98
- qb.leftJoinAndSelect('do.transportDriver', 'td')
99
- qb.leftJoinAndSelect('do.transportVehicle', 'th')
100
- qb.leftJoinAndSelect('do.orderInventories', 'oi')
101
- qb.leftJoinAndSelect('oi.inventory', 'inv')
102
- qb.leftJoinAndSelect('inv.product', 'prd')
103
- qb.leftJoinAndSelect('do.creator', 'creator')
104
- qb.leftJoinAndSelect('do.updater', 'updater')
105
- qb.leftJoin(
106
- subQuery => {
107
- return subQuery
108
- .select(`ccd.rank`, 'rank')
109
- .addSelect(`ccd.name`, 'status')
110
- .from(`common_code_details`, 'ccd')
111
- .innerJoin(`ccd.commonCode`, 'cc')
112
- .where(`ccd.domain_id = :domainId`, { domainId: domain.id })
113
- .andWhere(`cc.name = 'DELIVERY_STATUS'`)
114
- },
115
- 'cc',
116
- 'cc.status = do.status'
117
- )
118
-
119
- if (refNoFilter?.value) {
120
- qb.andWhere('releaseGood.ref_no ilike :refNo', { refNo: refNoFilter.value })
121
- }
122
- if (refNo2Filter?.value) {
123
- qb.andWhere('releaseGood.ref_no_2 ilike :refNo2', { refNo2: refNo2Filter.value })
124
- }
125
- if (refNo3Filter?.value) {
126
- qb.andWhere('releaseGood.ref_no_3 ilike :refNo3', { refNo3: refNo3Filter.value })
127
- }
128
-
129
- const arrChildSortData = ['refNo', 'refNo2', 'refNo3']
130
- const arrNameSortData = ['bizplace', 'releaseGood', 'updater']
131
- const sort = (params.sortings || []).reduce(
132
- (acc, sort) => ({
133
- ...acc,
134
- [arrChildSortData.indexOf(sort.name) >= 0
135
- ? 'releaseGood.' + sort.name
136
- : arrNameSortData.indexOf(sort.name) >= 0
137
- ? sort.name + '.name'
138
- : 'do.' + sort.name]: sort.desc ? 'DESC' : 'ASC'
139
- }),
140
- params.sortings.length < 1 ? { rank: 'ASC', 'do.createdAt': 'DESC' } : {}
141
- )
142
-
143
- qb.orderBy(sort)
144
-
145
- const [items, total] = await qb.getManyAndCount()
146
- return { items, total }
147
- } catch (error) {
148
- debug('deliveryOrders', error.toString())
149
- throw error
150
- }
151
- }
152
- }