@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.
@@ -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 locale = navigator.language || 'tr-TR';
110
- const formatted = new Intl.NumberFormat(locale, {
110
+ const numericValue = HitHelper.toNumericValue(value);
111
+ const formatted = new Intl.NumberFormat('tr-TR', {
111
112
  minimumFractionDigits: 4,
112
113
  maximumFractionDigits: 4,
113
- }).format(value);
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
- // Yeni barkod yapısı: (240)itemcode(10)partiNo(17)sonKullanmaTarihi(3103)miktar(21)elTerminalKodu
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, weight, terminalCode) {
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 = weight; // Gram cinsinden
177
- this.weightKg = weight ? weight / 1000 : 0; // Kilogram cinsine dönüştürülmüş hali
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
- const issueLines = this.productionOrder.getProductionOrderLine.map((issueLine) => {
904
- issueLine.quantity = 0;
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
- // Initialize
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!', {
@@ -2059,62 +2162,115 @@ class HitFillingReceiptFromProductionComponent {
2059
2162
  });
2060
2163
  return;
2061
2164
  }
2165
+ const operationId = this.newOperationId();
2062
2166
  const saveData = {
2167
+ operationId,
2063
2168
  docEntry: this.isEmriNo,
2064
2169
  palletType: this.paletTipi,
2065
2170
  koliCount: this.paletTipi === 'KISMI' ? this.koliAdet : null,
2066
- totalQuantity: this.toplamMiktar,
2067
- warehouseCode: this.workOrderInfo.warehouse,
2068
- batchNumber: '',
2069
- componentsToConsume: this.prepareComponentsToConsume()
2171
+ totalQuantity: this.toplamMiktar
2070
2172
  };
2173
+ this.pendingOperationId = operationId;
2174
+ sessionStorage.setItem(this.pendingStorageKey, operationId);
2071
2175
  this.isSaving = true;
2072
2176
  this.isLoading = true;
2073
- this.service.createReceipt(saveData).subscribe({
2177
+ this.operationStatusMessage = 'Üretimden giriş kaydediliyor, SAP belge sonucu bekleniyor.';
2178
+ this.service.createReceipt(saveData).pipe(takeUntil(this.destroy$)).subscribe({
2074
2179
  next: response => {
2075
- if (response?.isSuccessful) {
2076
- this.confirmation.success('', 'Üretimden giriş başarıyla gerçekleştirildi!', {
2077
- hideYesBtn: true,
2078
- cancelText: 'Kapat',
2079
- dismissible: false,
2080
- });
2081
- this.clearAll();
2082
- }
2083
- this.isSaving = false;
2180
+ if (response?.isSuccessful && response.items)
2181
+ this.handleOperationStatus(response.items);
2182
+ else
2183
+ this.checkOperationStatus();
2084
2184
  this.isLoading = false;
2085
2185
  },
2086
2186
  error: e => {
2087
- this.isSaving = false;
2088
2187
  this.isLoading = false;
2188
+ this.checkOperationStatus();
2089
2189
  },
2090
2190
  });
2091
2191
  }
2092
- prepareComponentsToConsume() {
2093
- if (!this.workOrderInfo || !this.workOrderInfo.lines) {
2094
- return [];
2095
- }
2096
- const components = [];
2097
- const itemCode = this.workOrderInfo.itemCode;
2098
- // Determine if this is YM or 151* product
2099
- const isYM = itemCode.startsWith('YM');
2100
- const is151 = itemCode.startsWith('151');
2101
- // Get controlled lines (YM/151* items marked with U_Kontrol='E')
2102
- const controlledLines = this.workOrderInfo.lines.filter(line => line.isControlled && line.batchNumber);
2103
- // For YM/151* products, consume by lot from control screen
2104
- for (const line of controlledLines) {
2105
- components.push({
2106
- itemCode: line.itemCode,
2107
- quantity: line.issuedQty,
2108
- warehouseCode: line.warehouse,
2109
- batchNumber: line.batchNumber,
2110
- baseLine: line.lineNum
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
2111
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);
2112
2243
  }
2113
- // For other components, use "Teyit sonrası otomatik çekme" logic
2114
- // (This would be handled by the backend with FIFO for batch/serial items)
2115
- return components;
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)}`;
2116
2270
  }
2117
2271
  clearAll() {
2272
+ if (this.isSaving)
2273
+ return;
2118
2274
  this.isWorkOrderLoaded = false;
2119
2275
  this.isEmriNo = null;
2120
2276
  this.workOrderInfo = null;
@@ -2140,10 +2296,10 @@ class HitFillingReceiptFromProductionComponent {
2140
2296
  }
2141
2297
  }
2142
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 });
2143
- 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"] }] });
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"] }] });
2144
2300
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFillingReceiptFromProductionComponent, decorators: [{
2145
2301
  type: Component,
2146
- 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"] }]
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"] }]
2147
2303
  }], ctorParameters: function () { return [{ type: HitFillingReceiptFromProductionService }, { type: i3.ConfirmationService }, { type: i0.NgZone }]; }, propDecorators: { nmbBoxIsEmriNo: [{
2148
2304
  type: ViewChild,
2149
2305
  args: ['isEmriNoRef', { static: false }]