@hitsoft/smart-warehouse 1.0.2 → 1.0.4

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Component, ViewChild, NgModule, ViewEncapsulation } from '@angular/core';
2
+ import { Injectable, Component, ViewChild, NgModule, ViewEncapsulation, EventEmitter, Input, Output } from '@angular/core';
3
3
  import * as i1 from '@abp/ng.core';
4
4
  import { CoreModule, LazyModuleFactory } from '@abp/ng.core';
5
5
  import * as i2 from '@abp/ng.theme.shared';
@@ -16,15 +16,15 @@ import * as i5$1 from '@abp/ng.components/page';
16
16
  import { PageModule } from '@abp/ng.components/page';
17
17
  import DataSource from 'devextreme/data/data_source';
18
18
  import * as AspNetData from 'devextreme-aspnet-data-nojquery';
19
- import * as i4 from '@angular/common';
19
+ import * as i3 from '@angular/common';
20
20
  import * as i6 from 'devextreme-angular';
21
21
  import { DxDataGridModule, DxPopupModule, DxNumberBoxModule, DxButtonModule, DxSelectBoxModule } from 'devextreme-angular';
22
22
  import * as i7 from 'devextreme-angular/ui/nested';
23
23
  import * as i8 from 'devextreme-angular/core';
24
24
  import { __awaiter } from 'tslib';
25
25
  import CustomStore from 'devextreme/data/custom_store';
26
- import { firstValueFrom, of, forkJoin } from 'rxjs';
27
- import { map, catchError } from 'rxjs/operators';
26
+ import { firstValueFrom, Subject, of, forkJoin } from 'rxjs';
27
+ import { debounceTime, distinctUntilChanged, map, catchError } from 'rxjs/operators';
28
28
 
29
29
  class SmartWarehouseService {
30
30
  constructor(restService) {
@@ -210,7 +210,17 @@ class WarehouseService {
210
210
  */
211
211
  this.getBinLocationsByWarehouse = (whsCode) => this.restService.request({
212
212
  method: 'GET',
213
- url: `/api/smart-warehouse/sap-warehouses/get-bin-locations/${whsCode}`,
213
+ url: '/api/smart-warehouse/sap-warehouses/get-bin-locations',
214
+ params: { warehouseCode: whsCode },
215
+ }, { apiName: this.apiName });
216
+ /**
217
+ * Depo yeri seçim modalı için sayfalı depo yeri araması.
218
+ * search boş bırakılabilir — o zaman deponun tüm depo yerleri sayfa sayfa gezilir.
219
+ */
220
+ this.searchBinLocationsByWarehouse = (warehouseCode, search, skip, take) => this.restService.request({
221
+ method: 'GET',
222
+ url: '/api/smart-warehouse/sap-warehouses/search-bin-locations',
223
+ params: { warehouseCode, search: search || '', skip, take },
214
224
  }, { apiName: this.apiName });
215
225
  /**
216
226
  * Tüm akıllı depolardaki depo yerlerini getirir
@@ -231,21 +241,25 @@ class WarehouseService {
231
241
  */
232
242
  this.getItemNameByCode = (itemCode) => this.restService.request({
233
243
  method: 'GET',
234
- url: `/api/smart-warehouse/sap-warehouses/get-item-name/${itemCode}`,
244
+ url: '/api/smart-warehouse/sap-warehouses/get-item-name',
245
+ params: { itemCode },
235
246
  }, { apiName: this.apiName });
236
247
  /**
237
248
  * Barkod üzerinden SAP'den kalem bilgisini getirir
238
249
  */
239
250
  this.getItemByBarcode = (barcode) => this.restService.request({
240
251
  method: 'GET',
241
- url: `/api/smart-warehouse/sap-warehouses/get-item-by-barcode/${barcode}`,
252
+ url: '/api/smart-warehouse/sap-warehouses/get-item-by-barcode',
253
+ params: { barcode },
242
254
  }, { apiName: this.apiName });
243
255
  /**
244
256
  * BinCode üzerinden SAP'den depo yeri bilgisini (AbsEntry) getirir
245
257
  */
258
+ // BinCode "/" içerdiği için (ör. "127/A000010001/2") route segmenti değil, query param olarak gönderilir.
246
259
  this.getBinLocationByBinCode = (binCode) => this.restService.request({
247
260
  method: 'GET',
248
- url: `/api/smart-warehouse/sap-warehouses/get-bin-location-by-bincode/${binCode}`,
261
+ url: '/api/smart-warehouse/sap-warehouses/get-bin-location-by-bincode',
262
+ params: { binCode },
249
263
  }, { apiName: this.apiName });
250
264
  }
251
265
  }
@@ -700,7 +714,7 @@ class OrdersComponent {
700
714
  }
701
715
  OrdersComponent.MAX_SHORT_ITEMS_DETAILED = 5;
702
716
  OrdersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: OrdersComponent, deps: [{ token: OrderService }, { token: WarehouseService }, { token: i2.ToasterService }, { token: i2.ConfirmationService }], target: i0.ɵɵFactoryTarget.Component });
703
- OrdersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: OrdersComponent, selector: "lib-orders", viewQueries: [{ propertyName: "dxOrdersInstance", first: true, predicate: ["dxOrdersInstance"], descendants: true }], ngImport: i0, template: "<abp-page [title]=\"'SmartWarehouse::Orders' | abpLocalization\">\r\n\r\n <!-- Toolbar -->\r\n <div class=\"orders-toolbar\">\r\n <!-- Row 1: Filters -->\r\n <div class=\"toolbar-row\">\r\n <div class=\"toolbar-group\">\r\n <label>Sipari\u015F Grubu</label>\r\n <div class=\"status-group\">\r\n <span class=\"status-chip list-purchase\" [class.active]=\"activeListType === '1'\"\r\n (click)=\"toggleListType('1')\">\r\n <i class=\"fa fa-shopping-cart\"></i> Sanayi Sipari\u015Fleri\r\n </span>\r\n <span class=\"status-chip list-distribution\" [class.active]=\"activeListType === '2'\"\r\n (click)=\"toggleListType('2')\">\r\n <i class=\"fa fa-truck\"></i> Da\u011F\u0131t\u0131m Sipari\u015Fleri\r\n </span>\r\n <span class=\"status-chip list-warehouse\" [class.active]=\"activeListType === '3'\"\r\n (click)=\"toggleListType('3')\">\r\n <i class=\"fa fa-warehouse\"></i> Depo Talepleri\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"toolbar-group toolbar-group--durum\">\r\n <label>Durum</label>\r\n <div class=\"status-group\">\r\n <span class=\"status-chip pending\" [class.active]=\"activeStatus === 'beklemede'\"\r\n (click)=\"toggleStatus('beklemede')\">\r\n <i class=\"fa fa-clock\"></i> Beklemede\r\n </span>\r\n <span class=\"status-chip processing\" [class.active]=\"activeStatus === 'isleniyor'\"\r\n (click)=\"toggleStatus('isleniyor')\">\r\n <i class=\"fa fa-spinner\"></i> \u0130\u015Fleniyor\r\n </span>\r\n <span class=\"status-chip awaiting\" [class.active]=\"activeStatus === 'onayBekliyor'\"\r\n (click)=\"toggleStatus('onayBekliyor')\">\r\n <i class=\"fa fa-hourglass-half\"></i> Onay Bekliyor\r\n </span>\r\n <span class=\"status-chip completed\" [class.active]=\"activeStatus === 'tamamlandi'\"\r\n (click)=\"toggleStatus('tamamlandi')\">\r\n <i class=\"fa fa-check-circle\"></i> Tamamland\u0131\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"toolbar-group toolbar-group--depo\">\r\n <label>Depo</label>\r\n <select [(ngModel)]=\"selectedWarehouse\" class=\"form-select\">\r\n <option value=\"\">T\u00FCm\u00FC</option>\r\n <option *ngFor=\"let wh of warehouses\" [value]=\"wh.WhsCode\">{{ wh.WhsName }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <hr class=\"toolbar-divider\" />\r\n\r\n <!-- Row 3: Action input + related buttons | Reservation | Refresh/Excel -->\r\n <div class=\"toolbar-row\">\r\n <div class=\"action-group\">\r\n <button class=\"btn btn-action-primary btn-sm\" (click)=\"onGorevBaslat()\" [disabled]=\"isGorevBaslatLoading\">\r\n <i class=\"fa fa-plus-circle\"></i> G\u00F6rev Ba\u015Flat\r\n </button>\r\n <button class=\"btn btn-action-approve btn-sm\" (click)=\"onOnayVer()\">\r\n <i class=\"fa fa-thumbs-up\"></i> G\u00F6revi Tamamla\r\n </button>\r\n <button class=\"btn btn-action-danger btn-sm\" (click)=\"onSiparisKapat()\">\r\n <i class=\"fa fa-times-circle\"></i> Sipari\u015F Kapat\r\n </button>\r\n <button class=\"btn btn-action-sync btn-sm\" (click)=\"onDurumGuncelle()\" [disabled]=\"isBeeCellLoading\">\r\n <i class=\"fa fa-sync-alt\"></i> Durum G\u00FCncelle\r\n </button>\r\n <button class=\"btn btn-action-info btn-sm\" (click)=\"onBosKasaGetir()\" [disabled]=\"isBeeCellLoading\">\r\n <i class=\"fa fa-box-open\"></i> Bo\u015F Kasa Getir\r\n </button>\r\n <button class=\"btn btn-action-warning btn-sm\" (click)=\"onYarimKasa()\" [disabled]=\"isBeeCellLoading\">\r\n <i class=\"fa fa-box\"></i> Yar\u0131m Kasa Getir\r\n </button>\r\n <span class=\"action-divider\"></span>\r\n <button class=\"btn btn-action-reservation btn-sm\" (click)=\"onRezervasyonYap()\" [disabled]=\"isReservationLoading\">\r\n <i class=\"fa fa-lock\"></i> Rezervasyon Yap\r\n </button>\r\n <button class=\"btn btn-action-reservation-cancel btn-sm\" (click)=\"onRezervasyonSil()\" [disabled]=\"isReservationLoading\">\r\n <i class=\"fa fa-unlock\"></i> Rezervasyon Sil\r\n </button>\r\n <button class=\"btn btn-action-reservation-bulk btn-sm\" (click)=\"onTopluRezervasyonYap()\" [disabled]=\"isReservationLoading\">\r\n <i class=\"fa fa-lock\"></i> Toplu Rez. Yap\r\n </button>\r\n <button class=\"btn btn-action-reservation-bulk-cancel btn-sm\" (click)=\"onTumRezervasyonlariSil()\" [disabled]=\"isReservationLoading\">\r\n <i class=\"fa fa-unlock\"></i> Toplu Rez. Sil\r\n </button>\r\n <span class=\"action-divider\"></span>\r\n <button class=\"btn btn-action-secondary btn-sm\" (click)=\"onRefresh()\">\r\n <i class=\"fa fa-redo\"></i> Yenile\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Data Grid -->\r\n <div class=\"card orders-grid-card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid\r\n #dxOrdersInstance\r\n [dataSource]=\"ordersDataSource\"\r\n [showRowLines]=\"true\"\r\n [showBorders]=\"true\"\r\n [remoteOperations]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\"\r\n [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [columnHidingEnabled]=\"true\"\r\n (onRowClick)=\"onRowClick($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged($event)\"\r\n (onRowPrepared)=\"onRowPrepared($event)\"\r\n style=\"height: 60vh\"\r\n >\r\n <dxo-pager\r\n [visible]=\"true\"\r\n [showInfo]=\"true\"\r\n [allowedPageSizes]=\"[5, 10, 20]\"\r\n [showNavigationButtons]=\"true\"\r\n [showPageSizeSelector]=\"true\"\r\n >\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\r\n <dxo-column-chooser\r\n [allowSearch]=\"true\"\r\n [enabled]=\"true\"\r\n mode=\"select\"\r\n ></dxo-column-chooser>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-export [enabled]=\"true\" [allowExportSelectedData]=\"false\"></dxo-export>\r\n <dxo-filter-builder [allowHierarchicalFields]=\"true\"></dxo-filter-builder>\r\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"standard\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxo-selection\r\n mode=\"multiple\"\r\n showCheckBoxesMode=\"always\"\r\n [allowSelectAll]=\"true\"\r\n ></dxo-selection>\r\n\r\n <dxi-column\r\n dataField=\"DocNum\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocNum' | abpLocalization }}\"\r\n [width]=\"110\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"CardCode\"\r\n caption=\"{{ 'SmartWarehouse::Order:CardCode' | abpLocalization }}\"\r\n [width]=\"140\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"CardName\"\r\n caption=\"{{ 'SmartWarehouse::Order:CardName' | abpLocalization }}\"\r\n [width]=\"220\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"DocDate\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocDate' | abpLocalization }}\"\r\n dataType=\"date\"\r\n format=\"dd.MM.yyyy\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"DocDueDate\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocDueDate' | abpLocalization }}\"\r\n dataType=\"date\"\r\n format=\"dd.MM.yyyy\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWTalepTarihi\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWTalepTarihi' | abpLocalization }}\"\r\n dataType=\"date\"\r\n format=\"dd.MM.yyyy\"\r\n [width]=\"130\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWDurum\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWDurum' | abpLocalization }}\"\r\n [width]=\"110\"\r\n cellTemplate=\"swDurumTemplate\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWIsError\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWIsError' | abpLocalization }}\"\r\n [width]=\"50\"\r\n cellTemplate=\"errorTemplate\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWErrorMessage\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWErrorMessage' | abpLocalization }}\"\r\n [width]=\"260\"\r\n cellTemplate=\"errorMessageTemplate\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"OwnerCode\"\r\n caption=\"{{ 'SmartWarehouse::Order:OwnerCode' | abpLocalization }}\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"Comments\"\r\n caption=\"{{ 'SmartWarehouse::Order:Comments' | abpLocalization }}\"\r\n [width]=\"200\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWGonderildi\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWGonderildi' | abpLocalization }}\"\r\n [width]=\"110\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWStationCode\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWStationCode' | abpLocalization }}\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWEyeCode\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWEyeCode' | abpLocalization }}\"\r\n [width]=\"140\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWOrderType\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWOrderType' | abpLocalization }}\"\r\n [width]=\"160\"\r\n cellTemplate=\"orderTypeTemplate\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"NumAtCard\"\r\n caption=\"{{ 'SmartWarehouse::Order:NumAtCard' | abpLocalization }}\"\r\n [width]=\"140\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"DocTotal\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocTotal' | abpLocalization }}\"\r\n dataType=\"number\"\r\n format=\"#,##0.00\"\r\n [width]=\"130\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"DocCur\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocCur' | abpLocalization }}\"\r\n [width]=\"90\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"DocStatus\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocStatus' | abpLocalization }}\"\r\n [width]=\"90\"\r\n cellTemplate=\"statusTemplate\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"DocEntry\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocEntry' | abpLocalization }}\"\r\n [width]=\"100\"\r\n ></dxi-column>\r\n\r\n <div *dxTemplate=\"let cell of 'statusTemplate'\">\r\n <span\r\n class=\"badge\"\r\n [ngClass]=\"{\r\n 'bg-success': cell.value === 'O',\r\n 'bg-secondary': cell.value === 'C'\r\n }\"\r\n >\r\n {{ cell.value === 'O' ? 'A\u00E7\u0131k' : 'Kapal\u0131' }}\r\n </span>\r\n </div>\r\n\r\n <div *dxTemplate=\"let cell of 'swDurumTemplate'\">\r\n <span\r\n class=\"badge\"\r\n [ngClass]=\"{\r\n 'bg-warning': cell.value === '0' || !cell.value,\r\n 'bg-info': cell.value === '1',\r\n 'bg-primary': cell.value === '2',\r\n 'bg-success': cell.value === '3'\r\n }\"\r\n >\r\n {{\r\n cell.value === '1' ? 'Onay Bekliyor' :\r\n cell.value === '2' ? '\u0130\u015Fleniyor' :\r\n cell.value === '3' ? 'Tamamland\u0131' : 'Beklemede'\r\n }}\r\n </span>\r\n </div>\r\n\r\n <div *dxTemplate=\"let cell of 'errorTemplate'\">\r\n <i\r\n *ngIf=\"cell.value === 'Y'\"\r\n class=\"fa fa-exclamation-triangle text-danger\"\r\n [title]=\"cell.data.U_SWErrorMessage\"\r\n ></i>\r\n </div>\r\n\r\n <div *dxTemplate=\"let cell of 'errorMessageTemplate'\">\r\n <span\r\n *ngIf=\"cell.data.U_SWIsError === 'Y'\"\r\n class=\"error-message-cell\"\r\n [title]=\"cell.value\"\r\n >{{ cell.value }}</span>\r\n </div>\r\n\r\n <div *dxTemplate=\"let cell of 'orderTypeTemplate'\">\r\n <span class=\"badge bg-secondary\">\r\n {{\r\n cell.value === '1' ? 'Sanayi Sipari\u015Fleri' :\r\n cell.value === '2' ? 'Da\u011F\u0131t\u0131m Sipari\u015Fleri' :\r\n cell.value === '3' ? 'Depo Talepleri' : '-'\r\n }}\r\n </span>\r\n </div>\r\n\r\n <!-- Master-Detail: Sipari\u015F Sat\u0131rlar\u0131 -->\r\n <dxo-master-detail [enabled]=\"true\" template=\"orderLinesTemplate\"></dxo-master-detail>\r\n\r\n <div *dxTemplate=\"let detail of 'orderLinesTemplate'\">\r\n <div class=\"p-3\">\r\n <h6 class=\"mb-3\">\r\n <i class=\"fa fa-list me-1\"></i>\r\n {{ 'SmartWarehouse::Order:DocNum' | abpLocalization }}:\r\n {{ detail.data.DocNum }} - Sipari\u015F Sat\u0131rlar\u0131\r\n </h6>\r\n <dx-data-grid\r\n [dataSource]=\"detail.data.DocumentLines\"\r\n [showRowLines]=\"true\"\r\n [showBorders]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [rowAlternationEnabled]=\"true\"\r\n >\r\n <dxi-column\r\n dataField=\"LineNum\"\r\n caption=\"{{ 'SmartWarehouse::Order:LineNum' | abpLocalization }}\"\r\n [width]=\"70\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"ItemCode\"\r\n caption=\"{{ 'SmartWarehouse::Order:ItemCode' | abpLocalization }}\"\r\n [width]=\"140\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"ItemDescription\"\r\n caption=\"Kalem Ad\u0131\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"Quantity\"\r\n caption=\"{{ 'SmartWarehouse::Order:Quantity' | abpLocalization }}\"\r\n dataType=\"number\"\r\n format=\"#,##0.##\"\r\n [width]=\"100\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWTeslimMiktar\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWTeslimMiktar' | abpLocalization }}\"\r\n dataType=\"number\"\r\n format=\"#,##0.##\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"LineTotal\"\r\n caption=\"{{ 'SmartWarehouse::Order:LineTotal' | abpLocalization }}\"\r\n dataType=\"number\"\r\n format=\"#,##0.00\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"WarehouseCode\"\r\n caption=\"{{ 'SmartWarehouse::Order:WhsCode' | abpLocalization }}\"\r\n [width]=\"100\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"ShipDate\"\r\n caption=\"{{ 'SmartWarehouse::Order:ShipDate' | abpLocalization }}\"\r\n dataType=\"date\"\r\n format=\"dd.MM.yyyy\"\r\n [width]=\"110\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SonGorevId\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SonGorevId' | abpLocalization }}\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n\r\n <dxo-summary>\r\n <dxi-total-item\r\n column=\"lineTotal\"\r\n summaryType=\"sum\"\r\n displayFormat=\"Toplam: {0}\"\r\n valueFormat=\"#,##0.00\"\r\n ></dxi-total-item>\r\n <dxi-total-item\r\n column=\"quantity\"\r\n summaryType=\"sum\"\r\n displayFormat=\"Toplam: {0}\"\r\n valueFormat=\"#,##0.##\"\r\n ></dxi-total-item>\r\n </dxo-summary>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n\r\n <!-- Bo\u015F / Yar\u0131m Kasa Popup -->\r\n <dx-popup\r\n [visible]=\"bosKasaPopupVisible\"\r\n (onHidden)=\"bosKasaPopupVisible = false\"\r\n [width]=\"380\"\r\n [height]=\"'auto'\"\r\n [showTitle]=\"true\"\r\n [title]=\"bosKasaMode === 'empty' ? 'Bo\u015F Kasa Getir' : 'Yar\u0131m Kasa Getir'\"\r\n [dragEnabled]=\"true\"\r\n [resizeEnabled]=\"false\"\r\n [showCloseButton]=\"true\"\r\n [closeOnOutsideClick]=\"false\"\r\n >\r\n <div *dxTemplate=\"let data of 'content'\" class=\"p-3\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">\u0130stasyon No</label>\r\n <dx-number-box [(value)]=\"bosKasaStationId\" [min]=\"1\" [showSpinButtons]=\"true\"></dx-number-box>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">Raf No (Shelf ID)</label>\r\n <dx-number-box [(value)]=\"bosKasaShelfId\" [min]=\"1\" [showSpinButtons]=\"true\"></dx-number-box>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">Kasa Adedi</label>\r\n <dx-number-box [(value)]=\"bosKasaBoxCount\" [min]=\"1\" [max]=\"50\" [showSpinButtons]=\"true\"></dx-number-box>\r\n </div>\r\n <div class=\"d-flex justify-content-end gap-2 mt-3\">\r\n <dx-button text=\"\u0130ptal\" (onClick)=\"bosKasaPopupVisible = false\" type=\"normal\"></dx-button>\r\n <dx-button\r\n [text]=\"bosKasaMode === 'empty' ? 'Bo\u015F Kasa G\u00F6nder' : 'Yar\u0131m Kasa G\u00F6nder'\"\r\n type=\"default\"\r\n (onClick)=\"onBosKasaGonder()\"\r\n ></dx-button>\r\n </div>\r\n </div>\r\n </dx-popup>\r\n\r\n</abp-page>\r\n", styles: [":host{display:block;max-width:100%;overflow-x:hidden}.orders-toolbar{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:16px 20px;margin-bottom:16px;box-shadow:0 1px 3px #0000000f;max-width:100%;overflow:hidden}.toolbar-divider{border:none;border-top:1px solid #eee;margin:10px 0}.toolbar-row{display:flex;flex-wrap:wrap;align-items:center;gap:16px}.toolbar-group{display:flex;flex-direction:column;gap:4px}.toolbar-group--durum{margin-left:80px}.toolbar-group--depo{margin-left:auto}.toolbar-group label{font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.5px}.toolbar-group select,.toolbar-group input[type=date]{height:36px;border:1px solid #ced4da;border-radius:6px;padding:0 10px;font-size:13px;background:#fff;transition:border-color .15s}.toolbar-group select:focus,.toolbar-group input[type=date]:focus{border-color:#556ee6;outline:none;box-shadow:0 0 0 2px #556ee626}.toolbar-group select{min-width:180px}.radio-group{display:flex;gap:12px;height:36px;align-items:center}.radio-group .form-check{margin:0;padding-left:22px}.radio-group .form-check-label{font-size:13px;cursor:pointer;white-space:nowrap}.status-group{display:flex;gap:10px;align-items:center}.status-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:20px;font-size:12px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:all .15s;-webkit-user-select:none;user-select:none}.status-chip.pending{background:#fff9e6;color:#c9a227;border-color:#ffe082}.status-chip.pending.active{background:#ffc107;color:#fff;border-color:#ffc107}.status-chip.processing{background:#e8f0fe;color:#7aadf5;border-color:#a8c8f7}.status-chip.processing.active{background:#0d6efd;color:#fff;border-color:#0d6efd}.status-chip.awaiting{background:#e6f9fc;color:#6ec6d8;border-color:#a0e1ed}.status-chip.awaiting.active{background:#0dcaf0;color:#fff;border-color:#0dcaf0}.status-chip.completed{background:#e8f5e9;color:#6db680;border-color:#a5d6a7}.status-chip.completed.active{background:#198754;color:#fff;border-color:#198754}.status-chip.list-purchase{background:#eef0fa;color:#9aa1d4;border-color:#b3b9e6}.status-chip.list-purchase.active{background:#5c6bc0;color:#fff;border-color:#5c6bc0}.status-chip.list-distribution{background:#fce8ee;color:#e87a9e;border-color:#f0a3bb}.status-chip.list-distribution.active{background:#e91e63;color:#fff;border-color:#e91e63}.status-chip.list-warehouse{background:#e5f5f4;color:#6db5ab;border-color:#a0d4cd}.status-chip.list-warehouse.active{background:#009688;color:#fff;border-color:#009688}.action-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.action-input{width:140px;height:32px;border:1px solid #ced4da;border-radius:6px;padding:0 10px;font-size:13px}.action-input:focus{border-color:#556ee6;outline:none;box-shadow:0 0 0 2px #556ee626}.toolbar-separator{width:1px;height:28px;background:#dee2e6;align-self:center}.reservation-group{display:flex;align-items:center;gap:8px}.toolbar-actions{display:flex;gap:8px;margin-left:auto;align-items:center}.action-group .btn,.reservation-group .btn,.toolbar-actions .btn{display:inline-flex;align-items:center;gap:5px;font-size:12px;padding:5px 12px;border-radius:6px;font-weight:500;white-space:nowrap;transition:all .15s}.btn-action-primary{background:#556ee6;color:#fff;border:none}.btn-action-primary:hover{background:#4458cb;color:#fff}.btn-action-success{background:#34c38f;color:#fff;border:none}.btn-action-success:hover{background:#2ca67a;color:#fff}.btn-action-approve{background:#6f42c1;color:#fff;border:none}.btn-action-approve:hover{background:#5a32a3;color:#fff}.btn-action-warning{background:#f1b44c;color:#fff;border:none}.btn-action-warning:hover{background:#d9a043;color:#fff}.btn-action-info{background:#50a5f1;color:#fff;border:none}.btn-action-info:hover{background:#3d8ed8;color:#fff}.btn-action-danger{background:#f46a6a;color:#fff;border:none}.btn-action-danger:hover{background:#e05555;color:#fff}.btn-action-outline{background:transparent;color:#556ee6;border:1px solid #556ee6}.btn-action-outline:hover{background:#556ee6;color:#fff}.btn-action-secondary{background:#74788d;color:#fff;border:none}.btn-action-secondary:hover{background:#5f6373;color:#fff}.btn-action-reservation{background:#7c4dff;color:#fff;border:none}.btn-action-reservation:hover{background:#651fff;color:#fff}.btn-action-reservation:disabled{background:#b39ddb;cursor:not-allowed}.btn-action-reservation-cancel{background:#ff6e40;color:#fff;border:none}.btn-action-reservation-cancel:hover{background:#ff3d00;color:#fff}.btn-action-reservation-cancel:disabled{background:#ffab91;cursor:not-allowed}.btn-action-reservation-bulk{background:#536dfe;color:#fff;border:none}.btn-action-reservation-bulk:hover{background:#304ffe;color:#fff}.btn-action-reservation-bulk:disabled{background:#8c9eff;cursor:not-allowed}.btn-action-reservation-bulk-cancel{background:#ff5252;color:#fff;border:none}.btn-action-reservation-bulk-cancel:hover{background:#ff1744;color:#fff}.btn-action-reservation-bulk-cancel:disabled{background:#ff8a80;cursor:not-allowed}.action-divider{width:1px;height:24px;background:#dee2e6;display:inline-block;vertical-align:middle;margin:0 4px}.orders-grid-card{border-radius:8px;border:1px solid #e0e0e0;box-shadow:0 1px 3px #0000000f;overflow:hidden;max-width:100%}.orders-grid-card .card-body{padding:12px;overflow-x:auto}::ng-deep .order-row-error{background-color:#fdecea!important}::ng-deep .order-row-error:hover{background-color:#fbd9d5!important}::ng-deep .error-message-cell{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#b02a37;font-size:12px}@media (max-width: 1200px){.toolbar-actions{margin-left:0}.radio-group{flex-wrap:wrap;height:auto}.action-group{width:100%}.toolbar-separator{display:none}}@media (max-width: 992px){.toolbar-group--durum,.toolbar-group--depo{margin-left:0}.toolbar-row{gap:12px}.toolbar-group select{min-width:0}.status-group{flex-wrap:wrap;gap:6px}.reservation-group{flex-wrap:wrap}}@media (max-width: 768px){.orders-toolbar{padding:12px}.toolbar-row{flex-direction:column;align-items:stretch;gap:10px}.toolbar-group,.toolbar-group select,.toolbar-group input[type=date]{width:100%}.radio-group{flex-direction:column;align-items:flex-start;gap:8px}.status-group{flex-wrap:wrap;gap:6px}.status-chip{font-size:11px;padding:3px 10px}.action-group,.reservation-group,.toolbar-actions{flex-wrap:wrap;gap:6px}.action-divider{display:none}.action-input{width:100%}.action-group .btn,.reservation-group .btn,.toolbar-actions .btn{font-size:11px;padding:5px 10px}}@media (max-width: 480px){.action-group .btn,.reservation-group .btn,.toolbar-actions .btn{flex:1 1 calc(50% - 6px);justify-content:center}.status-chip{font-size:10px;padding:2px 8px}}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.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: i7.DxoColumnChooserComponent, selector: "dxo-column-chooser", inputs: ["allowSearch", "emptyPanelText", "enabled", "height", "mode", "searchTimeout", "sortOrder", "title", "width"] }, { kind: "component", type: i7.DxoColumnFixingComponent, selector: "dxo-column-fixing", inputs: ["enabled", "texts"] }, { kind: "component", type: i7.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: i7.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "dataSource", "groupInterval", "height", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i7.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "svgToCanvas", "allowExportSelectedData", "texts"] }, { kind: "component", type: i7.DxoFilterBuilderComponent, selector: "dxo-filter-builder", inputs: ["accessKey", "activeStateEnabled", "allowHierarchicalFields", "customOperations", "disabled", "elementAttr", "fields", "filterOperationDescriptions", "focusStateEnabled", "groupOperationDescriptions", "groupOperations", "height", "hint", "hoverStateEnabled", "maxGroupLevel", "onContentReady", "onDisposing", "onEditorPrepared", "onEditorPreparing", "onInitialized", "onOptionChanged", "onValueChanged", "rtlEnabled", "tabIndex", "value", "visible", "width"], outputs: ["valueChange"] }, { kind: "component", type: i7.DxoFilterPanelComponent, selector: "dxo-filter-panel", inputs: ["customizeText", "filterEnabled", "texts", "visible"], outputs: ["filterEnabledChange"] }, { kind: "component", type: i7.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i7.DxoMasterDetailComponent, selector: "dxo-master-detail", inputs: ["autoExpandAll", "enabled", "template"] }, { kind: "component", type: i7.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i7.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i7.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i7.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "deferred", "mode", "selectAllMode", "showCheckBoxesMode", "recursive"] }, { kind: "component", type: i7.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "component", type: i7.DxoSummaryComponent, selector: "dxo-summary", inputs: ["calculateCustomSummary", "groupItems", "recalculateWhileEditing", "skipEmptyValues", "texts", "totalItems"] }, { kind: "component", type: i7.DxiTotalItemComponent, selector: "dxi-total-item", inputs: ["alignment", "column", "cssClass", "customizeText", "displayFormat", "name", "showInColumn", "skipEmptyValues", "summaryType", "valueFormat"] }, { kind: "directive", type: i8.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i6.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "elementAttr", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "elementAttrChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i6.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: i6.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: i5$1.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }] });
717
+ OrdersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: OrdersComponent, selector: "lib-orders", viewQueries: [{ propertyName: "dxOrdersInstance", first: true, predicate: ["dxOrdersInstance"], descendants: true }], ngImport: i0, template: "<abp-page [title]=\"'SmartWarehouse::Orders' | abpLocalization\">\r\n\r\n <!-- Toolbar -->\r\n <div class=\"orders-toolbar\">\r\n <!-- Row 1: Filters -->\r\n <div class=\"toolbar-row\">\r\n <div class=\"toolbar-group\">\r\n <label>Sipari\u015F Grubu</label>\r\n <div class=\"status-group\">\r\n <span class=\"status-chip list-purchase\" [class.active]=\"activeListType === '1'\"\r\n (click)=\"toggleListType('1')\">\r\n <i class=\"fa fa-shopping-cart\"></i> Sanayi Sipari\u015Fleri\r\n </span>\r\n <span class=\"status-chip list-distribution\" [class.active]=\"activeListType === '2'\"\r\n (click)=\"toggleListType('2')\">\r\n <i class=\"fa fa-truck\"></i> Da\u011F\u0131t\u0131m Sipari\u015Fleri\r\n </span>\r\n <span class=\"status-chip list-warehouse\" [class.active]=\"activeListType === '3'\"\r\n (click)=\"toggleListType('3')\">\r\n <i class=\"fa fa-warehouse\"></i> Depo Talepleri\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"toolbar-group toolbar-group--durum\">\r\n <label>Durum</label>\r\n <div class=\"status-group\">\r\n <span class=\"status-chip pending\" [class.active]=\"activeStatus === 'beklemede'\"\r\n (click)=\"toggleStatus('beklemede')\">\r\n <i class=\"fa fa-clock\"></i> Beklemede\r\n </span>\r\n <span class=\"status-chip processing\" [class.active]=\"activeStatus === 'isleniyor'\"\r\n (click)=\"toggleStatus('isleniyor')\">\r\n <i class=\"fa fa-spinner\"></i> \u0130\u015Fleniyor\r\n </span>\r\n <span class=\"status-chip awaiting\" [class.active]=\"activeStatus === 'onayBekliyor'\"\r\n (click)=\"toggleStatus('onayBekliyor')\">\r\n <i class=\"fa fa-hourglass-half\"></i> Onay Bekliyor\r\n </span>\r\n <span class=\"status-chip completed\" [class.active]=\"activeStatus === 'tamamlandi'\"\r\n (click)=\"toggleStatus('tamamlandi')\">\r\n <i class=\"fa fa-check-circle\"></i> Tamamland\u0131\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"toolbar-group toolbar-group--depo\">\r\n <label>Depo</label>\r\n <select [(ngModel)]=\"selectedWarehouse\" class=\"form-select\">\r\n <option value=\"\">T\u00FCm\u00FC</option>\r\n <option *ngFor=\"let wh of warehouses\" [value]=\"wh.WhsCode\">{{ wh.WhsName }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <hr class=\"toolbar-divider\" />\r\n\r\n <!-- Row 3: Action input + related buttons | Reservation | Refresh/Excel -->\r\n <div class=\"toolbar-row\">\r\n <div class=\"action-group\">\r\n <button class=\"btn btn-action-primary btn-sm\" (click)=\"onGorevBaslat()\" [disabled]=\"isGorevBaslatLoading\">\r\n <i class=\"fa fa-plus-circle\"></i> G\u00F6rev Ba\u015Flat\r\n </button>\r\n <button class=\"btn btn-action-approve btn-sm\" (click)=\"onOnayVer()\">\r\n <i class=\"fa fa-thumbs-up\"></i> G\u00F6revi Tamamla\r\n </button>\r\n <button class=\"btn btn-action-danger btn-sm\" (click)=\"onSiparisKapat()\">\r\n <i class=\"fa fa-times-circle\"></i> Sipari\u015F Kapat\r\n </button>\r\n <button class=\"btn btn-action-sync btn-sm\" (click)=\"onDurumGuncelle()\" [disabled]=\"isBeeCellLoading\">\r\n <i class=\"fa fa-sync-alt\"></i> Durum G\u00FCncelle\r\n </button>\r\n <button class=\"btn btn-action-info btn-sm\" (click)=\"onBosKasaGetir()\" [disabled]=\"isBeeCellLoading\">\r\n <i class=\"fa fa-box-open\"></i> Bo\u015F Kasa Getir\r\n </button>\r\n <button class=\"btn btn-action-warning btn-sm\" (click)=\"onYarimKasa()\" [disabled]=\"isBeeCellLoading\">\r\n <i class=\"fa fa-box\"></i> Yar\u0131m Kasa Getir\r\n </button>\r\n <span class=\"action-divider\"></span>\r\n <button class=\"btn btn-action-reservation btn-sm\" (click)=\"onRezervasyonYap()\" [disabled]=\"isReservationLoading\">\r\n <i class=\"fa fa-lock\"></i> Rezervasyon Yap\r\n </button>\r\n <button class=\"btn btn-action-reservation-cancel btn-sm\" (click)=\"onRezervasyonSil()\" [disabled]=\"isReservationLoading\">\r\n <i class=\"fa fa-unlock\"></i> Rezervasyon Sil\r\n </button>\r\n <button class=\"btn btn-action-reservation-bulk btn-sm\" (click)=\"onTopluRezervasyonYap()\" [disabled]=\"isReservationLoading\">\r\n <i class=\"fa fa-lock\"></i> Toplu Rez. Yap\r\n </button>\r\n <button class=\"btn btn-action-reservation-bulk-cancel btn-sm\" (click)=\"onTumRezervasyonlariSil()\" [disabled]=\"isReservationLoading\">\r\n <i class=\"fa fa-unlock\"></i> Toplu Rez. Sil\r\n </button>\r\n <span class=\"action-divider\"></span>\r\n <button class=\"btn btn-action-secondary btn-sm\" (click)=\"onRefresh()\">\r\n <i class=\"fa fa-redo\"></i> Yenile\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Data Grid -->\r\n <div class=\"card orders-grid-card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid\r\n #dxOrdersInstance\r\n [dataSource]=\"ordersDataSource\"\r\n [showRowLines]=\"true\"\r\n [showBorders]=\"true\"\r\n [remoteOperations]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\"\r\n [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [columnHidingEnabled]=\"true\"\r\n (onRowClick)=\"onRowClick($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged($event)\"\r\n (onRowPrepared)=\"onRowPrepared($event)\"\r\n style=\"height: 60vh\"\r\n >\r\n <dxo-pager\r\n [visible]=\"true\"\r\n [showInfo]=\"true\"\r\n [allowedPageSizes]=\"[5, 10, 20]\"\r\n [showNavigationButtons]=\"true\"\r\n [showPageSizeSelector]=\"true\"\r\n >\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\r\n <dxo-column-chooser\r\n [allowSearch]=\"true\"\r\n [enabled]=\"true\"\r\n mode=\"select\"\r\n ></dxo-column-chooser>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-export [enabled]=\"true\" [allowExportSelectedData]=\"false\"></dxo-export>\r\n <dxo-filter-builder [allowHierarchicalFields]=\"true\"></dxo-filter-builder>\r\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"standard\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxo-selection\r\n mode=\"multiple\"\r\n showCheckBoxesMode=\"always\"\r\n [allowSelectAll]=\"true\"\r\n ></dxo-selection>\r\n\r\n <dxi-column\r\n dataField=\"DocNum\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocNum' | abpLocalization }}\"\r\n [width]=\"110\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"CardCode\"\r\n caption=\"{{ 'SmartWarehouse::Order:CardCode' | abpLocalization }}\"\r\n [width]=\"140\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"CardName\"\r\n caption=\"{{ 'SmartWarehouse::Order:CardName' | abpLocalization }}\"\r\n [width]=\"220\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"DocDate\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocDate' | abpLocalization }}\"\r\n dataType=\"date\"\r\n format=\"dd.MM.yyyy\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"DocDueDate\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocDueDate' | abpLocalization }}\"\r\n dataType=\"date\"\r\n format=\"dd.MM.yyyy\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWTalepTarihi\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWTalepTarihi' | abpLocalization }}\"\r\n dataType=\"date\"\r\n format=\"dd.MM.yyyy\"\r\n [width]=\"130\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWDurum\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWDurum' | abpLocalization }}\"\r\n [width]=\"110\"\r\n cellTemplate=\"swDurumTemplate\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWIsError\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWIsError' | abpLocalization }}\"\r\n [width]=\"50\"\r\n cellTemplate=\"errorTemplate\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWErrorMessage\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWErrorMessage' | abpLocalization }}\"\r\n [width]=\"260\"\r\n cellTemplate=\"errorMessageTemplate\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"OwnerCode\"\r\n caption=\"{{ 'SmartWarehouse::Order:OwnerCode' | abpLocalization }}\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"Comments\"\r\n caption=\"{{ 'SmartWarehouse::Order:Comments' | abpLocalization }}\"\r\n [width]=\"200\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWGonderildi\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWGonderildi' | abpLocalization }}\"\r\n [width]=\"110\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWStationCode\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWStationCode' | abpLocalization }}\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWEyeCode\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWEyeCode' | abpLocalization }}\"\r\n [width]=\"140\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWOrderType\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWOrderType' | abpLocalization }}\"\r\n [width]=\"160\"\r\n cellTemplate=\"orderTypeTemplate\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"NumAtCard\"\r\n caption=\"{{ 'SmartWarehouse::Order:NumAtCard' | abpLocalization }}\"\r\n [width]=\"140\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"DocTotal\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocTotal' | abpLocalization }}\"\r\n dataType=\"number\"\r\n format=\"#,##0.00\"\r\n [width]=\"130\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"DocCur\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocCur' | abpLocalization }}\"\r\n [width]=\"90\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"DocStatus\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocStatus' | abpLocalization }}\"\r\n [width]=\"90\"\r\n cellTemplate=\"statusTemplate\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"DocEntry\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocEntry' | abpLocalization }}\"\r\n [width]=\"100\"\r\n ></dxi-column>\r\n\r\n <div *dxTemplate=\"let cell of 'statusTemplate'\">\r\n <span\r\n class=\"badge\"\r\n [ngClass]=\"{\r\n 'bg-success': cell.value === 'O',\r\n 'bg-secondary': cell.value === 'C'\r\n }\"\r\n >\r\n {{ cell.value === 'O' ? 'A\u00E7\u0131k' : 'Kapal\u0131' }}\r\n </span>\r\n </div>\r\n\r\n <div *dxTemplate=\"let cell of 'swDurumTemplate'\">\r\n <span\r\n class=\"badge\"\r\n [ngClass]=\"{\r\n 'bg-warning': cell.value === '0' || !cell.value,\r\n 'bg-info': cell.value === '1',\r\n 'bg-primary': cell.value === '2',\r\n 'bg-success': cell.value === '3'\r\n }\"\r\n >\r\n {{\r\n cell.value === '1' ? 'Onay Bekliyor' :\r\n cell.value === '2' ? '\u0130\u015Fleniyor' :\r\n cell.value === '3' ? 'Tamamland\u0131' : 'Beklemede'\r\n }}\r\n </span>\r\n </div>\r\n\r\n <div *dxTemplate=\"let cell of 'errorTemplate'\">\r\n <i\r\n *ngIf=\"cell.value === 'Y'\"\r\n class=\"fa fa-exclamation-triangle text-danger\"\r\n [title]=\"cell.data.U_SWErrorMessage\"\r\n ></i>\r\n </div>\r\n\r\n <div *dxTemplate=\"let cell of 'errorMessageTemplate'\">\r\n <span\r\n *ngIf=\"cell.data.U_SWIsError === 'Y'\"\r\n class=\"error-message-cell\"\r\n [title]=\"cell.value\"\r\n >{{ cell.value }}</span>\r\n </div>\r\n\r\n <div *dxTemplate=\"let cell of 'orderTypeTemplate'\">\r\n <span class=\"badge bg-secondary\">\r\n {{\r\n cell.value === '1' ? 'Sanayi Sipari\u015Fleri' :\r\n cell.value === '2' ? 'Da\u011F\u0131t\u0131m Sipari\u015Fleri' :\r\n cell.value === '3' ? 'Depo Talepleri' : '-'\r\n }}\r\n </span>\r\n </div>\r\n\r\n <!-- Master-Detail: Sipari\u015F Sat\u0131rlar\u0131 -->\r\n <dxo-master-detail [enabled]=\"true\" template=\"orderLinesTemplate\"></dxo-master-detail>\r\n\r\n <div *dxTemplate=\"let detail of 'orderLinesTemplate'\">\r\n <div class=\"p-3\">\r\n <h6 class=\"mb-3\">\r\n <i class=\"fa fa-list me-1\"></i>\r\n {{ 'SmartWarehouse::Order:DocNum' | abpLocalization }}:\r\n {{ detail.data.DocNum }} - Sipari\u015F Sat\u0131rlar\u0131\r\n </h6>\r\n <dx-data-grid\r\n [dataSource]=\"detail.data.DocumentLines\"\r\n [showRowLines]=\"true\"\r\n [showBorders]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [rowAlternationEnabled]=\"true\"\r\n >\r\n <dxi-column\r\n dataField=\"LineNum\"\r\n caption=\"{{ 'SmartWarehouse::Order:LineNum' | abpLocalization }}\"\r\n [width]=\"70\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"ItemCode\"\r\n caption=\"{{ 'SmartWarehouse::Order:ItemCode' | abpLocalization }}\"\r\n [width]=\"140\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"ItemDescription\"\r\n caption=\"Kalem Ad\u0131\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"Quantity\"\r\n caption=\"{{ 'SmartWarehouse::Order:Quantity' | abpLocalization }}\"\r\n dataType=\"number\"\r\n format=\"#,##0.##\"\r\n [width]=\"100\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWTeslimMiktar\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWTeslimMiktar' | abpLocalization }}\"\r\n dataType=\"number\"\r\n format=\"#,##0.##\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"LineTotal\"\r\n caption=\"{{ 'SmartWarehouse::Order:LineTotal' | abpLocalization }}\"\r\n dataType=\"number\"\r\n format=\"#,##0.00\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"WarehouseCode\"\r\n caption=\"{{ 'SmartWarehouse::Order:WhsCode' | abpLocalization }}\"\r\n [width]=\"100\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"ShipDate\"\r\n caption=\"{{ 'SmartWarehouse::Order:ShipDate' | abpLocalization }}\"\r\n dataType=\"date\"\r\n format=\"dd.MM.yyyy\"\r\n [width]=\"110\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SonGorevId\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SonGorevId' | abpLocalization }}\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n\r\n <dxo-summary>\r\n <dxi-total-item\r\n column=\"lineTotal\"\r\n summaryType=\"sum\"\r\n displayFormat=\"Toplam: {0}\"\r\n valueFormat=\"#,##0.00\"\r\n ></dxi-total-item>\r\n <dxi-total-item\r\n column=\"quantity\"\r\n summaryType=\"sum\"\r\n displayFormat=\"Toplam: {0}\"\r\n valueFormat=\"#,##0.##\"\r\n ></dxi-total-item>\r\n </dxo-summary>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n\r\n <!-- Bo\u015F / Yar\u0131m Kasa Popup -->\r\n <dx-popup\r\n [visible]=\"bosKasaPopupVisible\"\r\n (onHidden)=\"bosKasaPopupVisible = false\"\r\n [width]=\"380\"\r\n [height]=\"'auto'\"\r\n [showTitle]=\"true\"\r\n [title]=\"bosKasaMode === 'empty' ? 'Bo\u015F Kasa Getir' : 'Yar\u0131m Kasa Getir'\"\r\n [dragEnabled]=\"true\"\r\n [resizeEnabled]=\"false\"\r\n [showCloseButton]=\"true\"\r\n [closeOnOutsideClick]=\"false\"\r\n >\r\n <div *dxTemplate=\"let data of 'content'\" class=\"p-3\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">\u0130stasyon No</label>\r\n <dx-number-box [(value)]=\"bosKasaStationId\" [min]=\"1\" [showSpinButtons]=\"true\"></dx-number-box>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">Raf No (Shelf ID)</label>\r\n <dx-number-box [(value)]=\"bosKasaShelfId\" [min]=\"1\" [showSpinButtons]=\"true\"></dx-number-box>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">Kasa Adedi</label>\r\n <dx-number-box [(value)]=\"bosKasaBoxCount\" [min]=\"1\" [max]=\"50\" [showSpinButtons]=\"true\"></dx-number-box>\r\n </div>\r\n <div class=\"d-flex justify-content-end gap-2 mt-3\">\r\n <dx-button text=\"\u0130ptal\" (onClick)=\"bosKasaPopupVisible = false\" type=\"normal\"></dx-button>\r\n <dx-button\r\n [text]=\"bosKasaMode === 'empty' ? 'Bo\u015F Kasa G\u00F6nder' : 'Yar\u0131m Kasa G\u00F6nder'\"\r\n type=\"default\"\r\n (onClick)=\"onBosKasaGonder()\"\r\n ></dx-button>\r\n </div>\r\n </div>\r\n </dx-popup>\r\n\r\n</abp-page>\r\n", styles: [":host{display:block;max-width:100%;overflow-x:hidden}.orders-toolbar{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:16px 20px;margin-bottom:16px;box-shadow:0 1px 3px #0000000f;max-width:100%;overflow:hidden}.toolbar-divider{border:none;border-top:1px solid #eee;margin:10px 0}.toolbar-row{display:flex;flex-wrap:wrap;align-items:center;gap:16px}.toolbar-group{display:flex;flex-direction:column;gap:4px}.toolbar-group--durum{margin-left:80px}.toolbar-group--depo{margin-left:auto}.toolbar-group label{font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.5px}.toolbar-group select,.toolbar-group input[type=date]{height:36px;border:1px solid #ced4da;border-radius:6px;padding:0 10px;font-size:13px;background:#fff;transition:border-color .15s}.toolbar-group select:focus,.toolbar-group input[type=date]:focus{border-color:#556ee6;outline:none;box-shadow:0 0 0 2px #556ee626}.toolbar-group select{min-width:180px}.radio-group{display:flex;gap:12px;height:36px;align-items:center}.radio-group .form-check{margin:0;padding-left:22px}.radio-group .form-check-label{font-size:13px;cursor:pointer;white-space:nowrap}.status-group{display:flex;gap:10px;align-items:center}.status-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:20px;font-size:12px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:all .15s;-webkit-user-select:none;user-select:none}.status-chip.pending{background:#fff9e6;color:#c9a227;border-color:#ffe082}.status-chip.pending.active{background:#ffc107;color:#fff;border-color:#ffc107}.status-chip.processing{background:#e8f0fe;color:#7aadf5;border-color:#a8c8f7}.status-chip.processing.active{background:#0d6efd;color:#fff;border-color:#0d6efd}.status-chip.awaiting{background:#e6f9fc;color:#6ec6d8;border-color:#a0e1ed}.status-chip.awaiting.active{background:#0dcaf0;color:#fff;border-color:#0dcaf0}.status-chip.completed{background:#e8f5e9;color:#6db680;border-color:#a5d6a7}.status-chip.completed.active{background:#198754;color:#fff;border-color:#198754}.status-chip.list-purchase{background:#eef0fa;color:#9aa1d4;border-color:#b3b9e6}.status-chip.list-purchase.active{background:#5c6bc0;color:#fff;border-color:#5c6bc0}.status-chip.list-distribution{background:#fce8ee;color:#e87a9e;border-color:#f0a3bb}.status-chip.list-distribution.active{background:#e91e63;color:#fff;border-color:#e91e63}.status-chip.list-warehouse{background:#e5f5f4;color:#6db5ab;border-color:#a0d4cd}.status-chip.list-warehouse.active{background:#009688;color:#fff;border-color:#009688}.action-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.action-input{width:140px;height:32px;border:1px solid #ced4da;border-radius:6px;padding:0 10px;font-size:13px}.action-input:focus{border-color:#556ee6;outline:none;box-shadow:0 0 0 2px #556ee626}.toolbar-separator{width:1px;height:28px;background:#dee2e6;align-self:center}.reservation-group{display:flex;align-items:center;gap:8px}.toolbar-actions{display:flex;gap:8px;margin-left:auto;align-items:center}.action-group .btn,.reservation-group .btn,.toolbar-actions .btn{display:inline-flex;align-items:center;gap:5px;font-size:12px;padding:5px 12px;border-radius:6px;font-weight:500;white-space:nowrap;transition:all .15s}.btn-action-primary{background:#556ee6;color:#fff;border:none}.btn-action-primary:hover{background:#4458cb;color:#fff}.btn-action-success{background:#34c38f;color:#fff;border:none}.btn-action-success:hover{background:#2ca67a;color:#fff}.btn-action-approve{background:#6f42c1;color:#fff;border:none}.btn-action-approve:hover{background:#5a32a3;color:#fff}.btn-action-warning{background:#f1b44c;color:#fff;border:none}.btn-action-warning:hover{background:#d9a043;color:#fff}.btn-action-info{background:#50a5f1;color:#fff;border:none}.btn-action-info:hover{background:#3d8ed8;color:#fff}.btn-action-danger{background:#f46a6a;color:#fff;border:none}.btn-action-danger:hover{background:#e05555;color:#fff}.btn-action-outline{background:transparent;color:#556ee6;border:1px solid #556ee6}.btn-action-outline:hover{background:#556ee6;color:#fff}.btn-action-secondary{background:#74788d;color:#fff;border:none}.btn-action-secondary:hover{background:#5f6373;color:#fff}.btn-action-reservation{background:#7c4dff;color:#fff;border:none}.btn-action-reservation:hover{background:#651fff;color:#fff}.btn-action-reservation:disabled{background:#b39ddb;cursor:not-allowed}.btn-action-reservation-cancel{background:#ff6e40;color:#fff;border:none}.btn-action-reservation-cancel:hover{background:#ff3d00;color:#fff}.btn-action-reservation-cancel:disabled{background:#ffab91;cursor:not-allowed}.btn-action-reservation-bulk{background:#536dfe;color:#fff;border:none}.btn-action-reservation-bulk:hover{background:#304ffe;color:#fff}.btn-action-reservation-bulk:disabled{background:#8c9eff;cursor:not-allowed}.btn-action-reservation-bulk-cancel{background:#ff5252;color:#fff;border:none}.btn-action-reservation-bulk-cancel:hover{background:#ff1744;color:#fff}.btn-action-reservation-bulk-cancel:disabled{background:#ff8a80;cursor:not-allowed}.action-divider{width:1px;height:24px;background:#dee2e6;display:inline-block;vertical-align:middle;margin:0 4px}.orders-grid-card{border-radius:8px;border:1px solid #e0e0e0;box-shadow:0 1px 3px #0000000f;overflow:hidden;max-width:100%}.orders-grid-card .card-body{padding:12px;overflow-x:auto}::ng-deep .order-row-error{background-color:#fdecea!important}::ng-deep .order-row-error:hover{background-color:#fbd9d5!important}::ng-deep .error-message-cell{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#b02a37;font-size:12px}@media (max-width: 1200px){.toolbar-actions{margin-left:0}.radio-group{flex-wrap:wrap;height:auto}.action-group{width:100%}.toolbar-separator{display:none}}@media (max-width: 992px){.toolbar-group--durum,.toolbar-group--depo{margin-left:0}.toolbar-row{gap:12px}.toolbar-group select{min-width:0}.status-group{flex-wrap:wrap;gap:6px}.reservation-group{flex-wrap:wrap}}@media (max-width: 768px){.orders-toolbar{padding:12px}.toolbar-row{flex-direction:column;align-items:stretch;gap:10px}.toolbar-group,.toolbar-group select,.toolbar-group input[type=date]{width:100%}.radio-group{flex-direction:column;align-items:flex-start;gap:8px}.status-group{flex-wrap:wrap;gap:6px}.status-chip{font-size:11px;padding:3px 10px}.action-group,.reservation-group,.toolbar-actions{flex-wrap:wrap;gap:6px}.action-divider{display:none}.action-input{width:100%}.action-group .btn,.reservation-group .btn,.toolbar-actions .btn{font-size:11px;padding:5px 10px}}@media (max-width: 480px){.action-group .btn,.reservation-group .btn,.toolbar-actions .btn{flex:1 1 calc(50% - 6px);justify-content:center}.status-chip{font-size:10px;padding:2px 8px}}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.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: i7.DxoColumnChooserComponent, selector: "dxo-column-chooser", inputs: ["allowSearch", "emptyPanelText", "enabled", "height", "mode", "searchTimeout", "sortOrder", "title", "width"] }, { kind: "component", type: i7.DxoColumnFixingComponent, selector: "dxo-column-fixing", inputs: ["enabled", "texts"] }, { kind: "component", type: i7.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: i7.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "dataSource", "groupInterval", "height", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i7.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "svgToCanvas", "allowExportSelectedData", "texts"] }, { kind: "component", type: i7.DxoFilterBuilderComponent, selector: "dxo-filter-builder", inputs: ["accessKey", "activeStateEnabled", "allowHierarchicalFields", "customOperations", "disabled", "elementAttr", "fields", "filterOperationDescriptions", "focusStateEnabled", "groupOperationDescriptions", "groupOperations", "height", "hint", "hoverStateEnabled", "maxGroupLevel", "onContentReady", "onDisposing", "onEditorPrepared", "onEditorPreparing", "onInitialized", "onOptionChanged", "onValueChanged", "rtlEnabled", "tabIndex", "value", "visible", "width"], outputs: ["valueChange"] }, { kind: "component", type: i7.DxoFilterPanelComponent, selector: "dxo-filter-panel", inputs: ["customizeText", "filterEnabled", "texts", "visible"], outputs: ["filterEnabledChange"] }, { kind: "component", type: i7.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i7.DxoMasterDetailComponent, selector: "dxo-master-detail", inputs: ["autoExpandAll", "enabled", "template"] }, { kind: "component", type: i7.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i7.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i7.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i7.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "deferred", "mode", "selectAllMode", "showCheckBoxesMode", "recursive"] }, { kind: "component", type: i7.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "component", type: i7.DxoSummaryComponent, selector: "dxo-summary", inputs: ["calculateCustomSummary", "groupItems", "recalculateWhileEditing", "skipEmptyValues", "texts", "totalItems"] }, { kind: "component", type: i7.DxiTotalItemComponent, selector: "dxi-total-item", inputs: ["alignment", "column", "cssClass", "customizeText", "displayFormat", "name", "showInColumn", "skipEmptyValues", "summaryType", "valueFormat"] }, { kind: "directive", type: i8.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i6.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "elementAttr", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "elementAttrChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i6.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: i6.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: i5$1.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }] });
704
718
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: OrdersComponent, decorators: [{
705
719
  type: Component,
706
720
  args: [{ selector: 'lib-orders', template: "<abp-page [title]=\"'SmartWarehouse::Orders' | abpLocalization\">\r\n\r\n <!-- Toolbar -->\r\n <div class=\"orders-toolbar\">\r\n <!-- Row 1: Filters -->\r\n <div class=\"toolbar-row\">\r\n <div class=\"toolbar-group\">\r\n <label>Sipari\u015F Grubu</label>\r\n <div class=\"status-group\">\r\n <span class=\"status-chip list-purchase\" [class.active]=\"activeListType === '1'\"\r\n (click)=\"toggleListType('1')\">\r\n <i class=\"fa fa-shopping-cart\"></i> Sanayi Sipari\u015Fleri\r\n </span>\r\n <span class=\"status-chip list-distribution\" [class.active]=\"activeListType === '2'\"\r\n (click)=\"toggleListType('2')\">\r\n <i class=\"fa fa-truck\"></i> Da\u011F\u0131t\u0131m Sipari\u015Fleri\r\n </span>\r\n <span class=\"status-chip list-warehouse\" [class.active]=\"activeListType === '3'\"\r\n (click)=\"toggleListType('3')\">\r\n <i class=\"fa fa-warehouse\"></i> Depo Talepleri\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"toolbar-group toolbar-group--durum\">\r\n <label>Durum</label>\r\n <div class=\"status-group\">\r\n <span class=\"status-chip pending\" [class.active]=\"activeStatus === 'beklemede'\"\r\n (click)=\"toggleStatus('beklemede')\">\r\n <i class=\"fa fa-clock\"></i> Beklemede\r\n </span>\r\n <span class=\"status-chip processing\" [class.active]=\"activeStatus === 'isleniyor'\"\r\n (click)=\"toggleStatus('isleniyor')\">\r\n <i class=\"fa fa-spinner\"></i> \u0130\u015Fleniyor\r\n </span>\r\n <span class=\"status-chip awaiting\" [class.active]=\"activeStatus === 'onayBekliyor'\"\r\n (click)=\"toggleStatus('onayBekliyor')\">\r\n <i class=\"fa fa-hourglass-half\"></i> Onay Bekliyor\r\n </span>\r\n <span class=\"status-chip completed\" [class.active]=\"activeStatus === 'tamamlandi'\"\r\n (click)=\"toggleStatus('tamamlandi')\">\r\n <i class=\"fa fa-check-circle\"></i> Tamamland\u0131\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"toolbar-group toolbar-group--depo\">\r\n <label>Depo</label>\r\n <select [(ngModel)]=\"selectedWarehouse\" class=\"form-select\">\r\n <option value=\"\">T\u00FCm\u00FC</option>\r\n <option *ngFor=\"let wh of warehouses\" [value]=\"wh.WhsCode\">{{ wh.WhsName }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <hr class=\"toolbar-divider\" />\r\n\r\n <!-- Row 3: Action input + related buttons | Reservation | Refresh/Excel -->\r\n <div class=\"toolbar-row\">\r\n <div class=\"action-group\">\r\n <button class=\"btn btn-action-primary btn-sm\" (click)=\"onGorevBaslat()\" [disabled]=\"isGorevBaslatLoading\">\r\n <i class=\"fa fa-plus-circle\"></i> G\u00F6rev Ba\u015Flat\r\n </button>\r\n <button class=\"btn btn-action-approve btn-sm\" (click)=\"onOnayVer()\">\r\n <i class=\"fa fa-thumbs-up\"></i> G\u00F6revi Tamamla\r\n </button>\r\n <button class=\"btn btn-action-danger btn-sm\" (click)=\"onSiparisKapat()\">\r\n <i class=\"fa fa-times-circle\"></i> Sipari\u015F Kapat\r\n </button>\r\n <button class=\"btn btn-action-sync btn-sm\" (click)=\"onDurumGuncelle()\" [disabled]=\"isBeeCellLoading\">\r\n <i class=\"fa fa-sync-alt\"></i> Durum G\u00FCncelle\r\n </button>\r\n <button class=\"btn btn-action-info btn-sm\" (click)=\"onBosKasaGetir()\" [disabled]=\"isBeeCellLoading\">\r\n <i class=\"fa fa-box-open\"></i> Bo\u015F Kasa Getir\r\n </button>\r\n <button class=\"btn btn-action-warning btn-sm\" (click)=\"onYarimKasa()\" [disabled]=\"isBeeCellLoading\">\r\n <i class=\"fa fa-box\"></i> Yar\u0131m Kasa Getir\r\n </button>\r\n <span class=\"action-divider\"></span>\r\n <button class=\"btn btn-action-reservation btn-sm\" (click)=\"onRezervasyonYap()\" [disabled]=\"isReservationLoading\">\r\n <i class=\"fa fa-lock\"></i> Rezervasyon Yap\r\n </button>\r\n <button class=\"btn btn-action-reservation-cancel btn-sm\" (click)=\"onRezervasyonSil()\" [disabled]=\"isReservationLoading\">\r\n <i class=\"fa fa-unlock\"></i> Rezervasyon Sil\r\n </button>\r\n <button class=\"btn btn-action-reservation-bulk btn-sm\" (click)=\"onTopluRezervasyonYap()\" [disabled]=\"isReservationLoading\">\r\n <i class=\"fa fa-lock\"></i> Toplu Rez. Yap\r\n </button>\r\n <button class=\"btn btn-action-reservation-bulk-cancel btn-sm\" (click)=\"onTumRezervasyonlariSil()\" [disabled]=\"isReservationLoading\">\r\n <i class=\"fa fa-unlock\"></i> Toplu Rez. Sil\r\n </button>\r\n <span class=\"action-divider\"></span>\r\n <button class=\"btn btn-action-secondary btn-sm\" (click)=\"onRefresh()\">\r\n <i class=\"fa fa-redo\"></i> Yenile\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Data Grid -->\r\n <div class=\"card orders-grid-card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid\r\n #dxOrdersInstance\r\n [dataSource]=\"ordersDataSource\"\r\n [showRowLines]=\"true\"\r\n [showBorders]=\"true\"\r\n [remoteOperations]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\"\r\n [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [columnHidingEnabled]=\"true\"\r\n (onRowClick)=\"onRowClick($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged($event)\"\r\n (onRowPrepared)=\"onRowPrepared($event)\"\r\n style=\"height: 60vh\"\r\n >\r\n <dxo-pager\r\n [visible]=\"true\"\r\n [showInfo]=\"true\"\r\n [allowedPageSizes]=\"[5, 10, 20]\"\r\n [showNavigationButtons]=\"true\"\r\n [showPageSizeSelector]=\"true\"\r\n >\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\r\n <dxo-column-chooser\r\n [allowSearch]=\"true\"\r\n [enabled]=\"true\"\r\n mode=\"select\"\r\n ></dxo-column-chooser>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-export [enabled]=\"true\" [allowExportSelectedData]=\"false\"></dxo-export>\r\n <dxo-filter-builder [allowHierarchicalFields]=\"true\"></dxo-filter-builder>\r\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"standard\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxo-selection\r\n mode=\"multiple\"\r\n showCheckBoxesMode=\"always\"\r\n [allowSelectAll]=\"true\"\r\n ></dxo-selection>\r\n\r\n <dxi-column\r\n dataField=\"DocNum\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocNum' | abpLocalization }}\"\r\n [width]=\"110\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"CardCode\"\r\n caption=\"{{ 'SmartWarehouse::Order:CardCode' | abpLocalization }}\"\r\n [width]=\"140\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"CardName\"\r\n caption=\"{{ 'SmartWarehouse::Order:CardName' | abpLocalization }}\"\r\n [width]=\"220\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"DocDate\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocDate' | abpLocalization }}\"\r\n dataType=\"date\"\r\n format=\"dd.MM.yyyy\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"DocDueDate\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocDueDate' | abpLocalization }}\"\r\n dataType=\"date\"\r\n format=\"dd.MM.yyyy\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWTalepTarihi\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWTalepTarihi' | abpLocalization }}\"\r\n dataType=\"date\"\r\n format=\"dd.MM.yyyy\"\r\n [width]=\"130\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWDurum\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWDurum' | abpLocalization }}\"\r\n [width]=\"110\"\r\n cellTemplate=\"swDurumTemplate\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWIsError\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWIsError' | abpLocalization }}\"\r\n [width]=\"50\"\r\n cellTemplate=\"errorTemplate\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWErrorMessage\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWErrorMessage' | abpLocalization }}\"\r\n [width]=\"260\"\r\n cellTemplate=\"errorMessageTemplate\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"OwnerCode\"\r\n caption=\"{{ 'SmartWarehouse::Order:OwnerCode' | abpLocalization }}\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"Comments\"\r\n caption=\"{{ 'SmartWarehouse::Order:Comments' | abpLocalization }}\"\r\n [width]=\"200\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWGonderildi\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWGonderildi' | abpLocalization }}\"\r\n [width]=\"110\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWStationCode\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWStationCode' | abpLocalization }}\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWEyeCode\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWEyeCode' | abpLocalization }}\"\r\n [width]=\"140\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWOrderType\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWOrderType' | abpLocalization }}\"\r\n [width]=\"160\"\r\n cellTemplate=\"orderTypeTemplate\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"NumAtCard\"\r\n caption=\"{{ 'SmartWarehouse::Order:NumAtCard' | abpLocalization }}\"\r\n [width]=\"140\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"DocTotal\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocTotal' | abpLocalization }}\"\r\n dataType=\"number\"\r\n format=\"#,##0.00\"\r\n [width]=\"130\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"DocCur\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocCur' | abpLocalization }}\"\r\n [width]=\"90\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"DocStatus\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocStatus' | abpLocalization }}\"\r\n [width]=\"90\"\r\n cellTemplate=\"statusTemplate\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"DocEntry\"\r\n caption=\"{{ 'SmartWarehouse::Order:DocEntry' | abpLocalization }}\"\r\n [width]=\"100\"\r\n ></dxi-column>\r\n\r\n <div *dxTemplate=\"let cell of 'statusTemplate'\">\r\n <span\r\n class=\"badge\"\r\n [ngClass]=\"{\r\n 'bg-success': cell.value === 'O',\r\n 'bg-secondary': cell.value === 'C'\r\n }\"\r\n >\r\n {{ cell.value === 'O' ? 'A\u00E7\u0131k' : 'Kapal\u0131' }}\r\n </span>\r\n </div>\r\n\r\n <div *dxTemplate=\"let cell of 'swDurumTemplate'\">\r\n <span\r\n class=\"badge\"\r\n [ngClass]=\"{\r\n 'bg-warning': cell.value === '0' || !cell.value,\r\n 'bg-info': cell.value === '1',\r\n 'bg-primary': cell.value === '2',\r\n 'bg-success': cell.value === '3'\r\n }\"\r\n >\r\n {{\r\n cell.value === '1' ? 'Onay Bekliyor' :\r\n cell.value === '2' ? '\u0130\u015Fleniyor' :\r\n cell.value === '3' ? 'Tamamland\u0131' : 'Beklemede'\r\n }}\r\n </span>\r\n </div>\r\n\r\n <div *dxTemplate=\"let cell of 'errorTemplate'\">\r\n <i\r\n *ngIf=\"cell.value === 'Y'\"\r\n class=\"fa fa-exclamation-triangle text-danger\"\r\n [title]=\"cell.data.U_SWErrorMessage\"\r\n ></i>\r\n </div>\r\n\r\n <div *dxTemplate=\"let cell of 'errorMessageTemplate'\">\r\n <span\r\n *ngIf=\"cell.data.U_SWIsError === 'Y'\"\r\n class=\"error-message-cell\"\r\n [title]=\"cell.value\"\r\n >{{ cell.value }}</span>\r\n </div>\r\n\r\n <div *dxTemplate=\"let cell of 'orderTypeTemplate'\">\r\n <span class=\"badge bg-secondary\">\r\n {{\r\n cell.value === '1' ? 'Sanayi Sipari\u015Fleri' :\r\n cell.value === '2' ? 'Da\u011F\u0131t\u0131m Sipari\u015Fleri' :\r\n cell.value === '3' ? 'Depo Talepleri' : '-'\r\n }}\r\n </span>\r\n </div>\r\n\r\n <!-- Master-Detail: Sipari\u015F Sat\u0131rlar\u0131 -->\r\n <dxo-master-detail [enabled]=\"true\" template=\"orderLinesTemplate\"></dxo-master-detail>\r\n\r\n <div *dxTemplate=\"let detail of 'orderLinesTemplate'\">\r\n <div class=\"p-3\">\r\n <h6 class=\"mb-3\">\r\n <i class=\"fa fa-list me-1\"></i>\r\n {{ 'SmartWarehouse::Order:DocNum' | abpLocalization }}:\r\n {{ detail.data.DocNum }} - Sipari\u015F Sat\u0131rlar\u0131\r\n </h6>\r\n <dx-data-grid\r\n [dataSource]=\"detail.data.DocumentLines\"\r\n [showRowLines]=\"true\"\r\n [showBorders]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [rowAlternationEnabled]=\"true\"\r\n >\r\n <dxi-column\r\n dataField=\"LineNum\"\r\n caption=\"{{ 'SmartWarehouse::Order:LineNum' | abpLocalization }}\"\r\n [width]=\"70\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"ItemCode\"\r\n caption=\"{{ 'SmartWarehouse::Order:ItemCode' | abpLocalization }}\"\r\n [width]=\"140\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"ItemDescription\"\r\n caption=\"Kalem Ad\u0131\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"Quantity\"\r\n caption=\"{{ 'SmartWarehouse::Order:Quantity' | abpLocalization }}\"\r\n dataType=\"number\"\r\n format=\"#,##0.##\"\r\n [width]=\"100\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SWTeslimMiktar\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SWTeslimMiktar' | abpLocalization }}\"\r\n dataType=\"number\"\r\n format=\"#,##0.##\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"LineTotal\"\r\n caption=\"{{ 'SmartWarehouse::Order:LineTotal' | abpLocalization }}\"\r\n dataType=\"number\"\r\n format=\"#,##0.00\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"WarehouseCode\"\r\n caption=\"{{ 'SmartWarehouse::Order:WhsCode' | abpLocalization }}\"\r\n [width]=\"100\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"ShipDate\"\r\n caption=\"{{ 'SmartWarehouse::Order:ShipDate' | abpLocalization }}\"\r\n dataType=\"date\"\r\n format=\"dd.MM.yyyy\"\r\n [width]=\"110\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"U_SonGorevId\"\r\n caption=\"{{ 'SmartWarehouse::Order:U_SonGorevId' | abpLocalization }}\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n\r\n <dxo-summary>\r\n <dxi-total-item\r\n column=\"lineTotal\"\r\n summaryType=\"sum\"\r\n displayFormat=\"Toplam: {0}\"\r\n valueFormat=\"#,##0.00\"\r\n ></dxi-total-item>\r\n <dxi-total-item\r\n column=\"quantity\"\r\n summaryType=\"sum\"\r\n displayFormat=\"Toplam: {0}\"\r\n valueFormat=\"#,##0.##\"\r\n ></dxi-total-item>\r\n </dxo-summary>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n\r\n <!-- Bo\u015F / Yar\u0131m Kasa Popup -->\r\n <dx-popup\r\n [visible]=\"bosKasaPopupVisible\"\r\n (onHidden)=\"bosKasaPopupVisible = false\"\r\n [width]=\"380\"\r\n [height]=\"'auto'\"\r\n [showTitle]=\"true\"\r\n [title]=\"bosKasaMode === 'empty' ? 'Bo\u015F Kasa Getir' : 'Yar\u0131m Kasa Getir'\"\r\n [dragEnabled]=\"true\"\r\n [resizeEnabled]=\"false\"\r\n [showCloseButton]=\"true\"\r\n [closeOnOutsideClick]=\"false\"\r\n >\r\n <div *dxTemplate=\"let data of 'content'\" class=\"p-3\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">\u0130stasyon No</label>\r\n <dx-number-box [(value)]=\"bosKasaStationId\" [min]=\"1\" [showSpinButtons]=\"true\"></dx-number-box>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">Raf No (Shelf ID)</label>\r\n <dx-number-box [(value)]=\"bosKasaShelfId\" [min]=\"1\" [showSpinButtons]=\"true\"></dx-number-box>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">Kasa Adedi</label>\r\n <dx-number-box [(value)]=\"bosKasaBoxCount\" [min]=\"1\" [max]=\"50\" [showSpinButtons]=\"true\"></dx-number-box>\r\n </div>\r\n <div class=\"d-flex justify-content-end gap-2 mt-3\">\r\n <dx-button text=\"\u0130ptal\" (onClick)=\"bosKasaPopupVisible = false\" type=\"normal\"></dx-button>\r\n <dx-button\r\n [text]=\"bosKasaMode === 'empty' ? 'Bo\u015F Kasa G\u00F6nder' : 'Yar\u0131m Kasa G\u00F6nder'\"\r\n type=\"default\"\r\n (onClick)=\"onBosKasaGonder()\"\r\n ></dx-button>\r\n </div>\r\n </div>\r\n </dx-popup>\r\n\r\n</abp-page>\r\n", styles: [":host{display:block;max-width:100%;overflow-x:hidden}.orders-toolbar{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:16px 20px;margin-bottom:16px;box-shadow:0 1px 3px #0000000f;max-width:100%;overflow:hidden}.toolbar-divider{border:none;border-top:1px solid #eee;margin:10px 0}.toolbar-row{display:flex;flex-wrap:wrap;align-items:center;gap:16px}.toolbar-group{display:flex;flex-direction:column;gap:4px}.toolbar-group--durum{margin-left:80px}.toolbar-group--depo{margin-left:auto}.toolbar-group label{font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.5px}.toolbar-group select,.toolbar-group input[type=date]{height:36px;border:1px solid #ced4da;border-radius:6px;padding:0 10px;font-size:13px;background:#fff;transition:border-color .15s}.toolbar-group select:focus,.toolbar-group input[type=date]:focus{border-color:#556ee6;outline:none;box-shadow:0 0 0 2px #556ee626}.toolbar-group select{min-width:180px}.radio-group{display:flex;gap:12px;height:36px;align-items:center}.radio-group .form-check{margin:0;padding-left:22px}.radio-group .form-check-label{font-size:13px;cursor:pointer;white-space:nowrap}.status-group{display:flex;gap:10px;align-items:center}.status-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:20px;font-size:12px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:all .15s;-webkit-user-select:none;user-select:none}.status-chip.pending{background:#fff9e6;color:#c9a227;border-color:#ffe082}.status-chip.pending.active{background:#ffc107;color:#fff;border-color:#ffc107}.status-chip.processing{background:#e8f0fe;color:#7aadf5;border-color:#a8c8f7}.status-chip.processing.active{background:#0d6efd;color:#fff;border-color:#0d6efd}.status-chip.awaiting{background:#e6f9fc;color:#6ec6d8;border-color:#a0e1ed}.status-chip.awaiting.active{background:#0dcaf0;color:#fff;border-color:#0dcaf0}.status-chip.completed{background:#e8f5e9;color:#6db680;border-color:#a5d6a7}.status-chip.completed.active{background:#198754;color:#fff;border-color:#198754}.status-chip.list-purchase{background:#eef0fa;color:#9aa1d4;border-color:#b3b9e6}.status-chip.list-purchase.active{background:#5c6bc0;color:#fff;border-color:#5c6bc0}.status-chip.list-distribution{background:#fce8ee;color:#e87a9e;border-color:#f0a3bb}.status-chip.list-distribution.active{background:#e91e63;color:#fff;border-color:#e91e63}.status-chip.list-warehouse{background:#e5f5f4;color:#6db5ab;border-color:#a0d4cd}.status-chip.list-warehouse.active{background:#009688;color:#fff;border-color:#009688}.action-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.action-input{width:140px;height:32px;border:1px solid #ced4da;border-radius:6px;padding:0 10px;font-size:13px}.action-input:focus{border-color:#556ee6;outline:none;box-shadow:0 0 0 2px #556ee626}.toolbar-separator{width:1px;height:28px;background:#dee2e6;align-self:center}.reservation-group{display:flex;align-items:center;gap:8px}.toolbar-actions{display:flex;gap:8px;margin-left:auto;align-items:center}.action-group .btn,.reservation-group .btn,.toolbar-actions .btn{display:inline-flex;align-items:center;gap:5px;font-size:12px;padding:5px 12px;border-radius:6px;font-weight:500;white-space:nowrap;transition:all .15s}.btn-action-primary{background:#556ee6;color:#fff;border:none}.btn-action-primary:hover{background:#4458cb;color:#fff}.btn-action-success{background:#34c38f;color:#fff;border:none}.btn-action-success:hover{background:#2ca67a;color:#fff}.btn-action-approve{background:#6f42c1;color:#fff;border:none}.btn-action-approve:hover{background:#5a32a3;color:#fff}.btn-action-warning{background:#f1b44c;color:#fff;border:none}.btn-action-warning:hover{background:#d9a043;color:#fff}.btn-action-info{background:#50a5f1;color:#fff;border:none}.btn-action-info:hover{background:#3d8ed8;color:#fff}.btn-action-danger{background:#f46a6a;color:#fff;border:none}.btn-action-danger:hover{background:#e05555;color:#fff}.btn-action-outline{background:transparent;color:#556ee6;border:1px solid #556ee6}.btn-action-outline:hover{background:#556ee6;color:#fff}.btn-action-secondary{background:#74788d;color:#fff;border:none}.btn-action-secondary:hover{background:#5f6373;color:#fff}.btn-action-reservation{background:#7c4dff;color:#fff;border:none}.btn-action-reservation:hover{background:#651fff;color:#fff}.btn-action-reservation:disabled{background:#b39ddb;cursor:not-allowed}.btn-action-reservation-cancel{background:#ff6e40;color:#fff;border:none}.btn-action-reservation-cancel:hover{background:#ff3d00;color:#fff}.btn-action-reservation-cancel:disabled{background:#ffab91;cursor:not-allowed}.btn-action-reservation-bulk{background:#536dfe;color:#fff;border:none}.btn-action-reservation-bulk:hover{background:#304ffe;color:#fff}.btn-action-reservation-bulk:disabled{background:#8c9eff;cursor:not-allowed}.btn-action-reservation-bulk-cancel{background:#ff5252;color:#fff;border:none}.btn-action-reservation-bulk-cancel:hover{background:#ff1744;color:#fff}.btn-action-reservation-bulk-cancel:disabled{background:#ff8a80;cursor:not-allowed}.action-divider{width:1px;height:24px;background:#dee2e6;display:inline-block;vertical-align:middle;margin:0 4px}.orders-grid-card{border-radius:8px;border:1px solid #e0e0e0;box-shadow:0 1px 3px #0000000f;overflow:hidden;max-width:100%}.orders-grid-card .card-body{padding:12px;overflow-x:auto}::ng-deep .order-row-error{background-color:#fdecea!important}::ng-deep .order-row-error:hover{background-color:#fbd9d5!important}::ng-deep .error-message-cell{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#b02a37;font-size:12px}@media (max-width: 1200px){.toolbar-actions{margin-left:0}.radio-group{flex-wrap:wrap;height:auto}.action-group{width:100%}.toolbar-separator{display:none}}@media (max-width: 992px){.toolbar-group--durum,.toolbar-group--depo{margin-left:0}.toolbar-row{gap:12px}.toolbar-group select{min-width:0}.status-group{flex-wrap:wrap;gap:6px}.reservation-group{flex-wrap:wrap}}@media (max-width: 768px){.orders-toolbar{padding:12px}.toolbar-row{flex-direction:column;align-items:stretch;gap:10px}.toolbar-group,.toolbar-group select,.toolbar-group input[type=date]{width:100%}.radio-group{flex-direction:column;align-items:flex-start;gap:8px}.status-group{flex-wrap:wrap;gap:6px}.status-chip{font-size:11px;padding:3px 10px}.action-group,.reservation-group,.toolbar-actions{flex-wrap:wrap;gap:6px}.action-divider{display:none}.action-input{width:100%}.action-group .btn,.reservation-group .btn,.toolbar-actions .btn{font-size:11px;padding:5px 10px}}@media (max-width: 480px){.action-group .btn,.reservation-group .btn,.toolbar-actions .btn{flex:1 1 calc(50% - 6px);justify-content:center}.status-chip{font-size:10px;padding:2px 8px}}\n"] }]
@@ -1068,7 +1082,7 @@ class ShelfPlacementComponent {
1068
1082
  }
1069
1083
  }
1070
1084
  ShelfPlacementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ShelfPlacementComponent, deps: [{ token: InventoryService }, { token: WarehouseService }, { token: i2.ToasterService }], target: i0.ɵɵFactoryTarget.Component });
1071
- ShelfPlacementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ShelfPlacementComponent, selector: "lib-shelf-placement", viewQueries: [{ propertyName: "shelfInputRef", first: true, predicate: ["shelfInput"], descendants: true }, { propertyName: "barcodeInputRef", first: true, predicate: ["barcodeInput"], descendants: true }, { propertyName: "itemCodeInputRef", first: true, predicate: ["itemCodeInput"], descendants: true }, { propertyName: "quantityInputRef", first: true, predicate: ["quantityInput"], descendants: true }, { propertyName: "gridInstance", first: true, predicate: ["gridInstance"], descendants: true }], ngImport: i0, template: "<abp-page [title]=\"'Raf Yerle\u015Ftirme'\">\r\n\r\n <!-- Loading Overlay -->\r\n <div *ngIf=\"isLoadingWarehouses\" class=\"loading-overlay\">\r\n <div class=\"loading-spinner\">\r\n <i class=\"fa fa-spinner fa-spin fa-3x\"></i>\r\n <p class=\"mt-3\">Depolar y\u00FCkleniyor...</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"shelf-placement-container\">\r\n <div class=\"shelf-placement-layout\">\r\n <!-- Form Card -->\r\n <div class=\"shelf-form-card\">\r\n <!-- Radio Buttons: Giri\u015F / \u00C7\u0131k\u0131\u015F -->\r\n <!-- <div class=\"form-section\">\r\n <label class=\"section-label\">\u0130\u015Flem Tipi</label>\r\n <div class=\"radio-group\">\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"operationType\" id=\"opEntry\"\r\n value=\"entry\" [(ngModel)]=\"operationType\" />\r\n <label class=\"form-check-label\" for=\"opEntry\">Giri\u015F</label>\r\n </div>\r\n </div>\r\n </div> -->\r\n\r\n <!-- <hr class=\"form-divider\" /> -->\r\n \r\n <!-- Depo -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"warehouseSelect\">Depo</label>\r\n <select class=\"form-select form-input\"\r\n id=\"warehouseSelect\"\r\n [(ngModel)]=\"selectedWarehouse\"\r\n (ngModelChange)=\"onWarehouseChanged()\">\r\n <option value=\"\">Depo se\u00E7in...</option>\r\n <option *ngFor=\"let wh of warehouses\" [value]=\"wh.WhsCode\">\r\n {{ wh.WhsCode }} - {{ wh.WhsName }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <!-- Raf -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"shelfInput\">Raf</label>\r\n <input #shelfInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"shelfInput\"\r\n [(ngModel)]=\"shelf\"\r\n (keydown.enter)=\"onShelfScanned()\"\r\n (blur)=\"onShelfScanned()\"\r\n placeholder=\"Raf kodu girin...\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Barkod -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"barcodeInput\">Barkod</label>\r\n <input #barcodeInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"barcodeInput\"\r\n [(ngModel)]=\"barcode\"\r\n (keydown.enter)=\"onBarcodeScanned()\"\r\n placeholder=\"Barkod okutun...\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Kalem Kodu -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"itemCodeInput\">Kalem Kodu</label>\r\n <input #itemCodeInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"itemCodeInput\"\r\n [(ngModel)]=\"itemCode\"\r\n [readOnly]=\"true\"\r\n placeholder=\"\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Kalem Ad\u0131 -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"itemNameInput\">Kalem Ad\u0131</label>\r\n <input type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"itemNameInput\"\r\n [(ngModel)]=\"itemName\"\r\n [readOnly]=\"true\"\r\n placeholder=\"\" />\r\n </div>\r\n\r\n <!-- Parti -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"batchInput\">Parti</label>\r\n <input type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"batchInput\"\r\n [(ngModel)]=\"batch\"\r\n placeholder=\"Parti numaras\u0131...\" />\r\n </div>\r\n\r\n <!-- Miktar -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"quantityInput\">Miktar</label>\r\n <input #quantityInput\r\n type=\"number\"\r\n class=\"form-control form-input\"\r\n id=\"quantityInput\"\r\n [(ngModel)]=\"quantity\"\r\n (keydown.enter)=\"onAdd()\"\r\n placeholder=\"Miktar girin...\"\r\n min=\"0\" />\r\n </div>\r\n\r\n <hr class=\"form-divider\" />\r\n\r\n <!-- Checkbox: Raf Sabit -->\r\n <div class=\"form-section\">\r\n <div class=\"form-check checkbox-group\">\r\n <input class=\"form-check-input\" type=\"checkbox\" id=\"fixedShelf\"\r\n [(ngModel)]=\"isShelfFixed\" />\r\n <label class=\"form-check-label\" for=\"fixedShelf\">Raf Sabit</label>\r\n </div>\r\n </div>\r\n\r\n <hr class=\"form-divider\" />\r\n\r\n <!-- Buttons -->\r\n <div class=\"form-section button-group\">\r\n <button class=\"btn btn-action-primary btn-sm\" (click)=\"onAdd()\">\r\n <i class=\"fa fa-plus\"></i> Ekle\r\n </button>\r\n <button class=\"btn btn-action-success btn-sm\" (click)=\"onSave()\" [disabled]=\"gridDataSource.length === 0\">\r\n <i class=\"fa fa-save\"></i> Toplu Kaydet ({{ gridDataSource.length }})\r\n </button>\r\n <button class=\"btn btn-action-outline btn-sm\" (click)=\"onClear()\">\r\n <i class=\"fa fa-eraser\"></i> Temizle\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Data Grid -->\r\n <div class=\"grid-card\">\r\n <div class=\"grid-header\">\r\n <h6 class=\"grid-title\">\r\n <i class=\"fa fa-list me-1\"></i>\r\n Raf Yerle\u015Ftirme Listesi ({{ gridDataSource.length }})\r\n </h6>\r\n </div>\r\n <dx-data-grid\r\n #gridInstance\r\n [dataSource]=\"gridDataSource\"\r\n [showRowLines]=\"true\"\r\n [showBorders]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [rowAlternationEnabled]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n style=\"height: 65vh; min-height: 500px;\"\r\n >\r\n <dxo-paging [enabled]=\"false\"></dxo-paging>\r\n <dxo-scrolling mode=\"standard\"></dxo-scrolling>\r\n \r\n <dxi-column\r\n dataField=\"barcode\"\r\n caption=\"Barkod\"\r\n [width]=\"150\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"itemCode\"\r\n caption=\"Kalem Kodu\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"itemName\"\r\n caption=\"Kalem Ad\u0131\"\r\n [width]=\"200\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"batch\"\r\n caption=\"Parti\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"warehouse\"\r\n caption=\"Depo\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"shelf\"\r\n caption=\"Raf\"\r\n [width]=\"150\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"quantity\"\r\n caption=\"Miktar\"\r\n dataType=\"number\"\r\n [width]=\"100\"\r\n ></dxi-column>\r\n <dxi-column\r\n type=\"buttons\"\r\n [width]=\"80\"\r\n >\r\n <dxi-button\r\n icon=\"trash\"\r\n hint=\"Sil\"\r\n [onClick]=\"deleteRowHandler\"\r\n ></dxi-button>\r\n </dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</abp-page>\r\n", styles: [".shelf-placement-container{width:100%}.shelf-placement-layout{display:flex;gap:20px;align-items:flex-start}.shelf-form-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:20px 24px;box-shadow:0 1px 3px #0000000f;flex:0 0 450px;min-width:320px}.form-divider{border:none;border-top:1px solid #eee;margin:14px 0}.form-section{margin-bottom:12px}.section-label{display:block;font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.form-input{height:40px;border:1px solid #ced4da;border-radius:6px;padding:0 12px;font-size:14px;background:#fff;transition:border-color .15s;width:100%}.form-input:focus{border-color:#556ee6;outline:none;box-shadow:0 0 0 2px #556ee626}.form-input[readonly]{background:#f5f5f5;color:#888}.radio-group{display:flex;gap:20px;align-items:center}.radio-group .form-check{margin:0;padding-left:22px}.radio-group .form-check-label{font-size:14px;cursor:pointer;white-space:nowrap;font-weight:500}.checkbox-group{display:flex;align-items:center;gap:8px}.checkbox-group .form-check-label{font-size:14px;cursor:pointer;font-weight:500}.button-group{display:flex;gap:10px;margin-top:4px;flex-wrap:wrap}.button-group .btn{display:inline-flex;align-items:center;gap:6px;font-size:13px;padding:8px 20px;border-radius:6px;font-weight:500;white-space:nowrap;transition:all .15s;flex:1 1 0;justify-content:center;min-width:120px}.btn-action-success{background:#34c38f;color:#fff;border:none}.btn-action-success:hover{background:#2ca67a;color:#fff}.btn-action-success:disabled{background:#9dd3bd;color:#fff;cursor:not-allowed}.btn-action-primary{background:#556ee6;color:#fff;border:none}.btn-action-primary:hover{background:#4458cb;color:#fff}.btn-action-outline{background:transparent;color:#556ee6;border:1px solid #556ee6}.btn-action-outline:hover{background:#556ee6;color:#fff}.grid-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;box-shadow:0 1px 3px #0000000f;overflow:hidden;flex:1;min-width:0;display:flex;flex-direction:column;min-height:500px}.grid-header{display:flex;justify-content:flex-start;align-items:center;padding:12px 16px;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.grid-title{margin:0;font-size:14px;font-weight:600;color:#495057}.grid-card dx-data-grid{padding:0;flex:1}@media (max-width: 1200px){.shelf-placement-layout{flex-direction:column}.shelf-form-card{flex:1;width:100%}.grid-card{width:100%;min-height:400px}}@media (max-width: 768px){.shelf-placement-container{padding:0 8px}.shelf-form-card{padding:16px;min-width:100%}.button-group{flex-direction:column}.button-group .btn{font-size:12px;padding:7px 14px;width:100%;flex:1 1 auto}}.loading-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:9999}.loading-spinner{background:#fff;padding:40px 60px;border-radius:8px;box-shadow:0 10px 40px #0000004d;text-align:center}.loading-spinner i{color:#556ee6}.loading-spinner p{margin:0;font-size:16px;font-weight:500;color:#495057}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.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: i7.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: i7.DxiButtonComponent, selector: "dxi-button", inputs: ["location", "name", "options", "cssClass", "disabled", "hint", "icon", "onClick", "template", "text", "visible"] }, { kind: "component", type: i7.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i7.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i5$1.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }] });
1085
+ ShelfPlacementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ShelfPlacementComponent, selector: "lib-shelf-placement", viewQueries: [{ propertyName: "shelfInputRef", first: true, predicate: ["shelfInput"], descendants: true }, { propertyName: "barcodeInputRef", first: true, predicate: ["barcodeInput"], descendants: true }, { propertyName: "itemCodeInputRef", first: true, predicate: ["itemCodeInput"], descendants: true }, { propertyName: "quantityInputRef", first: true, predicate: ["quantityInput"], descendants: true }, { propertyName: "gridInstance", first: true, predicate: ["gridInstance"], descendants: true }], ngImport: i0, template: "<abp-page [title]=\"'Raf Yerle\u015Ftirme'\">\r\n\r\n <!-- Loading Overlay -->\r\n <div *ngIf=\"isLoadingWarehouses\" class=\"loading-overlay\">\r\n <div class=\"loading-spinner\">\r\n <i class=\"fa fa-spinner fa-spin fa-3x\"></i>\r\n <p class=\"mt-3\">Depolar y\u00FCkleniyor...</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"shelf-placement-container\">\r\n <div class=\"shelf-placement-layout\">\r\n <!-- Form Card -->\r\n <div class=\"shelf-form-card\">\r\n <!-- Radio Buttons: Giri\u015F / \u00C7\u0131k\u0131\u015F -->\r\n <!-- <div class=\"form-section\">\r\n <label class=\"section-label\">\u0130\u015Flem Tipi</label>\r\n <div class=\"radio-group\">\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"operationType\" id=\"opEntry\"\r\n value=\"entry\" [(ngModel)]=\"operationType\" />\r\n <label class=\"form-check-label\" for=\"opEntry\">Giri\u015F</label>\r\n </div>\r\n </div>\r\n </div> -->\r\n\r\n <!-- <hr class=\"form-divider\" /> -->\r\n \r\n <!-- Depo -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"warehouseSelect\">Depo</label>\r\n <select class=\"form-select form-input\"\r\n id=\"warehouseSelect\"\r\n [(ngModel)]=\"selectedWarehouse\"\r\n (ngModelChange)=\"onWarehouseChanged()\">\r\n <option value=\"\">Depo se\u00E7in...</option>\r\n <option *ngFor=\"let wh of warehouses\" [value]=\"wh.WhsCode\">\r\n {{ wh.WhsCode }} - {{ wh.WhsName }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <!-- Raf -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"shelfInput\">Raf</label>\r\n <input #shelfInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"shelfInput\"\r\n [(ngModel)]=\"shelf\"\r\n (keydown.enter)=\"onShelfScanned()\"\r\n (blur)=\"onShelfScanned()\"\r\n placeholder=\"Raf kodu girin...\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Barkod -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"barcodeInput\">Barkod</label>\r\n <input #barcodeInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"barcodeInput\"\r\n [(ngModel)]=\"barcode\"\r\n (keydown.enter)=\"onBarcodeScanned()\"\r\n placeholder=\"Barkod okutun...\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Kalem Kodu -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"itemCodeInput\">Kalem Kodu</label>\r\n <input #itemCodeInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"itemCodeInput\"\r\n [(ngModel)]=\"itemCode\"\r\n [readOnly]=\"true\"\r\n placeholder=\"\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Kalem Ad\u0131 -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"itemNameInput\">Kalem Ad\u0131</label>\r\n <input type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"itemNameInput\"\r\n [(ngModel)]=\"itemName\"\r\n [readOnly]=\"true\"\r\n placeholder=\"\" />\r\n </div>\r\n\r\n <!-- Parti -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"batchInput\">Parti</label>\r\n <input type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"batchInput\"\r\n [(ngModel)]=\"batch\"\r\n placeholder=\"Parti numaras\u0131...\" />\r\n </div>\r\n\r\n <!-- Miktar -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"quantityInput\">Miktar</label>\r\n <input #quantityInput\r\n type=\"number\"\r\n class=\"form-control form-input\"\r\n id=\"quantityInput\"\r\n [(ngModel)]=\"quantity\"\r\n (keydown.enter)=\"onAdd()\"\r\n placeholder=\"Miktar girin...\"\r\n min=\"0\" />\r\n </div>\r\n\r\n <hr class=\"form-divider\" />\r\n\r\n <!-- Checkbox: Raf Sabit -->\r\n <div class=\"form-section\">\r\n <div class=\"form-check checkbox-group\">\r\n <input class=\"form-check-input\" type=\"checkbox\" id=\"fixedShelf\"\r\n [(ngModel)]=\"isShelfFixed\" />\r\n <label class=\"form-check-label\" for=\"fixedShelf\">Raf Sabit</label>\r\n </div>\r\n </div>\r\n\r\n <hr class=\"form-divider\" />\r\n\r\n <!-- Buttons -->\r\n <div class=\"form-section button-group\">\r\n <button class=\"btn btn-action-primary btn-sm\" (click)=\"onAdd()\">\r\n <i class=\"fa fa-plus\"></i> Ekle\r\n </button>\r\n <button class=\"btn btn-action-success btn-sm\" (click)=\"onSave()\" [disabled]=\"gridDataSource.length === 0\">\r\n <i class=\"fa fa-save\"></i> Toplu Kaydet ({{ gridDataSource.length }})\r\n </button>\r\n <button class=\"btn btn-action-outline btn-sm\" (click)=\"onClear()\">\r\n <i class=\"fa fa-eraser\"></i> Temizle\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Data Grid -->\r\n <div class=\"grid-card\">\r\n <div class=\"grid-header\">\r\n <h6 class=\"grid-title\">\r\n <i class=\"fa fa-list me-1\"></i>\r\n Raf Yerle\u015Ftirme Listesi ({{ gridDataSource.length }})\r\n </h6>\r\n </div>\r\n <dx-data-grid\r\n #gridInstance\r\n [dataSource]=\"gridDataSource\"\r\n [showRowLines]=\"true\"\r\n [showBorders]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [rowAlternationEnabled]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n style=\"height: 65vh; min-height: 500px;\"\r\n >\r\n <dxo-paging [enabled]=\"false\"></dxo-paging>\r\n <dxo-scrolling mode=\"standard\"></dxo-scrolling>\r\n \r\n <dxi-column\r\n dataField=\"barcode\"\r\n caption=\"Barkod\"\r\n [width]=\"150\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"itemCode\"\r\n caption=\"Kalem Kodu\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"itemName\"\r\n caption=\"Kalem Ad\u0131\"\r\n [width]=\"200\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"batch\"\r\n caption=\"Parti\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"warehouse\"\r\n caption=\"Depo\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"shelf\"\r\n caption=\"Raf\"\r\n [width]=\"150\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"quantity\"\r\n caption=\"Miktar\"\r\n dataType=\"number\"\r\n [width]=\"100\"\r\n ></dxi-column>\r\n <dxi-column\r\n type=\"buttons\"\r\n [width]=\"80\"\r\n >\r\n <dxi-button\r\n icon=\"trash\"\r\n hint=\"Sil\"\r\n [onClick]=\"deleteRowHandler\"\r\n ></dxi-button>\r\n </dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</abp-page>\r\n", styles: [".shelf-placement-container{width:100%}.shelf-placement-layout{display:flex;gap:20px;align-items:flex-start}.shelf-form-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:20px 24px;box-shadow:0 1px 3px #0000000f;flex:0 0 450px;min-width:320px}.form-divider{border:none;border-top:1px solid #eee;margin:14px 0}.form-section{margin-bottom:12px}.section-label{display:block;font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.form-input{height:40px;border:1px solid #ced4da;border-radius:6px;padding:0 12px;font-size:14px;background:#fff;transition:border-color .15s;width:100%}.form-input:focus{border-color:#556ee6;outline:none;box-shadow:0 0 0 2px #556ee626}.form-input[readonly]{background:#f5f5f5;color:#888}.radio-group{display:flex;gap:20px;align-items:center}.radio-group .form-check{margin:0;padding-left:22px}.radio-group .form-check-label{font-size:14px;cursor:pointer;white-space:nowrap;font-weight:500}.checkbox-group{display:flex;align-items:center;gap:8px}.checkbox-group .form-check-label{font-size:14px;cursor:pointer;font-weight:500}.button-group{display:flex;gap:10px;margin-top:4px;flex-wrap:wrap}.button-group .btn{display:inline-flex;align-items:center;gap:6px;font-size:13px;padding:8px 20px;border-radius:6px;font-weight:500;white-space:nowrap;transition:all .15s;flex:1 1 0;justify-content:center;min-width:120px}.btn-action-success{background:#34c38f;color:#fff;border:none}.btn-action-success:hover{background:#2ca67a;color:#fff}.btn-action-success:disabled{background:#9dd3bd;color:#fff;cursor:not-allowed}.btn-action-primary{background:#556ee6;color:#fff;border:none}.btn-action-primary:hover{background:#4458cb;color:#fff}.btn-action-outline{background:transparent;color:#556ee6;border:1px solid #556ee6}.btn-action-outline:hover{background:#556ee6;color:#fff}.grid-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;box-shadow:0 1px 3px #0000000f;overflow:hidden;flex:1;min-width:0;display:flex;flex-direction:column;min-height:500px}.grid-header{display:flex;justify-content:flex-start;align-items:center;padding:12px 16px;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.grid-title{margin:0;font-size:14px;font-weight:600;color:#495057}.grid-card dx-data-grid{padding:0;flex:1}@media (max-width: 1200px){.shelf-placement-layout{flex-direction:column}.shelf-form-card{flex:1;width:100%}.grid-card{width:100%;min-height:400px}}@media (max-width: 768px){.shelf-placement-container{padding:0 8px}.shelf-form-card{padding:16px;min-width:100%}.button-group{flex-direction:column}.button-group .btn{font-size:12px;padding:7px 14px;width:100%;flex:1 1 auto}}.loading-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:9999}.loading-spinner{background:#fff;padding:40px 60px;border-radius:8px;box-shadow:0 10px 40px #0000004d;text-align:center}.loading-spinner i{color:#556ee6}.loading-spinner p{margin:0;font-size:16px;font-weight:500;color:#495057}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.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: i7.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: i7.DxiButtonComponent, selector: "dxi-button", inputs: ["location", "name", "options", "cssClass", "disabled", "hint", "icon", "onClick", "template", "text", "visible"] }, { kind: "component", type: i7.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i7.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i5$1.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }] });
1072
1086
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ShelfPlacementComponent, decorators: [{
1073
1087
  type: Component,
1074
1088
  args: [{ selector: 'lib-shelf-placement', template: "<abp-page [title]=\"'Raf Yerle\u015Ftirme'\">\r\n\r\n <!-- Loading Overlay -->\r\n <div *ngIf=\"isLoadingWarehouses\" class=\"loading-overlay\">\r\n <div class=\"loading-spinner\">\r\n <i class=\"fa fa-spinner fa-spin fa-3x\"></i>\r\n <p class=\"mt-3\">Depolar y\u00FCkleniyor...</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"shelf-placement-container\">\r\n <div class=\"shelf-placement-layout\">\r\n <!-- Form Card -->\r\n <div class=\"shelf-form-card\">\r\n <!-- Radio Buttons: Giri\u015F / \u00C7\u0131k\u0131\u015F -->\r\n <!-- <div class=\"form-section\">\r\n <label class=\"section-label\">\u0130\u015Flem Tipi</label>\r\n <div class=\"radio-group\">\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"operationType\" id=\"opEntry\"\r\n value=\"entry\" [(ngModel)]=\"operationType\" />\r\n <label class=\"form-check-label\" for=\"opEntry\">Giri\u015F</label>\r\n </div>\r\n </div>\r\n </div> -->\r\n\r\n <!-- <hr class=\"form-divider\" /> -->\r\n \r\n <!-- Depo -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"warehouseSelect\">Depo</label>\r\n <select class=\"form-select form-input\"\r\n id=\"warehouseSelect\"\r\n [(ngModel)]=\"selectedWarehouse\"\r\n (ngModelChange)=\"onWarehouseChanged()\">\r\n <option value=\"\">Depo se\u00E7in...</option>\r\n <option *ngFor=\"let wh of warehouses\" [value]=\"wh.WhsCode\">\r\n {{ wh.WhsCode }} - {{ wh.WhsName }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <!-- Raf -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"shelfInput\">Raf</label>\r\n <input #shelfInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"shelfInput\"\r\n [(ngModel)]=\"shelf\"\r\n (keydown.enter)=\"onShelfScanned()\"\r\n (blur)=\"onShelfScanned()\"\r\n placeholder=\"Raf kodu girin...\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Barkod -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"barcodeInput\">Barkod</label>\r\n <input #barcodeInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"barcodeInput\"\r\n [(ngModel)]=\"barcode\"\r\n (keydown.enter)=\"onBarcodeScanned()\"\r\n placeholder=\"Barkod okutun...\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Kalem Kodu -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"itemCodeInput\">Kalem Kodu</label>\r\n <input #itemCodeInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"itemCodeInput\"\r\n [(ngModel)]=\"itemCode\"\r\n [readOnly]=\"true\"\r\n placeholder=\"\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Kalem Ad\u0131 -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"itemNameInput\">Kalem Ad\u0131</label>\r\n <input type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"itemNameInput\"\r\n [(ngModel)]=\"itemName\"\r\n [readOnly]=\"true\"\r\n placeholder=\"\" />\r\n </div>\r\n\r\n <!-- Parti -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"batchInput\">Parti</label>\r\n <input type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"batchInput\"\r\n [(ngModel)]=\"batch\"\r\n placeholder=\"Parti numaras\u0131...\" />\r\n </div>\r\n\r\n <!-- Miktar -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"quantityInput\">Miktar</label>\r\n <input #quantityInput\r\n type=\"number\"\r\n class=\"form-control form-input\"\r\n id=\"quantityInput\"\r\n [(ngModel)]=\"quantity\"\r\n (keydown.enter)=\"onAdd()\"\r\n placeholder=\"Miktar girin...\"\r\n min=\"0\" />\r\n </div>\r\n\r\n <hr class=\"form-divider\" />\r\n\r\n <!-- Checkbox: Raf Sabit -->\r\n <div class=\"form-section\">\r\n <div class=\"form-check checkbox-group\">\r\n <input class=\"form-check-input\" type=\"checkbox\" id=\"fixedShelf\"\r\n [(ngModel)]=\"isShelfFixed\" />\r\n <label class=\"form-check-label\" for=\"fixedShelf\">Raf Sabit</label>\r\n </div>\r\n </div>\r\n\r\n <hr class=\"form-divider\" />\r\n\r\n <!-- Buttons -->\r\n <div class=\"form-section button-group\">\r\n <button class=\"btn btn-action-primary btn-sm\" (click)=\"onAdd()\">\r\n <i class=\"fa fa-plus\"></i> Ekle\r\n </button>\r\n <button class=\"btn btn-action-success btn-sm\" (click)=\"onSave()\" [disabled]=\"gridDataSource.length === 0\">\r\n <i class=\"fa fa-save\"></i> Toplu Kaydet ({{ gridDataSource.length }})\r\n </button>\r\n <button class=\"btn btn-action-outline btn-sm\" (click)=\"onClear()\">\r\n <i class=\"fa fa-eraser\"></i> Temizle\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Data Grid -->\r\n <div class=\"grid-card\">\r\n <div class=\"grid-header\">\r\n <h6 class=\"grid-title\">\r\n <i class=\"fa fa-list me-1\"></i>\r\n Raf Yerle\u015Ftirme Listesi ({{ gridDataSource.length }})\r\n </h6>\r\n </div>\r\n <dx-data-grid\r\n #gridInstance\r\n [dataSource]=\"gridDataSource\"\r\n [showRowLines]=\"true\"\r\n [showBorders]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [rowAlternationEnabled]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n style=\"height: 65vh; min-height: 500px;\"\r\n >\r\n <dxo-paging [enabled]=\"false\"></dxo-paging>\r\n <dxo-scrolling mode=\"standard\"></dxo-scrolling>\r\n \r\n <dxi-column\r\n dataField=\"barcode\"\r\n caption=\"Barkod\"\r\n [width]=\"150\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"itemCode\"\r\n caption=\"Kalem Kodu\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"itemName\"\r\n caption=\"Kalem Ad\u0131\"\r\n [width]=\"200\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"batch\"\r\n caption=\"Parti\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"warehouse\"\r\n caption=\"Depo\"\r\n [width]=\"120\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"shelf\"\r\n caption=\"Raf\"\r\n [width]=\"150\"\r\n ></dxi-column>\r\n <dxi-column\r\n dataField=\"quantity\"\r\n caption=\"Miktar\"\r\n dataType=\"number\"\r\n [width]=\"100\"\r\n ></dxi-column>\r\n <dxi-column\r\n type=\"buttons\"\r\n [width]=\"80\"\r\n >\r\n <dxi-button\r\n icon=\"trash\"\r\n hint=\"Sil\"\r\n [onClick]=\"deleteRowHandler\"\r\n ></dxi-button>\r\n </dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</abp-page>\r\n", styles: [".shelf-placement-container{width:100%}.shelf-placement-layout{display:flex;gap:20px;align-items:flex-start}.shelf-form-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:20px 24px;box-shadow:0 1px 3px #0000000f;flex:0 0 450px;min-width:320px}.form-divider{border:none;border-top:1px solid #eee;margin:14px 0}.form-section{margin-bottom:12px}.section-label{display:block;font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.form-input{height:40px;border:1px solid #ced4da;border-radius:6px;padding:0 12px;font-size:14px;background:#fff;transition:border-color .15s;width:100%}.form-input:focus{border-color:#556ee6;outline:none;box-shadow:0 0 0 2px #556ee626}.form-input[readonly]{background:#f5f5f5;color:#888}.radio-group{display:flex;gap:20px;align-items:center}.radio-group .form-check{margin:0;padding-left:22px}.radio-group .form-check-label{font-size:14px;cursor:pointer;white-space:nowrap;font-weight:500}.checkbox-group{display:flex;align-items:center;gap:8px}.checkbox-group .form-check-label{font-size:14px;cursor:pointer;font-weight:500}.button-group{display:flex;gap:10px;margin-top:4px;flex-wrap:wrap}.button-group .btn{display:inline-flex;align-items:center;gap:6px;font-size:13px;padding:8px 20px;border-radius:6px;font-weight:500;white-space:nowrap;transition:all .15s;flex:1 1 0;justify-content:center;min-width:120px}.btn-action-success{background:#34c38f;color:#fff;border:none}.btn-action-success:hover{background:#2ca67a;color:#fff}.btn-action-success:disabled{background:#9dd3bd;color:#fff;cursor:not-allowed}.btn-action-primary{background:#556ee6;color:#fff;border:none}.btn-action-primary:hover{background:#4458cb;color:#fff}.btn-action-outline{background:transparent;color:#556ee6;border:1px solid #556ee6}.btn-action-outline:hover{background:#556ee6;color:#fff}.grid-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;box-shadow:0 1px 3px #0000000f;overflow:hidden;flex:1;min-width:0;display:flex;flex-direction:column;min-height:500px}.grid-header{display:flex;justify-content:flex-start;align-items:center;padding:12px 16px;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.grid-title{margin:0;font-size:14px;font-weight:600;color:#495057}.grid-card dx-data-grid{padding:0;flex:1}@media (max-width: 1200px){.shelf-placement-layout{flex-direction:column}.shelf-form-card{flex:1;width:100%}.grid-card{width:100%;min-height:400px}}@media (max-width: 768px){.shelf-placement-container{padding:0 8px}.shelf-form-card{padding:16px;min-width:100%}.button-group{flex-direction:column}.button-group .btn{font-size:12px;padding:7px 14px;width:100%;flex:1 1 auto}}.loading-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:9999}.loading-spinner{background:#fff;padding:40px 60px;border-radius:8px;box-shadow:0 10px 40px #0000004d;text-align:center}.loading-spinner i{color:#556ee6}.loading-spinner p{margin:0;font-size:16px;font-weight:500;color:#495057}\n"] }]
@@ -1293,7 +1307,7 @@ class ShelfTransferComponent {
1293
1307
  }
1294
1308
  }
1295
1309
  ShelfTransferComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ShelfTransferComponent, deps: [{ token: WarehouseService }, { token: StockTransferService }, { token: i2.ToasterService }], target: i0.ɵɵFactoryTarget.Component });
1296
- ShelfTransferComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ShelfTransferComponent, selector: "lib-shelf-transfer", ngImport: i0, template: "<abp-page [title]=\"'Raf Transfer'\">\r\n <div class=\"shelf-transfer-container\">\r\n <div class=\"shelf-transfer-layout\">\r\n <div class=\"shelf-form-card\">\r\n\r\n <!-- \u00C7\u0131k\u0131\u015F Raf\u0131 -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"sourceBinInput\">\u00C7\u0131k\u0131\u015F Raf\u0131</label>\r\n <input type=\"text\" class=\"form-control form-input\" id=\"sourceBinInput\"\r\n [(ngModel)]=\"sourceBinCode\"\r\n (keydown.enter)=\"onSourceBinEnter()\"\r\n (blur)=\"onSourceBinEnter()\"\r\n placeholder=\"Depo yeri kodu girin...\"\r\n [disabled]=\"isLoadingContent\" />\r\n </div>\r\n\r\n <!-- Kalem Bilgisi -->\r\n <div class=\"form-section\" *ngIf=\"isLoadingContent\">\r\n <div class=\"content-loading\">\r\n <i class=\"fa fa-spinner fa-spin\"></i> Kalem bilgisi y\u00FCkleniyor...\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-section\" *ngIf=\"binContent && !isLoadingContent\">\r\n <div class=\"bin-content-card\">\r\n <div class=\"content-row\">\r\n <span class=\"content-label\">Kalem Kodu:</span>\r\n <span class=\"content-value\">{{ binContent.ItemCode }}</span>\r\n </div>\r\n <div class=\"content-row\" *ngIf=\"binContent.ItemName\">\r\n <span class=\"content-label\">Kalem Ad\u0131:</span>\r\n <span class=\"content-value\">{{ binContent.ItemName }}</span>\r\n </div>\r\n <div class=\"content-row\">\r\n <span class=\"content-label\">Parti:</span>\r\n <span class=\"content-value\">{{ binContent.BatchNumber }}</span>\r\n </div>\r\n <div class=\"content-row\">\r\n <span class=\"content-label\">Mevcut Miktar:</span>\r\n <span class=\"content-value content-qty\">{{ binContent.OnHandQty }}</span>\r\n </div>\r\n <div class=\"content-row\">\r\n <span class=\"content-label\">Depo:</span>\r\n <span class=\"content-value\">{{ binContent.WarehouseCode }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-section\" *ngIf=\"sourceBinAbsEntry && !binContent && !isLoadingContent\">\r\n <div class=\"bin-content-empty\">\r\n <i class=\"fa fa-info-circle\"></i> Bu depo yerinde kalem bulunamad\u0131.\r\n </div>\r\n </div>\r\n\r\n <hr class=\"form-divider\" />\r\n\r\n <!-- Giri\u015F Raf\u0131 -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"destBinInput\">Giri\u015F Raf\u0131</label>\r\n <input type=\"text\" class=\"form-control form-input\" id=\"destBinInput\"\r\n [(ngModel)]=\"destinationBinCode\"\r\n (keydown.enter)=\"onDestinationBinEnter()\"\r\n (blur)=\"onDestinationBinEnter()\"\r\n placeholder=\"Depo yeri kodu girin...\"\r\n [disabled]=\"isLoadingDestination\" />\r\n <div *ngIf=\"isLoadingDestination\" class=\"content-loading\">\r\n <i class=\"fa fa-spinner fa-spin\"></i> Depo yeri sorgulan\u0131yor...\r\n </div>\r\n </div>\r\n\r\n <hr class=\"form-divider\" />\r\n\r\n <!-- Miktar -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"quantityInput\">Miktar</label>\r\n <input type=\"number\" class=\"form-control form-input\" id=\"quantityInput\"\r\n [(ngModel)]=\"quantity\" (keydown.enter)=\"onSave()\"\r\n placeholder=\"Miktar girin...\" min=\"0\"\r\n [max]=\"binContent?.OnHandQty\" />\r\n </div>\r\n\r\n <hr class=\"form-divider\" />\r\n\r\n <!-- Buttons -->\r\n <div class=\"form-section button-group\">\r\n <button class=\"btn btn-action-success btn-sm\" (click)=\"onSave()\"\r\n [disabled]=\"isSaving || !sourceBinAbsEntry || !destinationBinAbsEntry || !quantity || !binContent\">\r\n <i class=\"fa\" [ngClass]=\"isSaving ? 'fa-spinner fa-spin' : 'fa-save'\"></i>\r\n {{ isSaving ? 'Kaydediliyor...' : 'Kaydet' }}\r\n </button>\r\n <button class=\"btn btn-action-outline btn-sm\" (click)=\"onClear()\" [disabled]=\"isSaving\">\r\n <i class=\"fa fa-eraser\"></i> Temizle\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n", styles: [".shelf-transfer-container{width:100%}.shelf-transfer-layout{display:flex;justify-content:center;align-items:flex-start}.shelf-form-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:20px 24px;box-shadow:0 1px 3px #0000000f;width:500px;max-width:100%}.form-divider{border:none;border-top:1px solid #eee;margin:14px 0}.form-section{margin-bottom:12px}.section-label{display:block;font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.form-dx-select{width:100%}::ng-deep .form-dx-select .dx-texteditor-input{height:40px;font-size:14px}::ng-deep .form-dx-select .dx-dropdowneditor-icon{height:40px}.form-input{height:40px;border:1px solid #ced4da;border-radius:6px;padding:0 12px;font-size:14px;background:#fff;transition:border-color .15s;width:100%}.form-input:focus{border-color:#556ee6;outline:none;box-shadow:0 0 0 2px #556ee626}.bin-content-card{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;padding:12px 16px}.content-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0;border-bottom:1px solid #eee}.content-row:last-child{border-bottom:none}.content-label{font-size:12px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.3px}.content-value{font-size:14px;font-weight:500;color:#333}.content-qty{color:#34c38f;font-weight:700;font-size:16px}.content-loading{padding:12px 0;color:#6c757d;font-size:13px}.content-loading i{color:#556ee6;margin-right:6px}.bin-content-empty{background:#fff3cd;border:1px solid #ffc107;border-radius:6px;padding:10px 14px;font-size:13px;color:#856404}.bin-content-empty i{margin-right:4px}.button-group{display:flex;gap:10px;margin-top:4px;flex-wrap:wrap}.button-group .btn{display:inline-flex;align-items:center;gap:6px;font-size:13px;padding:8px 20px;border-radius:6px;font-weight:500;white-space:nowrap;transition:all .15s;flex:1 1 0;justify-content:center;min-width:120px}.btn-action-success{background:#34c38f;color:#fff;border:none}.btn-action-success:hover{background:#2ca67a;color:#fff}.btn-action-success:disabled{background:#9dd3bd;color:#fff;cursor:not-allowed}.btn-action-outline{background:transparent;color:#556ee6;border:1px solid #556ee6}.btn-action-outline:hover{background:#556ee6;color:#fff}.loading-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:9999}.loading-spinner{background:#fff;padding:40px 60px;border-radius:8px;box-shadow:0 10px 40px #0000004d;text-align:center}.loading-spinner i{color:#556ee6}.loading-spinner p{margin:0;font-size:16px;font-weight:500;color:#495057}@media (max-width: 768px){.shelf-form-card{padding:16px;width:100%}.button-group{flex-direction:column}.button-group .btn{font-size:12px;padding:7px 14px;width:100%;flex:1 1 auto}}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i5.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$1.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }] });
1310
+ ShelfTransferComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ShelfTransferComponent, selector: "lib-shelf-transfer", ngImport: i0, template: "<abp-page [title]=\"'Raf Transfer'\">\r\n <div class=\"shelf-transfer-container\">\r\n <div class=\"shelf-transfer-layout\">\r\n <div class=\"shelf-form-card\">\r\n\r\n <!-- \u00C7\u0131k\u0131\u015F Raf\u0131 -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"sourceBinInput\">\u00C7\u0131k\u0131\u015F Raf\u0131</label>\r\n <input type=\"text\" class=\"form-control form-input\" id=\"sourceBinInput\"\r\n [(ngModel)]=\"sourceBinCode\"\r\n (keydown.enter)=\"onSourceBinEnter()\"\r\n (blur)=\"onSourceBinEnter()\"\r\n placeholder=\"Depo yeri kodu girin...\"\r\n [disabled]=\"isLoadingContent\" />\r\n </div>\r\n\r\n <!-- Kalem Bilgisi -->\r\n <div class=\"form-section\" *ngIf=\"isLoadingContent\">\r\n <div class=\"content-loading\">\r\n <i class=\"fa fa-spinner fa-spin\"></i> Kalem bilgisi y\u00FCkleniyor...\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-section\" *ngIf=\"binContent && !isLoadingContent\">\r\n <div class=\"bin-content-card\">\r\n <div class=\"content-row\">\r\n <span class=\"content-label\">Kalem Kodu:</span>\r\n <span class=\"content-value\">{{ binContent.ItemCode }}</span>\r\n </div>\r\n <div class=\"content-row\" *ngIf=\"binContent.ItemName\">\r\n <span class=\"content-label\">Kalem Ad\u0131:</span>\r\n <span class=\"content-value\">{{ binContent.ItemName }}</span>\r\n </div>\r\n <div class=\"content-row\">\r\n <span class=\"content-label\">Parti:</span>\r\n <span class=\"content-value\">{{ binContent.BatchNumber }}</span>\r\n </div>\r\n <div class=\"content-row\">\r\n <span class=\"content-label\">Mevcut Miktar:</span>\r\n <span class=\"content-value content-qty\">{{ binContent.OnHandQty }}</span>\r\n </div>\r\n <div class=\"content-row\">\r\n <span class=\"content-label\">Depo:</span>\r\n <span class=\"content-value\">{{ binContent.WarehouseCode }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-section\" *ngIf=\"sourceBinAbsEntry && !binContent && !isLoadingContent\">\r\n <div class=\"bin-content-empty\">\r\n <i class=\"fa fa-info-circle\"></i> Bu depo yerinde kalem bulunamad\u0131.\r\n </div>\r\n </div>\r\n\r\n <hr class=\"form-divider\" />\r\n\r\n <!-- Giri\u015F Raf\u0131 -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"destBinInput\">Giri\u015F Raf\u0131</label>\r\n <input type=\"text\" class=\"form-control form-input\" id=\"destBinInput\"\r\n [(ngModel)]=\"destinationBinCode\"\r\n (keydown.enter)=\"onDestinationBinEnter()\"\r\n (blur)=\"onDestinationBinEnter()\"\r\n placeholder=\"Depo yeri kodu girin...\"\r\n [disabled]=\"isLoadingDestination\" />\r\n <div *ngIf=\"isLoadingDestination\" class=\"content-loading\">\r\n <i class=\"fa fa-spinner fa-spin\"></i> Depo yeri sorgulan\u0131yor...\r\n </div>\r\n </div>\r\n\r\n <hr class=\"form-divider\" />\r\n\r\n <!-- Miktar -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"quantityInput\">Miktar</label>\r\n <input type=\"number\" class=\"form-control form-input\" id=\"quantityInput\"\r\n [(ngModel)]=\"quantity\" (keydown.enter)=\"onSave()\"\r\n placeholder=\"Miktar girin...\" min=\"0\"\r\n [max]=\"binContent?.OnHandQty\" />\r\n </div>\r\n\r\n <hr class=\"form-divider\" />\r\n\r\n <!-- Buttons -->\r\n <div class=\"form-section button-group\">\r\n <button class=\"btn btn-action-success btn-sm\" (click)=\"onSave()\"\r\n [disabled]=\"isSaving || !sourceBinAbsEntry || !destinationBinAbsEntry || !quantity || !binContent\">\r\n <i class=\"fa\" [ngClass]=\"isSaving ? 'fa-spinner fa-spin' : 'fa-save'\"></i>\r\n {{ isSaving ? 'Kaydediliyor...' : 'Kaydet' }}\r\n </button>\r\n <button class=\"btn btn-action-outline btn-sm\" (click)=\"onClear()\" [disabled]=\"isSaving\">\r\n <i class=\"fa fa-eraser\"></i> Temizle\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n", styles: [".shelf-transfer-container{width:100%}.shelf-transfer-layout{display:flex;justify-content:center;align-items:flex-start}.shelf-form-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:20px 24px;box-shadow:0 1px 3px #0000000f;width:500px;max-width:100%}.form-divider{border:none;border-top:1px solid #eee;margin:14px 0}.form-section{margin-bottom:12px}.section-label{display:block;font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.form-dx-select{width:100%}::ng-deep .form-dx-select .dx-texteditor-input{height:40px;font-size:14px}::ng-deep .form-dx-select .dx-dropdowneditor-icon{height:40px}.form-input{height:40px;border:1px solid #ced4da;border-radius:6px;padding:0 12px;font-size:14px;background:#fff;transition:border-color .15s;width:100%}.form-input:focus{border-color:#556ee6;outline:none;box-shadow:0 0 0 2px #556ee626}.bin-content-card{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;padding:12px 16px}.content-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0;border-bottom:1px solid #eee}.content-row:last-child{border-bottom:none}.content-label{font-size:12px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.3px}.content-value{font-size:14px;font-weight:500;color:#333}.content-qty{color:#34c38f;font-weight:700;font-size:16px}.content-loading{padding:12px 0;color:#6c757d;font-size:13px}.content-loading i{color:#556ee6;margin-right:6px}.bin-content-empty{background:#fff3cd;border:1px solid #ffc107;border-radius:6px;padding:10px 14px;font-size:13px;color:#856404}.bin-content-empty i{margin-right:4px}.button-group{display:flex;gap:10px;margin-top:4px;flex-wrap:wrap}.button-group .btn{display:inline-flex;align-items:center;gap:6px;font-size:13px;padding:8px 20px;border-radius:6px;font-weight:500;white-space:nowrap;transition:all .15s;flex:1 1 0;justify-content:center;min-width:120px}.btn-action-success{background:#34c38f;color:#fff;border:none}.btn-action-success:hover{background:#2ca67a;color:#fff}.btn-action-success:disabled{background:#9dd3bd;color:#fff;cursor:not-allowed}.btn-action-outline{background:transparent;color:#556ee6;border:1px solid #556ee6}.btn-action-outline:hover{background:#556ee6;color:#fff}.loading-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:9999}.loading-spinner{background:#fff;padding:40px 60px;border-radius:8px;box-shadow:0 10px 40px #0000004d;text-align:center}.loading-spinner i{color:#556ee6}.loading-spinner p{margin:0;font-size:16px;font-weight:500;color:#495057}@media (max-width: 768px){.shelf-form-card{padding:16px;width:100%}.button-group{flex-direction:column}.button-group .btn{font-size:12px;padding:7px 14px;width:100%;flex:1 1 auto}}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i5.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$1.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }] });
1297
1311
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ShelfTransferComponent, decorators: [{
1298
1312
  type: Component,
1299
1313
  args: [{ selector: 'lib-shelf-transfer', template: "<abp-page [title]=\"'Raf Transfer'\">\r\n <div class=\"shelf-transfer-container\">\r\n <div class=\"shelf-transfer-layout\">\r\n <div class=\"shelf-form-card\">\r\n\r\n <!-- \u00C7\u0131k\u0131\u015F Raf\u0131 -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"sourceBinInput\">\u00C7\u0131k\u0131\u015F Raf\u0131</label>\r\n <input type=\"text\" class=\"form-control form-input\" id=\"sourceBinInput\"\r\n [(ngModel)]=\"sourceBinCode\"\r\n (keydown.enter)=\"onSourceBinEnter()\"\r\n (blur)=\"onSourceBinEnter()\"\r\n placeholder=\"Depo yeri kodu girin...\"\r\n [disabled]=\"isLoadingContent\" />\r\n </div>\r\n\r\n <!-- Kalem Bilgisi -->\r\n <div class=\"form-section\" *ngIf=\"isLoadingContent\">\r\n <div class=\"content-loading\">\r\n <i class=\"fa fa-spinner fa-spin\"></i> Kalem bilgisi y\u00FCkleniyor...\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-section\" *ngIf=\"binContent && !isLoadingContent\">\r\n <div class=\"bin-content-card\">\r\n <div class=\"content-row\">\r\n <span class=\"content-label\">Kalem Kodu:</span>\r\n <span class=\"content-value\">{{ binContent.ItemCode }}</span>\r\n </div>\r\n <div class=\"content-row\" *ngIf=\"binContent.ItemName\">\r\n <span class=\"content-label\">Kalem Ad\u0131:</span>\r\n <span class=\"content-value\">{{ binContent.ItemName }}</span>\r\n </div>\r\n <div class=\"content-row\">\r\n <span class=\"content-label\">Parti:</span>\r\n <span class=\"content-value\">{{ binContent.BatchNumber }}</span>\r\n </div>\r\n <div class=\"content-row\">\r\n <span class=\"content-label\">Mevcut Miktar:</span>\r\n <span class=\"content-value content-qty\">{{ binContent.OnHandQty }}</span>\r\n </div>\r\n <div class=\"content-row\">\r\n <span class=\"content-label\">Depo:</span>\r\n <span class=\"content-value\">{{ binContent.WarehouseCode }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-section\" *ngIf=\"sourceBinAbsEntry && !binContent && !isLoadingContent\">\r\n <div class=\"bin-content-empty\">\r\n <i class=\"fa fa-info-circle\"></i> Bu depo yerinde kalem bulunamad\u0131.\r\n </div>\r\n </div>\r\n\r\n <hr class=\"form-divider\" />\r\n\r\n <!-- Giri\u015F Raf\u0131 -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"destBinInput\">Giri\u015F Raf\u0131</label>\r\n <input type=\"text\" class=\"form-control form-input\" id=\"destBinInput\"\r\n [(ngModel)]=\"destinationBinCode\"\r\n (keydown.enter)=\"onDestinationBinEnter()\"\r\n (blur)=\"onDestinationBinEnter()\"\r\n placeholder=\"Depo yeri kodu girin...\"\r\n [disabled]=\"isLoadingDestination\" />\r\n <div *ngIf=\"isLoadingDestination\" class=\"content-loading\">\r\n <i class=\"fa fa-spinner fa-spin\"></i> Depo yeri sorgulan\u0131yor...\r\n </div>\r\n </div>\r\n\r\n <hr class=\"form-divider\" />\r\n\r\n <!-- Miktar -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"quantityInput\">Miktar</label>\r\n <input type=\"number\" class=\"form-control form-input\" id=\"quantityInput\"\r\n [(ngModel)]=\"quantity\" (keydown.enter)=\"onSave()\"\r\n placeholder=\"Miktar girin...\" min=\"0\"\r\n [max]=\"binContent?.OnHandQty\" />\r\n </div>\r\n\r\n <hr class=\"form-divider\" />\r\n\r\n <!-- Buttons -->\r\n <div class=\"form-section button-group\">\r\n <button class=\"btn btn-action-success btn-sm\" (click)=\"onSave()\"\r\n [disabled]=\"isSaving || !sourceBinAbsEntry || !destinationBinAbsEntry || !quantity || !binContent\">\r\n <i class=\"fa\" [ngClass]=\"isSaving ? 'fa-spinner fa-spin' : 'fa-save'\"></i>\r\n {{ isSaving ? 'Kaydediliyor...' : 'Kaydet' }}\r\n </button>\r\n <button class=\"btn btn-action-outline btn-sm\" (click)=\"onClear()\" [disabled]=\"isSaving\">\r\n <i class=\"fa fa-eraser\"></i> Temizle\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n", styles: [".shelf-transfer-container{width:100%}.shelf-transfer-layout{display:flex;justify-content:center;align-items:flex-start}.shelf-form-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:20px 24px;box-shadow:0 1px 3px #0000000f;width:500px;max-width:100%}.form-divider{border:none;border-top:1px solid #eee;margin:14px 0}.form-section{margin-bottom:12px}.section-label{display:block;font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.form-dx-select{width:100%}::ng-deep .form-dx-select .dx-texteditor-input{height:40px;font-size:14px}::ng-deep .form-dx-select .dx-dropdowneditor-icon{height:40px}.form-input{height:40px;border:1px solid #ced4da;border-radius:6px;padding:0 12px;font-size:14px;background:#fff;transition:border-color .15s;width:100%}.form-input:focus{border-color:#556ee6;outline:none;box-shadow:0 0 0 2px #556ee626}.bin-content-card{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;padding:12px 16px}.content-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0;border-bottom:1px solid #eee}.content-row:last-child{border-bottom:none}.content-label{font-size:12px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.3px}.content-value{font-size:14px;font-weight:500;color:#333}.content-qty{color:#34c38f;font-weight:700;font-size:16px}.content-loading{padding:12px 0;color:#6c757d;font-size:13px}.content-loading i{color:#556ee6;margin-right:6px}.bin-content-empty{background:#fff3cd;border:1px solid #ffc107;border-radius:6px;padding:10px 14px;font-size:13px;color:#856404}.bin-content-empty i{margin-right:4px}.button-group{display:flex;gap:10px;margin-top:4px;flex-wrap:wrap}.button-group .btn{display:inline-flex;align-items:center;gap:6px;font-size:13px;padding:8px 20px;border-radius:6px;font-weight:500;white-space:nowrap;transition:all .15s;flex:1 1 0;justify-content:center;min-width:120px}.btn-action-success{background:#34c38f;color:#fff;border:none}.btn-action-success:hover{background:#2ca67a;color:#fff}.btn-action-success:disabled{background:#9dd3bd;color:#fff;cursor:not-allowed}.btn-action-outline{background:transparent;color:#556ee6;border:1px solid #556ee6}.btn-action-outline:hover{background:#556ee6;color:#fff}.loading-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:9999}.loading-spinner{background:#fff;padding:40px 60px;border-radius:8px;box-shadow:0 10px 40px #0000004d;text-align:center}.loading-spinner i{color:#556ee6}.loading-spinner p{margin:0;font-size:16px;font-weight:500;color:#495057}@media (max-width: 768px){.shelf-form-card{padding:16px;width:100%}.button-group{flex-direction:column}.button-group .btn{font-size:12px;padding:7px 14px;width:100%;flex:1 1 auto}}\n"] }]
@@ -1490,7 +1504,7 @@ class OrderStationComponent {
1490
1504
  }
1491
1505
  }
1492
1506
  OrderStationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: OrderStationComponent, deps: [{ token: OrderStationService }, { token: i2.ToasterService }], target: i0.ɵɵFactoryTarget.Component });
1493
- OrderStationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: OrderStationComponent, selector: "lib-order-station", viewQueries: [{ propertyName: "stationInputRef", first: true, predicate: ["stationInput"], descendants: true }, { propertyName: "shelfInputRef", first: true, predicate: ["shelfInput"], descendants: true }, { propertyName: "binInputRef", first: true, predicate: ["binInput"], descendants: true }, { propertyName: "orderInputRef", first: true, predicate: ["orderInput"], descendants: true }], ngImport: i0, template: "<abp-page [title]=\"'Sipari\u015F-Toplama Noktas\u0131 E\u015Fle\u015Ftirme'\">\r\n <div class=\"order-station-container\">\r\n <div class=\"order-station-layout\">\r\n <div class=\"order-station-form-card\">\r\n\r\n <!-- \u0130stasyon -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"stationInput\">\u0130stasyon</label>\r\n <input #stationInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"stationInput\"\r\n [(ngModel)]=\"stationCode\"\r\n (keydown.enter)=\"onStationScanned()\"\r\n placeholder=\"\u0130stasyon kodunu okutun...\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Raf -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"shelfInput\">G\u00F6z</label>\r\n <input #shelfInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"shelfInput\"\r\n [(ngModel)]=\"eyeCode\"\r\n (keydown.enter)=\"onShelfScanned()\"\r\n placeholder=\"Raf kodunu okutun...\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Toplanacak Kasa -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"binInput\">Toplanacak Kasa</label>\r\n <input #binInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"binInput\"\r\n [(ngModel)]=\"absBinEntry\"\r\n (keydown.enter)=\"onBinScanned()\"\r\n placeholder=\"Toplanacak kasa kodunu okutun...\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Sipari\u015F -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"orderInput\">Sipari\u015F</label>\r\n <input #orderInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"orderInput\"\r\n [(ngModel)]=\"orderId\"\r\n (ngModelChange)=\"onOrderChanged()\"\r\n (keydown.enter)=\"onOrderScanned()\"\r\n placeholder=\"Sipari\u015F numaras\u0131n\u0131 okutun...\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Sipari\u015F Durum Bilgisi -->\r\n <div class=\"form-section\" *ngIf=\"isCheckingOrder\">\r\n <div class=\"status-loading\">\r\n <i class=\"fa fa-spinner fa-spin\"></i> Sipari\u015F durumu kontrol ediliyor...\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-section\" *ngIf=\"orderStatus && !isCheckingOrder\">\r\n <div class=\"status-card\" [ngClass]=\"{\r\n 'status-ok': orderStatus.IsEligibleForMatching,\r\n 'status-error': !orderStatus.IsEligibleForMatching\r\n }\">\r\n <i class=\"fa\" [ngClass]=\"orderStatus.IsEligibleForMatching ? 'fa-check-circle' : 'fa-times-circle'\"></i>\r\n <span *ngIf=\"orderStatus.IsEligibleForMatching\">\r\n Sipari\u015F Durumu: {{ orderStatus.StatusText }}\r\n </span>\r\n <span *ngIf=\"!orderStatus.IsEligibleForMatching\">\r\n Bu sipari\u015Fin durumu {{ orderStatus.StatusText }}. E\u015Fle\u015Ftirme i\u015Flemi yap\u0131lamaz.\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <hr class=\"form-divider\" />\r\n\r\n <!-- Buttons -->\r\n <div class=\"form-section button-group\">\r\n <button class=\"btn btn-action-success btn-sm\"\r\n (click)=\"onSave()\"\r\n [disabled]=\"isSaving || isCheckingOrder || !stationCode || !eyeCode || !absBinEntry || !orderId || !orderStatus || !orderStatus.IsEligibleForMatching\">\r\n <i class=\"fa\" [ngClass]=\"isSaving ? 'fa-spinner fa-spin' : 'fa-save'\"></i>\r\n {{ isSaving ? 'Kaydediliyor...' : 'Kaydet' }}\r\n </button>\r\n <button class=\"btn btn-action-outline btn-sm\"\r\n (click)=\"onClear()\"\r\n [disabled]=\"isSaving\">\r\n <i class=\"fa fa-eraser\"></i> Temizle\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n", styles: [".order-station-container{width:100%}.order-station-layout{display:flex;gap:20px;align-items:flex-start;justify-content:center}.order-station-form-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:20px 24px;box-shadow:0 1px 3px #0000000f;flex:0 0 500px;min-width:320px;max-width:500px}.form-divider{border:none;border-top:1px solid #eee;margin:14px 0}.form-section{margin-bottom:12px}.section-label{display:block;font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.form-input{height:40px;border:1px solid #ced4da;border-radius:6px;padding:0 12px;font-size:14px;background:#fff;transition:border-color .15s;width:100%}.form-input:focus{border-color:#556ee6;outline:none;box-shadow:0 0 0 2px #556ee626}.form-input[readonly]{background:#f5f5f5;color:#888}.status-loading{padding:10px 14px;background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;font-size:13px;color:#6c757d}.status-loading i{margin-right:6px;color:#556ee6}.status-card{padding:10px 14px;border-radius:6px;font-size:13px;font-weight:500;display:flex;align-items:center;gap:8px}.status-card i{font-size:16px}.status-ok{background:#e8f5e9;border:1px solid #a5d6a7;color:#2e7d32}.status-ok i{color:#2e7d32}.status-error{background:#fbe9e7;border:1px solid #ef9a9a;color:#c62828}.status-error i{color:#c62828}.button-group{display:flex;gap:10px;margin-top:4px;flex-wrap:wrap}.button-group .btn{display:inline-flex;align-items:center;gap:6px;font-size:13px;padding:8px 20px;border-radius:6px;font-weight:500;white-space:nowrap;transition:all .15s;flex:1 1 0;justify-content:center;min-width:120px}.btn-action-success{background:#34c38f;color:#fff;border:none}.btn-action-success:hover{background:#2ca67a;color:#fff}.btn-action-success:disabled{background:#9dd3bd;color:#fff;cursor:not-allowed}.btn-action-outline{background:transparent;color:#556ee6;border:1px solid #556ee6}.btn-action-outline:hover{background:#556ee6;color:#fff}@media (max-width: 768px){.order-station-container{padding:0 8px}.order-station-form-card{padding:16px;min-width:100%;flex:1}.button-group{flex-direction:column}.button-group .btn{font-size:12px;padding:7px 14px;width:100%;flex:1 1 auto}}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$1.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }] });
1507
+ OrderStationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: OrderStationComponent, selector: "lib-order-station", viewQueries: [{ propertyName: "stationInputRef", first: true, predicate: ["stationInput"], descendants: true }, { propertyName: "shelfInputRef", first: true, predicate: ["shelfInput"], descendants: true }, { propertyName: "binInputRef", first: true, predicate: ["binInput"], descendants: true }, { propertyName: "orderInputRef", first: true, predicate: ["orderInput"], descendants: true }], ngImport: i0, template: "<abp-page [title]=\"'Sipari\u015F-Toplama Noktas\u0131 E\u015Fle\u015Ftirme'\">\r\n <div class=\"order-station-container\">\r\n <div class=\"order-station-layout\">\r\n <div class=\"order-station-form-card\">\r\n\r\n <!-- \u0130stasyon -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"stationInput\">\u0130stasyon</label>\r\n <input #stationInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"stationInput\"\r\n [(ngModel)]=\"stationCode\"\r\n (keydown.enter)=\"onStationScanned()\"\r\n placeholder=\"\u0130stasyon kodunu okutun...\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Raf -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"shelfInput\">G\u00F6z</label>\r\n <input #shelfInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"shelfInput\"\r\n [(ngModel)]=\"eyeCode\"\r\n (keydown.enter)=\"onShelfScanned()\"\r\n placeholder=\"Raf kodunu okutun...\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Toplanacak Kasa -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"binInput\">Toplanacak Kasa</label>\r\n <input #binInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"binInput\"\r\n [(ngModel)]=\"absBinEntry\"\r\n (keydown.enter)=\"onBinScanned()\"\r\n placeholder=\"Toplanacak kasa kodunu okutun...\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Sipari\u015F -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"orderInput\">Sipari\u015F</label>\r\n <input #orderInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"orderInput\"\r\n [(ngModel)]=\"orderId\"\r\n (ngModelChange)=\"onOrderChanged()\"\r\n (keydown.enter)=\"onOrderScanned()\"\r\n placeholder=\"Sipari\u015F numaras\u0131n\u0131 okutun...\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Sipari\u015F Durum Bilgisi -->\r\n <div class=\"form-section\" *ngIf=\"isCheckingOrder\">\r\n <div class=\"status-loading\">\r\n <i class=\"fa fa-spinner fa-spin\"></i> Sipari\u015F durumu kontrol ediliyor...\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-section\" *ngIf=\"orderStatus && !isCheckingOrder\">\r\n <div class=\"status-card\" [ngClass]=\"{\r\n 'status-ok': orderStatus.IsEligibleForMatching,\r\n 'status-error': !orderStatus.IsEligibleForMatching\r\n }\">\r\n <i class=\"fa\" [ngClass]=\"orderStatus.IsEligibleForMatching ? 'fa-check-circle' : 'fa-times-circle'\"></i>\r\n <span *ngIf=\"orderStatus.IsEligibleForMatching\">\r\n Sipari\u015F Durumu: {{ orderStatus.StatusText }}\r\n </span>\r\n <span *ngIf=\"!orderStatus.IsEligibleForMatching\">\r\n Bu sipari\u015Fin durumu {{ orderStatus.StatusText }}. E\u015Fle\u015Ftirme i\u015Flemi yap\u0131lamaz.\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <hr class=\"form-divider\" />\r\n\r\n <!-- Buttons -->\r\n <div class=\"form-section button-group\">\r\n <button class=\"btn btn-action-success btn-sm\"\r\n (click)=\"onSave()\"\r\n [disabled]=\"isSaving || isCheckingOrder || !stationCode || !eyeCode || !absBinEntry || !orderId || !orderStatus || !orderStatus.IsEligibleForMatching\">\r\n <i class=\"fa\" [ngClass]=\"isSaving ? 'fa-spinner fa-spin' : 'fa-save'\"></i>\r\n {{ isSaving ? 'Kaydediliyor...' : 'Kaydet' }}\r\n </button>\r\n <button class=\"btn btn-action-outline btn-sm\"\r\n (click)=\"onClear()\"\r\n [disabled]=\"isSaving\">\r\n <i class=\"fa fa-eraser\"></i> Temizle\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n", styles: [".order-station-container{width:100%}.order-station-layout{display:flex;gap:20px;align-items:flex-start;justify-content:center}.order-station-form-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:20px 24px;box-shadow:0 1px 3px #0000000f;flex:0 0 500px;min-width:320px;max-width:500px}.form-divider{border:none;border-top:1px solid #eee;margin:14px 0}.form-section{margin-bottom:12px}.section-label{display:block;font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.form-input{height:40px;border:1px solid #ced4da;border-radius:6px;padding:0 12px;font-size:14px;background:#fff;transition:border-color .15s;width:100%}.form-input:focus{border-color:#556ee6;outline:none;box-shadow:0 0 0 2px #556ee626}.form-input[readonly]{background:#f5f5f5;color:#888}.status-loading{padding:10px 14px;background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;font-size:13px;color:#6c757d}.status-loading i{margin-right:6px;color:#556ee6}.status-card{padding:10px 14px;border-radius:6px;font-size:13px;font-weight:500;display:flex;align-items:center;gap:8px}.status-card i{font-size:16px}.status-ok{background:#e8f5e9;border:1px solid #a5d6a7;color:#2e7d32}.status-ok i{color:#2e7d32}.status-error{background:#fbe9e7;border:1px solid #ef9a9a;color:#c62828}.status-error i{color:#c62828}.button-group{display:flex;gap:10px;margin-top:4px;flex-wrap:wrap}.button-group .btn{display:inline-flex;align-items:center;gap:6px;font-size:13px;padding:8px 20px;border-radius:6px;font-weight:500;white-space:nowrap;transition:all .15s;flex:1 1 0;justify-content:center;min-width:120px}.btn-action-success{background:#34c38f;color:#fff;border:none}.btn-action-success:hover{background:#2ca67a;color:#fff}.btn-action-success:disabled{background:#9dd3bd;color:#fff;cursor:not-allowed}.btn-action-outline{background:transparent;color:#556ee6;border:1px solid #556ee6}.btn-action-outline:hover{background:#556ee6;color:#fff}@media (max-width: 768px){.order-station-container{padding:0 8px}.order-station-form-card{padding:16px;min-width:100%;flex:1}.button-group{flex-direction:column}.button-group .btn{font-size:12px;padding:7px 14px;width:100%;flex:1 1 auto}}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$1.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }] });
1494
1508
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: OrderStationComponent, decorators: [{
1495
1509
  type: Component,
1496
1510
  args: [{ selector: 'lib-order-station', template: "<abp-page [title]=\"'Sipari\u015F-Toplama Noktas\u0131 E\u015Fle\u015Ftirme'\">\r\n <div class=\"order-station-container\">\r\n <div class=\"order-station-layout\">\r\n <div class=\"order-station-form-card\">\r\n\r\n <!-- \u0130stasyon -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"stationInput\">\u0130stasyon</label>\r\n <input #stationInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"stationInput\"\r\n [(ngModel)]=\"stationCode\"\r\n (keydown.enter)=\"onStationScanned()\"\r\n placeholder=\"\u0130stasyon kodunu okutun...\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Raf -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"shelfInput\">G\u00F6z</label>\r\n <input #shelfInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"shelfInput\"\r\n [(ngModel)]=\"eyeCode\"\r\n (keydown.enter)=\"onShelfScanned()\"\r\n placeholder=\"Raf kodunu okutun...\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Toplanacak Kasa -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"binInput\">Toplanacak Kasa</label>\r\n <input #binInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"binInput\"\r\n [(ngModel)]=\"absBinEntry\"\r\n (keydown.enter)=\"onBinScanned()\"\r\n placeholder=\"Toplanacak kasa kodunu okutun...\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Sipari\u015F -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"orderInput\">Sipari\u015F</label>\r\n <input #orderInput\r\n type=\"text\"\r\n class=\"form-control form-input\"\r\n id=\"orderInput\"\r\n [(ngModel)]=\"orderId\"\r\n (ngModelChange)=\"onOrderChanged()\"\r\n (keydown.enter)=\"onOrderScanned()\"\r\n placeholder=\"Sipari\u015F numaras\u0131n\u0131 okutun...\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Sipari\u015F Durum Bilgisi -->\r\n <div class=\"form-section\" *ngIf=\"isCheckingOrder\">\r\n <div class=\"status-loading\">\r\n <i class=\"fa fa-spinner fa-spin\"></i> Sipari\u015F durumu kontrol ediliyor...\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-section\" *ngIf=\"orderStatus && !isCheckingOrder\">\r\n <div class=\"status-card\" [ngClass]=\"{\r\n 'status-ok': orderStatus.IsEligibleForMatching,\r\n 'status-error': !orderStatus.IsEligibleForMatching\r\n }\">\r\n <i class=\"fa\" [ngClass]=\"orderStatus.IsEligibleForMatching ? 'fa-check-circle' : 'fa-times-circle'\"></i>\r\n <span *ngIf=\"orderStatus.IsEligibleForMatching\">\r\n Sipari\u015F Durumu: {{ orderStatus.StatusText }}\r\n </span>\r\n <span *ngIf=\"!orderStatus.IsEligibleForMatching\">\r\n Bu sipari\u015Fin durumu {{ orderStatus.StatusText }}. E\u015Fle\u015Ftirme i\u015Flemi yap\u0131lamaz.\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <hr class=\"form-divider\" />\r\n\r\n <!-- Buttons -->\r\n <div class=\"form-section button-group\">\r\n <button class=\"btn btn-action-success btn-sm\"\r\n (click)=\"onSave()\"\r\n [disabled]=\"isSaving || isCheckingOrder || !stationCode || !eyeCode || !absBinEntry || !orderId || !orderStatus || !orderStatus.IsEligibleForMatching\">\r\n <i class=\"fa\" [ngClass]=\"isSaving ? 'fa-spinner fa-spin' : 'fa-save'\"></i>\r\n {{ isSaving ? 'Kaydediliyor...' : 'Kaydet' }}\r\n </button>\r\n <button class=\"btn btn-action-outline btn-sm\"\r\n (click)=\"onClear()\"\r\n [disabled]=\"isSaving\">\r\n <i class=\"fa fa-eraser\"></i> Temizle\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n", styles: [".order-station-container{width:100%}.order-station-layout{display:flex;gap:20px;align-items:flex-start;justify-content:center}.order-station-form-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:20px 24px;box-shadow:0 1px 3px #0000000f;flex:0 0 500px;min-width:320px;max-width:500px}.form-divider{border:none;border-top:1px solid #eee;margin:14px 0}.form-section{margin-bottom:12px}.section-label{display:block;font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.form-input{height:40px;border:1px solid #ced4da;border-radius:6px;padding:0 12px;font-size:14px;background:#fff;transition:border-color .15s;width:100%}.form-input:focus{border-color:#556ee6;outline:none;box-shadow:0 0 0 2px #556ee626}.form-input[readonly]{background:#f5f5f5;color:#888}.status-loading{padding:10px 14px;background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;font-size:13px;color:#6c757d}.status-loading i{margin-right:6px;color:#556ee6}.status-card{padding:10px 14px;border-radius:6px;font-size:13px;font-weight:500;display:flex;align-items:center;gap:8px}.status-card i{font-size:16px}.status-ok{background:#e8f5e9;border:1px solid #a5d6a7;color:#2e7d32}.status-ok i{color:#2e7d32}.status-error{background:#fbe9e7;border:1px solid #ef9a9a;color:#c62828}.status-error i{color:#c62828}.button-group{display:flex;gap:10px;margin-top:4px;flex-wrap:wrap}.button-group .btn{display:inline-flex;align-items:center;gap:6px;font-size:13px;padding:8px 20px;border-radius:6px;font-weight:500;white-space:nowrap;transition:all .15s;flex:1 1 0;justify-content:center;min-width:120px}.btn-action-success{background:#34c38f;color:#fff;border:none}.btn-action-success:hover{background:#2ca67a;color:#fff}.btn-action-success:disabled{background:#9dd3bd;color:#fff;cursor:not-allowed}.btn-action-outline{background:transparent;color:#556ee6;border:1px solid #556ee6}.btn-action-outline:hover{background:#556ee6;color:#fff}@media (max-width: 768px){.order-station-container{padding:0 8px}.order-station-form-card{padding:16px;min-width:100%;flex:1}.button-group{flex-direction:column}.button-group .btn{font-size:12px;padding:7px 14px;width:100%;flex:1 1 auto}}\n"] }]
@@ -1703,7 +1717,7 @@ class ShortagesComponent {
1703
1717
  }
1704
1718
  }
1705
1719
  ShortagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ShortagesComponent, deps: [{ token: ShortagesService }, { token: i2.ToasterService }], target: i0.ɵɵFactoryTarget.Component });
1706
- ShortagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ShortagesComponent, selector: "lib-shortages", viewQueries: [{ propertyName: "dxDetailInstance", first: true, predicate: ["dxDetailInstance"], descendants: true }, { propertyName: "dxSummaryInstance", first: true, predicate: ["dxSummaryInstance"], descendants: true }], ngImport: i0, template: "<abp-page [title]=\"'Fark Listesi'\">\n\n <div class=\"mb-3 d-flex flex-wrap align-items-center gap-2\">\n <div class=\"btn-group me-3\" role=\"group\">\n <button\n type=\"button\"\n class=\"btn btn-sm\"\n [ngClass]=\"viewMode === 'detay' ? 'btn-primary' : 'btn-outline-primary'\"\n (click)=\"setViewMode('detay')\"\n >\n Detay (Sipari\u015F Baz\u0131nda)\n </button>\n <button\n type=\"button\"\n class=\"btn btn-sm\"\n [ngClass]=\"viewMode === 'ozet' ? 'btn-primary' : 'btn-outline-primary'\"\n (click)=\"setViewMode('ozet')\"\n >\n \u00D6zet (Kalem Baz\u0131nda)\n </button>\n </div>\n\n <span class=\"badge bg-light text-dark border\" [class.border-primary]=\"!activeOrderType\" style=\"cursor:pointer\" (click)=\"activeOrderType = null; load()\">\n T\u00FCm\u00FC\n </span>\n <span class=\"badge\" [ngClass]=\"activeOrderType === '1' ? 'bg-primary' : 'bg-light text-dark border'\" style=\"cursor:pointer\" (click)=\"toggleOrderType('1')\">\n Sanayi Sipari\u015Fleri\n </span>\n <span class=\"badge\" [ngClass]=\"activeOrderType === '2' ? 'bg-primary' : 'bg-light text-dark border'\" style=\"cursor:pointer\" (click)=\"toggleOrderType('2')\">\n Da\u011F\u0131t\u0131m Sipari\u015Fleri\n </span>\n <span class=\"badge\" [ngClass]=\"activeOrderType === '3' ? 'bg-primary' : 'bg-light text-dark border'\" style=\"cursor:pointer\" (click)=\"toggleOrderType('3')\">\n Depo Talepleri\n </span>\n\n <button class=\"btn btn-sm btn-outline-secondary ms-auto\" (click)=\"onRefresh()\" [disabled]=\"isLoading\">\n <i class=\"fa fa-redo\"></i> Yenile\n </button>\n </div>\n\n <div class=\"card\" *ngIf=\"viewMode === 'detay'\">\n <div class=\"card-body\">\n <dx-data-grid\n #dxDetailInstance\n [dataSource]=\"detailDataSource\"\n [showRowLines]=\"true\"\n [showBorders]=\"true\"\n [hoverStateEnabled]=\"true\"\n [allowColumnResizing]=\"true\"\n columnResizingMode=\"widget\"\n [allowColumnReordering]=\"true\"\n [columnAutoWidth]=\"true\"\n [columnHidingEnabled]=\"true\"\n style=\"height: 70vh;\"\n >\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [allowedPageSizes]=\"[20, 50, 100]\" [showNavigationButtons]=\"true\" [showPageSizeSelector]=\"true\"></dxo-pager>\n <dxo-paging [pageSize]=\"20\"></dxo-paging>\n <dxo-column-chooser [allowSearch]=\"true\" [enabled]=\"true\" mode=\"select\"></dxo-column-chooser>\n <dxo-group-panel [visible]=\"true\" [allowColumnDragging]=\"true\"></dxo-group-panel>\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-export [enabled]=\"true\" [allowExportSelectedData]=\"false\"></dxo-export>\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\n <dxo-sorting mode=\"single\"></dxo-sorting>\n <dxo-scrolling mode=\"standard\" showScrollbar=\"always\"></dxo-scrolling>\n\n <dxi-column dataField=\"OrderDocNum\" caption=\"Belge No\" [width]=\"110\"></dxi-column>\n <dxi-column dataField=\"CardCode\" caption=\"M\u00FC\u015Fteri Kodu\" [width]=\"140\"></dxi-column>\n <dxi-column dataField=\"CardName\" caption=\"M\u00FC\u015Fteri Ad\u0131\" [width]=\"220\"></dxi-column>\n <dxi-column dataField=\"ItemCode\" caption=\"Kalem Kodu\" [width]=\"140\"></dxi-column>\n <dxi-column dataField=\"ItemName\" caption=\"Kalem Ad\u0131\"></dxi-column>\n <dxi-column dataField=\"RequestedQty\" caption=\"Talep Edilen\" dataType=\"number\" format=\"#,##0.##\" [width]=\"120\"></dxi-column>\n <dxi-column dataField=\"ShortQty\" caption=\"Eksik Miktar\" dataType=\"number\" format=\"#,##0.##\" [width]=\"120\"></dxi-column>\n\n <dxo-summary>\n <dxi-total-item column=\"ShortQty\" summaryType=\"sum\" displayFormat=\"Toplam Eksik: {0}\" valueFormat=\"#,##0.##\"></dxi-total-item>\n </dxo-summary>\n </dx-data-grid>\n </div>\n </div>\n\n <div class=\"card\" *ngIf=\"viewMode === 'ozet'\">\n <div class=\"card-body\">\n <dx-data-grid\n #dxSummaryInstance\n [dataSource]=\"summaryDataSource\"\n [showRowLines]=\"true\"\n [showBorders]=\"true\"\n [hoverStateEnabled]=\"true\"\n [allowColumnResizing]=\"true\"\n columnResizingMode=\"widget\"\n [allowColumnReordering]=\"true\"\n [columnAutoWidth]=\"true\"\n style=\"height: 70vh;\"\n >\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [allowedPageSizes]=\"[20, 50, 100]\" [showNavigationButtons]=\"true\" [showPageSizeSelector]=\"true\"></dxo-pager>\n <dxo-paging [pageSize]=\"20\"></dxo-paging>\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-export [enabled]=\"true\" [allowExportSelectedData]=\"false\"></dxo-export>\n <dxo-sorting mode=\"single\"></dxo-sorting>\n <dxo-scrolling mode=\"standard\" showScrollbar=\"always\"></dxo-scrolling>\n\n <dxi-column dataField=\"ItemCode\" caption=\"Kalem Kodu\" [width]=\"160\"></dxi-column>\n <dxi-column dataField=\"ItemName\" caption=\"Kalem Ad\u0131\"></dxi-column>\n <dxi-column dataField=\"TotalShortQty\" caption=\"Toplam Eksik\" dataType=\"number\" format=\"#,##0.##\" [width]=\"140\" sortOrder=\"desc\"></dxi-column>\n <dxi-column dataField=\"OrderCount\" caption=\"Sipari\u015F Say\u0131s\u0131\" dataType=\"number\" [width]=\"130\"></dxi-column>\n </dx-data-grid>\n </div>\n </div>\n\n</abp-page>\n", dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5$1.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i6.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: i7.DxoColumnChooserComponent, selector: "dxo-column-chooser", inputs: ["allowSearch", "emptyPanelText", "enabled", "height", "mode", "searchTimeout", "sortOrder", "title", "width"] }, { kind: "component", type: i7.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: i7.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "dataSource", "groupInterval", "height", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i7.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "svgToCanvas", "allowExportSelectedData", "texts"] }, { kind: "component", type: i7.DxoFilterPanelComponent, selector: "dxo-filter-panel", inputs: ["customizeText", "filterEnabled", "texts", "visible"], outputs: ["filterEnabledChange"] }, { kind: "component", type: i7.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i7.DxoGroupPanelComponent, selector: "dxo-group-panel", inputs: ["allowColumnDragging", "emptyPanelText", "visible"], outputs: ["visibleChange"] }, { kind: "component", type: i7.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i7.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i7.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i7.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "component", type: i7.DxoSummaryComponent, selector: "dxo-summary", inputs: ["calculateCustomSummary", "groupItems", "recalculateWhileEditing", "skipEmptyValues", "texts", "totalItems"] }, { kind: "component", type: i7.DxiTotalItemComponent, selector: "dxi-total-item", inputs: ["alignment", "column", "cssClass", "customizeText", "displayFormat", "name", "showInColumn", "skipEmptyValues", "summaryType", "valueFormat"] }] });
1720
+ ShortagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ShortagesComponent, selector: "lib-shortages", viewQueries: [{ propertyName: "dxDetailInstance", first: true, predicate: ["dxDetailInstance"], descendants: true }, { propertyName: "dxSummaryInstance", first: true, predicate: ["dxSummaryInstance"], descendants: true }], ngImport: i0, template: "<abp-page [title]=\"'Fark Listesi'\">\n\n <div class=\"mb-3 d-flex flex-wrap align-items-center gap-2\">\n <div class=\"btn-group me-3\" role=\"group\">\n <button\n type=\"button\"\n class=\"btn btn-sm\"\n [ngClass]=\"viewMode === 'detay' ? 'btn-primary' : 'btn-outline-primary'\"\n (click)=\"setViewMode('detay')\"\n >\n Detay (Sipari\u015F Baz\u0131nda)\n </button>\n <button\n type=\"button\"\n class=\"btn btn-sm\"\n [ngClass]=\"viewMode === 'ozet' ? 'btn-primary' : 'btn-outline-primary'\"\n (click)=\"setViewMode('ozet')\"\n >\n \u00D6zet (Kalem Baz\u0131nda)\n </button>\n </div>\n\n <span class=\"badge bg-light text-dark border\" [class.border-primary]=\"!activeOrderType\" style=\"cursor:pointer\" (click)=\"activeOrderType = null; load()\">\n T\u00FCm\u00FC\n </span>\n <span class=\"badge\" [ngClass]=\"activeOrderType === '1' ? 'bg-primary' : 'bg-light text-dark border'\" style=\"cursor:pointer\" (click)=\"toggleOrderType('1')\">\n Sanayi Sipari\u015Fleri\n </span>\n <span class=\"badge\" [ngClass]=\"activeOrderType === '2' ? 'bg-primary' : 'bg-light text-dark border'\" style=\"cursor:pointer\" (click)=\"toggleOrderType('2')\">\n Da\u011F\u0131t\u0131m Sipari\u015Fleri\n </span>\n <span class=\"badge\" [ngClass]=\"activeOrderType === '3' ? 'bg-primary' : 'bg-light text-dark border'\" style=\"cursor:pointer\" (click)=\"toggleOrderType('3')\">\n Depo Talepleri\n </span>\n\n <button class=\"btn btn-sm btn-outline-secondary ms-auto\" (click)=\"onRefresh()\" [disabled]=\"isLoading\">\n <i class=\"fa fa-redo\"></i> Yenile\n </button>\n </div>\n\n <div class=\"card\" *ngIf=\"viewMode === 'detay'\">\n <div class=\"card-body\">\n <dx-data-grid\n #dxDetailInstance\n [dataSource]=\"detailDataSource\"\n [showRowLines]=\"true\"\n [showBorders]=\"true\"\n [hoverStateEnabled]=\"true\"\n [allowColumnResizing]=\"true\"\n columnResizingMode=\"widget\"\n [allowColumnReordering]=\"true\"\n [columnAutoWidth]=\"true\"\n [columnHidingEnabled]=\"true\"\n style=\"height: 70vh;\"\n >\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [allowedPageSizes]=\"[20, 50, 100]\" [showNavigationButtons]=\"true\" [showPageSizeSelector]=\"true\"></dxo-pager>\n <dxo-paging [pageSize]=\"20\"></dxo-paging>\n <dxo-column-chooser [allowSearch]=\"true\" [enabled]=\"true\" mode=\"select\"></dxo-column-chooser>\n <dxo-group-panel [visible]=\"true\" [allowColumnDragging]=\"true\"></dxo-group-panel>\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-export [enabled]=\"true\" [allowExportSelectedData]=\"false\"></dxo-export>\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\n <dxo-sorting mode=\"single\"></dxo-sorting>\n <dxo-scrolling mode=\"standard\" showScrollbar=\"always\"></dxo-scrolling>\n\n <dxi-column dataField=\"OrderDocNum\" caption=\"Belge No\" [width]=\"110\"></dxi-column>\n <dxi-column dataField=\"CardCode\" caption=\"M\u00FC\u015Fteri Kodu\" [width]=\"140\"></dxi-column>\n <dxi-column dataField=\"CardName\" caption=\"M\u00FC\u015Fteri Ad\u0131\" [width]=\"220\"></dxi-column>\n <dxi-column dataField=\"ItemCode\" caption=\"Kalem Kodu\" [width]=\"140\"></dxi-column>\n <dxi-column dataField=\"ItemName\" caption=\"Kalem Ad\u0131\"></dxi-column>\n <dxi-column dataField=\"RequestedQty\" caption=\"Talep Edilen\" dataType=\"number\" format=\"#,##0.##\" [width]=\"120\"></dxi-column>\n <dxi-column dataField=\"ShortQty\" caption=\"Eksik Miktar\" dataType=\"number\" format=\"#,##0.##\" [width]=\"120\"></dxi-column>\n\n <dxo-summary>\n <dxi-total-item column=\"ShortQty\" summaryType=\"sum\" displayFormat=\"Toplam Eksik: {0}\" valueFormat=\"#,##0.##\"></dxi-total-item>\n </dxo-summary>\n </dx-data-grid>\n </div>\n </div>\n\n <div class=\"card\" *ngIf=\"viewMode === 'ozet'\">\n <div class=\"card-body\">\n <dx-data-grid\n #dxSummaryInstance\n [dataSource]=\"summaryDataSource\"\n [showRowLines]=\"true\"\n [showBorders]=\"true\"\n [hoverStateEnabled]=\"true\"\n [allowColumnResizing]=\"true\"\n columnResizingMode=\"widget\"\n [allowColumnReordering]=\"true\"\n [columnAutoWidth]=\"true\"\n style=\"height: 70vh;\"\n >\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [allowedPageSizes]=\"[20, 50, 100]\" [showNavigationButtons]=\"true\" [showPageSizeSelector]=\"true\"></dxo-pager>\n <dxo-paging [pageSize]=\"20\"></dxo-paging>\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-export [enabled]=\"true\" [allowExportSelectedData]=\"false\"></dxo-export>\n <dxo-sorting mode=\"single\"></dxo-sorting>\n <dxo-scrolling mode=\"standard\" showScrollbar=\"always\"></dxo-scrolling>\n\n <dxi-column dataField=\"ItemCode\" caption=\"Kalem Kodu\" [width]=\"160\"></dxi-column>\n <dxi-column dataField=\"ItemName\" caption=\"Kalem Ad\u0131\"></dxi-column>\n <dxi-column dataField=\"TotalShortQty\" caption=\"Toplam Eksik\" dataType=\"number\" format=\"#,##0.##\" [width]=\"140\" sortOrder=\"desc\"></dxi-column>\n <dxi-column dataField=\"OrderCount\" caption=\"Sipari\u015F Say\u0131s\u0131\" dataType=\"number\" [width]=\"130\"></dxi-column>\n </dx-data-grid>\n </div>\n </div>\n\n</abp-page>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5$1.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i6.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: i7.DxoColumnChooserComponent, selector: "dxo-column-chooser", inputs: ["allowSearch", "emptyPanelText", "enabled", "height", "mode", "searchTimeout", "sortOrder", "title", "width"] }, { kind: "component", type: i7.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: i7.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "dataSource", "groupInterval", "height", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i7.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "svgToCanvas", "allowExportSelectedData", "texts"] }, { kind: "component", type: i7.DxoFilterPanelComponent, selector: "dxo-filter-panel", inputs: ["customizeText", "filterEnabled", "texts", "visible"], outputs: ["filterEnabledChange"] }, { kind: "component", type: i7.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i7.DxoGroupPanelComponent, selector: "dxo-group-panel", inputs: ["allowColumnDragging", "emptyPanelText", "visible"], outputs: ["visibleChange"] }, { kind: "component", type: i7.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i7.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i7.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i7.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "component", type: i7.DxoSummaryComponent, selector: "dxo-summary", inputs: ["calculateCustomSummary", "groupItems", "recalculateWhileEditing", "skipEmptyValues", "texts", "totalItems"] }, { kind: "component", type: i7.DxiTotalItemComponent, selector: "dxi-total-item", inputs: ["alignment", "column", "cssClass", "customizeText", "displayFormat", "name", "showInColumn", "skipEmptyValues", "summaryType", "valueFormat"] }] });
1707
1721
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ShortagesComponent, decorators: [{
1708
1722
  type: Component,
1709
1723
  args: [{ selector: 'lib-shortages', template: "<abp-page [title]=\"'Fark Listesi'\">\n\n <div class=\"mb-3 d-flex flex-wrap align-items-center gap-2\">\n <div class=\"btn-group me-3\" role=\"group\">\n <button\n type=\"button\"\n class=\"btn btn-sm\"\n [ngClass]=\"viewMode === 'detay' ? 'btn-primary' : 'btn-outline-primary'\"\n (click)=\"setViewMode('detay')\"\n >\n Detay (Sipari\u015F Baz\u0131nda)\n </button>\n <button\n type=\"button\"\n class=\"btn btn-sm\"\n [ngClass]=\"viewMode === 'ozet' ? 'btn-primary' : 'btn-outline-primary'\"\n (click)=\"setViewMode('ozet')\"\n >\n \u00D6zet (Kalem Baz\u0131nda)\n </button>\n </div>\n\n <span class=\"badge bg-light text-dark border\" [class.border-primary]=\"!activeOrderType\" style=\"cursor:pointer\" (click)=\"activeOrderType = null; load()\">\n T\u00FCm\u00FC\n </span>\n <span class=\"badge\" [ngClass]=\"activeOrderType === '1' ? 'bg-primary' : 'bg-light text-dark border'\" style=\"cursor:pointer\" (click)=\"toggleOrderType('1')\">\n Sanayi Sipari\u015Fleri\n </span>\n <span class=\"badge\" [ngClass]=\"activeOrderType === '2' ? 'bg-primary' : 'bg-light text-dark border'\" style=\"cursor:pointer\" (click)=\"toggleOrderType('2')\">\n Da\u011F\u0131t\u0131m Sipari\u015Fleri\n </span>\n <span class=\"badge\" [ngClass]=\"activeOrderType === '3' ? 'bg-primary' : 'bg-light text-dark border'\" style=\"cursor:pointer\" (click)=\"toggleOrderType('3')\">\n Depo Talepleri\n </span>\n\n <button class=\"btn btn-sm btn-outline-secondary ms-auto\" (click)=\"onRefresh()\" [disabled]=\"isLoading\">\n <i class=\"fa fa-redo\"></i> Yenile\n </button>\n </div>\n\n <div class=\"card\" *ngIf=\"viewMode === 'detay'\">\n <div class=\"card-body\">\n <dx-data-grid\n #dxDetailInstance\n [dataSource]=\"detailDataSource\"\n [showRowLines]=\"true\"\n [showBorders]=\"true\"\n [hoverStateEnabled]=\"true\"\n [allowColumnResizing]=\"true\"\n columnResizingMode=\"widget\"\n [allowColumnReordering]=\"true\"\n [columnAutoWidth]=\"true\"\n [columnHidingEnabled]=\"true\"\n style=\"height: 70vh;\"\n >\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [allowedPageSizes]=\"[20, 50, 100]\" [showNavigationButtons]=\"true\" [showPageSizeSelector]=\"true\"></dxo-pager>\n <dxo-paging [pageSize]=\"20\"></dxo-paging>\n <dxo-column-chooser [allowSearch]=\"true\" [enabled]=\"true\" mode=\"select\"></dxo-column-chooser>\n <dxo-group-panel [visible]=\"true\" [allowColumnDragging]=\"true\"></dxo-group-panel>\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-export [enabled]=\"true\" [allowExportSelectedData]=\"false\"></dxo-export>\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\n <dxo-sorting mode=\"single\"></dxo-sorting>\n <dxo-scrolling mode=\"standard\" showScrollbar=\"always\"></dxo-scrolling>\n\n <dxi-column dataField=\"OrderDocNum\" caption=\"Belge No\" [width]=\"110\"></dxi-column>\n <dxi-column dataField=\"CardCode\" caption=\"M\u00FC\u015Fteri Kodu\" [width]=\"140\"></dxi-column>\n <dxi-column dataField=\"CardName\" caption=\"M\u00FC\u015Fteri Ad\u0131\" [width]=\"220\"></dxi-column>\n <dxi-column dataField=\"ItemCode\" caption=\"Kalem Kodu\" [width]=\"140\"></dxi-column>\n <dxi-column dataField=\"ItemName\" caption=\"Kalem Ad\u0131\"></dxi-column>\n <dxi-column dataField=\"RequestedQty\" caption=\"Talep Edilen\" dataType=\"number\" format=\"#,##0.##\" [width]=\"120\"></dxi-column>\n <dxi-column dataField=\"ShortQty\" caption=\"Eksik Miktar\" dataType=\"number\" format=\"#,##0.##\" [width]=\"120\"></dxi-column>\n\n <dxo-summary>\n <dxi-total-item column=\"ShortQty\" summaryType=\"sum\" displayFormat=\"Toplam Eksik: {0}\" valueFormat=\"#,##0.##\"></dxi-total-item>\n </dxo-summary>\n </dx-data-grid>\n </div>\n </div>\n\n <div class=\"card\" *ngIf=\"viewMode === 'ozet'\">\n <div class=\"card-body\">\n <dx-data-grid\n #dxSummaryInstance\n [dataSource]=\"summaryDataSource\"\n [showRowLines]=\"true\"\n [showBorders]=\"true\"\n [hoverStateEnabled]=\"true\"\n [allowColumnResizing]=\"true\"\n columnResizingMode=\"widget\"\n [allowColumnReordering]=\"true\"\n [columnAutoWidth]=\"true\"\n style=\"height: 70vh;\"\n >\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [allowedPageSizes]=\"[20, 50, 100]\" [showNavigationButtons]=\"true\" [showPageSizeSelector]=\"true\"></dxo-pager>\n <dxo-paging [pageSize]=\"20\"></dxo-paging>\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-export [enabled]=\"true\" [allowExportSelectedData]=\"false\"></dxo-export>\n <dxo-sorting mode=\"single\"></dxo-sorting>\n <dxo-scrolling mode=\"standard\" showScrollbar=\"always\"></dxo-scrolling>\n\n <dxi-column dataField=\"ItemCode\" caption=\"Kalem Kodu\" [width]=\"160\"></dxi-column>\n <dxi-column dataField=\"ItemName\" caption=\"Kalem Ad\u0131\"></dxi-column>\n <dxi-column dataField=\"TotalShortQty\" caption=\"Toplam Eksik\" dataType=\"number\" format=\"#,##0.##\" [width]=\"140\" sortOrder=\"desc\"></dxi-column>\n <dxi-column dataField=\"OrderCount\" caption=\"Sipari\u015F Say\u0131s\u0131\" dataType=\"number\" [width]=\"130\"></dxi-column>\n </dx-data-grid>\n </div>\n </div>\n\n</abp-page>\n" }]
@@ -1900,7 +1914,8 @@ class QuantityCorrectionService {
1900
1914
  */
1901
1915
  this.getLinesByBoxBarcode = (boxBarcode) => this.restService.request({
1902
1916
  method: 'GET',
1903
- url: `/api/smart-warehouse/sap-quantity-correction/get-lines-by-box/${boxBarcode}`,
1917
+ url: '/api/smart-warehouse/sap-quantity-correction/get-lines-by-box',
1918
+ params: { boxBarcode },
1904
1919
  }, { apiName: this.apiName });
1905
1920
  /**
1906
1921
  * "Raf ve Sipariş" modu — önizleme (hiçbir şey yazmaz)
@@ -2157,7 +2172,7 @@ class QuantityCorrectionComponent {
2157
2172
  }
2158
2173
  }
2159
2174
  QuantityCorrectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: QuantityCorrectionComponent, deps: [{ token: QuantityCorrectionService }, { token: i2.ConfirmationService }, { token: i2.ToasterService }], target: i0.ɵɵFactoryTarget.Component });
2160
- QuantityCorrectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: QuantityCorrectionComponent, selector: "lib-quantity-correction", ngImport: i0, template: "<abp-page [title]=\"'Al\u0131nacak Miktar D\u00FCzeltme'\">\n <div class=\"quantity-correction-container\">\n <div class=\"quantity-correction-layout\">\n <div class=\"qc-form-card\">\n\n <!-- Kasa Barkodu Giri\u015Fi -->\n <div class=\"form-section\">\n <label class=\"section-label\" for=\"boxBarcodeInput\">Kasa Kodu</label>\n <input type=\"text\" class=\"form-control form-input\" id=\"boxBarcodeInput\"\n [ngModel]=\"boxBarcode\"\n (ngModelChange)=\"onBoxBarcodeChange($event)\"\n (keydown.enter)=\"onBoxBarcodeEnterKeydown()\"\n (blur)=\"onBoxBarcodeBlur()\"\n placeholder=\"Kasa barkodunu girin veya taray\u0131n...\"\n [disabled]=\"isLoading\" />\n </div>\n\n <!-- Y\u00FCkleniyor -->\n <div class=\"form-section\" *ngIf=\"isLoading\">\n <div class=\"content-loading\">\n <i class=\"fa fa-spinner fa-spin\"></i> Kasa i\u00E7eri\u011Fi y\u00FCkleniyor...\n </div>\n </div>\n\n <!-- Sat\u0131r Listesi (Grid) -->\n <div class=\"form-section reservation-section\" *ngIf=\"lines.length > 0 && !isLoading\">\n <label class=\"section-label\">Kasadaki G\u00F6rev Sat\u0131rlar\u0131</label>\n <div class=\"reservation-table-wrap\">\n <table class=\"table table-bordered table-hover table-sm\">\n <thead class=\"table-header\">\n <tr>\n <th>Sipari\u015F No</th>\n <th>\u00DCr\u00FCn Kodu</th>\n <th>\u00DCr\u00FCn Ad\u0131</th>\n <th>Parti</th>\n <th>Miktar</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let l of lines\"\n (click)=\"onSelectLine(l)\"\n [class.selected-row]=\"selectedLine?.ReservationCode === l.ReservationCode\"\n class=\"clickable-row\">\n <td>{{ l.OrderDocNum }}</td>\n <td>{{ l.ItemCode }}</td>\n <td>{{ l.ItemName }}</td>\n <td>{{ l.BatchNumber }}</td>\n <td class=\"text-end\">{{ l.CurrentQuantity }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <!-- Bo\u015F sonu\u00E7 -->\n <div class=\"form-section\" *ngIf=\"hasSearched && lastSearchedBoxBarcode && lines.length === 0 && !isLoading\">\n <div class=\"content-empty\">\n <i class=\"fa fa-info-circle\"></i> Bu kasada a\u00E7\u0131k g\u00F6rev bulunamad\u0131.\n </div>\n </div>\n\n <!-- D\u00FCzenleme Paneli (Sat\u0131r se\u00E7ilince aktif) -->\n <div *ngIf=\"selectedLine\" class=\"edit-panel\">\n <hr class=\"form-divider\" />\n\n <!-- \u00DCr\u00FCn Bilgileri (readonly) -->\n <div class=\"form-section product-info\">\n <div class=\"info-row\">\n <span class=\"info-label\">\u00DCr\u00FCn Kodu:</span>\n <span class=\"info-value\">{{ selectedLine.ItemCode }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"info-label\">\u00DCr\u00FCn Ad\u0131:</span>\n <span class=\"info-value\">{{ selectedLine.ItemName }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"info-label\">Beklenen Miktar:</span>\n <span class=\"info-value info-qty\">{{ selectedLine.CurrentQuantity }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"info-label\">Sipari\u015F No:</span>\n <span class=\"info-value\">{{ selectedLine.OrderDocNum }}</span>\n </div>\n </div>\n\n <hr class=\"form-divider\" />\n\n <!-- G\u00FCncelleme Tipi - Radio Buttons -->\n <div class=\"form-section\">\n <label class=\"section-label\">G\u00FCncelleme Tipi</label>\n <div class=\"radio-group\">\n <label class=\"radio-option\">\n <input type=\"radio\" name=\"updateType\"\n value=\"shelfAndOrder\"\n [(ngModel)]=\"updateType\" />\n <span class=\"radio-text\">Raf ve Sipari\u015F</span>\n </label>\n <label class=\"radio-option\">\n <input type=\"radio\" name=\"updateType\"\n value=\"orderOnly\"\n [(ngModel)]=\"updateType\" />\n <span class=\"radio-text\">Sadece Sipari\u015F</span>\n </label>\n </div>\n </div>\n\n <hr class=\"form-divider\" />\n\n <!-- Miktar -->\n <div class=\"form-section\">\n <label class=\"section-label\" for=\"newQuantityInput\">\n {{ updateType === 'orderOnly' ? 'Yeni Sipari\u015F Miktar\u0131' : 'Kasada Say\u0131lan Miktar' }}\n </label>\n <input type=\"number\" class=\"form-control form-input\" id=\"newQuantityInput\"\n [(ngModel)]=\"newQuantity\"\n (keydown.enter)=\"onUpdate()\"\n placeholder=\"Miktar\u0131 girin...\"\n min=\"0\" />\n </div>\n\n <hr class=\"form-divider\" />\n\n <!-- Butonlar -->\n <div class=\"form-section button-group\">\n <button class=\"btn btn-action-success btn-sm\" (click)=\"onUpdate()\"\n [disabled]=\"isSaving || newQuantity === null || newQuantity < 0\">\n <i class=\"fa\" [ngClass]=\"isSaving ? 'fa-spinner fa-spin' : 'fa-check'\"></i>\n {{ isSaving ? 'G\u00FCncelleniyor...' : 'G\u00FCncelle' }}\n </button>\n <button class=\"btn btn-action-outline btn-sm\" (click)=\"onClear()\" [disabled]=\"isSaving\">\n <i class=\"fa fa-eraser\"></i> Temizle\n </button>\n </div>\n </div>\n\n </div>\n </div>\n </div>\n</abp-page>\n", styles: ["lib-quantity-correction .abp-page-content{display:block!important;flex:unset!important;min-height:unset!important;height:auto!important}lib-quantity-correction .abp-page-content>.row{display:block!important;flex:unset!important;min-height:unset!important}lib-quantity-correction .abp-page-content>.row>.col,lib-quantity-correction .abp-page-content>.row>[class*=col-]{display:block!important;flex:unset!important;min-height:unset!important}.quantity-correction-container{padding:1rem}.quantity-correction-layout{max-width:800px;margin:0 auto}.qc-form-card{background:#fff;border-radius:8px;box-shadow:0 2px 8px #00000014;padding:1.5rem}.form-section{margin-bottom:1rem}.section-label{font-weight:600;font-size:.9rem;color:#333;margin-bottom:.4rem;display:block}.form-input{font-size:1rem;padding:.5rem .75rem}.content-loading{color:#666;padding:.5rem 0;font-size:.9rem}.content-empty{background:#f8f9fa;border:1px solid #e2e6ea;border-radius:6px;padding:.75rem 1rem;color:#6c757d;font-size:.9rem}.reservation-section{margin-bottom:.25rem}.reservation-table-wrap{overflow-x:auto;width:100%}.reservation-section .table{margin-bottom:0}.table-header{background-color:#f0f2f5}.table-header th{font-weight:600;font-size:.85rem;color:#444;white-space:nowrap}.clickable-row{cursor:pointer;transition:background-color .15s}.clickable-row:hover{background-color:#e9f5ff}.selected-row{background-color:#cce5ff!important;font-weight:500}.edit-panel{margin-top:0}.product-info{background:#f8f9fa;border-radius:6px;padding:.75rem 1rem}.info-row{display:flex;gap:.5rem;margin-bottom:.3rem;align-items:baseline}.info-label{font-weight:600;font-size:.85rem;color:#555;min-width:120px}.info-value{font-size:.9rem;color:#222}.info-qty{font-weight:700;color:#0d6efd}.radio-group{display:flex;gap:1.5rem}.radio-option{display:flex;align-items:center;gap:.4rem;cursor:pointer;font-size:.9rem}.radio-text{color:#333}.form-divider{border:none;border-top:1px solid #e9ecef;margin:.75rem 0}.button-group{display:flex;gap:.5rem}.btn-action-success{background-color:#28a745;border-color:#28a745;color:#fff;padding:.4rem 1.2rem;font-size:.9rem}.btn-action-success:hover:not(:disabled){background-color:#218838}.btn-action-success:disabled{opacity:.6}.btn-action-outline{background-color:transparent;border:1px solid #6c757d;color:#6c757d;padding:.4rem 1.2rem;font-size:.9rem}.btn-action-outline:hover:not(:disabled){background-color:#f8f9fa}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$1.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }], encapsulation: i0.ViewEncapsulation.None });
2175
+ QuantityCorrectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: QuantityCorrectionComponent, selector: "lib-quantity-correction", ngImport: i0, template: "<abp-page [title]=\"'Al\u0131nacak Miktar D\u00FCzeltme'\">\n <div class=\"quantity-correction-container\">\n <div class=\"quantity-correction-layout\">\n <div class=\"qc-form-card\">\n\n <!-- Kasa Barkodu Giri\u015Fi -->\n <div class=\"form-section\">\n <label class=\"section-label\" for=\"boxBarcodeInput\">Kasa Kodu</label>\n <input type=\"text\" class=\"form-control form-input\" id=\"boxBarcodeInput\"\n [ngModel]=\"boxBarcode\"\n (ngModelChange)=\"onBoxBarcodeChange($event)\"\n (keydown.enter)=\"onBoxBarcodeEnterKeydown()\"\n (blur)=\"onBoxBarcodeBlur()\"\n placeholder=\"Kasa barkodunu girin veya taray\u0131n...\"\n [disabled]=\"isLoading\" />\n </div>\n\n <!-- Y\u00FCkleniyor -->\n <div class=\"form-section\" *ngIf=\"isLoading\">\n <div class=\"content-loading\">\n <i class=\"fa fa-spinner fa-spin\"></i> Kasa i\u00E7eri\u011Fi y\u00FCkleniyor...\n </div>\n </div>\n\n <!-- Sat\u0131r Listesi (Grid) -->\n <div class=\"form-section reservation-section\" *ngIf=\"lines.length > 0 && !isLoading\">\n <label class=\"section-label\">Kasadaki G\u00F6rev Sat\u0131rlar\u0131</label>\n <div class=\"reservation-table-wrap\">\n <table class=\"table table-bordered table-hover table-sm\">\n <thead class=\"table-header\">\n <tr>\n <th>Sipari\u015F No</th>\n <th>\u00DCr\u00FCn Kodu</th>\n <th>\u00DCr\u00FCn Ad\u0131</th>\n <th>Parti</th>\n <th>Miktar</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let l of lines\"\n (click)=\"onSelectLine(l)\"\n [class.selected-row]=\"selectedLine?.ReservationCode === l.ReservationCode\"\n class=\"clickable-row\">\n <td>{{ l.OrderDocNum }}</td>\n <td>{{ l.ItemCode }}</td>\n <td>{{ l.ItemName }}</td>\n <td>{{ l.BatchNumber }}</td>\n <td class=\"text-end\">{{ l.CurrentQuantity }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <!-- Bo\u015F sonu\u00E7 -->\n <div class=\"form-section\" *ngIf=\"hasSearched && lastSearchedBoxBarcode && lines.length === 0 && !isLoading\">\n <div class=\"content-empty\">\n <i class=\"fa fa-info-circle\"></i> Bu kasada a\u00E7\u0131k g\u00F6rev bulunamad\u0131.\n </div>\n </div>\n\n <!-- D\u00FCzenleme Paneli (Sat\u0131r se\u00E7ilince aktif) -->\n <div *ngIf=\"selectedLine\" class=\"edit-panel\">\n <hr class=\"form-divider\" />\n\n <!-- \u00DCr\u00FCn Bilgileri (readonly) -->\n <div class=\"form-section product-info\">\n <div class=\"info-row\">\n <span class=\"info-label\">\u00DCr\u00FCn Kodu:</span>\n <span class=\"info-value\">{{ selectedLine.ItemCode }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"info-label\">\u00DCr\u00FCn Ad\u0131:</span>\n <span class=\"info-value\">{{ selectedLine.ItemName }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"info-label\">Beklenen Miktar:</span>\n <span class=\"info-value info-qty\">{{ selectedLine.CurrentQuantity }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"info-label\">Sipari\u015F No:</span>\n <span class=\"info-value\">{{ selectedLine.OrderDocNum }}</span>\n </div>\n </div>\n\n <hr class=\"form-divider\" />\n\n <!-- G\u00FCncelleme Tipi - Radio Buttons -->\n <div class=\"form-section\">\n <label class=\"section-label\">G\u00FCncelleme Tipi</label>\n <div class=\"radio-group\">\n <label class=\"radio-option\">\n <input type=\"radio\" name=\"updateType\"\n value=\"shelfAndOrder\"\n [(ngModel)]=\"updateType\" />\n <span class=\"radio-text\">Raf ve Sipari\u015F</span>\n </label>\n <label class=\"radio-option\">\n <input type=\"radio\" name=\"updateType\"\n value=\"orderOnly\"\n [(ngModel)]=\"updateType\" />\n <span class=\"radio-text\">Sadece Sipari\u015F</span>\n </label>\n </div>\n </div>\n\n <hr class=\"form-divider\" />\n\n <!-- Miktar -->\n <div class=\"form-section\">\n <label class=\"section-label\" for=\"newQuantityInput\">\n {{ updateType === 'orderOnly' ? 'Yeni Sipari\u015F Miktar\u0131' : 'Kasada Say\u0131lan Miktar' }}\n </label>\n <input type=\"number\" class=\"form-control form-input\" id=\"newQuantityInput\"\n [(ngModel)]=\"newQuantity\"\n (keydown.enter)=\"onUpdate()\"\n placeholder=\"Miktar\u0131 girin...\"\n min=\"0\" />\n </div>\n\n <hr class=\"form-divider\" />\n\n <!-- Butonlar -->\n <div class=\"form-section button-group\">\n <button class=\"btn btn-action-success btn-sm\" (click)=\"onUpdate()\"\n [disabled]=\"isSaving || newQuantity === null || newQuantity < 0\">\n <i class=\"fa\" [ngClass]=\"isSaving ? 'fa-spinner fa-spin' : 'fa-check'\"></i>\n {{ isSaving ? 'G\u00FCncelleniyor...' : 'G\u00FCncelle' }}\n </button>\n <button class=\"btn btn-action-outline btn-sm\" (click)=\"onClear()\" [disabled]=\"isSaving\">\n <i class=\"fa fa-eraser\"></i> Temizle\n </button>\n </div>\n </div>\n\n </div>\n </div>\n </div>\n</abp-page>\n", styles: ["lib-quantity-correction .abp-page-content{display:block!important;flex:unset!important;min-height:unset!important;height:auto!important}lib-quantity-correction .abp-page-content>.row{display:block!important;flex:unset!important;min-height:unset!important}lib-quantity-correction .abp-page-content>.row>.col,lib-quantity-correction .abp-page-content>.row>[class*=col-]{display:block!important;flex:unset!important;min-height:unset!important}.quantity-correction-container{padding:1rem}.quantity-correction-layout{max-width:800px;margin:0 auto}.qc-form-card{background:#fff;border-radius:8px;box-shadow:0 2px 8px #00000014;padding:1.5rem}.form-section{margin-bottom:1rem}.section-label{font-weight:600;font-size:.9rem;color:#333;margin-bottom:.4rem;display:block}.form-input{font-size:1rem;padding:.5rem .75rem}.content-loading{color:#666;padding:.5rem 0;font-size:.9rem}.content-empty{background:#f8f9fa;border:1px solid #e2e6ea;border-radius:6px;padding:.75rem 1rem;color:#6c757d;font-size:.9rem}.reservation-section{margin-bottom:.25rem}.reservation-table-wrap{overflow-x:auto;width:100%}.reservation-section .table{margin-bottom:0}.table-header{background-color:#f0f2f5}.table-header th{font-weight:600;font-size:.85rem;color:#444;white-space:nowrap}.clickable-row{cursor:pointer;transition:background-color .15s}.clickable-row:hover{background-color:#e9f5ff}.selected-row{background-color:#cce5ff!important;font-weight:500}.edit-panel{margin-top:0}.product-info{background:#f8f9fa;border-radius:6px;padding:.75rem 1rem}.info-row{display:flex;gap:.5rem;margin-bottom:.3rem;align-items:baseline}.info-label{font-weight:600;font-size:.85rem;color:#555;min-width:120px}.info-value{font-size:.9rem;color:#222}.info-qty{font-weight:700;color:#0d6efd}.radio-group{display:flex;gap:1.5rem}.radio-option{display:flex;align-items:center;gap:.4rem;cursor:pointer;font-size:.9rem}.radio-text{color:#333}.form-divider{border:none;border-top:1px solid #e9ecef;margin:.75rem 0}.button-group{display:flex;gap:.5rem}.btn-action-success{background-color:#28a745;border-color:#28a745;color:#fff;padding:.4rem 1.2rem;font-size:.9rem}.btn-action-success:hover:not(:disabled){background-color:#218838}.btn-action-success:disabled{opacity:.6}.btn-action-outline{background-color:transparent;border:1px solid #6c757d;color:#6c757d;padding:.4rem 1.2rem;font-size:.9rem}.btn-action-outline:hover:not(:disabled){background-color:#f8f9fa}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$1.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }], encapsulation: i0.ViewEncapsulation.None });
2161
2176
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: QuantityCorrectionComponent, decorators: [{
2162
2177
  type: Component,
2163
2178
  args: [{ selector: 'lib-quantity-correction', encapsulation: ViewEncapsulation.None, template: "<abp-page [title]=\"'Al\u0131nacak Miktar D\u00FCzeltme'\">\n <div class=\"quantity-correction-container\">\n <div class=\"quantity-correction-layout\">\n <div class=\"qc-form-card\">\n\n <!-- Kasa Barkodu Giri\u015Fi -->\n <div class=\"form-section\">\n <label class=\"section-label\" for=\"boxBarcodeInput\">Kasa Kodu</label>\n <input type=\"text\" class=\"form-control form-input\" id=\"boxBarcodeInput\"\n [ngModel]=\"boxBarcode\"\n (ngModelChange)=\"onBoxBarcodeChange($event)\"\n (keydown.enter)=\"onBoxBarcodeEnterKeydown()\"\n (blur)=\"onBoxBarcodeBlur()\"\n placeholder=\"Kasa barkodunu girin veya taray\u0131n...\"\n [disabled]=\"isLoading\" />\n </div>\n\n <!-- Y\u00FCkleniyor -->\n <div class=\"form-section\" *ngIf=\"isLoading\">\n <div class=\"content-loading\">\n <i class=\"fa fa-spinner fa-spin\"></i> Kasa i\u00E7eri\u011Fi y\u00FCkleniyor...\n </div>\n </div>\n\n <!-- Sat\u0131r Listesi (Grid) -->\n <div class=\"form-section reservation-section\" *ngIf=\"lines.length > 0 && !isLoading\">\n <label class=\"section-label\">Kasadaki G\u00F6rev Sat\u0131rlar\u0131</label>\n <div class=\"reservation-table-wrap\">\n <table class=\"table table-bordered table-hover table-sm\">\n <thead class=\"table-header\">\n <tr>\n <th>Sipari\u015F No</th>\n <th>\u00DCr\u00FCn Kodu</th>\n <th>\u00DCr\u00FCn Ad\u0131</th>\n <th>Parti</th>\n <th>Miktar</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let l of lines\"\n (click)=\"onSelectLine(l)\"\n [class.selected-row]=\"selectedLine?.ReservationCode === l.ReservationCode\"\n class=\"clickable-row\">\n <td>{{ l.OrderDocNum }}</td>\n <td>{{ l.ItemCode }}</td>\n <td>{{ l.ItemName }}</td>\n <td>{{ l.BatchNumber }}</td>\n <td class=\"text-end\">{{ l.CurrentQuantity }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <!-- Bo\u015F sonu\u00E7 -->\n <div class=\"form-section\" *ngIf=\"hasSearched && lastSearchedBoxBarcode && lines.length === 0 && !isLoading\">\n <div class=\"content-empty\">\n <i class=\"fa fa-info-circle\"></i> Bu kasada a\u00E7\u0131k g\u00F6rev bulunamad\u0131.\n </div>\n </div>\n\n <!-- D\u00FCzenleme Paneli (Sat\u0131r se\u00E7ilince aktif) -->\n <div *ngIf=\"selectedLine\" class=\"edit-panel\">\n <hr class=\"form-divider\" />\n\n <!-- \u00DCr\u00FCn Bilgileri (readonly) -->\n <div class=\"form-section product-info\">\n <div class=\"info-row\">\n <span class=\"info-label\">\u00DCr\u00FCn Kodu:</span>\n <span class=\"info-value\">{{ selectedLine.ItemCode }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"info-label\">\u00DCr\u00FCn Ad\u0131:</span>\n <span class=\"info-value\">{{ selectedLine.ItemName }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"info-label\">Beklenen Miktar:</span>\n <span class=\"info-value info-qty\">{{ selectedLine.CurrentQuantity }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"info-label\">Sipari\u015F No:</span>\n <span class=\"info-value\">{{ selectedLine.OrderDocNum }}</span>\n </div>\n </div>\n\n <hr class=\"form-divider\" />\n\n <!-- G\u00FCncelleme Tipi - Radio Buttons -->\n <div class=\"form-section\">\n <label class=\"section-label\">G\u00FCncelleme Tipi</label>\n <div class=\"radio-group\">\n <label class=\"radio-option\">\n <input type=\"radio\" name=\"updateType\"\n value=\"shelfAndOrder\"\n [(ngModel)]=\"updateType\" />\n <span class=\"radio-text\">Raf ve Sipari\u015F</span>\n </label>\n <label class=\"radio-option\">\n <input type=\"radio\" name=\"updateType\"\n value=\"orderOnly\"\n [(ngModel)]=\"updateType\" />\n <span class=\"radio-text\">Sadece Sipari\u015F</span>\n </label>\n </div>\n </div>\n\n <hr class=\"form-divider\" />\n\n <!-- Miktar -->\n <div class=\"form-section\">\n <label class=\"section-label\" for=\"newQuantityInput\">\n {{ updateType === 'orderOnly' ? 'Yeni Sipari\u015F Miktar\u0131' : 'Kasada Say\u0131lan Miktar' }}\n </label>\n <input type=\"number\" class=\"form-control form-input\" id=\"newQuantityInput\"\n [(ngModel)]=\"newQuantity\"\n (keydown.enter)=\"onUpdate()\"\n placeholder=\"Miktar\u0131 girin...\"\n min=\"0\" />\n </div>\n\n <hr class=\"form-divider\" />\n\n <!-- Butonlar -->\n <div class=\"form-section button-group\">\n <button class=\"btn btn-action-success btn-sm\" (click)=\"onUpdate()\"\n [disabled]=\"isSaving || newQuantity === null || newQuantity < 0\">\n <i class=\"fa\" [ngClass]=\"isSaving ? 'fa-spinner fa-spin' : 'fa-check'\"></i>\n {{ isSaving ? 'G\u00FCncelleniyor...' : 'G\u00FCncelle' }}\n </button>\n <button class=\"btn btn-action-outline btn-sm\" (click)=\"onClear()\" [disabled]=\"isSaving\">\n <i class=\"fa fa-eraser\"></i> Temizle\n </button>\n </div>\n </div>\n\n </div>\n </div>\n </div>\n</abp-page>\n", styles: ["lib-quantity-correction .abp-page-content{display:block!important;flex:unset!important;min-height:unset!important;height:auto!important}lib-quantity-correction .abp-page-content>.row{display:block!important;flex:unset!important;min-height:unset!important}lib-quantity-correction .abp-page-content>.row>.col,lib-quantity-correction .abp-page-content>.row>[class*=col-]{display:block!important;flex:unset!important;min-height:unset!important}.quantity-correction-container{padding:1rem}.quantity-correction-layout{max-width:800px;margin:0 auto}.qc-form-card{background:#fff;border-radius:8px;box-shadow:0 2px 8px #00000014;padding:1.5rem}.form-section{margin-bottom:1rem}.section-label{font-weight:600;font-size:.9rem;color:#333;margin-bottom:.4rem;display:block}.form-input{font-size:1rem;padding:.5rem .75rem}.content-loading{color:#666;padding:.5rem 0;font-size:.9rem}.content-empty{background:#f8f9fa;border:1px solid #e2e6ea;border-radius:6px;padding:.75rem 1rem;color:#6c757d;font-size:.9rem}.reservation-section{margin-bottom:.25rem}.reservation-table-wrap{overflow-x:auto;width:100%}.reservation-section .table{margin-bottom:0}.table-header{background-color:#f0f2f5}.table-header th{font-weight:600;font-size:.85rem;color:#444;white-space:nowrap}.clickable-row{cursor:pointer;transition:background-color .15s}.clickable-row:hover{background-color:#e9f5ff}.selected-row{background-color:#cce5ff!important;font-weight:500}.edit-panel{margin-top:0}.product-info{background:#f8f9fa;border-radius:6px;padding:.75rem 1rem}.info-row{display:flex;gap:.5rem;margin-bottom:.3rem;align-items:baseline}.info-label{font-weight:600;font-size:.85rem;color:#555;min-width:120px}.info-value{font-size:.9rem;color:#222}.info-qty{font-weight:700;color:#0d6efd}.radio-group{display:flex;gap:1.5rem}.radio-option{display:flex;align-items:center;gap:.4rem;cursor:pointer;font-size:.9rem}.radio-text{color:#333}.form-divider{border:none;border-top:1px solid #e9ecef;margin:.75rem 0}.button-group{display:flex;gap:.5rem}.btn-action-success{background-color:#28a745;border-color:#28a745;color:#fff;padding:.4rem 1.2rem;font-size:.9rem}.btn-action-success:hover:not(:disabled){background-color:#218838}.btn-action-success:disabled{opacity:.6}.btn-action-outline{background-color:transparent;border:1px solid #6c757d;color:#6c757d;padding:.4rem 1.2rem;font-size:.9rem}.btn-action-outline:hover:not(:disabled){background-color:#f8f9fa}\n"] }]
@@ -2192,6 +2207,111 @@ function loadQuantityCorrectionModuleAsChild() {
2192
2207
  return Promise.resolve(QuantityCorrectionModule);
2193
2208
  }
2194
2209
 
2210
+ const DEFAULT_PAGE_SIZE = 50;
2211
+ /**
2212
+ * Dummy Kasa (depo yeri) seçim modalı.
2213
+ *
2214
+ * Depo yeri sayısı bir selectbox'a sığmayacak kadar çok olabildiği için grid ile çalışır ve
2215
+ * sayfalama SUNUCU tarafındadır: grid her sayfa değişiminde yalnızca o sayfayı ister. Bu sayede
2216
+ * "kaynak depo seçilince tüm depo yerlerini combobox'a doldur" davranışının yarattığı donma
2217
+ * ortadan kalkar — veriler yalnızca modal açıldığında ve sayfa sayfa yüklenir.
2218
+ */
2219
+ class BinLocationPickerComponent {
2220
+ constructor(warehouseService, toaster) {
2221
+ this.warehouseService = warehouseService;
2222
+ this.toaster = toaster;
2223
+ /** Seçim yapılacak kaynak depo kodu; sahibi bileşen ngModel ile geçirir. */
2224
+ this.warehouseCode = '';
2225
+ /** İki yönlü bağlanır; sahibi bileşen modalı bunu true yaparak açar. */
2226
+ this.visible = false;
2227
+ this.visibleChange = new EventEmitter();
2228
+ this.selected = new EventEmitter();
2229
+ this.pageSize = DEFAULT_PAGE_SIZE;
2230
+ this.allowedPageSizes = [25, 50, 100];
2231
+ this.searchTerm = '';
2232
+ this.isSearching = false;
2233
+ /** Her tuş vuruşunda sunucuya gitmemek için arama debounce edilir. */
2234
+ this.searchInput = new Subject();
2235
+ this.dataSource = new DataSource({
2236
+ store: new CustomStore({
2237
+ key: 'BinCode',
2238
+ // Grid, filtreleme/sıralamayı sunucuya bırakır; yalnızca skip/take gelir.
2239
+ loadMode: 'processed',
2240
+ load: loadOptions => this.loadPage(loadOptions),
2241
+ }),
2242
+ paginate: true,
2243
+ pageSize: DEFAULT_PAGE_SIZE,
2244
+ requireTotalCount: true,
2245
+ });
2246
+ this.searchInput.pipe(debounceTime(350), distinctUntilChanged()).subscribe(() => {
2247
+ // Yeni aramada ilk sayfaya dönülür, aksi halde kullanıcı boş bir sayfada kalabilir.
2248
+ this.dataSource.pageIndex(0);
2249
+ this.dataSource.reload();
2250
+ });
2251
+ }
2252
+ /** Sahibi bileşen modalı açmadan hemen önce çağırır. */
2253
+ open() {
2254
+ // Arama kutusu boş açılır ki kullanıcı istediğinde doğrudan listeyi gezebilsin.
2255
+ this.searchTerm = '';
2256
+ this.visible = true;
2257
+ this.visibleChange.emit(true);
2258
+ this.dataSource.pageIndex(0);
2259
+ this.dataSource.reload();
2260
+ }
2261
+ onSearchTermChange(term) {
2262
+ this.searchInput.next(term);
2263
+ }
2264
+ onRowDoubleClick(event) {
2265
+ if (event === null || event === void 0 ? void 0 : event.data) {
2266
+ this.select(event.data);
2267
+ }
2268
+ }
2269
+ select(bin) {
2270
+ this.selected.emit(bin);
2271
+ this.close();
2272
+ }
2273
+ close() {
2274
+ this.visible = false;
2275
+ this.visibleChange.emit(false);
2276
+ }
2277
+ loadPage(loadOptions) {
2278
+ var _a, _b, _c, _d, _e, _f;
2279
+ return __awaiter(this, void 0, void 0, function* () {
2280
+ if (!this.warehouseCode) {
2281
+ return { data: [], totalCount: 0 };
2282
+ }
2283
+ const skip = (_a = loadOptions === null || loadOptions === void 0 ? void 0 : loadOptions.skip) !== null && _a !== void 0 ? _a : 0;
2284
+ const take = (_b = loadOptions === null || loadOptions === void 0 ? void 0 : loadOptions.take) !== null && _b !== void 0 ? _b : DEFAULT_PAGE_SIZE;
2285
+ this.isSearching = true;
2286
+ try {
2287
+ const result = yield firstValueFrom(this.warehouseService.searchBinLocationsByWarehouse(this.warehouseCode, this.searchTerm.trim(), skip, take));
2288
+ return { data: (_c = result === null || result === void 0 ? void 0 : result.Items) !== null && _c !== void 0 ? _c : [], totalCount: (_d = result === null || result === void 0 ? void 0 : result.TotalCount) !== null && _d !== void 0 ? _d : 0 };
2289
+ }
2290
+ catch (error) {
2291
+ this.toaster.error(((_f = (_e = error === null || error === void 0 ? void 0 : error.error) === null || _e === void 0 ? void 0 : _e.error) === null || _f === void 0 ? void 0 : _f.message) || 'Depo yerleri yüklenirken bir hata oluştu.');
2292
+ return { data: [], totalCount: 0 };
2293
+ }
2294
+ finally {
2295
+ this.isSearching = false;
2296
+ }
2297
+ });
2298
+ }
2299
+ }
2300
+ BinLocationPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BinLocationPickerComponent, deps: [{ token: WarehouseService }, { token: i2.ToasterService }], target: i0.ɵɵFactoryTarget.Component });
2301
+ BinLocationPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: BinLocationPickerComponent, selector: "lib-bin-location-picker", inputs: { warehouseCode: "warehouseCode", visible: "visible" }, outputs: { visibleChange: "visibleChange", selected: "selected" }, ngImport: i0, template: "<abp-modal [(visible)]=\"visible\" [options]=\"{ size: 'lg' }\" (disappear)=\"close()\">\n <ng-template #abpHeader>\n <h3>Dummy Kasa Kodu Se\u00E7</h3>\n </ng-template>\n\n <ng-template #abpBody>\n <div class=\"mb-2\">\n <div class=\"input-group input-group-sm\">\n <span class=\"input-group-text\">\n <i class=\"fa\" [ngClass]=\"isSearching ? 'fa-spinner fa-spin' : 'fa-search'\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n placeholder=\"Depo yeri kodu ile ara (bo\u015F b\u0131rak\u0131p sayfa sayfa da gezebilirsiniz)\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"onSearchTermChange($event)\"\n />\n </div>\n <small class=\"text-muted\">Se\u00E7mek i\u00E7in sat\u0131ra \u00E7ift t\u0131klay\u0131n.</small>\n </div>\n\n <dx-data-grid\n [dataSource]=\"dataSource\"\n keyExpr=\"BinCode\"\n [remoteOperations]=\"{ paging: true }\"\n [showRowLines]=\"true\"\n [showBorders]=\"true\"\n [hoverStateEnabled]=\"true\"\n [columnAutoWidth]=\"true\"\n (onRowDblClick)=\"onRowDoubleClick($event)\"\n style=\"height: 45vh\"\n >\n <dxo-paging [pageSize]=\"pageSize\"></dxo-paging>\n <dxo-pager\n [visible]=\"true\"\n [showInfo]=\"true\"\n [showNavigationButtons]=\"true\"\n [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"allowedPageSizes\"\n ></dxo-pager>\n <dxo-scrolling mode=\"standard\" showScrollbar=\"always\"></dxo-scrolling>\n <!-- S\u0131ralama kapal\u0131: sayfalama sunucuda oldu\u011Fu i\u00E7in istemci s\u0131ralamas\u0131 yaln\u0131zca a\u00E7\u0131k olan\n sayfay\u0131 s\u0131ralar ve kullan\u0131c\u0131ya t\u00FCm listeyi s\u0131ralad\u0131\u011F\u0131 izlenimini verirdi. Sunucu\n sorgusu zaten BinCode'a g\u00F6re s\u0131ral\u0131 d\u00F6ner. -->\n <dxo-sorting mode=\"none\"></dxo-sorting>\n\n <dxi-column dataField=\"BinCode\" caption=\"Depo Yeri Kodu\" [minWidth]=\"220\"></dxi-column>\n <dxi-column dataField=\"Warehouse\" caption=\"Depo\" [width]=\"120\"></dxi-column>\n </dx-data-grid>\n </ng-template>\n\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"close()\">Vazge\u00E7</button>\n </ng-template>\n</abp-modal>\n", styles: [":host ::ng-deep .dx-datagrid{font-size:12px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "component", type: i6.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: i7.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: i7.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i7.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i7.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i7.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }] });
2302
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BinLocationPickerComponent, decorators: [{
2303
+ type: Component,
2304
+ args: [{ selector: 'lib-bin-location-picker', template: "<abp-modal [(visible)]=\"visible\" [options]=\"{ size: 'lg' }\" (disappear)=\"close()\">\n <ng-template #abpHeader>\n <h3>Dummy Kasa Kodu Se\u00E7</h3>\n </ng-template>\n\n <ng-template #abpBody>\n <div class=\"mb-2\">\n <div class=\"input-group input-group-sm\">\n <span class=\"input-group-text\">\n <i class=\"fa\" [ngClass]=\"isSearching ? 'fa-spinner fa-spin' : 'fa-search'\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n placeholder=\"Depo yeri kodu ile ara (bo\u015F b\u0131rak\u0131p sayfa sayfa da gezebilirsiniz)\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"onSearchTermChange($event)\"\n />\n </div>\n <small class=\"text-muted\">Se\u00E7mek i\u00E7in sat\u0131ra \u00E7ift t\u0131klay\u0131n.</small>\n </div>\n\n <dx-data-grid\n [dataSource]=\"dataSource\"\n keyExpr=\"BinCode\"\n [remoteOperations]=\"{ paging: true }\"\n [showRowLines]=\"true\"\n [showBorders]=\"true\"\n [hoverStateEnabled]=\"true\"\n [columnAutoWidth]=\"true\"\n (onRowDblClick)=\"onRowDoubleClick($event)\"\n style=\"height: 45vh\"\n >\n <dxo-paging [pageSize]=\"pageSize\"></dxo-paging>\n <dxo-pager\n [visible]=\"true\"\n [showInfo]=\"true\"\n [showNavigationButtons]=\"true\"\n [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"allowedPageSizes\"\n ></dxo-pager>\n <dxo-scrolling mode=\"standard\" showScrollbar=\"always\"></dxo-scrolling>\n <!-- S\u0131ralama kapal\u0131: sayfalama sunucuda oldu\u011Fu i\u00E7in istemci s\u0131ralamas\u0131 yaln\u0131zca a\u00E7\u0131k olan\n sayfay\u0131 s\u0131ralar ve kullan\u0131c\u0131ya t\u00FCm listeyi s\u0131ralad\u0131\u011F\u0131 izlenimini verirdi. Sunucu\n sorgusu zaten BinCode'a g\u00F6re s\u0131ral\u0131 d\u00F6ner. -->\n <dxo-sorting mode=\"none\"></dxo-sorting>\n\n <dxi-column dataField=\"BinCode\" caption=\"Depo Yeri Kodu\" [minWidth]=\"220\"></dxi-column>\n <dxi-column dataField=\"Warehouse\" caption=\"Depo\" [width]=\"120\"></dxi-column>\n </dx-data-grid>\n </ng-template>\n\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"close()\">Vazge\u00E7</button>\n </ng-template>\n</abp-modal>\n", styles: [":host ::ng-deep .dx-datagrid{font-size:12px}\n"] }]
2305
+ }], ctorParameters: function () { return [{ type: WarehouseService }, { type: i2.ToasterService }]; }, propDecorators: { warehouseCode: [{
2306
+ type: Input
2307
+ }], visible: [{
2308
+ type: Input
2309
+ }], visibleChange: [{
2310
+ type: Output
2311
+ }], selected: [{
2312
+ type: Output
2313
+ }] } });
2314
+
2195
2315
  class ConnectorParamsService {
2196
2316
  constructor(restService) {
2197
2317
  this.restService = restService;
@@ -2280,8 +2400,7 @@ class ConnectorParamsComponent {
2280
2400
  { value: 'MIKRO', label: 'Mikro ERP' },
2281
2401
  ];
2282
2402
  this.warehouses = [];
2283
- this.binLocations = [];
2284
- this.isLoadingBinLocations = false;
2403
+ this.isDummyBoxPickerOpen = false;
2285
2404
  this.form = {
2286
2405
  erpType: 'MIKRO',
2287
2406
  baseUrl: '',
@@ -2334,10 +2453,6 @@ class ConnectorParamsComponent {
2334
2453
  this.beeCellPasswordSet = (_j = params.beeCellPasswordSet) !== null && _j !== void 0 ? _j : false;
2335
2454
  }
2336
2455
  this.isLoading = false;
2337
- // Kayıtlı kaynak depo varsa, Dummy Kasa combobox'ının o depoya ait depo yerleriyle dolması için yükle.
2338
- if (this.form.fromWarehouseCode) {
2339
- this.loadBinLocations(this.form.fromWarehouseCode);
2340
- }
2341
2456
  },
2342
2457
  error: err => {
2343
2458
  var _a, _b, _c;
@@ -2352,34 +2467,27 @@ class ConnectorParamsComponent {
2352
2467
  get isCurrentWhsInList() {
2353
2468
  return this.warehouses.some(w => w.WhsCode === this.form.targetWarehouseCode);
2354
2469
  }
2355
- get isCurrentDummyBoxInList() {
2356
- return this.binLocations.some(b => b.BinCode === this.form.dummyBoxCode);
2357
- }
2358
2470
  /**
2359
- * Kaynak Depo seçimi değiştiğinde çalışır: Dummy Kasa combobox'ını seçilen deponun
2360
- * depo yerleriyle doldurur. Depo değiştiği için önceki depoya ait seçim artık geçerli değil.
2471
+ * Kaynak Depo seçimi değiştiğinde çalışır. Depo değiştiği için önceki depoya ait Dummy Kasa
2472
+ * seçimi artık geçerli değil temizlenir. Depo yerleri artık burada YÜKLENMEZ; kullanıcı
2473
+ * "Seç" ile modalı açtığında sunucudan sayfa sayfa gelir (çok fazla veri combobox'ı kilitliyordu).
2361
2474
  */
2362
2475
  onFromWarehouseChange(whsCode) {
2363
2476
  this.form.fromWarehouseCode = whsCode;
2364
2477
  this.form.dummyBoxCode = '';
2365
- this.loadBinLocations(whsCode);
2366
2478
  }
2367
- loadBinLocations(whsCode) {
2368
- if (!whsCode) {
2369
- this.binLocations = [];
2479
+ /** Dummy Kasa seçim modalını açar. Kaynak depo seçilmeden açılamaz. */
2480
+ openDummyBoxPicker() {
2481
+ var _a;
2482
+ if (!this.form.fromWarehouseCode) {
2483
+ this.toasterService.warn('Önce Kaynak Depo seçin.');
2370
2484
  return;
2371
2485
  }
2372
- this.isLoadingBinLocations = true;
2373
- this.warehouseService.getBinLocationsByWarehouse(whsCode).subscribe({
2374
- next: (bins) => {
2375
- this.binLocations = bins || [];
2376
- this.isLoadingBinLocations = false;
2377
- },
2378
- error: () => {
2379
- this.binLocations = [];
2380
- this.isLoadingBinLocations = false;
2381
- },
2382
- });
2486
+ (_a = this.dummyBoxPicker) === null || _a === void 0 ? void 0 : _a.open();
2487
+ }
2488
+ onDummyBoxSelected(bin) {
2489
+ var _a;
2490
+ this.form.dummyBoxCode = (_a = bin === null || bin === void 0 ? void 0 : bin.BinCode) !== null && _a !== void 0 ? _a : '';
2383
2491
  }
2384
2492
  save() {
2385
2493
  var _a, _b, _c, _d, _e, _f;
@@ -2436,11 +2544,14 @@ class ConnectorParamsComponent {
2436
2544
  }
2437
2545
  }
2438
2546
  ConnectorParamsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ConnectorParamsComponent, deps: [{ token: ConnectorParamsService }, { token: i2.ToasterService }, { token: ConnectorParamsGuard }, { token: i1$1.Router }, { token: i1$1.ActivatedRoute }, { token: WarehouseService }], target: i0.ɵɵFactoryTarget.Component });
2439
- ConnectorParamsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ConnectorParamsComponent, selector: "lib-connector-params", ngImport: i0, template: "<abp-page [title]=\"'Connector Parametreleri'\">\r\n <div class=\"connector-params-container\">\r\n\r\n <!-- Y\u00FCkleniyor -->\r\n <div class=\"text-center py-4\" *ngIf=\"isLoading\">\r\n <div class=\"spinner-border text-primary\" role=\"status\">\r\n <span class=\"visually-hidden\">Y\u00FCkleniyor...</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Form -->\r\n <div class=\"card connector-params-card\" [hidden]=\"isLoading\">\r\n <div class=\"card-body\">\r\n\r\n <!-- ERP Sa\u011Flay\u0131c\u0131s\u0131 -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"erpTypeSelect\">ERP Sa\u011Flay\u0131c\u0131s\u0131 <span class=\"text-danger\">*</span></label>\r\n <select id=\"erpTypeSelect\" class=\"form-select\" [(ngModel)]=\"form.erpType\" required>\r\n <option *ngFor=\"let opt of erpOptions\" [value]=\"opt.value\">{{ opt.label }}</option>\r\n </select>\r\n </div>\r\n\r\n <!-- Base URL -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"baseUrlInput\">Base URL <span class=\"text-danger\">*</span></label>\r\n <input id=\"baseUrlInput\" type=\"text\" class=\"form-control\"\r\n [(ngModel)]=\"form.baseUrl\"\r\n placeholder=\"https://erp-server:38080\" required />\r\n </div>\r\n\r\n <!-- API Key -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"apiKeyInput\">API Key <span class=\"text-danger\">*</span></label>\r\n <input id=\"apiKeyInput\" type=\"text\" class=\"form-control\"\r\n [(ngModel)]=\"form.apiKey\"\r\n placeholder=\"API anahtar\u0131\" required />\r\n </div>\r\n\r\n <!-- Kullan\u0131c\u0131 Ad\u0131 -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"usernameInput\">Kullan\u0131c\u0131 Ad\u0131 <span class=\"text-danger\">*</span></label>\r\n <input id=\"usernameInput\" type=\"text\" class=\"form-control\"\r\n [(ngModel)]=\"form.username\"\r\n placeholder=\"Kullan\u0131c\u0131 ad\u0131\" required />\r\n </div>\r\n\r\n <!-- \u015Eifre -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"passwordInput\">\r\n \u015Eifre <span class=\"text-danger\">*</span>\r\n <span class=\"badge bg-success ms-2\" *ngIf=\"passwordSet && !form.password\">Kay\u0131tl\u0131</span>\r\n </label>\r\n <input id=\"passwordInput\" type=\"password\" class=\"form-control\"\r\n [(ngModel)]=\"form.password\"\r\n [placeholder]=\"passwordSet ? 'De\u011Fi\u015Ftirmek i\u00E7in yeni \u015Fifre girin, bo\u015F b\u0131rak\u0131rsan\u0131z mevcut \u015Fifre korunur' : '\u015Eifre'\" />\r\n <small class=\"text-muted\" *ngIf=\"passwordSet\">Mevcut \u015Fifreyi korumak i\u00E7in bo\u015F b\u0131rak\u0131n.</small>\r\n </div>\r\n\r\n <!-- BeeCell Kullan\u0131c\u0131 Ad\u0131 -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"beeCellUsernameInput\">BeeCell Kullan\u0131c\u0131 Ad\u0131 <span class=\"text-danger\">*</span></label>\r\n <input id=\"beeCellUsernameInput\" type=\"text\" class=\"form-control\"\r\n [(ngModel)]=\"form.beeCellUsername\"\r\n placeholder=\"BeeCell kullan\u0131c\u0131 ad\u0131\" required />\r\n <small class=\"text-muted\">BeeCell/Orchestrator API giri\u015Fi i\u00E7in kullan\u0131l\u0131r (ERP kullan\u0131c\u0131s\u0131ndan ayr\u0131d\u0131r).</small>\r\n </div>\r\n\r\n <!-- BeeCell \u015Eifre -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"beeCellPasswordInput\">\r\n BeeCell \u015Eifre <span class=\"text-danger\">*</span>\r\n <span class=\"badge bg-success ms-2\" *ngIf=\"beeCellPasswordSet && !form.beeCellPassword\">Kay\u0131tl\u0131</span>\r\n </label>\r\n <input id=\"beeCellPasswordInput\" type=\"password\" class=\"form-control\"\r\n [(ngModel)]=\"form.beeCellPassword\"\r\n [placeholder]=\"beeCellPasswordSet ? 'De\u011Fi\u015Ftirmek i\u00E7in yeni \u015Fifre girin, bo\u015F b\u0131rak\u0131rsan\u0131z mevcut \u015Fifre korunur' : 'BeeCell \u015Fifresi'\" />\r\n <small class=\"text-muted\" *ngIf=\"beeCellPasswordSet\">Mevcut \u015Fifreyi korumak i\u00E7in bo\u015F b\u0131rak\u0131n.</small>\r\n </div>\r\n\r\n <!-- Kaynak Depo -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"fromWhsSelect\">\r\n Kaynak Depo (Stok Transfer)\r\n </label>\r\n <select id=\"fromWhsSelect\" class=\"form-select\"\r\n [ngModel]=\"form.fromWarehouseCode\"\r\n (ngModelChange)=\"onFromWarehouseChange($event)\">\r\n <option value=\"\">-- Se\u00E7iniz --</option>\r\n <option *ngIf=\"form.fromWarehouseCode && !isCurrentFromWhsInList\"\r\n [value]=\"form.fromWarehouseCode\">\r\n {{ form.fromWarehouseCode }} (Kay\u0131tl\u0131)\r\n </option>\r\n <option *ngFor=\"let whs of warehouses\" [value]=\"whs.WhsCode\">\r\n {{ whs.WhsCode }} \u2013 {{ whs.WhsName }}\r\n </option>\r\n </select>\r\n <small class=\"text-muted\">G\u00F6rev Ba\u015Flat'ta olu\u015Fturulan stok naklinin kaynak deposu.</small>\r\n </div>\r\n\r\n <!-- Hedef Depo -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"targetWhsSelect\">\r\n Hedef Depo (Stok Transfer) <span class=\"text-danger\">*</span>\r\n </label>\r\n <select id=\"targetWhsSelect\" class=\"form-select\" [(ngModel)]=\"form.targetWarehouseCode\">\r\n <option value=\"\">-- Se\u00E7iniz --</option>\r\n <option *ngIf=\"form.targetWarehouseCode && !isCurrentWhsInList\"\r\n [value]=\"form.targetWarehouseCode\">\r\n {{ form.targetWarehouseCode }} (Kay\u0131tl\u0131)\r\n </option>\r\n <option *ngFor=\"let whs of warehouses\" [value]=\"whs.WhsCode\">\r\n {{ whs.WhsCode }} \u2013 {{ whs.WhsName }}\r\n </option>\r\n </select>\r\n <small class=\"text-muted\">G\u00F6rev Ba\u015Flat'ta olu\u015Fturulan stok naklinin hedef deposu.</small>\r\n </div>\r\n\r\n <!-- Dummy Kasa -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"dummyBoxSelect\">Dummy Kasa Kodu</label>\r\n <select id=\"dummyBoxSelect\" class=\"form-select\"\r\n [(ngModel)]=\"form.dummyBoxCode\"\r\n [disabled]=\"!form.fromWarehouseCode || isLoadingBinLocations\">\r\n <option value=\"\">-- Se\u00E7iniz --</option>\r\n <option *ngIf=\"form.dummyBoxCode && !isCurrentDummyBoxInList\"\r\n [value]=\"form.dummyBoxCode\">\r\n {{ form.dummyBoxCode }} (Kay\u0131tl\u0131)\r\n </option>\r\n <option *ngFor=\"let bin of binLocations\" [value]=\"bin.BinCode\">\r\n {{ bin.BinCode }}\r\n </option>\r\n </select>\r\n <small class=\"text-muted\" *ngIf=\"!form.fromWarehouseCode\">\u00D6nce Kaynak Depo se\u00E7in.</small>\r\n <small class=\"text-muted\" *ngIf=\"isLoadingBinLocations\">Depo yerleri y\u00FCkleniyor...</small>\r\n <small class=\"text-muted\" *ngIf=\"form.fromWarehouseCode && !isLoadingBinLocations\">\r\n Kasa Miktar\u0131 G\u00FCncelleme'de fiili say\u0131m fark\u0131n\u0131n muhasebele\u015Ftirildi\u011Fi SAP bin kodu \u2014 se\u00E7ilen kaynak deponun depo yeri.\r\n </small>\r\n </div>\r\n\r\n <!-- Aktif -->\r\n <div class=\"mb-4 form-check\">\r\n <input id=\"isActiveCheck\" type=\"checkbox\" class=\"form-check-input\"\r\n [(ngModel)]=\"form.isActive\" />\r\n <label class=\"form-check-label\" for=\"isActiveCheck\">Aktif</label>\r\n </div>\r\n\r\n <!-- Kaydet Butonu -->\r\n <div class=\"d-flex gap-2\">\r\n <button class=\"btn btn-primary\" (click)=\"save()\" [disabled]=\"isSaving\">\r\n <span *ngIf=\"isSaving\" class=\"spinner-border spinner-border-sm me-1\" role=\"status\"></span>\r\n {{ isSaving ? 'Kaydediliyor...' : 'Kaydet' }}\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</abp-page>\r\n", styles: [".connector-params-container{padding:1rem 0}.connector-params-container .connector-params-card{max-width:640px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$1.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }], encapsulation: i0.ViewEncapsulation.None });
2547
+ ConnectorParamsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ConnectorParamsComponent, selector: "lib-connector-params", viewQueries: [{ propertyName: "dummyBoxPicker", first: true, predicate: BinLocationPickerComponent, descendants: true }], ngImport: i0, template: "<abp-page [title]=\"'Connector Parametreleri'\">\r\n <div class=\"connector-params-container\">\r\n\r\n <!-- Y\u00FCkleniyor -->\r\n <div class=\"text-center py-4\" *ngIf=\"isLoading\">\r\n <div class=\"spinner-border text-primary\" role=\"status\">\r\n <span class=\"visually-hidden\">Y\u00FCkleniyor...</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Form -->\r\n <div class=\"card connector-params-card\" [hidden]=\"isLoading\">\r\n <div class=\"card-body\">\r\n\r\n <!-- ERP Sa\u011Flay\u0131c\u0131s\u0131 -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"erpTypeSelect\">ERP Sa\u011Flay\u0131c\u0131s\u0131 <span class=\"text-danger\">*</span></label>\r\n <select id=\"erpTypeSelect\" class=\"form-select\" [(ngModel)]=\"form.erpType\" required>\r\n <option *ngFor=\"let opt of erpOptions\" [value]=\"opt.value\">{{ opt.label }}</option>\r\n </select>\r\n </div>\r\n\r\n <!-- Base URL -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"baseUrlInput\">Base URL <span class=\"text-danger\">*</span></label>\r\n <input id=\"baseUrlInput\" type=\"text\" class=\"form-control\"\r\n [(ngModel)]=\"form.baseUrl\"\r\n placeholder=\"https://erp-server:38080\" required />\r\n </div>\r\n\r\n <!-- API Key -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"apiKeyInput\">API Key <span class=\"text-danger\">*</span></label>\r\n <input id=\"apiKeyInput\" type=\"text\" class=\"form-control\"\r\n [(ngModel)]=\"form.apiKey\"\r\n placeholder=\"API anahtar\u0131\" required />\r\n </div>\r\n\r\n <!-- Kullan\u0131c\u0131 Ad\u0131 -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"usernameInput\">Kullan\u0131c\u0131 Ad\u0131 <span class=\"text-danger\">*</span></label>\r\n <input id=\"usernameInput\" type=\"text\" class=\"form-control\"\r\n [(ngModel)]=\"form.username\"\r\n placeholder=\"Kullan\u0131c\u0131 ad\u0131\" required />\r\n </div>\r\n\r\n <!-- \u015Eifre -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"passwordInput\">\r\n \u015Eifre <span class=\"text-danger\">*</span>\r\n <span class=\"badge bg-success ms-2\" *ngIf=\"passwordSet && !form.password\">Kay\u0131tl\u0131</span>\r\n </label>\r\n <input id=\"passwordInput\" type=\"password\" class=\"form-control\"\r\n [(ngModel)]=\"form.password\"\r\n [placeholder]=\"passwordSet ? 'De\u011Fi\u015Ftirmek i\u00E7in yeni \u015Fifre girin, bo\u015F b\u0131rak\u0131rsan\u0131z mevcut \u015Fifre korunur' : '\u015Eifre'\" />\r\n <small class=\"text-muted\" *ngIf=\"passwordSet\">Mevcut \u015Fifreyi korumak i\u00E7in bo\u015F b\u0131rak\u0131n.</small>\r\n </div>\r\n\r\n <!-- BeeCell Kullan\u0131c\u0131 Ad\u0131 -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"beeCellUsernameInput\">BeeCell Kullan\u0131c\u0131 Ad\u0131 <span class=\"text-danger\">*</span></label>\r\n <input id=\"beeCellUsernameInput\" type=\"text\" class=\"form-control\"\r\n [(ngModel)]=\"form.beeCellUsername\"\r\n placeholder=\"BeeCell kullan\u0131c\u0131 ad\u0131\" required />\r\n <small class=\"text-muted\">BeeCell/Orchestrator API giri\u015Fi i\u00E7in kullan\u0131l\u0131r (ERP kullan\u0131c\u0131s\u0131ndan ayr\u0131d\u0131r).</small>\r\n </div>\r\n\r\n <!-- BeeCell \u015Eifre -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"beeCellPasswordInput\">\r\n BeeCell \u015Eifre <span class=\"text-danger\">*</span>\r\n <span class=\"badge bg-success ms-2\" *ngIf=\"beeCellPasswordSet && !form.beeCellPassword\">Kay\u0131tl\u0131</span>\r\n </label>\r\n <input id=\"beeCellPasswordInput\" type=\"password\" class=\"form-control\"\r\n [(ngModel)]=\"form.beeCellPassword\"\r\n [placeholder]=\"beeCellPasswordSet ? 'De\u011Fi\u015Ftirmek i\u00E7in yeni \u015Fifre girin, bo\u015F b\u0131rak\u0131rsan\u0131z mevcut \u015Fifre korunur' : 'BeeCell \u015Fifresi'\" />\r\n <small class=\"text-muted\" *ngIf=\"beeCellPasswordSet\">Mevcut \u015Fifreyi korumak i\u00E7in bo\u015F b\u0131rak\u0131n.</small>\r\n </div>\r\n\r\n <!-- Kaynak Depo -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"fromWhsSelect\">\r\n Kaynak Depo (Stok Transfer)\r\n </label>\r\n <select id=\"fromWhsSelect\" class=\"form-select\"\r\n [ngModel]=\"form.fromWarehouseCode\"\r\n (ngModelChange)=\"onFromWarehouseChange($event)\">\r\n <option value=\"\">-- Se\u00E7iniz --</option>\r\n <option *ngIf=\"form.fromWarehouseCode && !isCurrentFromWhsInList\"\r\n [value]=\"form.fromWarehouseCode\">\r\n {{ form.fromWarehouseCode }} (Kay\u0131tl\u0131)\r\n </option>\r\n <option *ngFor=\"let whs of warehouses\" [value]=\"whs.WhsCode\">\r\n {{ whs.WhsCode }} \u2013 {{ whs.WhsName }}\r\n </option>\r\n </select>\r\n <small class=\"text-muted\">G\u00F6rev Ba\u015Flat'ta olu\u015Fturulan stok naklinin kaynak deposu.</small>\r\n </div>\r\n\r\n <!-- Hedef Depo -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"targetWhsSelect\">\r\n Hedef Depo (Stok Transfer) <span class=\"text-danger\">*</span>\r\n </label>\r\n <select id=\"targetWhsSelect\" class=\"form-select\" [(ngModel)]=\"form.targetWarehouseCode\">\r\n <option value=\"\">-- Se\u00E7iniz --</option>\r\n <option *ngIf=\"form.targetWarehouseCode && !isCurrentWhsInList\"\r\n [value]=\"form.targetWarehouseCode\">\r\n {{ form.targetWarehouseCode }} (Kay\u0131tl\u0131)\r\n </option>\r\n <option *ngFor=\"let whs of warehouses\" [value]=\"whs.WhsCode\">\r\n {{ whs.WhsCode }} \u2013 {{ whs.WhsName }}\r\n </option>\r\n </select>\r\n <small class=\"text-muted\">G\u00F6rev Ba\u015Flat'ta olu\u015Fturulan stok naklinin hedef deposu.</small>\r\n </div>\r\n\r\n <!-- Dummy Kasa -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"dummyBoxInput\">Dummy Kasa Kodu</label>\r\n <div class=\"input-group\">\r\n <input id=\"dummyBoxInput\" type=\"text\" class=\"form-control\" readonly\r\n [ngModel]=\"form.dummyBoxCode\"\r\n placeholder=\"Se\u00E7mek i\u00E7in &quot;Se\u00E7&quot;e t\u0131klay\u0131n\" />\r\n <button type=\"button\" class=\"btn btn-outline-primary\"\r\n [disabled]=\"!form.fromWarehouseCode\"\r\n (click)=\"openDummyBoxPicker()\">\r\n <i class=\"fa fa-search\"></i> Se\u00E7\r\n </button>\r\n <button type=\"button\" class=\"btn btn-outline-secondary\"\r\n [disabled]=\"!form.dummyBoxCode\"\r\n (click)=\"form.dummyBoxCode = ''\">\r\n Temizle\r\n </button>\r\n </div>\r\n <small class=\"text-muted\" *ngIf=\"!form.fromWarehouseCode\">\u00D6nce Kaynak Depo se\u00E7in.</small>\r\n <small class=\"text-muted\" *ngIf=\"form.fromWarehouseCode\">\r\n Kasa Miktar\u0131 G\u00FCncelleme'de fiili say\u0131m fark\u0131n\u0131n muhasebele\u015Ftirildi\u011Fi SAP bin kodu \u2014 se\u00E7ilen kaynak deponun depo yeri.\r\n Liste modal a\u00E7\u0131ld\u0131\u011F\u0131nda sunucudan sayfa sayfa y\u00FCklenir.\r\n </small>\r\n </div>\r\n\r\n <!-- Aktif -->\r\n <div class=\"mb-4 form-check\">\r\n <input id=\"isActiveCheck\" type=\"checkbox\" class=\"form-check-input\"\r\n [(ngModel)]=\"form.isActive\" />\r\n <label class=\"form-check-label\" for=\"isActiveCheck\">Aktif</label>\r\n </div>\r\n\r\n <!-- Kaydet Butonu -->\r\n <div class=\"d-flex gap-2\">\r\n <button class=\"btn btn-primary\" (click)=\"save()\" [disabled]=\"isSaving\">\r\n <span *ngIf=\"isSaving\" class=\"spinner-border spinner-border-sm me-1\" role=\"status\"></span>\r\n {{ isSaving ? 'Kaydediliyor...' : 'Kaydet' }}\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Dummy Kasa Kodu se\u00E7im modal\u0131 \u2014 veriler yaln\u0131zca modal a\u00E7\u0131ld\u0131\u011F\u0131nda sunucudan sayfa sayfa gelir -->\r\n <lib-bin-location-picker\r\n [warehouseCode]=\"form.fromWarehouseCode\"\r\n [(visible)]=\"isDummyBoxPickerOpen\"\r\n (selected)=\"onDummyBoxSelected($event)\">\r\n </lib-bin-location-picker>\r\n</abp-page>\r\n", styles: [".connector-params-container{padding:1rem 0}.connector-params-container .connector-params-card{max-width:640px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$1.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: BinLocationPickerComponent, selector: "lib-bin-location-picker", inputs: ["warehouseCode", "visible"], outputs: ["visibleChange", "selected"] }], encapsulation: i0.ViewEncapsulation.None });
2440
2548
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ConnectorParamsComponent, decorators: [{
2441
2549
  type: Component,
2442
- args: [{ selector: 'lib-connector-params', encapsulation: ViewEncapsulation.None, template: "<abp-page [title]=\"'Connector Parametreleri'\">\r\n <div class=\"connector-params-container\">\r\n\r\n <!-- Y\u00FCkleniyor -->\r\n <div class=\"text-center py-4\" *ngIf=\"isLoading\">\r\n <div class=\"spinner-border text-primary\" role=\"status\">\r\n <span class=\"visually-hidden\">Y\u00FCkleniyor...</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Form -->\r\n <div class=\"card connector-params-card\" [hidden]=\"isLoading\">\r\n <div class=\"card-body\">\r\n\r\n <!-- ERP Sa\u011Flay\u0131c\u0131s\u0131 -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"erpTypeSelect\">ERP Sa\u011Flay\u0131c\u0131s\u0131 <span class=\"text-danger\">*</span></label>\r\n <select id=\"erpTypeSelect\" class=\"form-select\" [(ngModel)]=\"form.erpType\" required>\r\n <option *ngFor=\"let opt of erpOptions\" [value]=\"opt.value\">{{ opt.label }}</option>\r\n </select>\r\n </div>\r\n\r\n <!-- Base URL -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"baseUrlInput\">Base URL <span class=\"text-danger\">*</span></label>\r\n <input id=\"baseUrlInput\" type=\"text\" class=\"form-control\"\r\n [(ngModel)]=\"form.baseUrl\"\r\n placeholder=\"https://erp-server:38080\" required />\r\n </div>\r\n\r\n <!-- API Key -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"apiKeyInput\">API Key <span class=\"text-danger\">*</span></label>\r\n <input id=\"apiKeyInput\" type=\"text\" class=\"form-control\"\r\n [(ngModel)]=\"form.apiKey\"\r\n placeholder=\"API anahtar\u0131\" required />\r\n </div>\r\n\r\n <!-- Kullan\u0131c\u0131 Ad\u0131 -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"usernameInput\">Kullan\u0131c\u0131 Ad\u0131 <span class=\"text-danger\">*</span></label>\r\n <input id=\"usernameInput\" type=\"text\" class=\"form-control\"\r\n [(ngModel)]=\"form.username\"\r\n placeholder=\"Kullan\u0131c\u0131 ad\u0131\" required />\r\n </div>\r\n\r\n <!-- \u015Eifre -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"passwordInput\">\r\n \u015Eifre <span class=\"text-danger\">*</span>\r\n <span class=\"badge bg-success ms-2\" *ngIf=\"passwordSet && !form.password\">Kay\u0131tl\u0131</span>\r\n </label>\r\n <input id=\"passwordInput\" type=\"password\" class=\"form-control\"\r\n [(ngModel)]=\"form.password\"\r\n [placeholder]=\"passwordSet ? 'De\u011Fi\u015Ftirmek i\u00E7in yeni \u015Fifre girin, bo\u015F b\u0131rak\u0131rsan\u0131z mevcut \u015Fifre korunur' : '\u015Eifre'\" />\r\n <small class=\"text-muted\" *ngIf=\"passwordSet\">Mevcut \u015Fifreyi korumak i\u00E7in bo\u015F b\u0131rak\u0131n.</small>\r\n </div>\r\n\r\n <!-- BeeCell Kullan\u0131c\u0131 Ad\u0131 -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"beeCellUsernameInput\">BeeCell Kullan\u0131c\u0131 Ad\u0131 <span class=\"text-danger\">*</span></label>\r\n <input id=\"beeCellUsernameInput\" type=\"text\" class=\"form-control\"\r\n [(ngModel)]=\"form.beeCellUsername\"\r\n placeholder=\"BeeCell kullan\u0131c\u0131 ad\u0131\" required />\r\n <small class=\"text-muted\">BeeCell/Orchestrator API giri\u015Fi i\u00E7in kullan\u0131l\u0131r (ERP kullan\u0131c\u0131s\u0131ndan ayr\u0131d\u0131r).</small>\r\n </div>\r\n\r\n <!-- BeeCell \u015Eifre -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"beeCellPasswordInput\">\r\n BeeCell \u015Eifre <span class=\"text-danger\">*</span>\r\n <span class=\"badge bg-success ms-2\" *ngIf=\"beeCellPasswordSet && !form.beeCellPassword\">Kay\u0131tl\u0131</span>\r\n </label>\r\n <input id=\"beeCellPasswordInput\" type=\"password\" class=\"form-control\"\r\n [(ngModel)]=\"form.beeCellPassword\"\r\n [placeholder]=\"beeCellPasswordSet ? 'De\u011Fi\u015Ftirmek i\u00E7in yeni \u015Fifre girin, bo\u015F b\u0131rak\u0131rsan\u0131z mevcut \u015Fifre korunur' : 'BeeCell \u015Fifresi'\" />\r\n <small class=\"text-muted\" *ngIf=\"beeCellPasswordSet\">Mevcut \u015Fifreyi korumak i\u00E7in bo\u015F b\u0131rak\u0131n.</small>\r\n </div>\r\n\r\n <!-- Kaynak Depo -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"fromWhsSelect\">\r\n Kaynak Depo (Stok Transfer)\r\n </label>\r\n <select id=\"fromWhsSelect\" class=\"form-select\"\r\n [ngModel]=\"form.fromWarehouseCode\"\r\n (ngModelChange)=\"onFromWarehouseChange($event)\">\r\n <option value=\"\">-- Se\u00E7iniz --</option>\r\n <option *ngIf=\"form.fromWarehouseCode && !isCurrentFromWhsInList\"\r\n [value]=\"form.fromWarehouseCode\">\r\n {{ form.fromWarehouseCode }} (Kay\u0131tl\u0131)\r\n </option>\r\n <option *ngFor=\"let whs of warehouses\" [value]=\"whs.WhsCode\">\r\n {{ whs.WhsCode }} \u2013 {{ whs.WhsName }}\r\n </option>\r\n </select>\r\n <small class=\"text-muted\">G\u00F6rev Ba\u015Flat'ta olu\u015Fturulan stok naklinin kaynak deposu.</small>\r\n </div>\r\n\r\n <!-- Hedef Depo -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"targetWhsSelect\">\r\n Hedef Depo (Stok Transfer) <span class=\"text-danger\">*</span>\r\n </label>\r\n <select id=\"targetWhsSelect\" class=\"form-select\" [(ngModel)]=\"form.targetWarehouseCode\">\r\n <option value=\"\">-- Se\u00E7iniz --</option>\r\n <option *ngIf=\"form.targetWarehouseCode && !isCurrentWhsInList\"\r\n [value]=\"form.targetWarehouseCode\">\r\n {{ form.targetWarehouseCode }} (Kay\u0131tl\u0131)\r\n </option>\r\n <option *ngFor=\"let whs of warehouses\" [value]=\"whs.WhsCode\">\r\n {{ whs.WhsCode }} \u2013 {{ whs.WhsName }}\r\n </option>\r\n </select>\r\n <small class=\"text-muted\">G\u00F6rev Ba\u015Flat'ta olu\u015Fturulan stok naklinin hedef deposu.</small>\r\n </div>\r\n\r\n <!-- Dummy Kasa -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"dummyBoxSelect\">Dummy Kasa Kodu</label>\r\n <select id=\"dummyBoxSelect\" class=\"form-select\"\r\n [(ngModel)]=\"form.dummyBoxCode\"\r\n [disabled]=\"!form.fromWarehouseCode || isLoadingBinLocations\">\r\n <option value=\"\">-- Se\u00E7iniz --</option>\r\n <option *ngIf=\"form.dummyBoxCode && !isCurrentDummyBoxInList\"\r\n [value]=\"form.dummyBoxCode\">\r\n {{ form.dummyBoxCode }} (Kay\u0131tl\u0131)\r\n </option>\r\n <option *ngFor=\"let bin of binLocations\" [value]=\"bin.BinCode\">\r\n {{ bin.BinCode }}\r\n </option>\r\n </select>\r\n <small class=\"text-muted\" *ngIf=\"!form.fromWarehouseCode\">\u00D6nce Kaynak Depo se\u00E7in.</small>\r\n <small class=\"text-muted\" *ngIf=\"isLoadingBinLocations\">Depo yerleri y\u00FCkleniyor...</small>\r\n <small class=\"text-muted\" *ngIf=\"form.fromWarehouseCode && !isLoadingBinLocations\">\r\n Kasa Miktar\u0131 G\u00FCncelleme'de fiili say\u0131m fark\u0131n\u0131n muhasebele\u015Ftirildi\u011Fi SAP bin kodu \u2014 se\u00E7ilen kaynak deponun depo yeri.\r\n </small>\r\n </div>\r\n\r\n <!-- Aktif -->\r\n <div class=\"mb-4 form-check\">\r\n <input id=\"isActiveCheck\" type=\"checkbox\" class=\"form-check-input\"\r\n [(ngModel)]=\"form.isActive\" />\r\n <label class=\"form-check-label\" for=\"isActiveCheck\">Aktif</label>\r\n </div>\r\n\r\n <!-- Kaydet Butonu -->\r\n <div class=\"d-flex gap-2\">\r\n <button class=\"btn btn-primary\" (click)=\"save()\" [disabled]=\"isSaving\">\r\n <span *ngIf=\"isSaving\" class=\"spinner-border spinner-border-sm me-1\" role=\"status\"></span>\r\n {{ isSaving ? 'Kaydediliyor...' : 'Kaydet' }}\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</abp-page>\r\n", styles: [".connector-params-container{padding:1rem 0}.connector-params-container .connector-params-card{max-width:640px}\n"] }]
2443
- }], ctorParameters: function () { return [{ type: ConnectorParamsService }, { type: i2.ToasterService }, { type: ConnectorParamsGuard }, { type: i1$1.Router }, { type: i1$1.ActivatedRoute }, { type: WarehouseService }]; } });
2550
+ args: [{ selector: 'lib-connector-params', encapsulation: ViewEncapsulation.None, template: "<abp-page [title]=\"'Connector Parametreleri'\">\r\n <div class=\"connector-params-container\">\r\n\r\n <!-- Y\u00FCkleniyor -->\r\n <div class=\"text-center py-4\" *ngIf=\"isLoading\">\r\n <div class=\"spinner-border text-primary\" role=\"status\">\r\n <span class=\"visually-hidden\">Y\u00FCkleniyor...</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Form -->\r\n <div class=\"card connector-params-card\" [hidden]=\"isLoading\">\r\n <div class=\"card-body\">\r\n\r\n <!-- ERP Sa\u011Flay\u0131c\u0131s\u0131 -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"erpTypeSelect\">ERP Sa\u011Flay\u0131c\u0131s\u0131 <span class=\"text-danger\">*</span></label>\r\n <select id=\"erpTypeSelect\" class=\"form-select\" [(ngModel)]=\"form.erpType\" required>\r\n <option *ngFor=\"let opt of erpOptions\" [value]=\"opt.value\">{{ opt.label }}</option>\r\n </select>\r\n </div>\r\n\r\n <!-- Base URL -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"baseUrlInput\">Base URL <span class=\"text-danger\">*</span></label>\r\n <input id=\"baseUrlInput\" type=\"text\" class=\"form-control\"\r\n [(ngModel)]=\"form.baseUrl\"\r\n placeholder=\"https://erp-server:38080\" required />\r\n </div>\r\n\r\n <!-- API Key -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"apiKeyInput\">API Key <span class=\"text-danger\">*</span></label>\r\n <input id=\"apiKeyInput\" type=\"text\" class=\"form-control\"\r\n [(ngModel)]=\"form.apiKey\"\r\n placeholder=\"API anahtar\u0131\" required />\r\n </div>\r\n\r\n <!-- Kullan\u0131c\u0131 Ad\u0131 -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"usernameInput\">Kullan\u0131c\u0131 Ad\u0131 <span class=\"text-danger\">*</span></label>\r\n <input id=\"usernameInput\" type=\"text\" class=\"form-control\"\r\n [(ngModel)]=\"form.username\"\r\n placeholder=\"Kullan\u0131c\u0131 ad\u0131\" required />\r\n </div>\r\n\r\n <!-- \u015Eifre -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"passwordInput\">\r\n \u015Eifre <span class=\"text-danger\">*</span>\r\n <span class=\"badge bg-success ms-2\" *ngIf=\"passwordSet && !form.password\">Kay\u0131tl\u0131</span>\r\n </label>\r\n <input id=\"passwordInput\" type=\"password\" class=\"form-control\"\r\n [(ngModel)]=\"form.password\"\r\n [placeholder]=\"passwordSet ? 'De\u011Fi\u015Ftirmek i\u00E7in yeni \u015Fifre girin, bo\u015F b\u0131rak\u0131rsan\u0131z mevcut \u015Fifre korunur' : '\u015Eifre'\" />\r\n <small class=\"text-muted\" *ngIf=\"passwordSet\">Mevcut \u015Fifreyi korumak i\u00E7in bo\u015F b\u0131rak\u0131n.</small>\r\n </div>\r\n\r\n <!-- BeeCell Kullan\u0131c\u0131 Ad\u0131 -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"beeCellUsernameInput\">BeeCell Kullan\u0131c\u0131 Ad\u0131 <span class=\"text-danger\">*</span></label>\r\n <input id=\"beeCellUsernameInput\" type=\"text\" class=\"form-control\"\r\n [(ngModel)]=\"form.beeCellUsername\"\r\n placeholder=\"BeeCell kullan\u0131c\u0131 ad\u0131\" required />\r\n <small class=\"text-muted\">BeeCell/Orchestrator API giri\u015Fi i\u00E7in kullan\u0131l\u0131r (ERP kullan\u0131c\u0131s\u0131ndan ayr\u0131d\u0131r).</small>\r\n </div>\r\n\r\n <!-- BeeCell \u015Eifre -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"beeCellPasswordInput\">\r\n BeeCell \u015Eifre <span class=\"text-danger\">*</span>\r\n <span class=\"badge bg-success ms-2\" *ngIf=\"beeCellPasswordSet && !form.beeCellPassword\">Kay\u0131tl\u0131</span>\r\n </label>\r\n <input id=\"beeCellPasswordInput\" type=\"password\" class=\"form-control\"\r\n [(ngModel)]=\"form.beeCellPassword\"\r\n [placeholder]=\"beeCellPasswordSet ? 'De\u011Fi\u015Ftirmek i\u00E7in yeni \u015Fifre girin, bo\u015F b\u0131rak\u0131rsan\u0131z mevcut \u015Fifre korunur' : 'BeeCell \u015Fifresi'\" />\r\n <small class=\"text-muted\" *ngIf=\"beeCellPasswordSet\">Mevcut \u015Fifreyi korumak i\u00E7in bo\u015F b\u0131rak\u0131n.</small>\r\n </div>\r\n\r\n <!-- Kaynak Depo -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"fromWhsSelect\">\r\n Kaynak Depo (Stok Transfer)\r\n </label>\r\n <select id=\"fromWhsSelect\" class=\"form-select\"\r\n [ngModel]=\"form.fromWarehouseCode\"\r\n (ngModelChange)=\"onFromWarehouseChange($event)\">\r\n <option value=\"\">-- Se\u00E7iniz --</option>\r\n <option *ngIf=\"form.fromWarehouseCode && !isCurrentFromWhsInList\"\r\n [value]=\"form.fromWarehouseCode\">\r\n {{ form.fromWarehouseCode }} (Kay\u0131tl\u0131)\r\n </option>\r\n <option *ngFor=\"let whs of warehouses\" [value]=\"whs.WhsCode\">\r\n {{ whs.WhsCode }} \u2013 {{ whs.WhsName }}\r\n </option>\r\n </select>\r\n <small class=\"text-muted\">G\u00F6rev Ba\u015Flat'ta olu\u015Fturulan stok naklinin kaynak deposu.</small>\r\n </div>\r\n\r\n <!-- Hedef Depo -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"targetWhsSelect\">\r\n Hedef Depo (Stok Transfer) <span class=\"text-danger\">*</span>\r\n </label>\r\n <select id=\"targetWhsSelect\" class=\"form-select\" [(ngModel)]=\"form.targetWarehouseCode\">\r\n <option value=\"\">-- Se\u00E7iniz --</option>\r\n <option *ngIf=\"form.targetWarehouseCode && !isCurrentWhsInList\"\r\n [value]=\"form.targetWarehouseCode\">\r\n {{ form.targetWarehouseCode }} (Kay\u0131tl\u0131)\r\n </option>\r\n <option *ngFor=\"let whs of warehouses\" [value]=\"whs.WhsCode\">\r\n {{ whs.WhsCode }} \u2013 {{ whs.WhsName }}\r\n </option>\r\n </select>\r\n <small class=\"text-muted\">G\u00F6rev Ba\u015Flat'ta olu\u015Fturulan stok naklinin hedef deposu.</small>\r\n </div>\r\n\r\n <!-- Dummy Kasa -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"dummyBoxInput\">Dummy Kasa Kodu</label>\r\n <div class=\"input-group\">\r\n <input id=\"dummyBoxInput\" type=\"text\" class=\"form-control\" readonly\r\n [ngModel]=\"form.dummyBoxCode\"\r\n placeholder=\"Se\u00E7mek i\u00E7in &quot;Se\u00E7&quot;e t\u0131klay\u0131n\" />\r\n <button type=\"button\" class=\"btn btn-outline-primary\"\r\n [disabled]=\"!form.fromWarehouseCode\"\r\n (click)=\"openDummyBoxPicker()\">\r\n <i class=\"fa fa-search\"></i> Se\u00E7\r\n </button>\r\n <button type=\"button\" class=\"btn btn-outline-secondary\"\r\n [disabled]=\"!form.dummyBoxCode\"\r\n (click)=\"form.dummyBoxCode = ''\">\r\n Temizle\r\n </button>\r\n </div>\r\n <small class=\"text-muted\" *ngIf=\"!form.fromWarehouseCode\">\u00D6nce Kaynak Depo se\u00E7in.</small>\r\n <small class=\"text-muted\" *ngIf=\"form.fromWarehouseCode\">\r\n Kasa Miktar\u0131 G\u00FCncelleme'de fiili say\u0131m fark\u0131n\u0131n muhasebele\u015Ftirildi\u011Fi SAP bin kodu \u2014 se\u00E7ilen kaynak deponun depo yeri.\r\n Liste modal a\u00E7\u0131ld\u0131\u011F\u0131nda sunucudan sayfa sayfa y\u00FCklenir.\r\n </small>\r\n </div>\r\n\r\n <!-- Aktif -->\r\n <div class=\"mb-4 form-check\">\r\n <input id=\"isActiveCheck\" type=\"checkbox\" class=\"form-check-input\"\r\n [(ngModel)]=\"form.isActive\" />\r\n <label class=\"form-check-label\" for=\"isActiveCheck\">Aktif</label>\r\n </div>\r\n\r\n <!-- Kaydet Butonu -->\r\n <div class=\"d-flex gap-2\">\r\n <button class=\"btn btn-primary\" (click)=\"save()\" [disabled]=\"isSaving\">\r\n <span *ngIf=\"isSaving\" class=\"spinner-border spinner-border-sm me-1\" role=\"status\"></span>\r\n {{ isSaving ? 'Kaydediliyor...' : 'Kaydet' }}\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Dummy Kasa Kodu se\u00E7im modal\u0131 \u2014 veriler yaln\u0131zca modal a\u00E7\u0131ld\u0131\u011F\u0131nda sunucudan sayfa sayfa gelir -->\r\n <lib-bin-location-picker\r\n [warehouseCode]=\"form.fromWarehouseCode\"\r\n [(visible)]=\"isDummyBoxPickerOpen\"\r\n (selected)=\"onDummyBoxSelected($event)\">\r\n </lib-bin-location-picker>\r\n</abp-page>\r\n", styles: [".connector-params-container{padding:1rem 0}.connector-params-container .connector-params-card{max-width:640px}\n"] }]
2551
+ }], ctorParameters: function () { return [{ type: ConnectorParamsService }, { type: i2.ToasterService }, { type: ConnectorParamsGuard }, { type: i1$1.Router }, { type: i1$1.ActivatedRoute }, { type: WarehouseService }]; }, propDecorators: { dummyBoxPicker: [{
2552
+ type: ViewChild,
2553
+ args: [BinLocationPickerComponent, { static: false }]
2554
+ }] } });
2444
2555
 
2445
2556
  const routes$1 = [
2446
2557
  { path: '', component: ConnectorParamsComponent },
@@ -2448,24 +2559,27 @@ const routes$1 = [
2448
2559
  class ConnectorParamsModule {
2449
2560
  }
2450
2561
  ConnectorParamsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ConnectorParamsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2451
- ConnectorParamsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ConnectorParamsModule, declarations: [ConnectorParamsComponent], imports: [CoreModule,
2562
+ ConnectorParamsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ConnectorParamsModule, declarations: [ConnectorParamsComponent, BinLocationPickerComponent], imports: [CoreModule,
2452
2563
  ThemeSharedModule,
2453
2564
  FormsModule,
2454
- PageModule, i1$1.RouterModule] });
2565
+ PageModule,
2566
+ DxDataGridModule, i1$1.RouterModule] });
2455
2567
  ConnectorParamsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ConnectorParamsModule, imports: [CoreModule,
2456
2568
  ThemeSharedModule,
2457
2569
  FormsModule,
2458
2570
  PageModule,
2571
+ DxDataGridModule,
2459
2572
  RouterModule.forChild(routes$1)] });
2460
2573
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ConnectorParamsModule, decorators: [{
2461
2574
  type: NgModule,
2462
2575
  args: [{
2463
- declarations: [ConnectorParamsComponent],
2576
+ declarations: [ConnectorParamsComponent, BinLocationPickerComponent],
2464
2577
  imports: [
2465
2578
  CoreModule,
2466
2579
  ThemeSharedModule,
2467
2580
  FormsModule,
2468
2581
  PageModule,
2582
+ DxDataGridModule,
2469
2583
  RouterModule.forChild(routes$1),
2470
2584
  ],
2471
2585
  }]