@things-factory/operato-wms 4.3.658 → 4.3.660

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.
@@ -224,6 +224,7 @@ class SelectProductPopup extends localize(i18next)(LitElement) {
224
224
  type
225
225
  costPrice
226
226
  isInventoryDecimal
227
+ isRequiredCheckExpiry
227
228
  }
228
229
  }
229
230
  total
@@ -247,7 +248,8 @@ class SelectProductPopup extends localize(i18next)(LitElement) {
247
248
  name: item.name,
248
249
  description: item.product.description,
249
250
  costPrice: (item.costPrice = (item?.costPrice || 0).toFixed(2)),
250
- isInventoryDecimal: item.product.isInventoryDecimal
251
+ isInventoryDecimal: item.product.isInventoryDecimal,
252
+ isRequiredCheckExpiry: item.product.isRequiredCheckExpiry
251
253
  }
252
254
  }) || []
253
255
  }
@@ -276,7 +278,8 @@ class SelectProductPopup extends localize(i18next)(LitElement) {
276
278
  primaryUnit: record.uom,
277
279
  primaryValue: record.uomValue,
278
280
  costPrice: parseFloat(record.costPrice).toFixed(2),
279
- isInventoryDecimal: record.isInventoryDecimal
281
+ isInventoryDecimal: record.isInventoryDecimal,
282
+ isRequiredCheckExpiry: record.isRequiredCheckExpiry
280
283
  }
281
284
  }
282
285
  })
@@ -308,7 +311,8 @@ class SelectProductPopup extends localize(i18next)(LitElement) {
308
311
  primaryUnit: selectedProduct.uom,
309
312
  primaryValue: selectedProduct.uomValue,
310
313
  costPrice: parseFloat(selectedProduct.costPrice).toFixed(2),
311
- isInventoryDecimal: selectedProduct.isInventoryDecimal
314
+ isInventoryDecimal: selectedProduct.isInventoryDecimal,
315
+ isRequiredCheckExpiry: selectedProduct.isRequiredCheckExpiry
312
316
  }
313
317
  }
314
318
  })
@@ -341,7 +345,8 @@ class SelectProductPopup extends localize(i18next)(LitElement) {
341
345
  primaryUnit: itm.uom,
342
346
  primaryValue: itm.uomValue,
343
347
  costPrice: parseFloat(itm.costPrice).costPrice,
344
- isInventoryDecimal: itm.isInventoryDecimal
348
+ isInventoryDecimal: itm.isInventoryDecimal,
349
+ isRequiredCheckExpiry: itm.isRequiredCheckExpiry
345
350
  }
346
351
  }
347
352
  })
@@ -1,7 +1,7 @@
1
1
  import '@things-factory/grist-ui'
2
2
 
3
3
  import { DirectPrinter } from '@things-factory/barcode-base'
4
- import { SingleColumnFormStyles } from '@things-factory/form-ui'
4
+ import { MultiColumnFormStyles, SingleColumnFormStyles } from '@things-factory/form-ui'
5
5
  import { i18next, localize } from '@things-factory/i18n-base'
6
6
  import { client, store } from '@things-factory/shell'
7
7
  import { css, html, LitElement } from 'lit-element'
@@ -10,7 +10,6 @@ import { sendToPrinter } from '../../util'
10
10
  import { CARTON_LABEL_BY_SKU_SETTING_KEY, CARTON_LABEL_SETTING_KEY } from '../constants'
11
11
 
12
12
  import gql from 'graphql-tag'
13
-
14
13
  class CartonLabelPopup extends connect(store)(localize(i18next)(LitElement)) {
15
14
  static get properties() {
16
15
  return {
@@ -20,12 +19,17 @@ class CartonLabelPopup extends connect(store)(localize(i18next)(LitElement)) {
20
19
  bizplaceName: String,
21
20
  _printer: Object,
22
21
  _filters: Array,
23
- _config: Object
22
+ _config: Object,
23
+ enableDirectInbound: Boolean,
24
+ productGristConfig: Object,
25
+ productData: Object,
26
+ arrivalNoticeId: String
24
27
  }
25
28
  }
26
29
 
27
30
  static get styles() {
28
31
  return [
32
+ MultiColumnFormStyles,
29
33
  SingleColumnFormStyles,
30
34
  css`
31
35
  :host {
@@ -55,6 +59,37 @@ class CartonLabelPopup extends connect(store)(localize(i18next)(LitElement)) {
55
59
  flex: 1 1 0%;
56
60
  overflow-y: auto;
57
61
  }
62
+ .form-container {
63
+ display: flex;
64
+ }
65
+ .form-container > form {
66
+ flex: 1;
67
+ }
68
+ h2 + data-grist {
69
+ padding=top: var(--grist-title-with-grid-padding);
70
+ }
71
+ .grist h2 mwc-icon {
72
+ vertical-align: middle;
73
+ margin: var(--grist-title-icon-margin);
74
+ font-size: var(--grist-title-icon-size);
75
+ color: var(--grist-title-icon-color);
76
+ }
77
+ .grist h2 {
78
+ margin: var(--grist-title-margin);
79
+ border: var(--grist-title-border);
80
+ font: var(--grist-title-font);
81
+ color: var(--secondary-color);
82
+ }
83
+ h2 {
84
+ padding: var(--subtitle-padding);
85
+ font: var(--subtitle-font);
86
+ color: var(--subtitle-text-color);
87
+ border-bottom: var(--subtitle-border-bottom);
88
+ }
89
+ data-grist {
90
+ overflow-y: hidden;
91
+ flex: 1;
92
+ }
58
93
  `
59
94
  ]
60
95
  }
@@ -76,9 +111,13 @@ class CartonLabelPopup extends connect(store)(localize(i18next)(LitElement)) {
76
111
  this.fixedType = null
77
112
  this.type = null
78
113
  this.bizplaceName = null
114
+ this.productData = { records: [] }
115
+ this.setProductGristConfig()
79
116
  }
80
117
 
81
118
  firstUpdated() {
119
+ this.setProductGristConfig()
120
+ this.fetchInventories()
82
121
  this._config = {
83
122
  rows: {
84
123
  appendable: false,
@@ -129,15 +168,19 @@ class CartonLabelPopup extends connect(store)(localize(i18next)(LitElement)) {
129
168
  }
130
169
 
131
170
  render() {
132
- return html`
133
- <div id="input-form" class="single-column-form">
134
- <label>${i18next.t('label.printing_mode')}</label>
135
- ${this.filterContent()}
136
- </div>
137
- ${this.printControl()}
138
- <div class="button-container">
139
- <mwc-button raised @click="${this._printLabel.bind(this)}" label="${i18next.t('button.print')}"></mwc-button>
140
- </div>
171
+ return html `
172
+ ${this.enableDirectInbound
173
+ ? this.renderDirectInboundPrintLayout()
174
+ : html`
175
+ <div id="input-form" class="single-column-form">
176
+ <label>${i18next.t('label.printing_mode')}</label>
177
+ ${this.filterContent()}
178
+ </div>
179
+ ${this.printControl()}
180
+ <div class="button-container">
181
+ <mwc-button raised @click="${this._printLabel.bind(this)}" label="${i18next.t('button.print')}"></mwc-button>
182
+ </div>
183
+ `}
141
184
  `
142
185
  }
143
186
 
@@ -198,11 +241,169 @@ class CartonLabelPopup extends connect(store)(localize(i18next)(LitElement)) {
198
241
  }
199
242
  }
200
243
 
244
+ renderDirectInboundPrintLayout() {
245
+ return html`
246
+ <div class = "form-container">
247
+ <form name="printPopup" class="multi-column-form">
248
+ <fieldset>
249
+ <legend>${i18next.t('Print Settings')}</legend>
250
+ </fieldset>
251
+
252
+ <div class="form-container">
253
+ <label>${i18next.t('label.print_qty')}</label>
254
+ <input name="printQty" type="number" min="1" />
255
+ </div>
256
+ </form>
257
+ </div>
258
+
259
+ <div class="container">
260
+ <div class="grist">
261
+ <h2><mwc-icon>list_alt</mwc-icon>Select Product</h2>
262
+ <data-grist
263
+ id="product-grist"
264
+ .mode=${'GRID'}
265
+ .config=${this.productGristConfig}
266
+ .data="${this.productData}"
267
+ ></data-grist>
268
+ </div>
269
+ </div>
270
+
271
+ <div class="button-container">
272
+ <mwc-button raised @click="${this._printLabel.bind(this)}" label="${i18next.t('button.print')}"></mwc-button>
273
+ </div>
274
+ `
275
+ }
276
+
277
+ setProductGristConfig() {
278
+ let productGristColumns = [
279
+ { type: 'gutter', gutterName: 'sequence' },
280
+ { type: 'gutter', gutterName: 'row-selector', multiple: true},
281
+ {
282
+ type: 'string',
283
+ name: 'cartonId',
284
+ header: i18next.t('field.carton_id'),
285
+ width: 150
286
+ },
287
+ {
288
+ type: 'string',
289
+ name: 'batchId',
290
+ header: i18next.t('field.batch_id'),
291
+ width: 150
292
+ },
293
+ {
294
+ type: 'object',
295
+ name: 'product',
296
+ header: i18next.t('field.product'),
297
+ record: { options: { queryName: 'products' } },
298
+ width: 350
299
+ },
300
+ {
301
+ type: 'string',
302
+ name: 'packingType',
303
+ header: i18next.t('field.packing_type'),
304
+ width: 150
305
+ },
306
+ {
307
+ type: 'string',
308
+ name: 'uom',
309
+ header: i18next.t('field.uom'),
310
+ width: 80
311
+ },
312
+ {
313
+ type: 'float',
314
+ name: 'uomValue',
315
+ header: i18next.t('field.uom_value'),
316
+ width: 100
317
+ },
318
+ {
319
+ type: 'float',
320
+ name: 'packQty',
321
+ header: i18next.t('field.pack_qty'),
322
+ width: 80
323
+ }
324
+ ]
325
+
326
+ this.productGristConfig = {
327
+ list: {
328
+ fields: [
329
+ 'cartonId',
330
+ 'batchId',
331
+ 'product',
332
+ 'packingType',
333
+ 'uom',
334
+ 'uomValue',
335
+ 'packQty'
336
+ ]
337
+ },
338
+ pagination: { infinite: true },
339
+ rows: {
340
+ appendable: false
341
+ },
342
+ columns: productGristColumns
343
+ }
344
+ }
345
+
346
+ async fetchInventories() {
347
+ if (!this.arrivalNoticeId) return
348
+
349
+ const response = await client.query({
350
+ query: gql`
351
+ query ($filters: [Filter!]) {
352
+ inventories(filters: $filters) {
353
+ items {
354
+ cartonId
355
+ batchId
356
+ packingType
357
+ uom
358
+ uomValue
359
+ qty
360
+ product {
361
+ id
362
+ name
363
+ sku
364
+ }
365
+ }
366
+ }
367
+ }
368
+ `,
369
+ variables: {
370
+ filters: [
371
+ {
372
+ name: 'refOrderId',
373
+ operator: 'eq',
374
+ value: this.arrivalNoticeId
375
+ }
376
+ ]
377
+ },
378
+ fetchPolicy: 'no-cache'
379
+ })
380
+
381
+ const inventories = response?.data?.inventories?.items || []
382
+
383
+ // Optional: transform into productData format expected by the Grist
384
+ this.productData = {
385
+ records: inventories.map(item => ({
386
+ cartonId: item.cartonId,
387
+ batchId: item.batchId,
388
+ packingType: item.packingType,
389
+ uom: item.uom,
390
+ uomValue: item.uomValue,
391
+ packQty: item.qty,
392
+ product: item.product
393
+ }))
394
+ }
395
+ }
396
+
397
+
201
398
  async _printLabel() {
202
399
  if (!this._printer) {
203
400
  this._printer = new DirectPrinter()
204
401
  }
205
402
 
403
+ if (this.enableDirectInbound) {
404
+ this.type = 'directInboundBySku'
405
+ }
406
+
206
407
  try {
207
408
  const filters = this._filters
208
409
  let labelId = filters.find(itm => itm.value == (this?.type ? this.type : 'default')).board.id
@@ -210,6 +411,38 @@ class CartonLabelPopup extends connect(store)(localize(i18next)(LitElement)) {
210
411
  let printData = []
211
412
 
212
413
  switch (this.type) {
414
+ case 'directInboundBySku':
415
+ let selectedRows = this.shadowRoot.querySelector('data-grist')?.selected || []
416
+ const printQtyVal = parseInt(this.printQtyInput?.value) || 1
417
+
418
+ if (selectedRows.length > 0) {
419
+ selectedRows.forEach(obj => {
420
+ for (let index = 0; index < printQtyVal; index++) {
421
+ const manufactureDate = new Date(obj.manufactureDate)
422
+ const manufactureYear = manufactureDate.getFullYear()
423
+
424
+ let data = {
425
+ batchId: obj.batchId,
426
+ productSku: obj.product?.sku || obj.productSku,
427
+ packingType: obj.packingType,
428
+ packQty: obj.packQty,
429
+ printQty: printQtyVal,
430
+ manufactureDate: manufactureDate.toLocaleDateString(),
431
+ manufactureYear: manufactureYear.toString(),
432
+ cartonId: obj.cartonId,
433
+ customer: bizplaceName,
434
+ printCount: index + 1,
435
+ carton: obj.cartonId
436
+ }
437
+
438
+ printData.push(data)
439
+ }
440
+ })
441
+
442
+ await sendToPrinter(labelId, printData, this._printer)
443
+ }
444
+ break
445
+
213
446
  case 'bySku':
214
447
  let selected = this.dataGrist.selected
215
448
 
@@ -289,7 +522,8 @@ class CartonLabelPopup extends connect(store)(localize(i18next)(LitElement)) {
289
522
  stateChanged(state) {
290
523
  let filters = [
291
524
  { name: i18next.t(`label.normal`), value: 'default', labelId: CARTON_LABEL_SETTING_KEY },
292
- { name: i18next.t(`label.print_by_sku`), value: 'bySku', labelId: CARTON_LABEL_BY_SKU_SETTING_KEY }
525
+ { name: i18next.t(`label.print_by_sku`), value: 'bySku', labelId: CARTON_LABEL_BY_SKU_SETTING_KEY },
526
+ { name: 'Direct Inbound by SKU', value: 'directInboundBySku', labelId: CARTON_LABEL_BY_SKU_SETTING_KEY}
293
527
  ]
294
528
 
295
529
  this._filters = filters
@@ -68,7 +68,9 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
68
68
  vasData: Object,
69
69
  arrivalNoticeId: String,
70
70
  _disableTransport: Boolean,
71
- userRole: Array
71
+ userRole: Array,
72
+ enableDirectInbound: Boolean,
73
+ _enableLotIdInput: Boolean
72
74
  }
73
75
  }
74
76
 
@@ -184,6 +186,8 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
184
186
  var titleName = i18next.t('title.arrival_notice_detail')
185
187
  this._vasExpanded = false
186
188
  this._showAssignWarehouse = false
189
+ const isNotAdmin = !this.userRoles?.some(itm => itm.name.toLowerCase().includes('admin'))
190
+
187
191
  var actions = [
188
192
  {
189
193
  title: i18next.t('button.back'),
@@ -203,6 +207,14 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
203
207
  })
204
208
  }
205
209
 
210
+ if(this.enableDirectInbound && this._status === ORDER_STATUS.PENDING.value && isNotAdmin) {
211
+ actions.push({
212
+ title: i18next.t('button.edit_product'),
213
+ action: this.openEditProductPopup.bind(this),
214
+ ...CommonButtonStyles.add
215
+ })
216
+ }
217
+
206
218
  if (this._status === ORDER_STATUS.PENDING.value) {
207
219
  actions.push({
208
220
  title: i18next.t('button.update_order_details'),
@@ -406,6 +418,13 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
406
418
  titleName = i18next.t('title.rejected_arrival_notice_detail')
407
419
  }
408
420
 
421
+ if(this.enableDirectInbound && this._status === ORDER_STATUS.DONE.value) {
422
+ actions.push({
423
+ title: i18next.t('button.carton_label_print'),
424
+ action: this._openCartonLabelPrintPopup.bind(this),
425
+ ...CommonButtonStyles.label
426
+ })
427
+ }
409
428
  return {
410
429
  title: titleName,
411
430
  actions,
@@ -643,6 +662,8 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
643
662
  this._disableTransport = false
644
663
  this._importedOrder = false
645
664
  this._enableTransportationServiceSetting = false
665
+ this.enableDirectInbound = false
666
+ this._enableLotIdInput = false
646
667
  }
647
668
 
648
669
  get arrivalNoticeForm() {
@@ -674,6 +695,8 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
674
695
  this._enableTransportationServiceSetting = await fetchSettingRule('enable-transportation-service')
675
696
  this.isUserBelongsDomain = await this._checkUserBelongsDomain()
676
697
  this.userRoles = await this.fetchUserRoleHandler()
698
+ this._enableLotIdInput = await fetchSettingRule('enable-lot-id-input')
699
+ this.enableDirectInbound = await fetchSettingRule('enable-direct-gan-order')
677
700
  this.vasGristConfig = {
678
701
  list: { fields: ['set', 'targetType', 'target', 'packingType', 'qty', 'vas', 'status', 'remark'] },
679
702
  pagination: { infinite: true },
@@ -866,12 +889,18 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
866
889
  header: i18next.t('field.pallet_qty'),
867
890
  width: 80
868
891
  },
869
- {
870
- type: 'string',
871
- name: 'palletId',
872
- header: i18next.t('field.lot_id'),
873
- width: 150
874
- },
892
+ ...(this._enableLotIdInput
893
+ ? [
894
+ {
895
+ type: 'string',
896
+ name: 'palletId',
897
+ header: i18next.t('field.lot_id'),
898
+ imex: { header: i18next.t('field.lot_id'), key: 'palletId', width: 25, type: 'string' },
899
+ record: { editable: editable },
900
+ width: 150
901
+ }
902
+ ]
903
+ : []),
875
904
  {
876
905
  type: 'date',
877
906
  name: 'manufactureDate',
@@ -904,6 +933,47 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
904
933
  productGristColumns.splice(packQtyColumnIdx + 1, 0, ...crossDockingColumns)
905
934
  }
906
935
 
936
+ const expDateColumn = {
937
+ type: 'date',
938
+ name: 'expDate',
939
+ header: i18next.t('field.exp_date'),
940
+ width: 120
941
+ }
942
+
943
+ const locationColumn = {
944
+ type: 'object',
945
+ name: 'location',
946
+ header: i18next.t('field.location'),
947
+ width: 150
948
+ }
949
+
950
+ const warehouseColumn = {
951
+ type: 'object',
952
+ name: 'warehouse',
953
+ header: i18next.t('field.warehouse'),
954
+ width: 150
955
+ }
956
+
957
+ function insertAfter (cols, anchorName, newCols) {
958
+ const idx = cols.findIndex(c => c.name === anchorName)
959
+ if (idx >= 0) cols.splice(idx + 1, 0, ...newCols)
960
+ }
961
+
962
+ if (this.enableDirectInbound) {
963
+ const anchor = this._enableLotIdInput ? 'palletId' : 'palletQty'
964
+ insertAfter(
965
+ productGristColumns,
966
+ anchor,
967
+ [expDateColumn]
968
+ )
969
+
970
+ insertAfter(
971
+ productGristColumns,
972
+ 'batchIdRef',
973
+ [warehouseColumn, locationColumn]
974
+ )
975
+ }
976
+
907
977
  this.productGristConfig = {
908
978
  list: {
909
979
  fields: [
@@ -918,8 +988,11 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
918
988
  'totalUomValue',
919
989
  'palletQty',
920
990
  'palletId',
991
+ 'expDate',
921
992
  'manufactureDate',
922
993
  'batchIdRef',
994
+ 'warehouse',
995
+ 'location',
923
996
  'unitPrice',
924
997
  'remark'
925
998
  ]
@@ -991,6 +1064,7 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
991
1064
  sku
992
1065
  brand
993
1066
  isInventoryDecimal
1067
+ isRequiredCheckExpiry
994
1068
  }
995
1069
  productDetail {
996
1070
  id
@@ -1013,9 +1087,27 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
1013
1087
  palletQty
1014
1088
  palletId
1015
1089
  adjustedPalletQty
1090
+ expDate
1091
+ adjustedExpDate
1016
1092
  manufactureDate
1017
1093
  releaseQty
1018
1094
  releaseUomValue
1095
+ warehouse{
1096
+ name
1097
+ id
1098
+ }
1099
+ location {
1100
+ name
1101
+ id
1102
+ }
1103
+ adjustedLocation {
1104
+ name
1105
+ id
1106
+ }
1107
+ adjustedWarehouse {
1108
+ name
1109
+ id
1110
+ }
1019
1111
  }
1020
1112
  orderVass {
1021
1113
  vas {
@@ -1084,7 +1176,7 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
1084
1176
  return {
1085
1177
  ...record,
1086
1178
  productSku: record.product.sku,
1087
- productBrand: record.product.brand
1179
+ productBrand: record.product.brand,
1088
1180
  }
1089
1181
  })
1090
1182
  .sort((a, b) => a.product.sku.localeCompare(b.product.sku))
@@ -1523,14 +1615,23 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
1523
1615
  }
1524
1616
 
1525
1617
  try {
1526
- const response = await client.mutate({
1527
- mutation: gql`
1528
- mutation confirmArrivalNotice($name: String!) {
1529
- confirmArrivalNotice(name: $name) {
1530
- name
1618
+ const mutation = this.enableDirectInbound
1619
+ ? gql`
1620
+ mutation confirmDirectInboundArrivalNotice($name: String!) {
1621
+ confirmDirectInboundArrivalNotice(name: $name) {
1622
+ name
1623
+ }
1531
1624
  }
1532
- }
1533
- `,
1625
+ `
1626
+ : gql `
1627
+ mutation confirmArrivalNotice($name: String!) {
1628
+ confirmArrivalNotice(name: $name) {
1629
+ name
1630
+ }
1631
+ }
1632
+ `
1633
+ const response = await client.mutate({
1634
+ mutation,
1534
1635
  variables: { name: this._ganNo }
1535
1636
  })
1536
1637
 
@@ -1684,10 +1785,17 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
1684
1785
 
1685
1786
  _openCartonLabelPrintPopup() {
1686
1787
  openPopup(
1687
- html` <carton-label-popup .fixedType="${'default'}" .bizplaceName="${this._bizplaceName}"></carton-label-popup> `,
1788
+ html`
1789
+ <carton-label-popup
1790
+ .fixedType="${'default'}"
1791
+ .bizplaceName="${this._bizplaceName}"
1792
+ .enableDirectInbound="${this.enableDirectInbound}"
1793
+ .productData="${this.productData}"
1794
+ .arrivalNoticeId="${this.arrivalNoticeId}"
1795
+ ></carton-label-popup>
1796
+ `,
1688
1797
  {
1689
1798
  backdrop: true,
1690
- size: 'small',
1691
1799
  title: i18next.t('title.carton_label')
1692
1800
  }
1693
1801
  )
@@ -1706,6 +1814,7 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
1706
1814
  .productData="${this.productData}"
1707
1815
  .bizplace="${this.orderBizplace}"
1708
1816
  .strictEditable="${this._strictProductSelection}"
1817
+ .enableDirectInbound="${this.enableDirectInbound}"
1709
1818
  @completed="${this._fetchGAN.bind(this)}"
1710
1819
  ></edit-product-popup>
1711
1820
  `,
@@ -1724,6 +1833,7 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
1724
1833
  .ganNo="${this._ganNo}"
1725
1834
  .bizplace="${this.orderBizplace}"
1726
1835
  .data="${this.productData}"
1836
+ .enableDirectInbound="${this.enableDirectInbound}"
1727
1837
  @completed="${() => {
1728
1838
  this._fetchGAN()
1729
1839
  this.updateContext()
@@ -1756,11 +1866,19 @@ class ArrivalNoticeDetail extends localize(i18next)(PageView) {
1756
1866
  }
1757
1867
 
1758
1868
  openProductChangesPopup() {
1759
- openPopup(html` <view-product-changes-popup .data="${this.productData}"></view-product-changes-popup> `, {
1760
- backdrop: true,
1761
- size: 'large',
1762
- title: i18next.t('title.view_product_changes')
1763
- })
1869
+ openPopup(
1870
+ html`
1871
+ <view-product-changes-popup
1872
+ .data="${this.productData}"
1873
+ .enableDirectInbound="${this.enableDirectInbound}"
1874
+ ></view-product-changes-popup>
1875
+ `,
1876
+ {
1877
+ backdrop: true,
1878
+ size: 'large',
1879
+ title: i18next.t('title.view_product_changes')
1880
+ }
1881
+ )
1764
1882
  }
1765
1883
 
1766
1884
  async fetchUserRoleHandler() {