Hi experts
Am having a sql query for Customized report with Customer Aging
it is not returning me the correct value as per the Standard Aging Report
I use Multi Currency for my Customer, but need Aging in local Currency
i had some fields with it
also i need to filter the query with GlLicnumber (in which i had given the collection resp person name)
Can any one help me to edit this query and help me to sort it out
Regards
SELECT tt.[Cust Num],
tt.[Cust Name],
tt.[Responsible for Collection],
tt.[Balance],
tt.[GroupCode],
--tt.[Last Payment Received],
-- tt.[Last Payment Received Date],
tt.[PymntGroup],
--tt.[AliasName],
tt.[city],
--SUM(tt.[Credit Amt]) AS [Credit Amt],
SUM(tt.[0-30 Days]) AS [0-30 Days],
SUM(tt.[31 to 60 Days]) AS [31 to 60 Days],
SUM(tt.[61 to 90 days]) AS [61 to 90 Days],
SUM(tt.[90 to 120 Days]) AS [91 to 120 Days],
SUM(tt.[121 Plus Days]) AS [121 Plus Days]
FROM (
SELECT T1.CardCode AS 'Cust Num',
T1.CardName AS 'Cust Name',
T1.GlblLocNum AS 'Responsible for Collection',
T0.BalDueDeb AS 'Debit Amt',
T0.BalDueCred * -1 AS 'Credit Amt',
T1.Balance AS 'Balance',
T1.[GroupCode],
T2.[PymntGroup],
--T1.[AliasName],
T3.[City],
IsNull((Select Top 1 Sum(DocTotal) From ORCT Where ORCT.CardCode=T1.CardCode and ORCT.Status <> 'C' and (ORCT.DocDate>= ORCT.DocDate and ORCT.DocDate<= ORCT.DocDate) Group By ORCT.DocDate Order By ORCT.DocDate DESC),0) 'Last Payment Received',
IsNull((Select Top 1 Max(DocDate) From ORCT Where ORCT.CardCode=T1.CardCode and ORCT.Status <> 'C' and (ORCT.DocDate>= ORCT.DocDate and ORCT.DocDate<= ORCT.DocDate ) Group By ORCT.DocDate Order By ORCT.DocDate DESC),0) 'Last Payment Received Date',
CASE
WHEN T0.TransType = 13 THEN 'AR Invoice'
WHEN T0.TransType = 14 THEN 'AR Cred Memo'
WHEN T0.TransType = 24 THEN 'Payment'
ELSE 'Other'
END AS 'Trans Type',
T0.Ref1 AS 'Reference',
FcCurrency AS 'Currency',
CONVERT(VARCHAR(10), RefDate, 103) 'Posting Date',
CONVERT(VARCHAR(10), DueDate, 103) 'Due Date',
CONVERT(VARCHAR(10), TaxDate, 103) 'Doc Date',
CASE
WHEN (DATEDIFF(DD, RefDate, CURRENT_TIMESTAMP)) + 1 < 30 THEN CASE
WHEN
balduecred
<
>
0 THEN
balduecred
*
-
1
ELSE
balduedeb
END
END AS '0-30 Days',
CASE
WHEN (DATEDIFF(DD, RefDate, CURRENT_TIMESTAMP)) + 1 > 30
AND (DATEDIFF(DD, RefDate, CURRENT_TIMESTAMP)) + 1 < 61 THEN
CASE
WHEN balduecred < > 0 THEN balduecred * -1
ELSE balduedeb
END
END AS '31 to 60 Days',
CASE
WHEN (DATEDIFF(DD, RefDate, CURRENT_TIMESTAMP)) + 1 > 60
AND (DATEDIFF(DD, RefDate, CURRENT_TIMESTAMP)) + 1 < 91 THEN
CASE
WHEN balduecred < > 0 THEN balduecred * -1
ELSE balduedeb
END
END AS '61 to 90 days',
CASE
WHEN (DATEDIFF(DD, RefDate, CURRENT_TIMESTAMP)) + 1 > 90
AND (DATEDIFF(DD, RefDate, CURRENT_TIMESTAMP)) + 1 < 121 THEN
CASE
WHEN balduecred < > 0 THEN balduecred * -1
ELSE balduedeb
END
END AS '90 to 120 Days',
CASE
WHEN (DATEDIFF(DD, RefDate, CURRENT_TIMESTAMP)) + 1 > 121 THEN CASE
WHEN
balduecred
<
>
0 THEN
balduecred
*
-
1
ELSE
balduedeb
END
END AS '121 Plus Days'
FROM JDT1 T0
INNER JOIN OCRD T1
ON T0.ShortName = T1.CardCode
AND T1.CardType = 'C'/* AND T1.QryGroup1 = 'Y'*/
inner join OCTG T2 ON T1.GroupNum = T2.GroupNum
LEFT OUTER JOIN CRD1 T3 ON T1.City = T3.City
WHERE
T1.CardType ='C' /*AND T1.CARDCODE NOT IN ('DB00000063','JB00000145','RB00000465') */AND
T0.IntrnMatch = '0'
AND T0.BalDueDeb != T0.BalDueCred AND T1.Balance <> '0' /*and t1.CardCode = 'RB0000117' */ and T1.GlblLocNum = 'SAFDAR'
) AS tt
GROUP BY
tt.[Cust Num],
tt.[Cust Name],
tt.[Balance],
tt.[GroupCode],
tt.[Last Payment Received],
tt.[Last Payment Received Date],
tt.[Responsible for Collection],
tt.[PymntGroup],
--tt.[AliasName]
tt.[CITY]
Order By tt.[Cust Name]