package queries // GetProductStockQuery: // Ürün kodu bazlı, optimize stok + attribute sorgusu. const GetProductStockQuery = ` DECLARE @ProductCode NVARCHAR(50) = @p1; ;WITH INV AS ( SELECT CompanyCode, OfficeCode, StoreTypeCode, StoreCode, WarehouseCode, ItemTypeCode, ItemCode, ColorCode, ItemDim1Code, ItemDim2Code, ItemDim3Code, SUM(PickingQty1) AS PickingQty1, SUM(ReserveQty1) AS ReserveQty1, SUM(DispOrderQty1) AS DispOrderQty1, SUM(InventoryQty1) AS InventoryQty1 FROM ( SELECT CompanyCode, OfficeCode, StoreTypeCode, StoreCode, WarehouseCode, ItemTypeCode, ItemCode, ColorCode, ItemDim1Code, ItemDim2Code, ItemDim3Code, Qty1 AS PickingQty1, 0 AS ReserveQty1, 0 AS DispOrderQty1, 0 AS InventoryQty1 FROM PickingStates WHERE ItemTypeCode = 1 AND ItemCode = @ProductCode AND LEN(ItemCode) = 13 AND LEN(@ProductCode) = 13 UNION ALL SELECT CompanyCode, OfficeCode, StoreTypeCode, StoreCode, WarehouseCode, ItemTypeCode, ItemCode, ColorCode, ItemDim1Code, ItemDim2Code, ItemDim3Code, 0, Qty1, 0, 0 FROM ReserveStates WHERE ItemTypeCode = 1 AND ItemCode = @ProductCode AND LEN(ItemCode) = 13 AND LEN(@ProductCode) = 13 UNION ALL SELECT CompanyCode, OfficeCode, StoreTypeCode, StoreCode, WarehouseCode, ItemTypeCode, ItemCode, ColorCode, ItemDim1Code, ItemDim2Code, ItemDim3Code, 0, 0, Qty1, 0 FROM DispOrderStates WHERE ItemTypeCode = 1 AND ItemCode = @ProductCode AND LEN(ItemCode) = 13 AND LEN(@ProductCode) = 13 UNION ALL SELECT CompanyCode, OfficeCode, StoreTypeCode, StoreCode, WarehouseCode, ItemTypeCode, ItemCode, ColorCode, ItemDim1Code, ItemDim2Code, ItemDim3Code, 0, 0, 0, SUM(In_Qty1 - Out_Qty1) FROM trStock WITH (NOLOCK) WHERE ItemTypeCode = 1 AND ItemCode = @ProductCode AND LEN(ItemCode) = 13 AND LEN(@ProductCode) = 13 GROUP BY CompanyCode, OfficeCode, StoreTypeCode, StoreCode, WarehouseCode, ItemTypeCode, ItemCode, ColorCode, ItemDim1Code, ItemDim2Code, ItemDim3Code ) X GROUP BY CompanyCode, OfficeCode, StoreTypeCode, StoreCode, WarehouseCode, ItemTypeCode, ItemCode, ColorCode, ItemDim1Code, ItemDim2Code, ItemDim3Code ), Attr AS ( SELECT TOP 1 ProductCode, ProductDescription, ProductAtt01Desc, ProductAtt02Desc, ProductAtt10Desc, ProductAtt11Desc, ProductAtt21Desc, ProductAtt22Desc, ProductAtt23Desc, ProductAtt24Desc, ProductAtt25Desc, ProductAtt26Desc, ProductAtt27Desc, ProductAtt28Desc, ProductAtt29Desc, ProductAtt30Desc, ProductAtt31Desc, ProductAtt32Desc, ProductAtt33Desc, ProductAtt34Desc, ProductAtt35Desc, ProductAtt36Desc, ProductAtt37Desc, ProductAtt38Desc, ProductAtt39Desc, ProductAtt40Desc, ProductAtt41Desc, ProductAtt42Desc, ProductAtt43Desc, ProductAtt44Desc, ProductAtt45Desc, ProductAtt46Desc FROM ProductFilterWithDescription('TR') WHERE ProductCode = @ProductCode AND LEN(ProductCode) = 13 AND LEN(@ProductCode) = 13 ), Price AS ( SELECT TOP 1 Price FROM prItemBasePrice WITH (NOLOCK) WHERE ItemTypeCode = 1 AND ItemCode = @ProductCode AND LEN(ItemCode) = 13 AND LEN(@ProductCode) = 13 ORDER BY PriceDate DESC ) SELECT I.WarehouseCode AS Depo_Kodu, W.WarehouseDescription AS Depo_Adi, IT.ItemTypeDescription AS InventoryType, I.ItemCode AS Urun_Kodu, A.ProductDescription AS Madde_Aciklamasi, I.ColorCode AS Renk_Kodu, C.ColorDescription AS Renk_Aciklamasi, I.ItemDim1Code AS Beden, I.ItemDim2Code AS Yaka, ROUND(I.InventoryQty1 - I.PickingQty1 - I.ReserveQty1 - I.DispOrderQty1, U.RoundDigit) AS Kullanilabilir_Envanter, A.ProductAtt01Desc AS URUN_ANA_GRUBU, A.ProductAtt02Desc AS URUN_ALT_GRUBU, A.ProductAtt10Desc AS MARKA, A.ProductAtt11Desc AS DR, A.ProductAtt21Desc AS KALIP, A.ProductAtt22Desc AS IKINCI_PARCA_KALIP, A.ProductAtt23Desc AS PACA_GENISLIGI, A.ProductAtt24Desc AS UCUNCU_PARCA_KALIP, A.ProductAtt25Desc AS UCUNCU_PARCA_MODEL, A.ProductAtt26Desc AS BIRINCI_PARCA_KUMAS, A.ProductAtt27Desc AS IKINCI_PARCA_KUMAS, A.ProductAtt28Desc AS UCUNCU_PARCA_KUMAS, A.ProductAtt29Desc AS BIRINCI_PARCA_KARISIM, A.ProductAtt30Desc AS IKINCI_PARCA_KARISIM, A.ProductAtt31Desc AS UCUNCU_PARCA_KARISIM, A.ProductAtt32Desc AS YAKA_TIPI, A.ProductAtt33Desc AS DUGME, A.ProductAtt34Desc AS YIRTMAC, A.ProductAtt35Desc AS SEZON_YILI, A.ProductAtt36Desc AS MEVSIM, A.ProductAtt37Desc AS TABAN, A.ProductAtt38Desc AS BIRINCI_PARCA_FIT, A.ProductAtt39Desc AS IKINCI_PARCA_FIT, A.ProductAtt40Desc AS BOS2, A.ProductAtt41Desc AS KISA_KAR, A.ProductAtt42Desc AS SERI_FASON, A.ProductAtt43Desc AS STOK_GIRIS_YONTEMI, A.ProductAtt44Desc AS YETISKIN_GARSON, A.ProductAtt45Desc AS ASKILI_YAN, A.ProductAtt46Desc AS BOS3, P.Price AS Fiyat FROM INV I JOIN cdItem CI WITH (NOLOCK) ON CI.ItemTypeCode = I.ItemTypeCode AND CI.ItemCode = I.ItemCode LEFT JOIN cdUnitOfMeasure U WITH (NOLOCK) ON U.UnitOfMeasureCode = CI.UnitOfMeasureCode1 LEFT JOIN cdWarehouseDesc W WITH (NOLOCK) ON W.WarehouseCode = I.WarehouseCode AND W.LangCode = 'TR' LEFT JOIN bsItemTypeDesc IT WITH (NOLOCK) ON IT.ItemTypeCode = I.ItemTypeCode AND IT.LangCode = 'TR' LEFT JOIN cdColorDesc C WITH (NOLOCK) ON C.ColorCode = I.ColorCode AND C.LangCode = 'TR' CROSS JOIN Attr A OUTER APPLY (SELECT TOP 1 Price FROM Price) P WHERE I.ItemTypeCode = 1 AND I.ItemCode = @ProductCode AND LEN(I.ItemCode) = 13 AND LEN(@ProductCode) = 13 AND (I.InventoryQty1 - I.PickingQty1 - I.ReserveQty1 - I.DispOrderQty1) > 0 AND CI.IsBlocked = 0 AND I.WarehouseCode IN ( '1-0-14','1-0-10','1-0-8','1-2-5','1-2-4','1-0-12','100','1-0-28', '1-0-24','1-2-6','1-1-14','1-0-2','1-0-52','1-1-2','1-0-21','1-1-3', '1-0-33','101','1-014','1-0-49','1-0-36' ); `