@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.
- package/client/bootstrap.js +45 -10
- package/client/index.js +2 -2
- package/client/pages/inbound/putaway-product.js +11 -1
- package/client/pages/inventory/inventory-adjustment.js +3 -0
- package/client/pages/inventory/inventory-by-product.js +1 -0
- package/client/pages/order/release-order/release-order-detail.js +6 -2
- package/client/pages/order/return-order/return-order-list.js +45 -7
- package/client/pages/order/transport-order/delivery-order-list.js +18 -0
- package/client/pages/report/custom-elccl/elccl-delivery-order-summary.js +20 -6
- package/client/pages/report/outbound-order-details-report.js +13 -18
- package/client/pages/vas/print-product-label.js +1 -1
- package/config/config.development.js +34 -3
- package/config/config.production.js +1 -0
- package/dist-server/graphql/resolvers/other/add-release-good-products.js +13 -13
- package/dist-server/graphql/resolvers/other/add-release-good-products.js.map +1 -1
- package/dist-server/graphql/resolvers/reports/outbound-order-details-report.js +4 -1
- package/dist-server/graphql/resolvers/reports/outbound-order-details-report.js.map +1 -1
- package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.js +2 -2
- package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.js.map +1 -1
- package/dist-server/graphql/types/reports/outbound-order-details-report.js +1 -0
- package/dist-server/graphql/types/reports/outbound-order-details-report.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +42 -42
- package/server/graphql/resolvers/other/add-release-good-products.ts +13 -13
- package/server/graphql/resolvers/reports/outbound-order-details-report.ts +4 -1
- package/server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.ts +2 -2
- package/server/graphql/types/reports/outbound-order-details-report.ts +1 -0
- package/translations/en.json +3 -0
- package/translations/ko.json +3 -0
- package/translations/ms.json +3 -0
- package/translations/zh.json +9 -6
package/client/bootstrap.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
98
|
-
name: html
|
|
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
|
|
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
|
@@ -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
|
})
|
|
@@ -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: '
|
|
173
|
-
header: i18next.t('field.
|
|
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: '
|
|
179
|
-
name: '
|
|
180
|
-
header: i18next.t('field.
|
|
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:
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
-
|
|
15
|
-
|
|
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:
|
|
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:
|
|
4
|
-
|
|
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: {
|