@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.
- package/esm2020/lib/components/bin-location-picker/bin-location-picker.component.mjs +114 -0
- package/esm2020/lib/components/connector-params/connector-params.component.mjs +22 -31
- package/esm2020/lib/components/connector-params/connector-params.module.mjs +9 -4
- package/esm2020/lib/hit-proxy/quantity-correction/quantity-correction.service.mjs +3 -2
- package/esm2020/lib/hit-proxy/warehouse/warehouse.service.mjs +19 -5
- package/fesm2015/hitsoft-smart-warehouse.mjs +161 -47
- package/fesm2015/hitsoft-smart-warehouse.mjs.map +1 -1
- package/fesm2020/hitsoft-smart-warehouse.mjs +156 -47
- package/fesm2020/hitsoft-smart-warehouse.mjs.map +1 -1
- package/lib/components/bin-location-picker/bin-location-picker.component.d.ts +40 -0
- package/lib/components/connector-params/connector-params.component.d.ts +9 -6
- package/lib/components/connector-params/connector-params.module.d.ts +8 -6
- package/lib/hit-proxy/warehouse/warehouse.service.d.ts +9 -0
- package/package.json +1 -1
|
@@ -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,14 +16,14 @@ 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
|
|
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 CustomStore from 'devextreme/data/custom_store';
|
|
25
|
-
import { firstValueFrom, of, forkJoin } from 'rxjs';
|
|
26
|
-
import { map, catchError } from 'rxjs/operators';
|
|
25
|
+
import { firstValueFrom, Subject, of, forkJoin } from 'rxjs';
|
|
26
|
+
import { debounceTime, distinctUntilChanged, map, catchError } from 'rxjs/operators';
|
|
27
27
|
|
|
28
28
|
class SmartWarehouseService {
|
|
29
29
|
constructor(restService) {
|
|
@@ -208,7 +208,17 @@ class WarehouseService {
|
|
|
208
208
|
*/
|
|
209
209
|
this.getBinLocationsByWarehouse = (whsCode) => this.restService.request({
|
|
210
210
|
method: 'GET',
|
|
211
|
-
url:
|
|
211
|
+
url: '/api/smart-warehouse/sap-warehouses/get-bin-locations',
|
|
212
|
+
params: { warehouseCode: whsCode },
|
|
213
|
+
}, { apiName: this.apiName });
|
|
214
|
+
/**
|
|
215
|
+
* Depo yeri seçim modalı için sayfalı depo yeri araması.
|
|
216
|
+
* search boş bırakılabilir — o zaman deponun tüm depo yerleri sayfa sayfa gezilir.
|
|
217
|
+
*/
|
|
218
|
+
this.searchBinLocationsByWarehouse = (warehouseCode, search, skip, take) => this.restService.request({
|
|
219
|
+
method: 'GET',
|
|
220
|
+
url: '/api/smart-warehouse/sap-warehouses/search-bin-locations',
|
|
221
|
+
params: { warehouseCode, search: search || '', skip, take },
|
|
212
222
|
}, { apiName: this.apiName });
|
|
213
223
|
/**
|
|
214
224
|
* Tüm akıllı depolardaki depo yerlerini getirir
|
|
@@ -229,21 +239,25 @@ class WarehouseService {
|
|
|
229
239
|
*/
|
|
230
240
|
this.getItemNameByCode = (itemCode) => this.restService.request({
|
|
231
241
|
method: 'GET',
|
|
232
|
-
url:
|
|
242
|
+
url: '/api/smart-warehouse/sap-warehouses/get-item-name',
|
|
243
|
+
params: { itemCode },
|
|
233
244
|
}, { apiName: this.apiName });
|
|
234
245
|
/**
|
|
235
246
|
* Barkod üzerinden SAP'den kalem bilgisini getirir
|
|
236
247
|
*/
|
|
237
248
|
this.getItemByBarcode = (barcode) => this.restService.request({
|
|
238
249
|
method: 'GET',
|
|
239
|
-
url:
|
|
250
|
+
url: '/api/smart-warehouse/sap-warehouses/get-item-by-barcode',
|
|
251
|
+
params: { barcode },
|
|
240
252
|
}, { apiName: this.apiName });
|
|
241
253
|
/**
|
|
242
254
|
* BinCode üzerinden SAP'den depo yeri bilgisini (AbsEntry) getirir
|
|
243
255
|
*/
|
|
256
|
+
// BinCode "/" içerdiği için (ör. "127/A000010001/2") route segmenti değil, query param olarak gönderilir.
|
|
244
257
|
this.getBinLocationByBinCode = (binCode) => this.restService.request({
|
|
245
258
|
method: 'GET',
|
|
246
|
-
url:
|
|
259
|
+
url: '/api/smart-warehouse/sap-warehouses/get-bin-location-by-bincode',
|
|
260
|
+
params: { binCode },
|
|
247
261
|
}, { apiName: this.apiName });
|
|
248
262
|
}
|
|
249
263
|
}
|
|
@@ -677,7 +691,7 @@ class OrdersComponent {
|
|
|
677
691
|
}
|
|
678
692
|
OrdersComponent.MAX_SHORT_ITEMS_DETAILED = 5;
|
|
679
693
|
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 });
|
|
680
|
-
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" }] });
|
|
694
|
+
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" }] });
|
|
681
695
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: OrdersComponent, decorators: [{
|
|
682
696
|
type: Component,
|
|
683
697
|
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"] }]
|
|
@@ -1032,7 +1046,7 @@ class ShelfPlacementComponent {
|
|
|
1032
1046
|
}
|
|
1033
1047
|
}
|
|
1034
1048
|
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 });
|
|
1035
|
-
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"] }] });
|
|
1049
|
+
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"] }] });
|
|
1036
1050
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ShelfPlacementComponent, decorators: [{
|
|
1037
1051
|
type: Component,
|
|
1038
1052
|
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"] }]
|
|
@@ -1256,7 +1270,7 @@ class ShelfTransferComponent {
|
|
|
1256
1270
|
}
|
|
1257
1271
|
}
|
|
1258
1272
|
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 });
|
|
1259
|
-
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:
|
|
1273
|
+
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"] }] });
|
|
1260
1274
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ShelfTransferComponent, decorators: [{
|
|
1261
1275
|
type: Component,
|
|
1262
1276
|
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"] }]
|
|
@@ -1441,7 +1455,7 @@ class OrderStationComponent {
|
|
|
1441
1455
|
}
|
|
1442
1456
|
}
|
|
1443
1457
|
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 });
|
|
1444
|
-
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:
|
|
1458
|
+
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"] }] });
|
|
1445
1459
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: OrderStationComponent, decorators: [{
|
|
1446
1460
|
type: Component,
|
|
1447
1461
|
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"] }]
|
|
@@ -1651,7 +1665,7 @@ class ShortagesComponent {
|
|
|
1651
1665
|
}
|
|
1652
1666
|
}
|
|
1653
1667
|
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 });
|
|
1654
|
-
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"] }] });
|
|
1668
|
+
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"] }] });
|
|
1655
1669
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ShortagesComponent, decorators: [{
|
|
1656
1670
|
type: Component,
|
|
1657
1671
|
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" }]
|
|
@@ -1846,7 +1860,8 @@ class QuantityCorrectionService {
|
|
|
1846
1860
|
*/
|
|
1847
1861
|
this.getLinesByBoxBarcode = (boxBarcode) => this.restService.request({
|
|
1848
1862
|
method: 'GET',
|
|
1849
|
-
url:
|
|
1863
|
+
url: '/api/smart-warehouse/sap-quantity-correction/get-lines-by-box',
|
|
1864
|
+
params: { boxBarcode },
|
|
1850
1865
|
}, { apiName: this.apiName });
|
|
1851
1866
|
/**
|
|
1852
1867
|
* "Raf ve Sipariş" modu — önizleme (hiçbir şey yazmaz)
|
|
@@ -2099,7 +2114,7 @@ class QuantityCorrectionComponent {
|
|
|
2099
2114
|
}
|
|
2100
2115
|
}
|
|
2101
2116
|
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 });
|
|
2102
|
-
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 });
|
|
2117
|
+
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 });
|
|
2103
2118
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: QuantityCorrectionComponent, decorators: [{
|
|
2104
2119
|
type: Component,
|
|
2105
2120
|
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"] }]
|
|
@@ -2134,6 +2149,108 @@ function loadQuantityCorrectionModuleAsChild() {
|
|
|
2134
2149
|
return Promise.resolve(QuantityCorrectionModule);
|
|
2135
2150
|
}
|
|
2136
2151
|
|
|
2152
|
+
const DEFAULT_PAGE_SIZE = 50;
|
|
2153
|
+
/**
|
|
2154
|
+
* Dummy Kasa (depo yeri) seçim modalı.
|
|
2155
|
+
*
|
|
2156
|
+
* Depo yeri sayısı bir selectbox'a sığmayacak kadar çok olabildiği için grid ile çalışır ve
|
|
2157
|
+
* sayfalama SUNUCU tarafındadır: grid her sayfa değişiminde yalnızca o sayfayı ister. Bu sayede
|
|
2158
|
+
* "kaynak depo seçilince tüm depo yerlerini combobox'a doldur" davranışının yarattığı donma
|
|
2159
|
+
* ortadan kalkar — veriler yalnızca modal açıldığında ve sayfa sayfa yüklenir.
|
|
2160
|
+
*/
|
|
2161
|
+
class BinLocationPickerComponent {
|
|
2162
|
+
constructor(warehouseService, toaster) {
|
|
2163
|
+
this.warehouseService = warehouseService;
|
|
2164
|
+
this.toaster = toaster;
|
|
2165
|
+
/** Seçim yapılacak kaynak depo kodu; sahibi bileşen ngModel ile geçirir. */
|
|
2166
|
+
this.warehouseCode = '';
|
|
2167
|
+
/** İki yönlü bağlanır; sahibi bileşen modalı bunu true yaparak açar. */
|
|
2168
|
+
this.visible = false;
|
|
2169
|
+
this.visibleChange = new EventEmitter();
|
|
2170
|
+
this.selected = new EventEmitter();
|
|
2171
|
+
this.pageSize = DEFAULT_PAGE_SIZE;
|
|
2172
|
+
this.allowedPageSizes = [25, 50, 100];
|
|
2173
|
+
this.searchTerm = '';
|
|
2174
|
+
this.isSearching = false;
|
|
2175
|
+
/** Her tuş vuruşunda sunucuya gitmemek için arama debounce edilir. */
|
|
2176
|
+
this.searchInput = new Subject();
|
|
2177
|
+
this.dataSource = new DataSource({
|
|
2178
|
+
store: new CustomStore({
|
|
2179
|
+
key: 'BinCode',
|
|
2180
|
+
// Grid, filtreleme/sıralamayı sunucuya bırakır; yalnızca skip/take gelir.
|
|
2181
|
+
loadMode: 'processed',
|
|
2182
|
+
load: loadOptions => this.loadPage(loadOptions),
|
|
2183
|
+
}),
|
|
2184
|
+
paginate: true,
|
|
2185
|
+
pageSize: DEFAULT_PAGE_SIZE,
|
|
2186
|
+
requireTotalCount: true,
|
|
2187
|
+
});
|
|
2188
|
+
this.searchInput.pipe(debounceTime(350), distinctUntilChanged()).subscribe(() => {
|
|
2189
|
+
// Yeni aramada ilk sayfaya dönülür, aksi halde kullanıcı boş bir sayfada kalabilir.
|
|
2190
|
+
this.dataSource.pageIndex(0);
|
|
2191
|
+
this.dataSource.reload();
|
|
2192
|
+
});
|
|
2193
|
+
}
|
|
2194
|
+
/** Sahibi bileşen modalı açmadan hemen önce çağırır. */
|
|
2195
|
+
open() {
|
|
2196
|
+
// Arama kutusu boş açılır ki kullanıcı istediğinde doğrudan listeyi gezebilsin.
|
|
2197
|
+
this.searchTerm = '';
|
|
2198
|
+
this.visible = true;
|
|
2199
|
+
this.visibleChange.emit(true);
|
|
2200
|
+
this.dataSource.pageIndex(0);
|
|
2201
|
+
this.dataSource.reload();
|
|
2202
|
+
}
|
|
2203
|
+
onSearchTermChange(term) {
|
|
2204
|
+
this.searchInput.next(term);
|
|
2205
|
+
}
|
|
2206
|
+
onRowDoubleClick(event) {
|
|
2207
|
+
if (event?.data) {
|
|
2208
|
+
this.select(event.data);
|
|
2209
|
+
}
|
|
2210
|
+
}
|
|
2211
|
+
select(bin) {
|
|
2212
|
+
this.selected.emit(bin);
|
|
2213
|
+
this.close();
|
|
2214
|
+
}
|
|
2215
|
+
close() {
|
|
2216
|
+
this.visible = false;
|
|
2217
|
+
this.visibleChange.emit(false);
|
|
2218
|
+
}
|
|
2219
|
+
async loadPage(loadOptions) {
|
|
2220
|
+
if (!this.warehouseCode) {
|
|
2221
|
+
return { data: [], totalCount: 0 };
|
|
2222
|
+
}
|
|
2223
|
+
const skip = loadOptions?.skip ?? 0;
|
|
2224
|
+
const take = loadOptions?.take ?? DEFAULT_PAGE_SIZE;
|
|
2225
|
+
this.isSearching = true;
|
|
2226
|
+
try {
|
|
2227
|
+
const result = await firstValueFrom(this.warehouseService.searchBinLocationsByWarehouse(this.warehouseCode, this.searchTerm.trim(), skip, take));
|
|
2228
|
+
return { data: result?.Items ?? [], totalCount: result?.TotalCount ?? 0 };
|
|
2229
|
+
}
|
|
2230
|
+
catch (error) {
|
|
2231
|
+
this.toaster.error(error?.error?.error?.message || 'Depo yerleri yüklenirken bir hata oluştu.');
|
|
2232
|
+
return { data: [], totalCount: 0 };
|
|
2233
|
+
}
|
|
2234
|
+
finally {
|
|
2235
|
+
this.isSearching = false;
|
|
2236
|
+
}
|
|
2237
|
+
}
|
|
2238
|
+
}
|
|
2239
|
+
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 });
|
|
2240
|
+
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"] }] });
|
|
2241
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BinLocationPickerComponent, decorators: [{
|
|
2242
|
+
type: Component,
|
|
2243
|
+
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"] }]
|
|
2244
|
+
}], ctorParameters: function () { return [{ type: WarehouseService }, { type: i2.ToasterService }]; }, propDecorators: { warehouseCode: [{
|
|
2245
|
+
type: Input
|
|
2246
|
+
}], visible: [{
|
|
2247
|
+
type: Input
|
|
2248
|
+
}], visibleChange: [{
|
|
2249
|
+
type: Output
|
|
2250
|
+
}], selected: [{
|
|
2251
|
+
type: Output
|
|
2252
|
+
}] } });
|
|
2253
|
+
|
|
2137
2254
|
class ConnectorParamsService {
|
|
2138
2255
|
constructor(restService) {
|
|
2139
2256
|
this.restService = restService;
|
|
@@ -2222,8 +2339,7 @@ class ConnectorParamsComponent {
|
|
|
2222
2339
|
{ value: 'MIKRO', label: 'Mikro ERP' },
|
|
2223
2340
|
];
|
|
2224
2341
|
this.warehouses = [];
|
|
2225
|
-
this.
|
|
2226
|
-
this.isLoadingBinLocations = false;
|
|
2342
|
+
this.isDummyBoxPickerOpen = false;
|
|
2227
2343
|
this.form = {
|
|
2228
2344
|
erpType: 'MIKRO',
|
|
2229
2345
|
baseUrl: '',
|
|
@@ -2275,10 +2391,6 @@ class ConnectorParamsComponent {
|
|
|
2275
2391
|
this.beeCellPasswordSet = params.beeCellPasswordSet ?? false;
|
|
2276
2392
|
}
|
|
2277
2393
|
this.isLoading = false;
|
|
2278
|
-
// Kayıtlı kaynak depo varsa, Dummy Kasa combobox'ının o depoya ait depo yerleriyle dolması için yükle.
|
|
2279
|
-
if (this.form.fromWarehouseCode) {
|
|
2280
|
-
this.loadBinLocations(this.form.fromWarehouseCode);
|
|
2281
|
-
}
|
|
2282
2394
|
},
|
|
2283
2395
|
error: err => {
|
|
2284
2396
|
this.toasterService.error(err?.error?.error?.message ?? 'Parametreler yüklenirken bir hata oluştu.');
|
|
@@ -2292,34 +2404,25 @@ class ConnectorParamsComponent {
|
|
|
2292
2404
|
get isCurrentWhsInList() {
|
|
2293
2405
|
return this.warehouses.some(w => w.WhsCode === this.form.targetWarehouseCode);
|
|
2294
2406
|
}
|
|
2295
|
-
get isCurrentDummyBoxInList() {
|
|
2296
|
-
return this.binLocations.some(b => b.BinCode === this.form.dummyBoxCode);
|
|
2297
|
-
}
|
|
2298
2407
|
/**
|
|
2299
|
-
* Kaynak Depo seçimi değiştiğinde çalışır
|
|
2300
|
-
*
|
|
2408
|
+
* Kaynak Depo seçimi değiştiğinde çalışır. Depo değiştiği için önceki depoya ait Dummy Kasa
|
|
2409
|
+
* seçimi artık geçerli değil — temizlenir. Depo yerleri artık burada YÜKLENMEZ; kullanıcı
|
|
2410
|
+
* "Seç" ile modalı açtığında sunucudan sayfa sayfa gelir (çok fazla veri combobox'ı kilitliyordu).
|
|
2301
2411
|
*/
|
|
2302
2412
|
onFromWarehouseChange(whsCode) {
|
|
2303
2413
|
this.form.fromWarehouseCode = whsCode;
|
|
2304
2414
|
this.form.dummyBoxCode = '';
|
|
2305
|
-
this.loadBinLocations(whsCode);
|
|
2306
2415
|
}
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2416
|
+
/** Dummy Kasa seçim modalını açar. Kaynak depo seçilmeden açılamaz. */
|
|
2417
|
+
openDummyBoxPicker() {
|
|
2418
|
+
if (!this.form.fromWarehouseCode) {
|
|
2419
|
+
this.toasterService.warn('Önce Kaynak Depo seçin.');
|
|
2310
2420
|
return;
|
|
2311
2421
|
}
|
|
2312
|
-
this.
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
this.isLoadingBinLocations = false;
|
|
2317
|
-
},
|
|
2318
|
-
error: () => {
|
|
2319
|
-
this.binLocations = [];
|
|
2320
|
-
this.isLoadingBinLocations = false;
|
|
2321
|
-
},
|
|
2322
|
-
});
|
|
2422
|
+
this.dummyBoxPicker?.open();
|
|
2423
|
+
}
|
|
2424
|
+
onDummyBoxSelected(bin) {
|
|
2425
|
+
this.form.dummyBoxCode = bin?.BinCode ?? '';
|
|
2323
2426
|
}
|
|
2324
2427
|
save() {
|
|
2325
2428
|
if (!this.form.erpType) {
|
|
@@ -2374,11 +2477,14 @@ class ConnectorParamsComponent {
|
|
|
2374
2477
|
}
|
|
2375
2478
|
}
|
|
2376
2479
|
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 });
|
|
2377
|
-
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 });
|
|
2480
|
+
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 "Se\u00E7"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 });
|
|
2378
2481
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ConnectorParamsComponent, decorators: [{
|
|
2379
2482
|
type: Component,
|
|
2380
|
-
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=\"
|
|
2381
|
-
}], ctorParameters: function () { return [{ type: ConnectorParamsService }, { type: i2.ToasterService }, { type: ConnectorParamsGuard }, { type: i1$1.Router }, { type: i1$1.ActivatedRoute }, { type: WarehouseService }]; }
|
|
2483
|
+
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 "Se\u00E7"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"] }]
|
|
2484
|
+
}], ctorParameters: function () { return [{ type: ConnectorParamsService }, { type: i2.ToasterService }, { type: ConnectorParamsGuard }, { type: i1$1.Router }, { type: i1$1.ActivatedRoute }, { type: WarehouseService }]; }, propDecorators: { dummyBoxPicker: [{
|
|
2485
|
+
type: ViewChild,
|
|
2486
|
+
args: [BinLocationPickerComponent, { static: false }]
|
|
2487
|
+
}] } });
|
|
2382
2488
|
|
|
2383
2489
|
const routes$1 = [
|
|
2384
2490
|
{ path: '', component: ConnectorParamsComponent },
|
|
@@ -2386,24 +2492,27 @@ const routes$1 = [
|
|
|
2386
2492
|
class ConnectorParamsModule {
|
|
2387
2493
|
}
|
|
2388
2494
|
ConnectorParamsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ConnectorParamsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2389
|
-
ConnectorParamsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ConnectorParamsModule, declarations: [ConnectorParamsComponent], imports: [CoreModule,
|
|
2495
|
+
ConnectorParamsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ConnectorParamsModule, declarations: [ConnectorParamsComponent, BinLocationPickerComponent], imports: [CoreModule,
|
|
2390
2496
|
ThemeSharedModule,
|
|
2391
2497
|
FormsModule,
|
|
2392
|
-
PageModule,
|
|
2498
|
+
PageModule,
|
|
2499
|
+
DxDataGridModule, i1$1.RouterModule] });
|
|
2393
2500
|
ConnectorParamsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ConnectorParamsModule, imports: [CoreModule,
|
|
2394
2501
|
ThemeSharedModule,
|
|
2395
2502
|
FormsModule,
|
|
2396
2503
|
PageModule,
|
|
2504
|
+
DxDataGridModule,
|
|
2397
2505
|
RouterModule.forChild(routes$1)] });
|
|
2398
2506
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ConnectorParamsModule, decorators: [{
|
|
2399
2507
|
type: NgModule,
|
|
2400
2508
|
args: [{
|
|
2401
|
-
declarations: [ConnectorParamsComponent],
|
|
2509
|
+
declarations: [ConnectorParamsComponent, BinLocationPickerComponent],
|
|
2402
2510
|
imports: [
|
|
2403
2511
|
CoreModule,
|
|
2404
2512
|
ThemeSharedModule,
|
|
2405
2513
|
FormsModule,
|
|
2406
2514
|
PageModule,
|
|
2515
|
+
DxDataGridModule,
|
|
2407
2516
|
RouterModule.forChild(routes$1),
|
|
2408
2517
|
],
|
|
2409
2518
|
}]
|