@things-factory/operato-wms 5.0.13 → 6.0.0-alpha.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.
Files changed (206) hide show
  1. package/client/pages/bulk-operation/bulk-operation.js +96 -8
  2. package/client/pages/bulk-operation/validate-gan-popup.js +37 -27
  3. package/client/pages/bulk-operation/validate-ro-popup.js +40 -0
  4. package/client/pages/components/select-inventory-popup.js +633 -0
  5. package/client/pages/constants/order.js +2 -1
  6. package/client/pages/inbound/pallet-label-popup.js +2 -0
  7. package/client/pages/inbound/select-product-batch.js +7 -1
  8. package/client/pages/inbound/undo-unload-popup.js +37 -21
  9. package/client/pages/inbound/unload-product.js +147 -59
  10. package/client/pages/inbound/worksheet-putaway.js +1 -1
  11. package/client/pages/inbound/worksheet-unloading.js +11 -7
  12. package/client/pages/inventory/inventory-adjustment.js +261 -238
  13. package/client/pages/inventory/inventory-by-product-detail.js +99 -92
  14. package/client/pages/inventory/inventory-by-product.js +170 -68
  15. package/client/pages/inventory/onhand-inventory.js +10 -12
  16. package/client/pages/inventory/serial-number-list-popup.js +36 -5
  17. package/client/pages/inventory-check/inspecting-product.js +1 -1
  18. package/client/pages/manifest/create-loading-manifest.js +47 -22
  19. package/client/pages/manifest/dispatcher-verification-popup.js +24 -13
  20. package/client/pages/manifest/loading-manifest-detail.js +311 -46
  21. package/client/pages/manifest/loading-manifest-list.js +86 -13
  22. package/client/pages/order/arrival-notice/arrival-notice-detail.js +305 -52
  23. package/client/pages/order/arrival-notice/arrival-notice-list.js +20 -1
  24. package/client/pages/order/arrival-notice/create-arrival-notice.js +2 -2
  25. package/client/pages/order/goods-received-note/received-note-detail.js +187 -15
  26. package/client/pages/order/release-order/b2b/b2b-order-list.js +76 -80
  27. package/client/pages/order/release-order/b2c/b2c-order-requests.js +148 -123
  28. package/client/pages/order/release-order/batch-picking-popup.js +11 -0
  29. package/client/pages/order/release-order/create-release-order.js +762 -250
  30. package/client/pages/order/release-order/release-extra-product-popup.js +10 -3
  31. package/client/pages/order/release-order/release-order-detail.js +897 -215
  32. package/client/pages/order/transport-order/delivery-note-popup.js +1050 -107
  33. package/client/pages/order/transport-order/print-delivery-note.js +214 -33
  34. package/client/pages/order/transport-order/upload-delivery-note.js +6 -4
  35. package/client/pages/order/transport-order/view-delivery-note.js +0 -1
  36. package/client/pages/outbound/generate-worksheet-popup.js +374 -0
  37. package/client/pages/outbound/inventory-reassign-popup.js +1097 -0
  38. package/client/pages/outbound/loading-product.js +88 -78
  39. package/client/pages/outbound/merged-outbound-worksheet.js +1 -1
  40. package/client/pages/outbound/packing-product.js +193 -82
  41. package/client/pages/outbound/packing-worksheet-list.js +10 -9
  42. package/client/pages/outbound/picking-product.js +979 -905
  43. package/client/pages/outbound/route-label-popup.js +283 -191
  44. package/client/pages/outbound/serial-number-popup.js +1 -0
  45. package/client/pages/outbound/sorting-product.js +12 -12
  46. package/client/pages/outbound/worksheet-batch-picking.js +39 -5
  47. package/client/pages/outbound/worksheet-packing.js +17 -4
  48. package/client/pages/outbound/worksheet-picking.js +45 -6
  49. package/client/pages/report/inbound-serial-number-report.js +86 -9
  50. package/client/pages/report/inventory-report.js +10 -0
  51. package/client/pages/report/inventory-summary-report.js +28 -19
  52. package/client/pages/report/outbound-order-details-report.js +204 -43
  53. package/client/pages/report/outbound-serial-number-report.js +87 -9
  54. package/client/pages/report/release-inventory-report.js +503 -0
  55. package/client/route.js +5 -0
  56. package/client/util/index.js +2 -0
  57. package/client/util/page-settings.js +43 -0
  58. package/client/util/toast.js +10 -0
  59. package/dist-server/graphql/resolvers/board-setting/board-settings.js +3 -3
  60. package/dist-server/graphql/resolvers/board-setting/board-settings.js.map +1 -1
  61. package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-collection-report.js +2 -2
  62. package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-collection-report.js.map +1 -1
  63. package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-order-inventory-report.js +1 -1
  64. package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-order-inventory-report.js.map +1 -1
  65. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-pallet-detail-report.js +2 -2
  66. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-pallet-detail-report.js.map +1 -1
  67. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.js +9 -10
  68. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.js.map +1 -1
  69. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js +2 -2
  70. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js.map +1 -1
  71. package/dist-server/graphql/resolvers/custom/elccl/elccl-onhand-inventory-counter.js +6 -4
  72. package/dist-server/graphql/resolvers/custom/elccl/elccl-onhand-inventory-counter.js.map +1 -1
  73. package/dist-server/graphql/resolvers/custom/kimeda/kimeda-onhand-inventory-counter.js +6 -4
  74. package/dist-server/graphql/resolvers/custom/kimeda/kimeda-onhand-inventory-counter.js.map +1 -1
  75. package/dist-server/graphql/resolvers/dashboard/arrival-notices-by-status.js +21 -10
  76. package/dist-server/graphql/resolvers/dashboard/arrival-notices-by-status.js.map +1 -1
  77. package/dist-server/graphql/resolvers/dashboard/collection-orders-by-status.js +1 -2
  78. package/dist-server/graphql/resolvers/dashboard/collection-orders-by-status.js.map +1 -1
  79. package/dist-server/graphql/resolvers/dashboard/delivery-orders-by-status.js +1 -2
  80. package/dist-server/graphql/resolvers/dashboard/delivery-orders-by-status.js.map +1 -1
  81. package/dist-server/graphql/resolvers/dashboard/index.js +2 -1
  82. package/dist-server/graphql/resolvers/dashboard/index.js.map +1 -1
  83. package/dist-server/graphql/resolvers/dashboard/inventory-expiry-monitor.js +17 -1
  84. package/dist-server/graphql/resolvers/dashboard/inventory-expiry-monitor.js.map +1 -1
  85. package/dist-server/graphql/resolvers/dashboard/outbound-order-by-status.js +113 -75
  86. package/dist-server/graphql/resolvers/dashboard/outbound-order-by-status.js.map +1 -1
  87. package/dist-server/graphql/resolvers/dashboard/release-goods-by-status.js +21 -10
  88. package/dist-server/graphql/resolvers/dashboard/release-goods-by-status.js.map +1 -1
  89. package/dist-server/graphql/resolvers/dashboard/unit-inbounded-outbounded.js +56 -0
  90. package/dist-server/graphql/resolvers/dashboard/unit-inbounded-outbounded.js.map +1 -0
  91. package/dist-server/graphql/resolvers/index.js +5 -4
  92. package/dist-server/graphql/resolvers/index.js.map +1 -1
  93. package/dist-server/graphql/resolvers/inventory-comparison/inventory-comparison-list.js.map +1 -1
  94. package/dist-server/graphql/resolvers/opa-menu/opa-menus.js +8 -7
  95. package/dist-server/graphql/resolvers/opa-menu/opa-menus.js.map +1 -1
  96. package/dist-server/graphql/resolvers/{extra → other}/add-release-good-products.js +59 -8
  97. package/dist-server/graphql/resolvers/other/add-release-good-products.js.map +1 -0
  98. package/dist-server/graphql/resolvers/{extra → other}/index.js +3 -1
  99. package/dist-server/graphql/resolvers/other/index.js.map +1 -0
  100. package/dist-server/graphql/resolvers/other/page-settings.js +87 -0
  101. package/dist-server/graphql/resolvers/other/page-settings.js.map +1 -0
  102. package/dist-server/graphql/resolvers/reports/costing-report.js +4 -4
  103. package/dist-server/graphql/resolvers/reports/costing-report.js.map +1 -1
  104. package/dist-server/graphql/resolvers/reports/inbound-order-details-report.js +3 -3
  105. package/dist-server/graphql/resolvers/reports/inbound-order-details-report.js.map +1 -1
  106. package/dist-server/graphql/resolvers/reports/inbound-serial-number-report.js +36 -7
  107. package/dist-server/graphql/resolvers/reports/inbound-serial-number-report.js.map +1 -1
  108. package/dist-server/graphql/resolvers/reports/index.js +2 -1
  109. package/dist-server/graphql/resolvers/reports/index.js.map +1 -1
  110. package/dist-server/graphql/resolvers/reports/outbound-order-details-report.js +69 -30
  111. package/dist-server/graphql/resolvers/reports/outbound-order-details-report.js.map +1 -1
  112. package/dist-server/graphql/resolvers/reports/outbound-serial-number-report.js +36 -11
  113. package/dist-server/graphql/resolvers/reports/outbound-serial-number-report.js.map +1 -1
  114. package/dist-server/graphql/resolvers/reports/product-label-report.js +3 -3
  115. package/dist-server/graphql/resolvers/reports/product-label-report.js.map +1 -1
  116. package/dist-server/graphql/resolvers/reports/release-inventory-report.js +180 -0
  117. package/dist-server/graphql/resolvers/reports/release-inventory-report.js.map +1 -0
  118. package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js +2 -2
  119. package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js.map +1 -1
  120. package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.js +1 -1
  121. package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.js.map +1 -1
  122. package/dist-server/graphql/types/dashboard/index.js +1 -0
  123. package/dist-server/graphql/types/dashboard/index.js.map +1 -1
  124. package/dist-server/graphql/types/index.js +7 -2
  125. package/dist-server/graphql/types/index.js.map +1 -1
  126. package/dist-server/graphql/types/other/index.js +19 -0
  127. package/dist-server/graphql/types/other/index.js.map +1 -0
  128. package/dist-server/graphql/types/other/page-setting.js +34 -0
  129. package/dist-server/graphql/types/other/page-setting.js.map +1 -0
  130. package/dist-server/graphql/types/reports/index.js +6 -1
  131. package/dist-server/graphql/types/reports/index.js.map +1 -1
  132. package/dist-server/graphql/types/reports/outbound-order-details-report.js +17 -1
  133. package/dist-server/graphql/types/reports/outbound-order-details-report.js.map +1 -1
  134. package/dist-server/graphql/types/reports/release-inventory-report-list.js +12 -0
  135. package/dist-server/graphql/types/reports/release-inventory-report-list.js.map +1 -0
  136. package/dist-server/graphql/types/reports/release-inventory-report.js +27 -0
  137. package/dist-server/graphql/types/reports/release-inventory-report.js.map +1 -0
  138. package/dist-server/migrations/1568858861188-SeedSetting.js +5 -6
  139. package/dist-server/migrations/1568858861188-SeedSetting.js.map +1 -1
  140. package/dist-server/migrations/1623308919899-SeedLocationRecommendSetting.js +1 -1
  141. package/dist-server/migrations/1623308919899-SeedLocationRecommendSetting.js.map +1 -1
  142. package/dist-server/migrations/1623381200659-SeedStoringRule.js +1 -1
  143. package/dist-server/migrations/1623381200659-SeedStoringRule.js.map +1 -1
  144. package/dist-server/tsconfig.tsbuildinfo +1 -1
  145. package/dist-server/utils/report-query-util.js +5 -2
  146. package/dist-server/utils/report-query-util.js.map +1 -1
  147. package/helps/release-note.ko.md +8 -20
  148. package/helps/release-note.md +8 -20
  149. package/helps/release-note.ms.md +8 -20
  150. package/helps/release-note.zh.md +8 -20
  151. package/package.json +42 -42
  152. package/server/graphql/resolvers/board-setting/board-settings.ts +4 -6
  153. package/server/graphql/resolvers/custom/elccl/elccl-daily-collection-report.ts +4 -5
  154. package/server/graphql/resolvers/custom/elccl/elccl-daily-order-inventory-report.ts +9 -10
  155. package/server/graphql/resolvers/custom/elccl/elccl-inventory-history-pallet-detail-report.ts +4 -5
  156. package/server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.ts +17 -19
  157. package/server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.ts +10 -8
  158. package/server/graphql/resolvers/custom/elccl/elccl-onhand-inventory-counter.ts +9 -9
  159. package/server/graphql/resolvers/custom/kimeda/kimeda-onhand-inventory-counter.ts +9 -9
  160. package/server/graphql/resolvers/dashboard/arrival-notices-by-status.ts +23 -14
  161. package/server/graphql/resolvers/dashboard/collection-orders-by-status.ts +4 -5
  162. package/server/graphql/resolvers/dashboard/delivery-orders-by-status.ts +4 -5
  163. package/server/graphql/resolvers/dashboard/index.ts +3 -1
  164. package/server/graphql/resolvers/dashboard/inventory-expiry-monitor.ts +18 -6
  165. package/server/graphql/resolvers/dashboard/outbound-order-by-status.ts +114 -81
  166. package/server/graphql/resolvers/dashboard/release-goods-by-status.ts +23 -14
  167. package/server/graphql/resolvers/dashboard/unit-inbounded-outbounded.ts +61 -0
  168. package/server/graphql/resolvers/index.ts +5 -4
  169. package/server/graphql/resolvers/inventory-comparison/inventory-comparison-list.ts +11 -9
  170. package/server/graphql/resolvers/opa-menu/opa-menus.ts +7 -6
  171. package/server/graphql/resolvers/{extra → other}/add-release-good-products.ts +73 -12
  172. package/server/graphql/resolvers/other/index.ts +10 -0
  173. package/server/graphql/resolvers/other/page-settings.ts +105 -0
  174. package/server/graphql/resolvers/reports/costing-report.ts +8 -10
  175. package/server/graphql/resolvers/reports/inbound-order-details-report.ts +7 -9
  176. package/server/graphql/resolvers/reports/inbound-serial-number-report.ts +41 -13
  177. package/server/graphql/resolvers/reports/index.ts +3 -1
  178. package/server/graphql/resolvers/reports/outbound-order-details-report.ts +76 -38
  179. package/server/graphql/resolvers/reports/outbound-serial-number-report.ts +42 -18
  180. package/server/graphql/resolvers/reports/product-label-report.ts +4 -6
  181. package/server/graphql/resolvers/reports/release-inventory-report.ts +201 -0
  182. package/server/graphql/resolvers/shipping-provider/shipping-providers.ts +3 -5
  183. package/server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.ts +10 -10
  184. package/server/graphql/types/dashboard/index.ts +1 -0
  185. package/server/graphql/types/index.ts +8 -2
  186. package/server/graphql/types/other/index.ts +19 -0
  187. package/server/graphql/types/other/page-setting.ts +33 -0
  188. package/server/graphql/types/reports/index.ts +6 -1
  189. package/server/graphql/types/reports/outbound-order-details-report.ts +17 -1
  190. package/server/graphql/types/reports/release-inventory-report-list.ts +8 -0
  191. package/server/graphql/types/reports/release-inventory-report.ts +23 -0
  192. package/server/migrations/1568858861188-SeedSetting.ts +4 -4
  193. package/server/migrations/1623308919899-SeedLocationRecommendSetting.ts +3 -2
  194. package/server/migrations/1623381200659-SeedStoringRule.ts +3 -2
  195. package/server/utils/report-query-util.ts +5 -2
  196. package/things-factory.config.js +4 -0
  197. package/translations/en.json +148 -27
  198. package/translations/ko.json +185 -105
  199. package/translations/ms.json +183 -98
  200. package/translations/zh.json +197 -112
  201. package/dist-server/graphql/resolvers/extra/add-release-good-products.js.map +0 -1
  202. package/dist-server/graphql/resolvers/extra/index.js.map +0 -1
  203. package/dist-server/graphql/types/extra/index.js +0 -11
  204. package/dist-server/graphql/types/extra/index.js.map +0 -1
  205. package/server/graphql/resolvers/extra/index.ts +0 -5
  206. package/server/graphql/types/extra/index.ts +0 -7
@@ -11,6 +11,7 @@ import './view-product-changes-popup'
11
11
  import gql from 'graphql-tag'
12
12
  import { css, html } from 'lit-element'
13
13
 
14
+ import { getCodeByName } from '@things-factory/code-base'
14
15
  import { MultiColumnFormStyles } from '@things-factory/form-ui'
15
16
  import { getRenderer } from '@things-factory/grist-ui'
16
17
  import { i18next, localize } from '@things-factory/i18n-base'
@@ -43,6 +44,9 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
43
44
  _crossDocking: Boolean,
44
45
  _releaseGood: Object,
45
46
  _importCargo: Boolean,
47
+ _warehouseTransport: Boolean,
48
+ _enableTransportationServiceSetting: Boolean,
49
+ _importedOrder: Boolean,
46
50
  _hasContainer: Boolean,
47
51
  _looseItem: Boolean,
48
52
  _status: String,
@@ -53,13 +57,16 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
53
57
  _vasExpanded: Boolean,
54
58
  _enableCartonLabel: Boolean,
55
59
  _strictProductSelection: Boolean,
60
+ _ganProcessingSetting: String,
61
+ containerSizes: Array,
56
62
  isUserBelongsDomain: Boolean,
57
63
  data: Object,
58
64
  productGristConfig: Object,
59
65
  vasGristConfig: Object,
60
66
  productData: Object,
61
67
  vasData: Object,
62
- arrivalNoticeId: String
68
+ arrivalNoticeId: String,
69
+ _disableTransport: Boolean
63
70
  }
64
71
  }
65
72
 
@@ -184,6 +191,12 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
184
191
  ]
185
192
 
186
193
  if (this._status === ORDER_STATUS.PENDING.value) {
194
+ actions.push({
195
+ title: i18next.t('button.update_order_details'),
196
+ action: this._updateArrivalNotice.bind(this),
197
+ ...CommonButtonStyles.add
198
+ })
199
+
187
200
  actions.push({
188
201
  title: i18next.t('button.delete'),
189
202
  action: this._deleteArrivalNotice.bind(this),
@@ -206,11 +219,18 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
206
219
 
207
220
  if (this.isUserBelongsDomain) {
208
221
  if (this._status === ORDER_STATUS.PROCESSING.value || this._status === ORDER_STATUS.READY_TO_UNLOAD.value) {
209
- actions.push({
210
- title: i18next.t('button.edit_product'),
211
- action: this.openEditProductPopup.bind(this),
212
- ...CommonButtonStyles.add
213
- })
222
+ actions.push(
223
+ {
224
+ title: i18next.t('button.update_order_details'),
225
+ action: this._updateArrivalNotice.bind(this),
226
+ ...CommonButtonStyles.add
227
+ },
228
+ {
229
+ title: i18next.t('button.edit_product'),
230
+ action: this.openEditProductPopup.bind(this),
231
+ ...CommonButtonStyles.add
232
+ }
233
+ )
214
234
 
215
235
  if (this._enableCartonLabel) {
216
236
  actions.push({
@@ -228,6 +248,11 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
228
248
  } else if (this._status === ORDER_STATUS.PENDING_RECEIVE.value) {
229
249
  titleName = i18next.t('title.receive_arrival_notice')
230
250
  actions.push(
251
+ {
252
+ title: i18next.t('button.update_order_details'),
253
+ action: this._updateArrivalNotice.bind(this),
254
+ ...CommonButtonStyles.add
255
+ },
231
256
  {
232
257
  title: i18next.t('button.reject'),
233
258
  action: this._rejectArrivalNotice.bind(this),
@@ -241,18 +266,32 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
241
266
  )
242
267
  } else if (this._status === ORDER_STATUS.INTRANSIT.value) {
243
268
  titleName = i18next.t('title.check_arrived_notice')
244
- actions.push({
245
- title: i18next.t('button.arrived'),
246
- action: this._checkArrivedNotice.bind(this),
247
- ...CommonButtonStyles.arrived
248
- })
269
+ actions.push(
270
+ {
271
+ title: i18next.t('button.update_order_details'),
272
+ action: this._updateArrivalNotice.bind(this),
273
+ ...CommonButtonStyles.add
274
+ },
275
+ {
276
+ title: i18next.t('button.arrived'),
277
+ action: this._checkArrivedNotice.bind(this),
278
+ ...CommonButtonStyles.arrived
279
+ }
280
+ )
249
281
  } else if (this._status === ORDER_STATUS.ARRIVED.value) {
250
282
  titleName = i18next.t('title.assign_warehouse')
251
- actions.push({
252
- title: i18next.t('button.assign_warehouse'),
253
- action: this._assignBufferLocation.bind(this),
254
- ...CommonButtonStyles.warehouse
255
- })
283
+ actions.push(
284
+ {
285
+ title: i18next.t('button.update_order_details'),
286
+ action: this._updateArrivalNotice.bind(this),
287
+ ...CommonButtonStyles.add
288
+ },
289
+ {
290
+ title: i18next.t('button.assign_warehouse'),
291
+ action: this._assignBufferLocation.bind(this),
292
+ ...CommonButtonStyles.warehouse
293
+ }
294
+ )
256
295
  this._showAssignWarehouse = true
257
296
  } else if (
258
297
  this._status === ORDER_STATUS.PENDING_APPROVAL.value &&
@@ -261,10 +300,23 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
261
300
  product.status === ORDER_PRODUCT_STATUS.ADDED.value || product.status === ORDER_PRODUCT_STATUS.EDITED.value
262
301
  )
263
302
  ) {
303
+ actions.push(
304
+ {
305
+ title: i18next.t('button.update_order_details'),
306
+ action: this._updateArrivalNotice.bind(this),
307
+ ...CommonButtonStyles.add
308
+ },
309
+ {
310
+ title: i18next.t('button.product_changes'),
311
+ action: this.openProductChangesPopup.bind(this),
312
+ ...CommonButtonStyles.inspect
313
+ }
314
+ )
315
+ } else if (this._status === ORDER_STATUS.PUTTING_AWAY.value) {
264
316
  actions.push({
265
- title: i18next.t('button.product_changes'),
266
- action: this.openProductChangesPopup.bind(this),
267
- ...CommonButtonStyles.inspect
317
+ title: i18next.t('button.update_order_details'),
318
+ action: this._updateArrivalNotice.bind(this),
319
+ ...CommonButtonStyles.add
268
320
  })
269
321
  }
270
322
  } else {
@@ -275,11 +327,18 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
275
327
  product.status === ORDER_PRODUCT_STATUS.ADDED.value || product.status === ORDER_PRODUCT_STATUS.EDITED.value
276
328
  )
277
329
  ) {
278
- actions.push({
279
- title: i18next.t('button.inspect_changes'),
280
- action: this.openApproveProductPopup.bind(this),
281
- ...CommonButtonStyles.approve
282
- })
330
+ actions.push(
331
+ {
332
+ title: i18next.t('button.update_order_details'),
333
+ action: this._updateArrivalNotice.bind(this),
334
+ ...CommonButtonStyles.add
335
+ },
336
+ {
337
+ title: i18next.t('button.inspect_changes'),
338
+ action: this.openApproveProductPopup.bind(this),
339
+ ...CommonButtonStyles.approve
340
+ }
341
+ )
283
342
  }
284
343
 
285
344
  if (this._status !== ORDER_STATUS.PENDING.value && this._status !== ORDER_STATUS.PENDING_APPROVAL.value) {
@@ -316,27 +375,69 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
316
375
  type="checkbox"
317
376
  name="ownTransport"
318
377
  ?checked="${this._ownTransport}"
319
- @change="${e => (this._ownTransport = e.currentTarget.checked)}"
320
- disabled
378
+ @change="${e => {
379
+ this._ownTransport = e.currentTarget.checked
380
+ if (this._ownTransport) {
381
+ this._warehouseTransportInput.checked = false
382
+ this._warehouseTransport = false
383
+ } else {
384
+ this._warehouseTransportInput.checked = true
385
+ this._warehouseTransport = true
386
+ }
387
+ this._validateTransport()
388
+ }}"
389
+ ?disabled=${this.determineStatus() || this._disableTransport}
321
390
  />
322
- <label>${i18next.t('label.own_transport')}</label>
391
+ <label for="ownTransport">${i18next.t('label.own_transport')}</label>
323
392
 
324
393
  <input
325
394
  id="warehouseTransport"
326
395
  type="checkbox"
327
396
  name="warehouseTransport"
328
397
  ?checked="${!this._ownTransport}"
329
- disabled
398
+ ?disabled=${this.determineStatus() || this._disableTransport}
399
+ @change="${e => {
400
+ this._warehouseTransport = e.currentTarget.checked
401
+ if (this._warehouseTransport) {
402
+ this._ownTransportInput.checked = false
403
+ this._ownTransport = false
404
+ } else {
405
+ this._ownTransportInput.checked = true
406
+ this._ownTransport = true
407
+ }
408
+ this._validateTransport()
409
+ }}"
330
410
  />
331
- <label>${i18next.t('label.warehouse_transport')}</label>
411
+ <label for="warehouseTransport">${i18next.t('label.warehouse_transport')}</label>
332
412
 
333
- <input id="container" type="checkbox" name="container" ?checked="${this._hasContainer}" disabled />
413
+ <input
414
+ id="container"
415
+ type="checkbox"
416
+ name="container"
417
+ ?checked="${this._hasContainer}"
418
+ @change="${e => {
419
+ this._hasContainer = e.currentTarget.checked
420
+ }}"
421
+ ?disabled=${this.determineStatus()}
422
+ />
334
423
  <label for="container">${i18next.t('label.container')}</label>
335
424
 
336
- <input id="looseItem" type="checkbox" name="looseItem" ?checked="${this._looseItem}" disabled />
425
+ <input
426
+ id="looseItem"
427
+ type="checkbox"
428
+ name="looseItem"
429
+ ?checked="${this._looseItem}"
430
+ ?disabled=${this.determineStatus()}
431
+ />
337
432
  <label for="looseItem">${i18next.t('label.loose_item')}</label>
338
433
 
339
- <input id="importedOrder" type="checkbox" name="importCargo" ?checked="${this._importedOrder}" disabled />
434
+ <input
435
+ id="importedOrder"
436
+ type="checkbox"
437
+ name="importCargo"
438
+ ?checked="${this._importedOrder}"
439
+ ?disabled=${this.determineStatus()}
440
+ />
340
441
  <label for="importedOrder">${i18next.t('label.import_cargo')}</label>
341
442
 
342
443
  ${this._crossDocking
@@ -357,28 +458,47 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
357
458
  <input name="bizplaceName" value="${this._bizplaceName}" readonly />
358
459
 
359
460
  <label>${i18next.t('label.ref_no')}${`1`}</label>
360
- <input name="refNo" readonly />
461
+ <input name="refNo" ?readonly=${this.determineStatus()} />
361
462
 
362
463
  <label>${i18next.t('label.ref_no')}${`2`}</label>
363
- <input name="refNo2" readonly />
464
+ <input name="refNo2" ?readonly=${this.determineStatus()} />
364
465
 
365
466
  <label>${i18next.t('label.ref_no')}${`3`}</label>
366
- <input name="refNo3" readonly />
467
+ <input name="refNo3" ?readonly=${this.determineStatus()} />
367
468
 
368
469
  <label>${i18next.t('label.eta_date')}</label>
369
- <input name="etaDate" type="date" readonly />
470
+ <input name="etaDate" type="date" disabled />
370
471
 
371
472
  <label ?hidden="${!this._ownTransport}">${i18next.t('label.do_no')}</label>
372
- <input name="deliveryOrderNo" ?hidden="${!this._ownTransport}" readonly />
473
+ <input name="deliveryOrderNo" ?hidden="${!this._ownTransport}" ?readonly=${this.determineStatus()} />
373
474
 
374
475
  <label ?hidden="${this._importedOrder || !this._ownTransport}">${i18next.t('label.truck_no')}</label>
375
- <input ?hidden="${this._importedOrder || !this._ownTransport}" name="truckNo" readonly />
476
+ <input
477
+ ?hidden="${this._importedOrder || !this._ownTransport}"
478
+ name="truckNo"
479
+ ?readonly=${this.determineStatus()}
480
+ />
376
481
 
377
482
  <label ?hidden="${!this._hasContainer}">${i18next.t('label.container_no')}</label>
378
- <input ?hidden="${!this._hasContainer}" type="text" name="containerNo" readonly />
483
+ <input
484
+ ?hidden="${!this._hasContainer}"
485
+ type="text"
486
+ name="containerNo"
487
+ ?readonly=${this.determineStatus()}
488
+ />
379
489
 
380
- <label>${i18next.t('label.container_size')}</label>
381
- <input type="text" name="containerSize" readonly />
490
+ <label ?hidden="${!this._hasContainer}">${i18next.t('label.container_size')}</label>
491
+ <select name="containerSize" ?hidden="${!this._hasContainer}" ?disabled=${this.determineStatus()}>
492
+ <option value="">--${i18next.t('label.please_select_a_container_size')}--</option>
493
+ ${(this.containerSizes || []).map(
494
+ containerSize =>
495
+ html`
496
+ <option value="${containerSize && containerSize.name}">
497
+ ${containerSize && containerSize.name}
498
+ </option>
499
+ `
500
+ )}
501
+ </select>
382
502
 
383
503
  <label>${i18next.t('label.status')}</label>
384
504
  <select name="status" disabled>
@@ -458,12 +578,16 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
458
578
  constructor() {
459
579
  super()
460
580
  this.productData = { records: [] }
581
+ this.containerSizes = []
461
582
  this._downloadable = true
462
583
  this._attachments = []
463
584
  this.vasData = { records: [] }
464
585
  this._showAssignWarehouse = false
465
586
  this._vasExpanded = false
466
587
  this._strictProductSelection = false
588
+ this._disableTransport = false
589
+ this._importedOrder = false
590
+ this._enableTransportationServiceSetting = false
467
591
  }
468
592
 
469
593
  get arrivalNoticeForm() {
@@ -474,6 +598,14 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
474
598
  return this.shadowRoot.querySelector('data-grist#product-grist')
475
599
  }
476
600
 
601
+ get _warehouseTransportInput() {
602
+ return this.shadowRoot.querySelector('input[name=warehouseTransport]')
603
+ }
604
+
605
+ get _ownTransportInput() {
606
+ return this.shadowRoot.querySelector('input[name=ownTransport]')
607
+ }
608
+
477
609
  get vasGrist() {
478
610
  return this.shadowRoot.querySelector('data-grist#vas-grist')
479
611
  }
@@ -483,6 +615,8 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
483
615
  }
484
616
 
485
617
  async pageInitialized() {
618
+ this.containerSizes = await getCodeByName('CONTAINER_SIZES')
619
+ this._enableTransportationServiceSetting = await fetchSettingRule('enable-transportation-service')
486
620
  this.isUserBelongsDomain = await this._checkUserBelongsDomain()
487
621
  this.vasGristConfig = {
488
622
  list: { fields: ['set', 'targetType', 'target', 'packingType', 'qty', 'vas', 'status', 'remark'] },
@@ -758,6 +892,7 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
758
892
  id
759
893
  }
760
894
  }
895
+ container
761
896
  containerNo
762
897
  containerSize
763
898
  ownTransport
@@ -860,7 +995,7 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
860
995
 
861
996
  this.arrivalNoticeId = arrivalNotice.id
862
997
  this.orderBizplace = arrivalNotice.bizplace
863
- this._hasContainer = arrivalNotice.containerNo ? true : false
998
+ this._hasContainer = arrivalNotice.container
864
999
  this._looseItem = arrivalNotice.looseItem
865
1000
  this._ownTransport = arrivalNotice.ownTransport
866
1001
  this._crossDocking = arrivalNotice.crossDocking
@@ -898,6 +1033,7 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
898
1033
  this._enableCartonLabel = await fetchSettingRule('enable-carton-label', partnerDomainId)
899
1034
  this._strictProductSelection = await fetchSettingRule('strict-product-selection', partnerDomainId)
900
1035
  let a = this._strictProductSelection
1036
+ this._ganProcessingSetting = (await fetchSettingRule('gan-order-processing', partnerDomainId)) || '-1'
901
1037
  this.updateContext()
902
1038
  }
903
1039
  }
@@ -943,6 +1079,61 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
943
1079
  }
944
1080
  }
945
1081
 
1082
+ async _updateArrivalNotice() {
1083
+ const arrivalNoticeInfo = this._getFormInfo()
1084
+
1085
+ arrivalNoticeInfo.name = this._ganNo
1086
+ delete arrivalNoticeInfo.bizplaceName
1087
+
1088
+ if (!arrivalNoticeInfo.container) {
1089
+ arrivalNoticeInfo.containerNo = ''
1090
+ arrivalNoticeInfo.containerSize = ''
1091
+ } else if (arrivalNoticeInfo.warehouseTransport) {
1092
+ arrivalNoticeInfo.deliveryOrderNo = ''
1093
+ arrivalNoticeInfo.truckNo = ''
1094
+ }
1095
+
1096
+ delete arrivalNoticeInfo.warehouseTransport
1097
+ delete arrivalNoticeInfo['buffer-location']
1098
+
1099
+ if (this._warehouseTransport) {
1100
+ arrivalNoticeInfo.truckNo = ''
1101
+ arrivalNoticeInfo.deliveryOrderNo = ''
1102
+ }
1103
+
1104
+ const result = await CustomAlert({
1105
+ title: i18next.t('title.are_you_sure'),
1106
+ text: i18next.t('text.update_arrival_notice_details'),
1107
+ confirmButton: { text: i18next.t('button.submit') },
1108
+ cancelButton: { text: i18next.t('button.cancel') }
1109
+ })
1110
+
1111
+ if (!result.value) return
1112
+
1113
+ try {
1114
+ const response = await client.mutate({
1115
+ mutation: gql`
1116
+ mutation updateArrivalNoticeDetails($arrivalNotice: ArrivalNoticePatch!) {
1117
+ updateArrivalNoticeDetails(arrivalNotice: $arrivalNotice) {
1118
+ id
1119
+ }
1120
+ }
1121
+ `,
1122
+ variables: {
1123
+ arrivalNotice: {
1124
+ ...arrivalNoticeInfo
1125
+ }
1126
+ }
1127
+ })
1128
+ if (!response.errors) {
1129
+ this._showToast({ message: i18next.t('text.arrival_notice_details_updated') })
1130
+ await this._fetchGAN()
1131
+ }
1132
+ } catch (error) {
1133
+ this._showToast(error)
1134
+ }
1135
+ }
1136
+
946
1137
  async _deleteArrivalNotice() {
947
1138
  try {
948
1139
  let result = await CustomAlert({
@@ -1093,8 +1284,14 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
1093
1284
  })
1094
1285
 
1095
1286
  if (!response.errors) {
1096
- navigate(`arrival_notices`)
1097
- this._showToast({ message: i18next.t('text.arrival_notice_received') })
1287
+ if (this._ganProcessingSetting == '2') {
1288
+ this.pageReset()
1289
+ this._showToast({ message: i18next.t('text.arrival_notice_received') })
1290
+ this._openBufferSelector()
1291
+ } else {
1292
+ navigate(`arrival_notices`)
1293
+ this._showToast({ message: i18next.t('text.arrival_notice_received') })
1294
+ }
1098
1295
  }
1099
1296
  } catch (e) {
1100
1297
  this._showToast(e)
@@ -1160,8 +1357,8 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
1160
1357
 
1161
1358
  const response = await client.mutate({
1162
1359
  mutation: gql`
1163
- mutation generateArrivalNoticeWorksheet($arrivalNoticeNo: String!, $bufferLocation: ObjectRef!) {
1164
- generateArrivalNoticeWorksheet(arrivalNoticeNo: $arrivalNoticeNo, bufferLocation: $bufferLocation) {
1360
+ mutation generateArrivalNoticeWorksheet($arrivalNoticeNo: [String!], $bufferLocation: ObjectRef!) {
1361
+ generateArrivalNoticeWorksheet(arrivalNoticeNos: $arrivalNoticeNo, bufferLocation: $bufferLocation) {
1165
1362
  unloadingWorksheet {
1166
1363
  name
1167
1364
  }
@@ -1169,7 +1366,7 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
1169
1366
  }
1170
1367
  `,
1171
1368
  variables: {
1172
- arrivalNoticeNo: this._ganNo,
1369
+ arrivalNoticeNo: [this._ganNo],
1173
1370
  bufferLocation: { id: this.bufferLocationField.getAttribute('location-id') }
1174
1371
  }
1175
1372
  })
@@ -1188,6 +1385,25 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
1188
1385
  throw new Error(i18next.t('text.warehouse_is_not_assigned'))
1189
1386
  }
1190
1387
 
1388
+ _validateTransport() {
1389
+ //Check if warehouse provide transport
1390
+ if (!this._importedOrder) {
1391
+ if (!this._enableTransportationServiceSetting) {
1392
+ this._disableTransport = true
1393
+ this._ownTransportInput.checked = true
1394
+ this._ownTransport = true
1395
+ }
1396
+ }
1397
+
1398
+ if (this._ownTransport || this._warehouseTransport) {
1399
+ this._checkTransport = true
1400
+ this._checkTransportCrossDocking = true
1401
+ if (this._hideCrossDockingSetting) {
1402
+ this._checkTransportCrossDocking = false
1403
+ }
1404
+ }
1405
+ }
1406
+
1191
1407
  async _confirmArrivalNotice() {
1192
1408
  let result = await CustomAlert({
1193
1409
  title: i18next.t('title.are_you_sure'),
@@ -1222,8 +1438,14 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
1222
1438
  })
1223
1439
 
1224
1440
  if (!response.errors) {
1225
- this._showToast({ message: i18next.t('text.gan_confirmed') })
1226
- navigate('arrival_notices')
1441
+ if (this._ganProcessingSetting == '1') {
1442
+ this._showToast({ message: i18next.t('text.gan_confirmed') })
1443
+ this.pageReset()
1444
+ this._openBufferSelector()
1445
+ } else {
1446
+ this._showToast({ message: i18next.t('text.gan_confirmed') })
1447
+ navigate('arrival_notices')
1448
+ }
1227
1449
  }
1228
1450
  } catch (e) {
1229
1451
  this._showToast(e)
@@ -1234,11 +1456,15 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
1234
1456
  openPopup(
1235
1457
  html`
1236
1458
  <buffer-location-selector
1237
- @selected="${e => {
1459
+ @selected="${async e => {
1238
1460
  this.bufferLocationField.value = `${e.detail.name} ${
1239
1461
  e.detail.description ? `(${e.detail.description})` : ''
1240
1462
  }`
1241
1463
  this.bufferLocationField.setAttribute('location-id', e.detail.id)
1464
+
1465
+ if (this._ganProcessingSetting == '1' || this._ganProcessingSetting == '2') {
1466
+ await this._assignBufferLocation()
1467
+ }
1242
1468
  }}"
1243
1469
  ></buffer-location-selector>
1244
1470
  `,
@@ -1295,6 +1521,16 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
1295
1521
  }
1296
1522
  }
1297
1523
 
1524
+ determineStatus() {
1525
+ let status = false
1526
+
1527
+ if (ORDER_STATUS.DONE.value == this._status || ORDER_STATUS.REJECTED.value == this._status) {
1528
+ status = true
1529
+ }
1530
+
1531
+ return status
1532
+ }
1533
+
1298
1534
  async _openLotLabelPrintPopup() {
1299
1535
  await this._fetchWorksheet()
1300
1536
  let a = this.data
@@ -1308,7 +1544,7 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
1308
1544
  palletQty: record.palletQty,
1309
1545
  printQty: record.palletQty,
1310
1546
  packingType: record.packingType,
1311
- bizplace: this._bizplace
1547
+ bizplace: this._bizplaceName
1312
1548
  }
1313
1549
  })
1314
1550
  }
@@ -1320,7 +1556,7 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
1320
1556
  }
1321
1557
 
1322
1558
  _openCartonLabelPrintPopup() {
1323
- openPopup(html` <carton-label-popup .bizplaceName="${this._bizplace}"></carton-label-popup> `, {
1559
+ openPopup(html` <carton-label-popup .bizplaceName="${this._bizplaceName}"></carton-label-popup> `, {
1324
1560
  backdrop: true,
1325
1561
  size: 'small',
1326
1562
  title: i18next.t('title.carton_label')
@@ -1371,6 +1607,23 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
1371
1607
  )
1372
1608
  }
1373
1609
 
1610
+ _getFormInfo() {
1611
+ const formData = this._serializeForm(this.arrivalNoticeForm)
1612
+ delete formData.importedOrder
1613
+ return formData
1614
+ }
1615
+
1616
+ _serializeForm(form) {
1617
+ let obj = {}
1618
+ Array.from(form.querySelectorAll('input, select')).forEach(field => {
1619
+ if (!field.hasAttribute('hidden')) {
1620
+ obj[field.name] = field.type === 'checkbox' ? field.checked : field.value
1621
+ }
1622
+ })
1623
+
1624
+ return obj
1625
+ }
1626
+
1374
1627
  openProductChangesPopup() {
1375
1628
  openPopup(html` <view-product-changes-popup .data="${this.productData}"></view-product-changes-popup> `, {
1376
1629
  backdrop: true,
@@ -217,8 +217,10 @@ class ArrivalNoticeList extends localize(i18next)(PageView) {
217
217
  'status',
218
218
  'createdAt',
219
219
  'updatedAt',
220
+ 'acceptedAt',
220
221
  'acceptedBy',
221
- 'creator'
222
+ 'creator',
223
+ 'updater'
222
224
  ]
223
225
  },
224
226
  rows: { appendable: false, selectable: { multiple: true } },
@@ -342,6 +344,14 @@ class ArrivalNoticeList extends localize(i18next)(PageView) {
342
344
  sortable: true,
343
345
  width: 160
344
346
  },
347
+ {
348
+ type: 'datetime',
349
+ name: 'acceptedAt',
350
+ header: i18next.t('field.accepted_at'),
351
+ label: true,
352
+ sortable: true,
353
+ width: 160
354
+ },
345
355
  {
346
356
  type: 'datetime',
347
357
  name: 'updatedAt',
@@ -365,6 +375,14 @@ class ArrivalNoticeList extends localize(i18next)(PageView) {
365
375
  label: true,
366
376
  sortable: true,
367
377
  width: 200
378
+ },
379
+ {
380
+ type: 'object',
381
+ name: 'updater',
382
+ header: i18next.t('field.updated_by'),
383
+ label: true,
384
+ sortable: true,
385
+ width: 200
368
386
  }
369
387
  ]
370
388
  }
@@ -404,6 +422,7 @@ class ArrivalNoticeList extends localize(i18next)(PageView) {
404
422
  importCargo
405
423
  createdAt
406
424
  updatedAt
425
+ acceptedAt
407
426
  updater {
408
427
  id
409
428
  name
@@ -637,7 +637,7 @@ class CreateArrivalNotice extends localize(i18next)(PageView) {
637
637
  display: '',
638
638
  value: ''
639
639
  },
640
- ...this.packingTypes.map(type => {
640
+ ...(this.packingTypes || []).map(type => {
641
641
  return { display: type.name, value: type.name }
642
642
  })
643
643
  ]
@@ -662,7 +662,7 @@ class CreateArrivalNotice extends localize(i18next)(PageView) {
662
662
  display: '',
663
663
  value: ''
664
664
  },
665
- ...this.uomValueUnits.map(unit => {
665
+ ...(this.uomValueUnits || []).map(unit => {
666
666
  return { display: unit.name, value: unit.name }
667
667
  })
668
668
  ]