@things-factory/operato-wms 3.6.37 → 3.6.41

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.
Files changed (52) hide show
  1. package/client/pages/constants/order.js +1 -0
  2. package/client/pages/inbound/unload-product.js +0 -1
  3. package/client/pages/order/release-order/b2c/b2c-order-requests.js +35 -0
  4. package/client/pages/order/release-order/bulk-print-packing-list.js +278 -0
  5. package/client/pages/order/return-order/create-return-order.js +2 -4
  6. package/client/pages/outbound/inventory-assign-popup.js +9 -0
  7. package/client/pages/outbound/inventory-auto-assign-popup.js +9 -5
  8. package/client/pages/outbound/packing-product.js +16 -26
  9. package/client/pages/outbound/worksheet-batch-picking.js +26 -11
  10. package/client/pages/outbound/worksheet-picking.js +35 -10
  11. package/client/pages/vas/print-product-label.js +159 -17
  12. package/client/route.js +4 -0
  13. package/config.development.js +95 -0
  14. package/config.production.js +90 -0
  15. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js +1 -1
  16. package/dist-server/graphql/resolvers/dashboard/arrival-notices-by-status.js +24 -0
  17. package/dist-server/graphql/resolvers/dashboard/arrival-notices-by-status.js.map +1 -0
  18. package/dist-server/graphql/resolvers/dashboard/collection-orders-by-status.js +24 -0
  19. package/dist-server/graphql/resolvers/dashboard/collection-orders-by-status.js.map +1 -0
  20. package/dist-server/graphql/resolvers/dashboard/delivery-orders-by-status.js +24 -0
  21. package/dist-server/graphql/resolvers/dashboard/delivery-orders-by-status.js.map +1 -0
  22. package/dist-server/graphql/resolvers/dashboard/index.js +9 -0
  23. package/dist-server/graphql/resolvers/dashboard/index.js.map +1 -0
  24. package/dist-server/graphql/resolvers/dashboard/release-goods-by-status.js +24 -0
  25. package/dist-server/graphql/resolvers/dashboard/release-goods-by-status.js.map +1 -0
  26. package/dist-server/graphql/resolvers/index.js +10 -2
  27. package/dist-server/graphql/resolvers/index.js.map +1 -1
  28. package/dist-server/graphql/resolvers/reports/outbound-order-details-report.js +2 -1
  29. package/dist-server/graphql/resolvers/reports/outbound-order-details-report.js.map +1 -1
  30. package/dist-server/graphql/types/dashboard/index.js +12 -0
  31. package/dist-server/graphql/types/dashboard/index.js.map +1 -0
  32. package/dist-server/graphql/types/dashboard/order-status-counter.js +14 -0
  33. package/dist-server/graphql/types/dashboard/order-status-counter.js.map +1 -0
  34. package/dist-server/graphql/types/index.js +17 -3
  35. package/dist-server/graphql/types/index.js.map +1 -1
  36. package/package.json +39 -38
  37. package/server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.ts +1 -1
  38. package/server/graphql/resolvers/dashboard/arrival-notices-by-status.ts +25 -0
  39. package/server/graphql/resolvers/dashboard/collection-orders-by-status.ts +25 -0
  40. package/server/graphql/resolvers/dashboard/delivery-orders-by-status.ts +25 -0
  41. package/server/graphql/resolvers/dashboard/index.ts +11 -0
  42. package/server/graphql/resolvers/dashboard/release-goods-by-status.ts +25 -0
  43. package/server/graphql/resolvers/index.ts +10 -2
  44. package/server/graphql/resolvers/reports/outbound-order-details-report.ts +2 -1
  45. package/server/graphql/types/dashboard/index.ts +9 -0
  46. package/server/graphql/types/dashboard/order-status-counter.ts +8 -0
  47. package/server/graphql/types/index.ts +17 -3
  48. package/things-factory.config.js +4 -0
  49. package/translations/en.json +5 -0
  50. package/translations/ko.json +5 -0
  51. package/translations/ms.json +5 -0
  52. package/translations/zh.json +7 -2
@@ -0,0 +1,25 @@
1
+ import { getRepository, SelectQueryBuilder } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { getPermittedBizplaceIds } from '@things-factory/biz-base'
5
+ import { CollectionOrder } from '@things-factory/sales-base'
6
+ import { buildQuery, Domain, ListParam } from '@things-factory/shell'
7
+
8
+ export const collectionOrdersByStatusResolver = {
9
+ async collectionOrdersByStatus(_: any, params: ListParam, context: any) {
10
+ const { domain, user }: { domain: Domain; user: User } = context.state
11
+
12
+ if (!params.filters.find((filter: any) => filter.name === 'bizplace')) {
13
+ params.filters.push({
14
+ name: 'bizplaceId',
15
+ operator: 'in',
16
+ value: await getPermittedBizplaceIds(domain, user),
17
+ relation: false
18
+ })
19
+ }
20
+
21
+ const qb: SelectQueryBuilder<CollectionOrder> = getRepository(CollectionOrder).createQueryBuilder('co')
22
+ buildQuery(qb, params, context)
23
+ return qb.select('co.status', 'status').addSelect('COUNT(*) AS count').groupBy('co.status').getRawMany()
24
+ }
25
+ }
@@ -0,0 +1,25 @@
1
+ import { getRepository, SelectQueryBuilder } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { getPermittedBizplaceIds } from '@things-factory/biz-base'
5
+ import { DeliveryOrder } from '@things-factory/sales-base'
6
+ import { buildQuery, Domain, ListParam } from '@things-factory/shell'
7
+
8
+ export const deliveryOrdersByStatusResolver = {
9
+ async deliveryOrdersByStatus(_: any, params: ListParam, context: any) {
10
+ const { domain, user }: { domain: Domain; user: User } = context.state
11
+
12
+ if (!params.filters.find((filter: any) => filter.name === 'bizplace')) {
13
+ params.filters.push({
14
+ name: 'bizplaceId',
15
+ operator: 'in',
16
+ value: await getPermittedBizplaceIds(domain, user),
17
+ relation: false
18
+ })
19
+ }
20
+
21
+ const qb: SelectQueryBuilder<DeliveryOrder> = getRepository(DeliveryOrder).createQueryBuilder('do')
22
+ buildQuery(qb, params, context)
23
+ return qb.select('do.status', 'status').addSelect('COUNT(*) AS count').groupBy('do.status').getRawMany()
24
+ }
25
+ }
@@ -0,0 +1,11 @@
1
+ import { arrivalNoticesByStatusResolver } from './arrival-notices-by-status'
2
+ import { collectionOrdersByStatusResolver } from './collection-orders-by-status'
3
+ import { deliveryOrdersByStatusResolver } from './delivery-orders-by-status'
4
+ import { releaseGoodsByStatusResolver } from './release-goods-by-status'
5
+
6
+ export const Query = {
7
+ ...arrivalNoticesByStatusResolver,
8
+ ...collectionOrdersByStatusResolver,
9
+ ...deliveryOrdersByStatusResolver,
10
+ ...releaseGoodsByStatusResolver
11
+ }
@@ -0,0 +1,25 @@
1
+ import { getRepository, SelectQueryBuilder } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { getPermittedBizplaceIds } from '@things-factory/biz-base'
5
+ import { ReleaseGood } from '@things-factory/sales-base'
6
+ import { buildQuery, Domain, ListParam } from '@things-factory/shell'
7
+
8
+ export const releaseGoodsByStatusResolver = {
9
+ async releaseGoodsByStatus(_: any, params: ListParam, context: any) {
10
+ const { domain, user }: { domain: Domain; user: User } = context.state
11
+
12
+ if (!params.filters.find((filter: any) => filter.name === 'bizplace')) {
13
+ params.filters.push({
14
+ name: 'bizplaceId',
15
+ operator: 'in',
16
+ value: await getPermittedBizplaceIds(domain, user),
17
+ relation: false
18
+ })
19
+ }
20
+
21
+ const qb: SelectQueryBuilder<ReleaseGood> = getRepository(ReleaseGood).createQueryBuilder('rg')
22
+ buildQuery(qb, params, context)
23
+ return qb.select('rg.status', 'status').addSelect('COUNT(*) AS count').groupBy('rg.status').getRawMany()
24
+ }
25
+ }
@@ -1,10 +1,18 @@
1
- import * as OpaMenu from './opa-menu'
2
1
  import * as BoardSetting from './board-setting'
3
2
  import * as CustomElccl from './custom/elccl'
4
3
  import * as CustomKimeda from './custom/kimeda'
4
+ import * as Dashboard from './dashboard'
5
5
  import * as Extra from './extra'
6
+ import * as OpaMenu from './opa-menu'
6
7
  import * as Reports from './reports'
7
8
 
8
- export const queries = [OpaMenu.Query, BoardSetting.Query, CustomElccl.Query, CustomKimeda.Query, Reports.Query]
9
+ export const queries = [
10
+ BoardSetting.Query,
11
+ CustomElccl.Query,
12
+ CustomKimeda.Query,
13
+ Dashboard.Query,
14
+ OpaMenu.Query,
15
+ Reports.Query
16
+ ]
9
17
 
10
18
  export const mutations = [Extra.Mutation]
@@ -99,7 +99,8 @@ export const outboundOrderDetailsReport = {
99
99
  left join worksheets w3 on w3.release_good_id = rg.id and w2."type" ='LOADING'
100
100
  left join delivery_orders do2 on do2.id = oi.delivery_order_id
101
101
  left join contact_points cp on cp.id = do2.contact_point_ref_id
102
- left join marketplace_orders mo on mo.release_order_id::uuid = rg.id
102
+ left join marketplace_orders mo on mo.release_order_id::uuid = rg.id
103
+ where oi.status <> 'REPLACED'
103
104
  order by rg.name, p.sku
104
105
  ) src
105
106
  where 1=1
@@ -0,0 +1,9 @@
1
+ import { OrderStatusCounter } from './order-status-counter'
2
+
3
+ export const Query = /* GraphQL */ `
4
+ arrivalNoticesByStatus(filters: [Filter]): [OrderStatusCounter] @transaction
5
+ collectionOrdersByStatus(filters: [Filter]): [OrderStatusCounter] @transaction
6
+ deliveryOrdersByStatus(filters: [Filter]): [OrderStatusCounter] @transaction
7
+ releaseGoodsByStatus(filters: [Filter]): [OrderStatusCounter] @transaction
8
+ `
9
+ export const Types = [OrderStatusCounter]
@@ -0,0 +1,8 @@
1
+ import gql from 'graphql-tag'
2
+
3
+ export const OrderStatusCounter = gql`
4
+ type OrderStatusCounter {
5
+ status: String
6
+ count: Int
7
+ }
8
+ `
@@ -1,12 +1,26 @@
1
- import * as OpaMenu from './opa-menu'
2
1
  import * as BoardSetting from './board-setting'
3
2
  import * as CustomElccl from './custom/elccl'
4
3
  import * as CustomKimeda from './custom/kimeda'
4
+ import * as Dashboard from './dashboard'
5
5
  import * as Extra from './extra'
6
+ import * as OpaMenu from './opa-menu'
6
7
  import * as Reports from './reports'
7
8
 
8
- export const queries = [OpaMenu.Query, BoardSetting.Query, CustomElccl.Query, CustomKimeda.Query, Reports.Query]
9
+ export const queries = [
10
+ BoardSetting.Query,
11
+ CustomElccl.Query,
12
+ CustomKimeda.Query,
13
+ Dashboard.Query,
14
+ OpaMenu.Query,
15
+ Reports.Query
16
+ ]
9
17
 
10
18
  export const mutations = [Extra.Mutation]
11
19
 
12
- export const types = [...OpaMenu.Types, ...BoardSetting.Types, ...CustomElccl.Types, ...Reports.Types]
20
+ export const types = [
21
+ ...BoardSetting.Types,
22
+ ...CustomElccl.Types,
23
+ ...Dashboard.Types,
24
+ ...OpaMenu.Types,
25
+ ...Reports.Types
26
+ ]
@@ -207,6 +207,10 @@ export default {
207
207
  tagname: 'return-order-assign-buffer-location',
208
208
  page: 'return_order_assign_buffer_location'
209
209
  },
210
+ {
211
+ tagname: 'bulk-print-packing-list',
212
+ page: 'bulk_print_packing_list'
213
+ },
210
214
  /**
211
215
  * Billing Menus Section
212
216
  */
@@ -60,6 +60,8 @@
60
60
  "button.print_airway_bill": "print airway bill",
61
61
  "button.print_invoice": "print invoice",
62
62
  "button.print_label": "print label",
63
+ "button.generate_packing_list": "generate packing list",
64
+ "button.print_packing_list": "print packing list",
63
65
  "button.print": "print",
64
66
  "button.product_changes": "product changes",
65
67
  "button.qty_checked": "qty checked",
@@ -1071,6 +1073,7 @@
1071
1073
  "text.optional": "optional",
1072
1074
  "text.order_has_been_set_to_ready_to_ship": "order has been set to ready to ship",
1073
1075
  "text.order_no_is_empty": "order no is empty",
1076
+ "text.order_status_not_qualified_for_bulk_printing_packing_list": "order status not qualified for bulk printing packing list",
1074
1077
  "text.packing_is_completed": "packing is completed",
1075
1078
  "text.pallet_is_in_progressing": "pallet is in progressing",
1076
1079
  "text.pallet_qty_is_empty": "pallet qty is empty",
@@ -1145,6 +1148,7 @@
1145
1148
  "text.select_a_shipping_provider": "select a shipping provider",
1146
1149
  "text.select_location_format": "please select location format",
1147
1150
  "text.select_one_of_unloading_list_first": "select one of unloading list first",
1151
+ "text.select_orders_to_generate_merged_packing_list_for_printing": "select orders to generate merged packing list for printing",
1148
1152
  "text.selected_inventory_not_using_carton_label": "selected inventory not using carton label",
1149
1153
  "text.selected_item_qty_is_less_than_order_release_qty": "selected item qty is less than order release qty",
1150
1154
  "text.selected_item_qty_is_more_than_order_release_qty": "selected item qty is more than order release qty",
@@ -1242,6 +1246,7 @@
1242
1246
  "title.attachment": "attachment",
1243
1247
  "title.batch_picking": "batch picking",
1244
1248
  "title.bizplace": "bizplace",
1249
+ "title.bulk_print_packing_list": "bulk print packing list",
1245
1250
  "title.carton_label": "carton label",
1246
1251
  "title.check_arrived_notice": "check arrived notice",
1247
1252
  "title.check_return_order": "check return order",
@@ -62,6 +62,8 @@
62
62
  "button.preview": "미리보기",
63
63
  "button.print_airway_bill": "운송장 출력",
64
64
  "button.print_do": "[ko]print DO",
65
+ "button.generate_picking_list": "[ko] generate packing list",
66
+ "button.print_picking_list": "[ko] print packing list",
65
67
  "button.print_invoice": "[ko] print invoice",
66
68
  "button.print_label": "라벨 출력",
67
69
  "button.print": "인쇄",
@@ -1135,6 +1137,7 @@
1135
1137
  "text.order_no_is_empty": "주문번호가 없습니다",
1136
1138
  "text.order_received": "order received",
1137
1139
  "text.order_status_has_been_updated": "has been updated",
1140
+ "text.order_status_not_qualified_for_bulk_printing_packing_list": "[ko] order status not qualified for bulk printing packing list",
1138
1141
  "text.order_type_is_empty": "order type is empty",
1139
1142
  "text.packing_is_completed": "포장이 완료 되었습니다",
1140
1143
  "text.pallet_id_is_empty": "pallet id is empty",
@@ -1235,6 +1238,7 @@
1235
1238
  "text.select_label_format": "select label format",
1236
1239
  "text.select_location_format": "로케이션 유형 선택",
1237
1240
  "text.select_one_of_unloading_list_first": "[ko]select one of unloading list first",
1241
+ "text.select_orders_to_generate_merged_packing_list_for_printing": "[ko] select orders to generate merged packing list for printing",
1238
1242
  "text.selected_inventory_not_using_carton_label": "[ko]selected inventory not using carton label",
1239
1243
  "text.selected_item_qty_is_less_than_order_release_qty": "선택된 재고의 수량이 출고 수량보다 적습니다",
1240
1244
  "text.selected_item_qty_is_more_than_order_release_qty": "선택된 재고의 수량이 출고 수량을 넘습니다",
@@ -1347,6 +1351,7 @@
1347
1351
  "title.attachment": "첨부파일",
1348
1352
  "title.batch_picking": "일괄 피킹",
1349
1353
  "title.bizplace": "사업장",
1354
+ "title.bulk_print_packing_list": "[ko] bulk print packing list",
1350
1355
  "title.carton_label": "[ko] carton label",
1351
1356
  "title.check_arrived_notice": "입고주문 확인",
1352
1357
  "title.check_return_order": "반품주문 확인",
@@ -61,6 +61,8 @@
61
61
  "button.print_airway_bill": "print airway bill",
62
62
  "button.print_do": "cetak DO",
63
63
  "button.print_invoice": "[ms] print invoice",
64
+ "button.generate_picking_list": "[ms] generate packing list",
65
+ "button.print_picking_list": "[ms] print packing list",
64
66
  "button.print_label": "cetak label",
65
67
  "button.print": "cetak",
66
68
  "button.product_changes": "perubahan produk",
@@ -1083,6 +1085,7 @@
1083
1085
  "text.online": "dalam talian",
1084
1086
  "text.optional": "pilihan",
1085
1087
  "text.order_has_been_set_to_ready_to_ship": "[ms] order has been set to ready to ship",
1088
+ "text.order_status_not_qualified_for_bulk_printing_packing_list": "[ms] order status not qualified for bulk printing packing list",
1086
1089
  "text.order_no_is_empty": "no. pesanan mssong",
1087
1090
  "text.packing_is_completed": "pembungkusan telah selesai",
1088
1091
  "text.pallet_is_in_progressing": "palet sedang diproses",
@@ -1159,6 +1162,7 @@
1159
1162
  "text.select_a_shipping_provider": "[ms]select a shipping provider",
1160
1163
  "text.select_location_format": "pilih format lokasi",
1161
1164
  "text.select_one_of_unloading_list_first": "[ms]select one of unloading list first",
1165
+ "text.select_orders_to_generate_merged_packing_list_for_printing": "[ms] select orders to generate merged packing list for printing",
1162
1166
  "text.selected_inventory_not_using_carton_label": "[ms]selected inventory not using carton label",
1163
1167
  "text.selected_item_qty_is_less_than_order_release_qty": "kuantiti barang dipilih kurang dari kuantiti dilepaskan",
1164
1168
  "text.selected_item_qty_is_more_than_order_release_qty": "kuantiti barang dipilih lebih dari kuantiti dilepaskan",
@@ -1254,6 +1258,7 @@
1254
1258
  "title.attachment": "lampiran",
1255
1259
  "title.batch_picking": "pengambilan berkumpulan",
1256
1260
  "title.bizplace": "tempat bisnes",
1261
+ "title.bulk_print_packing_list": "[ms] bulk print packing list",
1257
1262
  "title.carton_label": "[ms] carton label",
1258
1263
  "title.check_arrived_notice": "semak notis ketibaan",
1259
1264
  "title.check_return_order": "check return order",
@@ -56,10 +56,12 @@
56
56
  "button.pack": "pack",
57
57
  "button.partial_complete": "partial complete",
58
58
  "button.preview": "preview",
59
- "button.print_airway_bill": "print airway bill",
59
+ "button.print": "print",
60
60
  "button.print_invoice": "[zh] print invoice",
61
+ "button.generate_picking_list": "[zh] generate packing list",
62
+ "button.print_picking_list": "[zh] print packing list",
63
+ "button.print_airway_bill": "print airway bill",
61
64
  "button.print_label": "print label",
62
- "button.print": "print",
63
65
  "button.product_changes": "[zh]product changes",
64
66
  "button.qty_checked": "[zh]qty checked",
65
67
  "button.ready_to_ship": "[zh]ready to ship",
@@ -1051,6 +1053,7 @@
1051
1053
  "text.online": "online",
1052
1054
  "text.optional": "optional",
1053
1055
  "text.order_has_been_set_to_ready_to_ship": "[zh] order has been set to ready to ship",
1056
+ "text.order_status_not_qualified_for_bulk_printing_packing_list": "[zh] order status not qualified for bulk printing packing list",
1054
1057
  "text.order_no_is_empty": "order no is empty",
1055
1058
  "text.packing_is_completed": "packing is completed",
1056
1059
  "text.pallet_is_in_progressing": "pallet is in progressing",
@@ -1126,6 +1129,7 @@
1126
1129
  "text.select_a_shipping_provider": "[zh]select a shipping provider",
1127
1130
  "text.select_location_format": "please select location format",
1128
1131
  "text.select_one_of_unloading_list_first": "[zh]select one of unloading list first",
1132
+ "text.select_orders_to_generate_merged_packing_list_for_printing": "[zh] select orders to generate merged packing list for printing",
1129
1133
  "text.selected_inventory_not_using_carton_label": "[zh]selected inventory not using carton label",
1130
1134
  "text.selected_item_qty_is_less_than_order_release_qty": "selected item qty is less than order release qty",
1131
1135
  "text.selected_item_qty_is_more_than_order_release_qty": "selected item qty is more than order release qty",
@@ -1221,6 +1225,7 @@
1221
1225
  "title.attachment": "attachment",
1222
1226
  "title.batch_picking": "batch picking",
1223
1227
  "title.bizplace": "bizplace",
1228
+ "title.bulk_print_packing_list": "[zh] bulk print packing list",
1224
1229
  "title.carton_label": "[zh] carton label",
1225
1230
  "title.check_arrived_notice": "check arrived notice",
1226
1231
  "title.check_return_order": "check return order",