@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
|
@@ -12,7 +12,7 @@ import { CommercialUiModule } from '@volo/abp.commercial.ng.ui';
|
|
|
12
12
|
import * as i7 from '@abp/ng.components/page';
|
|
13
13
|
import { PageModule } from '@abp/ng.components/page';
|
|
14
14
|
import { DateAdapter } from '@abp/ng.theme.shared/extensions';
|
|
15
|
-
import { firstValueFrom } from 'rxjs';
|
|
15
|
+
import { firstValueFrom, Subject } from 'rxjs';
|
|
16
16
|
import * as i4 from '@angular/forms';
|
|
17
17
|
import * as i6 from '@angular/common';
|
|
18
18
|
import * as i8 from 'devextreme-angular';
|
|
@@ -21,6 +21,7 @@ import * as i6$1 from 'devextreme-angular/ui/nested';
|
|
|
21
21
|
import * as AspNetData from 'devextreme-aspnet-data-nojquery';
|
|
22
22
|
import * as i5 from '@angular/platform-browser';
|
|
23
23
|
import * as i9 from 'devextreme-angular/core';
|
|
24
|
+
import { takeUntil, finalize } from 'rxjs/operators';
|
|
24
25
|
import * as i7$1 from 'devextreme-angular/ui/radio-group';
|
|
25
26
|
import notify from 'devextreme/ui/notify';
|
|
26
27
|
import CustomStore from 'devextreme/data/custom_store';
|
|
@@ -106,13 +107,37 @@ class HitHelper {
|
|
|
106
107
|
return suffix ? '#,##0.0000 ' + suffix : '#,##0.0000';
|
|
107
108
|
}
|
|
108
109
|
static getMeasurementFormattedWithLocalization(value, unit) {
|
|
109
|
-
const
|
|
110
|
-
const formatted = new Intl.NumberFormat(
|
|
110
|
+
const numericValue = HitHelper.toNumericValue(value);
|
|
111
|
+
const formatted = new Intl.NumberFormat('tr-TR', {
|
|
111
112
|
minimumFractionDigits: 4,
|
|
112
113
|
maximumFractionDigits: 4,
|
|
113
|
-
|
|
114
|
+
useGrouping: true,
|
|
115
|
+
}).format(numericValue);
|
|
114
116
|
return unit ? `${formatted} ${unit}` : formatted;
|
|
115
117
|
}
|
|
118
|
+
static toNumericValue(value) {
|
|
119
|
+
if (typeof value === 'number') {
|
|
120
|
+
return Number.isFinite(value) ? value : 0;
|
|
121
|
+
}
|
|
122
|
+
if (value == null || value === '') {
|
|
123
|
+
return 0;
|
|
124
|
+
}
|
|
125
|
+
const text = String(value).trim().replace(/\s/g, '');
|
|
126
|
+
const lastComma = text.lastIndexOf(',');
|
|
127
|
+
const lastDot = text.lastIndexOf('.');
|
|
128
|
+
let normalized = text;
|
|
129
|
+
if (lastComma >= 0 && lastDot >= 0) {
|
|
130
|
+
// Türkçe biçim: 10.000,2500 -> 10000.2500
|
|
131
|
+
normalized = lastComma > lastDot
|
|
132
|
+
? text.replace(/\./g, '').replace(',', '.')
|
|
133
|
+
: text.replace(/,/g, '');
|
|
134
|
+
}
|
|
135
|
+
else if (lastComma >= 0) {
|
|
136
|
+
normalized = text.replace(',', '.');
|
|
137
|
+
}
|
|
138
|
+
const parsed = Number(normalized);
|
|
139
|
+
return Number.isFinite(parsed) ? parsed : 0;
|
|
140
|
+
}
|
|
116
141
|
static getFormattedErrors(errors) {
|
|
117
142
|
if (!errors?.length) {
|
|
118
143
|
return '';
|
|
@@ -125,7 +150,7 @@ class HitHelper {
|
|
|
125
150
|
.join('\n');
|
|
126
151
|
}
|
|
127
152
|
static parseQR(barkod) {
|
|
128
|
-
//
|
|
153
|
+
// Barkod yapısı: (240)itemcode(10)partiNo(17)sonKullanmaTarihi(3103)miktar(21)seriNo
|
|
129
154
|
const marker240 = '(240)';
|
|
130
155
|
const marker10 = '(10)';
|
|
131
156
|
const marker17 = '(17)';
|
|
@@ -169,13 +194,15 @@ class HitHelper {
|
|
|
169
194
|
}
|
|
170
195
|
}
|
|
171
196
|
class Hammadde {
|
|
172
|
-
constructor(chemicalCode, lotNumber, expirationDate,
|
|
197
|
+
constructor(chemicalCode, lotNumber, expirationDate, weightGr, terminalCode, workOrderNo = '', weighingSequenceNo = '') {
|
|
173
198
|
this.chemicalCode = chemicalCode;
|
|
174
199
|
this.lotNumber = lotNumber;
|
|
175
200
|
this.expirationDate = expirationDate;
|
|
176
|
-
this.weightGr =
|
|
177
|
-
this.weightKg =
|
|
201
|
+
this.weightGr = weightGr;
|
|
202
|
+
this.weightKg = weightGr ? weightGr / 1000 : 0;
|
|
178
203
|
this.terminalCode = terminalCode;
|
|
204
|
+
this.workOrderNo = workOrderNo;
|
|
205
|
+
this.weighingSequenceNo = weighingSequenceNo;
|
|
179
206
|
}
|
|
180
207
|
}
|
|
181
208
|
|
|
@@ -876,6 +903,8 @@ class HitIssuesForProductionsComponent {
|
|
|
876
903
|
this.isEmriBarkoduGecerliMi = false;
|
|
877
904
|
this.searcheBasildiMi = false;
|
|
878
905
|
this.hammaddeQR = '';
|
|
906
|
+
this.scannedBarcodeKeys = new Set();
|
|
907
|
+
this.initialBatchNumbers = new Map();
|
|
879
908
|
this.warehouses = [];
|
|
880
909
|
this.HitHelper = HitHelper;
|
|
881
910
|
}
|
|
@@ -900,17 +929,8 @@ class HitIssuesForProductionsComponent {
|
|
|
900
929
|
this.productionOrder = response.items;
|
|
901
930
|
this.isEmriBarkoduGecerliMi = true;
|
|
902
931
|
this.unitOfMeasure = response.items.unitOfMeasurement;
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
const newIssueLine = new IssueLine();
|
|
906
|
-
newIssueLine.ItemCode = issueLine.itemCode;
|
|
907
|
-
newIssueLine.BaseLine = issueLine.lineNum;
|
|
908
|
-
newIssueLine.WarehouseCode = issueLine.warehouse;
|
|
909
|
-
newIssueLine.BaseEntry = issueLine.absoluteEntry;
|
|
910
|
-
newIssueLine.BatchNumbers = [new BatchNumber(issueLine.batchNumber, issueLine.plannedQty)];
|
|
911
|
-
return newIssueLine;
|
|
912
|
-
});
|
|
913
|
-
this.issuesForProductionPost = new IssuesForProductionPostDto(issueLines);
|
|
932
|
+
this.initialBatchNumbers = new Map(this.productionOrder.getProductionOrderLine.map(line => [line.lineNum, line.batchNumber || '']));
|
|
933
|
+
this.resetIssueGrid();
|
|
914
934
|
this.ngZone.run(() => {
|
|
915
935
|
setTimeout(() => {
|
|
916
936
|
this.nmbBoxHammaddeQR.instance.focus();
|
|
@@ -952,6 +972,21 @@ class HitIssuesForProductionsComponent {
|
|
|
952
972
|
});
|
|
953
973
|
return;
|
|
954
974
|
}
|
|
975
|
+
// Mükerrer barkod kontrolü: aynı iş emri + tartım sıra no kombinasyonu tekrar okutulamaz
|
|
976
|
+
if (parsed.workOrderNo && parsed.weighingSequenceNo) {
|
|
977
|
+
const barcodeKey = `${parsed.workOrderNo}_${parsed.weighingSequenceNo}`;
|
|
978
|
+
if (this.scannedBarcodeKeys.has(barcodeKey)) {
|
|
979
|
+
this.confirmation.error('', 'Aynı barkod tekrar okutulamaz!', this.options).subscribe({
|
|
980
|
+
next: () => {
|
|
981
|
+
this.hammaddeQR = '';
|
|
982
|
+
this.focusQRInput();
|
|
983
|
+
}
|
|
984
|
+
});
|
|
985
|
+
this.isLoading = false;
|
|
986
|
+
return;
|
|
987
|
+
}
|
|
988
|
+
this.scannedBarcodeKeys.add(barcodeKey);
|
|
989
|
+
}
|
|
955
990
|
this.service.get(parsed.chemicalCode, this.productionOrder.absoluteEntry.toString()).subscribe({
|
|
956
991
|
next: (response) => {
|
|
957
992
|
if (response.isSuccessful) {
|
|
@@ -1013,6 +1048,7 @@ class HitIssuesForProductionsComponent {
|
|
|
1013
1048
|
});
|
|
1014
1049
|
}
|
|
1015
1050
|
else {
|
|
1051
|
+
this.resetIssueGrid();
|
|
1016
1052
|
this.confirmation.status$.subscribe({
|
|
1017
1053
|
next: () => {
|
|
1018
1054
|
this.focusQRInput();
|
|
@@ -1021,9 +1057,9 @@ class HitIssuesForProductionsComponent {
|
|
|
1021
1057
|
}
|
|
1022
1058
|
},
|
|
1023
1059
|
error: (e) => {
|
|
1060
|
+
this.resetIssueGrid();
|
|
1024
1061
|
this.confirmation.status$.subscribe({
|
|
1025
1062
|
next: () => {
|
|
1026
|
-
this.clearAll();
|
|
1027
1063
|
this.focusQRInput();
|
|
1028
1064
|
}
|
|
1029
1065
|
});
|
|
@@ -1040,6 +1076,31 @@ class HitIssuesForProductionsComponent {
|
|
|
1040
1076
|
this.productionOrder = null;
|
|
1041
1077
|
this.focusBarkodInput();
|
|
1042
1078
|
this.unitOfMeasure = null;
|
|
1079
|
+
this.scannedBarcodeKeys.clear();
|
|
1080
|
+
this.initialBatchNumbers.clear();
|
|
1081
|
+
}
|
|
1082
|
+
resetIssueGrid() {
|
|
1083
|
+
if (!this.productionOrder?.getProductionOrderLine)
|
|
1084
|
+
return;
|
|
1085
|
+
this.productionOrder.getProductionOrderLine.forEach(line => {
|
|
1086
|
+
line.quantity = 0;
|
|
1087
|
+
line.batchNumber = this.initialBatchNumbers.get(line.lineNum) || '';
|
|
1088
|
+
});
|
|
1089
|
+
const issueLines = this.productionOrder.getProductionOrderLine.map(line => {
|
|
1090
|
+
const issueLine = new IssueLine();
|
|
1091
|
+
issueLine.ItemCode = line.itemCode;
|
|
1092
|
+
issueLine.BaseLine = line.lineNum;
|
|
1093
|
+
issueLine.WarehouseCode = line.warehouse;
|
|
1094
|
+
issueLine.BaseEntry = line.absoluteEntry;
|
|
1095
|
+
issueLine.BatchNumbers = [new BatchNumber(this.initialBatchNumbers.get(line.lineNum) || '', line.plannedQty)];
|
|
1096
|
+
return issueLine;
|
|
1097
|
+
});
|
|
1098
|
+
this.issuesForProductionPost = new IssuesForProductionPostDto(issueLines);
|
|
1099
|
+
this.scannedBarcodeKeys.clear();
|
|
1100
|
+
this.hammaddeQR = '';
|
|
1101
|
+
this.isEmriBarkoduGecerliMi = true;
|
|
1102
|
+
this.searcheBasildiMi = true;
|
|
1103
|
+
this.isLoading = false;
|
|
1043
1104
|
}
|
|
1044
1105
|
getWarehouses() {
|
|
1045
1106
|
this.isLoading = true;
|
|
@@ -1499,6 +1560,7 @@ class HitFillingControlComponent {
|
|
|
1499
1560
|
this.qrCode = '';
|
|
1500
1561
|
this.lines = [];
|
|
1501
1562
|
this.isDataLoadedFromDb = false; // DB'den veri mi geldi yoksa yeni mi
|
|
1563
|
+
this.scannedBarcodeKeys = new Set();
|
|
1502
1564
|
}
|
|
1503
1565
|
ngOnInit() {
|
|
1504
1566
|
// Initialization logic
|
|
@@ -1570,6 +1632,21 @@ class HitFillingControlComponent {
|
|
|
1570
1632
|
this.focusQRInput();
|
|
1571
1633
|
return;
|
|
1572
1634
|
}
|
|
1635
|
+
// Mükerrer barkod kontrolü: aynı iş emri + tartım sıra no kombinasyonu tekrar okutulamaz
|
|
1636
|
+
if (parsed.workOrderNo && parsed.weighingSequenceNo) {
|
|
1637
|
+
const barcodeKey = `${parsed.workOrderNo}_${parsed.weighingSequenceNo}`;
|
|
1638
|
+
if (this.scannedBarcodeKeys.has(barcodeKey)) {
|
|
1639
|
+
this.confirmation.error('', 'Aynı barkod tekrar okutulamaz!', {
|
|
1640
|
+
hideYesBtn: true,
|
|
1641
|
+
cancelText: 'Kapat',
|
|
1642
|
+
dismissible: false,
|
|
1643
|
+
});
|
|
1644
|
+
this.qrCode = '';
|
|
1645
|
+
this.focusQRInput();
|
|
1646
|
+
return;
|
|
1647
|
+
}
|
|
1648
|
+
this.scannedBarcodeKeys.add(barcodeKey);
|
|
1649
|
+
}
|
|
1573
1650
|
// Grid'de bu item'ı bul
|
|
1574
1651
|
const line = this.lines.find(x => x.itemCode === parsed.chemicalCode);
|
|
1575
1652
|
if (!line) {
|
|
@@ -1742,6 +1819,7 @@ class HitFillingControlComponent {
|
|
|
1742
1819
|
this.lines = [];
|
|
1743
1820
|
this.isDataLoadedFromDb = false;
|
|
1744
1821
|
this.isSaving = false;
|
|
1822
|
+
this.scannedBarcodeKeys.clear();
|
|
1745
1823
|
this.focusOnIsEmriNo();
|
|
1746
1824
|
}
|
|
1747
1825
|
get showKazanDegisimiButton() {
|
|
@@ -1786,6 +1864,7 @@ class HitFillingControlComponent {
|
|
|
1786
1864
|
// Grid'i refresh et
|
|
1787
1865
|
this.dataGrid.instance.refresh();
|
|
1788
1866
|
this.isDataLoadedFromDb = false; // Artık yeni veri girilecek
|
|
1867
|
+
this.scannedBarcodeKeys.clear(); // Yeni kazan için okutulmuş barkodları sıfırla
|
|
1789
1868
|
// QR input'a focus et
|
|
1790
1869
|
this.focusOnQrCode();
|
|
1791
1870
|
}
|
|
@@ -1923,6 +2002,10 @@ class HitFillingReceiptFromProductionService {
|
|
|
1923
2002
|
url: `${this.resourceEndpoint}/create-receipt`,
|
|
1924
2003
|
body: input,
|
|
1925
2004
|
}, { apiName: this.apiName });
|
|
2005
|
+
this.getOperationStatus = (operationId) => this.restService.request({
|
|
2006
|
+
method: 'GET',
|
|
2007
|
+
url: `${this.resourceEndpoint}/operations/${operationId}`,
|
|
2008
|
+
}, { apiName: this.apiName });
|
|
1926
2009
|
this.resourceEndpoint = '/api/uretim-yonetimi/filling-receipt-from-production';
|
|
1927
2010
|
}
|
|
1928
2011
|
}
|
|
@@ -1949,18 +2032,40 @@ class HitFillingReceiptFromProductionComponent {
|
|
|
1949
2032
|
this.paletTipleri = ['TAM', 'KISMI'];
|
|
1950
2033
|
this.koliAdet = null;
|
|
1951
2034
|
this.toplamMiktar = 0;
|
|
2035
|
+
this.pendingOperationId = null;
|
|
2036
|
+
this.operationStatusMessage = '';
|
|
2037
|
+
this.isCheckingOperationStatus = false;
|
|
2038
|
+
this.destroy$ = new Subject();
|
|
2039
|
+
this.statusCheckFailures = 0;
|
|
2040
|
+
this.pendingStorageKey = 'turs1013ReceiptOperation';
|
|
2041
|
+
this.errorDialogOptions = {
|
|
2042
|
+
hideYesBtn: true,
|
|
2043
|
+
cancelText: 'Kapat',
|
|
2044
|
+
dismissible: false,
|
|
2045
|
+
};
|
|
1952
2046
|
this.calcRowIndex = (row) => (this.workOrderInfo?.receiptHistory?.indexOf(row) ?? -1) + 1;
|
|
1953
2047
|
this.calcDocStatus = (row) => row.docStatus === 'C' ? 'Tamamlandı' : 'Beklemede';
|
|
1954
2048
|
this.formatNumber = (value) => value?.toLocaleString('tr-TR') ?? '';
|
|
1955
2049
|
}
|
|
1956
2050
|
ngOnInit() {
|
|
1957
|
-
|
|
2051
|
+
this.pendingOperationId = sessionStorage.getItem(this.pendingStorageKey);
|
|
2052
|
+
if (this.pendingOperationId) {
|
|
2053
|
+
this.isSaving = true;
|
|
2054
|
+
this.operationStatusMessage = 'Önceki üretimden giriş işleminin sonucu kontrol ediliyor.';
|
|
2055
|
+
this.checkOperationStatus();
|
|
2056
|
+
}
|
|
2057
|
+
}
|
|
2058
|
+
ngOnDestroy() {
|
|
2059
|
+
if (this.statusTimer)
|
|
2060
|
+
clearTimeout(this.statusTimer);
|
|
2061
|
+
this.destroy$.next();
|
|
2062
|
+
this.destroy$.complete();
|
|
1958
2063
|
}
|
|
1959
2064
|
ngAfterViewInit() {
|
|
1960
2065
|
this.focusOnIsEmriNo();
|
|
1961
2066
|
}
|
|
1962
2067
|
async getProductionOrder() {
|
|
1963
|
-
if (!this.isEmriNo) {
|
|
2068
|
+
if (!this.isEmriNo || this.isSaving) {
|
|
1964
2069
|
return;
|
|
1965
2070
|
}
|
|
1966
2071
|
this.isLoading = true;
|
|
@@ -2003,19 +2108,18 @@ class HitFillingReceiptFromProductionComponent {
|
|
|
2003
2108
|
return;
|
|
2004
2109
|
}
|
|
2005
2110
|
const salPackUn = this.workOrderInfo.salPackUn || 0;
|
|
2006
|
-
debugger;
|
|
2007
2111
|
if (this.paletTipi === 'TAM') {
|
|
2008
2112
|
// Tam Palet: Pallet height × Pieces per box
|
|
2009
2113
|
const paletYukseklik = this.workOrderInfo.u_DKpaletyuseklik || 0;
|
|
2010
|
-
this.toplamMiktar = paletYukseklik * salPackUn;
|
|
2114
|
+
this.toplamMiktar = Math.round(paletYukseklik * salPackUn);
|
|
2011
2115
|
}
|
|
2012
2116
|
else {
|
|
2013
2117
|
// Kısmi Palet: Koli count × Pieces per box
|
|
2014
2118
|
const koliAdet = this.koliAdet || 0;
|
|
2015
|
-
const kismiMiktar = koliAdet * salPackUn;
|
|
2119
|
+
const kismiMiktar = Math.round(koliAdet * salPackUn);
|
|
2016
2120
|
// Calculate TAM pallet quantity for comparison
|
|
2017
2121
|
const paletYukseklik = this.workOrderInfo.u_DKpaletyuseklik || 0;
|
|
2018
|
-
const tamPaletMiktar = paletYukseklik * salPackUn;
|
|
2122
|
+
const tamPaletMiktar = Math.round(paletYukseklik * salPackUn);
|
|
2019
2123
|
// KISMI quantity should not exceed TAM pallet quantity
|
|
2020
2124
|
if (kismiMiktar > tamPaletMiktar) {
|
|
2021
2125
|
this.toplamMiktar = tamPaletMiktar;
|
|
@@ -2035,7 +2139,6 @@ class HitFillingReceiptFromProductionComponent {
|
|
|
2035
2139
|
}
|
|
2036
2140
|
}
|
|
2037
2141
|
async save() {
|
|
2038
|
-
debugger;
|
|
2039
2142
|
if (!this.isEmriNo || !this.workOrderInfo || this.toplamMiktar <= 0 || this.isSaving) {
|
|
2040
2143
|
if (!this.isSaving) {
|
|
2041
2144
|
this.confirmation.warn('', 'Lütfen tüm alanları doldurun!', {
|
|
@@ -2046,72 +2149,128 @@ class HitFillingReceiptFromProductionComponent {
|
|
|
2046
2149
|
}
|
|
2047
2150
|
return;
|
|
2048
2151
|
}
|
|
2049
|
-
//
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2152
|
+
// Tolerans kontrolü (%15) - kalan izin backend'de hesaplanır, oran burada tekrarlanmaz.
|
|
2153
|
+
// Nihai karar Kaydet anında backend'de, DB'den yeniden okunan CmpltQty ile verilir.
|
|
2154
|
+
const kalanIzin = this.workOrderInfo.remainingAllowedQty ?? 0;
|
|
2155
|
+
if (this.toplamMiktar > kalanIzin) {
|
|
2156
|
+
this.confirmation.warn('', `Tolerans sınırı aşıldı. Planlanan miktar: ${this.workOrderInfo.plannedQty}, ` +
|
|
2157
|
+
`toplam girilen: ${this.workOrderInfo.cmpltQty}, ` +
|
|
2158
|
+
`girilebilecek kalan miktar: ${kalanIzin}. İşlem kaydedilmedi.`, {
|
|
2053
2159
|
hideYesBtn: true,
|
|
2054
2160
|
cancelText: 'Kapat',
|
|
2055
2161
|
dismissible: false,
|
|
2056
2162
|
});
|
|
2057
2163
|
return;
|
|
2058
2164
|
}
|
|
2165
|
+
const operationId = this.newOperationId();
|
|
2059
2166
|
const saveData = {
|
|
2167
|
+
operationId,
|
|
2060
2168
|
docEntry: this.isEmriNo,
|
|
2061
2169
|
palletType: this.paletTipi,
|
|
2062
2170
|
koliCount: this.paletTipi === 'KISMI' ? this.koliAdet : null,
|
|
2063
|
-
totalQuantity: this.toplamMiktar
|
|
2064
|
-
warehouseCode: this.workOrderInfo.warehouse,
|
|
2065
|
-
batchNumber: '',
|
|
2066
|
-
componentsToConsume: this.prepareComponentsToConsume()
|
|
2171
|
+
totalQuantity: this.toplamMiktar
|
|
2067
2172
|
};
|
|
2173
|
+
this.pendingOperationId = operationId;
|
|
2174
|
+
sessionStorage.setItem(this.pendingStorageKey, operationId);
|
|
2068
2175
|
this.isSaving = true;
|
|
2069
2176
|
this.isLoading = true;
|
|
2070
|
-
this.
|
|
2177
|
+
this.operationStatusMessage = 'Üretimden giriş kaydediliyor, SAP belge sonucu bekleniyor.';
|
|
2178
|
+
this.service.createReceipt(saveData).pipe(takeUntil(this.destroy$)).subscribe({
|
|
2071
2179
|
next: response => {
|
|
2072
|
-
if (response?.isSuccessful)
|
|
2073
|
-
this.
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
dismissible: false,
|
|
2077
|
-
});
|
|
2078
|
-
this.clearAll();
|
|
2079
|
-
}
|
|
2080
|
-
this.isSaving = false;
|
|
2180
|
+
if (response?.isSuccessful && response.items)
|
|
2181
|
+
this.handleOperationStatus(response.items);
|
|
2182
|
+
else
|
|
2183
|
+
this.checkOperationStatus();
|
|
2081
2184
|
this.isLoading = false;
|
|
2082
2185
|
},
|
|
2083
2186
|
error: e => {
|
|
2084
|
-
this.isSaving = false;
|
|
2085
2187
|
this.isLoading = false;
|
|
2188
|
+
this.checkOperationStatus();
|
|
2086
2189
|
},
|
|
2087
2190
|
});
|
|
2088
2191
|
}
|
|
2089
|
-
|
|
2090
|
-
if (!this.
|
|
2091
|
-
return
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2192
|
+
checkOperationStatus() {
|
|
2193
|
+
if (!this.pendingOperationId || this.isCheckingOperationStatus)
|
|
2194
|
+
return;
|
|
2195
|
+
this.isCheckingOperationStatus = true;
|
|
2196
|
+
this.service.getOperationStatus(this.pendingOperationId).pipe(takeUntil(this.destroy$), finalize(() => this.isCheckingOperationStatus = false)).subscribe({
|
|
2197
|
+
next: response => {
|
|
2198
|
+
this.statusCheckFailures = 0;
|
|
2199
|
+
if (response?.isSuccessful && response.items)
|
|
2200
|
+
this.handleOperationStatus(response.items);
|
|
2201
|
+
else
|
|
2202
|
+
this.scheduleStatusCheck();
|
|
2203
|
+
},
|
|
2204
|
+
error: error => {
|
|
2205
|
+
// A missing row can be transient while the original POST is still validating.
|
|
2206
|
+
// Never unlock a response-lost operation solely because this GET failed.
|
|
2207
|
+
this.statusCheckFailures++;
|
|
2208
|
+
this.operationStatusMessage = 'İşlem sonucu alınamadı. SAP belgeleri doğrulanana kadar yeni giriş başlatılamaz.';
|
|
2209
|
+
if (this.statusCheckFailures === 5) {
|
|
2210
|
+
this.confirmation.warn('', `İşlem sonucu doğrulanamadı. Yeni kayıt başlatmayın; işlem anahtarını destek ekibiyle paylaşın: ${this.pendingOperationId}`, {
|
|
2211
|
+
hideYesBtn: true, cancelText: 'Kapat'
|
|
2212
|
+
});
|
|
2213
|
+
}
|
|
2214
|
+
this.scheduleStatusCheck();
|
|
2215
|
+
}
|
|
2216
|
+
});
|
|
2217
|
+
}
|
|
2218
|
+
scheduleStatusCheck() {
|
|
2219
|
+
if (this.statusTimer)
|
|
2220
|
+
clearTimeout(this.statusTimer);
|
|
2221
|
+
this.statusTimer = setTimeout(() => this.checkOperationStatus(), 3000);
|
|
2222
|
+
}
|
|
2223
|
+
refreshOperationStatus() {
|
|
2224
|
+
if (this.statusTimer)
|
|
2225
|
+
clearTimeout(this.statusTimer);
|
|
2226
|
+
this.checkOperationStatus();
|
|
2227
|
+
}
|
|
2228
|
+
handleOperationStatus(status) {
|
|
2229
|
+
if (status.state === 'Completed') {
|
|
2230
|
+
this.finishPendingOperation();
|
|
2231
|
+
const documents = [
|
|
2232
|
+
status.issueDocEntry ? `Üretim için çıkış belge iç no: ${status.issueDocEntry}.` : '',
|
|
2233
|
+
status.receiptDocEntry ? `Üretimden giriş belge iç no: ${status.receiptDocEntry}.` : '',
|
|
2234
|
+
].filter(Boolean).join(' ');
|
|
2235
|
+
this.confirmation.success('', `Üretimden giriş başarıyla gerçekleştirildi! Parti: ${status.batchNumber}. ${documents}`, {
|
|
2236
|
+
hideYesBtn: true, cancelText: 'Kapat', dismissible: false
|
|
2108
2237
|
});
|
|
2238
|
+
this.clearAll();
|
|
2239
|
+
}
|
|
2240
|
+
else if (status.state === 'Failed') {
|
|
2241
|
+
this.finishPendingOperation();
|
|
2242
|
+
this.confirmation.error('', status.error || 'Üretimden giriş kaydedilemedi.', this.errorDialogOptions);
|
|
2109
2243
|
}
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2244
|
+
else if (status.state === 'Inconsistent') {
|
|
2245
|
+
if (this.statusTimer)
|
|
2246
|
+
clearTimeout(this.statusTimer);
|
|
2247
|
+
this.operationStatusMessage = status.error || 'SAP giriş ve çıkış belgeleri birlikte doğrulanamadı. Belgeleri kontrol edin.';
|
|
2248
|
+
}
|
|
2249
|
+
else {
|
|
2250
|
+
this.operationStatusMessage = status.error || 'SAP belge sonucu doğrulanıyor. Sonuç kesinleşene kadar yeni giriş başlatılamaz.';
|
|
2251
|
+
this.scheduleStatusCheck();
|
|
2252
|
+
}
|
|
2253
|
+
}
|
|
2254
|
+
finishPendingOperation() {
|
|
2255
|
+
if (this.statusTimer)
|
|
2256
|
+
clearTimeout(this.statusTimer);
|
|
2257
|
+
this.isSaving = false;
|
|
2258
|
+
this.pendingOperationId = null;
|
|
2259
|
+
this.operationStatusMessage = '';
|
|
2260
|
+
this.statusCheckFailures = 0;
|
|
2261
|
+
sessionStorage.removeItem(this.pendingStorageKey);
|
|
2262
|
+
}
|
|
2263
|
+
newOperationId() {
|
|
2264
|
+
const bytes = new Uint8Array(16);
|
|
2265
|
+
crypto.getRandomValues(bytes);
|
|
2266
|
+
bytes[6] = (bytes[6] & 0x0f) | 0x40;
|
|
2267
|
+
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
2268
|
+
const value = Array.from(bytes, b => b.toString(16).padStart(2, '0')).join('');
|
|
2269
|
+
return `${value.slice(0, 8)}-${value.slice(8, 12)}-${value.slice(12, 16)}-${value.slice(16, 20)}-${value.slice(20)}`;
|
|
2113
2270
|
}
|
|
2114
2271
|
clearAll() {
|
|
2272
|
+
if (this.isSaving)
|
|
2273
|
+
return;
|
|
2115
2274
|
this.isWorkOrderLoaded = false;
|
|
2116
2275
|
this.isEmriNo = null;
|
|
2117
2276
|
this.workOrderInfo = null;
|
|
@@ -2137,10 +2296,10 @@ class HitFillingReceiptFromProductionComponent {
|
|
|
2137
2296
|
}
|
|
2138
2297
|
}
|
|
2139
2298
|
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 });
|
|
2140
|
-
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"] }] });
|
|
2299
|
+
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"] }] });
|
|
2141
2300
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFillingReceiptFromProductionComponent, decorators: [{
|
|
2142
2301
|
type: Component,
|
|
2143
|
-
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()\">\
|
|
2302
|
+
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"] }]
|
|
2144
2303
|
}], ctorParameters: function () { return [{ type: HitFillingReceiptFromProductionService }, { type: i3.ConfirmationService }, { type: i0.NgZone }]; }, propDecorators: { nmbBoxIsEmriNo: [{
|
|
2145
2304
|
type: ViewChild,
|
|
2146
2305
|
args: ['isEmriNoRef', { static: false }]
|