@things-factory/operato-wms 3.7.12 → 3.8.0

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 (98) hide show
  1. package/client/pages/adjustment/transfer-inventory.js +364 -158
  2. package/client/pages/bulk-operation/bulk-operation.js +316 -0
  3. package/client/pages/bulk-operation/validate-ro-popup.js +445 -0
  4. package/client/pages/components/select-product-popup.js +10 -1
  5. package/client/pages/constants/inventory.js +1 -0
  6. package/client/pages/constants/location.js +33 -6
  7. package/client/pages/constants/worksheet.js +2 -2
  8. package/client/pages/inbound/inbound-worksheet.js +81 -15
  9. package/client/pages/inbound/putaway-product.js +60 -8
  10. package/client/pages/inbound/putaway-worksheet-generate-popup.js +29 -5
  11. package/client/pages/inbound/unload-product.js +80 -19
  12. package/client/pages/inbound/worksheet-putaway-return.js +22 -5
  13. package/client/pages/inbound/worksheet-putaway.js +21 -8
  14. package/client/pages/inbound/worksheet-unloading-return.js +22 -5
  15. package/client/pages/inbound/worksheet-unloading.js +8 -0
  16. package/client/pages/inventory/inventory-adjustment-approval.js +18 -8
  17. package/client/pages/inventory/inventory-adjustment.js +91 -76
  18. package/client/pages/inventory/inventory-by-product-detail.js +1 -1
  19. package/client/pages/inventory/inventory-by-product.js +9 -1
  20. package/client/pages/inventory/inventory-history-by-pallet.js +10 -1
  21. package/client/pages/inventory/inventory-history.js +12 -2
  22. package/client/pages/inventory/onhand-inventory.js +12 -3
  23. package/client/pages/inventory-check/create-cycle-count.js +12 -6
  24. package/client/pages/inventory-check/cycle-count-report.js +8 -0
  25. package/client/pages/inventory-check/worksheet-cycle-count.js +14 -0
  26. package/client/pages/master/location-list.js +58 -17
  27. package/client/pages/order/arrival-notice/arrival-notice-detail.js +134 -115
  28. package/client/pages/order/arrival-notice/arrival-notice-list.js +87 -6
  29. package/client/pages/order/arrival-notice/arrival-notice-requests.js +83 -6
  30. package/client/pages/order/arrival-notice/assign-buffer-location.js +8 -1
  31. package/client/pages/order/arrival-notice/check-arrived-notice.js +9 -1
  32. package/client/pages/order/arrival-notice/create-arrival-notice.js +30 -2
  33. package/client/pages/order/arrival-notice/duplicate-arrival-notice.js +290 -25
  34. package/client/pages/order/arrival-notice/edit-product-popup.js +36 -5
  35. package/client/pages/order/arrival-notice/receive-arrival-notice.js +8 -1
  36. package/client/pages/order/release-order/b2b/b2b-order-requests.js +7 -7
  37. package/client/pages/order/release-order/b2c/b2c-order-requests.js +65 -5
  38. package/client/pages/order/release-order/create-release-order.js +24 -1
  39. package/client/pages/order/release-order/receive-release-order-request.js +8 -0
  40. package/client/pages/order/release-order/release-extra-product-popup.js +12 -4
  41. package/client/pages/order/release-order/release-order-detail.js +9 -1
  42. package/client/pages/order/return-order/check-return-order.js +9 -1
  43. package/client/pages/order/return-order/create-return-order.js +14 -2
  44. package/client/pages/order/return-order/receive-return-order-requests.js +9 -1
  45. package/client/pages/order/return-order/return-order-detail.js +15 -6
  46. package/client/pages/order/return-order/return-order-inventory-popup.js +7 -0
  47. package/client/pages/order/transport-order/delivery-order-list.js +4 -1
  48. package/client/pages/outbound/inventory-assign-popup.js +11 -2
  49. package/client/pages/outbound/inventory-auto-assign-popup.js +9 -0
  50. package/client/pages/outbound/merged-outbound-worksheet.js +9 -5
  51. package/client/pages/outbound/picking-product.js +202 -162
  52. package/client/pages/outbound/picking-replacement-popup.js +2 -2
  53. package/client/pages/outbound/single-outbound-worksheet.js +47 -1
  54. package/client/pages/outbound/worksheet-loading.js +22 -5
  55. package/client/pages/outbound/worksheet-packing.js +8 -0
  56. package/client/pages/outbound/worksheet-picking.js +29 -5
  57. package/client/pages/outbound/worksheet-return.js +9 -1
  58. package/client/pages/outbound/worksheet-sorting.js +9 -1
  59. package/client/pages/report/custom-elccl/elccl-inventory-report.js +31 -30
  60. package/client/pages/report/custom-elccl/elccl-inventory-summary-report.js +23 -26
  61. package/client/pages/report/inventory-pallet-storage-report.js +11 -10
  62. package/client/pages/report/inventory-report.js +41 -43
  63. package/client/pages/report/inventory-summary-report.js +25 -28
  64. package/client/route.js +5 -0
  65. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.js +1 -1
  66. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.js.map +1 -1
  67. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js +1 -1
  68. package/dist-server/graphql/resolvers/index.js +3 -1
  69. package/dist-server/graphql/resolvers/index.js.map +1 -1
  70. package/dist-server/graphql/resolvers/shipping-provider/index.js +6 -0
  71. package/dist-server/graphql/resolvers/shipping-provider/index.js.map +1 -0
  72. package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js +20 -0
  73. package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js.map +1 -0
  74. package/dist-server/graphql/types/custom/elccl/elccl-inventory-report.js +1 -1
  75. package/dist-server/graphql/types/index.js +5 -2
  76. package/dist-server/graphql/types/index.js.map +1 -1
  77. package/dist-server/graphql/types/shipping-provider/index.js +10 -0
  78. package/dist-server/graphql/types/shipping-provider/index.js.map +1 -0
  79. package/dist-server/graphql/types/shipping-provider/shipping-provider-list.js +13 -0
  80. package/dist-server/graphql/types/shipping-provider/shipping-provider-list.js.map +1 -0
  81. package/dist-server/graphql/types/shipping-provider/shipping-provider.js +13 -0
  82. package/dist-server/graphql/types/shipping-provider/shipping-provider.js.map +1 -0
  83. package/package.json +37 -37
  84. package/server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.ts +4 -2
  85. package/server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.ts +1 -1
  86. package/server/graphql/resolvers/index.ts +3 -1
  87. package/server/graphql/resolvers/shipping-provider/index.ts +5 -0
  88. package/server/graphql/resolvers/shipping-provider/shipping-providers.ts +20 -0
  89. package/server/graphql/types/custom/elccl/elccl-inventory-report.ts +1 -1
  90. package/server/graphql/types/index.ts +5 -2
  91. package/server/graphql/types/shipping-provider/index.ts +8 -0
  92. package/server/graphql/types/shipping-provider/shipping-provider-list.ts +7 -0
  93. package/server/graphql/types/shipping-provider/shipping-provider.ts +7 -0
  94. package/things-factory.config.js +6 -0
  95. package/translations/en.json +27 -0
  96. package/translations/ko.json +84 -36
  97. package/translations/ms.json +85 -37
  98. package/translations/zh.json +98 -51
@@ -225,6 +225,12 @@ class CycleCountReport extends localize(i18next)(PageView) {
225
225
  header: i18next.t('field.product'),
226
226
  width: 350
227
227
  },
228
+ {
229
+ type: 'string',
230
+ name: 'brand',
231
+ header: i18next.t('field.brand'),
232
+ width: 100
233
+ },
228
234
  {
229
235
  type: 'string',
230
236
  name: 'packingType',
@@ -419,6 +425,7 @@ class CycleCountReport extends localize(i18next)(PageView) {
419
425
  uom
420
426
  product {
421
427
  name
428
+ brand
422
429
  description
423
430
  }
424
431
  }
@@ -451,6 +458,7 @@ class CycleCountReport extends localize(i18next)(PageView) {
451
458
  return {
452
459
  ...worksheetDetail.targetInventory.inventory,
453
460
  name: worksheetDetail.name,
461
+ brand: worksheetDetail.targetInventory.inventory.product.brand,
454
462
  description: worksheetDetail.description,
455
463
  productName:
456
464
  worksheetDetail.targetInventory.inventory.product.name +
@@ -207,6 +207,18 @@ class WorksheetCycleCount extends localize(i18next)(PageView) {
207
207
  },
208
208
  width: 350
209
209
  },
210
+ {
211
+ type: 'string',
212
+ name: 'brand',
213
+ header: i18next.t('field.brand'),
214
+ imex: {
215
+ header: i18next.t('field.brand'),
216
+ key: 'brand',
217
+ width: 15,
218
+ type: 'string'
219
+ },
220
+ width: 80
221
+ },
210
222
  {
211
223
  type: 'object',
212
224
  name: 'location',
@@ -323,6 +335,7 @@ class WorksheetCycleCount extends localize(i18next)(PageView) {
323
335
  }
324
336
  product {
325
337
  name
338
+ brand
326
339
  description
327
340
  }
328
341
  },
@@ -356,6 +369,7 @@ class WorksheetCycleCount extends localize(i18next)(PageView) {
356
369
  return {
357
370
  ...worksheetDetail.targetInventory.inventory,
358
371
  name: worksheetDetail.name,
372
+ brand: worksheetDetail.targetInventory.inventory.product.brand,
359
373
  description: worksheetDetail.description,
360
374
  status: worksheetDetail.status,
361
375
  inspectedLocation: worksheetDetail.targetInventory.inspectedLocation,
@@ -1,18 +1,21 @@
1
- import { DirectPrinter } from '@things-factory/barcode-base'
2
1
  import '@things-factory/form-ui'
3
2
  import '@things-factory/grist-ui'
4
- import { i18next, localize } from '@things-factory/i18n-base'
5
3
  import '@things-factory/import-ui'
6
- import { openPopup } from '@things-factory/layout-base'
7
- import { client, CustomAlert, PageView, store } from '@things-factory/shell'
8
- import { ScrollbarStyles, CommonButtonStyles } from '@things-factory/styles'
9
- import { gqlBuilder, isMobileDevice } from '@things-factory/utils'
4
+ import './generate-location-list'
5
+ import './print-location-label'
6
+
10
7
  import gql from 'graphql-tag'
11
8
  import { css, html } from 'lit-element'
12
9
  import { connect } from 'pwa-helpers/connect-mixin'
13
- import { LOCATION_LABEL_SETTING_KEY } from '../constants'
14
- import './generate-location-list'
15
- import './print-location-label'
10
+
11
+ import { DirectPrinter } from '@things-factory/barcode-base'
12
+ import { i18next, localize } from '@things-factory/i18n-base'
13
+ import { openPopup } from '@things-factory/layout-base'
14
+ import { client, CustomAlert, PageView, store } from '@things-factory/shell'
15
+ import { CommonButtonStyles, ScrollbarStyles } from '@things-factory/styles'
16
+ import { gqlBuilder, isMobileDevice } from '@things-factory/utils'
17
+
18
+ import { LOCATION_LABEL_SETTING_KEY, LOCATION_STATUS, LOCATION_TYPE } from '../constants'
16
19
 
17
20
  class LocationList extends connect(store)(localize(i18next)(PageView)) {
18
21
  static get styles() {
@@ -130,8 +133,19 @@ class LocationList extends connect(store)(localize(i18next)(PageView)) {
130
133
  {
131
134
  label: i18next.t('field.type'),
132
135
  name: 'type',
133
- type: 'text',
134
- props: { searchOper: 'i_like' }
136
+ type: 'select',
137
+ options: [
138
+ { value: '' },
139
+ ...Object.values(LOCATION_TYPE)
140
+ .map(type => {
141
+ return {
142
+ name: type.name,
143
+ value: type.value
144
+ }
145
+ })
146
+ .sort((a, b) => (a.name > b.name ? 1 : -1))
147
+ ],
148
+ props: { searchOper: 'eq' }
135
149
  },
136
150
  {
137
151
  label: i18next.t('field.zone'),
@@ -160,8 +174,19 @@ class LocationList extends connect(store)(localize(i18next)(PageView)) {
160
174
  {
161
175
  label: i18next.t('field.status'),
162
176
  name: 'status',
163
- type: 'text',
164
- props: { searchOper: 'i_like' }
177
+ type: 'select',
178
+ options: [
179
+ { value: '' },
180
+ ...Object.values(LOCATION_STATUS)
181
+ .map(status => {
182
+ return {
183
+ name: status.name,
184
+ value: status.value
185
+ }
186
+ })
187
+ .sort((a, b) => (a.name > b.name ? 1 : -1))
188
+ ],
189
+ props: { searchOper: 'eq' }
165
190
  }
166
191
  ]
167
192
 
@@ -185,10 +210,18 @@ class LocationList extends connect(store)(localize(i18next)(PageView)) {
185
210
  width: 150
186
211
  },
187
212
  {
188
- type: 'string',
213
+ type: 'select',
189
214
  name: 'type',
190
215
  header: i18next.t('field.type'),
191
- record: { editable: true },
216
+ record: {
217
+ editable: true,
218
+ options: [
219
+ '',
220
+ ...Object.values(LOCATION_TYPE)
221
+ .map(type => type.value)
222
+ .sort()
223
+ ]
224
+ },
192
225
  imex: { header: i18next.t('field.type'), key: 'type', width: 50, type: 'string' },
193
226
  sortable: true,
194
227
  width: 150
@@ -231,10 +264,18 @@ class LocationList extends connect(store)(localize(i18next)(PageView)) {
231
264
  width: 80
232
265
  },
233
266
  {
234
- type: 'string',
267
+ type: 'select',
235
268
  name: 'status',
236
269
  header: i18next.t('field.status'),
237
- record: { editable: true },
270
+ record: {
271
+ editable: true,
272
+ options: [
273
+ '',
274
+ ...Object.values(LOCATION_STATUS)
275
+ .map(status => status.value)
276
+ .sort()
277
+ ]
278
+ },
238
279
  imex: { header: i18next.t('field.status'), key: 'status', width: 50, type: 'string' },
239
280
  sortable: true,
240
281
  width: 80
@@ -1,15 +1,21 @@
1
- import { MultiColumnFormStyles } from '@things-factory/form-ui'
2
1
  import '@things-factory/grist-ui'
2
+ import '../../components/attachment-viewer'
3
+ import '../../components/vas-templates'
4
+ import './edit-product-popup'
5
+ import './proceed-edit-product-popup'
6
+ import './view-product-changes-popup'
7
+
8
+ import gql from 'graphql-tag'
9
+ import { css, html } from 'lit-element'
10
+
11
+ import { MultiColumnFormStyles } from '@things-factory/form-ui'
3
12
  import { getRenderer } from '@things-factory/grist-ui'
4
13
  import { i18next, localize } from '@things-factory/i18n-base'
5
14
  import { openPopup } from '@things-factory/layout-base'
6
15
  import { client, CustomAlert, navigate, PageView } from '@things-factory/shell'
7
16
  import { CommonButtonStyles } from '@things-factory/styles'
8
17
  import { isMobileDevice } from '@things-factory/utils'
9
- import gql from 'graphql-tag'
10
- import { css, html } from 'lit-element'
11
- import '../../components/attachment-viewer'
12
- import '../../components/vas-templates'
18
+
13
19
  import {
14
20
  ORDER_PRODUCT_STATUS,
15
21
  ORDER_STATUS,
@@ -18,9 +24,6 @@ import {
18
24
  VAS_ETC_TYPE,
19
25
  VAS_PRODUCT_TYPE
20
26
  } from '../../constants'
21
- import './edit-product-popup'
22
- import './proceed-edit-product-popup'
23
- import './view-product-changes-popup'
24
27
 
25
28
  class ArrivalNoticeDetail extends localize(i18next)(PageView) {
26
29
  static get properties() {
@@ -136,11 +139,11 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
136
139
  height: 100px;
137
140
  margin: 10px;
138
141
  }
139
- .form-container {
140
- display: flex
142
+ .form-container {
143
+ display: flex;
141
144
  }
142
- .form-container > form {
143
- flex: 1
145
+ .form-container > form {
146
+ flex: 1;
144
147
  }
145
148
  `
146
149
  ]
@@ -238,111 +241,111 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
238
241
 
239
242
  render() {
240
243
  return html`
241
- <div class="form-container">
242
- <form name="arrivalNotice" class="multi-column-form">
243
- <fieldset>
244
- <legend>${i18next.t('title.gan_no')}: ${this._ganNo}</legend>
245
-
246
- <label>${i18next.t('label.options')}</label>
247
- <div options-wrap>
248
- <input
249
- id="ownTransport"
250
- type="checkbox"
251
- name="ownTransport"
252
- ?checked="${this._ownTransport}"
253
- @change="${e => (this._ownTransport = e.currentTarget.checked)}"
254
- disabled
255
- />
256
- <label>${i18next.t('label.own_transport')}</label>
257
-
258
- <input
259
- id="warehouseTransport"
260
- type="checkbox"
261
- name="warehouseTransport"
262
- ?checked="${!this._ownTransport}"
263
- disabled
264
- />
265
- <label>${i18next.t('label.warehouse_transport')}</label>
266
-
267
- <input id="container" type="checkbox" name="container" ?checked="${this._hasContainer}" disabled />
268
- <label for="container">${i18next.t('label.container')}</label>
269
-
270
- <input id="looseItem" type="checkbox" name="looseItem" ?checked="${this._looseItem}" disabled />
271
- <label for="looseItem">${i18next.t('label.loose_item')}</label>
272
-
273
- <input id="importedOrder" type="checkbox" name="importCargo" ?checked="${this._importedOrder}" disabled />
274
- <label for="importedOrder">${i18next.t('label.import_cargo')}</label>
275
-
276
- ${this._crossDocking
244
+ <div class="form-container">
245
+ <form name="arrivalNotice" class="multi-column-form">
246
+ <fieldset>
247
+ <legend>${i18next.t('title.gan_no')}: ${this._ganNo}</legend>
248
+
249
+ <label>${i18next.t('label.options')}</label>
250
+ <div options-wrap>
251
+ <input
252
+ id="ownTransport"
253
+ type="checkbox"
254
+ name="ownTransport"
255
+ ?checked="${this._ownTransport}"
256
+ @change="${e => (this._ownTransport = e.currentTarget.checked)}"
257
+ disabled
258
+ />
259
+ <label>${i18next.t('label.own_transport')}</label>
260
+
261
+ <input
262
+ id="warehouseTransport"
263
+ type="checkbox"
264
+ name="warehouseTransport"
265
+ ?checked="${!this._ownTransport}"
266
+ disabled
267
+ />
268
+ <label>${i18next.t('label.warehouse_transport')}</label>
269
+
270
+ <input id="container" type="checkbox" name="container" ?checked="${this._hasContainer}" disabled />
271
+ <label for="container">${i18next.t('label.container')}</label>
272
+
273
+ <input id="looseItem" type="checkbox" name="looseItem" ?checked="${this._looseItem}" disabled />
274
+ <label for="looseItem">${i18next.t('label.loose_item')}</label>
275
+
276
+ <input id="importedOrder" type="checkbox" name="importCargo" ?checked="${this._importedOrder}" disabled />
277
+ <label for="importedOrder">${i18next.t('label.import_cargo')}</label>
278
+
279
+ ${this._crossDocking
280
+ ? html`
281
+ <input
282
+ id="crossDocking"
283
+ type="checkbox"
284
+ name="crossDocking"
285
+ ?checked="${this._crossDocking}"
286
+ disabled
287
+ />
288
+ <label for="crossDocking">${i18next.t('label.cross_docking')}</label>
289
+ `
290
+ : ''}
291
+ </div>
292
+
293
+ <label>${i18next.t('label.company')}</label>
294
+ <input name="bizplaceName" value="${this._bizplaceName}" readonly />
295
+
296
+ <label>${i18next.t('label.ref_no')}${`1`}</label>
297
+ <input name="refNo" readonly />
298
+
299
+ <label>${i18next.t('label.ref_no')}${`2`}</label>
300
+ <input name="refNo2" readonly />
301
+
302
+ <label>${i18next.t('label.ref_no')}${`3`}</label>
303
+ <input name="refNo3" readonly />
304
+
305
+ <label>${i18next.t('label.eta_date')}</label>
306
+ <input name="etaDate" type="date" readonly />
307
+
308
+ <label ?hidden="${!this._ownTransport}">${i18next.t('label.do_no')}</label>
309
+ <input name="deliveryOrderNo" ?hidden="${!this._ownTransport}" readonly />
310
+
311
+ <label ?hidden="${this._importedOrder || !this._ownTransport}">${i18next.t('label.truck_no')}</label>
312
+ <input ?hidden="${this._importedOrder || !this._ownTransport}" name="truckNo" readonly />
313
+
314
+ <label ?hidden="${!this._hasContainer}">${i18next.t('label.container_no')}</label>
315
+ <input ?hidden="${!this._hasContainer}" type="text" name="containerNo" readonly />
316
+
317
+ <label>${i18next.t('label.container_size')}</label>
318
+ <input type="text" name="containerSize" readonly />
319
+
320
+ <label>${i18next.t('label.status')}</label>
321
+ <select name="status" disabled>
322
+ ${Object.keys(ORDER_STATUS).map(key => {
323
+ const status = ORDER_STATUS[key]
324
+ return html` <option value="${status.value}">${i18next.t(`label.${status.name}`)}</option> `
325
+ })}
326
+ </select>
327
+
328
+ ${this._attachments?.length > 0
277
329
  ? html`
278
- <input
279
- id="crossDocking"
280
- type="checkbox"
281
- name="crossDocking"
282
- ?checked="${this._crossDocking}"
283
- disabled
284
- />
285
- <label for="crossDocking">${i18next.t('label.cross_docking')}</label>
330
+ <label>${i18next.t('label.attachment')}</label>
331
+ <ul attachment-wrap>
332
+ ${(this._attachments || []).map(
333
+ attachment =>
334
+ html`
335
+ <li>
336
+ <a href="${location.origin}/attachment/${attachment.path}" download
337
+ ><mwc-icon>attach_file</mwc-icon> ${attachment.name}</a
338
+ >
339
+ </li>
340
+ `
341
+ )}
342
+ </ul>
286
343
  `
287
344
  : ''}
288
- </div>
289
-
290
- <label>${i18next.t('label.company')}</label>
291
- <input name="bizplaceName" value="${this._bizplaceName}" readonly />
292
-
293
- <label>${i18next.t('label.ref_no')}${`1`}</label>
294
- <input name="refNo" readonly />
295
-
296
- <label>${i18next.t('label.ref_no')}${`2`}</label>
297
- <input name="refNo2" readonly />
298
-
299
- <label>${i18next.t('label.ref_no')}${`3`}</label>
300
- <input name="refNo3" readonly />
301
-
302
- <label>${i18next.t('label.eta_date')}</label>
303
- <input name="etaDate" type="date" readonly />
304
-
305
- <label ?hidden="${!this._ownTransport}">${i18next.t('label.do_no')}</label>
306
- <input name="deliveryOrderNo" ?hidden="${!this._ownTransport}" readonly />
307
-
308
- <label ?hidden="${this._importedOrder || !this._ownTransport}">${i18next.t('label.truck_no')}</label>
309
- <input ?hidden="${this._importedOrder || !this._ownTransport}" name="truckNo" readonly />
310
-
311
- <label ?hidden="${!this._hasContainer}">${i18next.t('label.container_no')}</label>
312
- <input ?hidden="${!this._hasContainer}" type="text" name="containerNo" readonly />
313
-
314
- <label>${i18next.t('label.container_size')}</label>
315
- <input type="text" name="containerSize" readonly />
316
-
317
- <label>${i18next.t('label.status')}</label>
318
- <select name="status" disabled>
319
- ${Object.keys(ORDER_STATUS).map(key => {
320
- const status = ORDER_STATUS[key]
321
- return html` <option value="${status.value}">${i18next.t(`label.${status.name}`)}</option> `
322
- })}
323
- </select>
324
-
325
- ${this._attachments?.length > 0
326
- ? html`
327
- <label>${i18next.t('label.attachment')}</label>
328
- <ul attachment-wrap>
329
- ${(this._attachments || []).map(
330
- attachment =>
331
- html`
332
- <li>
333
- <a href="${location.origin}/attachment/${attachment.path}" download
334
- ><mwc-icon>attach_file</mwc-icon> ${attachment.name}</a
335
- >
336
- </li>
337
- `
338
- )}
339
- </ul>
340
- `
341
- : ''}
342
- </fieldset>
343
- </form>
344
- <barcode-tag bcid="qrcode" .value=${this._ganNo}></barcode-tag>
345
- </div>
345
+ </fieldset>
346
+ </form>
347
+ <barcode-tag bcid="qrcode" .value=${this._ganNo}></barcode-tag>
348
+ </div>
346
349
 
347
350
  <div class="container">
348
351
  <div class="grist">
@@ -541,6 +544,12 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
541
544
  record: { options: { queryName: 'products' } },
542
545
  width: 350
543
546
  },
547
+ {
548
+ type: 'string',
549
+ name: 'productBrand',
550
+ header: i18next.t('field.brand'),
551
+ width: 150
552
+ },
544
553
  {
545
554
  type: 'string',
546
555
  name: 'packingType',
@@ -618,6 +627,7 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
618
627
  'packingType',
619
628
  'uomValue',
620
629
  'uom',
630
+ 'brand',
621
631
  'packQty',
622
632
  'totalUomValue',
623
633
  'palletQty',
@@ -687,6 +697,7 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
687
697
  name
688
698
  description
689
699
  sku
700
+ brand
690
701
  }
691
702
  remark
692
703
  unitPrice
@@ -761,7 +772,11 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
761
772
  this.setProductGristConfig()
762
773
  this.productData = {
763
774
  records: orderProducts.map(record => {
764
- return { ...record, productSku: record.product.sku }
775
+ return {
776
+ ...record,
777
+ productSku: record.product.sku,
778
+ productBrand: record.product.brand
779
+ }
765
780
  })
766
781
  }
767
782
  this.vasData = {
@@ -915,6 +930,10 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
915
930
  }
916
931
 
917
932
  openEditProductPopup() {
933
+ this.productData.records = this.productData.records.filter(
934
+ orderProduct => orderProduct.status !== ORDER_PRODUCT_STATUS.UNLOADED.value
935
+ )
936
+
918
937
  openPopup(
919
938
  html`
920
939
  <edit-product-popup