@things-factory/operato-wms 6.0.0-alpha.6 → 6.0.0-alpha.8

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 (31) hide show
  1. package/client/bootstrap.js +45 -10
  2. package/client/index.js +2 -2
  3. package/client/pages/inbound/putaway-product.js +11 -1
  4. package/client/pages/inventory/inventory-adjustment.js +3 -0
  5. package/client/pages/inventory/inventory-by-product.js +1 -0
  6. package/client/pages/order/release-order/release-order-detail.js +6 -2
  7. package/client/pages/order/return-order/return-order-list.js +45 -7
  8. package/client/pages/order/transport-order/delivery-order-list.js +18 -0
  9. package/client/pages/report/custom-elccl/elccl-delivery-order-summary.js +20 -6
  10. package/client/pages/report/outbound-order-details-report.js +13 -18
  11. package/client/pages/vas/print-product-label.js +1 -1
  12. package/config/config.development.js +34 -3
  13. package/config/config.production.js +1 -0
  14. package/dist-server/graphql/resolvers/other/add-release-good-products.js +13 -13
  15. package/dist-server/graphql/resolvers/other/add-release-good-products.js.map +1 -1
  16. package/dist-server/graphql/resolvers/reports/outbound-order-details-report.js +4 -1
  17. package/dist-server/graphql/resolvers/reports/outbound-order-details-report.js.map +1 -1
  18. package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.js +2 -2
  19. package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.js.map +1 -1
  20. package/dist-server/graphql/types/reports/outbound-order-details-report.js +1 -0
  21. package/dist-server/graphql/types/reports/outbound-order-details-report.js.map +1 -1
  22. package/dist-server/tsconfig.tsbuildinfo +1 -1
  23. package/package.json +42 -42
  24. package/server/graphql/resolvers/other/add-release-good-products.ts +13 -13
  25. package/server/graphql/resolvers/reports/outbound-order-details-report.ts +4 -1
  26. package/server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.ts +2 -2
  27. package/server/graphql/types/reports/outbound-order-details-report.ts +1 -0
  28. package/translations/en.json +3 -0
  29. package/translations/ko.json +3 -0
  30. package/translations/ms.json +3 -0
  31. package/translations/zh.json +9 -6
@@ -5,6 +5,8 @@ import '@things-factory/system-ui'
5
5
  import gql from 'graphql-tag'
6
6
  import { html } from 'lit-element'
7
7
 
8
+ import { setupMenuPart } from '@things-factory/meta-ui'
9
+ import { ADD_MORENDA } from '@things-factory/more-base'
8
10
  import { registerDefaultGroups } from '@operato/board/register-default-groups.js'
9
11
  import { APPEND_APP_TOOL } from '@things-factory/apptool-base'
10
12
  import { auth } from '@things-factory/auth-base'
@@ -38,19 +40,21 @@ export default function bootstrap() {
38
40
  /* set board-modeller group and default templates */
39
41
  registerDefaultGroups()
40
42
 
43
+ setupMenuPart({ hovering: isMobileDevice(), position: VIEWPART_POSITION.NAVBAR })
44
+
45
+
41
46
  /* setting app-tools */
42
47
  store.dispatch({
43
48
  type: APPEND_APP_TOOL,
44
49
  tool: {
45
50
  name: 'notification-badge',
46
51
  template: html`
47
- <notification-badge
48
- @click=${e => {
52
+ <notification-badge @click=${e => {
49
53
  toggleOverlay('notification', {
50
54
  backdrop: true
51
55
  })
52
56
  }}
53
- >
57
+ >
54
58
  </notification-badge>
55
59
  `,
56
60
  position: TOOL_POSITION.REAR
@@ -61,7 +65,7 @@ export default function bootstrap() {
61
65
  type: ADD_SETTING,
62
66
  setting: {
63
67
  seq: 21,
64
- template: html` <default-label-printer-setting-let></default-label-printer-setting-let> `
68
+ template: html`<default-label-printer-setting-let></default-label-printer-setting-let>`
65
69
  }
66
70
  })
67
71
 
@@ -70,7 +74,7 @@ export default function bootstrap() {
70
74
  viewpart: {
71
75
  show: false,
72
76
  hovering: 'edge',
73
- template: html` <notification-list style="min-width: 300px;"></notification-list> `
77
+ template: html`<notification-list style="min-width: 300px;"></notification-list>`
74
78
  },
75
79
  position: VIEWPART_POSITION.ASIDEBAR
76
80
  })
@@ -79,7 +83,7 @@ export default function bootstrap() {
79
83
  type: ADD_SETTING,
80
84
  setting: {
81
85
  seq: 20,
82
- template: html` <notification-setting-let></notification-setting-let> `
86
+ template: html`<notification-setting-let></notification-setting-let>`
83
87
  }
84
88
  })
85
89
 
@@ -87,15 +91,15 @@ export default function bootstrap() {
87
91
  type: ADD_SETTING,
88
92
  setting: {
89
93
  seq: 30,
90
- template: html` <release-note-setting-let></release-note-setting-let> `
94
+ template: html`<release-note-setting-let></release-note-setting-let>`
91
95
  }
92
96
  })
93
97
 
94
98
  store.dispatch({
95
99
  type: ADD_MORENDA,
96
100
  morenda: {
97
- icon: html` <mwc-icon>help</mwc-icon> `,
98
- name: html` <i18n-msg msgid="text.help"></i18n-msg> `,
101
+ icon: html`<mwc-icon>help</mwc-icon>`,
102
+ name: html`<i18n-msg msgid="text.help"></i18n-msg>`,
99
103
  action: () => {
100
104
  navigate('help')
101
105
  }
@@ -176,7 +180,7 @@ export default function bootstrap() {
176
180
  if (!ReleaseNoteNotice.seen) {
177
181
  i18next.on('initialized', () =>
178
182
  setTimeout(() => {
179
- openPopup(html` <release-note-notice></release-note-notice> `, {
183
+ openPopup(html`<release-note-notice></release-note-notice>`, {
180
184
  backdrop: true,
181
185
  size: 'large',
182
186
  title: i18next.t('title.release-note')
@@ -184,6 +188,8 @@ export default function bootstrap() {
184
188
  }, 1000)
185
189
  )
186
190
  }
191
+ // route 함수 교체
192
+ this.route = applicationDynamicRoute;
187
193
  }
188
194
 
189
195
  async function loadOpaAppSettings() {
@@ -197,3 +203,32 @@ async function loadOpaAppSettings() {
197
203
  }, {})
198
204
  })
199
205
  }
206
+
207
+
208
+
209
+ /**
210
+ * 최상위 애플리케이션의 실제 라우팅 처리 로직
211
+ *
212
+ * @param {*} page
213
+ * @returns
214
+ */
215
+ function applicationDynamicRoute(page) {
216
+ // if (!page || page == '') {
217
+ // return '/home'
218
+ // } else if (page == 'home') {
219
+ // import('./pages/home-dashboard')
220
+ // return page
221
+ // }
222
+
223
+ let modules = store.getState().app.modules;
224
+ let appModule = modules[modules.length - 1];
225
+ let appRoutes = appModule.routes;
226
+
227
+ let route = appRoutes.find(mapping => mapping.page == page)
228
+ if (route) {
229
+ import(`${route.template}`)
230
+ return page
231
+ } else {
232
+ return ''
233
+ }
234
+ }
package/client/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // store
2
- export * from './store'
2
+ // export * from './store'
3
3
 
4
4
  // actions
5
- export * from './actions/label-settings'
5
+ export * from './actions/dashboard-settings'
@@ -337,7 +337,7 @@ class PutawayProduct extends connect(store)(localize(i18next)(PageView)) {
337
337
  }
338
338
  },
339
339
  pagination: { infinite: true },
340
- list: { fields: ['completed', 'product', 'palletId', 'cartonId', 'expirationDate', 'batchId', 'qty'] },
340
+ list: { fields: ['completed', 'sku', 'product', 'palletId', 'cartonId', 'expirationDate', 'batchId', 'qty'] },
341
341
  columns: [
342
342
  { type: 'gutter', gutterName: 'sequence' },
343
343
  {
@@ -358,6 +358,13 @@ class PutawayProduct extends connect(store)(localize(i18next)(PageView)) {
358
358
  header: i18next.t('field.carton_id'),
359
359
  width: 140
360
360
  },
361
+ {
362
+ type: 'string',
363
+ name: 'sku',
364
+ label: true,
365
+ header: i18next.t('field.sku'),
366
+ width: 120
367
+ },
361
368
  {
362
369
  type: 'object',
363
370
  name: 'product',
@@ -509,6 +516,7 @@ class PutawayProduct extends connect(store)(localize(i18next)(PageView)) {
509
516
  completed: record.status === WORKSHEET_STATUS.DONE.value,
510
517
  packingTypeSize: `${record.packingType}(${record.packingSize})`,
511
518
  reusablePalletName: reusablePalletName,
519
+ sku: record.product.sku,
512
520
  expirationPeriod: record.product.expirationPeriod,
513
521
  expirationDate: record.expirationDate
514
522
  }
@@ -595,6 +603,7 @@ class PutawayProduct extends connect(store)(localize(i18next)(PageView)) {
595
603
  return {
596
604
  ...record,
597
605
  completed: record.status === WORKSHEET_STATUS.DONE.value,
606
+ sku: record.product.sku,
598
607
  expirationPeriod: record.product.expirationPeriod,
599
608
  expirationDate: record.expirationDate
600
609
  }
@@ -673,6 +682,7 @@ class PutawayProduct extends connect(store)(localize(i18next)(PageView)) {
673
682
  .map(record => {
674
683
  return {
675
684
  ...record,
685
+ sku: record.product.sku,
676
686
  completed: record.status === WORKSHEET_STATUS.DONE.value
677
687
  }
678
688
  })
@@ -610,6 +610,9 @@ class InventoryAdjustment extends connect(store)(localize(i18next)(PageView)) {
610
610
  unitCost
611
611
  inventoryItemCount
612
612
  purchaseOrderNo
613
+ orderProductRemark
614
+ arrivalNoticeRefNo
615
+ arrivalNoticeNo
613
616
  }
614
617
  total
615
618
  }
@@ -476,6 +476,7 @@ class InventoryByProduct extends localize(i18next)(PageView) {
476
476
  id: item.id,
477
477
  name: item.name,
478
478
  sku: item.sku,
479
+ brand: item.brand,
479
480
  description: item.description,
480
481
  packingType: item.packingType,
481
482
  bizplace: item.bizplace.name,
@@ -869,7 +869,11 @@ class ReleaseOrderDetail extends connect(store)(localize(i18next)(PageView)) {
869
869
 
870
870
  return {
871
871
  title: i18next.t('title.release_order_detail'),
872
- actions
872
+ actions,
873
+ printable: {
874
+ accept: ['preview'],
875
+ content: this
876
+ }
873
877
  }
874
878
  }
875
879
 
@@ -1618,7 +1622,7 @@ class ReleaseOrderDetail extends connect(store)(localize(i18next)(PageView)) {
1618
1622
  try {
1619
1623
  const response = await client.mutate({
1620
1624
  mutation: gql`
1621
- mutation generateReleaseGoodWorksheet($releaseGoodNo: String!, $currentStatus: String) {
1625
+ mutation generateReleaseGoodWorksheet($releaseGoodNo: String!, $currentStatus: String) {
1622
1626
  generateReleaseGoodWorksheet(releaseGoodNo: $releaseGoodNo, currentStatus: $currentStatus) {
1623
1627
  pickingWorksheet {
1624
1628
  name
@@ -136,6 +136,7 @@ class ReturnOrderList extends localize(i18next)(PageView) {
136
136
  type: 'string',
137
137
  name: 'name',
138
138
  header: i18next.t('field.ro'),
139
+ imex: { header: i18next.t('field.ro'), key: 'name', width: 50, type: 'string' },
139
140
  sortable: true,
140
141
  width: 150
141
142
  },
@@ -143,6 +144,7 @@ class ReturnOrderList extends localize(i18next)(PageView) {
143
144
  type: 'string',
144
145
  name: 'refNo',
145
146
  header: i18next.t('field.ref_no'),
147
+ imex: { header: i18next.t('field.ref_no'), key: 'refNo', width: 50, type: 'string' },
146
148
  sortable: true,
147
149
  width: 150
148
150
  },
@@ -150,6 +152,7 @@ class ReturnOrderList extends localize(i18next)(PageView) {
150
152
  type: 'date',
151
153
  name: 'etaDate',
152
154
  header: i18next.t('field.eta'),
155
+ imex: { header: i18next.t('field.eta'), key: 'etaDate', width: 30, type: 'string' },
153
156
  sortable: true,
154
157
  width: 120
155
158
  },
@@ -157,6 +160,7 @@ class ReturnOrderList extends localize(i18next)(PageView) {
157
160
  type: 'boolean',
158
161
  name: 'ownTransport',
159
162
  header: i18next.t('field.own_transport'),
163
+ imex: { header: i18next.t('field.own_transport'), key: 'ownTransport', width: 50, type: 'string' },
160
164
  sortable: true,
161
165
  width: 60
162
166
  },
@@ -164,22 +168,33 @@ class ReturnOrderList extends localize(i18next)(PageView) {
164
168
  type: 'string',
165
169
  name: 'status',
166
170
  header: i18next.t('field.status'),
171
+ imex: { header: i18next.t('field.status'), key: 'status', width: 50, type: 'string' },
167
172
  sortable: true,
168
173
  width: 120
169
174
  },
175
+ {
176
+ type: 'object',
177
+ name: 'creator',
178
+ header: i18next.t('field.created_by'),
179
+ imex: { header: i18next.t('field.created_by'), key: 'creator.name', width: 50, type: 'string' },
180
+ sortable: true,
181
+ width: 200
182
+ },
170
183
  {
171
184
  type: 'datetime',
172
- name: 'updatedAt',
173
- header: i18next.t('field.updated_at'),
185
+ name: 'createdAt',
186
+ header: i18next.t('field.created_at'),
187
+ imex: { header: i18next.t('field.created_at'), key: 'createdAt', width: 30, type: 'date' },
174
188
  sortable: true,
175
189
  width: 160
176
190
  },
177
191
  {
178
- type: 'object',
179
- name: 'creator',
180
- header: i18next.t('field.created_by'),
192
+ type: 'datetime',
193
+ name: 'updatedAt',
194
+ header: i18next.t('field.updated_at'),
195
+ imex: { header: i18next.t('field.updated_at'), key: 'updatedAt', width: 30, type: 'date' },
181
196
  sortable: true,
182
- width: 200
197
+ width: 160
183
198
  }
184
199
  ]
185
200
  }
@@ -244,7 +259,30 @@ class ReturnOrderList extends localize(i18next)(PageView) {
244
259
  }
245
260
 
246
261
  _exportableData() {
247
- return this.dataGrist.exportRecords()
262
+ let records = []
263
+ records = this.dataGrist.data.records
264
+
265
+ var headerSetting = this.dataGrist._config.columns
266
+ .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
267
+ .map(column => {
268
+ return column.imex
269
+ })
270
+
271
+ var data = records.map(item => {
272
+ return {
273
+ id: item.id,
274
+ ...this.dataGrist._config.columns
275
+ .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
276
+ .reduce((record, column) => {
277
+ record[column.imex.key] = column.imex.key
278
+ .split('.')
279
+ .reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
280
+ return record
281
+ }, {})
282
+ }
283
+ })
284
+
285
+ return { header: headerSetting, data: data }
248
286
  }
249
287
  }
250
288
 
@@ -278,6 +278,22 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
278
278
  sortable: true,
279
279
  width: 150
280
280
  },
281
+ {
282
+ type: 'string',
283
+ name: 'palletQty',
284
+ header: i18next.t('field.total_pallet'),
285
+ imex: { header: i18next.t('field.total_pallet'), key: 'palletQty', width: 15, type: 'datetime' },
286
+ sortable: true,
287
+ width: 100
288
+ },
289
+ {
290
+ type: 'string',
291
+ name: 'deliveryAddress1',
292
+ header: i18next.t('field.delivery_address'),
293
+ imex: { header: i18next.t('field.delivery_address'), key: 'deliveryAddress1', width: 70, type: 'datetime' },
294
+ sortable: true,
295
+ width: 300
296
+ },
281
297
  {
282
298
  type: 'datetime',
283
299
  name: 'createdAt',
@@ -317,6 +333,8 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
317
333
  items {
318
334
  id
319
335
  name
336
+ deliveryAddress1
337
+ palletQty
320
338
  bizplace {
321
339
  id
322
340
  name
@@ -139,7 +139,7 @@ class ElcclDeliveryOrderSummary extends connect(store)(localize(i18next)(PageVie
139
139
  name: 'deliveryDate',
140
140
  header: i18next.t('field.date'),
141
141
  imex: { header: i18next.t('field.date'), key: 'deliveryDate', width: 20, type: 'string' },
142
- width: 150
142
+ width: 100
143
143
  },
144
144
  {
145
145
  type: 'string',
@@ -154,20 +154,34 @@ class ElcclDeliveryOrderSummary extends connect(store)(localize(i18next)(PageVie
154
154
  name: 'name',
155
155
  header: i18next.t('field.delivery_order'),
156
156
  imex: { header: i18next.t('field.delivery_order'), key: 'name', width: 30, type: 'string' },
157
- width: 300
157
+ width: 130
158
158
  },
159
159
  {
160
160
  type: 'string',
161
161
  name: 'status',
162
162
  header: i18next.t('field.status'),
163
163
  imex: { header: i18next.t('field.status'), key: 'status', width: 25, type: 'string' },
164
- width: 150
164
+ width: 100
165
+ },
166
+ {
167
+ type: 'string',
168
+ name: 'deliveryAddress1',
169
+ header: i18next.t('field.delivery_address'),
170
+ imex: { header: i18next.t('field.delivery_address'), key: 'deliveryAddress1', width: 70, type: 'string' },
171
+ width: 300
172
+ },
173
+ {
174
+ type: 'string',
175
+ name: 'palletQty',
176
+ header: i18next.t('field.total_pallet'),
177
+ imex: { header: i18next.t('field.total_pallet'), key: 'palletQty', width: 15, type: 'string' },
178
+ width: 100
165
179
  },
166
180
  {
167
181
  type: 'float',
168
182
  name: 'remark',
169
183
  header: i18next.t('field.remark'),
170
- imex: { header: i18next.t('field.remark'), key: 'remark', width: 150, type: 'string' },
184
+ imex: { header: i18next.t('field.remark'), key: 'remark', width: 70, type: 'string' },
171
185
  width: 500
172
186
  }
173
187
  ]
@@ -177,7 +191,6 @@ class ElcclDeliveryOrderSummary extends connect(store)(localize(i18next)(PageVie
177
191
  async pageInitialized() {
178
192
  this._products = []
179
193
  this._partners = [...(await this._fetchPartners())]
180
-
181
194
  this._searchFields = this.searchFields
182
195
  this._config = this.gristConfig
183
196
  }
@@ -256,6 +269,8 @@ class ElcclDeliveryOrderSummary extends connect(store)(localize(i18next)(PageVie
256
269
  remark
257
270
  }
258
271
  remark
272
+ palletQty
273
+ deliveryAddress1
259
274
  deliveryDate
260
275
  createdAt
261
276
  }
@@ -281,7 +296,6 @@ class ElcclDeliveryOrderSummary extends connect(store)(localize(i18next)(PageVie
281
296
  product_batch: itm.inventory.batchId,
282
297
  remark: itm.remark,
283
298
  inventory_remark: itm.inventory.remark,
284
- cross_docking: itm.crossDocking,
285
299
  pallet:
286
300
  itm.inventory?.reusablePallet && itm.inventory?.reusablePallet?.name
287
301
  ? itm.inventory.reusablePallet.name
@@ -3,27 +3,13 @@ import '@things-factory/grist-ui'
3
3
  import '../inventory/inventory-by-product-detail'
4
4
 
5
5
  import gql from 'graphql-tag'
6
- import {
7
- css,
8
- html
9
- } from 'lit-element'
6
+ import { css, html } from 'lit-element'
10
7
  import { connect } from 'pwa-helpers/connect-mixin'
11
8
 
12
9
  import { getCodeByName } from '@things-factory/code-base'
13
- import {
14
- i18next,
15
- localize
16
- } from '@things-factory/i18n-base'
17
- import {
18
- client,
19
- gqlContext,
20
- PageView,
21
- store
22
- } from '@things-factory/shell'
23
- import {
24
- flattenObject,
25
- isMobileDevice
26
- } from '@things-factory/utils'
10
+ import { i18next, localize } from '@things-factory/i18n-base'
11
+ import { client, gqlContext, PageView, store } from '@things-factory/shell'
12
+ import { flattenObject, isMobileDevice } from '@things-factory/utils'
27
13
 
28
14
  class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageView)) {
29
15
  static get styles() {
@@ -314,6 +300,12 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
314
300
  header: i18next.t('field.status'),
315
301
  width: 120
316
302
  },
303
+ {
304
+ type: 'string',
305
+ name: 'orderCreatedBy',
306
+ header: i18next.t('field.order_created_by'),
307
+ width: 170
308
+ },
317
309
  {
318
310
  type: 'datetime',
319
311
  name: 'orderCreatedAt',
@@ -607,6 +599,7 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
607
599
  'containerNo',
608
600
  'containerSize',
609
601
  'palletQty',
602
+ 'orderCreatedBy',
610
603
  'orderCreatedAt',
611
604
  'pickingStart',
612
605
  'pickingComplete',
@@ -737,6 +730,7 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
737
730
  driverName
738
731
  acceptedBy
739
732
  acceptedAt
733
+ orderCreatedBy
740
734
  orderCreatedAt
741
735
  pickingStart
742
736
  pickingComplete
@@ -912,6 +906,7 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
912
906
  { header: i18next.t('field.driver_name'), key: 'driverName', width: 30, type: 'string' },
913
907
  { header: i18next.t('field.pallet_qty'), key: 'palletQty', width: 30, type: 'string' },
914
908
  { header: i18next.t('field.status'), key: 'status', width: 30, type: 'string' },
909
+ { header: i18next.t('field.order_created_by'), key: 'orderCreatedBy', width: 30, type: 'string' },
915
910
  { header: i18next.t('field.order_created_at'), key: 'orderCreatedAt', width: 30, type: 'string' },
916
911
  { header: i18next.t('field.accepted_by'), key: 'acceptedBy', width: 30, type: 'string' },
917
912
  { header: i18next.t('field.accepted_at'), key: 'acceptedAt', width: 30, type: 'string' },
@@ -553,7 +553,7 @@ class PrintProductLabel extends connect(store)(localize(i18next)(PageView)) {
553
553
  auxValue2: product.auxValue2 || '',
554
554
  bizplaceId: releaseGood.bizplace.id,
555
555
  bizplaceName: releaseGood.bizplace.name,
556
- printQty: oi.releaseQty || 0
556
+ printQty: 1
557
557
  }
558
558
 
559
559
  if (product.productDetails && product.productDetails.length) {
@@ -1,5 +1,36 @@
1
1
  module.exports = {
2
+ licenseKey: '5eyJQcm9kdWN0IjoiT3BlcmF0by10b29scyIsIkxpY2Vuc2UgVHlwZSI6IkV2YWx1YXRpb24iLCJQdXJjaGFzZSBEYXRlIjoiMjAyMi4wOS4wMiIsIkV4cGlyYXRpb24gRGF0ZSI6IjIwMjIuMDkuMzAiLCJIb3N0IEFkZHJlc3MiOiIxOTIuMTY4LjEuMjE5IiwiTWF4IFRhcmdldCBDb3VudCI6IjIwIiwiTWF4IERvbWFpbiBDb3VudCI6IjEiLCJQZXJtaXNzaW9ucyBGb3IgQm9hcmQgVXNhZ2UiOiJWaWV3ZXIsIE1vZGVsbGVyIiwiUGVybWlzc2lvbnMgRm9yIFRhaWxvciBUb29sIjoiUnVubmVyLCBTdHVkaW8iLCJLZXkiOiJBeGdxR0F4Tk13b0NLUm94S3dFQVNSZ3VJRDRGREM0NURWazdNUUFFTHhJUkVDWlRJd29XUWc4dkhnd01FaGNHREJvRUZob1dKaFlqQ2d3RUR3b0VPQlk0R2c4QUJEUUlLQ1lsTVFnSkdEd0hHaTRSRlRNcUhBa3FGZ3NyQVFCSkh3a2hTeHNJUUE0Z016Z1dGVHNmRWlzQ0dSUUpHZ3BMRHdraUJ3MFNPQVlRR1NJeEdoWW1GaU1KR1VrYkNTc01JaVFCRkJWTUp3Z29KaVVwQ2k0VUFoOGNMZ0lWS0NJTEFRVWJDQ1VBSmxnZERSbEhHdzBiTlNOS0p4UVZQQ01zS3dBSVNSZ0tIQVlmR3lJQkRFMElDd0lWSmgwU05obFZDQjRaQ0I4Skt3NG1TUXNJRGlraUxTc2tIVllLQ2h4Q0JnZ3lKUTBURmhRQ0ZSOHJLd0VxU1NBZUdDTU9DU29MRGpnZUdRRXBMeFFSRUMwbkNpNFpPUmNNT3dFTVRSc0dEQ29hQnhvM0dra2RDQmdwQndvZU5oVTRJeElaRnpjVkdpSVpVd29hREVzZkNBTUFHaWNXR0FBcEJCa1JOd05XQ2cwVk9SWU1PeEFtSmhvSEFTa1FGUkVBTFRVS0x5bEZId2tGQUJwT0ZoUUFQeElZS0NZdE5BZ1pERDBIQ2p3QUNURXZKQT09In0=91827',
3
+ port: 4000,
4
+ protocol: 'http',
2
5
  domainType: 'warehouse',
3
- useVirtualHostBasedDomain: true,
4
- accessTokenCookieKey: 'access_token.wms'
5
- }
6
+ useVirtualHostBasedDomain: false,
7
+ subdomainOffset: 2,
8
+ accessTokenCookieKey: 'access_token.wms',
9
+ logger: {
10
+ file: {
11
+ filename: 'logs/application-%DATE%.log',
12
+ datePattern: 'YYYY-MM-DD-HH',
13
+ zippedArchive: false,
14
+ maxSize: '20m',
15
+ maxFiles: '2d',
16
+ level: 'info'
17
+ },
18
+ console: {
19
+ level: 'silly'
20
+ }
21
+ },
22
+ ormconfig4Tx: null,
23
+ ormconfig: {
24
+ name: "default",
25
+ type: "postgres",
26
+ host: "localhost",
27
+ port: 5433,
28
+ database: "wmsdev",
29
+ username: "postgres",
30
+ password: "hatioLAB1008",
31
+ synchronize: true,
32
+ logging: false,
33
+ connectTimeoutMS: 30000,
34
+ extra: { poolSize: 30 },
35
+ }
36
+ }
@@ -1,4 +1,5 @@
1
1
  module.exports = {
2
+ licenseKey: '5eyJQcm9kdWN0IjoiT3BlcmF0by10b29scyIsIkxpY2Vuc2UgVHlwZSI6IkV2YWx1YXRpb24iLCJQdXJjaGFzZSBEYXRlIjoiMjAyMi4wOS4wMiIsIkV4cGlyYXRpb24gRGF0ZSI6IjIwMjIuMDkuMzAiLCJIb3N0IEFkZHJlc3MiOiIxOTIuMTY4LjEuMjE5IiwiTWF4IFRhcmdldCBDb3VudCI6IjIwIiwiTWF4IERvbWFpbiBDb3VudCI6IjEiLCJQZXJtaXNzaW9ucyBGb3IgQm9hcmQgVXNhZ2UiOiJWaWV3ZXIsIE1vZGVsbGVyIiwiUGVybWlzc2lvbnMgRm9yIFRhaWxvciBUb29sIjoiUnVubmVyLCBTdHVkaW8iLCJLZXkiOiJBeGdxR0F4Tk13b0NLUm94S3dFQVNSZ3VJRDRGREM0NURWazdNUUFFTHhJUkVDWlRJd29XUWc4dkhnd01FaGNHREJvRUZob1dKaFlqQ2d3RUR3b0VPQlk0R2c4QUJEUUlLQ1lsTVFnSkdEd0hHaTRSRlRNcUhBa3FGZ3NyQVFCSkh3a2hTeHNJUUE0Z016Z1dGVHNmRWlzQ0dSUUpHZ3BMRHdraUJ3MFNPQVlRR1NJeEdoWW1GaU1KR1VrYkNTc01JaVFCRkJWTUp3Z29KaVVwQ2k0VUFoOGNMZ0lWS0NJTEFRVWJDQ1VBSmxnZERSbEhHdzBiTlNOS0p4UVZQQ01zS3dBSVNSZ0tIQVlmR3lJQkRFMElDd0lWSmgwU05obFZDQjRaQ0I4Skt3NG1TUXNJRGlraUxTc2tIVllLQ2h4Q0JnZ3lKUTBURmhRQ0ZSOHJLd0VxU1NBZUdDTU9DU29MRGpnZUdRRXBMeFFSRUMwbkNpNFpPUmNNT3dFTVRSc0dEQ29hQnhvM0dra2RDQmdwQndvZU5oVTRJeElaRnpjVkdpSVpVd29hREVzZkNBTUFHaWNXR0FBcEJCa1JOd05XQ2cwVk9SWU1PeEFtSmhvSEFTa1FGUkVBTFRVS0x5bEZId2tGQUJwT0ZoUUFQeElZS0NZdE5BZ1pERDBIQ2p3QUNURXZKQT09In0=91827',
2
3
  protocol: 'https',
3
4
  domainType: 'warehouse',
4
5
  useVirtualHostBasedDomain: true,
@@ -61,9 +61,9 @@ exports.addReleaseGoodProducts = {
61
61
  curOrderInv = Object.assign(Object.assign({}, existingOrderInv), { releaseQty: curOrderInv.releaseQty, releaseUomValue: curOrderInv.releaseUomValue, lockedUomValue: curOrderInv.lockedUomValue, status: sales_base_1.ORDER_INVENTORY_STATUS.CANCELLED });
62
62
  let existingWorksheetDetail = await tx.getRepository(worksheet_base_1.WorksheetDetail).findOne({
63
63
  where: {
64
- worksheet: pickingWorksheet,
64
+ worksheet: { id: pickingWorksheet.id },
65
65
  type: worksheet_base_1.WORKSHEET_TYPE.PICKING,
66
- targetInventory: curOrderInv
66
+ targetInventory: { id: curOrderInv.id }
67
67
  }
68
68
  });
69
69
  existingWorksheetDetail = Object.assign(Object.assign({}, existingWorksheetDetail), { status: worksheet_base_1.WORKSHEET_STATUS.CANCELLED });
@@ -75,7 +75,7 @@ exports.addReleaseGoodProducts = {
75
75
  curOrderInv = Object.assign(Object.assign({}, existingOrderInv), { releaseQty: curOrderInv.releaseQty, releaseUomValue: curOrderInv.releaseUomValue, lockedUomValue: curOrderInv.lockedUomValue, status: sales_base_1.ORDER_INVENTORY_STATUS.PICKED });
76
76
  let existingWorksheetDetail = await tx.getRepository(worksheet_base_1.WorksheetDetail).findOne({
77
77
  where: {
78
- targetInventory: curOrderInv
78
+ targetInventory: { id: curOrderInv.id }
79
79
  }
80
80
  });
81
81
  existingWorksheetDetail = Object.assign(Object.assign({}, existingWorksheetDetail), { status: worksheet_base_1.WORKSHEET_STATUS.PICKED });
@@ -94,9 +94,9 @@ exports.addReleaseGoodProducts = {
94
94
  curOrderInv = Object.assign(Object.assign({}, existingOrderInv), { releaseQty: curOrderInv.releaseQty, releaseUomValue: curOrderInv.releaseUomValue, status: sales_base_1.ORDER_INVENTORY_STATUS.PICKING });
95
95
  let existingWorksheetDetail = await tx.getRepository(worksheet_base_1.WorksheetDetail).findOne({
96
96
  where: {
97
- worksheet: pickingWorksheet,
97
+ worksheet: { id: pickingWorksheet.id },
98
98
  type: worksheet_base_1.WORKSHEET_TYPE.PICKING,
99
- targetInventory: existingOrderInv
99
+ targetInventory: { id: existingOrderInv.id }
100
100
  }
101
101
  });
102
102
  if (existingWorksheetDetail) {
@@ -155,11 +155,11 @@ exports.addReleaseGoodProducts = {
155
155
  // check for existing released OrderInventory specifying product, batchId, packingType, and inventory
156
156
  existingOrderInv = await tx.getRepository(sales_base_1.OrderInventory).findOne({
157
157
  where: {
158
- releaseGood,
159
- product: newOrderInv.product,
158
+ releaseGood: { id: releaseGood.id },
159
+ product: { id: newOrderInv.product.id },
160
160
  batchId: newOrderInv.batchId,
161
161
  packingType: newOrderInv.packingType,
162
- inventory: foundInv
162
+ inventory: { id: foundInv.id }
163
163
  }
164
164
  });
165
165
  foundInv.lockedQty = Number(foundInv.lockedQty) + newOrderInv.releaseQty;
@@ -176,8 +176,8 @@ exports.addReleaseGoodProducts = {
176
176
  // check for existing released OrderInventory specifying product, batchId and packingType
177
177
  existingOrderInv = await tx.getRepository(sales_base_1.OrderInventory).findOne({
178
178
  where: {
179
- releaseGood,
180
- product: newOrderInv.product,
179
+ releaseGood: { id: releaseGood.id },
180
+ product: { id: newOrderInv.product.id },
181
181
  batchId: newOrderInv.batchId,
182
182
  packingType: newOrderInv.packingType
183
183
  }
@@ -196,9 +196,9 @@ exports.addReleaseGoodProducts = {
196
196
  : existingOrderInv.status });
197
197
  let existingWorksheetDetail = await tx.getRepository(worksheet_base_1.WorksheetDetail).findOne({
198
198
  where: {
199
- worksheet: pickingWorksheet,
199
+ worksheet: { id: pickingWorksheet.id },
200
200
  type: worksheet_base_1.WORKSHEET_TYPE.PICKING,
201
- targetInventory: existingOrderInv
201
+ targetInventory: { id: existingOrderInv.id }
202
202
  }
203
203
  });
204
204
  if (existingWorksheetDetail) {
@@ -251,7 +251,7 @@ exports.addReleaseGoodProducts = {
251
251
  // Update Order Product Release Qty
252
252
  let rgOrderProducts = await tx
253
253
  .getRepository(sales_base_1.OrderProduct)
254
- .find({ where: { domain: { id: domain.id }, releaseGood } });
254
+ .find({ where: { domain: { id: domain.id }, releaseGood: { id: releaseGood.id } } });
255
255
  await Promise.all(rgOrderProducts.map(async (op) => {
256
256
  const orderInventories = await tx.getRepository(sales_base_1.OrderInventory).find({
257
257
  where: {