@hitsoft/uretim-yonetimi 1.0.45 → 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.
@@ -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 locale = navigator.language || 'tr-TR';
111
- const formatted = new Intl.NumberFormat(locale, {
111
+ const numericValue = HitHelper.toNumericValue(value);
112
+ const formatted = new Intl.NumberFormat('tr-TR', {
112
113
  minimumFractionDigits: 4,
113
114
  maximumFractionDigits: 4,
114
- }).format(value);
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
- // Yeni barkod yapısı: (240)itemcode(10)partiNo(17)sonKullanmaTarihi(3103)miktar(21)elTerminalKodu
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, weight, terminalCode) {
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 = weight; // Gram cinsinden
178
- this.weightKg = weight ? weight / 1000 : 0; // Kilogram cinsine dönüştürülmüş hali
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
- const issueLines = this.productionOrder.getProductionOrderLine.map((issueLine) => {
916
- issueLine.quantity = 0;
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
- // Initialize
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;
@@ -2068,7 +2173,6 @@ class HitFillingReceiptFromProductionComponent {
2068
2173
  save() {
2069
2174
  var _a;
2070
2175
  return __awaiter(this, void 0, void 0, function* () {
2071
- debugger;
2072
2176
  if (!this.isEmriNo || !this.workOrderInfo || this.toplamMiktar <= 0 || this.isSaving) {
2073
2177
  if (!this.isSaving) {
2074
2178
  this.confirmation.warn('', 'Lütfen tüm alanları doldurun!', {
@@ -2092,63 +2196,116 @@ class HitFillingReceiptFromProductionComponent {
2092
2196
  });
2093
2197
  return;
2094
2198
  }
2199
+ const operationId = this.newOperationId();
2095
2200
  const saveData = {
2201
+ operationId,
2096
2202
  docEntry: this.isEmriNo,
2097
2203
  palletType: this.paletTipi,
2098
2204
  koliCount: this.paletTipi === 'KISMI' ? this.koliAdet : null,
2099
- totalQuantity: this.toplamMiktar,
2100
- warehouseCode: this.workOrderInfo.warehouse,
2101
- batchNumber: '',
2102
- componentsToConsume: this.prepareComponentsToConsume()
2205
+ totalQuantity: this.toplamMiktar
2103
2206
  };
2207
+ this.pendingOperationId = operationId;
2208
+ sessionStorage.setItem(this.pendingStorageKey, operationId);
2104
2209
  this.isSaving = true;
2105
2210
  this.isLoading = true;
2106
- this.service.createReceipt(saveData).subscribe({
2211
+ this.operationStatusMessage = 'Üretimden giriş kaydediliyor, SAP belge sonucu bekleniyor.';
2212
+ this.service.createReceipt(saveData).pipe(takeUntil(this.destroy$)).subscribe({
2107
2213
  next: response => {
2108
- if (response === null || response === void 0 ? void 0 : response.isSuccessful) {
2109
- this.confirmation.success('', 'Üretimden giriş başarıyla gerçekleştirildi!', {
2110
- hideYesBtn: true,
2111
- cancelText: 'Kapat',
2112
- dismissible: false,
2113
- });
2114
- this.clearAll();
2115
- }
2116
- 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();
2117
2218
  this.isLoading = false;
2118
2219
  },
2119
2220
  error: e => {
2120
- this.isSaving = false;
2121
2221
  this.isLoading = false;
2222
+ this.checkOperationStatus();
2122
2223
  },
2123
2224
  });
2124
2225
  });
2125
2226
  }
2126
- prepareComponentsToConsume() {
2127
- if (!this.workOrderInfo || !this.workOrderInfo.lines) {
2128
- return [];
2129
- }
2130
- const components = [];
2131
- const itemCode = this.workOrderInfo.itemCode;
2132
- // Determine if this is YM or 151* product
2133
- const isYM = itemCode.startsWith('YM');
2134
- const is151 = itemCode.startsWith('151');
2135
- // Get controlled lines (YM/151* items marked with U_Kontrol='E')
2136
- const controlledLines = this.workOrderInfo.lines.filter(line => line.isControlled && line.batchNumber);
2137
- // For YM/151* products, consume by lot from control screen
2138
- for (const line of controlledLines) {
2139
- components.push({
2140
- itemCode: line.itemCode,
2141
- quantity: line.issuedQty,
2142
- warehouseCode: line.warehouse,
2143
- batchNumber: line.batchNumber,
2144
- baseLine: line.lineNum
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
2145
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);
2146
2278
  }
2147
- // For other components, use "Teyit sonrası otomatik çekme" logic
2148
- // (This would be handled by the backend with FIFO for batch/serial items)
2149
- return components;
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();
2287
+ }
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)}`;
2150
2305
  }
2151
2306
  clearAll() {
2307
+ if (this.isSaving)
2308
+ return;
2152
2309
  this.isWorkOrderLoaded = false;
2153
2310
  this.isEmriNo = null;
2154
2311
  this.workOrderInfo = null;
@@ -2175,10 +2332,10 @@ class HitFillingReceiptFromProductionComponent {
2175
2332
  }
2176
2333
  }
2177
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 });
2178
- 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\">\n <abp-page-toolbar-container class=\"col\">\n <div class=\"row\">\n <h3 class=\"page-title\">\n \u00DCretimden Giri\u015F\n </h3>\n </div>\n <div class=\"row text-lg-end pt-2\">\n <div class=\"col-6\">\n <button class=\"btn btn-success btn-sm\" type=\"button\" (click)=\"save()\" [disabled]=\"isSaveButtonDisabled\">\n <i class=\"fa fa-check me-1\"></i>\n \u00DCretimden Giri\u015F Yap\n </button>\n </div>\n <div class=\"col-6\">\n <button class=\"btn btn-warning btn-sm\" type=\"button\" (click)=\"clearAll()\">\n <i class=\"fa fa-broom me-1\"></i>\n Temizle\n </button>\n </div>\n </div>\n </abp-page-toolbar-container>\n\n <div class=\"card mt-2\">\n <div class=\"card-body\" style=\"height: calc(100vh - 241px); overflow: auto;\">\n <!-- Work Order Input -->\n <div style=\"display: flex; align-items: center;\">\n <dx-number-box #isEmriNoRef class=\"me-1\" style=\"width:100%;\" label=\"\u0130\u015F Emri No\" [(value)]=\"isEmriNo\"\n (onChange)=\"getProductionOrder()\" (onEnterKey)=\"getProductionOrder()\" [disabled]=\"isWorkOrderLoaded\">\n </dx-number-box>\n <dx-button style=\"margin-top: 7.5px;\" icon=\"search\" type=\"default\" (onClick)=\"getProductionOrder()\"\n [disabled]=\"isWorkOrderLoaded\">\n </dx-button>\n </div>\n\n <!-- Work Order Information -->\n <div class=\"mt-3\" *ngIf=\"isWorkOrderLoaded && workOrderInfo\">\n <!-- Product Info -->\n <div class=\"row\">\n <div class=\"col-md-6\">\n <dx-text-box label=\"\u00DCr\u00FCn Kodu\" [(value)]=\"workOrderInfo.itemCode\" [disabled]=\"true\">\n </dx-text-box>\n </div>\n <div class=\"col-md-6\">\n <dx-text-box label=\"\u00DCr\u00FCn Ad\u0131\" [(value)]=\"workOrderInfo.itemName\" [disabled]=\"true\">\n </dx-text-box>\n </div>\n </div>\n\n <div class=\"row mt-2\">\n <div class=\"col-md-3\">\n <dx-number-box \n label=\"Planlanan Miktar\" \n [(value)]=\"workOrderInfo.plannedQty\" \n [disabled]=\"true\">\n </dx-number-box>\n </div>\n <div class=\"col-md-3\">\n <dx-number-box \n label=\"Tamamlanan Miktar\" \n [(value)]=\"workOrderInfo.cmpltQty\" \n [disabled]=\"true\">\n </dx-number-box>\n </div>\n <div class=\"col-md-3\">\n <dx-text-box \n label=\"Depo\" \n [(value)]=\"workOrderInfo.warehouse\" \n [disabled]=\"true\">\n </dx-text-box>\n </div>\n <div class=\"col-md-3\">\n <dx-text-box \n label=\"Ambalaj Lot\" \n [(value)]=\"workOrderInfo.u_TRKAMBALAJLOT\" \n [disabled]=\"true\">\n </dx-text-box>\n </div>\n </div>\n\n <!-- Pallet Type Selection -->\n <div class=\"row mt-3\">\n <div class=\"col-md-12\">\n <dx-radio-group #paletTipiRef [items]=\"paletTipleri\" layout=\"horizontal\" [(value)]=\"paletTipi\"\n (onValueChanged)=\"onPaletTipiChange()\">\n </dx-radio-group>\n </div>\n </div>\n\n <!-- Koli Count for KISMI Pallet -->\n <div class=\"row mt-2\" *ngIf=\"paletTipi === 'KISMI'\">\n <div class=\"col-md-6\">\n <dx-number-box #koliAdetRef label=\"Koli Adedi\" [(value)]=\"koliAdet\" (onValueChanged)=\"onKoliAdetChange()\"\n [min]=\"1\">\n </dx-number-box>\n </div>\n </div>\n\n <!-- Calculated Total Quantity -->\n <div class=\"row mt-2\">\n <div class=\"col-md-4\">\n <dx-number-box label=\"Toplam Miktar (Adet)\" [(value)]=\"toplamMiktar\" [disabled]=\"true\"\n [stylingMode]=\"'filled'\">\n </dx-number-box>\n </div>\n <div class=\"col-md-4\">\n <dx-number-box label=\"Koli \u0130\u00E7i Adet\" [(value)]=\"workOrderInfo.salPackUn\" [disabled]=\"true\">\n </dx-number-box>\n </div>\n <div class=\"col-md-4\">\n <dx-number-box label=\"Girilebilecek Kalan Miktar\" [(value)]=\"workOrderInfo.remainingAllowedQty\"\n [disabled]=\"true\">\n </dx-number-box>\n </div>\n </div>\n\n <!-- Quality Status Info -->\n <div class=\"row mt-2\" *ngIf=\"workOrderInfo.u_KaliteDurumu\">\n <div class=\"col-md-12\">\n <div class=\"alert alert-info\" role=\"alert\">\n <strong>Kalite Durumu:</strong> {{ workOrderInfo.u_KaliteDurumu }}\n </div>\n </div>\n </div>\n\n <!-- Receipt History -->\n <div class=\"row mt-3\">\n <div class=\"col-12\">\n <div class=\"fw-semibold mb-1\" style=\"font-size: 13px;\">\n \u00DCretimden Giri\u015F Hareketleri\n </div>\n <dx-data-grid [dataSource]=\"workOrderInfo.receiptHistory\" [showBorders]=\"true\" [columnAutoWidth]=\"true\"\n [wordWrapEnabled]=\"false\" [rowAlternationEnabled]=\"true\" [hoverStateEnabled]=\"true\"\n [noDataText]=\"'Hen\u00FCz giri\u015F hareketi bulunmamaktad\u0131r.'\" [height]=\"'auto'\">\n <dxo-scrolling mode=\"standard\"></dxo-scrolling>\n <dxo-paging [enabled]=\"false\"></dxo-paging>\n <dxi-column caption=\"#\" name=\"rowNum\" [width]=\"40\" alignment=\"center\" [calculateCellValue]=\"calcRowIndex\"></dxi-column>\n <dxi-column dataField=\"docNum\" caption=\"Belge No\" [minWidth]=\"110\" alignment=\"center\"></dxi-column>\n <dxi-column dataField=\"batchNum\" caption=\"Parti No\" [minWidth]=\"130\" alignment=\"center\"></dxi-column>\n <dxi-column dataField=\"quantity\" caption=\"Miktar\" dataType=\"number\" [minWidth]=\"75\" alignment=\"center\"></dxi-column>\n <dxi-column dataField=\"whsName\" caption=\"Depo\" [minWidth]=\"100\" alignment=\"center\"></dxi-column>\n <dxi-column dataField=\"docStatus\" caption=\"Durum\" [minWidth]=\"105\" alignment=\"center\"\n [calculateCellValue]=\"calcDocStatus\">\n </dxi-column>\n <dxi-column dataField=\"userCode\" caption=\"Kullan\u0131c\u0131\" [minWidth]=\"80\" alignment=\"center\"></dxi-column>\n <dxo-summary>\n <dxi-total-item column=\"docNum\" summaryType=\"count\" displayFormat=\"Toplam\"></dxi-total-item>\n <dxi-total-item column=\"quantity\" summaryType=\"sum\" displayFormat=\"{0}\" [valueFormat]=\"formatNumber\"></dxi-total-item>\n </dxo-summary>\n </dx-data-grid>\n </div>\n </div>\n </div>\n </div>\n </div>\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"] }] });
2179
2336
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFillingReceiptFromProductionComponent, decorators: [{
2180
2337
  type: Component,
2181
- args: [{ selector: 'lib-hit-filling-receipt-from-production', template: "<abp-page [breadcrumb]=\"false\">\n <abp-page-toolbar-container class=\"col\">\n <div class=\"row\">\n <h3 class=\"page-title\">\n \u00DCretimden Giri\u015F\n </h3>\n </div>\n <div class=\"row text-lg-end pt-2\">\n <div class=\"col-6\">\n <button class=\"btn btn-success btn-sm\" type=\"button\" (click)=\"save()\" [disabled]=\"isSaveButtonDisabled\">\n <i class=\"fa fa-check me-1\"></i>\n \u00DCretimden Giri\u015F Yap\n </button>\n </div>\n <div class=\"col-6\">\n <button class=\"btn btn-warning btn-sm\" type=\"button\" (click)=\"clearAll()\">\n <i class=\"fa fa-broom me-1\"></i>\n Temizle\n </button>\n </div>\n </div>\n </abp-page-toolbar-container>\n\n <div class=\"card mt-2\">\n <div class=\"card-body\" style=\"height: calc(100vh - 241px); overflow: auto;\">\n <!-- Work Order Input -->\n <div style=\"display: flex; align-items: center;\">\n <dx-number-box #isEmriNoRef class=\"me-1\" style=\"width:100%;\" label=\"\u0130\u015F Emri No\" [(value)]=\"isEmriNo\"\n (onChange)=\"getProductionOrder()\" (onEnterKey)=\"getProductionOrder()\" [disabled]=\"isWorkOrderLoaded\">\n </dx-number-box>\n <dx-button style=\"margin-top: 7.5px;\" icon=\"search\" type=\"default\" (onClick)=\"getProductionOrder()\"\n [disabled]=\"isWorkOrderLoaded\">\n </dx-button>\n </div>\n\n <!-- Work Order Information -->\n <div class=\"mt-3\" *ngIf=\"isWorkOrderLoaded && workOrderInfo\">\n <!-- Product Info -->\n <div class=\"row\">\n <div class=\"col-md-6\">\n <dx-text-box label=\"\u00DCr\u00FCn Kodu\" [(value)]=\"workOrderInfo.itemCode\" [disabled]=\"true\">\n </dx-text-box>\n </div>\n <div class=\"col-md-6\">\n <dx-text-box label=\"\u00DCr\u00FCn Ad\u0131\" [(value)]=\"workOrderInfo.itemName\" [disabled]=\"true\">\n </dx-text-box>\n </div>\n </div>\n\n <div class=\"row mt-2\">\n <div class=\"col-md-3\">\n <dx-number-box \n label=\"Planlanan Miktar\" \n [(value)]=\"workOrderInfo.plannedQty\" \n [disabled]=\"true\">\n </dx-number-box>\n </div>\n <div class=\"col-md-3\">\n <dx-number-box \n label=\"Tamamlanan Miktar\" \n [(value)]=\"workOrderInfo.cmpltQty\" \n [disabled]=\"true\">\n </dx-number-box>\n </div>\n <div class=\"col-md-3\">\n <dx-text-box \n label=\"Depo\" \n [(value)]=\"workOrderInfo.warehouse\" \n [disabled]=\"true\">\n </dx-text-box>\n </div>\n <div class=\"col-md-3\">\n <dx-text-box \n label=\"Ambalaj Lot\" \n [(value)]=\"workOrderInfo.u_TRKAMBALAJLOT\" \n [disabled]=\"true\">\n </dx-text-box>\n </div>\n </div>\n\n <!-- Pallet Type Selection -->\n <div class=\"row mt-3\">\n <div class=\"col-md-12\">\n <dx-radio-group #paletTipiRef [items]=\"paletTipleri\" layout=\"horizontal\" [(value)]=\"paletTipi\"\n (onValueChanged)=\"onPaletTipiChange()\">\n </dx-radio-group>\n </div>\n </div>\n\n <!-- Koli Count for KISMI Pallet -->\n <div class=\"row mt-2\" *ngIf=\"paletTipi === 'KISMI'\">\n <div class=\"col-md-6\">\n <dx-number-box #koliAdetRef label=\"Koli Adedi\" [(value)]=\"koliAdet\" (onValueChanged)=\"onKoliAdetChange()\"\n [min]=\"1\">\n </dx-number-box>\n </div>\n </div>\n\n <!-- Calculated Total Quantity -->\n <div class=\"row mt-2\">\n <div class=\"col-md-4\">\n <dx-number-box label=\"Toplam Miktar (Adet)\" [(value)]=\"toplamMiktar\" [disabled]=\"true\"\n [stylingMode]=\"'filled'\">\n </dx-number-box>\n </div>\n <div class=\"col-md-4\">\n <dx-number-box label=\"Koli \u0130\u00E7i Adet\" [(value)]=\"workOrderInfo.salPackUn\" [disabled]=\"true\">\n </dx-number-box>\n </div>\n <div class=\"col-md-4\">\n <dx-number-box label=\"Girilebilecek Kalan Miktar\" [(value)]=\"workOrderInfo.remainingAllowedQty\"\n [disabled]=\"true\">\n </dx-number-box>\n </div>\n </div>\n\n <!-- Quality Status Info -->\n <div class=\"row mt-2\" *ngIf=\"workOrderInfo.u_KaliteDurumu\">\n <div class=\"col-md-12\">\n <div class=\"alert alert-info\" role=\"alert\">\n <strong>Kalite Durumu:</strong> {{ workOrderInfo.u_KaliteDurumu }}\n </div>\n </div>\n </div>\n\n <!-- Receipt History -->\n <div class=\"row mt-3\">\n <div class=\"col-12\">\n <div class=\"fw-semibold mb-1\" style=\"font-size: 13px;\">\n \u00DCretimden Giri\u015F Hareketleri\n </div>\n <dx-data-grid [dataSource]=\"workOrderInfo.receiptHistory\" [showBorders]=\"true\" [columnAutoWidth]=\"true\"\n [wordWrapEnabled]=\"false\" [rowAlternationEnabled]=\"true\" [hoverStateEnabled]=\"true\"\n [noDataText]=\"'Hen\u00FCz giri\u015F hareketi bulunmamaktad\u0131r.'\" [height]=\"'auto'\">\n <dxo-scrolling mode=\"standard\"></dxo-scrolling>\n <dxo-paging [enabled]=\"false\"></dxo-paging>\n <dxi-column caption=\"#\" name=\"rowNum\" [width]=\"40\" alignment=\"center\" [calculateCellValue]=\"calcRowIndex\"></dxi-column>\n <dxi-column dataField=\"docNum\" caption=\"Belge No\" [minWidth]=\"110\" alignment=\"center\"></dxi-column>\n <dxi-column dataField=\"batchNum\" caption=\"Parti No\" [minWidth]=\"130\" alignment=\"center\"></dxi-column>\n <dxi-column dataField=\"quantity\" caption=\"Miktar\" dataType=\"number\" [minWidth]=\"75\" alignment=\"center\"></dxi-column>\n <dxi-column dataField=\"whsName\" caption=\"Depo\" [minWidth]=\"100\" alignment=\"center\"></dxi-column>\n <dxi-column dataField=\"docStatus\" caption=\"Durum\" [minWidth]=\"105\" alignment=\"center\"\n [calculateCellValue]=\"calcDocStatus\">\n </dxi-column>\n <dxi-column dataField=\"userCode\" caption=\"Kullan\u0131c\u0131\" [minWidth]=\"80\" alignment=\"center\"></dxi-column>\n <dxo-summary>\n <dxi-total-item column=\"docNum\" summaryType=\"count\" displayFormat=\"Toplam\"></dxi-total-item>\n <dxi-total-item column=\"quantity\" summaryType=\"sum\" displayFormat=\"{0}\" [valueFormat]=\"formatNumber\"></dxi-total-item>\n </dxo-summary>\n </dx-data-grid>\n </div>\n </div>\n </div>\n </div>\n </div>\n</abp-page>", styles: [".page-title{margin:0;padding:0}\n"] }]
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"] }]
2182
2339
  }], ctorParameters: function () { return [{ type: HitFillingReceiptFromProductionService }, { type: i3.ConfirmationService }, { type: i0.NgZone }]; }, propDecorators: { nmbBoxIsEmriNo: [{
2183
2340
  type: ViewChild,
2184
2341
  args: ['isEmriNoRef', { static: false }]