@hitsoft/smart-warehouse 1.0.1
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/README.md +24 -0
- package/config/enums/index.d.ts +1 -0
- package/config/enums/route-names.d.ts +12 -0
- package/config/index.d.ts +5 -0
- package/config/providers/connector-params-route.provider.d.ts +8 -0
- package/config/providers/index.d.ts +7 -0
- package/config/providers/order-station-route.provider.d.ts +8 -0
- package/config/providers/orders-route.provider.d.ts +8 -0
- package/config/providers/quantity-correction-route.provider.d.ts +8 -0
- package/config/providers/route.provider.d.ts +8 -0
- package/config/providers/shelf-placement-route.provider.d.ts +8 -0
- package/config/providers/shelf-transfer-route.provider.d.ts +8 -0
- package/config/providers/shortages-route.provider.d.ts +8 -0
- package/config/providers/station.provider.d.ts +8 -0
- package/config/providers/stock-report.d.ts +8 -0
- package/config/public-api.d.ts +3 -0
- package/config/smart-warehouse-config.module.d.ts +8 -0
- package/esm2020/config/enums/index.mjs +2 -0
- package/esm2020/config/enums/route-names.mjs +2 -0
- package/esm2020/config/hitsoft-smart-warehouse-config.mjs +5 -0
- package/esm2020/config/providers/connector-params-route.provider.mjs +25 -0
- package/esm2020/config/providers/index.mjs +8 -0
- package/esm2020/config/providers/order-station-route.provider.mjs +25 -0
- package/esm2020/config/providers/orders-route.provider.mjs +25 -0
- package/esm2020/config/providers/quantity-correction-route.provider.mjs +25 -0
- package/esm2020/config/providers/route.provider.mjs +24 -0
- package/esm2020/config/providers/shelf-placement-route.provider.mjs +25 -0
- package/esm2020/config/providers/shelf-transfer-route.provider.mjs +25 -0
- package/esm2020/config/providers/shortages-route.provider.mjs +25 -0
- package/esm2020/config/providers/station.provider.mjs +25 -0
- package/esm2020/config/providers/stock-report.mjs +25 -0
- package/esm2020/config/public-api.mjs +4 -0
- package/esm2020/config/smart-warehouse-config.module.mjs +37 -0
- package/esm2020/hitsoft-smart-warehouse.mjs +5 -0
- package/esm2020/lib/components/connector-params/connector-params.component.mjs +182 -0
- package/esm2020/lib/components/connector-params/connector-params.module.mjs +41 -0
- package/esm2020/lib/components/order-station/order-station.component.mjs +160 -0
- package/esm2020/lib/components/order-station/order-station.module.mjs +57 -0
- package/esm2020/lib/components/orders/orders.component.mjs +445 -0
- package/esm2020/lib/components/orders/orders.module.mjs +75 -0
- package/esm2020/lib/components/quantity-correction/quantity-correction.component.mjs +231 -0
- package/esm2020/lib/components/quantity-correction/quantity-correction.module.mjs +41 -0
- package/esm2020/lib/components/shelf-placement/shelf-placement.component.mjs +297 -0
- package/esm2020/lib/components/shelf-placement/shelf-placement.module.mjs +66 -0
- package/esm2020/lib/components/shelf-transfer/shelf-transfer.component.mjs +146 -0
- package/esm2020/lib/components/shelf-transfer/shelf-transfer.module.mjs +41 -0
- package/esm2020/lib/components/shortages/shortages.component.mjs +75 -0
- package/esm2020/lib/components/shortages/shortages.module.mjs +42 -0
- package/esm2020/lib/components/smart-warehouse.component.mjs +18 -0
- package/esm2020/lib/components/stock-report/stock-report.component.mjs +29 -0
- package/esm2020/lib/components/stock-report/stock-report.module.mjs +42 -0
- package/esm2020/lib/guards/connector-params.guard.mjs +58 -0
- package/esm2020/lib/hit-proxy/connector-params/connector-params.service.mjs +27 -0
- package/esm2020/lib/hit-proxy/devexpress-query-builder/devexpress-load-options.model.mjs +2 -0
- package/esm2020/lib/hit-proxy/devexpress-query-builder/devexpress-query-builder.mjs +62 -0
- package/esm2020/lib/hit-proxy/inventory/inventory.service.mjs +21 -0
- package/esm2020/lib/hit-proxy/order-station/order-station.service.mjs +18 -0
- package/esm2020/lib/hit-proxy/orders/model.mjs +2 -0
- package/esm2020/lib/hit-proxy/orders/order.service.mjs +81 -0
- package/esm2020/lib/hit-proxy/quantity-correction/quantity-correction.service.mjs +47 -0
- package/esm2020/lib/hit-proxy/shortages/model.mjs +2 -0
- package/esm2020/lib/hit-proxy/shortages/shortages.service.mjs +26 -0
- package/esm2020/lib/hit-proxy/stations/station.service.mjs +86 -0
- package/esm2020/lib/hit-proxy/stock-report/stock-report.service.mjs +22 -0
- package/esm2020/lib/hit-proxy/stock-transfer/stock-transfer.service.mjs +21 -0
- package/esm2020/lib/hit-proxy/warehouse/warehouse.service.mjs +65 -0
- package/esm2020/lib/services/smart-warehouse.service.mjs +21 -0
- package/esm2020/lib/smart-warehouse-routing.module.mjs +79 -0
- package/esm2020/lib/smart-warehouse.module.mjs +34 -0
- package/esm2020/lib/stations/station.component.mjs +43 -0
- package/esm2020/lib/stations/station.module.mjs +42 -0
- package/esm2020/public-api.mjs +20 -0
- package/fesm2015/hitsoft-smart-warehouse-config.mjs +264 -0
- package/fesm2015/hitsoft-smart-warehouse-config.mjs.map +1 -0
- package/fesm2015/hitsoft-smart-warehouse.mjs +2577 -0
- package/fesm2015/hitsoft-smart-warehouse.mjs.map +1 -0
- package/fesm2020/hitsoft-smart-warehouse-config.mjs +264 -0
- package/fesm2020/hitsoft-smart-warehouse-config.mjs.map +1 -0
- package/fesm2020/hitsoft-smart-warehouse.mjs +2515 -0
- package/fesm2020/hitsoft-smart-warehouse.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/connector-params/connector-params.component.d.ts +44 -0
- package/lib/components/connector-params/connector-params.module.d.ts +13 -0
- package/lib/components/order-station/order-station.component.d.ts +31 -0
- package/lib/components/order-station/order-station.module.d.ts +16 -0
- package/lib/components/orders/orders.component.d.ts +63 -0
- package/lib/components/orders/orders.module.d.ts +17 -0
- package/lib/components/quantity-correction/quantity-correction.component.d.ts +52 -0
- package/lib/components/quantity-correction/quantity-correction.module.d.ts +16 -0
- package/lib/components/shelf-placement/shelf-placement.component.d.ts +93 -0
- package/lib/components/shelf-placement/shelf-placement.module.d.ts +17 -0
- package/lib/components/shelf-transfer/shelf-transfer.component.d.ts +26 -0
- package/lib/components/shelf-transfer/shelf-transfer.module.d.ts +16 -0
- package/lib/components/shortages/shortages.component.d.ts +25 -0
- package/lib/components/shortages/shortages.module.d.ts +17 -0
- package/lib/components/smart-warehouse.component.d.ts +10 -0
- package/lib/components/stock-report/stock-report.component.d.ts +16 -0
- package/lib/components/stock-report/stock-report.module.d.ts +17 -0
- package/lib/guards/connector-params.guard.d.ts +21 -0
- package/lib/hit-proxy/connector-params/connector-params.service.d.ts +46 -0
- package/lib/hit-proxy/devexpress-query-builder/devexpress-load-options.model.d.ts +8 -0
- package/lib/hit-proxy/devexpress-query-builder/devexpress-query-builder.d.ts +17 -0
- package/lib/hit-proxy/inventory/inventory.service.d.ts +22 -0
- package/lib/hit-proxy/order-station/order-station.service.d.ts +24 -0
- package/lib/hit-proxy/orders/model.d.ts +74 -0
- package/lib/hit-proxy/orders/order.service.d.ts +26 -0
- package/lib/hit-proxy/quantity-correction/quantity-correction.service.d.ts +88 -0
- package/lib/hit-proxy/shortages/model.d.ts +17 -0
- package/lib/hit-proxy/shortages/shortages.service.d.ts +13 -0
- package/lib/hit-proxy/stations/station.service.d.ts +25 -0
- package/lib/hit-proxy/stock-report/stock-report.service.d.ts +12 -0
- package/lib/hit-proxy/stock-transfer/stock-transfer.service.d.ts +19 -0
- package/lib/hit-proxy/warehouse/warehouse.service.d.ts +59 -0
- package/lib/services/smart-warehouse.service.d.ts +10 -0
- package/lib/smart-warehouse-routing.module.d.ts +7 -0
- package/lib/smart-warehouse.module.d.ts +13 -0
- package/lib/stations/station.component.d.ts +14 -0
- package/lib/stations/station.module.d.ts +17 -0
- package/package.json +45 -0
- package/public-api.d.ts +16 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hitsoft-smart-warehouse.mjs","sources":["../../../projects/smart-warehouse/src/lib/services/smart-warehouse.service.ts","../../../projects/smart-warehouse/src/lib/components/smart-warehouse.component.ts","../../../projects/smart-warehouse/src/lib/hit-proxy/devexpress-query-builder/devexpress-query-builder.ts","../../../projects/smart-warehouse/src/lib/hit-proxy/orders/order.service.ts","../../../projects/smart-warehouse/src/lib/hit-proxy/warehouse/warehouse.service.ts","../../../projects/smart-warehouse/src/lib/components/orders/orders.component.ts","../../../projects/smart-warehouse/src/lib/components/orders/orders.component.html","../../../projects/smart-warehouse/src/lib/components/orders/orders.module.ts","../../../projects/smart-warehouse/src/lib/hit-proxy/inventory/inventory.service.ts","../../../projects/smart-warehouse/src/lib/components/shelf-placement/shelf-placement.component.ts","../../../projects/smart-warehouse/src/lib/components/shelf-placement/shelf-placement.component.html","../../../projects/smart-warehouse/src/lib/components/shelf-placement/shelf-placement.module.ts","../../../projects/smart-warehouse/src/lib/hit-proxy/stock-transfer/stock-transfer.service.ts","../../../projects/smart-warehouse/src/lib/components/shelf-transfer/shelf-transfer.component.ts","../../../projects/smart-warehouse/src/lib/components/shelf-transfer/shelf-transfer.component.html","../../../projects/smart-warehouse/src/lib/components/shelf-transfer/shelf-transfer.module.ts","../../../projects/smart-warehouse/src/lib/hit-proxy/order-station/order-station.service.ts","../../../projects/smart-warehouse/src/lib/components/order-station/order-station.component.ts","../../../projects/smart-warehouse/src/lib/components/order-station/order-station.component.html","../../../projects/smart-warehouse/src/lib/components/order-station/order-station.module.ts","../../../projects/smart-warehouse/src/lib/hit-proxy/stock-report/stock-report.service.ts","../../../projects/smart-warehouse/src/lib/components/stock-report/stock-report.component.ts","../../../projects/smart-warehouse/src/lib/components/stock-report/stock-report.component.html","../../../projects/smart-warehouse/src/lib/components/stock-report/stock-report.module.ts","../../../projects/smart-warehouse/src/lib/hit-proxy/shortages/shortages.service.ts","../../../projects/smart-warehouse/src/lib/components/shortages/shortages.component.ts","../../../projects/smart-warehouse/src/lib/components/shortages/shortages.component.html","../../../projects/smart-warehouse/src/lib/components/shortages/shortages.module.ts","../../../projects/smart-warehouse/src/lib/hit-proxy/stations/station.service.ts","../../../projects/smart-warehouse/src/lib/stations/station.component.ts","../../../projects/smart-warehouse/src/lib/stations/station.component.html","../../../projects/smart-warehouse/src/lib/stations/station.module.ts","../../../projects/smart-warehouse/src/lib/hit-proxy/quantity-correction/quantity-correction.service.ts","../../../projects/smart-warehouse/src/lib/components/quantity-correction/quantity-correction.component.ts","../../../projects/smart-warehouse/src/lib/components/quantity-correction/quantity-correction.component.html","../../../projects/smart-warehouse/src/lib/components/quantity-correction/quantity-correction.module.ts","../../../projects/smart-warehouse/src/lib/hit-proxy/connector-params/connector-params.service.ts","../../../projects/smart-warehouse/src/lib/guards/connector-params.guard.ts","../../../projects/smart-warehouse/src/lib/components/connector-params/connector-params.component.ts","../../../projects/smart-warehouse/src/lib/components/connector-params/connector-params.component.html","../../../projects/smart-warehouse/src/lib/components/connector-params/connector-params.module.ts","../../../projects/smart-warehouse/src/lib/smart-warehouse-routing.module.ts","../../../projects/smart-warehouse/src/lib/smart-warehouse.module.ts","../../../projects/smart-warehouse/src/public-api.ts","../../../projects/smart-warehouse/src/hitsoft-smart-warehouse.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { RestService } from '@abp/ng.core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmartWarehouseService {\r\n apiName = 'SmartWarehouse';\r\n\r\n constructor(private restService: RestService) {}\r\n\r\n sample() {\r\n return this.restService.request<void, any>(\r\n { method: 'GET', url: '/api/SmartWarehouse/sample' },\r\n { apiName: this.apiName }\r\n );\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { SmartWarehouseService } from '../services/smart-warehouse.service';\r\n\r\n@Component({\r\n selector: 'lib-smart-warehouse',\r\n template: ` <p>smart-warehouse works!</p> `,\r\n styles: [],\r\n})\r\nexport class SmartWarehouseComponent implements OnInit {\r\n constructor(private service: SmartWarehouseService) {}\r\n\r\n ngOnInit(): void {\r\n this.service.sample().subscribe(console.log);\r\n }\r\n}\r\n","import { EnvironmentService } from '@abp/ng.core';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport { Injectable } from '@angular/core';\r\nimport * as AspNetData from 'devextreme-aspnet-data-nojquery';\r\nimport { LoadOptions } from './devexpress-load-options.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DevexpressRestService {\r\n createStore = (options: LoadOptions) =>\r\n AspNetData.createStore({\r\n key: options.key,\r\n loadParams: options.params,\r\n loadUrl: `${this.envService.getEnvironment().apis.SmartWarehouse.url + '/' + options.loadUrl}`,\r\n insertUrl: options.insertUrl\r\n ? `${this.envService.getEnvironment().apis.SmartWarehouse.url + '/' + options.insertUrl}`\r\n : undefined,\r\n insertMethod: 'POST',\r\n updateUrl: options.updateUrl\r\n ? `${this.envService.getEnvironment().apis.SmartWarehouse.url + '/' + options.updateUrl}`\r\n : undefined,\r\n updateMethod: 'PUT',\r\n deleteUrl: options.deleteUrl\r\n ? `${this.envService.getEnvironment().apis.SmartWarehouse.url + '/' + options.deleteUrl}`\r\n : undefined,\r\n deleteMethod: 'DELETE',\r\n onBeforeSend(operation, ajaxSettings) {\r\n if (operation === 'insert' || operation === 'update' || operation === 'delete') {\r\n if (operation === 'delete') {\r\n ajaxSettings.url =\r\n ajaxSettings.url + '/' + localStorage.getItem('appointment-deleted-id');\r\n }\r\n ajaxSettings.contentType = 'application/json';\r\n ajaxSettings.data = ajaxSettings.data.values;\r\n }\r\n ajaxSettings.headers = {\r\n Authorization: 'Bearer ' + localStorage.getItem('access_token'),\r\n };\r\n },\r\n onAjaxError: this.onAjaxError,\r\n });\r\n\r\n onAjaxError(e: { xhr; error }) {\r\n try {\r\n let jsonObj = e.xhr.responseJSON || JSON.parse(e.xhr.responseText);\r\n e.error = jsonObj?.error?.message \r\n ? `${jsonObj.error.message}${jsonObj.error.details ? ' : ' + jsonObj.error.details : ''}` \r\n : jsonObj?.error || `Server error: ${e.xhr.status} ${e.xhr.statusText}`;\r\n } catch (err) {\r\n e.error = `Server error: ${e.xhr.status} ${e.xhr.statusText}`;\r\n }\r\n }\r\n\r\n constructor(private envService: EnvironmentService, private toaster: ToasterService) {}\r\n}\r\n","import { RestService } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\nimport { DevexpressRestService } from '../devexpress-query-builder/devexpress-query-builder';\r\nimport { SapOrderDto, ReservationResultDto } from './model';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class OrderService {\r\n apiName = 'SmartWarehouse';\r\n\r\n loadOrders = this.devexService.createStore({\r\n key: 'DocEntry',\r\n loadUrl: 'api/smart-warehouse/sap-orders/load-orders',\r\n });\r\n\r\n getAllOrders = () =>\r\n this.restService.request<any, SapOrderDto[]>(\r\n {\r\n method: 'GET',\r\n url: '/api/smart-warehouse/sap-orders/get-all-orders',\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n getOrderByDocEntry = (docEntry: number): Observable<SapOrderDto> =>\r\n this.restService.request<any, SapOrderDto>(\r\n {\r\n method: 'GET',\r\n url: `/api/smart-warehouse/sap-orders/get-order/${docEntry}`,\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n startTask = (docEntries: number[]): Observable<string> =>\r\n this.restService.request<any, string>(\r\n {\r\n method: 'POST',\r\n url: '/api/smart-warehouse/sap-orders/start-task',\r\n body: { docEntries },\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n approveTask = (docEntries: number[], orderType?: string): Observable<string> =>\r\n this.restService.request<any, string>(\r\n {\r\n method: 'POST',\r\n url: '/api/smart-warehouse/sap-orders/approve-task',\r\n body: { docEntries, orderType },\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n closeOrder = (docEntries: number[]): Observable<string> =>\r\n this.restService.request<any, string>(\r\n {\r\n method: 'POST',\r\n url: '/api/smart-warehouse/sap-orders/close-order',\r\n body: { docEntries },\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n // ── Reservation Methods ──\r\n\r\n reserveOrders = (docEntries: number[], warehouseCode: string): Observable<ReservationResultDto> =>\r\n this.restService.request<any, ReservationResultDto>(\r\n {\r\n method: 'POST',\r\n url: '/api/smart-warehouse/sap-reservations/reserve-orders',\r\n body: { docEntries, warehouseCode },\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n reserveAllOrders = (warehouseCode: string, orderType?: string, overwriteExisting = false): Observable<ReservationResultDto> =>\r\n this.restService.request<any, ReservationResultDto>(\r\n {\r\n method: 'POST',\r\n url: '/api/smart-warehouse/sap-reservations/reserve-all-orders',\r\n body: { warehouseCode, orderType: orderType || '', overwriteExisting },\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n cancelReservations = (docEntries: number[]): Observable<ReservationResultDto> =>\r\n this.restService.request<any, ReservationResultDto>(\r\n {\r\n method: 'POST',\r\n url: '/api/smart-warehouse/sap-reservations/cancel-reservations',\r\n body: { docEntries },\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n cancelAllReservations = (orderType?: string): Observable<ReservationResultDto> =>\r\n this.restService.request<any, ReservationResultDto>(\r\n {\r\n method: 'POST',\r\n url: '/api/smart-warehouse/sap-reservations/cancel-all-reservations',\r\n body: { orderType: orderType || '' },\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n updateTaskStatus = (docEntries: number[]): Observable<string> =>\r\n this.restService.request<any, string>(\r\n {\r\n method: 'POST',\r\n url: '/api/smart-warehouse/sap-orders/update-task-status',\r\n body: { docEntries },\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n getEmptyBoxes = (stationId: number, shelfId: number, boxCount: number, warehouseCode: string): Observable<string> =>\r\n this.restService.request<any, string>(\r\n {\r\n method: 'POST',\r\n url: '/api/smart-warehouse/sap-orders/get-empty-boxes',\r\n body: { stationId, shelfId, boxCount, warehouseCode },\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n getHalfBoxes = (stationId: number, shelfId: number, boxCount: number, warehouseCode: string): Observable<string> =>\r\n this.restService.request<any, string>(\r\n {\r\n method: 'POST',\r\n url: '/api/smart-warehouse/sap-orders/get-half-boxes',\r\n body: { stationId, shelfId, boxCount, warehouseCode },\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n constructor(private restService: RestService, private devexService: DevexpressRestService) {}\r\n}\r\n","import { RestService } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface WarehouseDto {\r\n WhsCode: string;\r\n WhsName: string;\r\n}\r\n\r\nexport interface BinLocationDto {\r\n AbsEntry: number;\r\n BinCode: string;\r\n Warehouse: string;\r\n}\r\n\r\nexport interface BinLocationContentDto {\r\n BinAbsEntry: number;\r\n ItemCode: string;\r\n ItemName: string;\r\n BatchNumber: string;\r\n OnHandQty: number;\r\n WarehouseCode: string;\r\n}\r\n\r\nexport interface ItemInfoDto {\r\n ItemCode: string;\r\n ItemName: string;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class WarehouseService {\r\n apiName = 'SmartWarehouse';\r\n\r\n /**\r\n * U_SWSmartWhs = \"Y\" olan depoları getirir\r\n */\r\n getSmartWarehouses = (): Observable<WarehouseDto[]> =>\r\n this.restService.request<any, WarehouseDto[]>(\r\n {\r\n method: 'GET',\r\n url: '/api/smart-warehouse/sap-warehouses/get-smart-warehouses',\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n /**\r\n * Seçilen depoya ait depo yerlerini (bin locations) getirir\r\n */\r\n getBinLocationsByWarehouse = (whsCode: string): Observable<BinLocationDto[]> =>\r\n this.restService.request<any, BinLocationDto[]>(\r\n {\r\n method: 'GET',\r\n url: `/api/smart-warehouse/sap-warehouses/get-bin-locations/${whsCode}`,\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n /**\r\n * Tüm akıllı depolardaki depo yerlerini getirir\r\n */\r\n getAllBinLocations = (): Observable<BinLocationDto[]> =>\r\n this.restService.request<any, BinLocationDto[]>(\r\n {\r\n method: 'GET',\r\n url: '/api/smart-warehouse/sap-warehouses/get-all-bin-locations',\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n /**\r\n * Belirtilen depo yerindeki stok bilgisini getirir\r\n */\r\n getBinLocationContent = (binAbsEntry: number): Observable<BinLocationContentDto> =>\r\n this.restService.request<any, BinLocationContentDto>(\r\n {\r\n method: 'GET',\r\n url: `/api/smart-warehouse/sap-warehouses/get-bin-location-content/${binAbsEntry}`,\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n /**\r\n * Kalem koduna göre SAP'den kalem adını getirir\r\n */\r\n getItemNameByCode = (itemCode: string): Observable<string> =>\r\n this.restService.request<any, string>(\r\n {\r\n method: 'GET',\r\n url: `/api/smart-warehouse/sap-warehouses/get-item-name/${itemCode}`,\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n /**\r\n * Barkod üzerinden SAP'den kalem bilgisini getirir\r\n */\r\n getItemByBarcode = (barcode: string): Observable<ItemInfoDto> =>\r\n this.restService.request<any, ItemInfoDto>(\r\n {\r\n method: 'GET',\r\n url: `/api/smart-warehouse/sap-warehouses/get-item-by-barcode/${barcode}`,\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n /**\r\n * BinCode üzerinden SAP'den depo yeri bilgisini (AbsEntry) getirir\r\n */\r\n getBinLocationByBinCode = (binCode: string): Observable<BinLocationDto> =>\r\n this.restService.request<any, BinLocationDto>(\r\n {\r\n method: 'GET',\r\n url: `/api/smart-warehouse/sap-warehouses/get-bin-location-by-bincode/${binCode}`,\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { DxDataGridComponent } from 'devextreme-angular';\r\nimport { OrderService } from '../../hit-proxy/orders/order.service';\r\nimport { SapOrderDto, ReservationResultDto } from '../../hit-proxy/orders/model';\r\nimport { WarehouseService, WarehouseDto } from '../../hit-proxy/warehouse/warehouse.service';\r\nimport { ConfirmationService, ToasterService } from '@abp/ng.theme.shared';\r\nimport DataSource from 'devextreme/data/data_source';\r\n\r\n@Component({\r\n selector: 'lib-orders',\r\n templateUrl: './orders.component.html',\r\n styleUrls: ['./orders.component.scss'],\r\n})\r\nexport class OrdersComponent implements OnInit {\r\n @ViewChild('dxOrdersInstance', { static: false }) dxOrdersInstance: DxDataGridComponent;\r\n\r\n ordersDataSource: DataSource;\r\n selectedOrders: SapOrderDto[] = [];\r\n\r\n // Toolbar filters\r\n selectedWarehouse: string = '';\r\n selectedDate: string = new Date().toISOString().substring(0, 10);\r\n activeListType: string | null = null; // null = tümü, '1' | '2' | '3'\r\n activeStatus: string | null = null; // null = tümü, 'beklemede' (0) | 'onayBekliyor' (1) | 'isleniyor' (2) | 'tamamlandi' (3)\r\n\r\n private readonly statusMap: { [key: string]: string } = {\r\n beklemede: '0',\r\n onayBekliyor: '1',\r\n isleniyor: '2',\r\n tamamlandi: '3',\r\n };\r\n\r\n // Additional inputs\r\n customInputValue: string = '';\r\n\r\n warehouses: WarehouseDto[] = [];\r\n isLoadingWarehouses: boolean = false;\r\n\r\n isGorevBaslatLoading: boolean = false;\r\n isReservationLoading: boolean = false;\r\n isBeeCellLoading: boolean = false;\r\n\r\n bosKasaPopupVisible: boolean = false;\r\n bosKasaStationId: number = 1;\r\n bosKasaShelfId: number = 1;\r\n bosKasaBoxCount: number = 5;\r\n bosKasaMode: 'empty' | 'half' = 'empty';\r\n\r\n constructor(\r\n private readonly orderService: OrderService,\r\n private readonly warehouseService: WarehouseService,\r\n private readonly toasterService: ToasterService,\r\n private readonly confirmationService: ConfirmationService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.loadWarehouses();\r\n this.setupDataSource();\r\n }\r\n\r\n private loadWarehouses(): void {\r\n this.isLoadingWarehouses = true;\r\n this.warehouseService.getSmartWarehouses().subscribe({\r\n next: (data) => {\r\n this.warehouses = data || [];\r\n if (this.warehouses.length > 0) {\r\n this.selectedWarehouse = this.warehouses[0].WhsCode;\r\n }\r\n this.isLoadingWarehouses = false;\r\n },\r\n error: (err) => {\r\n console.error('Depolar yüklenemedi:', err);\r\n this.toasterService.error('Depolar yüklenemedi.');\r\n this.isLoadingWarehouses = false;\r\n }\r\n });\r\n }\r\n\r\n private setupDataSource(): void {\r\n this.ordersDataSource = new DataSource({\r\n store: this.orderService.loadOrders,\r\n filter: this.buildCombinedFilter(),\r\n });\r\n }\r\n\r\n private buildCombinedFilter(): any {\r\n const statusFilter = this.buildStatusFilter();\r\n const listTypeFilter = this.buildListTypeFilter();\r\n\r\n if (statusFilter && listTypeFilter) {\r\n return [statusFilter, 'and', listTypeFilter];\r\n }\r\n return statusFilter || listTypeFilter || null;\r\n }\r\n\r\n private buildListTypeFilter(): any {\r\n if (!this.activeListType) {\r\n return null;\r\n }\r\n return ['U_SWOrderType', '=', this.activeListType];\r\n }\r\n\r\n private buildStatusFilter(): any {\r\n if (!this.activeStatus) {\r\n return null;\r\n }\r\n\r\n if (this.activeStatus === 'beklemede') {\r\n // SAP'dan gelen U_SWDurum null/boş değerler backend'de '0' olarak normalize ediliyor\r\n return ['U_SWDurum', '=', '0'];\r\n }\r\n\r\n return ['U_SWDurum', '=', this.statusMap[this.activeStatus]];\r\n }\r\n\r\n toggleStatus(key: string): void {\r\n this.activeStatus = this.activeStatus === key ? null : key;\r\n this.applyFilters();\r\n }\r\n\r\n toggleListType(key: string): void {\r\n this.activeListType = this.activeListType === key ? null : key;\r\n this.applyFilters();\r\n }\r\n\r\n private applyFilters(): void {\r\n // Depo Talepleri de dahil, üç chip de aynı SAP siparişleri kaynağını (U_SWOrderType filtresiyle) kullanır.\r\n // DataSource yeniden oluşturulup grid'e atanıyor; mevcut DataSource üzerinde .filter()+.reload()\r\n // çağırmak grid'e yansımıyordu çünkü Angular binding sadece referans değişince tetikleniyor.\r\n this.ordersDataSource = new DataSource({\r\n store: this.orderService.loadOrders,\r\n filter: this.buildCombinedFilter(),\r\n });\r\n }\r\n\r\n onSelectionChanged(e: any): void {\r\n this.selectedOrders = e.selectedRowsData || [];\r\n }\r\n\r\n onRowClick(e: any): void {\r\n // Eğer expand/collapse icon'una veya checkbox'a tıklandıysa, DevExtreme'in kendi davranışını kullan\r\n const target = e.event?.target as HTMLElement;\r\n if (target?.closest('.dx-command-expand') || target?.closest('.dx-master-detail-cell') || target?.closest('.dx-select-checkbox') || target?.closest('.dx-command-select')) {\r\n return;\r\n }\r\n\r\n if (e.rowType === 'data') {\r\n const isExpanded = e.component.isRowExpanded(e.key);\r\n if (isExpanded) {\r\n e.component.collapseRow(e.key);\r\n } else {\r\n e.component.expandRow(e.key);\r\n }\r\n }\r\n }\r\n\r\n onRowPrepared(e: any): void {\r\n if (e.rowType === 'data' && e.data?.U_SWIsError === 'Y') {\r\n e.rowElement.classList.add('order-row-error');\r\n }\r\n }\r\n\r\n onGorevBaslat(): void {\r\n if (!this.selectedOrders || this.selectedOrders.length === 0) {\r\n this.toasterService.warn('Lütfen en az bir sipariş seçiniz.');\r\n return;\r\n }\r\n\r\n // Validate: U_SWDurum must be \"1\" (Onay Bekliyor)\r\n const invalidStatus = this.selectedOrders.filter(\r\n o => o.U_SWDurum !== '1'\r\n );\r\n if (invalidStatus.length > 0) {\r\n const docNums = invalidStatus.map(o => o.DocNum).join(', ');\r\n this.toasterService.error(\r\n `Şu siparişlerin durumu \"Onay Bekliyor\" değil: ${docNums}. Sadece eşlemesi yapılmış siparişler için görev başlatılabilir.`\r\n );\r\n return;\r\n }\r\n\r\n // Validate: U_SWStationCode must be filled\r\n const noStation = this.selectedOrders.filter(\r\n o => !o.U_SWStationCode || o.U_SWStationCode.trim() === ''\r\n );\r\n if (noStation.length > 0) {\r\n const docNums = noStation.map(o => o.DocNum).join(', ');\r\n this.toasterService.error(\r\n `Şu siparişlerin istasyon bilgisi boş: ${docNums}. İstasyon alanı dolu olmalıdır.`\r\n );\r\n return;\r\n }\r\n\r\n const docEntries = this.selectedOrders.map(o => o.DocEntry);\r\n\r\n this.isGorevBaslatLoading = true;\r\n this.orderService.startTask(docEntries).subscribe({\r\n next: (result) => {\r\n this.toasterService.success(result);\r\n this.isGorevBaslatLoading = false;\r\n this.dxOrdersInstance?.instance?.refresh();\r\n this.dxOrdersInstance?.instance?.clearSelection();\r\n },\r\n error: (error) => {\r\n const errorMessage = error?.error?.error?.message || 'Görev başlatılırken bir hata oluştu.';\r\n this.toasterService.error(errorMessage);\r\n this.isGorevBaslatLoading = false;\r\n },\r\n });\r\n }\r\n\r\n // Görevi Tamamla: İşleniyor (2) durumundaki siparişleri BeeCell görevi bitmişse doğrudan\r\n // Tamamlandı'ya (3) götürür — eski \"Görev Tamamla\" + \"Onay Ver\" iki adımı, eski sistemin\r\n // tek-aksiyon davranışına uygun şekilde tek butonda birleştirir.\r\n onOnayVer(): void {\r\n if (!this.selectedOrders || this.selectedOrders.length === 0) {\r\n this.toasterService.warn('Lütfen en az bir sipariş seçiniz.');\r\n return;\r\n }\r\n\r\n // Validate: U_SWDurum \"2\" (İşleniyor) olmalı\r\n const invalidStatus = this.selectedOrders.filter(\r\n o => !o.U_SWDurum || o.U_SWDurum !== '2'\r\n );\r\n if (invalidStatus.length > 0) {\r\n const docNums = invalidStatus.map(o => o.DocNum).join(', ');\r\n this.toasterService.error(\r\n `Şu siparişlerin durumu \"İşleniyor\" değil: ${docNums}. Sadece bu durumdaki siparişler tamamlanabilir.`\r\n );\r\n return;\r\n }\r\n\r\n const docEntries = this.selectedOrders.map(o => o.DocEntry);\r\n\r\n this.confirmationService\r\n .warn('Seçili siparişler tamamlanacak. Stok nakli ve fatura oluşturulacaktır. Emin misiniz?', 'Görevi Tamamla')\r\n .subscribe((status) => {\r\n if (status === 'confirm') {\r\n this.orderService.approveTask(docEntries, this.activeListType).subscribe({\r\n next: (result) => {\r\n this.toasterService.success(result);\r\n this.dxOrdersInstance?.instance?.refresh();\r\n this.dxOrdersInstance?.instance?.clearSelection();\r\n },\r\n error: (error) => {\r\n const errorMessage = error?.error?.error?.message || 'Onay verilirken bir hata oluştu.';\r\n this.toasterService.error(errorMessage);\r\n },\r\n });\r\n }\r\n });\r\n }\r\n\r\n // ── Sipariş(ler)i sevkiyata sokmadan doğrudan kapat ──\r\n onSiparisKapat(): void {\r\n if (!this.selectedOrders || this.selectedOrders.length === 0) {\r\n this.toasterService.warn('Lütfen en az bir sipariş seçiniz.');\r\n return;\r\n }\r\n\r\n // \"İşleniyor\" (aktif BeeCell görevi) durumundaki siparişler kapatılamaz\r\n const invalidStatus = this.selectedOrders.filter(o => o.U_SWDurum === '2');\r\n if (invalidStatus.length > 0) {\r\n const docNums = invalidStatus.map(o => o.DocNum).join(', ');\r\n this.toasterService.error(\r\n `Şu siparişler \"İşleniyor\" durumunda (aktif görev var): ${docNums}. Önce görevi tamamlayın ya da BeeCell'de iptal edin.`\r\n );\r\n return;\r\n }\r\n\r\n const docEntries = this.selectedOrders.map(o => o.DocEntry);\r\n const docNums = this.selectedOrders.map(o => o.DocNum).join(', ');\r\n\r\n this.confirmationService\r\n .warn(\r\n `${docNums} numaralı siparişler sevkiyata sokulmadan doğrudan \"Tamamlandı\" olarak kapatılacak. ` +\r\n 'Hiçbir stok hareketi/irsaliye/fatura oluşturulmayacak. Emin misiniz?',\r\n 'Sipariş Kapat'\r\n )\r\n .subscribe((status) => {\r\n if (status === 'confirm') {\r\n this.orderService.closeOrder(docEntries).subscribe({\r\n next: (result) => {\r\n this.toasterService.success(result);\r\n this.dxOrdersInstance?.instance?.refresh();\r\n this.dxOrdersInstance?.instance?.clearSelection();\r\n },\r\n error: (error) => {\r\n const errorMessage = error?.error?.error?.message || 'Sipariş kapatılırken bir hata oluştu.';\r\n this.toasterService.error(errorMessage);\r\n },\r\n });\r\n }\r\n });\r\n }\r\n\r\n onBosKasaGetir(): void {\r\n this.bosKasaMode = 'empty';\r\n this.bosKasaPopupVisible = true;\r\n }\r\n\r\n onYarimKasa(): void {\r\n this.bosKasaMode = 'half';\r\n this.bosKasaPopupVisible = true;\r\n }\r\n\r\n onBosKasaGonder(): void {\r\n this.bosKasaPopupVisible = false;\r\n this.isBeeCellLoading = true;\r\n\r\n const call = this.bosKasaMode === 'empty'\r\n ? this.orderService.getEmptyBoxes(this.bosKasaStationId, this.bosKasaShelfId, this.bosKasaBoxCount, this.selectedWarehouse)\r\n : this.orderService.getHalfBoxes(this.bosKasaStationId, this.bosKasaShelfId, this.bosKasaBoxCount, this.selectedWarehouse);\r\n\r\n call.subscribe({\r\n next: (result) => {\r\n this.toasterService.success(result);\r\n this.isBeeCellLoading = false;\r\n },\r\n error: (error) => {\r\n const errorMessage = error?.error?.error?.message || 'BeeCell görevi oluşturulurken hata oluştu.';\r\n this.toasterService.error(errorMessage);\r\n this.isBeeCellLoading = false;\r\n },\r\n });\r\n }\r\n\r\n onDurumGuncelle(): void {\r\n if (!this.selectedOrders || this.selectedOrders.length === 0) {\r\n this.toasterService.warn('Lütfen en az bir sipariş seçiniz.');\r\n return;\r\n }\r\n\r\n const docEntries = this.selectedOrders.map(o => o.DocEntry);\r\n this.isBeeCellLoading = true;\r\n\r\n this.orderService.updateTaskStatus(docEntries).subscribe({\r\n next: (result) => {\r\n this.toasterService.success(result);\r\n this.isBeeCellLoading = false;\r\n this.dxOrdersInstance?.instance?.refresh();\r\n },\r\n error: (error) => {\r\n const errorMessage = error?.error?.error?.message || 'Durum güncellenirken hata oluştu.';\r\n this.toasterService.error(errorMessage);\r\n this.isBeeCellLoading = false;\r\n },\r\n });\r\n }\r\n\r\n // ── Seçili siparişler için rezervasyon yap ──\r\n onRezervasyonYap(): void {\r\n if (!this.selectedOrders || this.selectedOrders.length === 0) {\r\n this.toasterService.warn('Lütfen en az bir sipariş seçiniz.');\r\n return;\r\n }\r\n\r\n if (!this.selectedWarehouse) {\r\n this.toasterService.warn('Lütfen bir depo seçiniz.');\r\n return;\r\n }\r\n\r\n // Sadece Beklemede (0) siparişler için rezervasyon yapılabilir\r\n const invalidStatus = this.selectedOrders.filter(\r\n o => o.U_SWDurum && o.U_SWDurum !== '0'\r\n );\r\n if (invalidStatus.length > 0) {\r\n const docNums = invalidStatus.map(o => o.DocNum).join(', ');\r\n this.toasterService.error(\r\n `Şu siparişlerin durumu \"Beklemede\" değil: ${docNums}. Sadece beklemede olan siparişler için rezervasyon yapılabilir.`\r\n );\r\n return;\r\n }\r\n\r\n const docEntries = this.selectedOrders.map(o => o.DocEntry);\r\n this.isReservationLoading = true;\r\n\r\n this.orderService.reserveOrders(docEntries, this.selectedWarehouse).subscribe({\r\n next: (result: ReservationResultDto) => {\r\n this.handleReservationResult(result);\r\n this.isReservationLoading = false;\r\n this.dxOrdersInstance?.instance?.refresh();\r\n this.dxOrdersInstance?.instance?.clearSelection();\r\n },\r\n error: (error) => {\r\n const errorMessage = error?.error?.error?.message || 'Rezervasyon yapılırken bir hata oluştu.';\r\n this.toasterService.error(errorMessage);\r\n this.isReservationLoading = false;\r\n },\r\n });\r\n }\r\n\r\n // ── Seçili siparişlerin rezervasyonlarını sil ──\r\n onRezervasyonSil(): void {\r\n if (!this.selectedOrders || this.selectedOrders.length === 0) {\r\n this.toasterService.warn('Lütfen en az bir sipariş seçiniz.');\r\n return;\r\n }\r\n\r\n const docEntries = this.selectedOrders.map(o => o.DocEntry);\r\n const docNums = this.selectedOrders.map(o => o.DocNum).join(', ');\r\n\r\n this.confirmationService\r\n .warn(`${docNums} numaralı siparişlerin rezervasyonları iptal edilecektir. Emin misiniz?`, 'Rezervasyon İptal')\r\n .subscribe((status) => {\r\n if (status === 'confirm') {\r\n this.isReservationLoading = true;\r\n this.orderService.cancelReservations(docEntries).subscribe({\r\n next: (result: ReservationResultDto) => {\r\n this.handleReservationResult(result);\r\n this.isReservationLoading = false;\r\n this.dxOrdersInstance?.instance?.refresh();\r\n this.dxOrdersInstance?.instance?.clearSelection();\r\n },\r\n error: (error) => {\r\n const errorMessage = error?.error?.error?.message || 'Rezervasyon iptal edilirken bir hata oluştu.';\r\n this.toasterService.error(errorMessage);\r\n this.isReservationLoading = false;\r\n },\r\n });\r\n }\r\n });\r\n }\r\n\r\n // ── Toplu rezervasyon yap (tüm uygun siparişler) ──\r\n onTopluRezervasyonYap(): void {\r\n if (!this.selectedWarehouse) {\r\n this.toasterService.warn('Lütfen bir depo seçiniz.');\r\n return;\r\n }\r\n\r\n // Zaten rezervasyonu olan siparişler için kullanıcıya seçim sun:\r\n // - \"Yeniden Hesapla\" (confirm) → mevcut rezervasyonları silip yeniden kurar (overwriteExisting=true)\r\n // - \"Sadece Yeni Siparişler\" (reject) → mevcutları korur, yalnızca rezervasyonsuzları işler (false)\r\n // - Diyaloğu kapatma (dismiss) → işlemi iptal eder\r\n this.confirmationService\r\n .warn(\r\n 'Zaten rezervasyonu olan siparişler için ne yapılsın? \"Yeniden Hesapla\" mevcut rezervasyonları silip yeniden kurar; ' +\r\n '\"Sadece Yeni Siparişler\" mevcutları korur ve yalnızca rezervasyonsuz siparişleri işler.',\r\n 'Toplu Rezervasyon',\r\n { yesText: 'Yeniden Hesapla', cancelText: 'Sadece Yeni Siparişler', dismissible: true }\r\n )\r\n .subscribe((status) => {\r\n if (status === 'dismiss') {\r\n return; // iptal\r\n }\r\n\r\n const overwriteExisting = status === 'confirm';\r\n\r\n this.isReservationLoading = true;\r\n this.orderService.reserveAllOrders(this.selectedWarehouse, this.activeListType, overwriteExisting).subscribe({\r\n next: (result: ReservationResultDto) => {\r\n this.handleReservationResult(result);\r\n this.isReservationLoading = false;\r\n this.dxOrdersInstance?.instance?.refresh();\r\n this.dxOrdersInstance?.instance?.clearSelection();\r\n },\r\n error: (error) => {\r\n const errorMessage = error?.error?.error?.message || 'Toplu rezervasyon yapılırken bir hata oluştu.';\r\n this.toasterService.error(errorMessage);\r\n this.isReservationLoading = false;\r\n },\r\n });\r\n });\r\n }\r\n\r\n // ── Toplu rezervasyon sil (tüm aktif rezervasyonlar) ──\r\n onTumRezervasyonlariSil(): void {\r\n this.confirmationService\r\n .warn('Tüm aktif rezervasyonlar silinecektir. Emin misiniz?', 'Tüm Rezervasyonları Sil')\r\n .subscribe((status) => {\r\n if (status === 'confirm') {\r\n this.isReservationLoading = true;\r\n this.orderService.cancelAllReservations(this.activeListType).subscribe({\r\n next: (result: ReservationResultDto) => {\r\n this.handleReservationResult(result);\r\n this.isReservationLoading = false;\r\n this.dxOrdersInstance?.instance?.refresh();\r\n this.dxOrdersInstance?.instance?.clearSelection();\r\n },\r\n error: (error) => {\r\n const errorMessage = error?.error?.error?.message || 'Rezervasyonlar silinirken bir hata oluştu.';\r\n this.toasterService.error(errorMessage);\r\n this.isReservationLoading = false;\r\n },\r\n });\r\n }\r\n });\r\n }\r\n\r\n private static readonly MAX_SHORT_ITEMS_DETAILED = 5;\r\n\r\n private handleReservationResult(result: ReservationResultDto): void {\r\n const shortsOrders = result.OrderResults?.filter(r => r.Shorts && r.Shorts.length > 0) || [];\r\n const hasShorts = shortsOrders.length > 0;\r\n\r\n if (result.FailCount === 0 && !hasShorts) {\r\n this.toasterService.success(result.Summary);\r\n } else if (result.SuccessCount > 0) {\r\n this.toasterService.warn(result.Summary);\r\n } else {\r\n this.toasterService.error(result.Summary);\r\n }\r\n\r\n // Eksik kalemler varsa detay göster\r\n if (hasShorts) {\r\n const totalShortItems = shortsOrders.reduce((sum, o) => sum + o.Shorts.length, 0);\r\n\r\n const shortMessage = totalShortItems > OrdersComponent.MAX_SHORT_ITEMS_DETAILED\r\n ? `Kalem miktarları eksik (${shortsOrders.length} sipariş, ${totalShortItems} kalem).`\r\n : `Eksik Kalemler:\\n${shortsOrders\r\n .map(o => `Sipariş ${o.DocNum}: ${o.Shorts.map(s => `${s.ItemCode} (eksik: ${s.ShortQty})`).join(', ')}`)\r\n .join('\\n')}`;\r\n\r\n this.toasterService.warn(shortMessage);\r\n }\r\n }\r\n\r\n onRefresh(): void {\r\n this.dxOrdersInstance?.instance?.refresh();\r\n }\r\n\r\n onExportExcel(): void {\r\n // TODO: Implement\r\n }\r\n}\r\n","<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ş 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şleri\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ğıtım Siparişleri\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> İşleniyor\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ı\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ümü</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örev Başlat\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örevi 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ş 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üncelle\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ş 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ım 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çık' : 'Kapalı' }}\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' ? 'İşleniyor' :\r\n cell.value === '3' ? 'Tamamlandı' : '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şleri' :\r\n cell.value === '2' ? 'Dağıtım Siparişleri' :\r\n cell.value === '3' ? 'Depo Talepleri' : '-'\r\n }}\r\n </span>\r\n </div>\r\n\r\n <!-- Master-Detail: Sipariş Satırları -->\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ş Satırları\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ı\"\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ş / Yarım 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ş Kasa Getir' : 'Yarım 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\">İstasyon 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=\"İptal\" (onClick)=\"bosKasaPopupVisible = false\" type=\"normal\"></dx-button>\r\n <dx-button\r\n [text]=\"bosKasaMode === 'empty' ? 'Boş Kasa Gönder' : 'Yarım Kasa Gönder'\"\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","import { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { CommercialUiModule } from '@volo/abp.commercial.ng.ui';\r\nimport { PageModule } from '@abp/ng.components/page';\r\nimport { OrdersComponent } from './orders.component';\r\nimport { DxDataGridModule, DxPopupModule, DxNumberBoxModule, DxButtonModule } from 'devextreme-angular';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: OrdersComponent,\r\n },\r\n];\r\n\r\n@NgModule({\r\n declarations: [OrdersComponent],\r\n imports: [\r\n CoreModule,\r\n ThemeSharedModule,\r\n FormsModule,\r\n CommercialUiModule,\r\n NgxValidateCoreModule,\r\n NgbCollapseModule,\r\n NgbDatepickerModule,\r\n NgbDropdownModule,\r\n DxDataGridModule,\r\n DxPopupModule,\r\n DxNumberBoxModule,\r\n DxButtonModule,\r\n PageModule,\r\n RouterModule.forChild(routes),\r\n ],\r\n})\r\nexport class OrdersModule {}\r\n\r\nexport function loadOrdersModuleAsChild() {\r\n return Promise.resolve(OrdersModule);\r\n}\r\n","import { RestService } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface BulkInventoryOperationDto {\r\n operationType: string; // 'entry' or 'exit'\r\n items: InventoryOperationItemDto[];\r\n}\r\n\r\nexport interface InventoryOperationItemDto {\r\n barcode: string;\r\n batch: string;\r\n warehouse: string;\r\n shelf: string;\r\n quantity: number;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class InventoryService {\r\n apiName = 'SmartWarehouse';\r\n\r\n processBulkOperation = (dto: BulkInventoryOperationDto): Observable<string> =>\r\n this.restService.request<any, string>(\r\n {\r\n method: 'POST',\r\n url: '/api/smart-warehouse/sap-inventory/process-bulk-operation',\r\n body: dto,\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { DxDataGridComponent } from 'devextreme-angular';\r\nimport { InventoryService, BulkInventoryOperationDto } from '../../hit-proxy/inventory/inventory.service';\r\nimport { WarehouseService, WarehouseDto } from '../../hit-proxy/warehouse/warehouse.service';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\n\r\nexport interface ShelfPlacementItem {\r\n id: number;\r\n barcode: string;\r\n itemCode: string;\r\n itemName: string;\r\n batch: string;\r\n warehouse: string;\r\n shelf: string; // BinCode (görünür)\r\n shelfAbsEntry: number; // AbsEntry (backend'e gönderilecek)\r\n quantity: number;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-shelf-placement',\r\n templateUrl: './shelf-placement.component.html',\r\n styleUrls: ['./shelf-placement.component.scss'],\r\n})\r\nexport class ShelfPlacementComponent implements OnInit {\r\n @ViewChild('shelfInput', { static: false }) shelfInputRef: ElementRef<HTMLInputElement>;\r\n @ViewChild('barcodeInput', { static: false }) barcodeInputRef: ElementRef<HTMLInputElement>;\r\n @ViewChild('itemCodeInput', { static: false }) itemCodeInputRef: ElementRef<HTMLInputElement>;\r\n @ViewChild('quantityInput', { static: false }) quantityInputRef: ElementRef<HTMLInputElement>;\r\n @ViewChild('gridInstance', { static: false }) gridInstance: DxDataGridComponent;\r\n\r\n barcode: string = '';\r\n itemCode: string = '';\r\n itemName: string = '';\r\n batch: string = '';\r\n selectedWarehouse: string = '';\r\n shelf: string = '';\r\n quantity: number | null = null;\r\n\r\n operationType: string = 'entry';\r\n isShelfFixed: boolean = false;\r\n\r\n warehouses: WarehouseDto[] = [];\r\n\r\n gridDataSource: ShelfPlacementItem[] = [];\r\n private nextId: number = 1;\r\n\r\n // Loading states\r\n isLoadingWarehouses: boolean = false;\r\n isLoadingShelf: boolean = false;\r\n shelfAbsEntry: number | null = null;\r\n\r\n // Grid button handler (arrow function to preserve context)\r\n deleteRowHandler = (e: any) => {\r\n if (e.event) {\r\n e.event.preventDefault();\r\n e.event.stopPropagation();\r\n }\r\n this.gridDataSource = this.gridDataSource.filter(item => item.id !== e.row.data.id);\r\n };\r\n\r\n constructor(\r\n private inventoryService: InventoryService,\r\n private warehouseService: WarehouseService,\r\n private toasterService: ToasterService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.loadWarehouses();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // İlk açılışta raf alanına focus ver\r\n setTimeout(() => {\r\n this.shelfInputRef?.nativeElement?.focus();\r\n }, 200);\r\n }\r\n\r\n /**\r\n * Raf okutulduğunda çağrılır.\r\n * BinCode üzerinden SAP'den AbsEntry bilgisini çeker.\r\n * Focus'u barkod alanına geçirir.\r\n */\r\n onShelfScanned(): void {\r\n if (!this.shelf?.trim()) {\r\n return;\r\n }\r\n\r\n this.isLoadingShelf = true;\r\n this.shelfAbsEntry = null;\r\n\r\n this.warehouseService.getBinLocationByBinCode(this.shelf.trim()).subscribe({\r\n next: (binLocation) => {\r\n if (binLocation) {\r\n this.shelfAbsEntry = binLocation.AbsEntry;\r\n setTimeout(() => {\r\n this.barcodeInputRef?.nativeElement?.focus();\r\n }, 100);\r\n } else {\r\n this.toasterService.warn(`\"${this.shelf}\" bin kodu ile eşleşen depo yeri bulunamadı.`);\r\n }\r\n this.isLoadingShelf = false;\r\n },\r\n error: (err) => {\r\n console.error('Bin location arama hatası:', err);\r\n this.toasterService.error('Depo yeri bilgisi SAP\\'den alınamadı.');\r\n this.isLoadingShelf = false;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Barkod okutulduğunda çağrılır.\r\n * Kalem kodu ve parti bilgisini barkoddan parse eder.\r\n * Focus'u miktar alanına geçirir.\r\n */\r\n onBarcodeScanned(): void {\r\n if (!this.barcode?.trim()) {\r\n return;\r\n }\r\n\r\n this.parseBarcodeAndFill(this.barcode.trim());\r\n setTimeout(() => {\r\n this.quantityInputRef?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n\r\n /**\r\n * Barkodu parse eder ve kalem kodu ile parti alanlarını doldurur.\r\n * İlk 13 karakter = ürün barkodu, 14. karakterden itibaren = parti numarası\r\n */\r\n private parseBarcodeAndFill(barcodeValue: string): void {\r\n const productBarcode = barcodeValue.substring(0, 13);\r\n const batchNumber = barcodeValue.length > 13 ? barcodeValue.substring(13) : '';\r\n\r\n this.itemCode = '';\r\n this.itemName = '';\r\n\r\n // SAP'den barkod ile kalem bilgisi getir\r\n this.warehouseService.getItemByBarcode(productBarcode).subscribe({\r\n next: (itemInfo) => {\r\n if (itemInfo) {\r\n this.itemCode = itemInfo.ItemCode || '';\r\n this.itemName = itemInfo.ItemName || '';\r\n this.batch = batchNumber;\r\n } else {\r\n this.itemCode = '';\r\n this.itemName = '';\r\n this.toasterService.warn(`Barkod \"${productBarcode}\" ile eşleşen kalem bulunamadı.`);\r\n }\r\n },\r\n error: (err) => {\r\n console.error('Barkod ile kalem arama hatası:', err);\r\n this.itemCode = '';\r\n this.itemName = '';\r\n this.toasterService.error('Barkod ile kalem bilgisi SAP\\'den alınamadı.');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Kalem koduna göre SAP'den kalem adını çeker.\r\n */\r\n private fetchItemNameFromSAP(itemCode: string): void {\r\n if (!itemCode?.trim()) {\r\n this.itemName = '';\r\n return;\r\n }\r\n\r\n this.warehouseService.getItemNameByCode(itemCode.trim()).subscribe({\r\n next: (itemName) => {\r\n this.itemName = itemName || '';\r\n },\r\n error: (err) => {\r\n console.error('Kalem adı alınamadı:', err);\r\n this.itemName = '';\r\n this.toasterService.error('Kalem adı SAP\\'den alınamadı.');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Depo seçimi değiştiğinde çağrılır.\r\n * Seçilen depoya ait depo yerlerini (bin locations) yükler.\r\n */\r\n onWarehouseChanged(): void {\r\n this.shelf = '';\r\n }\r\n\r\n /**\r\n * Ekle butonuna basıldığında çağrılır.\r\n * Form verilerini grid'e ekler.\r\n */\r\n onAdd(): void {\r\n if (!this.itemCode?.trim() || !this.selectedWarehouse?.trim() || !this.shelf?.trim() || !this.quantity) {\r\n this.toasterService.warn('Kalem kodu, depo, raf ve miktar alanları zorunludur.');\r\n return;\r\n }\r\n\r\n if (!this.shelfAbsEntry) {\r\n this.toasterService.warn('Raf için geçerli bir AbsEntry bulunamadı. Lütfen rafı tekrar okutun.');\r\n return;\r\n }\r\n\r\n const newItem: ShelfPlacementItem = {\r\n id: this.nextId++,\r\n barcode: this.barcode.trim(),\r\n itemCode: this.itemCode.trim(),\r\n itemName: this.itemName.trim(),\r\n batch: this.batch.trim(),\r\n warehouse: this.selectedWarehouse.trim(),\r\n shelf: this.shelf.trim(),\r\n shelfAbsEntry: this.shelfAbsEntry,\r\n quantity: this.quantity,\r\n };\r\n\r\n this.gridDataSource = [...this.gridDataSource, newItem];\r\n\r\n // Alanları temizle (raf sabit değilse)\r\n if (!this.isShelfFixed) {\r\n this.onClear();\r\n } else {\r\n // Raf sabit ise sadece barkod, kalem kodu, kalem adı, parti ve miktarı temizle (depo ve raf kalır)\r\n this.barcode = '';\r\n this.itemCode = '';\r\n this.itemName = '';\r\n this.batch = '';\r\n this.quantity = null;\r\n // Raf sabit ise focus barkod alanına dönsün\r\n setTimeout(() => {\r\n this.barcodeInputRef?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n }\r\n\r\n /**\r\n * Kaydet butonuna basıldığında çağrılır.\r\n * Grid'deki tüm verileri toplu olarak kaydeder.\r\n */\r\n onSave(): void {\r\n if (this.gridDataSource.length === 0) {\r\n this.toasterService.warn('Kaydedilecek veri yok.');\r\n return;\r\n }\r\n\r\n const dto: BulkInventoryOperationDto = {\r\n operationType: this.operationType,\r\n items: this.gridDataSource.map(item => ({\r\n barcode: item.itemCode, // Kalem kodunu gönder\r\n batch: item.batch,\r\n warehouse: item.warehouse,\r\n shelf: item.shelfAbsEntry?.toString(), // AbsEntry olarak gönder\r\n quantity: item.quantity\r\n }))\r\n };\r\n\r\n this.inventoryService.processBulkOperation(dto).subscribe({\r\n next: (result) => {\r\n this.toasterService.success(result);\r\n // Başarılı kayıt sonrası grid'i temizle\r\n this.gridDataSource = [];\r\n this.nextId = 1;\r\n this.onClear();\r\n },\r\n error: (error) => {\r\n const errorMessage = error?.error?.error?.message || 'İşlem sırasında bir hata oluştu.';\r\n this.toasterService.error(errorMessage);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Temizle butonuna basıldığında çağrılır.\r\n */\r\n onClear(): void {\r\n this.barcode = '';\r\n this.itemCode = '';\r\n this.itemName = '';\r\n this.batch = '';\r\n this.quantity = null;\r\n\r\n if (!this.isShelfFixed) {\r\n this.shelf = '';\r\n this.shelfAbsEntry = null;\r\n // Raf sabit değilse focus raf alanına dönsün\r\n setTimeout(() => {\r\n this.shelfInputRef?.nativeElement?.focus();\r\n }, 100);\r\n } else {\r\n // Raf sabit ise focus barkod alanına dönsün\r\n setTimeout(() => {\r\n this.barcodeInputRef?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n }\r\n\r\n /**\r\n * U_SWSmartWhs = \"Y\" olan depoları yükler.\r\n * İlk depoyu otomatik olarak seçer.\r\n */\r\n private loadWarehouses(): void {\r\n this.isLoadingWarehouses = true;\r\n this.warehouseService.getSmartWarehouses().subscribe({\r\n next: (data) => {\r\n this.warehouses = data || [];\r\n console.log('Depolar yüklendi:', this.warehouses);\r\n \r\n // İlk depoyu otomatik seç ve bin location'ları yükle\r\n if (this.warehouses.length > 0) {\r\n this.selectedWarehouse = this.warehouses[0].WhsCode || '';\r\n this.onWarehouseChanged();\r\n }\r\n \r\n this.isLoadingWarehouses = false;\r\n },\r\n error: (err) => {\r\n console.error('Depolar yüklenemedi:', err);\r\n this.toasterService.error('Depolar yüklenemedi.');\r\n this.isLoadingWarehouses = false;\r\n }\r\n });\r\n }\r\n}\r\n","<abp-page [title]=\"'Raf Yerleştirme'\">\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ükleniyor...</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ş / Çıkış -->\r\n <!-- <div class=\"form-section\">\r\n <label class=\"section-label\">İşlem 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ş</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çin...</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ı -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"itemNameInput\">Kalem Adı</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ı...\" />\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ştirme 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ı\"\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","import { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { CommercialUiModule } from '@volo/abp.commercial.ng.ui';\r\nimport { PageModule } from '@abp/ng.components/page';\r\nimport { DxDataGridModule } from 'devextreme-angular';\r\nimport { ShelfPlacementComponent } from './shelf-placement.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: ShelfPlacementComponent,\r\n },\r\n];\r\n\r\n@NgModule({\r\n declarations: [ShelfPlacementComponent],\r\n imports: [\r\n CoreModule,\r\n ThemeSharedModule,\r\n FormsModule,\r\n CommercialUiModule,\r\n NgxValidateCoreModule,\r\n NgbCollapseModule,\r\n NgbDatepickerModule,\r\n NgbDropdownModule,\r\n DxDataGridModule,\r\n PageModule,\r\n RouterModule.forChild(routes),\r\n ],\r\n})\r\nexport class ShelfPlacementModule {}\r\n\r\nexport function loadShelfPlacementModuleAsChild() {\r\n return Promise.resolve(ShelfPlacementModule);\r\n}\r\n","import { RestService } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface ShelfTransferDto {\r\n fromBinAbsEntry: number;\r\n toBinAbsEntry: number;\r\n itemCode: string;\r\n batchNumber: string;\r\n warehouseCode: string;\r\n quantity: number;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class StockTransferService {\r\n apiName = 'SmartWarehouse';\r\n\r\n createShelfTransfer = (dto: ShelfTransferDto): Observable<string> =>\r\n this.restService.request<any, string>(\r\n {\r\n method: 'POST',\r\n url: '/api/smart-warehouse/sap-stock-transfer/create-shelf-transfer',\r\n body: dto,\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { WarehouseService, BinLocationContentDto } from '../../hit-proxy/warehouse/warehouse.service';\r\nimport { StockTransferService, ShelfTransferDto } from '../../hit-proxy/stock-transfer/stock-transfer.service';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\n\r\n@Component({\r\n selector: 'lib-shelf-transfer',\r\n templateUrl: './shelf-transfer.component.html',\r\n styleUrls: ['./shelf-transfer.component.scss'],\r\n})\r\nexport class ShelfTransferComponent {\r\n sourceBinCode: string = '';\r\n destinationBinCode: string = '';\r\n sourceBinAbsEntry: number | null = null;\r\n destinationBinAbsEntry: number | null = null;\r\n quantity: number | null = null;\r\n\r\n binContent: BinLocationContentDto | null = null;\r\n\r\n isLoadingContent: boolean = false;\r\n isLoadingDestination: boolean = false;\r\n isSaving: boolean = false;\r\n\r\n constructor(\r\n private warehouseService: WarehouseService,\r\n private stockTransferService: StockTransferService,\r\n private toasterService: ToasterService\r\n ) {}\r\n\r\n onSourceBinEnter(): void {\r\n this.binContent = null;\r\n this.sourceBinAbsEntry = null;\r\n\r\n if (!this.sourceBinCode || this.sourceBinCode.trim() === '') {\r\n return;\r\n }\r\n\r\n this.isLoadingContent = true;\r\n this.warehouseService.getBinLocationByBinCode(this.sourceBinCode.trim()).subscribe({\r\n next: (binLocation) => {\r\n if (!binLocation) {\r\n this.toasterService.warn('Depo yeri bulunamad\\u0131.');\r\n this.isLoadingContent = false;\r\n return;\r\n }\r\n this.sourceBinAbsEntry = binLocation.AbsEntry;\r\n this.loadBinContent(binLocation.AbsEntry);\r\n },\r\n error: () => {\r\n this.toasterService.error('Depo yeri sorgulanamad\\u0131.');\r\n this.isLoadingContent = false;\r\n },\r\n });\r\n }\r\n\r\n onDestinationBinEnter(): void {\r\n this.destinationBinAbsEntry = null;\r\n\r\n if (!this.destinationBinCode || this.destinationBinCode.trim() === '') {\r\n return;\r\n }\r\n\r\n this.isLoadingDestination = true;\r\n this.warehouseService.getBinLocationByBinCode(this.destinationBinCode.trim()).subscribe({\r\n next: (binLocation) => {\r\n if (!binLocation) {\r\n this.toasterService.warn('Giri\\u015f depo yeri bulunamad\\u0131.');\r\n this.isLoadingDestination = false;\r\n return;\r\n }\r\n this.destinationBinAbsEntry = binLocation.AbsEntry;\r\n this.isLoadingDestination = false;\r\n },\r\n error: () => {\r\n this.toasterService.error('Giri\\u015f depo yeri sorgulanamad\\u0131.');\r\n this.isLoadingDestination = false;\r\n },\r\n });\r\n }\r\n\r\n onSave(): void {\r\n if (!this.sourceBinAbsEntry) {\r\n this.toasterService.warn('\\u00c7\\u0131k\\u0131\\u015f raf\\u0131 giriniz.');\r\n return;\r\n }\r\n if (!this.binContent) {\r\n this.toasterService.warn('Se\\u00e7ilen rafta kalem bilgisi bulunamad\\u0131.');\r\n return;\r\n }\r\n if (!this.destinationBinAbsEntry) {\r\n this.toasterService.warn('Giri\\u015f raf\\u0131 giriniz.');\r\n return;\r\n }\r\n if (this.sourceBinAbsEntry === this.destinationBinAbsEntry) {\r\n this.toasterService.warn('\\u00c7\\u0131k\\u0131\\u015f ve giri\\u015f raf\\u0131 ayn\\u0131 olamaz.');\r\n return;\r\n }\r\n if (!this.quantity || this.quantity <= 0) {\r\n this.toasterService.warn('Ge\\u00e7erli bir miktar giriniz.');\r\n return;\r\n }\r\n if (this.quantity > this.binContent.OnHandQty) {\r\n this.toasterService.warn(`Miktar, mevcut stoktan (${this.binContent.OnHandQty}) fazla olamaz.`);\r\n return;\r\n }\r\n\r\n const dto: ShelfTransferDto = {\r\n fromBinAbsEntry: this.sourceBinAbsEntry,\r\n toBinAbsEntry: this.destinationBinAbsEntry,\r\n itemCode: this.binContent.ItemCode,\r\n batchNumber: this.binContent.BatchNumber,\r\n warehouseCode: this.binContent.WarehouseCode,\r\n quantity: this.quantity,\r\n };\r\n\r\n this.isSaving = true;\r\n this.stockTransferService.createShelfTransfer(dto).subscribe({\r\n next: (result) => {\r\n this.toasterService.success(result);\r\n this.onClear();\r\n this.isSaving = false;\r\n },\r\n error: (error) => {\r\n const errorMessage = error?.error?.error?.message || '\\u0130\\u015flem s\\u0131ras\\u0131nda bir hata olu\\u015ftu.';\r\n this.toasterService.error(errorMessage);\r\n this.isSaving = false;\r\n },\r\n });\r\n }\r\n\r\n onClear(): void {\r\n this.sourceBinCode = '';\r\n this.destinationBinCode = '';\r\n this.sourceBinAbsEntry = null;\r\n this.destinationBinAbsEntry = null;\r\n this.quantity = null;\r\n this.binContent = null;\r\n }\r\n\r\n private loadBinContent(binAbsEntry: number): void {\r\n this.warehouseService.getBinLocationContent(binAbsEntry).subscribe({\r\n next: (data) => {\r\n this.binContent = data || null;\r\n this.isLoadingContent = false;\r\n if (!data) {\r\n this.toasterService.warn('Bu depo yerinde kalem bulunamad\\u0131.');\r\n }\r\n },\r\n error: () => {\r\n this.toasterService.error('Depo yeri i\\u00e7eri\\u011fi y\\u00fcklenemedi.');\r\n this.isLoadingContent = false;\r\n },\r\n });\r\n }\r\n}\r\n","<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 <!-- Çıkış Rafı -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"sourceBinInput\">Çıkış Rafı</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ükleniyor...\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ı:</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ı.\r\n </div>\r\n </div>\r\n\r\n <hr class=\"form-divider\" />\r\n\r\n <!-- Giriş Rafı -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"destBinInput\">Giriş Rafı</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ıyor...\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","import { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { CommercialUiModule } from '@volo/abp.commercial.ng.ui';\r\nimport { PageModule } from '@abp/ng.components/page';\r\nimport { ShelfTransferComponent } from './shelf-transfer.component';\r\n\r\nconst routes: Routes = [\r\n { path: '', component: ShelfTransferComponent },\r\n];\r\n\r\n@NgModule({\r\n declarations: [ShelfTransferComponent],\r\n imports: [\r\n CoreModule, ThemeSharedModule, FormsModule, CommercialUiModule,\r\n NgxValidateCoreModule, NgbCollapseModule, NgbDatepickerModule,\r\n NgbDropdownModule, PageModule,\r\n RouterModule.forChild(routes),\r\n ],\r\n})\r\nexport class ShelfTransferModule {}\r\n\r\nexport function loadShelfTransferModuleAsChild() {\r\n return Promise.resolve(ShelfTransferModule);\r\n}\r\n","import { RestService } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface OrderStationCreateDto {\r\n orderId: number;\r\n stationCode: string;\r\n eyeCode: string;\r\n absBinEntry: number;\r\n}\r\n\r\nexport interface OrderStatusDto {\r\n DocEntry: number;\r\n Status: number | null;\r\n StatusText: string;\r\n IsEligibleForMatching: boolean;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class OrderStationService {\r\n apiName = 'SmartWarehouse';\r\n\r\n createOrderStation = (dto: OrderStationCreateDto): Observable<string> =>\r\n this.restService.request<any, string>(\r\n { method: 'POST', url: '/api/smart-warehouse/sap-order-station/create', body: dto },\r\n { apiName: this.apiName }\r\n );\r\n\r\n getOrderStatus = (docEntry: number): Observable<OrderStatusDto> =>\r\n this.restService.request<any, OrderStatusDto>(\r\n { method: 'GET', url: `/api/smart-warehouse/sap-order-station/order-status/${docEntry}` },\r\n { apiName: this.apiName }\r\n );\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import { Component, ElementRef, ViewChild } from '@angular/core';\r\nimport { OrderStationService, OrderStationCreateDto, OrderStatusDto } from '../../hit-proxy/order-station/order-station.service';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\n\r\n@Component({\r\n selector: 'lib-order-station',\r\n templateUrl: './order-station.component.html',\r\n styleUrls: ['./order-station.component.scss'],\r\n})\r\nexport class OrderStationComponent {\r\n @ViewChild('stationInput', { static: false }) stationInputRef: ElementRef<HTMLInputElement>;\r\n @ViewChild('shelfInput', { static: false }) shelfInputRef: ElementRef<HTMLInputElement>;\r\n @ViewChild('binInput', { static: false }) binInputRef: ElementRef<HTMLInputElement>;\r\n @ViewChild('orderInput', { static: false }) orderInputRef: ElementRef<HTMLInputElement>;\r\n\r\n stationCode: string = '';\r\n eyeCode: string = '';\r\n absBinEntry: string = '';\r\n orderId: string = '';\r\n\r\n isSaving: boolean = false;\r\n isCheckingOrder: boolean = false;\r\n\r\n orderStatus: OrderStatusDto | null = null;\r\n\r\n constructor(\r\n private orderStationService: OrderStationService,\r\n private toasterService: ToasterService\r\n ) {}\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.stationInputRef?.nativeElement?.focus();\r\n }, 200);\r\n }\r\n\r\n onStationScanned(): void {\r\n if (!this.stationCode?.trim()) return;\r\n setTimeout(() => {\r\n this.shelfInputRef?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n\r\n onShelfScanned(): void {\r\n if (!this.eyeCode?.trim()) return;\r\n setTimeout(() => {\r\n this.binInputRef?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n\r\n onBinScanned(): void {\r\n if (!this.absBinEntry?.trim()) return;\r\n setTimeout(() => {\r\n this.orderInputRef?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n\r\n onOrderChanged(): void {\r\n this.orderStatus = null;\r\n }\r\n\r\n onOrderScanned(): void {\r\n if (!this.orderId?.trim()) return;\r\n const orderIdNum = Number(this.orderId.trim());\r\n if (isNaN(orderIdNum)) {\r\n this.toasterService.warn('Sipariş alanı sayısal bir değer olmalıdır.');\r\n return;\r\n }\r\n this.checkOrderStatus(orderIdNum);\r\n }\r\n\r\n private checkOrderStatus(docEntry: number): void {\r\n this.isCheckingOrder = true;\r\n this.orderStatus = null;\r\n this.orderStationService.getOrderStatus(docEntry).subscribe({\r\n next: (result) => {\r\n console.log(result);\r\n this.orderStatus = result;\r\n this.isCheckingOrder = false;\r\n if (!result.IsEligibleForMatching) {\r\n this.toasterService.error(\r\n `Bu siparişin durumu ${result.StatusText}. Eşleştirme işlemi yapılamaz.`\r\n );\r\n }\r\n },\r\n error: (error) => {\r\n const errorMessage =\r\n error?.error?.error?.message || 'Sipariş durumu kontrol edilemedi.';\r\n this.toasterService.error(errorMessage);\r\n this.isCheckingOrder = false;\r\n this.orderStatus = null;\r\n },\r\n });\r\n }\r\n\r\n onSave(): void {\r\n if (!this.stationCode?.trim()) {\r\n this.toasterService.warn('İstasyon alanı zorunludur.');\r\n return;\r\n }\r\n if (!this.eyeCode?.trim()) {\r\n this.toasterService.warn('Raf alanı zorunludur.');\r\n return;\r\n }\r\n if (!this.absBinEntry?.trim()) {\r\n this.toasterService.warn('Toplanacak Kasa alanı zorunludur.');\r\n return;\r\n }\r\n if (!this.orderId?.trim()) {\r\n this.toasterService.warn('Sipariş alanı zorunludur.');\r\n return;\r\n }\r\n\r\n const eyeCodeNum = this.eyeCode.trim();\r\n const absBinEntryNum = Number(this.absBinEntry.trim());\r\n const orderIdNum = Number(this.orderId.trim());\r\n\r\n if (isNaN(absBinEntryNum)) {\r\n this.toasterService.warn('Toplanacak Kasa alanı sayısal bir değer olmalıdır.');\r\n return;\r\n }\r\n if (isNaN(orderIdNum)) {\r\n this.toasterService.warn('Sipariş alanı sayısal bir değer olmalıdır.');\r\n return;\r\n }\r\n\r\n if (this.orderStatus && !this.orderStatus.IsEligibleForMatching) {\r\n this.toasterService.error(\r\n `Bu siparişin durumu ${this.orderStatus.StatusText}. Eşleştirme işlemi yapılamaz.`\r\n );\r\n return;\r\n }\r\n\r\n const dto: OrderStationCreateDto = {\r\n orderId: orderIdNum,\r\n stationCode: this.stationCode.trim(),\r\n eyeCode: eyeCodeNum,\r\n absBinEntry: absBinEntryNum,\r\n };\r\n\r\n this.isSaving = true;\r\n this.orderStationService.createOrderStation(dto).subscribe({\r\n next: (result) => {\r\n this.toasterService.success(result);\r\n this.onClear();\r\n this.isSaving = false;\r\n },\r\n error: (error) => {\r\n const errorMessage =\r\n error?.error?.error?.message || 'İşlem sırasında bir hata oluştu.';\r\n this.toasterService.error(errorMessage);\r\n this.isSaving = false;\r\n },\r\n });\r\n }\r\n\r\n onClear(): void {\r\n this.stationCode = '';\r\n this.eyeCode = '';\r\n this.absBinEntry = '';\r\n this.orderId = '';\r\n this.orderStatus = null;\r\n setTimeout(() => {\r\n this.stationInputRef?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n}\r\n","<abp-page [title]=\"'Sipariş-Toplama Noktası Eşleştirme'\">\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 <!-- İstasyon -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"stationInput\">İstasyon</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=\"İstasyon 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öz</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ş -->\r\n <div class=\"form-section\">\r\n <label class=\"section-label\" for=\"orderInput\">Sipariş</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ş numarasını okutun...\"\r\n autocomplete=\"off\" />\r\n </div>\r\n\r\n <!-- Sipariş 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ş 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ş Durumu: {{ orderStatus.StatusText }}\r\n </span>\r\n <span *ngIf=\"!orderStatus.IsEligibleForMatching\">\r\n Bu siparişin durumu {{ orderStatus.StatusText }}. Eşleştirme işlemi yapılamaz.\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","import { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { CommercialUiModule } from '@volo/abp.commercial.ng.ui';\r\nimport { PageModule } from '@abp/ng.components/page';\r\nimport { OrderStationComponent } from './order-station.component';\r\n\r\nconst routes: Routes = [{ path: '', component: OrderStationComponent }];\r\n\r\n@NgModule({\r\n declarations: [OrderStationComponent],\r\n imports: [\r\n CoreModule,\r\n ThemeSharedModule,\r\n FormsModule,\r\n CommercialUiModule,\r\n NgxValidateCoreModule,\r\n NgbCollapseModule,\r\n NgbDatepickerModule,\r\n NgbDropdownModule,\r\n PageModule,\r\n RouterModule.forChild(routes),\r\n ],\r\n})\r\nexport class OrderStationModule {}\r\n\r\nexport function loadOrderStationModuleAsChild() {\r\n return Promise.resolve(OrderStationModule);\r\n}\r\n","import { RestService } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\nimport { DevexpressRestService } from '../devexpress-query-builder/devexpress-query-builder'; \r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class StockReportService {\r\n apiName = 'SmartWarehouse';\r\n\r\n loadStockReports = this.devexService.createStore({\r\n key: 'ItemCode',\r\n loadUrl: 'api/smart-warehouse/stock-report/stock-reports',\r\n });\r\n \r\n\r\n constructor(private restService: RestService, private devexService: DevexpressRestService) {}\r\n}\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { DxDataGridComponent } from 'devextreme-angular';\r\nimport { WarehouseService, BinLocationDto, BinLocationContentDto } from '../../hit-proxy/warehouse/warehouse.service';\r\nimport { StockTransferService, ShelfTransferDto } from '../../hit-proxy/stock-transfer/stock-transfer.service';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport { StockReportService } from '../../hit-proxy/stock-report/stock-report.service';\r\n\r\n@Component({\r\n selector: 'lib-stock-report',\r\n templateUrl: './stock-report.component.html',\r\n styleUrls: [],\r\n})\r\nexport class StockReportComponent implements OnInit {\r\n @ViewChild('dxStockInstance', { static: false }) dxStockInstance: DxDataGridComponent;\r\n\r\n stockDataSource:any\r\n constructor( \r\n private stockReportService:StockReportService,\r\n private toasterService: ToasterService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\nthis.stockDataSource=this.stockReportService.loadStockReports\r\n }\r\n\r\n onRefresh(): void {\r\n this.dxStockInstance?.instance?.refresh();\r\n }\r\n}\r\n","<abp-page [title]=\"'Depo Stok Raporu'\">\r\n\r\n <div class=\"mb-2\">\r\n <button class=\"btn btn-sm btn-outline-primary\" (click)=\"onRefresh()\">\r\n <i class=\"fa fa-redo\"></i> Yenile\r\n </button>\r\n </div>\r\n\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxStockInstance [dataSource]=\"stockDataSource\" [showRowLines]=\"true\" [showBorders]=\"true\"\r\n [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\" columnResizingMode=\"widget\" [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\" style=\"height: 75vh;\">\r\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [allowedPageSizes]=\"[50,100,200]\"\r\n [showNavigationButtons]=\"true\" [showPageSizeSelector]=\"true\">\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\r\n <dxo-column-chooser [allowSearch]=\"true\" [enabled]=\"true\" mode=\"select\"></dxo-column-chooser>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-group-panel [visible]=\"true\" [allowColumnDragging]=\"true\"></dxo-group-panel>\r\n <dxo-grouping #expand [autoExpandAll]=\"false\" [allowCollapsing]=\"true\"\r\n [contextMenuEnabled]=\"true\"></dxo-grouping>\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-column-fixing [enabled]=\"true\"></dxo-column-fixing>\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=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxi-column dataField=\"ItemCode\" caption=\"Kalem Kodu\"></dxi-column>\r\n <dxi-column dataField=\"ItemName\" caption=\"Kalem Adı\"></dxi-column>\r\n <dxi-column dataField=\"WhsCode\" caption=\"Depo\"></dxi-column>\r\n <dxi-column dataField=\"BinCode\" caption=\"Depo Yeri\"></dxi-column>\r\n <dxi-column dataField=\"DistNumber\" caption=\"Parti\"></dxi-column>\r\n <dxi-column dataField=\"OnHandQty\" caption=\"Miktar\" dataType=\"number\" [format]=\"{ \r\n type: 'fixedPoint', \r\n precision: 2 \r\n }\">\r\n\r\n </dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n\r\n</abp-page>","import { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { CommercialUiModule } from '@volo/abp.commercial.ng.ui';\r\nimport { PageModule } from '@abp/ng.components/page';\r\nimport { DxDataGridModule, DxSelectBoxModule } from 'devextreme-angular'; \r\nimport { StockReportComponent } from './stock-report.component';\r\n\r\nconst routes: Routes = [\r\n { path: '', component: StockReportComponent },\r\n];\r\n\r\n@NgModule({\r\n declarations: [StockReportComponent],\r\n imports: [\r\n CoreModule, ThemeSharedModule, FormsModule, CommercialUiModule,\r\n NgxValidateCoreModule, NgbCollapseModule, NgbDatepickerModule,\r\n NgbDropdownModule, DxSelectBoxModule, PageModule,DxDataGridModule,\r\n RouterModule.forChild(routes),\r\n ],\r\n})\r\nexport class StockReportModule {}\r\n\r\nexport function loadStockReportModuleAsChild() {\r\n return Promise.resolve(StockReportModule);\r\n}\r\n","import { RestService } from '@abp/ng.core';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ReservationShortDto, ItemShortageSummaryDto } from './model';\n\n@Injectable({ providedIn: 'root' })\nexport class ShortagesService {\n apiName = 'SmartWarehouse';\n\n getShortages = (orderType?: string): Observable<ReservationShortDto[]> =>\n this.restService.request<any, ReservationShortDto[]>(\n {\n method: 'GET',\n url: '/api/smart-warehouse/sap-reservations/shortages',\n params: { orderType: orderType || undefined },\n },\n { apiName: this.apiName }\n );\n\n getShortagesSummary = (orderType?: string): Observable<ItemShortageSummaryDto[]> =>\n this.restService.request<any, ItemShortageSummaryDto[]>(\n {\n method: 'GET',\n url: '/api/smart-warehouse/sap-reservations/shortages-summary',\n params: { orderType: orderType || undefined },\n },\n { apiName: this.apiName }\n );\n\n constructor(private restService: RestService) {}\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { DxDataGridComponent } from 'devextreme-angular';\nimport { ToasterService } from '@abp/ng.theme.shared';\nimport { ShortagesService } from '../../hit-proxy/shortages/shortages.service';\nimport { ReservationShortDto, ItemShortageSummaryDto } from '../../hit-proxy/shortages/model';\n\n@Component({\n selector: 'lib-shortages',\n templateUrl: './shortages.component.html',\n styleUrls: [],\n})\nexport class ShortagesComponent implements OnInit {\n @ViewChild('dxDetailInstance', { static: false }) dxDetailInstance: DxDataGridComponent;\n @ViewChild('dxSummaryInstance', { static: false }) dxSummaryInstance: DxDataGridComponent;\n\n viewMode: 'detay' | 'ozet' = 'detay';\n activeOrderType: string | null = null; // null = tümü, '1' | '2' | '3'\n\n detailDataSource: ReservationShortDto[] = [];\n summaryDataSource: ItemShortageSummaryDto[] = [];\n isLoading: boolean = false;\n\n constructor(\n private readonly shortagesService: ShortagesService,\n private readonly toasterService: ToasterService\n ) {}\n\n ngOnInit(): void {\n this.load();\n }\n\n toggleOrderType(key: string): void {\n this.activeOrderType = this.activeOrderType === key ? null : key;\n this.load();\n }\n\n setViewMode(mode: 'detay' | 'ozet'): void {\n this.viewMode = mode;\n this.load();\n }\n\n load(): void {\n this.isLoading = true;\n\n if (this.viewMode === 'detay') {\n this.shortagesService.getShortages(this.activeOrderType).subscribe({\n next: (data) => {\n this.detailDataSource = data || [];\n this.isLoading = false;\n },\n error: (error) => {\n const errorMessage = error?.error?.error?.message || 'Fark listesi yüklenirken bir hata oluştu.';\n this.toasterService.error(errorMessage);\n this.isLoading = false;\n },\n });\n } else {\n this.shortagesService.getShortagesSummary(this.activeOrderType).subscribe({\n next: (data) => {\n this.summaryDataSource = data || [];\n this.isLoading = false;\n },\n error: (error) => {\n const errorMessage = error?.error?.error?.message || 'Fark özeti yüklenirken bir hata oluştu.';\n this.toasterService.error(errorMessage);\n this.isLoading = false;\n },\n });\n }\n }\n\n onRefresh(): void {\n this.load();\n }\n}\n","<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ş Bazında)\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 Özet (Kalem Bazında)\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ümü\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şleri\n </span>\n <span class=\"badge\" [ngClass]=\"activeOrderType === '2' ? 'bg-primary' : 'bg-light text-dark border'\" style=\"cursor:pointer\" (click)=\"toggleOrderType('2')\">\n Dağıtım Siparişleri\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üşteri Kodu\" [width]=\"140\"></dxi-column>\n <dxi-column dataField=\"CardName\" caption=\"Müşteri Adı\" [width]=\"220\"></dxi-column>\n <dxi-column dataField=\"ItemCode\" caption=\"Kalem Kodu\" [width]=\"140\"></dxi-column>\n <dxi-column dataField=\"ItemName\" caption=\"Kalem Adı\"></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ı\"></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ş Sayısı\" dataType=\"number\" [width]=\"130\"></dxi-column>\n </dx-data-grid>\n </div>\n </div>\n\n</abp-page>\n","import { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule, Routes } from '@angular/router';\nimport { NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { CommercialUiModule } from '@volo/abp.commercial.ng.ui';\nimport { PageModule } from '@abp/ng.components/page';\nimport { DxDataGridModule, DxSelectBoxModule } from 'devextreme-angular';\nimport { ShortagesComponent } from './shortages.component';\n\nconst routes: Routes = [\n { path: '', component: ShortagesComponent },\n];\n\n@NgModule({\n declarations: [ShortagesComponent],\n imports: [\n CoreModule, ThemeSharedModule, FormsModule, CommercialUiModule,\n NgxValidateCoreModule, NgbCollapseModule, NgbDatepickerModule,\n NgbDropdownModule, DxSelectBoxModule, PageModule, DxDataGridModule,\n RouterModule.forChild(routes),\n ],\n})\nexport class ShortagesModule {}\n\nexport function loadShortagesModuleAsChild() {\n return Promise.resolve(ShortagesModule);\n}\n","import { RestService } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\nimport CustomStore from 'devextreme/data/custom_store';\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\nexport interface StationEyeDto {\r\n U_SWEyeCode: string;\r\n U_SWEyeName: string;\r\n}\r\n\r\nexport interface StationDto {\r\n Code: string;\r\n U_SWStationName: string;\r\n SWSTATIONEYECollection: StationEyeDto[];\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class StationService {\r\n apiName = 'SmartWarehouse';\r\n\r\n // CustomStore.load ile doldurulan, byKey/güncellemelerin kullandığı önbellek\r\n private cache: StationDto[] = [];\r\n\r\n constructor(private restService: RestService) {}\r\n\r\n getAll = (): Promise<StationDto[]> =>\r\n firstValueFrom(\r\n this.restService.request<any, StationDto[]>(\r\n { method: 'GET', url: '/api/smart-warehouse/stations/get-all-stations' },\r\n { apiName: this.apiName }\r\n )\r\n );\r\n\r\n createStation = (dto: StationDto): Promise<string> =>\r\n firstValueFrom(\r\n this.restService.request<any, string>(\r\n { method: 'POST', url: '/api/smart-warehouse/stations/create-station', body: dto },\r\n { apiName: this.apiName, skipHandleError: true }\r\n )\r\n );\r\n\r\n updateStation = (dto: StationDto): Promise<string> =>\r\n firstValueFrom(\r\n this.restService.request<any, string>(\r\n { method: 'PUT', url: '/api/smart-warehouse/stations/update-station', body: dto },\r\n { apiName: this.apiName, skipHandleError: true }\r\n )\r\n );\r\n\r\n deleteStation = (code: string): Promise<string> =>\r\n firstValueFrom(\r\n this.restService.request<any, string>(\r\n { method: 'DELETE', url: `/api/smart-warehouse/stations/delete-station/${code}` },\r\n { apiName: this.apiName, skipHandleError: true }\r\n )\r\n );\r\n\r\n // Ana grid için CustomStore (istemci tarafı; istasyon sayısı azdır)\r\n buildStore = (): CustomStore =>\r\n new CustomStore({\r\n key: 'Code',\r\n loadMode: 'raw',\r\n load: async () => {\r\n const data = await this.getAll();\r\n this.cache = (data ?? []).map(s => ({\r\n ...s,\r\n SWSTATIONEYECollection: s.SWSTATIONEYECollection ?? [],\r\n }));\r\n return this.cache;\r\n },\r\n byKey: key => Promise.resolve(this.cache.find(s => s.Code === key)),\r\n insert: async values => {\r\n const dto: StationDto = {\r\n SWSTATIONEYECollection: [],\r\n ...(values as StationDto),\r\n };\r\n try {\r\n await this.createStation(dto);\r\n } catch (error: any) {\r\n if (error?.status === 200) return dto;\r\n throw (\r\n error?.error?.error?.message ||\r\n error?.error?.message ||\r\n error?.message ||\r\n 'İstasyon oluşturulamadı.'\r\n );\r\n }\r\n return dto;\r\n },\r\n update: async (key, values) => {\r\n const original =\r\n this.cache.find(s => s.Code === key) ??\r\n ({ Code: key, SWSTATIONEYECollection: [] } as unknown as StationDto);\r\n const merged: StationDto = { ...original, ...(values as Partial<StationDto>) };\r\n try {\r\n await this.updateStation(merged);\r\n } catch (error: any) {\r\n if (error?.status === 200) return merged;\r\n throw (\r\n error?.error?.error?.message ||\r\n error?.error?.message ||\r\n error?.message ||\r\n 'İstasyon güncellenemedi.'\r\n );\r\n }\r\n return merged;\r\n },\r\n remove: async key => {\r\n try {\r\n await this.deleteStation(key as string);\r\n } catch (error: any) {\r\n if (error?.status === 200) return;\r\n throw (\r\n error?.error?.error?.message ||\r\n error?.error?.message ||\r\n error?.message ||\r\n 'İstasyon silinemedi.'\r\n );\r\n }\r\n },\r\n });\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport { StationDto, StationService } from '../hit-proxy/stations/station.service';\r\n\r\n@Component({\r\n selector: 'lib-station',\r\n templateUrl: './station.component.html',\r\n styleUrls: [],\r\n})\r\nexport class StationComponent implements OnInit {\r\n\r\n stationDataSource: any;\r\n\r\n constructor(\r\n private toasterService: ToasterService,\r\n private stationService: StationService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.stationDataSource = this.stationService.buildStore();\r\n }\r\n\r\n // Gözler (alt grid) değiştiğinde istasyonun tamamı (başlık + güncel göz listesi) kaydedilir.\r\n // onSaved/onRowRemoved, in-memory dizi güncellendikten SONRA tetiklenir; station referansı günceldir.\r\n async onEyesChanged(station: StationDto): Promise<void> {\r\n try {\r\n station.SWSTATIONEYECollection = station.SWSTATIONEYECollection ?? [];\r\n const message = await this.stationService.updateStation(station);\r\n this.toasterService.success(message);\r\n } catch (error: any) {\r\n if (error?.status === 200) {\r\n this.toasterService.success('Göz kaydı güncellendi.');\r\n return;\r\n }\r\n const detail =\r\n error?.error?.error?.message ||\r\n error?.error?.message ||\r\n 'Göz kaydı güncellenemedi.';\r\n this.toasterService.error(detail);\r\n }\r\n }\r\n}\r\n","<abp-page [title]=\"'İstasyonlar'\">\r\n\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxstationInstance [dataSource]=\"stationDataSource\" [showRowLines]=\"true\" [showBorders]=\"true\"\r\n [remoteOperations]=\"false\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\" columnResizingMode=\"widget\" [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\" style=\"height: 75vh;\">\r\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [allowedPageSizes]=\"[50,100,200]\"\r\n [showNavigationButtons]=\"true\" [showPageSizeSelector]=\"true\">\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\r\n <dxo-column-chooser [allowSearch]=\"true\" [enabled]=\"true\" mode=\"select\"></dxo-column-chooser>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-group-panel [visible]=\"true\" [allowColumnDragging]=\"true\"></dxo-group-panel>\r\n <dxo-grouping #expand [autoExpandAll]=\"false\" [allowCollapsing]=\"true\"\r\n [contextMenuEnabled]=\"true\"></dxo-grouping>\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-column-fixing [enabled]=\"true\"></dxo-column-fixing>\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=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n\r\n <dxo-editing mode=\"popup\" [allowAdding]=\"true\" [allowUpdating]=\"true\" [allowDeleting]=\"true\"\r\n [useIcons]=\"true\">\r\n <dxo-popup title=\"İstasyon\" [showTitle]=\"true\" [width]=\"500\" [height]=\"320\"></dxo-popup>\r\n <dxo-form>\r\n <dxi-item dataField=\"Code\"></dxi-item>\r\n <dxi-item dataField=\"U_SWStationName\"></dxi-item>\r\n </dxo-form>\r\n </dxo-editing>\r\n\r\n <dxi-column dataField=\"Code\" caption=\"Kodu (BeeCell İstasyon ID)\">\r\n <dxi-validation-rule type=\"required\" message=\"İstasyon kodu zorunludur\"></dxi-validation-rule>\r\n <dxi-validation-rule type=\"pattern\" pattern=\"^[0-9]+$\"\r\n message=\"İstasyon kodu sayısal olmalıdır (BeeCell ID)\"></dxi-validation-rule>\r\n </dxi-column>\r\n <dxi-column dataField=\"U_SWStationName\" caption=\"Adı\"></dxi-column>\r\n\r\n <dxo-master-detail [enabled]=\"true\" template=\"detailTemplate\"></dxo-master-detail>\r\n <div *dxTemplate=\"let master of 'detailTemplate'\">\r\n <div style=\"padding: 10px 0; font-weight: 600;\">\r\n GÖZLER: {{ master.data.U_SWStationName }} ({{ master.data.Code }})\r\n </div>\r\n\r\n <dx-data-grid [dataSource]=\"master.data.SWSTATIONEYECollection\" keyExpr=\"U_SWEyeCode\"\r\n [showBorders]=\"true\" [columnAutoWidth]=\"true\"\r\n (onSaved)=\"onEyesChanged(master.data)\" (onRowRemoved)=\"onEyesChanged(master.data)\">\r\n\r\n <dxo-editing mode=\"row\" [allowAdding]=\"true\" [allowUpdating]=\"true\" [allowDeleting]=\"true\"\r\n [useIcons]=\"true\"></dxo-editing>\r\n\r\n <dxi-column dataField=\"U_SWEyeCode\" caption=\"Göz Kodu (BeeCell shelf_id)\">\r\n <dxi-validation-rule type=\"required\" message=\"Göz kodu zorunludur\"></dxi-validation-rule>\r\n <dxi-validation-rule type=\"pattern\" pattern=\"^[0-9]+$\"\r\n message=\"Göz kodu sayısal olmalıdır (BeeCell ID)\"></dxi-validation-rule>\r\n </dxi-column>\r\n <dxi-column dataField=\"U_SWEyeName\" caption=\"Göz Adı\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n\r\n</abp-page>\r\n","import { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { CommercialUiModule } from '@volo/abp.commercial.ng.ui';\r\nimport { PageModule } from '@abp/ng.components/page';\r\nimport { DxDataGridModule, DxSelectBoxModule } from 'devextreme-angular'; \r\nimport { StationComponent } from './station.component';\r\n\r\nconst routes: Routes = [\r\n { path: '', component: StationComponent },\r\n];\r\n\r\n@NgModule({\r\n declarations: [StationComponent],\r\n imports: [\r\n CoreModule, ThemeSharedModule, FormsModule, CommercialUiModule,\r\n NgxValidateCoreModule, NgbCollapseModule, NgbDatepickerModule,\r\n NgbDropdownModule, DxSelectBoxModule, PageModule,DxDataGridModule,\r\n RouterModule.forChild(routes),\r\n ],\r\n})\r\nexport class StationModule {}\r\n\r\nexport function loadStationModuleAsChild() {\r\n return Promise.resolve(StationModule);\r\n}\r\n","import { RestService } from '@abp/ng.core';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport interface BinReservationInfoDto {\n ReservationCode: string;\n ItrDocEntry: number;\n ItrLineNum: number;\n OrderDocEntry: number;\n OrderDocNum: number;\n ItemCode: string;\n ItemName: string;\n BinAbs: number;\n BinCode: string;\n BatchNumber: string;\n CurrentQuantity: number;\n WarehouseCode: string;\n}\n\nexport interface QuantityCorrectionDto {\n ItrDocEntry: number;\n ItrLineNum: number;\n ReservationCode: string;\n OrderDocEntry: number;\n LineNum: number;\n ItemCode: string;\n NewQuantity: number;\n UpdateType: string; // 'shelfAndOrder' | 'orderOnly'\n BinAbs: number;\n BinCode: string;\n BatchNumber: string;\n WarehouseCode: string;\n}\n\nexport interface BoxQuantityCorrectionPreviewDto {\n TaskDraftDocEntry: number;\n TaskDraftLineNum: number;\n BinAbs: number;\n BinCode: string;\n ItemCode: string;\n WarehouseCode: string;\n CountedQuantity: number;\n}\n\nexport interface BoxQuantityCorrectionPreviewResultDto {\n ExpectedQuantity: number;\n CountedQuantity: number;\n Diff: number;\n RequiresConfirmation: boolean;\n ConfirmationMessage: string;\n ReplacementBinCode: string;\n ReplacementBinAbs: number;\n ReplacementAvailableQuantity: number;\n}\n\nexport interface BoxQuantityCorrectionApplyDto {\n TaskDraftDocEntry: number;\n TaskDraftLineNum: number;\n BinAbs: number;\n BinCode: string;\n OrderDocEntry: number;\n OrderDocNum: number;\n ItemCode: string;\n ItemDescription: string;\n WarehouseCode: string;\n CountedQuantity: number;\n UseReplacementBox: boolean;\n ReplacementBinCode: string;\n ReplacementBinAbs: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class QuantityCorrectionService {\n apiName = 'SmartWarehouse';\n\n /**\n * Fiziksel BeeCell kutu barkoduna göre açık görev taslağı satırlarını getirir\n */\n getLinesByBoxBarcode = (boxBarcode: string): Observable<BinReservationInfoDto[]> =>\n this.restService.request<any, BinReservationInfoDto[]>(\n {\n method: 'GET',\n url: `/api/smart-warehouse/sap-quantity-correction/get-lines-by-box/${boxBarcode}`,\n },\n { apiName: this.apiName }\n );\n\n /**\n * \"Raf ve Sipariş\" modu — önizleme (hiçbir şey yazmaz)\n */\n previewQuantityCorrection = (dto: BoxQuantityCorrectionPreviewDto): Observable<BoxQuantityCorrectionPreviewResultDto> =>\n this.restService.request<any, BoxQuantityCorrectionPreviewResultDto>(\n {\n method: 'POST',\n url: '/api/smart-warehouse/sap-quantity-correction/preview',\n body: dto,\n },\n { apiName: this.apiName }\n );\n\n /**\n * \"Raf ve Sipariş\" modu — kesin algoritmayı uygular\n */\n applyQuantityCorrection = (dto: BoxQuantityCorrectionApplyDto): Observable<string> =>\n this.restService.request<any, string>(\n {\n method: 'POST',\n url: '/api/smart-warehouse/sap-quantity-correction/apply',\n body: dto,\n },\n { apiName: this.apiName }\n );\n\n /**\n * \"Sadece Sipariş\" modu — stok hareketi yapmadan miktar düzeltme işlemini gerçekleştirir\n */\n updateQuantity = (dto: QuantityCorrectionDto): Observable<string> =>\n this.restService.request<any, string>(\n {\n method: 'POST',\n url: '/api/smart-warehouse/sap-quantity-correction/update-quantity',\n body: dto,\n },\n { apiName: this.apiName }\n );\n\n constructor(private restService: RestService) {}\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\nimport {\n QuantityCorrectionService,\n BinReservationInfoDto,\n QuantityCorrectionDto,\n BoxQuantityCorrectionPreviewDto,\n BoxQuantityCorrectionApplyDto,\n} from '../../hit-proxy/quantity-correction/quantity-correction.service';\nimport { ConfirmationService, ToasterService } from '@abp/ng.theme.shared';\n\n@Component({\n selector: 'lib-quantity-correction',\n templateUrl: './quantity-correction.component.html',\n styleUrls: ['./quantity-correction.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class QuantityCorrectionComponent {\n boxBarcode: string = '';\n lines: BinReservationInfoDto[] = [];\n selectedLine: BinReservationInfoDto | null = null;\n lastSearchedBoxBarcode: string = '';\n hasSearched: boolean = false;\n suppressNextBlurSearch: boolean = false;\n\n updateType: string = 'shelfAndOrder'; // default: Raf ve Sipariş\n newQuantity: number | null = null;\n\n isLoading: boolean = false;\n isSaving: boolean = false;\n\n constructor(\n private quantityCorrectionService: QuantityCorrectionService,\n private confirmationService: ConfirmationService,\n private toasterService: ToasterService\n ) {}\n\n onBoxBarcodeChange(value: string): void {\n this.boxBarcode = value;\n\n if (value.trim() === '') {\n this.resetLineState();\n this.hasSearched = false;\n this.lastSearchedBoxBarcode = '';\n return;\n }\n\n if (this.lastSearchedBoxBarcode && value.trim() !== this.lastSearchedBoxBarcode) {\n this.resetLineState();\n this.hasSearched = false;\n }\n }\n\n onBoxBarcodeEnterKeydown(): void {\n this.suppressNextBlurSearch = true;\n this.onBoxBarcodeEnter();\n }\n\n onBoxBarcodeBlur(): void {\n if (this.suppressNextBlurSearch) {\n this.suppressNextBlurSearch = false;\n return;\n }\n\n this.onBoxBarcodeEnter();\n }\n\n /**\n * Kasa barkodu girilip Enter veya blur yapıldığında çalışır.\n * Barkoda göre açık görev taslağı satırlarını yükler.\n */\n onBoxBarcodeEnter(): void {\n if (this.isLoading) {\n return;\n }\n\n const trimmedBarcode = this.boxBarcode.trim();\n\n this.resetLineState();\n\n if (!trimmedBarcode) {\n this.hasSearched = false;\n this.lastSearchedBoxBarcode = '';\n return;\n }\n\n this.hasSearched = true;\n this.lastSearchedBoxBarcode = trimmedBarcode;\n this.isLoading = true;\n this.quantityCorrectionService.getLinesByBoxBarcode(trimmedBarcode).subscribe({\n next: (data) => {\n this.lines = data || [];\n this.isLoading = false;\n if (this.lines.length === 0) {\n this.toasterService.warn('Bu kasada açık görev bulunamadı.');\n }\n },\n error: (error) => {\n const errorMessage =\n error?.error?.error?.message || 'Kasa içeriği yüklenirken bir hata oluştu.';\n this.toasterService.error(errorMessage);\n this.isLoading = false;\n },\n });\n }\n\n /**\n * Grid'den satır seçildiğinde çalışır.\n */\n onSelectLine(line: BinReservationInfoDto): void {\n this.selectedLine = line;\n this.newQuantity = line.CurrentQuantity;\n }\n\n /**\n * Güncelle butonuna basıldığında seçili moda göre miktar düzeltme akışını başlatır.\n */\n onUpdate(): void {\n if (!this.selectedLine) {\n this.toasterService.warn('Lütfen bir satır seçiniz.');\n return;\n }\n if (this.newQuantity === null || this.newQuantity < 0) {\n this.toasterService.warn('Geçerli bir miktar giriniz.');\n return;\n }\n\n if (this.updateType === 'orderOnly') {\n this.updateOrderOnly();\n } else {\n this.previewAndApplyShelfAndOrder();\n }\n }\n\n /**\n * \"Sadece Sipariş\": stok hareketi yok, sipariş iptali/miktar değişikliği senaryosu.\n */\n private updateOrderOnly(): void {\n const line = this.selectedLine!;\n\n if (this.newQuantity === line.CurrentQuantity) {\n this.toasterService.warn('Yeni miktar mevcut miktar ile aynı.');\n return;\n }\n\n const dto: QuantityCorrectionDto = {\n ItrDocEntry: line.ItrDocEntry,\n ItrLineNum: line.ItrLineNum,\n ReservationCode: line.ReservationCode,\n OrderDocEntry: line.OrderDocEntry,\n LineNum: 0, // Backend siparişten otomatik bulacak\n ItemCode: line.ItemCode,\n NewQuantity: this.newQuantity!,\n UpdateType: this.updateType,\n BinAbs: line.BinAbs,\n BinCode: line.BinCode,\n BatchNumber: line.BatchNumber,\n WarehouseCode: line.WarehouseCode,\n };\n\n this.isSaving = true;\n this.quantityCorrectionService.updateQuantity(dto).subscribe({\n next: (result) => {\n this.toasterService.success(result);\n this.isSaving = false;\n this.onBoxBarcodeEnter();\n },\n error: (error) => {\n const errorMessage =\n error?.error?.error?.message || 'Miktar düzeltme sırasında bir hata oluştu.';\n this.toasterService.error(errorMessage);\n this.isSaving = false;\n },\n });\n }\n\n /**\n * \"Raf ve Sipariş\": kasada fiilen sayılan miktar farklıysa Dummy Kasa / çapraz kasa kesin algoritması.\n * Önce önizleme yapılır; çapraz kasa önerisi varsa kullanıcıya onay penceresi gösterilir.\n */\n private previewAndApplyShelfAndOrder(): void {\n const line = this.selectedLine!;\n\n const previewDto: BoxQuantityCorrectionPreviewDto = {\n TaskDraftDocEntry: line.ItrDocEntry,\n TaskDraftLineNum: line.ItrLineNum,\n BinAbs: line.BinAbs,\n BinCode: line.BinCode,\n ItemCode: line.ItemCode,\n WarehouseCode: line.WarehouseCode,\n CountedQuantity: this.newQuantity!,\n };\n\n this.isSaving = true;\n this.quantityCorrectionService.previewQuantityCorrection(previewDto).subscribe({\n next: (preview) => {\n if (preview.RequiresConfirmation) {\n this.isSaving = false;\n this.confirmationService.warn(preview.ConfirmationMessage, 'Çapraz Kasa').subscribe((status) => {\n const accepted = status === 'confirm';\n this.applyShelfAndOrder(line, accepted, preview.ReplacementBinCode, preview.ReplacementBinAbs);\n });\n return;\n }\n\n this.applyShelfAndOrder(line, false, '', 0);\n },\n error: (error) => {\n const errorMessage =\n error?.error?.error?.message || 'Kasa düzeltmesi önizlenirken bir hata oluştu.';\n this.toasterService.error(errorMessage);\n this.isSaving = false;\n },\n });\n }\n\n private applyShelfAndOrder(\n line: BinReservationInfoDto,\n useReplacementBox: boolean,\n replacementBinCode: string,\n replacementBinAbs: number\n ): void {\n const applyDto: BoxQuantityCorrectionApplyDto = {\n TaskDraftDocEntry: line.ItrDocEntry,\n TaskDraftLineNum: line.ItrLineNum,\n BinAbs: line.BinAbs,\n BinCode: line.BinCode,\n OrderDocEntry: line.OrderDocEntry,\n OrderDocNum: line.OrderDocNum,\n ItemCode: line.ItemCode,\n ItemDescription: line.ItemName,\n WarehouseCode: line.WarehouseCode,\n CountedQuantity: this.newQuantity!,\n UseReplacementBox: useReplacementBox,\n ReplacementBinCode: replacementBinCode,\n ReplacementBinAbs: replacementBinAbs,\n };\n\n this.isSaving = true;\n this.quantityCorrectionService.applyQuantityCorrection(applyDto).subscribe({\n next: (result) => {\n this.toasterService.success(result);\n this.isSaving = false;\n this.onBoxBarcodeEnter();\n },\n error: (error) => {\n const errorMessage =\n error?.error?.error?.message || 'Kasa düzeltmesi uygulanırken bir hata oluştu.';\n this.toasterService.error(errorMessage);\n this.isSaving = false;\n },\n });\n }\n\n /**\n * Formu temizler.\n */\n onClear(): void {\n this.boxBarcode = '';\n this.resetLineState();\n this.hasSearched = false;\n this.lastSearchedBoxBarcode = '';\n this.updateType = 'shelfAndOrder';\n }\n\n private resetLineState(): void {\n this.lines = [];\n this.selectedLine = null;\n this.newQuantity = null;\n }\n}\n","<abp-page [title]=\"'Alınacak Miktar Düzeltme'\">\n <div class=\"quantity-correction-container\">\n <div class=\"quantity-correction-layout\">\n <div class=\"qc-form-card\">\n\n <!-- Kasa Barkodu Girişi -->\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ın...\"\n [disabled]=\"isLoading\" />\n </div>\n\n <!-- Yükleniyor -->\n <div class=\"form-section\" *ngIf=\"isLoading\">\n <div class=\"content-loading\">\n <i class=\"fa fa-spinner fa-spin\"></i> Kasa içeriği yükleniyor...\n </div>\n </div>\n\n <!-- Satır Listesi (Grid) -->\n <div class=\"form-section reservation-section\" *ngIf=\"lines.length > 0 && !isLoading\">\n <label class=\"section-label\">Kasadaki Görev Satırları</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ş No</th>\n <th>Ürün Kodu</th>\n <th>Ürün Adı</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ş sonuç -->\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çık görev bulunamadı.\n </div>\n </div>\n\n <!-- Düzenleme Paneli (Satır seçilince aktif) -->\n <div *ngIf=\"selectedLine\" class=\"edit-panel\">\n <hr class=\"form-divider\" />\n\n <!-- Ürün Bilgileri (readonly) -->\n <div class=\"form-section product-info\">\n <div class=\"info-row\">\n <span class=\"info-label\">Ürün Kodu:</span>\n <span class=\"info-value\">{{ selectedLine.ItemCode }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"info-label\">Ürün Adı:</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ş No:</span>\n <span class=\"info-value\">{{ selectedLine.OrderDocNum }}</span>\n </div>\n </div>\n\n <hr class=\"form-divider\" />\n\n <!-- Güncelleme Tipi - Radio Buttons -->\n <div class=\"form-section\">\n <label class=\"section-label\">Güncelleme 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ş</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ş</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ş Miktarı' : 'Kasada Sayılan Miktar' }}\n </label>\n <input type=\"number\" class=\"form-control form-input\" id=\"newQuantityInput\"\n [(ngModel)]=\"newQuantity\"\n (keydown.enter)=\"onUpdate()\"\n placeholder=\"Miktarı 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üncelleniyor...' : 'Güncelle' }}\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","import { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { CommercialUiModule } from '@volo/abp.commercial.ng.ui';\r\nimport { PageModule } from '@abp/ng.components/page';\r\nimport { QuantityCorrectionComponent } from './quantity-correction.component';\r\n\r\nconst routes: Routes = [\r\n { path: '', component: QuantityCorrectionComponent },\r\n];\r\n\r\n@NgModule({\r\n declarations: [QuantityCorrectionComponent],\r\n imports: [\r\n CoreModule, ThemeSharedModule, FormsModule, CommercialUiModule,\r\n NgxValidateCoreModule, NgbCollapseModule, NgbDatepickerModule,\r\n NgbDropdownModule, PageModule,\r\n RouterModule.forChild(routes),\r\n ],\r\n})\r\nexport class QuantityCorrectionModule {}\r\n\r\nexport function loadQuantityCorrectionModuleAsChild() {\r\n return Promise.resolve(QuantityCorrectionModule);\r\n}\r\n","import { RestService } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface ConnectorParamsDto {\r\n erpType: string;\r\n erpName: string;\r\n baseUrl: string;\r\n apiKey: string;\r\n username: string;\r\n isActive: boolean;\r\n passwordSet: boolean;\r\n fromWarehouseCode?: string;\r\n targetWarehouseCode?: string;\r\n dummyBoxCode?: string;\r\n /** BeeCell/Orchestrator API kullanıcı adı — ERP kullanıcısından ayrıdır */\r\n beeCellUsername?: string;\r\n /** BeeCell parolası kayıtlıysa true; parola değeri hiçbir zaman dönmez */\r\n beeCellPasswordSet?: boolean;\r\n}\r\n\r\nexport interface SaveConnectorParamsDto {\r\n erpType: string;\r\n baseUrl: string;\r\n apiKey: string;\r\n username: string;\r\n /** Boş bırakılırsa mevcut şifre korunur */\r\n password: string;\r\n isActive: boolean;\r\n fromWarehouseCode?: string;\r\n targetWarehouseCode?: string;\r\n dummyBoxCode?: string;\r\n /** BeeCell/Orchestrator API kullanıcı adı */\r\n beeCellUsername?: string;\r\n /** Boş bırakılırsa mevcut BeeCell parolası korunur */\r\n beeCellPassword?: string;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ConnectorParamsService {\r\n apiName = 'SmartWarehouse';\r\n\r\n /** Mevcut tek kaydı döner; kayıt yoksa null döner */\r\n getConnectorParams = (): Observable<ConnectorParamsDto> =>\r\n this.restService.request<any, ConnectorParamsDto>(\r\n {\r\n method: 'GET',\r\n url: '/api/smart-warehouse/connector-params/get',\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n /** Kayıt varsa günceller, yoksa oluşturur (upsert) */\r\n saveConnectorParams = (dto: SaveConnectorParamsDto): Observable<void> =>\r\n this.restService.request<any, void>(\r\n {\r\n method: 'POST',\r\n url: '/api/smart-warehouse/connector-params/save',\r\n body: dto,\r\n },\r\n { apiName: this.apiName }\r\n );\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { CanActivate, Router, UrlTree } from '@angular/router';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { ConnectorParamsService } from '../hit-proxy/connector-params/connector-params.service';\r\n\r\nconst SESSION_KEY = 'sw_params_configured';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ConnectorParamsGuard implements CanActivate {\r\n /**\r\n * true → parametreler doğrulandı, API çağrısı yapmadan geç.\r\n * null → henüz bilinmiyor, API'ye sor.\r\n * SessionStorage'a da yazılır: sayfa yenileme (token refresh sonrası reload)\r\n * durumunda geçici SAP/auth hatasını \"parametre yok\" olarak yorumlamaz.\r\n */\r\n private configured: boolean | null = null;\r\n\r\n constructor(\r\n private connectorParamsService: ConnectorParamsService,\r\n private router: Router,\r\n ) {\r\n // Önceki oturumda doğrulanmışsa tekrar API çağrısı yapma.\r\n if (sessionStorage.getItem(SESSION_KEY) === 'true') {\r\n this.configured = true;\r\n }\r\n }\r\n\r\n canActivate(): Observable<boolean | UrlTree> {\r\n if (this.configured === true) {\r\n return of(true);\r\n }\r\n\r\n return this.connectorParamsService.getConnectorParams().pipe(\r\n map(data => {\r\n if (data) {\r\n this.configured = true;\r\n sessionStorage.setItem(SESSION_KEY, 'true');\r\n return true;\r\n }\r\n // Backend 200 döndü ama kayıt yok — gerçekten yapılandırılmamış.\r\n return this.router.createUrlTree(\r\n ['/smart-warehouse/connector-params'],\r\n { queryParams: { reason: 'no-config' } },\r\n );\r\n }),\r\n catchError((err: HttpErrorResponse) => {\r\n // 401 (token yenileme), 5xx (SAP session süresi dolmuş, sunucu hatası) gibi\r\n // GEÇİCİ hatalar \"parametre yok\" anlamına gelmiyor; yönlendirme yapma.\r\n if (err?.status === 401 || err?.status >= 500) {\r\n return of(true as boolean | UrlTree);\r\n }\r\n // 404 veya diğer istemci hataları → parametre gerçekten tanımlı değil.\r\n return of(this.router.createUrlTree(\r\n ['/smart-warehouse/connector-params'],\r\n { queryParams: { reason: 'no-config' } },\r\n ));\r\n }),\r\n );\r\n }\r\n\r\n /** Kayıt silindiğinde / değiştirildiğinde cache'i temizle */\r\n invalidate(): void {\r\n this.configured = null;\r\n sessionStorage.removeItem(SESSION_KEY);\r\n }\r\n}\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport {\r\n ConnectorParamsService,\r\n ConnectorParamsDto,\r\n SaveConnectorParamsDto,\r\n} from '../../hit-proxy/connector-params/connector-params.service';\r\nimport { ConnectorParamsGuard } from '../../guards/connector-params.guard';\r\nimport { WarehouseService, WarehouseDto, BinLocationDto } from '../../hit-proxy/warehouse/warehouse.service';\r\nimport { forkJoin, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\ninterface ErpOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-connector-params',\r\n templateUrl: './connector-params.component.html',\r\n styleUrls: ['./connector-params.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ConnectorParamsComponent implements OnInit {\r\n erpOptions: ErpOption[] = [\r\n { value: 'MIKRO', label: 'Mikro ERP' },\r\n ];\r\n\r\n warehouses: WarehouseDto[] = [];\r\n binLocations: BinLocationDto[] = [];\r\n isLoadingBinLocations = false;\r\n\r\n form: SaveConnectorParamsDto = {\r\n erpType: 'MIKRO',\r\n baseUrl: '',\r\n apiKey: '',\r\n username: '',\r\n password: '',\r\n isActive: true,\r\n fromWarehouseCode: '',\r\n targetWarehouseCode: '',\r\n dummyBoxCode: '',\r\n beeCellUsername: '',\r\n beeCellPassword: '',\r\n };\r\n\r\n passwordSet = false;\r\n beeCellPasswordSet = false;\r\n isLoading = false;\r\n isSaving = false;\r\n\r\n constructor(\r\n private connectorParamsService: ConnectorParamsService,\r\n private toasterService: ToasterService,\r\n private guard: ConnectorParamsGuard,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private warehouseService: WarehouseService,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n const reason = this.route.snapshot.queryParamMap.get('reason');\r\n if (reason === 'no-config') {\r\n this.toasterService.warn('Connector parametreleri yapılandırılmamış.');\r\n }\r\n this.loadData();\r\n }\r\n\r\n // İki API'yi birlikte bekle: depo listesi hazır olmadan form render edilmez,\r\n // böylece ngModel option geçişi (race condition) yaşanmaz.\r\n loadData(): void {\r\n this.isLoading = true;\r\n forkJoin({\r\n params: this.connectorParamsService.getConnectorParams(),\r\n warehouses: this.warehouseService.getSmartWarehouses().pipe(\r\n catchError(() => of([] as WarehouseDto[]))\r\n ),\r\n }).subscribe({\r\n next: ({ params, warehouses }) => {\r\n this.warehouses = warehouses;\r\n if (params) {\r\n this.form.erpType = params.erpType ?? 'MIKRO';\r\n this.form.baseUrl = params.baseUrl ?? '';\r\n this.form.apiKey = params.apiKey ?? '';\r\n this.form.username = params.username ?? '';\r\n this.form.isActive = params.isActive;\r\n this.form.password = '';\r\n this.form.fromWarehouseCode = params.fromWarehouseCode ?? '';\r\n this.form.targetWarehouseCode = params.targetWarehouseCode ?? '';\r\n this.form.dummyBoxCode = params.dummyBoxCode ?? '';\r\n this.form.beeCellUsername = params.beeCellUsername ?? '';\r\n this.form.beeCellPassword = '';\r\n this.passwordSet = params.passwordSet;\r\n this.beeCellPasswordSet = params.beeCellPasswordSet ?? false;\r\n }\r\n this.isLoading = false;\r\n\r\n // Kayıtlı kaynak depo varsa, Dummy Kasa combobox'ının o depoya ait depo yerleriyle dolması için yükle.\r\n if (this.form.fromWarehouseCode) {\r\n this.loadBinLocations(this.form.fromWarehouseCode);\r\n }\r\n },\r\n error: err => {\r\n this.toasterService.error(err?.error?.error?.message ?? 'Parametreler yüklenirken bir hata oluştu.');\r\n this.isLoading = false;\r\n },\r\n });\r\n }\r\n\r\n get isCurrentFromWhsInList(): boolean {\r\n return this.warehouses.some(w => w.WhsCode === this.form.fromWarehouseCode);\r\n }\r\n\r\n get isCurrentWhsInList(): boolean {\r\n return this.warehouses.some(w => w.WhsCode === this.form.targetWarehouseCode);\r\n }\r\n\r\n get isCurrentDummyBoxInList(): boolean {\r\n return this.binLocations.some(b => b.BinCode === this.form.dummyBoxCode);\r\n }\r\n\r\n /**\r\n * Kaynak Depo seçimi değiştiğinde çalışır: Dummy Kasa combobox'ını seçilen deponun\r\n * depo yerleriyle doldurur. Depo değiştiği için önceki depoya ait seçim artık geçerli değil.\r\n */\r\n onFromWarehouseChange(whsCode: string): void {\r\n this.form.fromWarehouseCode = whsCode;\r\n this.form.dummyBoxCode = '';\r\n this.loadBinLocations(whsCode);\r\n }\r\n\r\n private loadBinLocations(whsCode: string): void {\r\n if (!whsCode) {\r\n this.binLocations = [];\r\n return;\r\n }\r\n\r\n this.isLoadingBinLocations = true;\r\n this.warehouseService.getBinLocationsByWarehouse(whsCode).subscribe({\r\n next: (bins) => {\r\n this.binLocations = bins || [];\r\n this.isLoadingBinLocations = false;\r\n },\r\n error: () => {\r\n this.binLocations = [];\r\n this.isLoadingBinLocations = false;\r\n },\r\n });\r\n }\r\n\r\n save(): void {\r\n if (!this.form.erpType) {\r\n this.toasterService.warn('ERP Sağlayıcısı zorunludur.');\r\n return;\r\n }\r\n if (!this.form.baseUrl?.trim()) {\r\n this.toasterService.warn('Base URL zorunludur.');\r\n return;\r\n }\r\n if (!this.form.apiKey?.trim()) {\r\n this.toasterService.warn('API Key zorunludur.');\r\n return;\r\n }\r\n if (!this.form.username?.trim()) {\r\n this.toasterService.warn('Kullanıcı Adı zorunludur.');\r\n return;\r\n }\r\n if (!this.passwordSet && !this.form.password?.trim()) {\r\n this.toasterService.warn('Şifre zorunludur.');\r\n return;\r\n }\r\n if (!this.form.beeCellUsername?.trim()) {\r\n this.toasterService.warn('BeeCell Kullanıcı Adı zorunludur.');\r\n return;\r\n }\r\n if (!this.beeCellPasswordSet && !this.form.beeCellPassword?.trim()) {\r\n this.toasterService.warn('BeeCell Şifresi zorunludur.');\r\n return;\r\n }\r\n\r\n this.isSaving = true;\r\n this.connectorParamsService.saveConnectorParams(this.form).subscribe({\r\n next: () => {\r\n this.toasterService.success('Parametreler başarıyla kaydedildi.');\r\n if (this.form.password) {\r\n this.passwordSet = true;\r\n this.form.password = '';\r\n }\r\n if (this.form.beeCellPassword) {\r\n this.beeCellPasswordSet = true;\r\n this.form.beeCellPassword = '';\r\n }\r\n // Guard cache'ini güncelle — diğer ekranlar artık erişilebilir\r\n this.guard.invalidate();\r\n this.isSaving = false;\r\n },\r\n error: err => {\r\n this.toasterService.error(err?.error?.error?.message ?? 'Kayıt sırasında bir hata oluştu.');\r\n this.isSaving = false;\r\n },\r\n });\r\n }\r\n}\r\n","<abp-page [title]=\"'Connector Parametreleri'\">\r\n <div class=\"connector-params-container\">\r\n\r\n <!-- Yükleniyor -->\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ükleniyor...</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ğlayıcısı -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"erpTypeSelect\">ERP Sağlayıcısı <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ı\" required />\r\n </div>\r\n\r\n <!-- Kullanıcı Adı -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"usernameInput\">Kullanıcı Adı <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ıcı adı\" required />\r\n </div>\r\n\r\n <!-- Şifre -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"passwordInput\">\r\n Şifre <span class=\"text-danger\">*</span>\r\n <span class=\"badge bg-success ms-2\" *ngIf=\"passwordSet && !form.password\">Kayıtlı</span>\r\n </label>\r\n <input id=\"passwordInput\" type=\"password\" class=\"form-control\"\r\n [(ngModel)]=\"form.password\"\r\n [placeholder]=\"passwordSet ? 'Değiştirmek için yeni şifre girin, boş bırakırsanız mevcut şifre korunur' : 'Şifre'\" />\r\n <small class=\"text-muted\" *ngIf=\"passwordSet\">Mevcut şifreyi korumak için boş bırakın.</small>\r\n </div>\r\n\r\n <!-- BeeCell Kullanıcı Adı -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"beeCellUsernameInput\">BeeCell Kullanıcı Adı <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ıcı adı\" required />\r\n <small class=\"text-muted\">BeeCell/Orchestrator API girişi için kullanılır (ERP kullanıcısından ayrıdır).</small>\r\n </div>\r\n\r\n <!-- BeeCell Şifre -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"beeCellPasswordInput\">\r\n BeeCell Şifre <span class=\"text-danger\">*</span>\r\n <span class=\"badge bg-success ms-2\" *ngIf=\"beeCellPasswordSet && !form.beeCellPassword\">Kayıtlı</span>\r\n </label>\r\n <input id=\"beeCellPasswordInput\" type=\"password\" class=\"form-control\"\r\n [(ngModel)]=\"form.beeCellPassword\"\r\n [placeholder]=\"beeCellPasswordSet ? 'Değiştirmek için yeni şifre girin, boş bırakırsanız mevcut şifre korunur' : 'BeeCell şifresi'\" />\r\n <small class=\"text-muted\" *ngIf=\"beeCellPasswordSet\">Mevcut şifreyi korumak için boş bırakın.</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çiniz --</option>\r\n <option *ngIf=\"form.fromWarehouseCode && !isCurrentFromWhsInList\"\r\n [value]=\"form.fromWarehouseCode\">\r\n {{ form.fromWarehouseCode }} (Kayıtlı)\r\n </option>\r\n <option *ngFor=\"let whs of warehouses\" [value]=\"whs.WhsCode\">\r\n {{ whs.WhsCode }} – {{ whs.WhsName }}\r\n </option>\r\n </select>\r\n <small class=\"text-muted\">Görev Başlat'ta oluşturulan 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çiniz --</option>\r\n <option *ngIf=\"form.targetWarehouseCode && !isCurrentWhsInList\"\r\n [value]=\"form.targetWarehouseCode\">\r\n {{ form.targetWarehouseCode }} (Kayıtlı)\r\n </option>\r\n <option *ngFor=\"let whs of warehouses\" [value]=\"whs.WhsCode\">\r\n {{ whs.WhsCode }} – {{ whs.WhsName }}\r\n </option>\r\n </select>\r\n <small class=\"text-muted\">Görev Başlat'ta oluşturulan 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çiniz --</option>\r\n <option *ngIf=\"form.dummyBoxCode && !isCurrentDummyBoxInList\"\r\n [value]=\"form.dummyBoxCode\">\r\n {{ form.dummyBoxCode }} (Kayıtlı)\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\">Önce Kaynak Depo seçin.</small>\r\n <small class=\"text-muted\" *ngIf=\"isLoadingBinLocations\">Depo yerleri yükleniyor...</small>\r\n <small class=\"text-muted\" *ngIf=\"form.fromWarehouseCode && !isLoadingBinLocations\">\r\n Kasa Miktarı Güncelleme'de fiili sayım farkının muhasebeleştirildiği SAP bin kodu — seçilen 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","import { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { PageModule } from '@abp/ng.components/page';\r\nimport { ConnectorParamsComponent } from './connector-params.component';\r\n\r\nconst routes: Routes = [\r\n { path: '', component: ConnectorParamsComponent },\r\n];\r\n\r\n@NgModule({\r\n declarations: [ConnectorParamsComponent],\r\n imports: [\r\n CoreModule,\r\n ThemeSharedModule,\r\n FormsModule,\r\n PageModule,\r\n RouterModule.forChild(routes),\r\n ],\r\n})\r\nexport class ConnectorParamsModule {}\r\n\r\nexport function loadConnectorParamsModuleAsChild() {\r\n return Promise.resolve(ConnectorParamsModule);\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { SmartWarehouseComponent } from './components/smart-warehouse.component';\r\nimport { loadOrdersModuleAsChild } from './components/orders/orders.module';\r\nimport { loadShelfPlacementModuleAsChild } from './components/shelf-placement/shelf-placement.module';\r\nimport { loadShelfTransferModuleAsChild } from './components/shelf-transfer/shelf-transfer.module';\r\nimport { loadOrderStationModuleAsChild } from './components/order-station/order-station.module';\r\nimport { loadStockReportModuleAsChild } from './components/stock-report/stock-report.module'\r\nimport { loadShortagesModuleAsChild } from './components/shortages/shortages.module'\r\nimport { loadStationModuleAsChild } from './stations/station.module';\r\nimport { loadQuantityCorrectionModuleAsChild } from './components/quantity-correction/quantity-correction.module';\r\nimport { loadConnectorParamsModuleAsChild } from './components/connector-params/connector-params.module';\r\nimport { ConnectorParamsGuard } from './guards/connector-params.guard';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n pathMatch: 'full',\r\n component: SmartWarehouseComponent,\r\n },\r\n {\r\n path: 'orders',\r\n loadChildren: loadOrdersModuleAsChild,\r\n canActivate: [ConnectorParamsGuard],\r\n },\r\n {\r\n path: 'shelf-placement',\r\n loadChildren: loadShelfPlacementModuleAsChild,\r\n canActivate: [ConnectorParamsGuard],\r\n },\r\n {\r\n path: 'shelf-transfer',\r\n loadChildren: loadShelfTransferModuleAsChild,\r\n canActivate: [ConnectorParamsGuard],\r\n },\r\n {\r\n path: 'order-station',\r\n loadChildren: loadOrderStationModuleAsChild,\r\n canActivate: [ConnectorParamsGuard],\r\n },\r\n {\r\n path: 'stock-report',\r\n loadChildren: loadStockReportModuleAsChild,\r\n canActivate: [ConnectorParamsGuard],\r\n },\r\n {\r\n path: 'shortages',\r\n loadChildren: loadShortagesModuleAsChild,\r\n canActivate: [ConnectorParamsGuard],\r\n },\r\n {\r\n path: 'station',\r\n loadChildren: loadStationModuleAsChild,\r\n canActivate: [ConnectorParamsGuard],\r\n },\r\n {\r\n path: 'quantity-correction',\r\n loadChildren: loadQuantityCorrectionModuleAsChild,\r\n canActivate: [ConnectorParamsGuard],\r\n },\r\n {\r\n path: 'connector-params',\r\n loadChildren: loadConnectorParamsModuleAsChild,\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class SmartWarehouseRoutingModule { }\r\n","import { NgModule, NgModuleFactory, ModuleWithProviders } from '@angular/core';\r\nimport { CoreModule, LazyModuleFactory } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { locale } from 'devextreme/localization';\r\nimport { SmartWarehouseComponent } from './components/smart-warehouse.component';\r\nimport { SmartWarehouseRoutingModule } from './smart-warehouse-routing.module';\r\n\r\n// DevExtreme bileşenlerinin (grid filtre satırı, tarih seçiciler, sayı formatları vb.)\r\n// varsayılan tarih/sayı formatını Türkçe'ye çevirir — tekil sütun `format`'ları bunun\r\n// üzerine gelir, ama açıkça formatlanmamış her yer de bu sayede tr formatında görünür.\r\nlocale('tr');\r\n\r\n@NgModule({\r\n declarations: [SmartWarehouseComponent],\r\n imports: [CoreModule, ThemeSharedModule, SmartWarehouseRoutingModule],\r\n exports: [SmartWarehouseComponent],\r\n})\r\nexport class SmartWarehouseModule {\r\n static forChild(): ModuleWithProviders<SmartWarehouseModule> {\r\n return {\r\n ngModule: SmartWarehouseModule,\r\n providers: [],\r\n };\r\n }\r\n\r\n static forLazy(): NgModuleFactory<SmartWarehouseModule> {\r\n return new LazyModuleFactory(SmartWarehouseModule.forChild());\r\n }\r\n}\r\n","/*\r\n * Public API Surface of smart-warehouse\r\n */\r\n\r\nexport * from './lib/components/smart-warehouse.component';\r\nexport * from './lib/services/smart-warehouse.service';\r\nexport * from './lib/smart-warehouse.module';\r\nexport * from './lib/components/orders/orders.component';\r\nexport * from './lib/components/orders/orders.module';\r\nexport * from './lib/components/shelf-placement/shelf-placement.component';\r\nexport * from './lib/components/shelf-placement/shelf-placement.module';\r\nexport * from './lib/hit-proxy/orders/order.service';\r\nexport * from './lib/hit-proxy/orders/model';\r\nexport * from './lib/hit-proxy/warehouse/warehouse.service';\r\nexport * from './lib/components/order-station/order-station.component';\r\nexport * from './lib/components/order-station/order-station.module';\r\nexport * from './lib/hit-proxy/order-station/order-station.service';\r\nexport * from './lib/components/connector-params/connector-params.component';\r\nexport * from './lib/components/connector-params/connector-params.module';\r\nexport * from './lib/hit-proxy/connector-params/connector-params.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SmartWarehouseService","i2.DevexpressRestService","i1.OrderService","i2.WarehouseService","i3","i9","i10","routes","i1","i1.InventoryService","i8","i1.WarehouseService","i2.StockTransferService","i6","i1.OrderStationService","i4","i5","i1.StockReportService","i1.ShortagesService","i2.StationService","i1.QuantityCorrectionService","i1.ConnectorParamsService","i2","i3.ConnectorParamsGuard","i5.WarehouseService","i7"],"mappings":"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"}
|