@things-factory/sales-base 4.0.43 → 4.1.1
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/dist-server/service/arrival-notice/arrival-notice-query.js +68 -65
- package/dist-server/service/arrival-notice/arrival-notice-query.js.map +1 -1
- package/dist-server/service/delivery-order/delivery-order-query.js +115 -1
- package/dist-server/service/delivery-order/delivery-order-query.js.map +1 -1
- package/dist-server/service/delivery-order/index.js +1 -3
- package/dist-server/service/delivery-order/index.js.map +1 -1
- package/dist-server/service/index.js +0 -1
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/release-good/release-good-mutation.js +19 -23
- package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
- package/package.json +12 -12
- package/server/service/arrival-notice/arrival-notice-query.ts +68 -65
- package/server/service/delivery-order/delivery-order-query.ts +137 -0
- package/server/service/delivery-order/index.ts +1 -3
- package/server/service/index.ts +0 -1
- package/server/service/release-good/release-good-mutation.ts +24 -25
- package/dist-server/service/delivery-order/delivery-order-summary-report.js +0 -145
- package/dist-server/service/delivery-order/delivery-order-summary-report.js.map +0 -1
- package/server/service/delivery-order/delivery-order-summary-report.ts +0 -152
|
@@ -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: {
|
|
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.
|
|
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
|
-
//
|
|
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
|
-
|
|
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
|
-
}
|