@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,7 +11,8 @@ class ReceivedNoteDetail extends localize(i18next)(PageView) {
11
11
  return {
12
12
  _grnNo: String,
13
13
  _status: String,
14
- _domainName: String
14
+ _domainName: String,
15
+ _data: Object
15
16
  }
16
17
  }
17
18
 
@@ -54,6 +55,10 @@ class ReceivedNoteDetail extends localize(i18next)(PageView) {
54
55
  return {
55
56
  title: i18next.t('title.goods_received_note_details'),
56
57
  actions,
58
+ exportable: {
59
+ name: i18next.t('title.goods_received_note_details'),
60
+ data: this._exportableData.bind(this)
61
+ },
57
62
  help: 'operato-wms/goods-received-note/received-note-detail'
58
63
  }
59
64
  }
@@ -69,8 +74,7 @@ class ReceivedNoteDetail extends localize(i18next)(PageView) {
69
74
  }
70
75
 
71
76
  if (this._grnNo) {
72
- await this._fetchGRN()
73
- await this._fetchGRNTemplate()
77
+ this._fetchGRNTemplate()
74
78
  }
75
79
 
76
80
  this.updateContext()
@@ -105,30 +109,48 @@ class ReceivedNoteDetail extends localize(i18next)(PageView) {
105
109
  }
106
110
 
107
111
  async _fetchGRN() {
112
+ var timezoneOffSet = new Date().getTimezoneOffset().toString()
113
+
108
114
  if (!this._grnNo) return
109
115
  const response = await client.query({
110
116
  query: gql`
111
- query goodsReceivalNote($name: String!) {
112
- goodsReceivalNote(name: $name) {
113
- id
114
- name
115
- status
116
- domain {
117
- id
118
- name
117
+ query goodsReceivalNote($name: String!, $timezoneOffSet: String!) {
118
+ goodsReceivalNote(name: $name, timezoneOffSet: $timezoneOffSet) {
119
+ grnNo
120
+ ganNo
121
+ refGANNo
122
+ refGANNo2
123
+ refGANNo3
124
+ companyDomain
125
+ supplier
126
+ date
127
+ productLists {
128
+ po
129
+ productSKU
130
+ productName
131
+ productType
132
+ productBatch
133
+ expectedQty
134
+ actualQty
135
+ actualUomValue
136
+ productUom
137
+ expiryDate
138
+ manufactureDate
139
+ remark
140
+ batchNo
141
+ unitPrice
119
142
  }
120
143
  }
121
144
  }
122
145
  `,
123
146
  variables: {
124
- name: this._grnNo
147
+ name: this._grnNo,
148
+ timezoneOffSet: timezoneOffSet
125
149
  }
126
150
  })
127
151
 
128
152
  if (!response.errors) {
129
- const grn = response.data.goodsReceivalNote
130
- this._status = grn.status
131
- this._domainName = grn.domain.name
153
+ return response.data.goodsReceivalNote
132
154
  }
133
155
  }
134
156
 
@@ -166,6 +188,156 @@ class ReceivedNoteDetail extends localize(i18next)(PageView) {
166
188
  // }
167
189
  // }
168
190
 
191
+ async _exportableData() {
192
+ const { grnNo, ganNo, refGANNo, refGANNo2, refGANNo3, companyDomain, supplier, date, productLists } =
193
+ await this._fetchGRN()
194
+
195
+ const exportData = productLists.map(res => {
196
+ return {
197
+ grnNo,
198
+ ganNo,
199
+ refGANNo,
200
+ refGANNo2,
201
+ refGANNo3,
202
+ companyDomain,
203
+ supplier,
204
+ date,
205
+ ...res
206
+ }
207
+ })
208
+
209
+ const headerSetting = [
210
+ {
211
+ header: i18next.t('field.grn'),
212
+ key: 'grnNo',
213
+ width: 25,
214
+ type: 'string'
215
+ },
216
+ {
217
+ header: i18next.t('field.gan'),
218
+ key: 'ganNo',
219
+ width: 25,
220
+ type: 'string'
221
+ },
222
+ {
223
+ header: i18next.t('field.po'),
224
+ key: 'po',
225
+ width: 25,
226
+ type: 'string'
227
+ },
228
+ {
229
+ header: i18next.t('field.ref_no'),
230
+ key: 'refGANNo',
231
+ width: 25,
232
+ type: 'string'
233
+ },
234
+ {
235
+ header: i18next.t('field.ref_no_2'),
236
+ key: 'refGANNo2',
237
+ width: 25,
238
+ type: 'string'
239
+ },
240
+ {
241
+ header: i18next.t('field.ref_no_3'),
242
+ key: 'refGANNo3',
243
+ width: 25,
244
+ type: 'string'
245
+ },
246
+ {
247
+ header: i18next.t('field.company'),
248
+ key: 'companyDomain',
249
+ width: 25,
250
+ type: 'string'
251
+ },
252
+ {
253
+ header: i18next.t('field.supplier'),
254
+ key: 'supplier',
255
+ width: 25,
256
+ type: 'string'
257
+ },
258
+ {
259
+ header: i18next.t('field.date'),
260
+ key: 'date',
261
+ width: 25,
262
+ type: 'string'
263
+ },
264
+ {
265
+ header: i18next.t('field.batch_no'),
266
+ key: 'batchNo',
267
+ width: 25,
268
+ type: 'string'
269
+ },
270
+ {
271
+ header: i18next.t('field.batch_no'),
272
+ key: 'productSKU',
273
+ width: 25,
274
+ type: 'string'
275
+ },
276
+ {
277
+ header: i18next.t('field.product_name'),
278
+ key: 'productName',
279
+ width: 25,
280
+ type: 'string'
281
+ },
282
+ {
283
+ header: i18next.t('field.packing_type'),
284
+ key: 'productType',
285
+ width: 25,
286
+ type: 'string'
287
+ },
288
+ {
289
+ header: i18next.t('field.expected_qty'),
290
+ key: 'expectedQty',
291
+ width: 25,
292
+ type: 'string'
293
+ },
294
+ {
295
+ header: i18next.t('field.actual_qty'),
296
+ key: 'actualQty',
297
+ width: 25,
298
+ type: 'string'
299
+ },
300
+ {
301
+ header: i18next.t('field.actual_uom_value'),
302
+ key: 'actualUomValue',
303
+ width: 25,
304
+ type: 'string'
305
+ },
306
+ {
307
+ header: i18next.t('field.uom'),
308
+ key: 'productUom',
309
+ width: 25,
310
+ type: 'string'
311
+ },
312
+ {
313
+ header: i18next.t('field.expiry_date'),
314
+ key: 'expiryDate',
315
+ width: 25,
316
+ type: 'string'
317
+ },
318
+ {
319
+ header: i18next.t('field.manufacture_date'),
320
+ key: 'manufactureDate',
321
+ width: 25,
322
+ type: 'string'
323
+ },
324
+ {
325
+ header: i18next.t('field.unit_price'),
326
+ key: 'unitPrice',
327
+ width: 25,
328
+ type: 'number'
329
+ },
330
+ {
331
+ header: i18next.t('field.remark_issues'),
332
+ key: 'remark',
333
+ width: 25,
334
+ type: 'string'
335
+ }
336
+ ]
337
+
338
+ return { header: headerSetting, data: exportData }
339
+ }
340
+
169
341
  _showToast({ type, message }) {
170
342
  document.dispatchEvent(
171
343
  new CustomEvent('notify', {
@@ -1,6 +1,7 @@
1
1
  import '@things-factory/form-ui'
2
2
  import '@things-factory/grist-ui'
3
3
  import '../batch-picking-popup'
4
+ import '../../../outbound/generate-worksheet-popup'
4
5
 
5
6
  import gql from 'graphql-tag'
6
7
  import { css, html } from 'lit-element'
@@ -10,7 +11,7 @@ import { i18next, localize } from '@things-factory/i18n-base'
10
11
  import { client, navigate, PageView, CustomAlert } from '@things-factory/shell'
11
12
  import { openPopup } from '@things-factory/layout-base'
12
13
  import { ScrollbarStyles, CommonButtonStyles } from '@things-factory/styles'
13
- import { isMobileDevice } from '@things-factory/utils'
14
+ import { isMobileDevice, sleep } from '@things-factory/utils'
14
15
 
15
16
  import { ORDER_STATUS } from '../../../constants'
16
17
 
@@ -65,18 +66,11 @@ class B2bOrderList extends localize(i18next)(PageView) {
65
66
  var actions = []
66
67
 
67
68
  if (this.isUserBelongsDomain) {
68
- actions.push(
69
- {
70
- title: i18next.t('button.batch_picking'),
71
- action: this._openBatchPickingPopup.bind(this),
72
- ...CommonButtonStyles.activate
73
- },
74
- {
75
- title: i18next.t('button.generate_worksheet'),
76
- action: this._generatePickingWorksheet.bind(this),
77
- ...CommonButtonStyles.activate
78
- }
79
- )
69
+ actions.push({
70
+ title: i18next.t('button.generate_worksheet'),
71
+ action: this._openGenerateWorksheetPopup.bind(this),
72
+ ...CommonButtonStyles.activate
73
+ })
80
74
  }
81
75
  return {
82
76
  title: i18next.t('title.release_orders'),
@@ -114,7 +108,7 @@ class B2bOrderList extends localize(i18next)(PageView) {
114
108
  const _bizplaces = _bizplacesReq.status == 'fulfilled' ? _bizplacesReq.value : []
115
109
  this._searchFields = [
116
110
  {
117
- label: i18next.t('field.ro'),
111
+ label: i18next.t('field.order_info'),
118
112
  name: 'name',
119
113
  type: 'text',
120
114
  props: { searchOper: 'i_like' }
@@ -142,24 +136,6 @@ class B2bOrderList extends localize(i18next)(PageView) {
142
136
  type: 'date',
143
137
  props: { searchOper: 'i_like' }
144
138
  },
145
- {
146
- label: i18next.t('field.ref_no'),
147
- name: 'refNo',
148
- type: 'text',
149
- props: { searchOper: 'i_like' }
150
- },
151
- {
152
- label: i18next.t('field.ref_no_2'),
153
- name: 'refNo2',
154
- type: 'text',
155
- props: { searchOper: 'i_like' }
156
- },
157
- {
158
- label: i18next.t('field.ref_no_3'),
159
- name: 'refNo3',
160
- type: 'text',
161
- props: { searchOper: 'i_like' }
162
- },
163
139
  {
164
140
  label: i18next.t('field.status'),
165
141
  name: 'status',
@@ -177,7 +153,7 @@ class B2bOrderList extends localize(i18next)(PageView) {
177
153
  name: 'fromDate',
178
154
  type: 'date',
179
155
  props: {
180
- searchOper: 'eq'
156
+ searchOper: 'gte'
181
157
  },
182
158
  value: (() => {
183
159
  let date = new Date()
@@ -191,7 +167,7 @@ class B2bOrderList extends localize(i18next)(PageView) {
191
167
  name: 'toDate',
192
168
  type: 'date',
193
169
  props: {
194
- searchOper: 'eq',
170
+ searchOper: 'lte',
195
171
  min: (() => {
196
172
  let date = new Date()
197
173
  date.setMonth(date.getMonth() - 6)
@@ -220,6 +196,13 @@ class B2bOrderList extends localize(i18next)(PageView) {
220
196
  type: 'checkbox',
221
197
  props: { searchOper: 'noteq' },
222
198
  attrs: ['indeterminate']
199
+ },
200
+ {
201
+ label: i18next.t('field.recall'),
202
+ name: 'recall',
203
+ type: 'checkbox',
204
+ props: { searchOper: 'eq' },
205
+ attrs: ['indeterminate']
223
206
  }
224
207
  ]
225
208
 
@@ -336,6 +319,13 @@ class B2bOrderList extends localize(i18next)(PageView) {
336
319
  imex: { header: i18next.t('field.route'), key: 'routeId', width: 20, type: 'string' },
337
320
  width: 60
338
321
  },
322
+ {
323
+ type: 'boolean',
324
+ name: 'recall',
325
+ header: i18next.t('field.recall'),
326
+ imex: { header: i18next.t('field.recall'), key: 'recall', width: 20, type: 'string' },
327
+ width: 60
328
+ },
339
329
  {
340
330
  type: 'object',
341
331
  name: 'arrivalNotice',
@@ -359,6 +349,14 @@ class B2bOrderList extends localize(i18next)(PageView) {
359
349
  sortable: true,
360
350
  width: 160
361
351
  },
352
+ {
353
+ type: 'datetime',
354
+ name: 'acceptedAt',
355
+ header: i18next.t('field.accepted_at'),
356
+ imex: { header: i18next.t('field.accepted_at'), key: 'acceptedAt', width: 30, type: 'datetime' },
357
+ sortable: true,
358
+ width: 160
359
+ },
362
360
  {
363
361
  type: 'datetime',
364
362
  name: 'updatedAt',
@@ -382,6 +380,14 @@ class B2bOrderList extends localize(i18next)(PageView) {
382
380
  imex: { header: i18next.t('field.accepted_by'), key: 'acceptedBy.name', width: 30, type: 'string' },
383
381
  sortable: true,
384
382
  width: 200
383
+ },
384
+ {
385
+ type: 'object',
386
+ name: 'updater',
387
+ header: i18next.t('field.updated_by'),
388
+ imex: { header: i18next.t('field.updated_by'), key: 'updater.name', width: 30, type: 'string' },
389
+ sortable: true,
390
+ width: 200
385
391
  }
386
392
  ]
387
393
  }
@@ -400,6 +406,25 @@ class B2bOrderList extends localize(i18next)(PageView) {
400
406
  }
401
407
 
402
408
  async fetchHandler({ page, limit, sorters = [] }) {
409
+ let filters = this.searchForm.queryFilters.map(filter => {
410
+ switch (filter.name) {
411
+ case 'fromDate':
412
+ let fromDt = new Date(filter.value)
413
+ fromDt.setHours(0)
414
+ filter.value = fromDt.toISOString()
415
+ filter.name = 'createdAt'
416
+ break
417
+ case 'toDate':
418
+ let toDt = new Date(filter.value)
419
+ toDt.setHours(23, 59, 59)
420
+ filter.value = toDt.toISOString()
421
+ filter.name = 'createdAt'
422
+ break
423
+ default:
424
+ break
425
+ }
426
+ return filter
427
+ })
403
428
  const response = await client.query({
404
429
  query: gql`
405
430
  query releaseGoodRequests($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
@@ -425,26 +450,32 @@ class B2bOrderList extends localize(i18next)(PageView) {
425
450
  exportOption
426
451
  routeId
427
452
  releaseDate
453
+ recall
428
454
  status
429
455
  createdAt
430
- updatedAt
431
456
  creator {
432
457
  id
433
458
  name
434
459
  description
435
460
  }
461
+ acceptedAt
436
462
  acceptedBy {
437
463
  id
438
464
  name
439
465
  description
440
466
  }
467
+ updatedAt
468
+ updater {
469
+ id
470
+ name
471
+ }
441
472
  }
442
473
  total
443
474
  }
444
475
  }
445
476
  `,
446
477
  variables: {
447
- filters: [...(await this.searchForm.getQueryFilters()), { name: 'type', operator: 'eq', value: 'b2b' }],
478
+ filters: [...filters, { name: 'type', operator: 'eq', value: 'b2b' }],
448
479
  pagination: { page, limit },
449
480
  sortings: sorters
450
481
  }
@@ -507,60 +538,25 @@ class B2bOrderList extends localize(i18next)(PageView) {
507
538
  }
508
539
  }
509
540
 
510
- _openBatchPickingPopup() {
511
- openPopup(
512
- html`
513
- <batch-picking-popup
514
- @generated="${() => {
515
- navigate('merged_outbound_worksheets')
516
- this._showToast({ message: i18next.t('text.worksheet_has_been_generated') })
517
- }}"
518
- ></batch-picking-popup>
519
- `,
520
- {
521
- backdrop: true,
522
- size: 'large',
523
- title: i18next.t('title.generate_batch_picking')
524
- }
525
- )
526
- }
527
-
528
- async _generatePickingWorksheet() {
541
+ async _openGenerateWorksheetPopup() {
529
542
  try {
530
- let releaseGoodNos = []
531
543
  if (this.dataGrist.selected.length <= 0)
532
544
  throw new Error(i18next.t('text.please_select_one_or_more_order_to_generate_worksheet'))
533
545
 
546
+ let releaseGoodNos = []
547
+
534
548
  let readyToPick = this.dataGrist.selected.filter(itm => itm.status === ORDER_STATUS.PENDING_WORKSHEET.value)
535
549
  releaseGoodNos = readyToPick.map(record => record.name)
536
550
 
537
551
  if (releaseGoodNos.length <= 0)
538
- throw new Error(i18next.t('text.selected_release_order(s)_has_existing_worksheet'))
539
-
540
- let result = await CustomAlert({
541
- title: i18next.t('title.are_you_sure'),
542
- text: i18next.t('text.generate_worksheet'),
543
- confirmButton: { text: i18next.t('button.submit') },
544
- cancelButton: { text: i18next.t('button.cancel') }
545
- })
552
+ throw new Error(i18next.t('text.selected_release_order(s)_is_not_in_pending_worksheet_status'))
546
553
 
547
- if (!result.value) return
548
-
549
- const response = await client.mutate({
550
- mutation: gql`
551
- mutation generateMultipleReleaseGoodWorksheet($releaseGoodNos: [String!]) {
552
- generateMultipleReleaseGoodWorksheet(releaseGoodNos: $releaseGoodNos)
553
- }
554
- `,
555
- variables: {
556
- releaseGoodNos
557
- }
554
+ await sleep(1010)
555
+ openPopup(html` <generate-worksheet-popup .gristData=${this.dataGrist}></generate-worksheet-popup> `, {
556
+ backdrop: true,
557
+ size: 'medium',
558
+ title: i18next.t('title.generate_picking_worksheet')
558
559
  })
559
-
560
- if (!response.errors) {
561
- navigate('single_outbound_worksheets')
562
- this._showToast({ message: i18next.t('text.worksheet(s)_has_been_generated') })
563
- }
564
560
  } catch (e) {
565
561
  this._showToast(e)
566
562
  }