@hitsoft/uretim-yonetimi 1.0.44 → 1.0.46
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/esm2020/lib/components/hit-filling-control/hit-filling-control.component.mjs +19 -1
- package/esm2020/lib/components/hit-filling-receipt-from-production/hit-filling-receipt-from-production.component.mjs +129 -51
- package/esm2020/lib/components/hit-issues-for-productions/hit-issues-for-productions.component.mjs +47 -13
- package/esm2020/lib/hit-proxy/hit-filling-receipt-from-production/hit-filling-receipt-from-production.service.mjs +5 -1
- package/esm2020/lib/hit-proxy/models.mjs +34 -8
- package/fesm2015/hitsoft-uretim-yonetimi.mjs +231 -70
- package/fesm2015/hitsoft-uretim-yonetimi.mjs.map +1 -1
- package/fesm2020/hitsoft-uretim-yonetimi.mjs +229 -70
- package/fesm2020/hitsoft-uretim-yonetimi.mjs.map +1 -1
- package/lib/components/hit-filling-control/hit-filling-control.component.d.ts +1 -0
- package/lib/components/hit-filling-receipt-from-production/hit-filling-receipt-from-production.component.d.ts +15 -1
- package/lib/components/hit-issues-for-productions/hit-issues-for-productions.component.d.ts +3 -0
- package/lib/hit-proxy/hit-filling-receipt-from-production/hit-filling-receipt-from-production.service.d.ts +16 -4
- package/lib/hit-proxy/models.d.ts +5 -2
- package/package.json +1 -1
|
@@ -13,7 +13,7 @@ import * as i7 from '@abp/ng.components/page';
|
|
|
13
13
|
import { PageModule } from '@abp/ng.components/page';
|
|
14
14
|
import { __awaiter } from 'tslib';
|
|
15
15
|
import { DateAdapter } from '@abp/ng.theme.shared/extensions';
|
|
16
|
-
import { firstValueFrom } from 'rxjs';
|
|
16
|
+
import { firstValueFrom, Subject } from 'rxjs';
|
|
17
17
|
import * as i4 from '@angular/forms';
|
|
18
18
|
import * as i6 from '@angular/common';
|
|
19
19
|
import * as i8 from 'devextreme-angular';
|
|
@@ -22,6 +22,7 @@ import * as i6$1 from 'devextreme-angular/ui/nested';
|
|
|
22
22
|
import * as AspNetData from 'devextreme-aspnet-data-nojquery';
|
|
23
23
|
import * as i5 from '@angular/platform-browser';
|
|
24
24
|
import * as i9 from 'devextreme-angular/core';
|
|
25
|
+
import { takeUntil, finalize } from 'rxjs/operators';
|
|
25
26
|
import * as i7$1 from 'devextreme-angular/ui/radio-group';
|
|
26
27
|
import notify from 'devextreme/ui/notify';
|
|
27
28
|
import CustomStore from 'devextreme/data/custom_store';
|
|
@@ -107,13 +108,37 @@ class HitHelper {
|
|
|
107
108
|
return suffix ? '#,##0.0000 ' + suffix : '#,##0.0000';
|
|
108
109
|
}
|
|
109
110
|
static getMeasurementFormattedWithLocalization(value, unit) {
|
|
110
|
-
const
|
|
111
|
-
const formatted = new Intl.NumberFormat(
|
|
111
|
+
const numericValue = HitHelper.toNumericValue(value);
|
|
112
|
+
const formatted = new Intl.NumberFormat('tr-TR', {
|
|
112
113
|
minimumFractionDigits: 4,
|
|
113
114
|
maximumFractionDigits: 4,
|
|
114
|
-
|
|
115
|
+
useGrouping: true,
|
|
116
|
+
}).format(numericValue);
|
|
115
117
|
return unit ? `${formatted} ${unit}` : formatted;
|
|
116
118
|
}
|
|
119
|
+
static toNumericValue(value) {
|
|
120
|
+
if (typeof value === 'number') {
|
|
121
|
+
return Number.isFinite(value) ? value : 0;
|
|
122
|
+
}
|
|
123
|
+
if (value == null || value === '') {
|
|
124
|
+
return 0;
|
|
125
|
+
}
|
|
126
|
+
const text = String(value).trim().replace(/\s/g, '');
|
|
127
|
+
const lastComma = text.lastIndexOf(',');
|
|
128
|
+
const lastDot = text.lastIndexOf('.');
|
|
129
|
+
let normalized = text;
|
|
130
|
+
if (lastComma >= 0 && lastDot >= 0) {
|
|
131
|
+
// Türkçe biçim: 10.000,2500 -> 10000.2500
|
|
132
|
+
normalized = lastComma > lastDot
|
|
133
|
+
? text.replace(/\./g, '').replace(',', '.')
|
|
134
|
+
: text.replace(/,/g, '');
|
|
135
|
+
}
|
|
136
|
+
else if (lastComma >= 0) {
|
|
137
|
+
normalized = text.replace(',', '.');
|
|
138
|
+
}
|
|
139
|
+
const parsed = Number(normalized);
|
|
140
|
+
return Number.isFinite(parsed) ? parsed : 0;
|
|
141
|
+
}
|
|
117
142
|
static getFormattedErrors(errors) {
|
|
118
143
|
if (!(errors === null || errors === void 0 ? void 0 : errors.length)) {
|
|
119
144
|
return '';
|
|
@@ -126,7 +151,7 @@ class HitHelper {
|
|
|
126
151
|
.join('\n');
|
|
127
152
|
}
|
|
128
153
|
static parseQR(barkod) {
|
|
129
|
-
//
|
|
154
|
+
// Barkod yapısı: (240)itemcode(10)partiNo(17)sonKullanmaTarihi(3103)miktar(21)seriNo
|
|
130
155
|
const marker240 = '(240)';
|
|
131
156
|
const marker10 = '(10)';
|
|
132
157
|
const marker17 = '(17)';
|
|
@@ -170,13 +195,15 @@ class HitHelper {
|
|
|
170
195
|
}
|
|
171
196
|
}
|
|
172
197
|
class Hammadde {
|
|
173
|
-
constructor(chemicalCode, lotNumber, expirationDate,
|
|
198
|
+
constructor(chemicalCode, lotNumber, expirationDate, weightGr, terminalCode, workOrderNo = '', weighingSequenceNo = '') {
|
|
174
199
|
this.chemicalCode = chemicalCode;
|
|
175
200
|
this.lotNumber = lotNumber;
|
|
176
201
|
this.expirationDate = expirationDate;
|
|
177
|
-
this.weightGr =
|
|
178
|
-
this.weightKg =
|
|
202
|
+
this.weightGr = weightGr;
|
|
203
|
+
this.weightKg = weightGr ? weightGr / 1000 : 0;
|
|
179
204
|
this.terminalCode = terminalCode;
|
|
205
|
+
this.workOrderNo = workOrderNo;
|
|
206
|
+
this.weighingSequenceNo = weighingSequenceNo;
|
|
180
207
|
}
|
|
181
208
|
}
|
|
182
209
|
|
|
@@ -887,6 +914,8 @@ class HitIssuesForProductionsComponent {
|
|
|
887
914
|
this.isEmriBarkoduGecerliMi = false;
|
|
888
915
|
this.searcheBasildiMi = false;
|
|
889
916
|
this.hammaddeQR = '';
|
|
917
|
+
this.scannedBarcodeKeys = new Set();
|
|
918
|
+
this.initialBatchNumbers = new Map();
|
|
890
919
|
this.warehouses = [];
|
|
891
920
|
this.HitHelper = HitHelper;
|
|
892
921
|
}
|
|
@@ -912,17 +941,8 @@ class HitIssuesForProductionsComponent {
|
|
|
912
941
|
this.productionOrder = response.items;
|
|
913
942
|
this.isEmriBarkoduGecerliMi = true;
|
|
914
943
|
this.unitOfMeasure = response.items.unitOfMeasurement;
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
const newIssueLine = new IssueLine();
|
|
918
|
-
newIssueLine.ItemCode = issueLine.itemCode;
|
|
919
|
-
newIssueLine.BaseLine = issueLine.lineNum;
|
|
920
|
-
newIssueLine.WarehouseCode = issueLine.warehouse;
|
|
921
|
-
newIssueLine.BaseEntry = issueLine.absoluteEntry;
|
|
922
|
-
newIssueLine.BatchNumbers = [new BatchNumber(issueLine.batchNumber, issueLine.plannedQty)];
|
|
923
|
-
return newIssueLine;
|
|
924
|
-
});
|
|
925
|
-
this.issuesForProductionPost = new IssuesForProductionPostDto(issueLines);
|
|
944
|
+
this.initialBatchNumbers = new Map(this.productionOrder.getProductionOrderLine.map(line => [line.lineNum, line.batchNumber || '']));
|
|
945
|
+
this.resetIssueGrid();
|
|
926
946
|
this.ngZone.run(() => {
|
|
927
947
|
setTimeout(() => {
|
|
928
948
|
this.nmbBoxHammaddeQR.instance.focus();
|
|
@@ -966,6 +986,21 @@ class HitIssuesForProductionsComponent {
|
|
|
966
986
|
});
|
|
967
987
|
return;
|
|
968
988
|
}
|
|
989
|
+
// Mükerrer barkod kontrolü: aynı iş emri + tartım sıra no kombinasyonu tekrar okutulamaz
|
|
990
|
+
if (parsed.workOrderNo && parsed.weighingSequenceNo) {
|
|
991
|
+
const barcodeKey = `${parsed.workOrderNo}_${parsed.weighingSequenceNo}`;
|
|
992
|
+
if (this.scannedBarcodeKeys.has(barcodeKey)) {
|
|
993
|
+
this.confirmation.error('', 'Aynı barkod tekrar okutulamaz!', this.options).subscribe({
|
|
994
|
+
next: () => {
|
|
995
|
+
this.hammaddeQR = '';
|
|
996
|
+
this.focusQRInput();
|
|
997
|
+
}
|
|
998
|
+
});
|
|
999
|
+
this.isLoading = false;
|
|
1000
|
+
return;
|
|
1001
|
+
}
|
|
1002
|
+
this.scannedBarcodeKeys.add(barcodeKey);
|
|
1003
|
+
}
|
|
969
1004
|
this.service.get(parsed.chemicalCode, this.productionOrder.absoluteEntry.toString()).subscribe({
|
|
970
1005
|
next: (response) => {
|
|
971
1006
|
if (response.isSuccessful) {
|
|
@@ -1029,6 +1064,7 @@ class HitIssuesForProductionsComponent {
|
|
|
1029
1064
|
});
|
|
1030
1065
|
}
|
|
1031
1066
|
else {
|
|
1067
|
+
this.resetIssueGrid();
|
|
1032
1068
|
this.confirmation.status$.subscribe({
|
|
1033
1069
|
next: () => {
|
|
1034
1070
|
this.focusQRInput();
|
|
@@ -1037,9 +1073,9 @@ class HitIssuesForProductionsComponent {
|
|
|
1037
1073
|
}
|
|
1038
1074
|
},
|
|
1039
1075
|
error: (e) => {
|
|
1076
|
+
this.resetIssueGrid();
|
|
1040
1077
|
this.confirmation.status$.subscribe({
|
|
1041
1078
|
next: () => {
|
|
1042
|
-
this.clearAll();
|
|
1043
1079
|
this.focusQRInput();
|
|
1044
1080
|
}
|
|
1045
1081
|
});
|
|
@@ -1057,6 +1093,32 @@ class HitIssuesForProductionsComponent {
|
|
|
1057
1093
|
this.productionOrder = null;
|
|
1058
1094
|
this.focusBarkodInput();
|
|
1059
1095
|
this.unitOfMeasure = null;
|
|
1096
|
+
this.scannedBarcodeKeys.clear();
|
|
1097
|
+
this.initialBatchNumbers.clear();
|
|
1098
|
+
}
|
|
1099
|
+
resetIssueGrid() {
|
|
1100
|
+
var _a;
|
|
1101
|
+
if (!((_a = this.productionOrder) === null || _a === void 0 ? void 0 : _a.getProductionOrderLine))
|
|
1102
|
+
return;
|
|
1103
|
+
this.productionOrder.getProductionOrderLine.forEach(line => {
|
|
1104
|
+
line.quantity = 0;
|
|
1105
|
+
line.batchNumber = this.initialBatchNumbers.get(line.lineNum) || '';
|
|
1106
|
+
});
|
|
1107
|
+
const issueLines = this.productionOrder.getProductionOrderLine.map(line => {
|
|
1108
|
+
const issueLine = new IssueLine();
|
|
1109
|
+
issueLine.ItemCode = line.itemCode;
|
|
1110
|
+
issueLine.BaseLine = line.lineNum;
|
|
1111
|
+
issueLine.WarehouseCode = line.warehouse;
|
|
1112
|
+
issueLine.BaseEntry = line.absoluteEntry;
|
|
1113
|
+
issueLine.BatchNumbers = [new BatchNumber(this.initialBatchNumbers.get(line.lineNum) || '', line.plannedQty)];
|
|
1114
|
+
return issueLine;
|
|
1115
|
+
});
|
|
1116
|
+
this.issuesForProductionPost = new IssuesForProductionPostDto(issueLines);
|
|
1117
|
+
this.scannedBarcodeKeys.clear();
|
|
1118
|
+
this.hammaddeQR = '';
|
|
1119
|
+
this.isEmriBarkoduGecerliMi = true;
|
|
1120
|
+
this.searcheBasildiMi = true;
|
|
1121
|
+
this.isLoading = false;
|
|
1060
1122
|
}
|
|
1061
1123
|
getWarehouses() {
|
|
1062
1124
|
this.isLoading = true;
|
|
@@ -1521,6 +1583,7 @@ class HitFillingControlComponent {
|
|
|
1521
1583
|
this.qrCode = '';
|
|
1522
1584
|
this.lines = [];
|
|
1523
1585
|
this.isDataLoadedFromDb = false; // DB'den veri mi geldi yoksa yeni mi
|
|
1586
|
+
this.scannedBarcodeKeys = new Set();
|
|
1524
1587
|
}
|
|
1525
1588
|
ngOnInit() {
|
|
1526
1589
|
// Initialization logic
|
|
@@ -1595,6 +1658,21 @@ class HitFillingControlComponent {
|
|
|
1595
1658
|
this.focusQRInput();
|
|
1596
1659
|
return;
|
|
1597
1660
|
}
|
|
1661
|
+
// Mükerrer barkod kontrolü: aynı iş emri + tartım sıra no kombinasyonu tekrar okutulamaz
|
|
1662
|
+
if (parsed.workOrderNo && parsed.weighingSequenceNo) {
|
|
1663
|
+
const barcodeKey = `${parsed.workOrderNo}_${parsed.weighingSequenceNo}`;
|
|
1664
|
+
if (this.scannedBarcodeKeys.has(barcodeKey)) {
|
|
1665
|
+
this.confirmation.error('', 'Aynı barkod tekrar okutulamaz!', {
|
|
1666
|
+
hideYesBtn: true,
|
|
1667
|
+
cancelText: 'Kapat',
|
|
1668
|
+
dismissible: false,
|
|
1669
|
+
});
|
|
1670
|
+
this.qrCode = '';
|
|
1671
|
+
this.focusQRInput();
|
|
1672
|
+
return;
|
|
1673
|
+
}
|
|
1674
|
+
this.scannedBarcodeKeys.add(barcodeKey);
|
|
1675
|
+
}
|
|
1598
1676
|
// Grid'de bu item'ı bul
|
|
1599
1677
|
const line = this.lines.find(x => x.itemCode === parsed.chemicalCode);
|
|
1600
1678
|
if (!line) {
|
|
@@ -1767,6 +1845,7 @@ class HitFillingControlComponent {
|
|
|
1767
1845
|
this.lines = [];
|
|
1768
1846
|
this.isDataLoadedFromDb = false;
|
|
1769
1847
|
this.isSaving = false;
|
|
1848
|
+
this.scannedBarcodeKeys.clear();
|
|
1770
1849
|
this.focusOnIsEmriNo();
|
|
1771
1850
|
}
|
|
1772
1851
|
get showKazanDegisimiButton() {
|
|
@@ -1811,6 +1890,7 @@ class HitFillingControlComponent {
|
|
|
1811
1890
|
// Grid'i refresh et
|
|
1812
1891
|
this.dataGrid.instance.refresh();
|
|
1813
1892
|
this.isDataLoadedFromDb = false; // Artık yeni veri girilecek
|
|
1893
|
+
this.scannedBarcodeKeys.clear(); // Yeni kazan için okutulmuş barkodları sıfırla
|
|
1814
1894
|
// QR input'a focus et
|
|
1815
1895
|
this.focusOnQrCode();
|
|
1816
1896
|
}
|
|
@@ -1951,6 +2031,10 @@ class HitFillingReceiptFromProductionService {
|
|
|
1951
2031
|
url: `${this.resourceEndpoint}/create-receipt`,
|
|
1952
2032
|
body: input,
|
|
1953
2033
|
}, { apiName: this.apiName });
|
|
2034
|
+
this.getOperationStatus = (operationId) => this.restService.request({
|
|
2035
|
+
method: 'GET',
|
|
2036
|
+
url: `${this.resourceEndpoint}/operations/${operationId}`,
|
|
2037
|
+
}, { apiName: this.apiName });
|
|
1954
2038
|
this.resourceEndpoint = '/api/uretim-yonetimi/filling-receipt-from-production';
|
|
1955
2039
|
}
|
|
1956
2040
|
}
|
|
@@ -1977,19 +2061,41 @@ class HitFillingReceiptFromProductionComponent {
|
|
|
1977
2061
|
this.paletTipleri = ['TAM', 'KISMI'];
|
|
1978
2062
|
this.koliAdet = null;
|
|
1979
2063
|
this.toplamMiktar = 0;
|
|
2064
|
+
this.pendingOperationId = null;
|
|
2065
|
+
this.operationStatusMessage = '';
|
|
2066
|
+
this.isCheckingOperationStatus = false;
|
|
2067
|
+
this.destroy$ = new Subject();
|
|
2068
|
+
this.statusCheckFailures = 0;
|
|
2069
|
+
this.pendingStorageKey = 'turs1013ReceiptOperation';
|
|
2070
|
+
this.errorDialogOptions = {
|
|
2071
|
+
hideYesBtn: true,
|
|
2072
|
+
cancelText: 'Kapat',
|
|
2073
|
+
dismissible: false,
|
|
2074
|
+
};
|
|
1980
2075
|
this.calcRowIndex = (row) => { var _a, _b, _c; return ((_c = (_b = (_a = this.workOrderInfo) === null || _a === void 0 ? void 0 : _a.receiptHistory) === null || _b === void 0 ? void 0 : _b.indexOf(row)) !== null && _c !== void 0 ? _c : -1) + 1; };
|
|
1981
2076
|
this.calcDocStatus = (row) => row.docStatus === 'C' ? 'Tamamlandı' : 'Beklemede';
|
|
1982
2077
|
this.formatNumber = (value) => { var _a; return (_a = value === null || value === void 0 ? void 0 : value.toLocaleString('tr-TR')) !== null && _a !== void 0 ? _a : ''; };
|
|
1983
2078
|
}
|
|
1984
2079
|
ngOnInit() {
|
|
1985
|
-
|
|
2080
|
+
this.pendingOperationId = sessionStorage.getItem(this.pendingStorageKey);
|
|
2081
|
+
if (this.pendingOperationId) {
|
|
2082
|
+
this.isSaving = true;
|
|
2083
|
+
this.operationStatusMessage = 'Önceki üretimden giriş işleminin sonucu kontrol ediliyor.';
|
|
2084
|
+
this.checkOperationStatus();
|
|
2085
|
+
}
|
|
2086
|
+
}
|
|
2087
|
+
ngOnDestroy() {
|
|
2088
|
+
if (this.statusTimer)
|
|
2089
|
+
clearTimeout(this.statusTimer);
|
|
2090
|
+
this.destroy$.next();
|
|
2091
|
+
this.destroy$.complete();
|
|
1986
2092
|
}
|
|
1987
2093
|
ngAfterViewInit() {
|
|
1988
2094
|
this.focusOnIsEmriNo();
|
|
1989
2095
|
}
|
|
1990
2096
|
getProductionOrder() {
|
|
1991
2097
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1992
|
-
if (!this.isEmriNo) {
|
|
2098
|
+
if (!this.isEmriNo || this.isSaving) {
|
|
1993
2099
|
return;
|
|
1994
2100
|
}
|
|
1995
2101
|
this.isLoading = true;
|
|
@@ -2034,19 +2140,18 @@ class HitFillingReceiptFromProductionComponent {
|
|
|
2034
2140
|
return;
|
|
2035
2141
|
}
|
|
2036
2142
|
const salPackUn = this.workOrderInfo.salPackUn || 0;
|
|
2037
|
-
debugger;
|
|
2038
2143
|
if (this.paletTipi === 'TAM') {
|
|
2039
2144
|
// Tam Palet: Pallet height × Pieces per box
|
|
2040
2145
|
const paletYukseklik = this.workOrderInfo.u_DKpaletyuseklik || 0;
|
|
2041
|
-
this.toplamMiktar = paletYukseklik * salPackUn;
|
|
2146
|
+
this.toplamMiktar = Math.round(paletYukseklik * salPackUn);
|
|
2042
2147
|
}
|
|
2043
2148
|
else {
|
|
2044
2149
|
// Kısmi Palet: Koli count × Pieces per box
|
|
2045
2150
|
const koliAdet = this.koliAdet || 0;
|
|
2046
|
-
const kismiMiktar = koliAdet * salPackUn;
|
|
2151
|
+
const kismiMiktar = Math.round(koliAdet * salPackUn);
|
|
2047
2152
|
// Calculate TAM pallet quantity for comparison
|
|
2048
2153
|
const paletYukseklik = this.workOrderInfo.u_DKpaletyuseklik || 0;
|
|
2049
|
-
const tamPaletMiktar = paletYukseklik * salPackUn;
|
|
2154
|
+
const tamPaletMiktar = Math.round(paletYukseklik * salPackUn);
|
|
2050
2155
|
// KISMI quantity should not exceed TAM pallet quantity
|
|
2051
2156
|
if (kismiMiktar > tamPaletMiktar) {
|
|
2052
2157
|
this.toplamMiktar = tamPaletMiktar;
|
|
@@ -2066,8 +2171,8 @@ class HitFillingReceiptFromProductionComponent {
|
|
|
2066
2171
|
}
|
|
2067
2172
|
}
|
|
2068
2173
|
save() {
|
|
2174
|
+
var _a;
|
|
2069
2175
|
return __awaiter(this, void 0, void 0, function* () {
|
|
2070
|
-
debugger;
|
|
2071
2176
|
if (!this.isEmriNo || !this.workOrderInfo || this.toplamMiktar <= 0 || this.isSaving) {
|
|
2072
2177
|
if (!this.isSaving) {
|
|
2073
2178
|
this.confirmation.warn('', 'Lütfen tüm alanları doldurun!', {
|
|
@@ -2078,73 +2183,129 @@ class HitFillingReceiptFromProductionComponent {
|
|
|
2078
2183
|
}
|
|
2079
2184
|
return;
|
|
2080
2185
|
}
|
|
2081
|
-
//
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2186
|
+
// Tolerans kontrolü (%15) - kalan izin backend'de hesaplanır, oran burada tekrarlanmaz.
|
|
2187
|
+
// Nihai karar Kaydet anında backend'de, DB'den yeniden okunan CmpltQty ile verilir.
|
|
2188
|
+
const kalanIzin = (_a = this.workOrderInfo.remainingAllowedQty) !== null && _a !== void 0 ? _a : 0;
|
|
2189
|
+
if (this.toplamMiktar > kalanIzin) {
|
|
2190
|
+
this.confirmation.warn('', `Tolerans sınırı aşıldı. Planlanan miktar: ${this.workOrderInfo.plannedQty}, ` +
|
|
2191
|
+
`toplam girilen: ${this.workOrderInfo.cmpltQty}, ` +
|
|
2192
|
+
`girilebilecek kalan miktar: ${kalanIzin}. İşlem kaydedilmedi.`, {
|
|
2085
2193
|
hideYesBtn: true,
|
|
2086
2194
|
cancelText: 'Kapat',
|
|
2087
2195
|
dismissible: false,
|
|
2088
2196
|
});
|
|
2089
2197
|
return;
|
|
2090
2198
|
}
|
|
2199
|
+
const operationId = this.newOperationId();
|
|
2091
2200
|
const saveData = {
|
|
2201
|
+
operationId,
|
|
2092
2202
|
docEntry: this.isEmriNo,
|
|
2093
2203
|
palletType: this.paletTipi,
|
|
2094
2204
|
koliCount: this.paletTipi === 'KISMI' ? this.koliAdet : null,
|
|
2095
|
-
totalQuantity: this.toplamMiktar
|
|
2096
|
-
warehouseCode: this.workOrderInfo.warehouse,
|
|
2097
|
-
batchNumber: '',
|
|
2098
|
-
componentsToConsume: this.prepareComponentsToConsume()
|
|
2205
|
+
totalQuantity: this.toplamMiktar
|
|
2099
2206
|
};
|
|
2207
|
+
this.pendingOperationId = operationId;
|
|
2208
|
+
sessionStorage.setItem(this.pendingStorageKey, operationId);
|
|
2100
2209
|
this.isSaving = true;
|
|
2101
2210
|
this.isLoading = true;
|
|
2102
|
-
this.
|
|
2211
|
+
this.operationStatusMessage = 'Üretimden giriş kaydediliyor, SAP belge sonucu bekleniyor.';
|
|
2212
|
+
this.service.createReceipt(saveData).pipe(takeUntil(this.destroy$)).subscribe({
|
|
2103
2213
|
next: response => {
|
|
2104
|
-
if (response === null || response === void 0 ? void 0 : response.isSuccessful)
|
|
2105
|
-
this.
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
dismissible: false,
|
|
2109
|
-
});
|
|
2110
|
-
this.clearAll();
|
|
2111
|
-
}
|
|
2112
|
-
this.isSaving = false;
|
|
2214
|
+
if ((response === null || response === void 0 ? void 0 : response.isSuccessful) && response.items)
|
|
2215
|
+
this.handleOperationStatus(response.items);
|
|
2216
|
+
else
|
|
2217
|
+
this.checkOperationStatus();
|
|
2113
2218
|
this.isLoading = false;
|
|
2114
2219
|
},
|
|
2115
2220
|
error: e => {
|
|
2116
|
-
this.isSaving = false;
|
|
2117
2221
|
this.isLoading = false;
|
|
2222
|
+
this.checkOperationStatus();
|
|
2118
2223
|
},
|
|
2119
2224
|
});
|
|
2120
2225
|
});
|
|
2121
2226
|
}
|
|
2122
|
-
|
|
2123
|
-
if (!this.
|
|
2124
|
-
return
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2227
|
+
checkOperationStatus() {
|
|
2228
|
+
if (!this.pendingOperationId || this.isCheckingOperationStatus)
|
|
2229
|
+
return;
|
|
2230
|
+
this.isCheckingOperationStatus = true;
|
|
2231
|
+
this.service.getOperationStatus(this.pendingOperationId).pipe(takeUntil(this.destroy$), finalize(() => this.isCheckingOperationStatus = false)).subscribe({
|
|
2232
|
+
next: response => {
|
|
2233
|
+
this.statusCheckFailures = 0;
|
|
2234
|
+
if ((response === null || response === void 0 ? void 0 : response.isSuccessful) && response.items)
|
|
2235
|
+
this.handleOperationStatus(response.items);
|
|
2236
|
+
else
|
|
2237
|
+
this.scheduleStatusCheck();
|
|
2238
|
+
},
|
|
2239
|
+
error: error => {
|
|
2240
|
+
// A missing row can be transient while the original POST is still validating.
|
|
2241
|
+
// Never unlock a response-lost operation solely because this GET failed.
|
|
2242
|
+
this.statusCheckFailures++;
|
|
2243
|
+
this.operationStatusMessage = 'İşlem sonucu alınamadı. SAP belgeleri doğrulanana kadar yeni giriş başlatılamaz.';
|
|
2244
|
+
if (this.statusCheckFailures === 5) {
|
|
2245
|
+
this.confirmation.warn('', `İşlem sonucu doğrulanamadı. Yeni kayıt başlatmayın; işlem anahtarını destek ekibiyle paylaşın: ${this.pendingOperationId}`, {
|
|
2246
|
+
hideYesBtn: true, cancelText: 'Kapat'
|
|
2247
|
+
});
|
|
2248
|
+
}
|
|
2249
|
+
this.scheduleStatusCheck();
|
|
2250
|
+
}
|
|
2251
|
+
});
|
|
2252
|
+
}
|
|
2253
|
+
scheduleStatusCheck() {
|
|
2254
|
+
if (this.statusTimer)
|
|
2255
|
+
clearTimeout(this.statusTimer);
|
|
2256
|
+
this.statusTimer = setTimeout(() => this.checkOperationStatus(), 3000);
|
|
2257
|
+
}
|
|
2258
|
+
refreshOperationStatus() {
|
|
2259
|
+
if (this.statusTimer)
|
|
2260
|
+
clearTimeout(this.statusTimer);
|
|
2261
|
+
this.checkOperationStatus();
|
|
2262
|
+
}
|
|
2263
|
+
handleOperationStatus(status) {
|
|
2264
|
+
if (status.state === 'Completed') {
|
|
2265
|
+
this.finishPendingOperation();
|
|
2266
|
+
const documents = [
|
|
2267
|
+
status.issueDocEntry ? `Üretim için çıkış belge iç no: ${status.issueDocEntry}.` : '',
|
|
2268
|
+
status.receiptDocEntry ? `Üretimden giriş belge iç no: ${status.receiptDocEntry}.` : '',
|
|
2269
|
+
].filter(Boolean).join(' ');
|
|
2270
|
+
this.confirmation.success('', `Üretimden giriş başarıyla gerçekleştirildi! Parti: ${status.batchNumber}. ${documents}`, {
|
|
2271
|
+
hideYesBtn: true, cancelText: 'Kapat', dismissible: false
|
|
2141
2272
|
});
|
|
2273
|
+
this.clearAll();
|
|
2274
|
+
}
|
|
2275
|
+
else if (status.state === 'Failed') {
|
|
2276
|
+
this.finishPendingOperation();
|
|
2277
|
+
this.confirmation.error('', status.error || 'Üretimden giriş kaydedilemedi.', this.errorDialogOptions);
|
|
2278
|
+
}
|
|
2279
|
+
else if (status.state === 'Inconsistent') {
|
|
2280
|
+
if (this.statusTimer)
|
|
2281
|
+
clearTimeout(this.statusTimer);
|
|
2282
|
+
this.operationStatusMessage = status.error || 'SAP giriş ve çıkış belgeleri birlikte doğrulanamadı. Belgeleri kontrol edin.';
|
|
2283
|
+
}
|
|
2284
|
+
else {
|
|
2285
|
+
this.operationStatusMessage = status.error || 'SAP belge sonucu doğrulanıyor. Sonuç kesinleşene kadar yeni giriş başlatılamaz.';
|
|
2286
|
+
this.scheduleStatusCheck();
|
|
2142
2287
|
}
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2288
|
+
}
|
|
2289
|
+
finishPendingOperation() {
|
|
2290
|
+
if (this.statusTimer)
|
|
2291
|
+
clearTimeout(this.statusTimer);
|
|
2292
|
+
this.isSaving = false;
|
|
2293
|
+
this.pendingOperationId = null;
|
|
2294
|
+
this.operationStatusMessage = '';
|
|
2295
|
+
this.statusCheckFailures = 0;
|
|
2296
|
+
sessionStorage.removeItem(this.pendingStorageKey);
|
|
2297
|
+
}
|
|
2298
|
+
newOperationId() {
|
|
2299
|
+
const bytes = new Uint8Array(16);
|
|
2300
|
+
crypto.getRandomValues(bytes);
|
|
2301
|
+
bytes[6] = (bytes[6] & 0x0f) | 0x40;
|
|
2302
|
+
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
2303
|
+
const value = Array.from(bytes, b => b.toString(16).padStart(2, '0')).join('');
|
|
2304
|
+
return `${value.slice(0, 8)}-${value.slice(8, 12)}-${value.slice(12, 16)}-${value.slice(16, 20)}-${value.slice(20)}`;
|
|
2146
2305
|
}
|
|
2147
2306
|
clearAll() {
|
|
2307
|
+
if (this.isSaving)
|
|
2308
|
+
return;
|
|
2148
2309
|
this.isWorkOrderLoaded = false;
|
|
2149
2310
|
this.isEmriNo = null;
|
|
2150
2311
|
this.workOrderInfo = null;
|
|
@@ -2171,10 +2332,10 @@ class HitFillingReceiptFromProductionComponent {
|
|
|
2171
2332
|
}
|
|
2172
2333
|
}
|
|
2173
2334
|
HitFillingReceiptFromProductionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFillingReceiptFromProductionComponent, deps: [{ token: HitFillingReceiptFromProductionService }, { token: i3.ConfirmationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
2174
|
-
HitFillingReceiptFromProductionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitFillingReceiptFromProductionComponent, selector: "lib-hit-filling-receipt-from-production", viewQueries: [{ propertyName: "nmbBoxIsEmriNo", first: true, predicate: ["isEmriNoRef"], descendants: true }, { propertyName: "radioPaletTipi", first: true, predicate: ["paletTipiRef"], descendants: true }, { propertyName: "nmbBoxKoliAdet", first: true, predicate: ["koliAdetRef"], descendants: true }], ngImport: i0, template: "<abp-page [breadcrumb]=\"false\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row\">\r\n <h3 class=\"page-title\">\r\n \u00DCretimden Giri\u015F\r\n </h3>\r\n </div>\r\n <div class=\"row text-lg-end pt-2\">\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-success btn-sm\" type=\"button\" (click)=\"save()\" [disabled]=\"isSaveButtonDisabled\">\r\n <i class=\"fa fa-check me-1\"></i>\r\n \u00DCretimden Giri\u015F Yap\r\n </button>\r\n </div>\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-warning btn-sm\" type=\"button\" (click)=\"clearAll()\">\r\n <i class=\"fa fa-broom me-1\"></i>\r\n Temizle\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"card mt-2\">\r\n <div class=\"card-body\" style=\"height: calc(100vh - 241px); overflow: auto;\">\r\n <!-- Work Order Input -->\r\n <div style=\"display: flex; align-items: center;\">\r\n <dx-number-box #isEmriNoRef class=\"me-1\" style=\"width:100%;\" label=\"\u0130\u015F Emri No\" [(value)]=\"isEmriNo\"\r\n (onChange)=\"getProductionOrder()\" (onEnterKey)=\"getProductionOrder()\" [disabled]=\"isWorkOrderLoaded\">\r\n </dx-number-box>\r\n <dx-button style=\"margin-top: 7.5px;\" icon=\"search\" type=\"default\" (onClick)=\"getProductionOrder()\"\r\n [disabled]=\"isWorkOrderLoaded\">\r\n </dx-button>\r\n </div>\r\n\r\n <!-- Work Order Information -->\r\n <div class=\"mt-3\" *ngIf=\"isWorkOrderLoaded && workOrderInfo\">\r\n <!-- Product Info -->\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <dx-text-box label=\"\u00DCr\u00FCn Kodu\" [(value)]=\"workOrderInfo.itemCode\" [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <dx-text-box label=\"\u00DCr\u00FCn Ad\u0131\" [(value)]=\"workOrderInfo.itemName\" [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mt-2\">\r\n <div class=\"col-md-3\">\r\n <dx-number-box \r\n label=\"Planlanan Miktar\" \r\n [(value)]=\"workOrderInfo.plannedQty\" \r\n [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-number-box \r\n label=\"Tamamlanan Miktar\" \r\n [(value)]=\"workOrderInfo.cmpltQty\" \r\n [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-text-box \r\n label=\"Depo\" \r\n [(value)]=\"workOrderInfo.warehouse\" \r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-text-box \r\n label=\"Ambalaj Lot\" \r\n [(value)]=\"workOrderInfo.u_TRKAMBALAJLOT\" \r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Pallet Type Selection -->\r\n <div class=\"row mt-3\">\r\n <div class=\"col-md-12\">\r\n <dx-radio-group #paletTipiRef [items]=\"paletTipleri\" layout=\"horizontal\" [(value)]=\"paletTipi\"\r\n (onValueChanged)=\"onPaletTipiChange()\">\r\n </dx-radio-group>\r\n </div>\r\n </div>\r\n\r\n <!-- Koli Count for KISMI Pallet -->\r\n <div class=\"row mt-2\" *ngIf=\"paletTipi === 'KISMI'\">\r\n <div class=\"col-md-6\">\r\n <dx-number-box #koliAdetRef label=\"Koli Adedi\" [(value)]=\"koliAdet\" (onValueChanged)=\"onKoliAdetChange()\"\r\n [min]=\"1\">\r\n </dx-number-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Calculated Total Quantity -->\r\n <div class=\"row mt-2\">\r\n <div class=\"col-md-6\">\r\n <dx-number-box label=\"Toplam Miktar (Adet)\" [(value)]=\"toplamMiktar\" [disabled]=\"true\"\r\n [stylingMode]=\"'filled'\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <dx-number-box label=\"Koli \u0130\u00E7i Adet\" [(value)]=\"workOrderInfo.salPackUn\" [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Quality Status Info -->\r\n <div class=\"row mt-2\" *ngIf=\"workOrderInfo.u_KaliteDurumu\">\r\n <div class=\"col-md-12\">\r\n <div class=\"alert alert-info\" role=\"alert\">\r\n <strong>Kalite Durumu:</strong> {{ workOrderInfo.u_KaliteDurumu }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Receipt History -->\r\n <div class=\"row mt-3\">\r\n <div class=\"col-12\">\r\n <div class=\"fw-semibold mb-1\" style=\"font-size: 13px;\">\r\n \u00DCretimden Giri\u015F Hareketleri\r\n </div>\r\n <dx-data-grid [dataSource]=\"workOrderInfo.receiptHistory\" [showBorders]=\"true\" [columnAutoWidth]=\"true\"\r\n [wordWrapEnabled]=\"false\" [rowAlternationEnabled]=\"true\" [hoverStateEnabled]=\"true\"\r\n [noDataText]=\"'Hen\u00FCz giri\u015F hareketi bulunmamaktad\u0131r.'\" [height]=\"'auto'\">\r\n <dxo-scrolling mode=\"standard\"></dxo-scrolling>\r\n <dxo-paging [enabled]=\"false\"></dxo-paging>\r\n <dxi-column caption=\"#\" name=\"rowNum\" [width]=\"40\" alignment=\"center\" [calculateCellValue]=\"calcRowIndex\"></dxi-column>\r\n <dxi-column dataField=\"docNum\" caption=\"Belge No\" [minWidth]=\"110\" alignment=\"center\"></dxi-column>\r\n <dxi-column dataField=\"batchNum\" caption=\"Parti No\" [minWidth]=\"130\" alignment=\"center\"></dxi-column>\r\n <dxi-column dataField=\"quantity\" caption=\"Miktar\" dataType=\"number\" [minWidth]=\"75\" alignment=\"center\"></dxi-column>\r\n <dxi-column dataField=\"whsName\" caption=\"Depo\" [minWidth]=\"100\" alignment=\"center\"></dxi-column>\r\n <dxi-column dataField=\"docStatus\" caption=\"Durum\" [minWidth]=\"105\" alignment=\"center\"\r\n [calculateCellValue]=\"calcDocStatus\">\r\n </dxi-column>\r\n <dxi-column dataField=\"userCode\" caption=\"Kullan\u0131c\u0131\" [minWidth]=\"80\" alignment=\"center\"></dxi-column>\r\n <dxo-summary>\r\n <dxi-total-item column=\"docNum\" summaryType=\"count\" displayFormat=\"Toplam\"></dxi-total-item>\r\n <dxi-total-item column=\"quantity\" summaryType=\"sum\" displayFormat=\"{0}\" [valueFormat]=\"formatNumber\"></dxi-total-item>\r\n </dxo-summary>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>", styles: [".page-title{margin:0;padding:0}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i7.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "component", type: i8.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i8.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i6$1.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i6$1.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i6$1.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i6$1.DxoSummaryComponent, selector: "dxo-summary", inputs: ["calculateCustomSummary", "groupItems", "recalculateWhileEditing", "skipEmptyValues", "texts", "totalItems"] }, { kind: "component", type: i6$1.DxiTotalItemComponent, selector: "dxi-total-item", inputs: ["alignment", "column", "cssClass", "customizeText", "displayFormat", "name", "showInColumn", "skipEmptyValues", "summaryType", "valueFormat"] }, { kind: "component", type: i8.DxNumberBoxComponent, selector: "dx-number-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "format", "height", "hint", "hoverStateEnabled", "inputAttr", "invalidValueMessage", "isValid", "label", "labelMode", "max", "min", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showSpinButtons", "step", "stylingMode", "tabIndex", "text", "useLargeSpinButtons", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "formatChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "invalidValueMessageChange", "isValidChange", "labelChange", "labelModeChange", "maxChange", "minChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showSpinButtonsChange", "stepChange", "stylingModeChange", "tabIndexChange", "textChange", "useLargeSpinButtonsChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i8.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i7$1.DxRadioGroupComponent, selector: "dx-radio-group", inputs: ["accessKey", "activeStateEnabled", "dataSource", "disabled", "displayExpr", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "isValid", "items", "itemTemplate", "layout", "name", "readOnly", "rtlEnabled", "tabIndex", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueExpr", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "dataSourceChange", "disabledChange", "displayExprChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "isValidChange", "itemsChange", "itemTemplateChange", "layoutChange", "nameChange", "readOnlyChange", "rtlEnabledChange", "tabIndexChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueExprChange", "visibleChange", "widthChange", "onBlur"] }] });
|
|
2335
|
+
HitFillingReceiptFromProductionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitFillingReceiptFromProductionComponent, selector: "lib-hit-filling-receipt-from-production", viewQueries: [{ propertyName: "nmbBoxIsEmriNo", first: true, predicate: ["isEmriNoRef"], descendants: true }, { propertyName: "radioPaletTipi", first: true, predicate: ["paletTipiRef"], descendants: true }, { propertyName: "nmbBoxKoliAdet", first: true, predicate: ["koliAdetRef"], descendants: true }], ngImport: i0, template: "<abp-page [breadcrumb]=\"false\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row\">\r\n <h3 class=\"page-title\">\r\n \u00DCretimden Giri\u015F\r\n </h3>\r\n </div>\r\n <div class=\"row text-lg-end pt-2\">\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-success btn-sm\" type=\"button\" (click)=\"save()\" [disabled]=\"isSaveButtonDisabled\">\r\n <i class=\"fa fa-check me-1\"></i>\r\n \u00DCretimden Giri\u015F Yap\r\n </button>\r\n </div>\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-warning btn-sm\" type=\"button\" (click)=\"clearAll()\" [disabled]=\"isSaving\">\n <i class=\"fa fa-broom me-1\"></i>\r\n Temizle\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"card mt-2\">\r\n <div class=\"card-body\" style=\"height: calc(100vh - 241px); overflow: auto;\">\r\n <div *ngIf=\"isSaving\" class=\"alert alert-warning\" role=\"status\" aria-live=\"polite\">\r\n <div>{{ operationStatusMessage }}</div>\r\n <div class=\"mt-1\">\u0130\u015Flem anahtar\u0131: {{ pendingOperationId }}</div>\r\n <button class=\"btn btn-outline-secondary btn-sm mt-2\" type=\"button\" (click)=\"refreshOperationStatus()\"\r\n [disabled]=\"isLoading || isCheckingOperationStatus\">\r\n Sonucu Tekrar Kontrol Et\r\n </button>\r\n </div>\r\n <!-- Work Order Input -->\r\n <div style=\"display: flex; align-items: center;\">\r\n <dx-number-box #isEmriNoRef class=\"me-1\" style=\"width:100%;\" label=\"\u0130\u015F Emri No\" [(value)]=\"isEmriNo\"\r\n (onChange)=\"getProductionOrder()\" (onEnterKey)=\"getProductionOrder()\" [disabled]=\"isWorkOrderLoaded || isSaving\">\n </dx-number-box>\r\n <dx-button style=\"margin-top: 7.5px;\" icon=\"search\" type=\"default\" (onClick)=\"getProductionOrder()\"\r\n [disabled]=\"isWorkOrderLoaded || isSaving\">\n </dx-button>\r\n </div>\r\n\r\n <!-- Work Order Information -->\r\n <div class=\"mt-3\" *ngIf=\"isWorkOrderLoaded && workOrderInfo\">\r\n <!-- Product Info -->\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <dx-text-box label=\"\u00DCr\u00FCn Kodu\" [(value)]=\"workOrderInfo.itemCode\" [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <dx-text-box label=\"\u00DCr\u00FCn Ad\u0131\" [(value)]=\"workOrderInfo.itemName\" [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mt-2\">\r\n <div class=\"col-md-3\">\r\n <dx-number-box \r\n label=\"Planlanan Miktar\" \r\n [(value)]=\"workOrderInfo.plannedQty\" \r\n [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-number-box \r\n label=\"Tamamlanan Miktar\" \r\n [(value)]=\"workOrderInfo.cmpltQty\" \r\n [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-text-box \r\n label=\"Depo\" \r\n [(value)]=\"workOrderInfo.warehouse\" \r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-text-box \r\n label=\"Ambalaj Lot\" \r\n [(value)]=\"workOrderInfo.u_TRKAMBALAJLOT\" \r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Pallet Type Selection -->\r\n <div class=\"row mt-3\">\r\n <div class=\"col-md-12\">\r\n <dx-radio-group #paletTipiRef [items]=\"paletTipleri\" layout=\"horizontal\" [(value)]=\"paletTipi\"\r\n (onValueChanged)=\"onPaletTipiChange()\" [disabled]=\"isSaving\">\r\n </dx-radio-group>\r\n </div>\r\n </div>\r\n\r\n <!-- Koli Count for KISMI Pallet -->\r\n <div class=\"row mt-2\" *ngIf=\"paletTipi === 'KISMI'\">\r\n <div class=\"col-md-6\">\r\n <dx-number-box #koliAdetRef label=\"Koli Adedi\" [(value)]=\"koliAdet\" (onValueChanged)=\"onKoliAdetChange()\"\r\n [min]=\"1\" [disabled]=\"isSaving\">\r\n </dx-number-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Calculated Total Quantity -->\r\n <div class=\"row mt-2\">\r\n <div class=\"col-md-4\">\r\n <dx-number-box label=\"Toplam Miktar (Adet)\" [(value)]=\"toplamMiktar\" [disabled]=\"true\"\r\n [stylingMode]=\"'filled'\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <dx-number-box label=\"Koli \u0130\u00E7i Adet\" [(value)]=\"workOrderInfo.salPackUn\" [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <dx-number-box label=\"Girilebilecek Kalan Miktar\" [(value)]=\"workOrderInfo.remainingAllowedQty\"\r\n [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Quality Status Info -->\r\n <div class=\"row mt-2\" *ngIf=\"workOrderInfo.u_KaliteDurumu\">\r\n <div class=\"col-md-12\">\r\n <div class=\"alert alert-info\" role=\"alert\">\r\n <strong>Kalite Durumu:</strong> {{ workOrderInfo.u_KaliteDurumu }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Receipt History -->\r\n <div class=\"row mt-3\">\r\n <div class=\"col-12\">\r\n <div class=\"fw-semibold mb-1\" style=\"font-size: 13px;\">\r\n \u00DCretimden Giri\u015F Hareketleri\r\n </div>\r\n <dx-data-grid [dataSource]=\"workOrderInfo.receiptHistory\" [showBorders]=\"true\" [columnAutoWidth]=\"true\"\r\n [wordWrapEnabled]=\"false\" [rowAlternationEnabled]=\"true\" [hoverStateEnabled]=\"true\"\r\n [noDataText]=\"'Hen\u00FCz giri\u015F hareketi bulunmamaktad\u0131r.'\" [height]=\"'auto'\">\r\n <dxo-scrolling mode=\"standard\"></dxo-scrolling>\r\n <dxo-paging [enabled]=\"false\"></dxo-paging>\r\n <dxi-column caption=\"#\" name=\"rowNum\" [width]=\"40\" alignment=\"center\" [calculateCellValue]=\"calcRowIndex\"></dxi-column>\r\n <dxi-column dataField=\"docNum\" caption=\"Belge No\" [minWidth]=\"110\" alignment=\"center\"></dxi-column>\r\n <dxi-column dataField=\"batchNum\" caption=\"Parti No\" [minWidth]=\"130\" alignment=\"center\"></dxi-column>\r\n <dxi-column dataField=\"quantity\" caption=\"Miktar\" dataType=\"number\" [minWidth]=\"75\" alignment=\"center\"></dxi-column>\r\n <dxi-column dataField=\"whsName\" caption=\"Depo\" [minWidth]=\"100\" alignment=\"center\"></dxi-column>\r\n <dxi-column dataField=\"docStatus\" caption=\"Durum\" [minWidth]=\"105\" alignment=\"center\"\r\n [calculateCellValue]=\"calcDocStatus\">\r\n </dxi-column>\r\n <dxi-column dataField=\"userCode\" caption=\"Kullan\u0131c\u0131\" [minWidth]=\"80\" alignment=\"center\"></dxi-column>\r\n <dxo-summary>\r\n <dxi-total-item column=\"docNum\" summaryType=\"count\" displayFormat=\"Toplam\"></dxi-total-item>\r\n <dxi-total-item column=\"quantity\" summaryType=\"sum\" displayFormat=\"{0}\" [valueFormat]=\"formatNumber\"></dxi-total-item>\r\n </dxo-summary>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\n", styles: [".page-title{margin:0;padding:0}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i7.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "component", type: i8.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i8.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i6$1.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i6$1.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i6$1.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i6$1.DxoSummaryComponent, selector: "dxo-summary", inputs: ["calculateCustomSummary", "groupItems", "recalculateWhileEditing", "skipEmptyValues", "texts", "totalItems"] }, { kind: "component", type: i6$1.DxiTotalItemComponent, selector: "dxi-total-item", inputs: ["alignment", "column", "cssClass", "customizeText", "displayFormat", "name", "showInColumn", "skipEmptyValues", "summaryType", "valueFormat"] }, { kind: "component", type: i8.DxNumberBoxComponent, selector: "dx-number-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "format", "height", "hint", "hoverStateEnabled", "inputAttr", "invalidValueMessage", "isValid", "label", "labelMode", "max", "min", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showSpinButtons", "step", "stylingMode", "tabIndex", "text", "useLargeSpinButtons", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "formatChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "invalidValueMessageChange", "isValidChange", "labelChange", "labelModeChange", "maxChange", "minChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showSpinButtonsChange", "stepChange", "stylingModeChange", "tabIndexChange", "textChange", "useLargeSpinButtonsChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i8.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i7$1.DxRadioGroupComponent, selector: "dx-radio-group", inputs: ["accessKey", "activeStateEnabled", "dataSource", "disabled", "displayExpr", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "isValid", "items", "itemTemplate", "layout", "name", "readOnly", "rtlEnabled", "tabIndex", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueExpr", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "dataSourceChange", "disabledChange", "displayExprChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "isValidChange", "itemsChange", "itemTemplateChange", "layoutChange", "nameChange", "readOnlyChange", "rtlEnabledChange", "tabIndexChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueExprChange", "visibleChange", "widthChange", "onBlur"] }] });
|
|
2175
2336
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFillingReceiptFromProductionComponent, decorators: [{
|
|
2176
2337
|
type: Component,
|
|
2177
|
-
args: [{ selector: 'lib-hit-filling-receipt-from-production', template: "<abp-page [breadcrumb]=\"false\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row\">\r\n <h3 class=\"page-title\">\r\n \u00DCretimden Giri\u015F\r\n </h3>\r\n </div>\r\n <div class=\"row text-lg-end pt-2\">\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-success btn-sm\" type=\"button\" (click)=\"save()\" [disabled]=\"isSaveButtonDisabled\">\r\n <i class=\"fa fa-check me-1\"></i>\r\n \u00DCretimden Giri\u015F Yap\r\n </button>\r\n </div>\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-warning btn-sm\" type=\"button\" (click)=\"clearAll()\">\
|
|
2338
|
+
args: [{ selector: 'lib-hit-filling-receipt-from-production', template: "<abp-page [breadcrumb]=\"false\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row\">\r\n <h3 class=\"page-title\">\r\n \u00DCretimden Giri\u015F\r\n </h3>\r\n </div>\r\n <div class=\"row text-lg-end pt-2\">\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-success btn-sm\" type=\"button\" (click)=\"save()\" [disabled]=\"isSaveButtonDisabled\">\r\n <i class=\"fa fa-check me-1\"></i>\r\n \u00DCretimden Giri\u015F Yap\r\n </button>\r\n </div>\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-warning btn-sm\" type=\"button\" (click)=\"clearAll()\" [disabled]=\"isSaving\">\n <i class=\"fa fa-broom me-1\"></i>\r\n Temizle\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"card mt-2\">\r\n <div class=\"card-body\" style=\"height: calc(100vh - 241px); overflow: auto;\">\r\n <div *ngIf=\"isSaving\" class=\"alert alert-warning\" role=\"status\" aria-live=\"polite\">\r\n <div>{{ operationStatusMessage }}</div>\r\n <div class=\"mt-1\">\u0130\u015Flem anahtar\u0131: {{ pendingOperationId }}</div>\r\n <button class=\"btn btn-outline-secondary btn-sm mt-2\" type=\"button\" (click)=\"refreshOperationStatus()\"\r\n [disabled]=\"isLoading || isCheckingOperationStatus\">\r\n Sonucu Tekrar Kontrol Et\r\n </button>\r\n </div>\r\n <!-- Work Order Input -->\r\n <div style=\"display: flex; align-items: center;\">\r\n <dx-number-box #isEmriNoRef class=\"me-1\" style=\"width:100%;\" label=\"\u0130\u015F Emri No\" [(value)]=\"isEmriNo\"\r\n (onChange)=\"getProductionOrder()\" (onEnterKey)=\"getProductionOrder()\" [disabled]=\"isWorkOrderLoaded || isSaving\">\n </dx-number-box>\r\n <dx-button style=\"margin-top: 7.5px;\" icon=\"search\" type=\"default\" (onClick)=\"getProductionOrder()\"\r\n [disabled]=\"isWorkOrderLoaded || isSaving\">\n </dx-button>\r\n </div>\r\n\r\n <!-- Work Order Information -->\r\n <div class=\"mt-3\" *ngIf=\"isWorkOrderLoaded && workOrderInfo\">\r\n <!-- Product Info -->\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <dx-text-box label=\"\u00DCr\u00FCn Kodu\" [(value)]=\"workOrderInfo.itemCode\" [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <dx-text-box label=\"\u00DCr\u00FCn Ad\u0131\" [(value)]=\"workOrderInfo.itemName\" [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mt-2\">\r\n <div class=\"col-md-3\">\r\n <dx-number-box \r\n label=\"Planlanan Miktar\" \r\n [(value)]=\"workOrderInfo.plannedQty\" \r\n [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-number-box \r\n label=\"Tamamlanan Miktar\" \r\n [(value)]=\"workOrderInfo.cmpltQty\" \r\n [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-text-box \r\n label=\"Depo\" \r\n [(value)]=\"workOrderInfo.warehouse\" \r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-text-box \r\n label=\"Ambalaj Lot\" \r\n [(value)]=\"workOrderInfo.u_TRKAMBALAJLOT\" \r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Pallet Type Selection -->\r\n <div class=\"row mt-3\">\r\n <div class=\"col-md-12\">\r\n <dx-radio-group #paletTipiRef [items]=\"paletTipleri\" layout=\"horizontal\" [(value)]=\"paletTipi\"\r\n (onValueChanged)=\"onPaletTipiChange()\" [disabled]=\"isSaving\">\r\n </dx-radio-group>\r\n </div>\r\n </div>\r\n\r\n <!-- Koli Count for KISMI Pallet -->\r\n <div class=\"row mt-2\" *ngIf=\"paletTipi === 'KISMI'\">\r\n <div class=\"col-md-6\">\r\n <dx-number-box #koliAdetRef label=\"Koli Adedi\" [(value)]=\"koliAdet\" (onValueChanged)=\"onKoliAdetChange()\"\r\n [min]=\"1\" [disabled]=\"isSaving\">\r\n </dx-number-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Calculated Total Quantity -->\r\n <div class=\"row mt-2\">\r\n <div class=\"col-md-4\">\r\n <dx-number-box label=\"Toplam Miktar (Adet)\" [(value)]=\"toplamMiktar\" [disabled]=\"true\"\r\n [stylingMode]=\"'filled'\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <dx-number-box label=\"Koli \u0130\u00E7i Adet\" [(value)]=\"workOrderInfo.salPackUn\" [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <dx-number-box label=\"Girilebilecek Kalan Miktar\" [(value)]=\"workOrderInfo.remainingAllowedQty\"\r\n [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Quality Status Info -->\r\n <div class=\"row mt-2\" *ngIf=\"workOrderInfo.u_KaliteDurumu\">\r\n <div class=\"col-md-12\">\r\n <div class=\"alert alert-info\" role=\"alert\">\r\n <strong>Kalite Durumu:</strong> {{ workOrderInfo.u_KaliteDurumu }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Receipt History -->\r\n <div class=\"row mt-3\">\r\n <div class=\"col-12\">\r\n <div class=\"fw-semibold mb-1\" style=\"font-size: 13px;\">\r\n \u00DCretimden Giri\u015F Hareketleri\r\n </div>\r\n <dx-data-grid [dataSource]=\"workOrderInfo.receiptHistory\" [showBorders]=\"true\" [columnAutoWidth]=\"true\"\r\n [wordWrapEnabled]=\"false\" [rowAlternationEnabled]=\"true\" [hoverStateEnabled]=\"true\"\r\n [noDataText]=\"'Hen\u00FCz giri\u015F hareketi bulunmamaktad\u0131r.'\" [height]=\"'auto'\">\r\n <dxo-scrolling mode=\"standard\"></dxo-scrolling>\r\n <dxo-paging [enabled]=\"false\"></dxo-paging>\r\n <dxi-column caption=\"#\" name=\"rowNum\" [width]=\"40\" alignment=\"center\" [calculateCellValue]=\"calcRowIndex\"></dxi-column>\r\n <dxi-column dataField=\"docNum\" caption=\"Belge No\" [minWidth]=\"110\" alignment=\"center\"></dxi-column>\r\n <dxi-column dataField=\"batchNum\" caption=\"Parti No\" [minWidth]=\"130\" alignment=\"center\"></dxi-column>\r\n <dxi-column dataField=\"quantity\" caption=\"Miktar\" dataType=\"number\" [minWidth]=\"75\" alignment=\"center\"></dxi-column>\r\n <dxi-column dataField=\"whsName\" caption=\"Depo\" [minWidth]=\"100\" alignment=\"center\"></dxi-column>\r\n <dxi-column dataField=\"docStatus\" caption=\"Durum\" [minWidth]=\"105\" alignment=\"center\"\r\n [calculateCellValue]=\"calcDocStatus\">\r\n </dxi-column>\r\n <dxi-column dataField=\"userCode\" caption=\"Kullan\u0131c\u0131\" [minWidth]=\"80\" alignment=\"center\"></dxi-column>\r\n <dxo-summary>\r\n <dxi-total-item column=\"docNum\" summaryType=\"count\" displayFormat=\"Toplam\"></dxi-total-item>\r\n <dxi-total-item column=\"quantity\" summaryType=\"sum\" displayFormat=\"{0}\" [valueFormat]=\"formatNumber\"></dxi-total-item>\r\n </dxo-summary>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\n", styles: [".page-title{margin:0;padding:0}\n"] }]
|
|
2178
2339
|
}], ctorParameters: function () { return [{ type: HitFillingReceiptFromProductionService }, { type: i3.ConfirmationService }, { type: i0.NgZone }]; }, propDecorators: { nmbBoxIsEmriNo: [{
|
|
2179
2340
|
type: ViewChild,
|
|
2180
2341
|
args: ['isEmriNoRef', { static: false }]
|