@things-factory/sales-base 5.0.0-alpha.24 → 5.0.0-alpha.27
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/controllers/ecommerce/sellercraft-controller.js +10 -3
- package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
- package/dist-server/service/order-inventory/order-inventory-query.js +194 -11
- package/dist-server/service/order-inventory/order-inventory-query.js.map +1 -1
- package/dist-server/service/order-inventory/order-inventory-types.js +4 -0
- package/dist-server/service/order-inventory/order-inventory-types.js.map +1 -1
- package/dist-server/service/release-good/release-good-mutation.js +2 -2
- package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
- package/dist-server/service/release-good/release-good-query.js +10 -0
- package/dist-server/service/release-good/release-good-query.js.map +1 -1
- package/dist-server/service/release-good/release-good-types.js +32 -0
- package/dist-server/service/release-good/release-good-types.js.map +1 -1
- package/dist-server/service/release-good/release-good.js +20 -0
- package/dist-server/service/release-good/release-good.js.map +1 -1
- package/package.json +13 -13
- package/server/controllers/ecommerce/sellercraft-controller.ts +10 -3
- package/server/service/order-inventory/order-inventory-query.ts +234 -15
- package/server/service/order-inventory/order-inventory-types.ts +3 -0
- package/server/service/release-good/release-good-mutation.ts +5 -1
- package/server/service/release-good/release-good-query.ts +18 -6
- package/server/service/release-good/release-good-types.ts +24 -0
- package/server/service/release-good/release-good.ts +16 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
|
|
2
|
-
import { Brackets, getRepository, Like, SelectQueryBuilder } from 'typeorm'
|
|
2
|
+
import { Brackets, getRepository, Like, SelectQueryBuilder, In, Not, IsNull } from 'typeorm'
|
|
3
3
|
|
|
4
4
|
import { User } from '@things-factory/auth-base'
|
|
5
5
|
import { getPermittedBizplaceIds } from '@things-factory/biz-base'
|
|
@@ -11,6 +11,7 @@ import { ArrivalNotice } from '../arrival-notice/arrival-notice'
|
|
|
11
11
|
import { OrderInventoryList } from '../order-inventory/order-inventory-types'
|
|
12
12
|
import { ReleaseGood } from '../release-good/release-good'
|
|
13
13
|
import { OrderInventory } from './order-inventory'
|
|
14
|
+
import { Location } from '@things-factory/warehouse-base'
|
|
14
15
|
|
|
15
16
|
interface filterInterface {
|
|
16
17
|
name: string
|
|
@@ -245,18 +246,18 @@ export class OrderInventoryQuery {
|
|
|
245
246
|
@Arg('pagination', type => Pagination, { nullable: true }) pagination?: Pagination,
|
|
246
247
|
@Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]
|
|
247
248
|
): Promise<OrderInventoryList> {
|
|
248
|
-
const { domain, user }: { domain: Domain; user: User } = context.state
|
|
249
249
|
const { page, limit }: { page: number; limit: number } = pagination
|
|
250
250
|
|
|
251
251
|
try {
|
|
252
252
|
const productFilter = filters.find(x => x.name == 'productInfo')
|
|
253
253
|
const roNoFilter = filters.find(x => x.name == 'roNo')
|
|
254
|
+
const refNoFilter = filters.find(x => x.name == 'refNo')
|
|
254
255
|
const binLocationFilter = filters.find(x => x.name == 'binLocation')
|
|
255
256
|
const lotIdFilter = filters.find(x => x.name == 'palletId')
|
|
256
257
|
const cartonIdFilter = filters.find(x => x.name == 'cartonId')
|
|
257
258
|
|
|
258
259
|
filters = filters.filter(
|
|
259
|
-
filter => ['productInfo', 'roNo', 'binLocation', 'palletId', 'cartonId'].indexOf(filter.name) == -1
|
|
260
|
+
filter => ['productInfo', 'roNo', 'refNo', 'binLocation', 'palletId', 'cartonId'].indexOf(filter.name) == -1
|
|
260
261
|
)
|
|
261
262
|
|
|
262
263
|
const params = { filters, pagination }
|
|
@@ -305,6 +306,10 @@ export class OrderInventoryQuery {
|
|
|
305
306
|
qb.andWhere('Lower(rg.name) LIKE :roNo', { roNo: roNoFilter.value.toLowerCase() })
|
|
306
307
|
}
|
|
307
308
|
|
|
309
|
+
if (refNoFilter) {
|
|
310
|
+
qb.andWhere('Lower(rg.ref_no) LIKE :refNo', { refNo: refNoFilter.value.toLowerCase() })
|
|
311
|
+
}
|
|
312
|
+
|
|
308
313
|
if (binLocationFilter) {
|
|
309
314
|
qb.andWhere('Lower(bin_loc.name) LIKE :binLocation', { binLocation: binLocationFilter.value.toLowerCase() })
|
|
310
315
|
}
|
|
@@ -322,10 +327,6 @@ export class OrderInventoryQuery {
|
|
|
322
327
|
const order: string = sort.desc ? 'DESC' : 'ASC'
|
|
323
328
|
|
|
324
329
|
switch (sort.name) {
|
|
325
|
-
case 'releaseOrderNo':
|
|
326
|
-
acc = { ...acc, ['rg.name']: order }
|
|
327
|
-
break
|
|
328
|
-
|
|
329
330
|
case 'productSku':
|
|
330
331
|
acc = { ...acc, ['Product.sku']: order }
|
|
331
332
|
break
|
|
@@ -341,14 +342,6 @@ export class OrderInventoryQuery {
|
|
|
341
342
|
acc = { ...acc, ['bin_loc.name']: order }
|
|
342
343
|
break
|
|
343
344
|
|
|
344
|
-
case 'palletId':
|
|
345
|
-
acc = { ...acc, ['inv.pallet_id']: order }
|
|
346
|
-
break
|
|
347
|
-
|
|
348
|
-
case 'cartonId':
|
|
349
|
-
acc = { ...acc, ['inv.carton_id']: order }
|
|
350
|
-
break
|
|
351
|
-
|
|
352
345
|
default:
|
|
353
346
|
acc = { ...acc, [`oi.${sort.name}`]: order }
|
|
354
347
|
break
|
|
@@ -386,6 +379,7 @@ export class OrderInventoryQuery {
|
|
|
386
379
|
releaseGood: {
|
|
387
380
|
id: item.rg_id,
|
|
388
381
|
name: item.rg_name,
|
|
382
|
+
refNo: item.rg_ref_no,
|
|
389
383
|
description: item.rg_description
|
|
390
384
|
},
|
|
391
385
|
inventory: {
|
|
@@ -406,6 +400,231 @@ export class OrderInventoryQuery {
|
|
|
406
400
|
}
|
|
407
401
|
}
|
|
408
402
|
|
|
403
|
+
@Query(returns => OrderInventoryList)
|
|
404
|
+
async orderInventoriesOfMultipleReleaseOrders(
|
|
405
|
+
@Ctx() context: any,
|
|
406
|
+
@Arg('partnerId') partnerId: string,
|
|
407
|
+
@Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],
|
|
408
|
+
@Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]
|
|
409
|
+
): Promise<OrderInventoryList> {
|
|
410
|
+
try {
|
|
411
|
+
const { domain }: { domain: Domain } = context.state
|
|
412
|
+
const binNumberParam: any = filters.find((param: any) => param.name === 'binNumber')
|
|
413
|
+
let arrFilters = []
|
|
414
|
+
|
|
415
|
+
if (binNumberParam) {
|
|
416
|
+
let binLocation: Location = await getRepository(Location).findOne({
|
|
417
|
+
where: { domain, name: binNumberParam.value }
|
|
418
|
+
})
|
|
419
|
+
|
|
420
|
+
filters.splice(
|
|
421
|
+
filters.findIndex(item => item.name == 'binNumber'),
|
|
422
|
+
1
|
|
423
|
+
)
|
|
424
|
+
arrFilters.push({ ...binNumberParam, name: 'binLocationId', value: binLocation.id })
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
const releaseGoodsList: ReleaseGood[] = await getRepository(ReleaseGood).query(
|
|
428
|
+
`select id from release_goods where domain_id = '${domain.id}' and bizplace_id = '${partnerId}' and route_id is not null and status = 'PICKING'`
|
|
429
|
+
)
|
|
430
|
+
|
|
431
|
+
if (releaseGoodsList && releaseGoodsList.length) {
|
|
432
|
+
arrFilters.push({
|
|
433
|
+
name: 'releaseGoodId',
|
|
434
|
+
operator: 'in',
|
|
435
|
+
value: releaseGoodsList.map((foundRG: ReleaseGood) => foundRG.id),
|
|
436
|
+
relation: false
|
|
437
|
+
})
|
|
438
|
+
} else {
|
|
439
|
+
arrFilters.push({
|
|
440
|
+
name: 'releaseGoodId',
|
|
441
|
+
operator: 'is_null',
|
|
442
|
+
relation: false
|
|
443
|
+
})
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
const params = { filters: arrFilters }
|
|
447
|
+
const qb: SelectQueryBuilder<OrderInventory> = getRepository(OrderInventory).createQueryBuilder('oi')
|
|
448
|
+
buildQuery(qb, params, context)
|
|
449
|
+
|
|
450
|
+
qb.select('oi')
|
|
451
|
+
qb.innerJoinAndSelect('oi.releaseGood', 'rg')
|
|
452
|
+
qb.innerJoinAndSelect('oi.product', 'Product')
|
|
453
|
+
qb.leftJoinAndSelect('oi.binLocation', 'bin_loc')
|
|
454
|
+
qb.leftJoinAndSelect('oi.domain', 'domain')
|
|
455
|
+
qb.leftJoinAndSelect('oi.creator', 'creator')
|
|
456
|
+
qb.leftJoinAndSelect('oi.updater', 'updater')
|
|
457
|
+
|
|
458
|
+
if (sortings?.length !== 0) {
|
|
459
|
+
const sorter = (sortings || []).reduce((acc, sort) => {
|
|
460
|
+
const order: string = sort.desc ? 'DESC' : 'ASC'
|
|
461
|
+
|
|
462
|
+
switch (sort.name) {
|
|
463
|
+
case 'roName':
|
|
464
|
+
acc = { ...acc, ['rg.name']: order }
|
|
465
|
+
break
|
|
466
|
+
|
|
467
|
+
case 'productSku':
|
|
468
|
+
acc = { ...acc, ['Product.sku']: order }
|
|
469
|
+
break
|
|
470
|
+
|
|
471
|
+
case 'binNumber':
|
|
472
|
+
acc = { ...acc, ['bin_loc.name']: order }
|
|
473
|
+
break
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
return acc
|
|
477
|
+
}, {})
|
|
478
|
+
qb.orderBy(sorter)
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
const [items, total] = await qb.getManyAndCount()
|
|
482
|
+
|
|
483
|
+
return { items, total }
|
|
484
|
+
} catch (e) {
|
|
485
|
+
throw e
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
@Query(returns => OrderInventoryList)
|
|
490
|
+
async orderInventoriesOfMergedReleaseOrders(
|
|
491
|
+
@Ctx() context: any,
|
|
492
|
+
@Arg('partnerId') partnerId: string,
|
|
493
|
+
@Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],
|
|
494
|
+
@Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]
|
|
495
|
+
): Promise<OrderInventoryList> {
|
|
496
|
+
try {
|
|
497
|
+
const { domain }: { domain: Domain } = context.state
|
|
498
|
+
const binNumberParam: any = filters.find((param: any) => param.name === 'binNumber')
|
|
499
|
+
const priorityParam: any = filters.find((param: any) => param.name === 'priority')
|
|
500
|
+
let arrFilters = []
|
|
501
|
+
|
|
502
|
+
if (priorityParam) {
|
|
503
|
+
filters.splice(
|
|
504
|
+
filters.findIndex(item => item.name == 'priority'),
|
|
505
|
+
1
|
|
506
|
+
)
|
|
507
|
+
|
|
508
|
+
switch (priorityParam.value) {
|
|
509
|
+
case 'roSku':
|
|
510
|
+
sortings.push({ name: 'releaseGood', desc: true })
|
|
511
|
+
sortings.push({ name: 'productSku', desc: false })
|
|
512
|
+
break
|
|
513
|
+
|
|
514
|
+
case 'roBin':
|
|
515
|
+
sortings.push({ name: 'releaseGood', desc: true })
|
|
516
|
+
sortings.push({ name: 'binNumber', desc: false })
|
|
517
|
+
break
|
|
518
|
+
|
|
519
|
+
case 'skuRo':
|
|
520
|
+
sortings.push({ name: 'productSku', desc: false })
|
|
521
|
+
sortings.push({ name: 'releaseGood', desc: true })
|
|
522
|
+
break
|
|
523
|
+
|
|
524
|
+
case 'skuBin':
|
|
525
|
+
sortings.push({ name: 'productSku', desc: false })
|
|
526
|
+
sortings.push({ name: 'binNumber', desc: false })
|
|
527
|
+
break
|
|
528
|
+
|
|
529
|
+
case 'binSku':
|
|
530
|
+
sortings.push({ name: 'binNumber', desc: false })
|
|
531
|
+
sortings.push({ name: 'productSku', desc: false })
|
|
532
|
+
break
|
|
533
|
+
|
|
534
|
+
case 'binRo':
|
|
535
|
+
sortings.push({ name: 'binNumber', desc: false })
|
|
536
|
+
sortings.push({ name: 'releaseGood', desc: true })
|
|
537
|
+
break
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
const releaseGoodsList: ReleaseGood[] = await getRepository(ReleaseGood).query(
|
|
542
|
+
`select oi.release_good_id as id from worksheets w
|
|
543
|
+
inner join worksheet_details wd on wd.worksheet_id =w.id
|
|
544
|
+
inner join order_inventories oi on oi.id =wd.target_inventory_id
|
|
545
|
+
inner join release_goods rg on rg.id = oi.release_good_id
|
|
546
|
+
and oi.status in ('PICKING', 'PICKED', 'SORTING', 'SORTED')
|
|
547
|
+
and w.type = 'BATCH_PICKING' and w.status != 'DEACTIVATED'
|
|
548
|
+
and rg.domain_id = '${domain.id}' and rg.bizplace_id = '${partnerId}'
|
|
549
|
+
and rg.route_id is not null
|
|
550
|
+
group by oi.release_good_id`
|
|
551
|
+
)
|
|
552
|
+
|
|
553
|
+
if (releaseGoodsList && releaseGoodsList.length) {
|
|
554
|
+
arrFilters.push({
|
|
555
|
+
name: 'releaseGoodId',
|
|
556
|
+
operator: 'in',
|
|
557
|
+
value: releaseGoodsList.map((foundRG: ReleaseGood) => foundRG.id),
|
|
558
|
+
relation: false
|
|
559
|
+
})
|
|
560
|
+
} else {
|
|
561
|
+
arrFilters.push({
|
|
562
|
+
name: 'releaseGoodId',
|
|
563
|
+
operator: 'is_null',
|
|
564
|
+
relation: false
|
|
565
|
+
})
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
const params = { filters: arrFilters }
|
|
569
|
+
const qb: SelectQueryBuilder<OrderInventory> = getRepository(OrderInventory).createQueryBuilder('oi')
|
|
570
|
+
buildQuery(qb, params, context)
|
|
571
|
+
|
|
572
|
+
qb.select('oi')
|
|
573
|
+
qb.innerJoinAndSelect('oi.releaseGood', 'rg')
|
|
574
|
+
qb.innerJoinAndSelect('oi.product', 'Product')
|
|
575
|
+
qb.leftJoinAndSelect('oi.binLocation', 'bin_loc')
|
|
576
|
+
qb.leftJoinAndSelect('oi.domain', 'domain')
|
|
577
|
+
qb.leftJoinAndSelect('oi.creator', 'creator')
|
|
578
|
+
qb.leftJoinAndSelect('oi.updater', 'updater')
|
|
579
|
+
|
|
580
|
+
if (binNumberParam) {
|
|
581
|
+
let binLocation: Location = await getRepository(Location).findOne({
|
|
582
|
+
where: { domain, name: binNumberParam.value }
|
|
583
|
+
})
|
|
584
|
+
|
|
585
|
+
filters.splice(
|
|
586
|
+
filters.findIndex(item => item.name == 'binNumber'),
|
|
587
|
+
1
|
|
588
|
+
)
|
|
589
|
+
|
|
590
|
+
qb.andWhere('bin_loc.id = :id', { id: binLocation.id })
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
if (sortings?.length !== 0) {
|
|
594
|
+
const sorter = (sortings || []).reduce((acc, sort) => {
|
|
595
|
+
const order: string = sort.desc ? 'DESC' : 'ASC'
|
|
596
|
+
|
|
597
|
+
switch (sort.name) {
|
|
598
|
+
case 'roName':
|
|
599
|
+
acc = { ...acc, ['rg.name']: order }
|
|
600
|
+
break
|
|
601
|
+
|
|
602
|
+
case 'releaseGood':
|
|
603
|
+
acc = { ...acc, ['rg.created_at']: order }
|
|
604
|
+
break
|
|
605
|
+
|
|
606
|
+
case 'productSku':
|
|
607
|
+
acc = { ...acc, ['Product.sku']: order }
|
|
608
|
+
break
|
|
609
|
+
|
|
610
|
+
case 'binNumber':
|
|
611
|
+
acc = { ...acc, ['bin_loc.name']: order }
|
|
612
|
+
break
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
return acc
|
|
616
|
+
}, {})
|
|
617
|
+
qb.orderBy(sorter)
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
const [items, total] = await qb.getManyAndCount()
|
|
621
|
+
|
|
622
|
+
return { items, total }
|
|
623
|
+
} catch (e) {
|
|
624
|
+
throw e
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
|
|
409
628
|
@FieldResolver(type => Domain)
|
|
410
629
|
async domain(@Root() orderInventory: OrderInventory): Promise<Domain> {
|
|
411
630
|
return await getRepository(Domain).findOne(orderInventory.domainId)
|
|
@@ -565,6 +565,10 @@ export async function generateReleaseGoodFunction(
|
|
|
565
565
|
orderInventories: releaseGood.orderInventories,
|
|
566
566
|
type: releaseGood?.type ? releaseGood.type : 'b2b',
|
|
567
567
|
status: ORDER_STATUS.PENDING,
|
|
568
|
+
storeName: releaseGood?.storeName,
|
|
569
|
+
storeId: releaseGood?.storeId,
|
|
570
|
+
routeId: releaseGood?.routeId,
|
|
571
|
+
stopId: releaseGood?.stopId,
|
|
568
572
|
creator: user,
|
|
569
573
|
updater: user
|
|
570
574
|
}
|
|
@@ -762,7 +766,7 @@ export async function confirmReleaseGood(name: string, context: any, tx?: Entity
|
|
|
762
766
|
// query orderProducts separately from releaseGood to reduce resource usage
|
|
763
767
|
let foundOPs: OrderProduct[] = await tx.getRepository(OrderProduct).find({
|
|
764
768
|
where: { domain, releaseGood: foundReleaseGood },
|
|
765
|
-
relations: ['product', 'product.productDetails']
|
|
769
|
+
relations: ['bizplace', 'product', 'product.productDetails']
|
|
766
770
|
})
|
|
767
771
|
|
|
768
772
|
let foundBundleInfo: any[] = JSON.parse(foundReleaseGood.bundleInfo)
|
|
@@ -263,6 +263,7 @@ export class ReleaseGoodQuery {
|
|
|
263
263
|
const bizplaceFilter = params.filters.find(param => param.name === 'bizplaceId')
|
|
264
264
|
const noOfItemsFilter = params.filters.find(param => param.name === 'noOfItems')
|
|
265
265
|
const skuFilter = params.filters.find(param => param.name === 'sku')
|
|
266
|
+
const routeId = params.filters.find(param => param.name === 'routeId')
|
|
266
267
|
|
|
267
268
|
if (await checkUserBelongsDomain(domain, user)) {
|
|
268
269
|
if (!statusFilter && !params.filters.some(e => e.name === 'name')) {
|
|
@@ -288,6 +289,15 @@ export class ReleaseGoodQuery {
|
|
|
288
289
|
params.filters = params.filters.filter(param => param.name !== 'sku')
|
|
289
290
|
}
|
|
290
291
|
|
|
292
|
+
if (routeId) {
|
|
293
|
+
if (routeId.value == true) {
|
|
294
|
+
params.filters.find(param => param.name === 'routeId').value = 'null'
|
|
295
|
+
} else {
|
|
296
|
+
params.filters.find(param => param.name === 'routeId').operator = 'is_null'
|
|
297
|
+
params.filters.find(param => param.name === 'routeId').value = null
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
291
301
|
const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate')
|
|
292
302
|
if (fromDateParamIdx >= 0) {
|
|
293
303
|
let fromDateVal = new Date(params.filters[fromDateParamIdx].value)
|
|
@@ -389,9 +399,13 @@ export class ReleaseGoodQuery {
|
|
|
389
399
|
const PROD_ALIAS = 'PROD'
|
|
390
400
|
const GAN_ALIAS = 'GAN'
|
|
391
401
|
const conditions = filters
|
|
392
|
-
let {
|
|
393
|
-
|
|
394
|
-
|
|
402
|
+
let {
|
|
403
|
+
batchId = null,
|
|
404
|
+
containerNo = null,
|
|
405
|
+
product = [],
|
|
406
|
+
packingType = null,
|
|
407
|
+
inventory = []
|
|
408
|
+
} = getConditionValues(conditions)
|
|
395
409
|
|
|
396
410
|
const SELECT: string = `
|
|
397
411
|
SELECT
|
|
@@ -812,9 +826,7 @@ function _extractData(rawData, validatedData) {
|
|
|
812
826
|
})
|
|
813
827
|
}
|
|
814
828
|
|
|
815
|
-
function getConditionValues(
|
|
816
|
-
conditions: Filter[]
|
|
817
|
-
): {
|
|
829
|
+
function getConditionValues(conditions: Filter[]): {
|
|
818
830
|
batchId?: string
|
|
819
831
|
containerNo?: string
|
|
820
832
|
product?: string[]
|
|
@@ -347,6 +347,18 @@ export class NewReleaseGood {
|
|
|
347
347
|
|
|
348
348
|
@Field({ nullable: true })
|
|
349
349
|
errorMsg: string
|
|
350
|
+
|
|
351
|
+
@Field({ nullable: true })
|
|
352
|
+
storeName: string
|
|
353
|
+
|
|
354
|
+
@Field({ nullable: true })
|
|
355
|
+
storeId: string
|
|
356
|
+
|
|
357
|
+
@Field({ nullable: true })
|
|
358
|
+
routeId: string
|
|
359
|
+
|
|
360
|
+
@Field({ nullable: true })
|
|
361
|
+
stopId: string
|
|
350
362
|
}
|
|
351
363
|
|
|
352
364
|
@InputType()
|
|
@@ -503,4 +515,16 @@ export class ReleaseGoodPatch {
|
|
|
503
515
|
|
|
504
516
|
@Field({ nullable: true })
|
|
505
517
|
description: string
|
|
518
|
+
|
|
519
|
+
@Field({ nullable: true })
|
|
520
|
+
storeName: string
|
|
521
|
+
|
|
522
|
+
@Field({ nullable: true })
|
|
523
|
+
storeId: string
|
|
524
|
+
|
|
525
|
+
@Field({ nullable: true })
|
|
526
|
+
routeId: string
|
|
527
|
+
|
|
528
|
+
@Field({ nullable: true })
|
|
529
|
+
stopId: string
|
|
506
530
|
}
|
|
@@ -389,4 +389,20 @@ export class ReleaseGood {
|
|
|
389
389
|
|
|
390
390
|
@Field({ nullable: true })
|
|
391
391
|
errorMsg: string
|
|
392
|
+
|
|
393
|
+
@Column({ nullable: true })
|
|
394
|
+
@Field({ nullable: true })
|
|
395
|
+
storeId: string
|
|
396
|
+
|
|
397
|
+
@Column({ nullable: true })
|
|
398
|
+
@Field({ nullable: true })
|
|
399
|
+
storeName: string
|
|
400
|
+
|
|
401
|
+
@Column({ nullable: true })
|
|
402
|
+
@Field({ nullable: true })
|
|
403
|
+
routeId: string
|
|
404
|
+
|
|
405
|
+
@Column({ nullable: true })
|
|
406
|
+
@Field({ nullable: true })
|
|
407
|
+
stopId: string
|
|
392
408
|
}
|