Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -912,10 +912,10 @@ func GetProductionHasCostDetailRowsByOnMLNo(
|
||||
nOnMLNo int,
|
||||
) (*sql.Rows, error) {
|
||||
sqlText := `
|
||||
SELECT
|
||||
-- Prefer the group label stored on the OnML detail row (D.sAciklama3),
|
||||
-- because some hammadde type master rows may have empty/legacy group labels.
|
||||
ISNULL(NULLIF(LTRIM(RTRIM(D.sAciklama3)), ''), ISNULL(NULLIF(LTRIM(RTRIM(T.sAciklama3)), ''), N'TANIMSIZ')) AS sAciklama3,
|
||||
SELECT
|
||||
-- Prefer the group label stored on the OnML detail row (D.sAciklama3),
|
||||
-- because some hammadde type master rows may have empty/legacy group labels.
|
||||
ISNULL(NULLIF(LTRIM(RTRIM(D.sAciklama3)), ''), ISNULL(NULLIF(LTRIM(RTRIM(T.sAciklama3)), ''), N'TANIMSIZ')) AS sAciklama3,
|
||||
SUM(ISNULL(D.lTutar, 0)) OVER (
|
||||
PARTITION BY ISNULL(NULLIF(LTRIM(RTRIM(D.sAciklama3)), ''), ISNULL(NULLIF(LTRIM(RTRIM(T.sAciklama3)), ''), N'TANIMSIZ'))
|
||||
) AS GroupTotalTutar,
|
||||
@@ -924,14 +924,14 @@ func GetProductionHasCostDetailRowsByOnMLNo(
|
||||
) AS GroupTotalUSDTutar,
|
||||
RTRIM(CONVERT(VARCHAR(32), ISNULL(D.nOnMLNo, 0))) AS nOnMLNo,
|
||||
RTRIM(CONVERT(VARCHAR(32), ISNULL(D.nOnMLDetNo, 0))) AS nOnMLDetNo,
|
||||
RTRIM(CONVERT(VARCHAR(32), ISNULL(D.nHammaddeTuruNo, 0))) AS nHammaddeTuruNo,
|
||||
RTRIM(CONVERT(VARCHAR(32), ISNULL(D.nUrtMTBolumID, 0))) AS nUrtMTBolumID,
|
||||
-- Normalize code to variantless (tbStok.sModel) when D.sKodu is a variant-coded stock record.
|
||||
ISNULL(NULLIF(LTRIM(RTRIM(SX.sModel)), ''), ISNULL(D.sKodu, '')) AS sKodu,
|
||||
ISNULL(NULLIF(LTRIM(RTRIM(SX.sAciklama)), ''), ISNULL(D.sAciklama, '')) AS sAciklama,
|
||||
ISNULL(D.sRenk, '') AS sRenk,
|
||||
ISNULL(D.sBeden, '') AS sBeden,
|
||||
ISNULL(D.sAciklama2, '') AS sAciklama2,
|
||||
RTRIM(CONVERT(VARCHAR(32), ISNULL(D.nHammaddeTuruNo, 0))) AS nHammaddeTuruNo,
|
||||
RTRIM(CONVERT(VARCHAR(32), ISNULL(D.nUrtMTBolumID, 0))) AS nUrtMTBolumID,
|
||||
-- Normalize code to variantless (tbStok.sModel) when D.sKodu is a variant-coded stock record.
|
||||
ISNULL(NULLIF(SX.sModel, ''), ISNULL(D.sKodu, '')) AS sKodu,
|
||||
ISNULL(NULLIF(SX.sAciklama, ''), ISNULL(D.sAciklama, '')) AS sAciklama,
|
||||
ISNULL(D.sRenk, '') AS sRenk,
|
||||
ISNULL(D.sBeden, '') AS sBeden,
|
||||
ISNULL(D.sAciklama2, '') AS sAciklama2,
|
||||
ISNULL(D.lMiktar, 0) AS lMiktar,
|
||||
ISNULL(D.lFiyat, 0) AS lFiyat,
|
||||
ISNULL(D.lTutar, 0) AS lTutar,
|
||||
@@ -949,25 +949,21 @@ func GetProductionHasCostDetailRowsByOnMLNo(
|
||||
ISNULL(D.sBirim, '') AS sBirim,
|
||||
ISNULL(T.sAciklama, '') AS sHammaddeTuruAdi,
|
||||
ISNULL(B.sAdi, '') AS sParcaAdi
|
||||
FROM dbo.spUrtOnMLMasDet D
|
||||
LEFT JOIN dbo.spUrtOnMLHammaddeTuru T
|
||||
ON T.nHammaddeTuruNo = D.nHammaddeTuruNo
|
||||
LEFT JOIN dbo.spUrtMTBolum B
|
||||
ON B.nUrtMTBolumID = D.nUrtMTBolumID
|
||||
OUTER APPLY (
|
||||
SELECT TOP 1
|
||||
LTRIM(RTRIM(CONVERT(NVARCHAR(255), ISNULL(S.sModel, '')))) AS sModel,
|
||||
LTRIM(RTRIM(CONVERT(NVARCHAR(255), ISNULL(S.sAciklama, '')))) AS sAciklama
|
||||
FROM dbo.tbStok S WITH (NOLOCK)
|
||||
WHERE LTRIM(RTRIM(CONVERT(NVARCHAR(255), ISNULL(S.sKodu, '')))) = LTRIM(RTRIM(CONVERT(NVARCHAR(255), ISNULL(D.sKodu, ''))))
|
||||
) SX
|
||||
WHERE D.nOnMLNo = @p1
|
||||
ORDER BY
|
||||
GroupTotalTutar DESC,
|
||||
sAciklama3 ASC,
|
||||
ISNULL(D.lTutar, 0) DESC,
|
||||
D.nOnMLDetNo ASC
|
||||
`
|
||||
FROM dbo.spUrtOnMLMasDet D
|
||||
LEFT JOIN dbo.spUrtOnMLHammaddeTuru T
|
||||
ON T.nHammaddeTuruNo = D.nHammaddeTuruNo
|
||||
LEFT JOIN dbo.spUrtMTBolum B
|
||||
ON B.nUrtMTBolumID = D.nUrtMTBolumID
|
||||
LEFT JOIN dbo.tbStok SX WITH (NOLOCK)
|
||||
ON (SX.IsBlocked = 0 OR SX.IsBlocked IS NULL)
|
||||
AND ISNULL(SX.sKodu,'') = ISNULL(D.sKodu,'')
|
||||
WHERE D.nOnMLNo = @p1
|
||||
ORDER BY
|
||||
GroupTotalTutar DESC,
|
||||
sAciklama3 ASC,
|
||||
ISNULL(D.lTutar, 0) DESC,
|
||||
D.nOnMLDetNo ASC
|
||||
`
|
||||
|
||||
return uretimDB.QueryContext(ctx, sqlText, nOnMLNo)
|
||||
}
|
||||
@@ -2033,6 +2029,111 @@ ORDER BY
|
||||
return mssqlDB.QueryRowContext(ctx, sqlText, sKodu, costDate, colorCode, itemDim1Code), nil
|
||||
}
|
||||
|
||||
// Bulk version of GetProductionHasCostLatestPurchasePriceForItem.
|
||||
// Uses OPENJSON to avoid 1-query-per-item fan-out.
|
||||
// For each requested rowKey, picks the latest purchase invoice before costDate,
|
||||
// preferring exact ColorCode/ItemDim1Code when provided.
|
||||
func GetProductionHasCostLatestPurchasePricesForItems(
|
||||
ctx context.Context,
|
||||
mssqlDB *sql.DB,
|
||||
itemsJSON string,
|
||||
costDate string,
|
||||
) (*sql.Rows, error) {
|
||||
itemsJSON = strings.TrimSpace(itemsJSON)
|
||||
costDate = strings.TrimSpace(costDate)
|
||||
|
||||
sqlText := `
|
||||
DECLARE @targetDate date = TRY_CONVERT(date, NULLIF(@p2, ''), 23);
|
||||
|
||||
WITH REQ AS (
|
||||
SELECT
|
||||
RowKey,
|
||||
LTRIM(RTRIM(ISNULL(ItemCode, ''))) AS ItemCode,
|
||||
LTRIM(RTRIM(ISNULL(ColorCode, ''))) AS ColorCode,
|
||||
LTRIM(RTRIM(ISNULL(ItemDim1Code, ''))) AS ItemDim1Code
|
||||
FROM OPENJSON(@p1) WITH (
|
||||
RowKey NVARCHAR(128) '$.rowKey',
|
||||
ItemCode NVARCHAR(128) '$.sKodu',
|
||||
ColorCode NVARCHAR(64) '$.colorCode',
|
||||
ItemDim1Code NVARCHAR(64) '$.itemDim1Code'
|
||||
)
|
||||
WHERE LTRIM(RTRIM(ISNULL(ItemCode, ''))) <> ''
|
||||
), BASE AS (
|
||||
SELECT
|
||||
R.RowKey,
|
||||
A.InvoiceDate,
|
||||
A.InvoiceNumber,
|
||||
A.ItemTypeCode,
|
||||
A.ItemCode,
|
||||
A.ColorCode,
|
||||
A.ItemDim1Code,
|
||||
A.Qty1,
|
||||
A.Doc_Price,
|
||||
A.Doc_CurrencyCode,
|
||||
CASE
|
||||
WHEN R.ColorCode <> '' AND LTRIM(RTRIM(ISNULL(A.ColorCode, ''))) = R.ColorCode THEN 0
|
||||
WHEN R.ColorCode = '' THEN 0
|
||||
ELSE 1
|
||||
END AS colorRank,
|
||||
CASE
|
||||
WHEN R.ItemDim1Code <> '' AND LTRIM(RTRIM(ISNULL(A.ItemDim1Code, ''))) = R.ItemDim1Code THEN 0
|
||||
WHEN R.ItemDim1Code = '' THEN 0
|
||||
ELSE 1
|
||||
END AS dimRank
|
||||
FROM REQ R
|
||||
INNER JOIN AllInvoicesWithAttributes A
|
||||
ON LTRIM(RTRIM(A.ItemCode)) = R.ItemCode
|
||||
WHERE A.ProcessCode IN ('BP')
|
||||
AND A.ATAtt01 IN (1, 2)
|
||||
AND A.CompanyCode IN (1, 2, 5)
|
||||
AND A.IsCompleted = 1
|
||||
AND YEAR(A.InvoiceDate) >= 2022
|
||||
AND (@targetDate IS NULL OR CONVERT(date, A.InvoiceDate) < @targetDate)
|
||||
), RANKED AS (
|
||||
SELECT
|
||||
B.*,
|
||||
ROW_NUMBER() OVER (PARTITION BY B.RowKey ORDER BY B.colorRank, B.dimRank, B.InvoiceDate DESC, B.InvoiceNumber DESC) AS rn
|
||||
FROM BASE B
|
||||
)
|
||||
SELECT
|
||||
R.RowKey,
|
||||
'MAN' AS priceType,
|
||||
CONVERT(VARCHAR(16), R.InvoiceDate, 120) AS Tarih,
|
||||
ISNULL(R.InvoiceNumber, '') AS FaturaKodu,
|
||||
LTRIM(RTRIM(ISNULL(R.ItemCode, ''))) AS MasrafKodu,
|
||||
ISNULL(ID.ItemDescription, '') AS MasrafDetay,
|
||||
ISNULL(R.ColorCode, '') AS ColorCode,
|
||||
ISNULL(COL.ColorDescription, '') AS ColorDescription,
|
||||
ISNULL(R.ItemDim1Code, '') AS ItemDim1Code,
|
||||
ISNULL(DIM1.ItemDim1Description, '') AS ItemDim1Description,
|
||||
ISNULL(R.Doc_Price, 0) AS EvrakFiyat,
|
||||
ISNULL(R.Doc_CurrencyCode, '') AS EvrakDoviz
|
||||
FROM RANKED R
|
||||
OUTER APPLY (
|
||||
SELECT TOP 1 ItemDescription
|
||||
FROM cdItemDesc
|
||||
WHERE ItemTypeCode = R.ItemTypeCode
|
||||
AND ItemCode = R.ItemCode
|
||||
AND LangCode = 'TR'
|
||||
) ID
|
||||
OUTER APPLY (
|
||||
SELECT TOP 1 ItemDim1Description
|
||||
FROM cdItemDim1Desc
|
||||
WHERE ItemDim1Code = R.ItemDim1Code
|
||||
AND LangCode = 'TR'
|
||||
) DIM1
|
||||
OUTER APPLY (
|
||||
SELECT TOP 1 ColorDescription
|
||||
FROM cdColorDesc
|
||||
WHERE ColorCode = R.ColorCode
|
||||
AND LangCode = 'TR'
|
||||
) COL
|
||||
WHERE R.rn = 1;
|
||||
`
|
||||
|
||||
return mssqlDB.QueryContext(ctx, sqlText, itemsJSON, costDate)
|
||||
}
|
||||
|
||||
func GetProductionHasCostPurchaseHistoryByExpenseCode(
|
||||
ctx context.Context,
|
||||
mssqlDB *sql.DB,
|
||||
|
||||
Reference in New Issue
Block a user