@things-factory/operato-wms 4.3.797 → 4.3.798
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/client/pages/components/worksheet-information-popup.js +60 -8
- package/client/pages/constants/order.js +7 -1
- package/client/pages/order/release-order/b2b/b2b-order-list.js +17 -1
- package/client/pages/order/release-order/release-order-detail.js +19 -0
- package/client/pages/order/transport-order/print-delivery-note.js +19 -1
- package/client/pages/outbound/loading-v2/load-by-qty.js +10 -0
- package/client/pages/outbound/loading-v2/loading-execution-base.js +22 -8
- package/client/pages/outbound/loading-v2/loading-execution.js +37 -8
- package/client/pages/outbound/loading-v2/loading.js +6 -0
- package/client/pages/outbound/loading-v2/release-good-info.js +3 -0
- package/client/pages/outbound/picking-product.js +25 -3
- package/client/pages/outbound/picking-v2/picking-execution-base.js +20 -2
- package/client/pages/outbound/picking-v2/picking-execution.js +4 -3
- package/client/pages/outbound/picking-v2/picking.js +3 -0
- package/client/pages/outbound/single-outbound-worksheet.js +18 -1
- package/client/pages/outbound/sorting-product.js +24 -1
- package/client/pages/outbound/worksheet-zone-picking.js +1 -0
- package/dist-server/graphql/resolvers/outbound/find-loadable-release-good-by-bin.js +9 -4
- package/dist-server/graphql/resolvers/outbound/find-loadable-release-good-by-bin.js.map +1 -1
- package/dist-server/graphql/resolvers/outbound/load-by-qty.js +1 -1
- package/dist-server/graphql/resolvers/outbound/load-by-qty.js.map +1 -1
- package/dist-server/graphql/resolvers/outbound/loading-worksheet-v2.js +5 -1
- package/dist-server/graphql/resolvers/outbound/loading-worksheet-v2.js.map +1 -1
- package/dist-server/graphql/resolvers/zone-worksheet/zone-worksheet.js +8 -2
- package/dist-server/graphql/resolvers/zone-worksheet/zone-worksheet.js.map +1 -1
- package/package.json +8 -8
- package/server/graphql/resolvers/outbound/find-loadable-release-good-by-bin.ts +7 -1
- package/server/graphql/resolvers/outbound/load-by-qty.ts +1 -1
- package/server/graphql/resolvers/outbound/loading-worksheet-v2.ts +9 -2
- package/server/graphql/resolvers/zone-worksheet/zone-worksheet.ts +32 -23
- package/translations/en.json +2 -0
- package/translations/ko.json +2 -0
- package/translations/ms.json +2 -0
- package/translations/zh.json +2 -0
|
@@ -2,8 +2,9 @@ import { EntityManager } from 'typeorm'
|
|
|
2
2
|
import { In } from 'typeorm'
|
|
3
3
|
|
|
4
4
|
import { Domain } from '@things-factory/shell'
|
|
5
|
+
import { ProductDetail } from '@things-factory/product-base'
|
|
5
6
|
import { ReleaseGood, ORDER_INVENTORY_STATUS, ORDER_STATUS } from '@things-factory/sales-base'
|
|
6
|
-
import { Worksheet, WorksheetDetail, WORKSHEET_TYPE, WORKSHEET_STATUS } from '@things-factory/worksheet-base'
|
|
7
|
+
import { Worksheet, WorksheetDetail, WORKSHEET_TYPE, WORKSHEET_STATUS, computeConversionString } from '@things-factory/worksheet-base'
|
|
7
8
|
import { Setting } from '@things-factory/setting-base'
|
|
8
9
|
|
|
9
10
|
const FILTER_TYPES = {
|
|
@@ -33,6 +34,7 @@ interface WorksheetInfo {
|
|
|
33
34
|
refNo2?: string
|
|
34
35
|
refNo3?: string
|
|
35
36
|
remark?: string
|
|
37
|
+
rtm?: string
|
|
36
38
|
}
|
|
37
39
|
}
|
|
38
40
|
|
|
@@ -47,6 +49,7 @@ interface WorksheetDetailInfo {
|
|
|
47
49
|
status: string
|
|
48
50
|
packingType: string
|
|
49
51
|
packingSize: string
|
|
52
|
+
conversion: string
|
|
50
53
|
expirationDate?: string
|
|
51
54
|
binLocation: {
|
|
52
55
|
name?: string
|
|
@@ -141,6 +144,8 @@ export const loadingWorksheetv2 = {
|
|
|
141
144
|
.leftJoinAndSelect('targetInventory.product', 'product')
|
|
142
145
|
.leftJoinAndSelect('targetInventory.productDetail', 'productDetail')
|
|
143
146
|
.leftJoinAndSelect('productDetail.productBarcodes', 'productBarcodes')
|
|
147
|
+
.leftJoinAndSelect('productDetail.childProductDetail', 'childProductDetail')
|
|
148
|
+
.leftJoinAndSelect('productDetail.parentProductDetails', 'parentProductDetails')
|
|
144
149
|
.leftJoin('targetInventory.inventory', 'inventory')
|
|
145
150
|
.addSelect('inventory.expirationDate')
|
|
146
151
|
.where('worksheetDetail.domain_id = :domainId', { domainId: domain.id })
|
|
@@ -220,7 +225,8 @@ async function mapdata(
|
|
|
220
225
|
refNo: releaseGood?.refNo,
|
|
221
226
|
refNo2: releaseGood?.refNo2,
|
|
222
227
|
refNo3: releaseGood?.refNo3,
|
|
223
|
-
remark: releaseGood?.remark
|
|
228
|
+
remark: releaseGood?.remark,
|
|
229
|
+
rtm: releaseGood?.rtm
|
|
224
230
|
}
|
|
225
231
|
}
|
|
226
232
|
|
|
@@ -240,6 +246,7 @@ async function mapdata(
|
|
|
240
246
|
status: wsd.status,
|
|
241
247
|
packingType: wsd.targetInventory.packingType,
|
|
242
248
|
packingSize: wsd.targetInventory.packingSize,
|
|
249
|
+
conversion: computeConversionString(wsd.targetInventory.releaseQty, wsd.targetInventory.productDetail as ProductDetail),
|
|
243
250
|
expirationDate: wsd.targetInventory?.inventory?.expirationDate,
|
|
244
251
|
binLocation: {
|
|
245
252
|
name: wsd.targetInventory.binLocation?.name
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { EntityManager, getRepository, In, Not } from 'typeorm'
|
|
2
2
|
import { Domain } from '@things-factory/biz-base'
|
|
3
|
-
import { Worksheet, WorksheetDetail, WORKSHEET_TYPE } from '@things-factory/worksheet-base'
|
|
3
|
+
import { Worksheet, WorksheetDetail, WORKSHEET_TYPE, computeConversionString } from '@things-factory/worksheet-base'
|
|
4
4
|
import { Inventories, InventoryChange } from '@things-factory/warehouse-base'
|
|
5
5
|
import { OrderInventory, ReleaseGood, ORDER_STATUS, ORDER_INVENTORY_STATUS } from '@things-factory/sales-base'
|
|
6
|
+
|
|
6
7
|
export const zoneWorksheetOverview = {
|
|
7
8
|
async zoneWorksheetOverview(_: any, { releaseGoods }, context: any) {
|
|
8
9
|
const { domain, tx }: { domain: Domain; tx: EntityManager } = context.state
|
|
@@ -81,6 +82,9 @@ export const zonePickingWorksheet = {
|
|
|
81
82
|
.innerJoinAndSelect('oi.inventory', 'i', 'oi.inventory_id = i.id')
|
|
82
83
|
.innerJoinAndSelect('i.location', 'l', 'i.location_id = l.id')
|
|
83
84
|
.leftJoin('oi.releaseGood', 'rg', 'oi.release_good_id = rg.id')
|
|
85
|
+
.leftJoinAndSelect('oi.productDetail', 'pd')
|
|
86
|
+
.leftJoinAndSelect('pd.childProductDetail', 'cpd')
|
|
87
|
+
.leftJoinAndSelect('pd.parentProductDetails', 'ppd')
|
|
84
88
|
.where('ref_worksheet_id = :worksheetId', { worksheetId: worksheet.id })
|
|
85
89
|
|
|
86
90
|
//get all oi to find inventory changes and determine if the worksheet is completable
|
|
@@ -135,30 +139,35 @@ export const zonePickingWorksheet = {
|
|
|
135
139
|
}
|
|
136
140
|
|
|
137
141
|
//group oi based on inventory id
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
if (inventoryId) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
}
|
|
142
|
+
const grouped = items?.reduce((group, oi) => {
|
|
143
|
+
const inventoryId = oi.inventory?.id
|
|
144
|
+
if (inventoryId) {
|
|
145
|
+
if (!group[inventoryId]) {
|
|
146
|
+
group[inventoryId] = {
|
|
147
|
+
product: oi.product,
|
|
148
|
+
inventory: oi.inventory,
|
|
149
|
+
packingType: oi.packingType,
|
|
150
|
+
packingSize: oi.packingSize,
|
|
151
|
+
productDetail: oi.productDetail,
|
|
152
|
+
releaseQty: 0,
|
|
153
|
+
pickedQty: 0,
|
|
154
|
+
releaseUomValue: 0
|
|
152
155
|
}
|
|
153
|
-
|
|
154
|
-
//sum up the quantities and uom value
|
|
155
|
-
group[inventoryId].releaseQty += oi.releaseQty || 0
|
|
156
|
-
group[inventoryId].pickedQty += oi.pickedQty || 0
|
|
157
|
-
group[inventoryId].releaseUomValue += oi.releaseUomValue || 0
|
|
158
156
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
157
|
+
|
|
158
|
+
//sum up the quantities and uom value
|
|
159
|
+
group[inventoryId].releaseQty += oi.releaseQty || 0
|
|
160
|
+
group[inventoryId].pickedQty += oi.pickedQty || 0
|
|
161
|
+
group[inventoryId].releaseUomValue += oi.releaseUomValue || 0
|
|
162
|
+
}
|
|
163
|
+
return group
|
|
164
|
+
}, {})
|
|
165
|
+
|
|
166
|
+
//compute conversion string for each grouped item
|
|
167
|
+
zoneWorksheet.groupedOrderInventories = Object.values(grouped).map((item: any) => ({
|
|
168
|
+
...item,
|
|
169
|
+
conversion: computeConversionString(item.releaseQty, item.productDetail)
|
|
170
|
+
}))
|
|
162
171
|
|
|
163
172
|
return zoneWorksheet
|
|
164
173
|
}
|
package/translations/en.json
CHANGED
|
@@ -523,6 +523,7 @@
|
|
|
523
523
|
"field.own_collection": "own collection",
|
|
524
524
|
"field.own_transport": "own transport",
|
|
525
525
|
"field.owner": "owner",
|
|
526
|
+
"field.pack_conversion": "pack conversion",
|
|
526
527
|
"field.pack_in_qty": "pack in qty",
|
|
527
528
|
"field.pack_qty": "pack qty",
|
|
528
529
|
"field.pack_quantity": "pack quantity",
|
|
@@ -656,6 +657,7 @@
|
|
|
656
657
|
"field.route_id": "route id",
|
|
657
658
|
"field.route_label": "route label",
|
|
658
659
|
"field.route": "route",
|
|
660
|
+
"field.rtm": "Route To Market",
|
|
659
661
|
"field.routing_type": "routing type",
|
|
660
662
|
"field.routing": "routing",
|
|
661
663
|
"field.row_end": "row end",
|
package/translations/ko.json
CHANGED
|
@@ -516,6 +516,7 @@
|
|
|
516
516
|
"field.own_collection": "직접 취합",
|
|
517
517
|
"field.own_transport": "자사 운송",
|
|
518
518
|
"field.owner": "관리자",
|
|
519
|
+
"field.pack_conversion": "팩 환산",
|
|
519
520
|
"field.pack_in_qty": "팩 수량",
|
|
520
521
|
"field.pack_qty": "팩 수량",
|
|
521
522
|
"field.pack_quantity": "팩 수량",
|
|
@@ -645,6 +646,7 @@
|
|
|
645
646
|
"field.route_id": "[ko] route id",
|
|
646
647
|
"field.route_label": "[ko] route label",
|
|
647
648
|
"field.route": "[ko] route",
|
|
649
|
+
"field.rtm": "시장진출경로",
|
|
648
650
|
"field.routing_type": "라우팅 유형",
|
|
649
651
|
"field.routing": "라우팅",
|
|
650
652
|
"field.row_end": "끝 행",
|
package/translations/ms.json
CHANGED
|
@@ -543,6 +543,7 @@
|
|
|
543
543
|
"field.own_collection": "msleksi sendiri",
|
|
544
544
|
"field.own_transport": "pengangkutan sendiri",
|
|
545
545
|
"field.owner": "pemilik",
|
|
546
|
+
"field.pack_conversion": "penukaran pek",
|
|
546
547
|
"field.pack_in_qty": "kuantiti dalam pek",
|
|
547
548
|
"field.pack_qty": "kuantiti dalam pek",
|
|
548
549
|
"field.pack_quantity": "kuantiti dalam pek",
|
|
@@ -679,6 +680,7 @@
|
|
|
679
680
|
"field.ro_type": "jenis RO",
|
|
680
681
|
"field.rounded_uom_value": "nilai uom pembulatan",
|
|
681
682
|
"field.route": "rute",
|
|
683
|
+
"field.rtm": "Laluan Ke Pasaran",
|
|
682
684
|
"field.route_id": "id rute",
|
|
683
685
|
"field.route_label": "label rute",
|
|
684
686
|
"field.routing": "rute",
|
package/translations/zh.json
CHANGED
|
@@ -543,6 +543,7 @@
|
|
|
543
543
|
"field.own_collection": "自提",
|
|
544
544
|
"field.own_transport": "自运",
|
|
545
545
|
"field.owner": "所有者",
|
|
546
|
+
"field.pack_conversion": "包装转换",
|
|
546
547
|
"field.pack_in_qty": "包装数量",
|
|
547
548
|
"field.pack_qty": "包装数量",
|
|
548
549
|
"field.pack_quantity": "包装数量",
|
|
@@ -679,6 +680,7 @@
|
|
|
679
680
|
"field.ro_type": "RO 类型",
|
|
680
681
|
"field.rounded_uom_value": "圆整单位值",
|
|
681
682
|
"field.route": "路线",
|
|
683
|
+
"field.rtm": "市场路线",
|
|
682
684
|
"field.route_id": "路线ID",
|
|
683
685
|
"field.route_label": "路线标签",
|
|
684
686
|
"field.routing": "路由",
|