@things-factory/operato-wms 4.3.760 → 4.3.762
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/pages/outbound/loading-v2/delivery-order-info.js +21 -7
- package/client/pages/outbound/loading-v2/loading-execution-base.js +82 -18
- package/client/pages/outbound/loading-v2/loading-execution.js +3 -1
- package/client/pages/outbound/picking-product.js +34 -0
- package/client/pages/outbound/sorting-product.js +30 -0
- package/client/pages/outbound/tote-popup.js +226 -36
- package/dist-server/graphql/resolvers/outbound/index.js +2 -1
- package/dist-server/graphql/resolvers/outbound/index.js.map +1 -1
- package/dist-server/graphql/resolvers/outbound/undo-load.js +2 -1
- package/dist-server/graphql/resolvers/outbound/undo-load.js.map +1 -1
- package/dist-server/graphql/resolvers/outbound/unsort-item.js +65 -0
- package/dist-server/graphql/resolvers/outbound/unsort-item.js.map +1 -0
- package/dist-server/graphql/resolvers/reports/tote-loading-qc-report.js +19 -10
- package/dist-server/graphql/resolvers/reports/tote-loading-qc-report.js.map +1 -1
- package/dist-server/graphql/types/outbound/index.js +4 -0
- package/dist-server/graphql/types/outbound/index.js.map +1 -1
- package/package.json +3 -3
- package/server/graphql/resolvers/outbound/index.ts +2 -0
- package/server/graphql/resolvers/outbound/undo-load.ts +2 -1
- package/server/graphql/resolvers/outbound/unsort-item.ts +78 -0
- package/server/graphql/resolvers/reports/tote-loading-qc-report.ts +34 -11
- package/server/graphql/types/outbound/index.ts +4 -0
- package/translations/en.json +7 -0
- package/translations/ko.json +6 -0
- package/translations/ms.json +6 -0
- package/translations/zh.json +6 -0
|
@@ -6,7 +6,7 @@ import { css, html, LitElement } from 'lit-element'
|
|
|
6
6
|
|
|
7
7
|
import { MultiColumnFormStyles, SingleColumnFormStyles } from '@things-factory/form-ui'
|
|
8
8
|
import { i18next, localize } from '@things-factory/i18n-base'
|
|
9
|
-
import { client } from '@things-factory/shell'
|
|
9
|
+
import { client, CustomAlert } from '@things-factory/shell'
|
|
10
10
|
import { ScrollbarStyles } from '@things-factory/styles'
|
|
11
11
|
import { isMobileDevice } from '@things-factory/utils'
|
|
12
12
|
import { TOTE_STATUS } from '../constants'
|
|
@@ -20,6 +20,7 @@ class TotePopup extends localize(i18next)(LitElement) {
|
|
|
20
20
|
data: Object,
|
|
21
21
|
orderNo: String,
|
|
22
22
|
toteNo: String,
|
|
23
|
+
minimumSealNumber: Number,
|
|
23
24
|
_totalSeal: Number,
|
|
24
25
|
_selectedToteNo: String,
|
|
25
26
|
_toteNoList: Object,
|
|
@@ -76,11 +77,26 @@ class TotePopup extends localize(i18next)(LitElement) {
|
|
|
76
77
|
.break {
|
|
77
78
|
word-wrap: break-word;
|
|
78
79
|
}
|
|
80
|
+
.mobile-hint {
|
|
81
|
+
padding: 10px;
|
|
82
|
+
background-color: var(--primary-light-color, #f0f0f0);
|
|
83
|
+
border-left: 4px solid var(--primary-color, #2196f3);
|
|
84
|
+
margin: 10px;
|
|
85
|
+
font-size: 0.9em;
|
|
86
|
+
}
|
|
87
|
+
.refresh-button {
|
|
88
|
+
margin: 10px;
|
|
89
|
+
display: flex;
|
|
90
|
+
justify-content: center;
|
|
91
|
+
}
|
|
79
92
|
`
|
|
80
93
|
]
|
|
81
94
|
}
|
|
82
95
|
|
|
83
96
|
render() {
|
|
97
|
+
const shouldShowSealSection = this._shouldShowSealSection()
|
|
98
|
+
const sealInputDisabled = !this.toteNo || this.toteNo === ''
|
|
99
|
+
|
|
84
100
|
return html`
|
|
85
101
|
<form class="multi-column-form">
|
|
86
102
|
<fieldset>
|
|
@@ -121,34 +137,46 @@ class TotePopup extends localize(i18next)(LitElement) {
|
|
|
121
137
|
</fieldset>
|
|
122
138
|
</form>
|
|
123
139
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
140
|
+
${shouldShowSealSection
|
|
141
|
+
? html`
|
|
142
|
+
<form class="multi-column-form">
|
|
143
|
+
<fieldset>
|
|
144
|
+
<label>${i18next.t('field.seal_no')}</label>
|
|
145
|
+
<barcode-scanable-input
|
|
146
|
+
name="sealNo"
|
|
147
|
+
custom-input
|
|
148
|
+
?disabled="${sealInputDisabled}"
|
|
149
|
+
@keypress="${e => {
|
|
150
|
+
if (e.keyCode === 13) {
|
|
151
|
+
e.preventDefault()
|
|
152
|
+
this.sealNo = this.sealNoInput.value
|
|
153
|
+
if (this.toteNo) {
|
|
154
|
+
this._sealTote()
|
|
155
|
+
} else {
|
|
156
|
+
this._showToast({ message: i18next.t('text.tote_is_not_scanned') })
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}}"
|
|
160
|
+
></barcode-scanable-input>
|
|
161
|
+
</fieldset>
|
|
162
|
+
|
|
163
|
+
<label>${i18next.t('field.scanned')} (${this._totalSeal || 0})</label>
|
|
164
|
+
<select name="sealNoList">
|
|
165
|
+
<option value="">-- ${i18next.t('text.seal_number')} --</option>
|
|
166
|
+
${(this._sealNoList?.orderToteSeals || []).map(
|
|
167
|
+
list => html` <option value="${list.name}">${list.name}</option> `
|
|
168
|
+
)}
|
|
169
|
+
</select>
|
|
170
|
+
</form>
|
|
171
|
+
`
|
|
172
|
+
: ''}
|
|
173
|
+
${isMobileDevice() && this._selectedToteNo?.length > 0
|
|
174
|
+
? html`
|
|
175
|
+
<div class="mobile-hint">
|
|
176
|
+
${i18next.t('text.viewing_items_in_tote')}: <strong>${this._selectedToteNo[0].name}</strong>
|
|
177
|
+
</div>
|
|
178
|
+
`
|
|
179
|
+
: ''}
|
|
152
180
|
|
|
153
181
|
<div class="grist-container">
|
|
154
182
|
<div class="grist">
|
|
@@ -161,9 +189,35 @@ class TotePopup extends localize(i18next)(LitElement) {
|
|
|
161
189
|
</div>
|
|
162
190
|
</div>
|
|
163
191
|
|
|
192
|
+
${isMobileDevice()
|
|
193
|
+
? html`
|
|
194
|
+
<div class="refresh-button">
|
|
195
|
+
<mwc-button
|
|
196
|
+
icon="refresh"
|
|
197
|
+
@click=${async () => {
|
|
198
|
+
if (this.grist) {
|
|
199
|
+
await this.grist.fetch()
|
|
200
|
+
this._showToast({ type: 'info', message: i18next.t('text.list_refreshed') })
|
|
201
|
+
}
|
|
202
|
+
}}
|
|
203
|
+
label="${i18next.t('button.refresh')}"
|
|
204
|
+
></mwc-button>
|
|
205
|
+
</div>
|
|
206
|
+
`
|
|
207
|
+
: ''}
|
|
208
|
+
|
|
164
209
|
<div class="button-container">
|
|
210
|
+
${this._shouldShowUndoButton()
|
|
211
|
+
? html`
|
|
212
|
+
<mwc-button
|
|
213
|
+
@click=${this._undoSelectedItems.bind(this)}
|
|
214
|
+
raised
|
|
215
|
+
style="--mdc-theme-primary: var(--status-warning-color, #ff9800); margin-right: 10px;"
|
|
216
|
+
label="${i18next.t('button.undo')}"
|
|
217
|
+
></mwc-button>
|
|
218
|
+
`
|
|
219
|
+
: ''}
|
|
165
220
|
<mwc-button
|
|
166
|
-
danger
|
|
167
221
|
@click=${() => {
|
|
168
222
|
this.dispatchEvent(
|
|
169
223
|
new CustomEvent('completed', {
|
|
@@ -188,11 +242,25 @@ class TotePopup extends localize(i18next)(LitElement) {
|
|
|
188
242
|
}
|
|
189
243
|
|
|
190
244
|
get sealNoInput() {
|
|
191
|
-
return this.shadowRoot.querySelector('barcode-scanable-input[name=sealNo]')
|
|
245
|
+
return this.shadowRoot.querySelector('barcode-scanable-input[name=sealNo]')?.shadowRoot?.querySelector('input')
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
_shouldShowSealSection() {
|
|
249
|
+
// Only show seal section if minimumSealNumber is greater than 0
|
|
250
|
+
return (this.minimumSealNumber || 0) > 0
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
_shouldShowUndoButton() {
|
|
254
|
+
// Show undo button only if selected tote is not sealed
|
|
255
|
+
const selectedTote = this._selectedToteNo?.[0]
|
|
256
|
+
return selectedTote && !selectedTote?.closedDate
|
|
192
257
|
}
|
|
193
258
|
|
|
194
259
|
_focusOnSealNoInput() {
|
|
195
|
-
|
|
260
|
+
const sealInput = this.sealNoInput
|
|
261
|
+
if (sealInput) {
|
|
262
|
+
setTimeout(() => sealInput.focus(), 50)
|
|
263
|
+
}
|
|
196
264
|
}
|
|
197
265
|
|
|
198
266
|
_focusOnToteNoInput() {
|
|
@@ -201,28 +269,36 @@ class TotePopup extends localize(i18next)(LitElement) {
|
|
|
201
269
|
|
|
202
270
|
async firstUpdated() {
|
|
203
271
|
this.config = {
|
|
272
|
+
list: { fields: ['sku', 'packingType', 'pickedQty'] },
|
|
204
273
|
pagination: { pages: [10, 20, 50, 100] },
|
|
205
274
|
rows: {
|
|
206
|
-
appendable: false
|
|
275
|
+
appendable: false,
|
|
276
|
+
selectable: {
|
|
277
|
+
multiple: true
|
|
278
|
+
}
|
|
207
279
|
},
|
|
208
280
|
columns: [
|
|
209
281
|
{ type: 'gutter', gutterName: 'sequence' },
|
|
282
|
+
{ type: 'gutter', gutterName: 'row-selector', multiple: true },
|
|
210
283
|
{
|
|
211
284
|
type: 'string',
|
|
212
285
|
name: 'sku',
|
|
213
286
|
header: i18next.t('field.sku'),
|
|
287
|
+
label: true,
|
|
214
288
|
width: 180
|
|
215
289
|
},
|
|
216
290
|
{
|
|
217
291
|
type: 'string',
|
|
218
292
|
name: 'packingType',
|
|
219
293
|
header: i18next.t('field.packing_type'),
|
|
294
|
+
label: true,
|
|
220
295
|
width: 180
|
|
221
296
|
},
|
|
222
297
|
{
|
|
223
298
|
type: 'string',
|
|
224
299
|
name: 'pickedQty',
|
|
225
300
|
header: i18next.t('field.picked_qty'),
|
|
301
|
+
label: true,
|
|
226
302
|
width: 180
|
|
227
303
|
}
|
|
228
304
|
]
|
|
@@ -269,7 +345,8 @@ class TotePopup extends localize(i18next)(LitElement) {
|
|
|
269
345
|
toteNo: this._selectedToteNo[0].name,
|
|
270
346
|
sortings,
|
|
271
347
|
orderNo: this.orderNo
|
|
272
|
-
}
|
|
348
|
+
},
|
|
349
|
+
fetchPolicy: 'no-cache'
|
|
273
350
|
})
|
|
274
351
|
|
|
275
352
|
if (!response.errors) {
|
|
@@ -279,7 +356,10 @@ class TotePopup extends localize(i18next)(LitElement) {
|
|
|
279
356
|
}
|
|
280
357
|
|
|
281
358
|
if (this.toteNo && this.toteNo !== '') {
|
|
282
|
-
|
|
359
|
+
// Only focus on seal input if seal section is visible
|
|
360
|
+
if (this._shouldShowSealSection()) {
|
|
361
|
+
this._focusOnSealNoInput()
|
|
362
|
+
}
|
|
283
363
|
} else {
|
|
284
364
|
this._focusOnToteNoInput()
|
|
285
365
|
}
|
|
@@ -306,6 +386,21 @@ class TotePopup extends localize(i18next)(LitElement) {
|
|
|
306
386
|
|
|
307
387
|
if (result) {
|
|
308
388
|
await this._checkToteAvailability()
|
|
389
|
+
|
|
390
|
+
// After successful tote scan, refresh the tote list and auto-select the scanned tote
|
|
391
|
+
if (this.toteNo && this.toteNo !== '') {
|
|
392
|
+
await this._fetchToteList()
|
|
393
|
+
|
|
394
|
+
// Auto-select the scanned tote for PDA/mobile users
|
|
395
|
+
const scannedTote = this._toteNoList?.find(tote => tote.name === this.toteNo)
|
|
396
|
+
if (scannedTote) {
|
|
397
|
+
this._selectedToteNo = [scannedTote]
|
|
398
|
+
// Trigger grist to fetch items for the selected tote
|
|
399
|
+
if (this.grist) {
|
|
400
|
+
await this.grist.fetch()
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
}
|
|
309
404
|
} else {
|
|
310
405
|
this.toteNoInput.value = ''
|
|
311
406
|
this.toteNo = ''
|
|
@@ -315,7 +410,10 @@ class TotePopup extends localize(i18next)(LitElement) {
|
|
|
315
410
|
}
|
|
316
411
|
|
|
317
412
|
if (this.toteNo && this.toteNo !== '') {
|
|
318
|
-
|
|
413
|
+
// Only focus on seal input if seal section is visible
|
|
414
|
+
if (this._shouldShowSealSection()) {
|
|
415
|
+
this._focusOnSealNoInput()
|
|
416
|
+
}
|
|
319
417
|
} else {
|
|
320
418
|
this._focusOnToteNoInput()
|
|
321
419
|
}
|
|
@@ -420,6 +518,7 @@ class TotePopup extends localize(i18next)(LitElement) {
|
|
|
420
518
|
items {
|
|
421
519
|
id
|
|
422
520
|
name
|
|
521
|
+
closedDate
|
|
423
522
|
orderToteSeals {
|
|
424
523
|
id
|
|
425
524
|
name
|
|
@@ -446,6 +545,97 @@ class TotePopup extends localize(i18next)(LitElement) {
|
|
|
446
545
|
}
|
|
447
546
|
}
|
|
448
547
|
|
|
548
|
+
async _undoSelectedItems() {
|
|
549
|
+
// Get selected rows from grist
|
|
550
|
+
const selectedRecords = this.grist.selected
|
|
551
|
+
|
|
552
|
+
if (!selectedRecords || selectedRecords.length === 0) {
|
|
553
|
+
await CustomAlert({
|
|
554
|
+
type: 'info',
|
|
555
|
+
title: i18next.t('text.nothing_selected'),
|
|
556
|
+
text: i18next.t('text.please_select_items_to_undo')
|
|
557
|
+
})
|
|
558
|
+
return
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
// Confirm before deleting
|
|
562
|
+
const itemCount = selectedRecords.length
|
|
563
|
+
const itemText =
|
|
564
|
+
itemCount > 1
|
|
565
|
+
? `${itemCount} items`
|
|
566
|
+
: `${selectedRecords[0].sku} (${selectedRecords[0].pickedQty} ${selectedRecords[0].packingType})`
|
|
567
|
+
|
|
568
|
+
const answer = await CustomAlert({
|
|
569
|
+
type: 'warning',
|
|
570
|
+
title: i18next.t('button.undo'),
|
|
571
|
+
text: i18next.t('text.are_you_sure_to_remove_x_from_tote', { x: itemText }),
|
|
572
|
+
confirmButton: {
|
|
573
|
+
text: i18next.t('button.confirm'),
|
|
574
|
+
color: '#ff9800'
|
|
575
|
+
},
|
|
576
|
+
cancelButton: {
|
|
577
|
+
text: i18next.t('button.cancel'),
|
|
578
|
+
color: '#cfcfcf'
|
|
579
|
+
}
|
|
580
|
+
})
|
|
581
|
+
|
|
582
|
+
if (!answer.value) return
|
|
583
|
+
|
|
584
|
+
try {
|
|
585
|
+
// Undo all selected items
|
|
586
|
+
for (const record of selectedRecords) {
|
|
587
|
+
await this._unsortItem(record.id, false) // Don't show individual toasts
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
// Show single success message for all items
|
|
591
|
+
this._showToast({
|
|
592
|
+
type: 'info',
|
|
593
|
+
message:
|
|
594
|
+
itemCount > 1
|
|
595
|
+
? i18next.t('text.items_removed_from_tote', { count: itemCount })
|
|
596
|
+
: i18next.t('text.item_removed_from_tote')
|
|
597
|
+
})
|
|
598
|
+
|
|
599
|
+
// Refresh once after all items are removed
|
|
600
|
+
await this._fetchToteList()
|
|
601
|
+
await this.grist.fetch()
|
|
602
|
+
} catch (e) {
|
|
603
|
+
this._showToast(e)
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
async _unsortItem(orderToteItemId, showToast = true) {
|
|
608
|
+
try {
|
|
609
|
+
const response = await client.mutate({
|
|
610
|
+
mutation: gql`
|
|
611
|
+
mutation unsortItem($orderToteItemId: String!, $reason: String) {
|
|
612
|
+
unsortItem(orderToteItemId: $orderToteItemId, reason: $reason)
|
|
613
|
+
}
|
|
614
|
+
`,
|
|
615
|
+
variables: {
|
|
616
|
+
orderToteItemId,
|
|
617
|
+
reason: 'Removed by user from tote popup'
|
|
618
|
+
}
|
|
619
|
+
})
|
|
620
|
+
|
|
621
|
+
if (!response.errors) {
|
|
622
|
+
if (showToast) {
|
|
623
|
+
this._showToast({
|
|
624
|
+
type: 'info',
|
|
625
|
+
message: i18next.t('text.item_removed_from_tote')
|
|
626
|
+
})
|
|
627
|
+
|
|
628
|
+
// Refresh the tote list and grist
|
|
629
|
+
await this._fetchToteList()
|
|
630
|
+
await this.grist.fetch()
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
} catch (e) {
|
|
634
|
+
this._showToast(e)
|
|
635
|
+
throw e // Re-throw to stop batch processing
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
|
|
449
639
|
_showToast({ type, message }) {
|
|
450
640
|
document.dispatchEvent(
|
|
451
641
|
new CustomEvent('notify', {
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Mutation = exports.Query = void 0;
|
|
4
4
|
const get_loading_task_1 = require("./get-loading-task");
|
|
5
5
|
const sort_item_1 = require("./sort-item");
|
|
6
|
+
const unsort_item_1 = require("./unsort-item");
|
|
6
7
|
const find_loadable_release_good_1 = require("./find-loadable-release-good");
|
|
7
8
|
const find_loadable_release_good_by_bin_1 = require("./find-loadable-release-good-by-bin");
|
|
8
9
|
const loading_worksheet_v2_1 = require("./loading-worksheet-v2");
|
|
@@ -13,5 +14,5 @@ const undo_load_1 = require("./undo-load");
|
|
|
13
14
|
const warehouse_return_1 = require("./warehouse-return");
|
|
14
15
|
const complete_load_1 = require("./complete-load");
|
|
15
16
|
exports.Query = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, find_loadable_release_good_1.findLoadableReleaseGood), find_loadable_release_good_by_bin_1.findLoadableReleaseGoodByBin), loading_worksheet_v2_1.loadingWorksheetv2), my_loading_assignment_status_1.myLoadingAssignmentStatus), get_delivery_orders_1.getDeliveryOrders);
|
|
16
|
-
exports.Mutation = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, get_loading_task_1.getLoadingTask), sort_item_1.sortItem), load_by_qty_1.loadByQty), undo_load_1.undoLoad), warehouse_return_1.warehouseReturn), complete_load_1.completeLoad);
|
|
17
|
+
exports.Mutation = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, get_loading_task_1.getLoadingTask), sort_item_1.sortItem), unsort_item_1.unsortItem), load_by_qty_1.loadByQty), undo_load_1.undoLoad), warehouse_return_1.warehouseReturn), complete_load_1.completeLoad);
|
|
17
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/outbound/index.ts"],"names":[],"mappings":";;;AAAA,yDAAmD;AACnD,2CAAsC;AACtC,6EAAsE;AACtE,2FAAkF;AAClF,iEAA2D;AAC3D,+CAAyC;AACzC,iFAA0E;AAC1E,+DAAyD;AACzD,2CAAsC;AACtC,yDAAoD;AACpD,mDAA8C;AAEjC,QAAA,KAAK,6EACb,oDAAuB,GACvB,gEAA4B,GAC5B,yCAAkB,GAClB,wDAAyB,GACzB,uCAAiB,EACrB;AAEY,QAAA,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/outbound/index.ts"],"names":[],"mappings":";;;AAAA,yDAAmD;AACnD,2CAAsC;AACtC,+CAA0C;AAC1C,6EAAsE;AACtE,2FAAkF;AAClF,iEAA2D;AAC3D,+CAAyC;AACzC,iFAA0E;AAC1E,+DAAyD;AACzD,2CAAsC;AACtC,yDAAoD;AACpD,mDAA8C;AAEjC,QAAA,KAAK,6EACb,oDAAuB,GACvB,gEAA4B,GAC5B,yCAAkB,GAClB,wDAAyB,GACzB,uCAAiB,EACrB;AAEY,QAAA,QAAQ,yGAChB,iCAAc,GACd,oBAAQ,GACR,wBAAU,GACV,uBAAS,GACT,oBAAQ,GACR,kCAAe,GACf,4BAAY,EAChB"}
|
|
@@ -28,7 +28,8 @@ exports.undoLoad = {
|
|
|
28
28
|
targetInventory: { id: (0, typeorm_1.In)(doInventoryIds) },
|
|
29
29
|
type: worksheet_base_1.WORKSHEET_TYPE.LOADING,
|
|
30
30
|
status: worksheet_base_1.WORKSHEET_STATUS.DONE
|
|
31
|
-
}
|
|
31
|
+
},
|
|
32
|
+
relations: ['targetInventory']
|
|
32
33
|
});
|
|
33
34
|
// Create a map for O(1) lookup of worksheet details by targetInventory.id
|
|
34
35
|
const wsdByTargetId = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"undo-load.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/outbound/undo-load.ts"],"names":[],"mappings":";;;AAAA,qCAA2C;AAC3C,2DAAkG;AAGlG,mEAAgH;AAChH,mEAAkG;AAErF,QAAA,QAAQ,GAAG;IACtB,KAAK,CAAC,QAAQ,CAAC,CAAM,EAAE,EAAE,IAAI,EAAE,EAAE,OAAY;QAC3C,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAE7F,MAAM,aAAa,GAAkB,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAa,CAAC,CAAC,OAAO,CAAC;YACjF,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YAC3B,SAAS,EAAE,CAAC,kBAAkB,EAAE,4BAA4B,EAAE,aAAa,EAAE,8BAA8B,CAAC;SAC7G,CAAC,CAAA;QAEF,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;SAC5C;QAED,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,CAAA;QAC7C,MAAM,aAAa,GAAG,aAAa,CAAC,gBAAgB,CAAA;QAEpD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YACzB,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAa,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;YAC9D,OAAO,IAAI,CAAA;SACZ;QAED,sFAAsF;QACtF,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACrD,MAAM,gBAAgB,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,gCAAe,CAAC,CAAC,IAAI,CAAC;YACpE,KAAK,EAAE;gBACL,eAAe,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,cAAc,CAAC,EAAE;gBAC3C,IAAI,EAAE,+BAAc,CAAC,OAAO;gBAC5B,MAAM,EAAE,iCAAgB,CAAC,IAAI;aAC9B;
|
|
1
|
+
{"version":3,"file":"undo-load.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/outbound/undo-load.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.unsortItem = void 0;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
5
|
+
const sales_base_1 = require("@things-factory/sales-base");
|
|
6
|
+
exports.unsortItem = {
|
|
7
|
+
async unsortItem(_, { orderToteItemId, reason }, context) {
|
|
8
|
+
var _a, _b;
|
|
9
|
+
const { domain, user, tx } = context.state;
|
|
10
|
+
// Find the order tote item with relations
|
|
11
|
+
const orderToteItem = (await tx.getRepository(sales_base_1.OrderToteItem).findOne({
|
|
12
|
+
where: { domain, id: orderToteItemId },
|
|
13
|
+
relations: ['orderTote', 'orderInventory']
|
|
14
|
+
}));
|
|
15
|
+
if (!orderToteItem) {
|
|
16
|
+
throw new Error('Order tote item not found');
|
|
17
|
+
}
|
|
18
|
+
// Check if tote is sealed - cannot undo if sealed
|
|
19
|
+
if ((_a = orderToteItem.orderTote) === null || _a === void 0 ? void 0 : _a.closedDate) {
|
|
20
|
+
throw new Error('Cannot remove item from sealed tote.');
|
|
21
|
+
}
|
|
22
|
+
const orderInventory = orderToteItem.orderInventory;
|
|
23
|
+
const qtyToRemove = orderToteItem.qty;
|
|
24
|
+
if (!orderInventory) {
|
|
25
|
+
throw new Error('Associated order inventory not found');
|
|
26
|
+
}
|
|
27
|
+
// Validate that we can reduce the sorted quantity
|
|
28
|
+
if (orderInventory.sortedQty < qtyToRemove) {
|
|
29
|
+
throw new Error(`Cannot remove ${qtyToRemove} items. Current sorted quantity is ${orderInventory.sortedQty}`);
|
|
30
|
+
}
|
|
31
|
+
// Calculate new sorted quantity
|
|
32
|
+
const newSortedQty = orderInventory.sortedQty - qtyToRemove;
|
|
33
|
+
// Determine new status - revert to PICKED if no more sorted items
|
|
34
|
+
let newStatus = orderInventory.status;
|
|
35
|
+
if (newSortedQty === 0 && orderInventory.status === sales_base_1.ORDER_INVENTORY_STATUS.LOADING) {
|
|
36
|
+
// Check if there are other order tote items for this order inventory
|
|
37
|
+
const otherToteItems = await tx.getRepository(sales_base_1.OrderToteItem).count({
|
|
38
|
+
where: {
|
|
39
|
+
domain,
|
|
40
|
+
orderInventory: { id: orderInventory.id },
|
|
41
|
+
id: (0, typeorm_1.Not)(orderToteItemId)
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
// Only revert to PICKED if this is the last tote item (no more sorted items)
|
|
45
|
+
if (otherToteItems === 0) {
|
|
46
|
+
newStatus = sales_base_1.ORDER_INVENTORY_STATUS.SORTING;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Update the order inventory
|
|
50
|
+
await tx.getRepository(sales_base_1.OrderInventory).update(orderInventory.id, {
|
|
51
|
+
sortedQty: newSortedQty,
|
|
52
|
+
status: newStatus,
|
|
53
|
+
updatedAt: new Date(),
|
|
54
|
+
updater: user
|
|
55
|
+
});
|
|
56
|
+
// Delete the order tote item
|
|
57
|
+
await tx.getRepository(sales_base_1.OrderToteItem).delete(orderToteItem.id);
|
|
58
|
+
// Log the undo action if reason provided
|
|
59
|
+
if (reason) {
|
|
60
|
+
console.log(`[UNSORT] User ${user.name} removed ${qtyToRemove} items from tote ${(_b = orderToteItem.orderTote) === null || _b === void 0 ? void 0 : _b.name}. Reason: ${reason}`);
|
|
61
|
+
}
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=unsort-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unsort-item.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/outbound/unsort-item.ts"],"names":[],"mappings":";;;AAAA,qCAA4C;AAG5C,2DAAkG;AAErF,QAAA,UAAU,GAAG;IACxB,KAAK,CAAC,UAAU,CAAC,CAAM,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,OAAY;;QAChE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAE7F,0CAA0C;QAC1C,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAa,CAAC,CAAC,OAAO,CAAC;YACnE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE;YACtC,SAAS,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC;SAC3C,CAAC,CAAyB,CAAA;QAE3B,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;SAC7C;QAED,kDAAkD;QAClD,IAAI,MAAA,aAAa,CAAC,SAAS,0CAAE,UAAU,EAAE;YACvC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;SACxD;QAED,MAAM,cAAc,GAAmB,aAAa,CAAC,cAAc,CAAA;QACnE,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAA;QAErC,IAAI,CAAC,cAAc,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;SACxD;QAED,kDAAkD;QAClD,IAAI,cAAc,CAAC,SAAS,GAAG,WAAW,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,iBAAiB,WAAW,sCAAsC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAA;SAC9G;QAED,gCAAgC;QAChC,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS,GAAG,WAAW,CAAA;QAE3D,kEAAkE;QAClE,IAAI,SAAS,GAAG,cAAc,CAAC,MAAM,CAAA;QACrC,IAAI,YAAY,KAAK,CAAC,IAAI,cAAc,CAAC,MAAM,KAAK,mCAAsB,CAAC,OAAO,EAAE;YAClF,qEAAqE;YACrE,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAa,CAAC,CAAC,KAAK,CAAC;gBACjE,KAAK,EAAE;oBACL,MAAM;oBACN,cAAc,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE;oBACzC,EAAE,EAAE,IAAA,aAAG,EAAC,eAAe,CAAC;iBACzB;aACF,CAAC,CAAA;YAEF,6EAA6E;YAC7E,IAAI,cAAc,KAAK,CAAC,EAAE;gBACxB,SAAS,GAAG,mCAAsB,CAAC,OAAO,CAAA;aAC3C;SACF;QAED,6BAA6B;QAC7B,MAAM,EAAE,CAAC,aAAa,CAAC,2BAAc,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE;YAC/D,SAAS,EAAE,YAAY;YACvB,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;QAEF,6BAA6B;QAC7B,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAa,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;QAE9D,yCAAyC;QACzC,IAAI,MAAM,EAAE;YACV,OAAO,CAAC,GAAG,CACT,iBAAiB,IAAI,CAAC,IAAI,YAAY,WAAW,oBAAoB,MAAA,aAAa,CAAC,SAAS,0CAAE,IAAI,aAAa,MAAM,EAAE,CACxH,CAAA;SACF;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA"}
|
|
@@ -63,14 +63,17 @@ exports.loadingQcReport = {
|
|
|
63
63
|
.leftJoin('order_totes', 'ot', 'ot.id = oti.order_tote_id')
|
|
64
64
|
.leftJoin('order_tote_seals', 'ots', 'ots.order_tote_id = ot.id')
|
|
65
65
|
.innerJoin('product_details', 'pd', 'oi.product_detail_id = pd.id')
|
|
66
|
-
.where('
|
|
67
|
-
.andWhere('bizplace.id = :bizplaceId', { bizplaceId: bizplaceFilter.value })
|
|
66
|
+
.where('bizplace.id = :bizplaceId', { bizplaceId: bizplaceFilter.value })
|
|
68
67
|
.andWhere('rg.release_date <= :toDate', { toDate: toDateFilter.value })
|
|
69
68
|
.andWhere('rg.release_date >= :fromDate', { fromDate: fromDateFilter.value })
|
|
70
69
|
.andWhere('w.type = :type', { type: 'LOADING' })
|
|
71
70
|
.andWhere('rg.domain_id = :domainId', { domainId: domain.id })
|
|
71
|
+
.andWhere('rg.name IS NOT NULL')
|
|
72
|
+
.andWhere('rg.status NOT IN (:...excludedStatuses)', {
|
|
73
|
+
excludedStatuses: ['PENDING_CANCEL', 'CANCELLED', 'PENDING_WORKSHEET', 'READY_TO_PICK']
|
|
74
|
+
})
|
|
72
75
|
.groupBy('bizplace.name')
|
|
73
|
-
.addGroupBy('rg.name
|
|
76
|
+
.addGroupBy('rg.name')
|
|
74
77
|
.addGroupBy('rg.route_id')
|
|
75
78
|
.addGroupBy('rg.stop_id')
|
|
76
79
|
.addGroupBy('rg.release_date')
|
|
@@ -99,15 +102,20 @@ exports.loadingQcReport = {
|
|
|
99
102
|
console.timeEnd('loadingQcReport');
|
|
100
103
|
items = items.reduce((prev, curr, idx) => {
|
|
101
104
|
if (curr.tote) {
|
|
102
|
-
|
|
105
|
+
// Find duplicate by releaseGoodNo, tote, and additional fields to ensure proper grouping
|
|
106
|
+
let reducedItemIndex = prev.findIndex(itm => itm.releaseGoodNo === curr.releaseGoodNo &&
|
|
107
|
+
itm.tote === curr.tote &&
|
|
108
|
+
itm.bizplaceName === curr.bizplaceName);
|
|
103
109
|
if (reducedItemIndex == -1) {
|
|
104
|
-
|
|
105
|
-
prev
|
|
110
|
+
// Ensure numeric fields are properly typed when adding new item
|
|
111
|
+
prev.push(Object.assign(Object.assign({}, curr), { orderQuantity: Number(curr.orderQuantity) || 0, totalCarton: Number(curr.totalCarton) || 0, totalSeal: curr.sealId ? 1 : 0 }));
|
|
106
112
|
}
|
|
107
113
|
else {
|
|
108
|
-
|
|
109
|
-
prev[reducedItemIndex].
|
|
110
|
-
|
|
114
|
+
// Aggregate quantities with explicit numeric conversion
|
|
115
|
+
prev[reducedItemIndex].orderQuantity += Number(curr.orderQuantity) || 0;
|
|
116
|
+
prev[reducedItemIndex].totalCarton += Number(curr.totalCarton) || 0;
|
|
117
|
+
// Concatenate seal IDs only if they're unique and not null
|
|
118
|
+
if (curr.sealId && !prev[reducedItemIndex].sealId.includes(curr.sealId)) {
|
|
111
119
|
prev[reducedItemIndex].sealId = prev[reducedItemIndex].sealId.concat(', ', curr.sealId);
|
|
112
120
|
prev[reducedItemIndex].totalSeal++;
|
|
113
121
|
}
|
|
@@ -115,7 +123,8 @@ exports.loadingQcReport = {
|
|
|
115
123
|
return prev;
|
|
116
124
|
}
|
|
117
125
|
else {
|
|
118
|
-
|
|
126
|
+
// Ensure numeric fields are properly typed for items without totes
|
|
127
|
+
prev.push(Object.assign(Object.assign({}, curr), { orderQuantity: Number(curr.orderQuantity) || 0, totalCarton: Number(curr.totalCarton) || 0, totalSeal: 0 }));
|
|
119
128
|
return prev;
|
|
120
129
|
}
|
|
121
130
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tote-loading-qc-report.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/reports/tote-loading-qc-report.ts"],"names":[],"mappings":";;;AAAA,qCAA0E;AAK1E,2DAAwD;AAE3C,QAAA,eAAe,GAAG;IAC7B,KAAK,CAAC,eAAe,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAY;QAC3D,IAAI;YACF,MAAM,EAAE,MAAM,EAAE,GAAuB,OAAO,CAAC,KAAK,CAAA;YAEpD,IAAI,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;YAC9E,IAAI,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;YAC9E,IAAI,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;YAC1E,IAAI,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;YAC5E,IAAI,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;YAC1E,IAAI,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;YAE1E,IAAI,eAAe,CAAA;YACnB,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAA;YACvF,IAAI,iBAAiB,IAAI,CAAC,EAAE;gBAC1B,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAE5F,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAA;aAC5C;YAED,IAAI,aAAa,CAAA;YACjB,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;YACnF,IAAI,eAAe,IAAI,CAAC,EAAE;gBACxB,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,KAAK,CAAA;gBAErD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAA;aAC1C;YAED,MAAM,EAAE,GAAoC,IAAA,uBAAa,EAAC,wBAAW,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;YAE/F,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,cAAc,CAAC;iBACvC,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC;iBACrC,SAAS,CAAC,iBAAiB,EAAE,aAAa,CAAC;iBAC3C,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC;iBACnC,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC;iBACjC,SAAS,CAAC,iBAAiB,EAAE,aAAa,CAAC;iBAC3C,SAAS,CACR;;;;;;;;;;;;;;;;;;;cAmBI,EACJ,aAAa,
|
|
1
|
+
{"version":3,"file":"tote-loading-qc-report.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/reports/tote-loading-qc-report.ts"],"names":[],"mappings":";;;AAAA,qCAA0E;AAK1E,2DAAwD;AAE3C,QAAA,eAAe,GAAG;IAC7B,KAAK,CAAC,eAAe,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAY;QAC3D,IAAI;YACF,MAAM,EAAE,MAAM,EAAE,GAAuB,OAAO,CAAC,KAAK,CAAA;YAEpD,IAAI,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;YAC9E,IAAI,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;YAC9E,IAAI,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;YAC1E,IAAI,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;YAC5E,IAAI,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;YAC1E,IAAI,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;YAE1E,IAAI,eAAe,CAAA;YACnB,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAA;YACvF,IAAI,iBAAiB,IAAI,CAAC,EAAE;gBAC1B,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAE5F,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAA;aAC5C;YAED,IAAI,aAAa,CAAA;YACjB,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;YACnF,IAAI,eAAe,IAAI,CAAC,EAAE;gBACxB,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,KAAK,CAAA;gBAErD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAA;aAC1C;YAED,MAAM,EAAE,GAAoC,IAAA,uBAAa,EAAC,wBAAW,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;YAE/F,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,cAAc,CAAC;iBACvC,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC;iBACrC,SAAS,CAAC,iBAAiB,EAAE,aAAa,CAAC;iBAC3C,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC;iBACnC,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC;iBACjC,SAAS,CAAC,iBAAiB,EAAE,aAAa,CAAC;iBAC3C,SAAS,CACR;;;;;;;;;;;;;;;;;;;cAmBI,EACJ,aAAa,CACd;iBACA,SAAS,CAAC,gEAAgE,EAAE,eAAe,CAAC;iBAC5F,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;iBAC5B,SAAS,CAAC,uDAAuD,EAAE,SAAS,CAAC;iBAC7E,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC;iBAC/B,SAAS,CAAC,YAAY,EAAE,GAAG,EAAE,2BAA2B,CAAC;iBACzD,SAAS,CAAC,mBAAmB,EAAE,IAAI,EAAE,4BAA4B,CAAC;iBAClE,SAAS,CAAC,WAAW,EAAE,UAAU,EAAE,8BAA8B,CAAC;iBAClE,QAAQ,CAAC,kBAAkB,EAAE,KAAK,EAAE,gCAAgC,CAAC;iBACrE,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,2BAA2B,CAAC;iBAC1D,QAAQ,CAAC,kBAAkB,EAAE,KAAK,EAAE,2BAA2B,CAAC;iBAChE,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,8BAA8B,CAAC;iBAClE,KAAK,CAAC,2BAA2B,EAAE,EAAE,UAAU,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC;iBACxE,QAAQ,CAAC,4BAA4B,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC;iBACtE,QAAQ,CAAC,8BAA8B,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC;iBAC5E,QAAQ,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;iBAC/C,QAAQ,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;iBAC7D,QAAQ,CAAC,qBAAqB,CAAC;iBAC/B,QAAQ,CAAC,yCAAyC,EAAE;gBACnD,gBAAgB,EAAE,CAAC,gBAAgB,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,CAAC;aACxF,CAAC;iBACD,OAAO,CAAC,eAAe,CAAC;iBACxB,UAAU,CAAC,SAAS,CAAC;iBACrB,UAAU,CAAC,aAAa,CAAC;iBACzB,UAAU,CAAC,YAAY,CAAC;iBACxB,UAAU,CAAC,iBAAiB,CAAC;iBAC7B,UAAU,CAAC,gEAAgE,CAAC;iBAC5E,UAAU,CAAC,SAAS,CAAC;iBACrB,UAAU,CAAC,uDAAuD,CAAC;iBACnE,UAAU,CAAC,UAAU,CAAC;iBACtB,UAAU,CAAC,iBAAiB,CAAC;iBAC7B,UAAU,CAAC,iBAAiB,CAAC;iBAC7B,UAAU,CAAC,cAAc,CAAC;iBAC1B,UAAU,CAAC,eAAe,CAAC;iBAC3B,UAAU,CAAC,gBAAgB,CAAC;iBAC5B,UAAU,CAAC,OAAO,CAAC;iBACnB,UAAU,CAAC,SAAS,CAAC,CAAA;YAExB,eAAe;gBACb,CAAC,CAAC,EAAE,CAAC,QAAQ,CACT,sIAAsI,EACtI,EAAE,eAAe,EAAE,CACpB;gBACH,CAAC,CAAC,EAAE,CAAA;YAEN,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YAE1D,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,4BAA4B,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YAEhG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,0BAA0B,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YAE3F,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YAExF,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;YAClC,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;YAEhC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;YAC/B,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC,UAAU,EAAE,CAAA;YACjC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;YAElC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;gBACvC,IAAI,IAAI,CAAC,IAAI,EAAE;oBACb,yFAAyF;oBACzF,IAAI,gBAAgB,GAAG,IAAI,CAAC,SAAS,CACnC,GAAG,CAAC,EAAE,CACJ,GAAG,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa;wBACxC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;wBACtB,GAAG,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,CACzC,CAAA;oBACD,IAAI,gBAAgB,IAAI,CAAC,CAAC,EAAE;wBAC1B,gEAAgE;wBAChE,IAAI,CAAC,IAAI,iCACJ,IAAI,KACP,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAC9C,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAC1C,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAC9B,CAAA;qBACH;yBAAM;wBACL,wDAAwD;wBACxD,IAAI,CAAC,gBAAgB,CAAC,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;wBACvE,IAAI,CAAC,gBAAgB,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;wBACnE,2DAA2D;wBAC3D,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;4BACvE,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;4BACvF,IAAI,CAAC,gBAAgB,CAAC,CAAC,SAAS,EAAE,CAAA;yBACnC;qBACF;oBACD,OAAO,IAAI,CAAA;iBACZ;qBAAM;oBACL,mEAAmE;oBACnE,IAAI,CAAC,IAAI,iCACJ,IAAI,KACP,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAC9C,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAC1C,SAAS,EAAE,CAAC,IACZ,CAAA;oBACF,OAAO,IAAI,CAAA;iBACZ;YACH,CAAC,EAAE,EAAE,CAAC,CAAA;YAEN,OAAO,KAAK,CAAA;SACb;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;CACF,CAAA"}
|
|
@@ -20,6 +20,10 @@ exports.Mutation = `
|
|
|
20
20
|
worksheetDetails: [Object!]
|
|
21
21
|
toteNo: String
|
|
22
22
|
): Boolean @transaction
|
|
23
|
+
unsortItem(
|
|
24
|
+
orderToteItemId: String!
|
|
25
|
+
reason: String
|
|
26
|
+
): Boolean @transaction
|
|
23
27
|
loadByQty(worksheetDetailPatch: LoadingWorksheetDetails): Boolean @transaction
|
|
24
28
|
undoLoad(doId: String!): Boolean @transaction
|
|
25
29
|
warehouseReturn (releaseGoodNo: String!, worksheetDetails: [Object!]): Worksheet @privilege(category: "worksheet_control", privilege: "mutation") @transaction
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/types/outbound/index.ts"],"names":[],"mappings":";;;AAAA,qEAAoF;AACpF,yEAAkE;AAClE,6DAA8D;AAEjD,QAAA,KAAK,GAAG;;;;;;CAMpB,CAAA;AAEY,QAAA,QAAQ,GAAG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/types/outbound/index.ts"],"names":[],"mappings":";;;AAAA,qEAAoF;AACpF,yEAAkE;AAClE,6DAA8D;AAEjD,QAAA,KAAK,GAAG;;;;;;CAMpB,CAAA;AAEY,QAAA,QAAQ,GAAG;;;;;;;;;;;;;;;;;;CAkBvB,CAAA;AAEY,QAAA,KAAK,GAAG,CAAC,yCAAgB,EAAE,gDAAuB,EAAE,gDAAqB,EAAE,4CAAuB,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/operato-wms",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.762",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"browser": "client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
"@things-factory/transport-base": "^4.3.755",
|
|
109
109
|
"@things-factory/tutorial-ui": "^4.3.755",
|
|
110
110
|
"@things-factory/warehouse-base": "^4.3.755",
|
|
111
|
-
"@things-factory/worksheet-base": "^4.3.
|
|
111
|
+
"@things-factory/worksheet-base": "^4.3.761"
|
|
112
112
|
},
|
|
113
113
|
"devDependencies": {
|
|
114
114
|
"@things-factory/builder": "^4.3.755",
|
|
@@ -117,5 +117,5 @@
|
|
|
117
117
|
"cypress-localstorage-commands": "^1.6.1",
|
|
118
118
|
"eslint-plugin-cypress": "^2.12.1"
|
|
119
119
|
},
|
|
120
|
-
"gitHead": "
|
|
120
|
+
"gitHead": "baadfe656ab39bd1a0623465d4e722e4f6afdbda"
|
|
121
121
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { getLoadingTask } from './get-loading-task'
|
|
2
2
|
import { sortItem } from './sort-item'
|
|
3
|
+
import { unsortItem } from './unsort-item'
|
|
3
4
|
import { findLoadableReleaseGood } from './find-loadable-release-good'
|
|
4
5
|
import { findLoadableReleaseGoodByBin } from './find-loadable-release-good-by-bin'
|
|
5
6
|
import { loadingWorksheetv2 } from './loading-worksheet-v2'
|
|
@@ -21,6 +22,7 @@ export const Query = {
|
|
|
21
22
|
export const Mutation = {
|
|
22
23
|
...getLoadingTask,
|
|
23
24
|
...sortItem,
|
|
25
|
+
...unsortItem,
|
|
24
26
|
...loadByQty,
|
|
25
27
|
...undoLoad,
|
|
26
28
|
...warehouseReturn,
|