@things-factory/operato-hub 4.3.366 → 4.3.368
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/routers/api/restful-apis/v1/company/index.js +1 -0
- package/dist-server/routers/api/restful-apis/v1/company/index.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/company/upsert-product.js +227 -0
- package/dist-server/routers/api/restful-apis/v1/company/upsert-product.js.map +1 -0
- package/dist-server/routers/api/restful-apis/v1/utils/params.js +81 -1
- package/dist-server/routers/api/restful-apis/v1/utils/params.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/warehouse/dispatch-delivery-order.js +17 -16
- package/dist-server/routers/api/restful-apis/v1/warehouse/dispatch-delivery-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/warehouse/get-manifest-details.js +138 -0
- package/dist-server/routers/api/restful-apis/v1/warehouse/get-manifest-details.js.map +1 -0
- package/dist-server/routers/api/restful-apis/v1/warehouse/get-onhand-inventory-list.js +2 -0
- package/dist-server/routers/api/restful-apis/v1/warehouse/get-onhand-inventory-list.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/warehouse/index.js +1 -0
- package/dist-server/routers/api/restful-apis/v1/warehouse/index.js.map +1 -1
- package/package.json +14 -14
- package/server/routers/api/restful-apis/v1/company/index.ts +1 -0
- package/server/routers/api/restful-apis/v1/company/upsert-product.ts +322 -0
- package/server/routers/api/restful-apis/v1/utils/params.ts +81 -1
- package/server/routers/api/restful-apis/v1/warehouse/dispatch-delivery-order.ts +10 -10
- package/server/routers/api/restful-apis/v1/warehouse/get-manifest-details.ts +140 -0
- package/server/routers/api/restful-apis/v1/warehouse/get-onhand-inventory-list.ts +2 -0
- package/server/routers/api/restful-apis/v1/warehouse/index.ts +1 -0
|
@@ -25,6 +25,7 @@ export const params = {
|
|
|
25
25
|
'get-delivery-order-list': ['bizplaceId', 'doNo', 'vehicleNo', ...fromToDate, ...limitOffset],
|
|
26
26
|
'get-onhand-inventory-list': ['bizplaceId', 'sku', 'batchId', 'fromDate', 'toDate', ...limitOffset],
|
|
27
27
|
'get-inventory-product-group-list': ['bizplaceId', 'sku', 'batchId', ...fromToDate, ...limitOffset],
|
|
28
|
+
'get-manifest-details': ['bizplaceId', 'name', 'id'],
|
|
28
29
|
'add-contact-points': [
|
|
29
30
|
'bizplaceId',
|
|
30
31
|
'name',
|
|
@@ -425,7 +426,55 @@ export const params = {
|
|
|
425
426
|
],
|
|
426
427
|
'complete-delivery-order': ['remark', 'bizplaceId', 'name'],
|
|
427
428
|
'update-gan-to-arrived': ['ganNo', 'bizplaceId'],
|
|
428
|
-
'get-warehouse-bizplace-onhand-inventories': ['bizplaceId']
|
|
429
|
+
'get-warehouse-bizplace-onhand-inventories': ['bizplaceId'],
|
|
430
|
+
'upsert-product': [
|
|
431
|
+
'sku',
|
|
432
|
+
'brandSku',
|
|
433
|
+
'name',
|
|
434
|
+
'description',
|
|
435
|
+
'type',
|
|
436
|
+
'brand',
|
|
437
|
+
'subBrand',
|
|
438
|
+
'isRequiredCheckExpiry',
|
|
439
|
+
'isRequireSerialNumberScanning',
|
|
440
|
+
'isRequireSerialNumberScanningInbound',
|
|
441
|
+
'isRequireSerialNumberScanningOutbound',
|
|
442
|
+
'pickingStrategy',
|
|
443
|
+
'minInboundShelfLife',
|
|
444
|
+
'productDetails',
|
|
445
|
+
'productDetails.isDefault',
|
|
446
|
+
'productDetails.gtin',
|
|
447
|
+
'productDetails.refCode',
|
|
448
|
+
'productDetails.packingType',
|
|
449
|
+
'productDetails.packingSize',
|
|
450
|
+
'productDetails.uom',
|
|
451
|
+
'productDetails.uomValue',
|
|
452
|
+
'productDetails.costPrice',
|
|
453
|
+
'productDetails.minQty',
|
|
454
|
+
'productDetails.maxQty',
|
|
455
|
+
'productDetails.bufferQty',
|
|
456
|
+
'productDetails.weightUnit',
|
|
457
|
+
'productDetails.movement',
|
|
458
|
+
'productDetails.nettWeight',
|
|
459
|
+
'productDetails.grossWeight',
|
|
460
|
+
'productDetails.lengthUnit',
|
|
461
|
+
'productDetails.width',
|
|
462
|
+
'productDetails.depth',
|
|
463
|
+
'productDetails.height',
|
|
464
|
+
'productDetails.volume',
|
|
465
|
+
'productDetails.auxUnit1',
|
|
466
|
+
'productDetails.auxValue1',
|
|
467
|
+
'productDetails.auxUnit2',
|
|
468
|
+
'productDetails.auxValue2',
|
|
469
|
+
'productDetails.auxUnit3',
|
|
470
|
+
'productDetails.auxValue3',
|
|
471
|
+
'productDetails.auxUnit4',
|
|
472
|
+
'productDetails.auxValue4',
|
|
473
|
+
'productDetails.auxUnit5',
|
|
474
|
+
'productDetails.auxValue5',
|
|
475
|
+
'productDetails.childProductDetail',
|
|
476
|
+
'productDetails.productBarcodes.gtin'
|
|
477
|
+
]
|
|
429
478
|
}
|
|
430
479
|
|
|
431
480
|
// Required Params
|
|
@@ -442,7 +491,38 @@ export const reqParams = {
|
|
|
442
491
|
'get-delivery-order-list': ['bizplaceId'],
|
|
443
492
|
'get-onhand-inventory-list': ['bizplaceId'],
|
|
444
493
|
'get-inventory-product-group-list': ['bizplaceId'],
|
|
494
|
+
'get-manifest-details': ['bizplaceId'],
|
|
445
495
|
'get-warehouse-bizplace-onhand-inventories': ['bizplaceId'],
|
|
496
|
+
'upsert-product': [
|
|
497
|
+
{
|
|
498
|
+
name: 'sku',
|
|
499
|
+
required: true,
|
|
500
|
+
type: 'field'
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
name: 'name',
|
|
504
|
+
required: true,
|
|
505
|
+
type: 'field'
|
|
506
|
+
},
|
|
507
|
+
{
|
|
508
|
+
name: 'type',
|
|
509
|
+
required: true,
|
|
510
|
+
type: 'field'
|
|
511
|
+
},
|
|
512
|
+
{
|
|
513
|
+
name: 'productDetails',
|
|
514
|
+
required: true,
|
|
515
|
+
type: 'array',
|
|
516
|
+
data: [
|
|
517
|
+
{ name: 'isDefault', required: true, type: 'field' },
|
|
518
|
+
{ name: 'gtin', required: true, type: 'field' },
|
|
519
|
+
{ name: 'packingType', required: true, type: 'field' },
|
|
520
|
+
{ name: 'packingSize', required: true, type: 'field' },
|
|
521
|
+
{ name: 'uom', required: true, type: 'field' },
|
|
522
|
+
{ name: 'uomValue', required: true, type: 'field' }
|
|
523
|
+
]
|
|
524
|
+
}
|
|
525
|
+
],
|
|
446
526
|
'add-contact-points': [
|
|
447
527
|
{
|
|
448
528
|
name: 'name',
|
|
@@ -61,11 +61,7 @@ router.post(
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
// Drive and Vehicle Validation
|
|
64
|
-
if (
|
|
65
|
-
!data.transportDriver?.name ||
|
|
66
|
-
!data.transportDriver ||
|
|
67
|
-
(!data.transportDriver?.driverCode && !ownTransport)
|
|
68
|
-
) {
|
|
64
|
+
if (!data.transportDriver?.name || !data.transportDriver) {
|
|
69
65
|
throw new ApiError('E03', 'transportDriver')
|
|
70
66
|
} else if (!data.transportVehicle?.name || !data.transportVehicle) {
|
|
71
67
|
throw new ApiError('E03', 'transportVehicle')
|
|
@@ -76,12 +72,16 @@ router.post(
|
|
|
76
72
|
transportVehicle = { name: data.transportVehicle?.name }
|
|
77
73
|
} else {
|
|
78
74
|
// find transportDriver & transportVehicle
|
|
75
|
+
let transportDriverFilter: any = {
|
|
76
|
+
domain: domain,
|
|
77
|
+
name: data?.transportDriver?.name
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (data?.transportDriver?.driverCode) {
|
|
81
|
+
transportDriverFilter.driverCode = data.transportDriver.driverCode
|
|
82
|
+
}
|
|
79
83
|
const foundTransportDriver: TransportDriver = await tx.getRepository(TransportDriver).findOne({
|
|
80
|
-
where:
|
|
81
|
-
domain: domain,
|
|
82
|
-
name: data.transportDriver?.name,
|
|
83
|
-
driverCode: data.transportDriver?.driverCode
|
|
84
|
-
}
|
|
84
|
+
where: transportDriverFilter
|
|
85
85
|
})
|
|
86
86
|
|
|
87
87
|
const foundTransportVehicle: TransportVehicle = await tx.getRepository(TransportVehicle).findOne({
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import _ from 'lodash'
|
|
2
|
+
import { getRepository, SelectQueryBuilder } from 'typeorm'
|
|
3
|
+
|
|
4
|
+
import { restfulApiRouter as router } from '@things-factory/api'
|
|
5
|
+
import { Manifest } from '@things-factory/sales-base'
|
|
6
|
+
|
|
7
|
+
// import { OrderPackage } from '@things-factory/sales-base'
|
|
8
|
+
import { businessMiddleware, loggingMiddleware, validationMiddleware } from '../middlewares'
|
|
9
|
+
import { ApiError, ApiErrorHandler, throwInternalServerError } from '../utils/error-util'
|
|
10
|
+
|
|
11
|
+
router.get(
|
|
12
|
+
'/v1/warehouse/get-manifest-details',
|
|
13
|
+
businessMiddleware,
|
|
14
|
+
validationMiddleware,
|
|
15
|
+
loggingMiddleware,
|
|
16
|
+
async (context, next) => {
|
|
17
|
+
try {
|
|
18
|
+
// get contact points for that bizplace
|
|
19
|
+
// optional query parameter filter
|
|
20
|
+
let filter = { ...context.query }
|
|
21
|
+
const { fromDate, toDate, offset, limit } = filter
|
|
22
|
+
|
|
23
|
+
if (_.has(filter, 'id')) {
|
|
24
|
+
filter['id'] = filter['id']
|
|
25
|
+
delete filter['name']
|
|
26
|
+
} else if (_.has(filter, 'name')) {
|
|
27
|
+
filter['name'] = filter['name']
|
|
28
|
+
delete filter['id']
|
|
29
|
+
} else {
|
|
30
|
+
throw new ApiError('E03', 'id or name')
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const rb: SelectQueryBuilder<Manifest> = getRepository(Manifest)
|
|
34
|
+
.createQueryBuilder('mf')
|
|
35
|
+
.innerJoinAndSelect('mf.orderPackages', 'op')
|
|
36
|
+
.innerJoinAndSelect('op.releaseGood', 'rg')
|
|
37
|
+
.innerJoinAndSelect('op.bizplace', 'bz')
|
|
38
|
+
.innerJoinAndSelect('op.orderPackageItems', 'opi')
|
|
39
|
+
.innerJoinAndSelect('opi.orderProduct', 'opr')
|
|
40
|
+
.innerJoinAndSelect('opr.productDetail', 'pd')
|
|
41
|
+
.innerJoinAndSelect('pd.product', 'p')
|
|
42
|
+
.where(`op.bizplace_id = :bizplaceId`, { bizplaceId: filter.bizplaceId })
|
|
43
|
+
|
|
44
|
+
if (filter.id) {
|
|
45
|
+
rb.andWhere(`mf.id = :id`, { id: filter.id })
|
|
46
|
+
} else if (filter.name) {
|
|
47
|
+
rb.andWhere(`mf.name = :name`, { name: filter.name })
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const result = await rb.getOne()
|
|
51
|
+
|
|
52
|
+
let data
|
|
53
|
+
if (result) {
|
|
54
|
+
data = {
|
|
55
|
+
id: result.id,
|
|
56
|
+
name: result.name,
|
|
57
|
+
dispatchedAt: result.dispatchedAt,
|
|
58
|
+
dispatcherIdentity: result.dispatcherIdentity,
|
|
59
|
+
dispatcherName: result.dispatcherName,
|
|
60
|
+
shippingProvider: result.shippingProvider,
|
|
61
|
+
totalOrderPackages: result.orderPackages.length,
|
|
62
|
+
orderPackages: result.orderPackages.map(op => {
|
|
63
|
+
return {
|
|
64
|
+
airwayBill: op.airwayBill,
|
|
65
|
+
dispatchmentStatus: op.dispatchmentStatus,
|
|
66
|
+
id: op.id,
|
|
67
|
+
lastMileDeliveryId: op.lastMileDeliveryId,
|
|
68
|
+
lmdOption: op.lmdOption,
|
|
69
|
+
manifestId: op.manifestId,
|
|
70
|
+
manifestedAt: op.manifestedAt,
|
|
71
|
+
name: op.name,
|
|
72
|
+
packageId: op.packageId,
|
|
73
|
+
parcelId: op.parcelId,
|
|
74
|
+
status: op.status,
|
|
75
|
+
trackingNo: op.trackingNo,
|
|
76
|
+
transporter: op.transporter,
|
|
77
|
+
orderPackageItems: op.orderPackageItems.map(opi => {
|
|
78
|
+
return {
|
|
79
|
+
name: opi.name,
|
|
80
|
+
id: opi.id,
|
|
81
|
+
packedQty: opi.packedQty,
|
|
82
|
+
releaseQty: opi.releaseQty,
|
|
83
|
+
orderProduct: {
|
|
84
|
+
packingSize: opi.orderProduct.packingSize,
|
|
85
|
+
packingType: opi.orderProduct.packingType,
|
|
86
|
+
releaseQty: opi.orderProduct.releaseQty,
|
|
87
|
+
releaseUomValue: opi.orderProduct.releaseUomValue,
|
|
88
|
+
uom: opi.orderProduct.uom,
|
|
89
|
+
uomValue: opi.orderProduct.uomValue,
|
|
90
|
+
packedQty: opi.orderProduct.packedQty,
|
|
91
|
+
productDetail: {
|
|
92
|
+
id: opi.orderProduct.productDetail.id,
|
|
93
|
+
name: opi.orderProduct.productDetail.name,
|
|
94
|
+
grossWeight: opi.orderProduct.productDetail.grossWeight,
|
|
95
|
+
nettWeight: opi.orderProduct.productDetail.nettWeight,
|
|
96
|
+
weightUnit: opi.orderProduct.productDetail.weightUnit,
|
|
97
|
+
uom: opi.orderProduct.productDetail.uom,
|
|
98
|
+
uomValue: opi.orderProduct.productDetail.uomValue,
|
|
99
|
+
packingSize: opi.orderProduct.productDetail.packingSize,
|
|
100
|
+
packingType: opi.orderProduct.productDetail.packingType,
|
|
101
|
+
product: {
|
|
102
|
+
id: opi.orderProduct.productDetail.product.id,
|
|
103
|
+
name: opi.orderProduct.productDetail.product.name,
|
|
104
|
+
sku: opi.orderProduct.productDetail.product.sku,
|
|
105
|
+
weight: opi.orderProduct.productDetail.product.weight,
|
|
106
|
+
weightUnit: opi.orderProduct.productDetail.product.weightUnit
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}),
|
|
112
|
+
releaseGood: {
|
|
113
|
+
id: op.releaseGood.id,
|
|
114
|
+
name: op.releaseGood.name,
|
|
115
|
+
refNo: op.releaseGood.refNo,
|
|
116
|
+
refNo2: op.releaseGood.refNo2,
|
|
117
|
+
refNo3: op.releaseGood.refNo3,
|
|
118
|
+
shippingFee: op.releaseGood.shippingFee,
|
|
119
|
+
transporter: op.releaseGood.transporter
|
|
120
|
+
},
|
|
121
|
+
bizplace: {
|
|
122
|
+
id: op.bizplace.id,
|
|
123
|
+
name: op.bizplace.name
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
})
|
|
127
|
+
}
|
|
128
|
+
} else {
|
|
129
|
+
data = {}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
context.body = {
|
|
133
|
+
data
|
|
134
|
+
}
|
|
135
|
+
} catch (e) {
|
|
136
|
+
if (e instanceof ApiError) ApiErrorHandler(context, e)
|
|
137
|
+
else throwInternalServerError(context, e)
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
)
|
|
@@ -73,6 +73,8 @@ router.get(
|
|
|
73
73
|
packingType: inventory.packingType,
|
|
74
74
|
packingSize: inventory.packingSize,
|
|
75
75
|
qty: inventory.qty,
|
|
76
|
+
uom: inventory.uom,
|
|
77
|
+
uomValue: inventory.uomValue,
|
|
76
78
|
reservedQty: inventory.lockedQty,
|
|
77
79
|
expirationDate: inventory.expirationDate,
|
|
78
80
|
weight: inventory.product.weight
|