Merge remote-tracking branch 'origin/master'

This commit is contained in:
M_Kececi
2026-03-04 13:20:58 +03:00
parent 4dc0415546
commit 96d782e474
17 changed files with 1946 additions and 565 deletions

View File

@@ -1,11 +1,11 @@
package queries
// GetProductStockQuery:
// Ürün kodu bazlı, optimize stok + attribute sorgusu.
// Urun kodu bazli, STOCK/PICK/RESERVE/DISP ayrik CTE ile optimize sorgu.
const GetProductStockQuery = `
DECLARE @ProductCode NVARCHAR(50) = @p1;
;WITH INV AS
;WITH STOCK AS
(
SELECT
CompanyCode,
@@ -19,180 +19,216 @@ DECLARE @ProductCode NVARCHAR(50) = @p1;
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)
SUM(In_Qty1 - Out_Qty1) AS InventoryQty1
FROM trStock WITH(NOLOCK)
WHERE ItemTypeCode = 1
AND ItemCode = @ProductCode
AND LEN(ItemCode) = 13
AND LEN(@ProductCode) = 13
ORDER BY PriceDate DESC
GROUP BY
CompanyCode, OfficeCode, StoreTypeCode, StoreCode, WarehouseCode,
ItemTypeCode, ItemCode, ColorCode,
ItemDim1Code, ItemDim2Code, ItemDim3Code
),
PICK AS
(
SELECT
CompanyCode, OfficeCode, StoreTypeCode, StoreCode, WarehouseCode,
ItemTypeCode, ItemCode, ColorCode,
ItemDim1Code, ItemDim2Code, ItemDim3Code,
SUM(Qty1) AS PickingQty1
FROM PickingStates
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
),
RESERVE AS
(
SELECT
CompanyCode, OfficeCode, StoreTypeCode, StoreCode, WarehouseCode,
ItemTypeCode, ItemCode, ColorCode,
ItemDim1Code, ItemDim2Code, ItemDim3Code,
SUM(Qty1) AS ReserveQty1
FROM ReserveStates
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
),
DISP AS
(
SELECT
CompanyCode, OfficeCode, StoreTypeCode, StoreCode, WarehouseCode,
ItemTypeCode, ItemCode, ColorCode,
ItemDim1Code, ItemDim2Code, ItemDim3Code,
SUM(Qty1) AS DispOrderQty1
FROM DispOrderStates
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
)
SELECT
I.WarehouseCode AS Depo_Kodu,
S.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,
bsItemTypeDesc.ItemTypeDescription AS InventoryType,
S.ItemCode AS Urun_Kodu,
P.ProductDescription AS Madde_Aciklamasi,
S.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
S.ItemDim1Code AS Beden,
S.ItemDim2Code AS Yaka,
ROUND(
S.InventoryQty1
- ISNULL(PK.PickingQty1,0)
- ISNULL(RS.ReserveQty1,0)
- ISNULL(DP.DispOrderQty1,0),
cdUnitOfMeasure.RoundDigit
) AS Kullanilabilir_Envanter,
P.ProductAtt01Desc AS URUN_ANA_GRUBU,
P.ProductAtt02Desc AS URUN_ALT_GRUBU,
P.ProductAtt10Desc AS MARKA,
P.ProductAtt11Desc AS DR,
P.ProductAtt21Desc AS KALIP,
P.ProductAtt22Desc AS IKINCI_PARCA_KALIP,
P.ProductAtt23Desc AS PACA_GENISLIGI,
P.ProductAtt24Desc AS UCUNCU_PARCA_KALIP,
P.ProductAtt25Desc AS UCUNCU_PARCA_MODEL,
P.ProductAtt26Desc AS BIRINCI_PARCA_KUMAS,
P.ProductAtt27Desc AS IKINCI_PARCA_KUMAS,
P.ProductAtt28Desc AS UCUNCU_PARCA_KUMAS,
P.ProductAtt29Desc AS BIRINCI_PARCA_KARISIM,
P.ProductAtt30Desc AS IKINCI_PARCA_KARISIM,
P.ProductAtt31Desc AS UCUNCU_PARCA_KARISIM,
P.ProductAtt32Desc AS YAKA_TIPI,
P.ProductAtt33Desc AS DUGME,
P.ProductAtt34Desc AS YIRTMAC,
P.ProductAtt35Desc AS SEZON_YILI,
P.ProductAtt36Desc AS MEVSIM,
P.ProductAtt37Desc AS TABAN,
P.ProductAtt38Desc AS BIRINCI_PARCA_FIT,
P.ProductAtt39Desc AS IKINCI_PARCA_FIT,
P.ProductAtt40Desc AS BOS2,
P.ProductAtt41Desc AS KISA_KAR,
P.ProductAtt42Desc AS SERI_FASON,
P.ProductAtt43Desc AS STOK_GIRIS_YONTEMI,
P.ProductAtt44Desc AS YETISKIN_GARSON,
P.ProductAtt45Desc AS ASKILI_YAN,
P.ProductAtt46Desc AS BOS3,
prFilteredBasePrice.Price AS Fiyat
FROM STOCK S
LEFT JOIN PICK PK
ON PK.CompanyCode=S.CompanyCode
AND PK.OfficeCode=S.OfficeCode
AND PK.StoreTypeCode=S.StoreTypeCode
AND PK.StoreCode=S.StoreCode
AND PK.WarehouseCode=S.WarehouseCode
AND PK.ItemTypeCode=S.ItemTypeCode
AND PK.ItemCode=S.ItemCode
AND PK.ColorCode=S.ColorCode
AND PK.ItemDim1Code=S.ItemDim1Code
AND PK.ItemDim2Code=S.ItemDim2Code
AND PK.ItemDim3Code=S.ItemDim3Code
LEFT JOIN RESERVE RS
ON RS.CompanyCode=S.CompanyCode
AND RS.OfficeCode=S.OfficeCode
AND RS.StoreTypeCode=S.StoreTypeCode
AND RS.StoreCode=S.StoreCode
AND RS.WarehouseCode=S.WarehouseCode
AND RS.ItemTypeCode=S.ItemTypeCode
AND RS.ItemCode=S.ItemCode
AND RS.ColorCode=S.ColorCode
AND RS.ItemDim1Code=S.ItemDim1Code
AND RS.ItemDim2Code=S.ItemDim2Code
AND RS.ItemDim3Code=S.ItemDim3Code
LEFT JOIN DISP DP
ON DP.CompanyCode=S.CompanyCode
AND DP.OfficeCode=S.OfficeCode
AND DP.StoreTypeCode=S.StoreTypeCode
AND DP.StoreCode=S.StoreCode
AND DP.WarehouseCode=S.WarehouseCode
AND DP.ItemTypeCode=S.ItemTypeCode
AND DP.ItemCode=S.ItemCode
AND DP.ColorCode=S.ColorCode
AND DP.ItemDim1Code=S.ItemDim1Code
AND DP.ItemDim2Code=S.ItemDim2Code
AND DP.ItemDim3Code=S.ItemDim3Code
JOIN cdItem WITH(NOLOCK)
ON S.ItemCode = cdItem.ItemCode
AND S.ItemTypeCode = cdItem.ItemTypeCode
LEFT JOIN cdUnitOfMeasure WITH(NOLOCK)
ON cdItem.UnitOfMeasureCode1 = cdUnitOfMeasure.UnitOfMeasureCode
LEFT JOIN ProductFilterWithDescription('TR') P
ON P.ProductCode = S.ItemCode
LEFT JOIN bsItemTypeDesc WITH(NOLOCK)
ON bsItemTypeDesc.ItemTypeCode = S.ItemTypeCode
AND bsItemTypeDesc.LangCode='TR'
LEFT JOIN cdWarehouseDesc W WITH(NOLOCK)
ON W.WarehouseCode = S.WarehouseCode
AND W.LangCode='TR'
LEFT JOIN cdColorDesc C WITH(NOLOCK)
ON C.ColorCode = S.ColorCode
AND C.LangCode='TR'
LEFT JOIN (
SELECT
ItemCode,
ItemTypeCode,
Price,
ROW_NUMBER() OVER (PARTITION BY ItemCode, ItemTypeCode ORDER BY PriceDate DESC) AS RowNum
FROM prItemBasePrice WITH(NOLOCK)
) prFilteredBasePrice
ON prFilteredBasePrice.ItemCode = S.ItemCode
AND prFilteredBasePrice.ItemTypeCode = S.ItemTypeCode
AND prFilteredBasePrice.RowNum = 1
WHERE
I.ItemTypeCode = 1
AND I.ItemCode = @ProductCode
AND LEN(I.ItemCode) = 13
S.ItemTypeCode IN (1)
AND S.ItemCode = @ProductCode
AND LEN(S.ItemCode) = 13
AND LEN(@ProductCode) = 13
AND (I.InventoryQty1 - I.PickingQty1 - I.ReserveQty1 - I.DispOrderQty1) > 0
AND CI.IsBlocked = 0
AND I.WarehouseCode IN
AND (
S.InventoryQty1
- ISNULL(PK.PickingQty1,0)
- ISNULL(RS.ReserveQty1,0)
- ISNULL(DP.DispOrderQty1,0)
) > 0
AND cdItem.IsBlocked = 0
AND S.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',