Customer Receivables Aging_Query

Hi, I have a query for Customer Receivables Aging, I found it in the next link [] I customize it for specific needs. It gives the correct total of Balance Due for all our customers, but it doesn't give the right age of the debt. Every time I Think I solve it, the next day is wrong again (Compare it with System's Standard Aging), The amounts for 0_7, 8_14 and so on are not correct. ¿What is wrong?
DECLARE @Documents Table (DocNum Numeric(19,0), CardCode VarChar(15), CardName VarChar(100), DocDate DateTime, DocDueDate DateTime, DueDate DateTime, DayPastDue Numeric(19,2), Balance Numeric(19,2), Unapplied Numeric(19,2), Source VarChar(5))
INSERT INTO @Documents (DocNum, CardCode, CardName, DocDate, DocDueDate, DayPastDue, Balance, Unapplied, Source)
SELECT T0.DocNum, T0.CardCode, T0.CardName, T0.DocDate, T0.DocDueDate, CAST(GetDate()-T0.DocDueDate AS NUMERIC) AS DayPastDue, (T0.DocTotal-T0.PaidToDate) AS Balance, (T0.DocTotal-T0.PaidToDate) AS Unapplied, 'RF' AS Source
FROM OINV T0 LEFT OUTER JOIN JDT1 T1 ON T0.CardCode=T1.ShortName
WHERE T0.DocDate<GetDate ()+1 AND T0.DocStatus='O' AND (T0.DocTotal-T0.PaidToDate)<>0 AND (T0.DocTotal-T0.PaidToDate)=T1.BalDueDeb + (- T1.BalDueCred)
GROUP BY T0.DocNum, T0.CardCode, T0.CardName, T0.DocDate, T0.DocDueDate, T0.DocTotal, T0.PaidToDate
INSERT INTO @Documents (DocNum, CardCode, CardName, DocDate, DocDueDate, DayPastDue, Balance, Unapplied, Source)
SELECT T0.DocNum, T0.CardCode, T0.CardName, T0.DocDate, T0.DocDueDate, CAST(GetDate ()-T0.DocDueDate AS NUMERIC) AS DayPastDue, -T0.OpenBal AS Balance,   T0.DocTotal AS Unapplied, 'PR' AS Source
FROM ORCT T0 LEFT OUTER JOIN JDT1 T1 ON T0.CardCode=T1.ShortName
WHERE T0.doctype='C' AND T0.DocDate < GetDate ()+1 AND T0.[Canceled] ='N' AND T0.OpenBal<>0 AND -T0.OpenBal=T1.BalDueDeb + (- T1.BalDueCred)
GROUP BY T0.DocNum, T0.CardCode, T0.CardName, T0.DocDate, T0.DocDueDate, T0.OpenBal, T0.DocTotal
INSERT INTO @Documents (DocNum, CardCode, CardName, DocDate, DocDueDate, DayPastDue, Balance, Unapplied, Source)
SELECT T0.DocNum, T0.CardCode, T0.CardName, T0.DocDate, T0.DocDueDate, CAST(GetDate()-T0.DocDueDate AS NUMERIC) AS DayPastDue, T0.OpenBal AS Balance, T0.DocTotal AS Unapplied, 'PP' AS Source
FROM OVPM T0
WHERE T0.doctype='C' AND T0.DocDate < GetDate ()+1 AND T0.[OpenBal]<>0 AND T0.[Canceled] ='N' AND T0.DocTotal<>-T0.OpenBal
GROUP BY T0.DocNum, T0.CardCode, T0.CardName, T0.DocDate, T0.DocDueDate, T0.OpenBal, T0.DocTotal
ORDER BY CardCode
INSERT INTO @Documents (DocNum, CardCode, CardName, DocDate, DocDueDate, DayPastDue, Balance, Unapplied, Source)
SELECT T2.TransId, T1.CardCode, T1.CardName, T0.[RefDate], T0.[DueDate], CAST(GetDate()-T0.DueDate AS NUMERIC) AS DayPastDue, T0.BalDueDeb +  (- T0.BalDueCred) AS 'Balance', CASE WHEN T0.Debit>0 THEN T0.Debit else T0.Credit*-1 END Unapplied, 'AS' AS Source
FROM OJDT t2 INNER JOIN JDT1 T0 on T2.TransId=T0.TransId INNER JOIN ocrd t1 on T0.ShortName=T1.CardCode
WHERE T1.cardtype='C' AND T2.transtype=30 AND T2.REFdate < GetDate ()+1 AND T0.[LineType]=' ' AND (T0.[BalDueDeb]>0 or  T0.[BalDueCred]>0)
GROUP BY T2.TransId, T1.CardCode, T1.CardName, T0.[RefDate], T0.[DueDate], T0.Debit, T0.Credit, T0.[Line_ID], T0.BalDueDeb, T0.BalDueCred
INSERT INTO @Documents (DocNum, CardCode, CardName, DocDate, DocDueDate, DayPastDue, Balance, Unapplied, Source)
SELECT T0.DocNum, T0.CardCode, T0.CardName, DocDate, DocDueDate, CAST(GetDate()-DocDueDate AS NUMERIC) AS DayPastDue, (-1)*DocTotal AS Balance, (-1)*(DocTotal-PaidToDate) AS Unapplied, 'RC' AS Src
FROM ORIN T0 INNER JOIN (SELECT distinct DocEntry, bASeentry FROM rin1 WHERE DocDate < GetDate ()+1 ) T1 on T0.DocEntry=T1.DocEntry
WHERE T0.DocStatus='O' AND T1.bASeentry is null AND T0.DocDate<GetDate ()+1 AND DocStatus='O'
GROUP BY T0.DocNum, T0.CardCode, T0.CardName, DocDate, DocDueDate, DocTotal, PaidToDate
SELECT B.CardCode AS 'SBO Code', B.CardName AS 'Customer', T2.GROUPName AS 'Group', B.Balance_Due AS 'Total_Debt',  (B.Future_Remit) AS 'Future_Remit', B.Days7 AS 'Due_on_7_Days', B.Days_0_7 AS '0_7', B.Days_8_14 AS '8_14', B.Days_15_30 AS '15_30', B.Days_31_45 AS '31_45', B.Days_46_60 AS '46_60', B.Days_61_90 AS '61_90', B.Days_91_120 AS '91_120', B.Days_120_Over AS '120+'
FROM
(SELECT A.CardCode, A.CardName, Sum(A.Balance)Balance_Due, Sum(A.Future_Remit)Future_Remit, Sum(A.Days_0_7)Days_0_7, Sum(A.Days_31_45)Days_31_45,
Sum(A.Days_61_90)Days_61_90, Sum(A.Days_91_120)Days_91_120, Sum(A.Days_120_Over)Days_120_Over, Sum(Days7)Days7, Sum(Days_8_14)Days_8_14, Sum(Days_15_30)Days_15_30, Sum(Days_46_60)Days_46_60
FROM
(SELECT CardCode, CardName, Sum(CASE WHEN DayPastDue<=0 THEN Balance else 0 END) AS CurrBal, Sum(Balance) Balance, Source, Sum(CASE WHEN DayPastDue<=0 THEN Balance else 0 END) AS Future_Remit, Sum(CASE WHEN DayPastDue>=-7 AND DayPastDue<=0 THEN Balance else 0 END) AS Days7, Sum(CASE WHEN DayPastDue>=1 AND DayPastDue<8 THEN Balance else 0 END) AS Days_0_7, Sum(CASE WHEN DayPastDue>=8 AND DayPastDue<15 THEN Balance else 0 END) AS Days_8_14, Sum(CASE WHEN DayPastDue>=15 AND DayPastDue<31 THEN Balance else 0 END) AS Days_15_30, Sum(CASE WHEN DayPastDue>=31 AND DayPastDue<46 THEN Balance else 0 END) AS Days_31_45, Sum(CASE WHEN DayPastDue>=46 AND DayPastDue<61 THEN Balance else 0 END) AS Days_46_60, Sum(CASE WHEN DayPastDue>=61 AND DayPastDue<91 THEN Balance else 0 END) AS Days_61_90, Sum(CASE WHEN DayPastDue>=91 AND DayPastDue<121 THEN Balance else 0 END) AS Days_91_120, Sum(CASE WHEN DayPastDue>=121 THEN Balance else 0 END) AS Days_120_Over
FROM @Documents GROUP BY CardCode, CardName, Source)A
WHERE A.Balance<>0 GROUP BY A.CardCode, A.CardName)B
LEFT OUTER JOIN [dbo].[OCRD] T1 ON T1.[CardCode] = B.CardCode AND T1.[CardType] = 'C' LEFT OUTER JOIN [dbo].[OCRG] T2 ON T1.[GroupCode] = T2.[GroupCode]
WHERE B.Balance_Due<>0 ORDER BY B.CardCode
Edited by: mariaem on Feb 17, 2011 4:03 PM
Edited by: mariaem on Feb 17, 2011 4:05 PM

Hi, I have a query for Customer Receivables Aging, I found it in the next link [] I customize it for specific needs. It gives the correct total of Balance Due for all our customers, but it doesn't give the right age of the debt. Every time I Think I solve it, the next day is wrong again (Compare it with System's Standard Aging), The amounts for 0_7, 8_14 and so on are not correct. ¿What is wrong?
DECLARE @Documents Table (DocNum Numeric(19,0), CardCode VarChar(15), CardName VarChar(100), DocDate DateTime, DocDueDate DateTime, DueDate DateTime, DayPastDue Numeric(19,2), Balance Numeric(19,2), Unapplied Numeric(19,2), Source VarChar(5))
INSERT INTO @Documents (DocNum, CardCode, CardName, DocDate, DocDueDate, DayPastDue, Balance, Unapplied, Source)
SELECT T0.DocNum, T0.CardCode, T0.CardName, T0.DocDate, T0.DocDueDate, CAST(GetDate()-T0.DocDueDate AS NUMERIC) AS DayPastDue, (T0.DocTotal-T0.PaidToDate) AS Balance, (T0.DocTotal-T0.PaidToDate) AS Unapplied, 'RF' AS Source
FROM OINV T0 LEFT OUTER JOIN JDT1 T1 ON T0.CardCode=T1.ShortName
WHERE T0.DocDate<GetDate ()+1 AND T0.DocStatus='O' AND (T0.DocTotal-T0.PaidToDate)<>0 AND (T0.DocTotal-T0.PaidToDate)=T1.BalDueDeb + (- T1.BalDueCred)
GROUP BY T0.DocNum, T0.CardCode, T0.CardName, T0.DocDate, T0.DocDueDate, T0.DocTotal, T0.PaidToDate
INSERT INTO @Documents (DocNum, CardCode, CardName, DocDate, DocDueDate, DayPastDue, Balance, Unapplied, Source)
SELECT T0.DocNum, T0.CardCode, T0.CardName, T0.DocDate, T0.DocDueDate, CAST(GetDate ()-T0.DocDueDate AS NUMERIC) AS DayPastDue, -T0.OpenBal AS Balance,   T0.DocTotal AS Unapplied, 'PR' AS Source
FROM ORCT T0 LEFT OUTER JOIN JDT1 T1 ON T0.CardCode=T1.ShortName
WHERE T0.doctype='C' AND T0.DocDate < GetDate ()+1 AND T0.[Canceled] ='N' AND T0.OpenBal<>0 AND -T0.OpenBal=T1.BalDueDeb + (- T1.BalDueCred)
GROUP BY T0.DocNum, T0.CardCode, T0.CardName, T0.DocDate, T0.DocDueDate, T0.OpenBal, T0.DocTotal
INSERT INTO @Documents (DocNum, CardCode, CardName, DocDate, DocDueDate, DayPastDue, Balance, Unapplied, Source)
SELECT T0.DocNum, T0.CardCode, T0.CardName, T0.DocDate, T0.DocDueDate, CAST(GetDate()-T0.DocDueDate AS NUMERIC) AS DayPastDue, T0.OpenBal AS Balance, T0.DocTotal AS Unapplied, 'PP' AS Source
FROM OVPM T0
WHERE T0.doctype='C' AND T0.DocDate < GetDate ()+1 AND T0.[OpenBal]<>0 AND T0.[Canceled] ='N' AND T0.DocTotal<>-T0.OpenBal
GROUP BY T0.DocNum, T0.CardCode, T0.CardName, T0.DocDate, T0.DocDueDate, T0.OpenBal, T0.DocTotal
ORDER BY CardCode
INSERT INTO @Documents (DocNum, CardCode, CardName, DocDate, DocDueDate, DayPastDue, Balance, Unapplied, Source)
SELECT T2.TransId, T1.CardCode, T1.CardName, T0.[RefDate], T0.[DueDate], CAST(GetDate()-T0.DueDate AS NUMERIC) AS DayPastDue, T0.BalDueDeb +  (- T0.BalDueCred) AS 'Balance', CASE WHEN T0.Debit>0 THEN T0.Debit else T0.Credit*-1 END Unapplied, 'AS' AS Source
FROM OJDT t2 INNER JOIN JDT1 T0 on T2.TransId=T0.TransId INNER JOIN ocrd t1 on T0.ShortName=T1.CardCode
WHERE T1.cardtype='C' AND T2.transtype=30 AND T2.REFdate < GetDate ()+1 AND T0.[LineType]=' ' AND (T0.[BalDueDeb]>0 or  T0.[BalDueCred]>0)
GROUP BY T2.TransId, T1.CardCode, T1.CardName, T0.[RefDate], T0.[DueDate], T0.Debit, T0.Credit, T0.[Line_ID], T0.BalDueDeb, T0.BalDueCred
INSERT INTO @Documents (DocNum, CardCode, CardName, DocDate, DocDueDate, DayPastDue, Balance, Unapplied, Source)
SELECT T0.DocNum, T0.CardCode, T0.CardName, DocDate, DocDueDate, CAST(GetDate()-DocDueDate AS NUMERIC) AS DayPastDue, (-1)*DocTotal AS Balance, (-1)*(DocTotal-PaidToDate) AS Unapplied, 'RC' AS Src
FROM ORIN T0 INNER JOIN (SELECT distinct DocEntry, bASeentry FROM rin1 WHERE DocDate < GetDate ()+1 ) T1 on T0.DocEntry=T1.DocEntry
WHERE T0.DocStatus='O' AND T1.bASeentry is null AND T0.DocDate<GetDate ()+1 AND DocStatus='O'
GROUP BY T0.DocNum, T0.CardCode, T0.CardName, DocDate, DocDueDate, DocTotal, PaidToDate
SELECT B.CardCode AS 'SBO Code', B.CardName AS 'Customer', T2.GROUPName AS 'Group', B.Balance_Due AS 'Total_Debt',  (B.Future_Remit) AS 'Future_Remit', B.Days7 AS 'Due_on_7_Days', B.Days_0_7 AS '0_7', B.Days_8_14 AS '8_14', B.Days_15_30 AS '15_30', B.Days_31_45 AS '31_45', B.Days_46_60 AS '46_60', B.Days_61_90 AS '61_90', B.Days_91_120 AS '91_120', B.Days_120_Over AS '120+'
FROM
(SELECT A.CardCode, A.CardName, Sum(A.Balance)Balance_Due, Sum(A.Future_Remit)Future_Remit, Sum(A.Days_0_7)Days_0_7, Sum(A.Days_31_45)Days_31_45,
Sum(A.Days_61_90)Days_61_90, Sum(A.Days_91_120)Days_91_120, Sum(A.Days_120_Over)Days_120_Over, Sum(Days7)Days7, Sum(Days_8_14)Days_8_14, Sum(Days_15_30)Days_15_30, Sum(Days_46_60)Days_46_60
FROM
(SELECT CardCode, CardName, Sum(CASE WHEN DayPastDue<=0 THEN Balance else 0 END) AS CurrBal, Sum(Balance) Balance, Source, Sum(CASE WHEN DayPastDue<=0 THEN Balance else 0 END) AS Future_Remit, Sum(CASE WHEN DayPastDue>=-7 AND DayPastDue<=0 THEN Balance else 0 END) AS Days7, Sum(CASE WHEN DayPastDue>=1 AND DayPastDue<8 THEN Balance else 0 END) AS Days_0_7, Sum(CASE WHEN DayPastDue>=8 AND DayPastDue<15 THEN Balance else 0 END) AS Days_8_14, Sum(CASE WHEN DayPastDue>=15 AND DayPastDue<31 THEN Balance else 0 END) AS Days_15_30, Sum(CASE WHEN DayPastDue>=31 AND DayPastDue<46 THEN Balance else 0 END) AS Days_31_45, Sum(CASE WHEN DayPastDue>=46 AND DayPastDue<61 THEN Balance else 0 END) AS Days_46_60, Sum(CASE WHEN DayPastDue>=61 AND DayPastDue<91 THEN Balance else 0 END) AS Days_61_90, Sum(CASE WHEN DayPastDue>=91 AND DayPastDue<121 THEN Balance else 0 END) AS Days_91_120, Sum(CASE WHEN DayPastDue>=121 THEN Balance else 0 END) AS Days_120_Over
FROM @Documents GROUP BY CardCode, CardName, Source)A
WHERE A.Balance<>0 GROUP BY A.CardCode, A.CardName)B
LEFT OUTER JOIN [dbo].[OCRD] T1 ON T1.[CardCode] = B.CardCode AND T1.[CardType] = 'C' LEFT OUTER JOIN [dbo].[OCRG] T2 ON T1.[GroupCode] = T2.[GroupCode]
WHERE B.Balance_Due<>0 ORDER BY B.CardCode
Edited by: mariaem on Feb 17, 2011 4:03 PM
Edited by: mariaem on Feb 17, 2011 4:05 PM

Similar Messages

  • Financials- Aging- Customer Receivables Aging

    Hi,
    I'm not able to export Customer receivables aging report to PDF with the option File->Export ->PDF.
    But, I'm able to export with the option, preview and exports as pdf.
    All other documents like PDF to Purchase order works fine. 
    This issue with Aging report is happening with 64 bit and works fine on 32 bit.
    Could you please help me
    Many Thanks,
    Vishwanath

    Hi,
    Do you receive any error message?
    Thanks & Regards,
    Nagarajan

  • Overdue amount in Customer Receivable Aging report

    Hi all!
    Got a question.
    In customer receivable aging report SAP Business One displays the relevant open receivables in columns representing the specifications you made in the Interval field in the selection criteria window. But how does it counts them? I've tried to pick all total from invoices,where between doc date and aging date 30 days passed. But it displays incorrect values. Is there any specific query for that?
    Please see screenshot attached for the values i need.

    Hi,
    Try with below query.But your selection criteria for date should be week.
    declare @Cust as nvarchar(20)
    Declare @FromDate Datetime
    Declare @ToDate Datetime
    declare @Group as nvarchar(20)
    set @cust = (select max(t0.cardcode) from OINV t0 where t0.cardcode = '[%0]')
    Set @FromDate = (Select min(t0.Docdate) from dbo.OINV t0 where t0.Docdate >='[%1]')
    Set @ToDate = (Select max(t0.Docdate) from dbo.OINV t0 where t0.Docdate <='[%2]')
    set @group = (select max(t2.groupname) from OCRG t2 where t2.groupname = '[%3]')
    SELECT [CustName] as CustName, [G] as CustGroup,[1] as W1, [2] as W2, [3] as W3, [4] as W4, [5] as W5, [6] as W6, [7] as W7, [8] as W8, [9] as W9, [10] as W10, [11] as W11, [12] as W12, [13] as W13, [14] as W14, [15] as W15, [16] as W16, [17] as W17, [18] as W18, [19] as W19, [20] as W20, [21] as W21, [22] as W22, [23] as W23, [24] as W24, [25] as W25, [26] as W26, [27] as W27, [28] as W28, [29] as W29, [30] as W30 , [31] as W31, [32] as W32, [33] as W33, [34] as W34, [35] as W35, [36] as W36, [37] as W37, [38] as W38, [39] as W39, [40] as W40, [41] as W41, [42] as W42, [43] as W43, [44] as W44, [45] as W45, [46] as W46, [47] asW47, [48] as W48, [49] as W49, [50] as W50, [51] as W51, [52] as W52
    from
    (SELECT T0.[CardName] as CustName, sum(T0.[DocTotal]) as Total, datepart(ww,T0.[DocDate]) as week, t2.groupname as G FROM OINV T0 left JOIN OCRD T1 ON T0.CardCode = T1.CardCode left JOIN OCRG T2 ON T1.GroupCode = T2.GroupCode WHERE year(T0.[DocDate]) = 2013 and T0.[CardCode] = @Cust and T0.[DocStatus] ='o' and T0.[DocDate] between @fromdate and @todate and t2.groupname = @group GROUP BY T0.[CardName],T0.[DocDate],t2.groupname
    union all
    (SELECT T0.[CardName] as CustName, -sum(T0.[DocTotal]) as Total, datepart(ww,T0.[DocDate]) as week,t2.groupname as G from ORIN T0 left JOIN OCRD T1 ON T0.CardCode = T1.CardCode left JOIN OCRG T2 ON T1.GroupCode = T2.GroupCode WHERE year(T0.[DocDate]) = 2013 and T0.[CardCode] = @Cust and T0.[DocStatus] ='o' and T0.[DocDate] between @fromdate and @todate and t2.groupname = @group GROUP BY T0.[CardName],T0.[DocDate],t2.groupname )) S
    Pivot
    (sum(S.total) For WEEK IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12], [13], [14],[15],[16],[17],[18],[19],[20],[21], [22], [23], [24], [25], [26], [27], [28],[29], [30], [31], [32],[33],[34],[35],[36],[37],[38],[39],[40], [41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52])) P
    Thanks & Regards,
    Nagarajan

  • SAP Business One 8.8 - Customer Receivables Ageing Report

    Hi All,
    We have one client on ramp up for SAP Business One 8.8. They love the new version and the feedback has been exceptional. I have one issue with the customer receivables ageing report. Once the results are displayed we are applying a filter on the report which does not seem to meet our expectations (Possible Bug?) We are trying to filter a particular ageing column only to display values if they are greater than 0 for that column. The filter partailly works since it displays the values greater than 0 but it also displays values where the column value = "Blank" thus not achieving the desired result! Does anybody know how to do this and if not should I log this on the SAP Messages Dashboard?
    I have also tried to use a condition where the column is not equal to blank but then again it displays customers who have a negative balance in that column! Once again not the desired result.
    Any help / feedback will be much appreciated!
    Thanks
    Andre Pienaar

    Hi,
    Please check by selecting any amount appearing in the list in the column you are filtering in the "Greater than". After selcting the value update the same to be zero and then filter the results.
    Check if it bring the desired results.
    Also, if not, please update us with the patch you are checking in order to test.
    Kind Regards,
    Jitin
    SAP Business One Forum Team

  • Invoice Date needs to be date when Customer receives goods

    Client when shipping by sea would like the Invoice Date to be the same day the customer received the goods, basically the Pick Up Date even though the delivery might have been 'shipped' from the jetty.
    How can this be done? Would the Invoice Date be the Pick Up date?
    Sanjib

    Hi,
    I guess you're asking about OM shipping and AR invoices. If you have invoicing at line level, as soon as you ship a line, OM insert a line into AR interface and this line is ready to be imported into AR. If you ship from USA to Europe by sea it will take about 10-15 days to goods be delivered. As invoice date is defined when you import it into AR, in order to achieve your requirement, you will not be able to import your invoice into AR and will not have info on Receivables. Or do you want to import your invoice into AR as soon as goods are shiped and change the invoice date when customer receives them?
    In the first option, you could do the following: define two AR batch sources: AIR and OTHER, for example. The first one will be used to sea shipping and the second one to ground or air shipping. In the first AR batch source, uncheck derive date. In OM, define two order types: OT_AIR and OT_OTHER, one to sea shipping and other one to ground/air shipping. In order type AIR, define AIR as batch source, and in OT_OTHER define OTHER as batch source.
    Normally import your transaction with batch source OTHER into AR. For the orders shipped by sea, you will have to import them one by one. As soon as you receive the customer acks, go to ar autoinvoice and import the order received by the customer and define as default transaction date the date informed by the customer.
    I know it is not a good solution, so I think you will need some custom to have it done.
    Hope it helps,
    Ketter Ohnes

  • Customer Receivables Aging Crystal Report

    Hi,
    We're about to move up to Business One 8.8 and creating crystal reports that we require, with the help of the SAP sample report pack.
    We need a Customer Receivables Aging Report but the one that is in this pack makes use of PLD_ITEMS field, which is making it really difficult for me to move things around. What tables and joins will I need to create this in crystal getting the data directly from the database ?
    Thanks

    Hi,
    Welcome you to the forum. For this report, many tables are needed. Core tables are OJDT and JDT1.
    You may check within forum to find many queries for this regarding.
    Thanks,
    Gordon

  • SAP B1 crystal report: Customer Receivable Aging report

    Hi All, I want to write a Customer Receivable Aging report  in crystal report. I was using query to union open AR crdit memo and AR invoice.   but, I foggot to add incomming payment ORCT.   I really have trouble to get Customer Receivable Aging report . Can anyone help me? thanks    Is that I did in wrong direction? 
    SELECT OINV.DocEntry,OINV.DocNum,OINV.ObjType,OINV.CardCode,OCRD.CntctPrsn,OCRD.fax,OINV.NumAtCard,OINV.Address,OCTG.PymntGroup
           ,OINV.CardName,OINV.DocDate,OINV.DocDueDate,OINV.DocCur,OINV.DocTotalFC,
           OINV.DocTotal, (OINV.DocTotal-OINV.PaidToDate) as AmountAUD
      FROM SAPLIVE.dbo.OINV OINV join SAPLIVE.dbo.OCTG OCTG
      On OINV.GroupNum=OCTG.GroupNum 
             join SAPLIVE.dbo.OCRD OCRD
             On OINV.CardCode=OCRD.CardCode
      WHERE OINV.CANCELED='N' AND OINV.DocStatus='O' AND (OINV.DocTotal-OINV.PaidToDate)>0
    union
    SELECT ORIN.DocEntry,ORIN.DocNum,ORIN.ObjType,ORIN.CardCode,OCRD.CntctPrsn,OCRD.fax,ORIN.NumAtCard,ORIN.Address,OCTG.PymntGroup
           ,ORIN.CardName,ORIN.DocDate,ORIN.DocDueDate,ORIN.DocCur,ORIN.DocTotalFC,
           ORIN.DocTotal,(ORIN.DocTotal-ORIN.PaidToDate)as AmountAUD
      FROM SAPLIVE.dbo.ORIN ORIN join SAPLIVE.dbo.OCTG OCTG
      On ORIN.GroupNum=OCTG.GroupNum
       join SAPLIVE.dbo.OCRD OCRD
             On ORIN.CardCode=OCRD.CardCode
      WHERE ORIN.CANCELED='N' AND ORIN.DocStatus='O' AND (ORIN.DocTotal-ORIN.PaidToDate)

    Hello Julian - maybe you can start with the JDT1 table which contains all of the General Ledger Journal Entries...
    Hope this helps...
    Regards - Zal
    --F-BP AR Aging Report Detail Ver 1 ZP 2011 04 16
    --DESCRIPTION:  SQL uses General Ledger Detail to create an Aging Report which shows
    actual invoices, credit memos, and payments by reference date in the JDT1 table.
    --AUTHOR(s):
    --Version 1 Zal Parchem 16 April 2011
    SELECT
    T1.CardCode AS 'Cust Num',
    T1.CardName AS 'Cust Name',
    T0.SysDeb AS 'Debit Amt',
    T0.SysCred * -1 AS 'Credit Amt',
    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 <  31 THEN
    CASE
    WHEN SysCred < > 0 THEN SysCred * -1
    ELSE SysDeb
    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 SysCred < > 0 THEN SysCred * -1
    ELSE SysDeb
    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 SysCred < > 0 THEN SysCred * -1
    ELSE SysDeb
    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 SysCred < > 0 THEN SysCred * -1
    ELSE SysDeb
    END
    END AS '90 to 120 Days',
    CASE
    WHEN (DATEDIFF(DD,RefDate,Current_Timestamp)) +1 > 120
    THEN
    CASE
    WHEN SysCred != 0 THEN SysCred * -1
    ELSE SysDeb
    END
    END AS '120 Plus Days'
    FROM JDT1 T0
    INNER JOIN OCRD T1
    ON T0.ShortName = T1.CardCode
    AND T1.CardType = 'C'
    WHERE
    T0.IntrnMatch = '0'
    AND T0.BalDueDeb !=  T0.BalDueCred
    ORDER BY
    T1.CardCode,
    T0.TaxDate
    FOR BROWSE

  • Multi-Currency Customer Receivables Aging Query

    Hello Everyone,
    SAP B1 2005 SP 01 PL 42
    We cannot produce customer statements for multi-currency accounts (CND & USD) through the Customer Receivables Aging report.  The report converts all FC to LC which is not useful to the customer.
    The statement must show the open invoices in USD and open invoices in CND so that the customer can pay in the appropriate currency.
    We are attempting to create a query to solve this issue and assign a PLD to execute the calculations, but cannot see the best way to execute the task.
    The customer account balance (displaying only unreconciled tans.) would be the most reliable data set (form 809), but it is not available as a table in the query manager.  Any other table suggestions?
    We would like to avoid building the query from scratch (collecting all open invoices, credits, payments etc...) to avoid error.  We would also like to avoid exporting the data as this is very time consuming.  Any suggestions?
    Thanks in advance,
    Tamara

    We have found it better to set up two customers where different currencies are transacted - one in each currency. That way you can produce a statement in each currency.
    I know it's not a perfect solution, but a good work around?
    The only way to get the data you need would be to use OJDT and JDT1 tables, but you would need to join to the reconciliation table as well (OITR?) to get open transactions.

  • How to get exact Ageing Date In "Customer Receivable Ageing" report?

    Need query   that  give the exact aging date instead of date/month range  in customer receivable ageing.Pls Help

    Hi,
    Please note, just added for 52 days. if you want more days, just add.
    declare @Cust as nvarchar(20)
    Declare @FromDate Datetime
    Declare @ToDate Datetime
    declare @Group as nvarchar(20)
    set @cust = (select max(t0.cardcode) from OINV t0 where t0.cardcode = '[%0]')
    Set @FromDate = (Select min(t0.Docdate) from dbo.OINV t0 where t0.Docdate >='[%1]')
    Set @ToDate = (Select max(t0.Docdate) from dbo.OINV t0 where t0.Docdate <='[%2]')
    set @group = (select max(t2.groupname) from OCRG t2 where t2.groupname = '[%3]')
    SELECT [CustName] as CustName, [G] as CustGroup, [1] as '1', [2] as '2', [3] as '3', [4] as '4', [5] as '5', [6] as '6', [7] as '7', [8] as '8', [9] as '9', [10] as '10', [11] as '11', [12] as '12', [13] as '13', [14] as '14', [15] as '15', [16] as '16', [17] as '17', [18] as '18', [19] as '19', [20] as '20', [21] as '21', [22] as '22', [23] as '23', [24] as '24', [25] as '25', [26] as '26', [27] as '27', [28] as '28', [29] as '29', [30] as '30' , [31] as '31', [32] as '32', [33] as '33', [34] as '34', [35] as '35', [36] as '36', [37] as '37', [38] as '38', [39] as '39', [40] as '40', [41] as '41', [42] as '42', [43] as '43', [44] as '44', [45] as '45', [46] as '46', [47] as '47', [48] as '48', [49] as '49', [50] as '50', [51] as '51', [52] as '52'
    from
    (SELECT T0.[CardName] as CustName, sum(T0.[DocTotal]) as Total, datepart(dd,T0.[DocDate]) as DAYS, t2.groupname as G  FROM OINV T0   left JOIN OCRD T1 ON T0.CardCode = T1.CardCode left JOIN OCRG T2 ON T1.GroupCode = T2.GroupCode   WHERE year(T0.[DocDate]) = 2013 and T0.[CardCode] = @Cust and  T0.[DocStatus]  ='o' and T0.[DocDate] between @fromdate and @todate and t2.groupname = @group GROUP BY T0.[CardName],T0.[DocDate],t2.groupname
    union all
    (SELECT T0.[CardName] as CustName, -sum(T0.[DocTotal]) as Total, datepart(dd,T0.[DocDate]) as DAYS,t2.groupname as G  from ORIN T0  left JOIN OCRD T1 ON T0.CardCode = T1.CardCode left JOIN OCRG T2 ON T1.GroupCode = T2.GroupCode   WHERE year(T0.[DocDate]) = 2013 and T0.[CardCode] = @Cust and  T0.[DocStatus]  ='o' and T0.[DocDate] between @fromdate and @todate and t2.groupname = @group  GROUP BY T0.[CardName],T0.[DocDate],t2.groupname )) S
    Pivot
    (sum(S.total) For DAYS IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12], [13], [14],[15],[16],[17],[18],[19],[20],[21], [22], [23], [24], [25], [26], [27], [28],[29], [30], [31], [32],[33],[34],[35],[36],[37],[38],[39],[40], [41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52])) P
    Hope helpful.
    Thanks & Regards,
    Nagarajan

  • POSTING DATE RANGE INCLUDED IN CUSTOMER RECEIVABLE AGEING REPORT PLD

    Dear All,
    Please can you tell me how to print the posting date range selected in the parameter selection for Customer Receivable Ageing Report PLD.
    Thanks
    Gary

    Dear Rahul,
    I know that but it is really painful to develop the whole report in crystal where it is available in SAP itself. Imagine just for one requirement i will have to build the whole report in crystal. I think SAP should give flexibility to change the hard coded reports.
    Regards,
    Gary

  • Add Doc. Date to "Customer Receivables Ageing" report

    Hi!
    Let me know if you can in the PLD layout called "Business Partners Aging (Details) (System)" show instead of the Posting Date the Doc. Date.
    Thanks!

    Hi,
    Please check Note No. : 1260740.
    Extracts from the Note :
    Symptom
    How to print Posting date, Document date or Due date of the documents on Detailed Receivable Ageing Report.
    Cause
    Consulting
    Solution
    In 2005 A version this is not possible to print Posting date, Due date or Document date on Detailed Receivable Ageing Report. However this can be printed in 2007 A Version.
    To do this please follows the below steps:
    1. Open the customer receivable ageing report as follow:
    Reports -> Financials-> Accounting-> Ageing-> Customer Receivable Ageing
    2. Run the report.
    3. In the 'Customer Receivable Aging' window you can Age by Due date/Posting date/Document date. Here select any date (that you want to display) e.g. Document date for ageing.
    5. Take the print preview.
    6. Select the option "Detailed Receivable Ageing Report" from the print options.
    7. Click on Ok.
    You will see that Document date of all the documents will be printed.
    Check if it helps.
    Kind Regards,
    Jitin
    SAP Business One Forum Team

  • Add column to "Customer Receivables Ageing" report

    Hi all!
    I would need to add a new column via SDK to the matrix in the SAP report "Reports Business Partner -> Ageing -> Customer Receivables Aging". I also want to populate this column with SDK after the report was loaded.
    Does anyone have any suggestions??
    Thanks

    Hi.......
    I guess this is not possible to insert an extra column to the SAP Standard report.
    I would suggest you to develop your own report so that it will be easy to insert desired columns.....
    Regards,
    Rahul

  • Customer receivables ageing report - Crystal Parameters

    I want to create a customer receivables ageing report (Customer statement report - one page per customer) using crystal reports 2008. See image below.
    I need to know which parameters must be created in Crystal to receive the neccesary information for creating this report. See circled fields in screenshot below.
    Can some please point me in the right direction for starting of this report in Crystal.

    Hi Vishal,
    SAP always recommends to go with the ageing report by journal postings in the old versions. What happens there is that there are 2 separate reconciliation engines at work, one at document level which supports partial reconciliation & one at journal entry level, which only supports full reconciliation. Please have a look at this YEC presentation:
    https://psd.sap-ag.de/PEC/calendar/html/recording.php?hck=ee2c7bfa07c3f6523f8846e14428985172efeb4545d14ed4757dfc29be3732557a8abf7a1e89fc7e357cd90b6c39b9123e5cf0f6c4b1ab283171b31ede9ba278
    One of the most significant changes in version 2007 & 8.8 is that these reconciliation engines are now unified in that partial reconciliation is also fully supported on journal entry level.
    You will find a lot of info on this landing page:
    English: http://service.sap.com/~sapidb/011000358700000380562007E
    I would highly recommend you upgrade to 2007, it is much, much more advanced than 2005.
    All the best,
    Kerstin

  • Customer Receivables Ageing Report

    Hi experts,
    Our SAP version is 2005B PL 43.
    The Customer receivable Ageing Report has two tabs- By Journal entries tab and By sales Documents tab.
    1. We find that all Payments, Credit notes and Invoices appear in the Customer Ageing Report By Journal Postings.
    This happens in case where an invoice has been partly paid alongwith few other invoices which have been fully paid which we are unable to knock off, limitation in this version of SAP.As a result the Incoming payment and The Invoices both are seen as open in the Ageing Report - By jounal Postings whereas the Ageing Report by Sales Documents shows the net values.
    There are cases where if an incoming payment is cancelled, the cancelled entry is not knocked off,again a limitation in this version,as a result the Ageing Report by Jounal postings shows both the wrong payment received as well as the cancelled entry.This does not appear in the Ageing Report by Sales documents.
    2. The customer Statement Report if printed from the Customer Receivable Ageing Report - By Jounal Postings displays the payment entries alongwith the Credit notes and Invoices, which is very difficult for the customer to understand.
    Instead can we use the Ageing Report by Sales Documents to print the Customer Statement Report?
    3. Lastly The Ageing Report by Journal Postings can match the Ageing Report by Sales documents only if partly paid invoices, advance payments and cancelled payments are knocked off.
    We are currently not planning to upgrade to 2007B as we are waiting for the 8.8 version which will be rolled out in end of Dec, as informed to us by the SAP regional office.
    Our question is which settings will give us the correct Ageing for a customer?
    Regards,

    Hi Vishal,
    SAP always recommends to go with the ageing report by journal postings in the old versions. What happens there is that there are 2 separate reconciliation engines at work, one at document level which supports partial reconciliation & one at journal entry level, which only supports full reconciliation. Please have a look at this YEC presentation:
    https://psd.sap-ag.de/PEC/calendar/html/recording.php?hck=ee2c7bfa07c3f6523f8846e14428985172efeb4545d14ed4757dfc29be3732557a8abf7a1e89fc7e357cd90b6c39b9123e5cf0f6c4b1ab283171b31ede9ba278
    One of the most significant changes in version 2007 & 8.8 is that these reconciliation engines are now unified in that partial reconciliation is also fully supported on journal entry level.
    You will find a lot of info on this landing page:
    English: http://service.sap.com/~sapidb/011000358700000380562007E
    I would highly recommend you upgrade to 2007, it is much, much more advanced than 2005.
    All the best,
    Kerstin

  • Customer receivables Aging report was changed

    When try to generate the SAP Standard Report Customer Receivables Aging, supprised to see that the column has been changed. The first column was the Future Remit, second column is the 0-30 aging, third column is Customer name. I chcek if the Form settings was enable but it was not active.
    How i can bring back its original layout not the print layout but its original layout when generating this report?

    Hi,
    I think you misunderstood my questions due to wordings. Sorry about that.
    I actually wanted to know, if the Aging Report is opened in multiple instance and then the issue is happening or when the first instance of the report is opened the issue appears?
    If it happens when you open first instance itself, then you need to open a support ticket.
    If it happens when multiple instance in single logon are run, then you can refer to Note No. :  1306926.
    Kind Regards,
    Jitin
    SAP Business One Forum Team

Maybe you are looking for

  • Create a multi-company portal

    Hi all I´m currently inmersed in the design of a new SharePoint portal for multiple companies (SharePoint 2013 Enterprise). The main idea is to have the same structure for all companies (lists, librarys, public views, ...) but separate the contents (

  • Xperia Z2 Does not detect earphones

    Hi All, My sony xperia Z2 mobile phone does not detect sony xperia or any other earphones.Can anyone one help me in this?

  • Error connecting using OCI8

    I am getting an error when attempting to connect to a Oracle 9i r2 database using OCI8. When I connect using the thin driver all works fine. Are different drivers or installation procedures needed to use OCI8? I am working with BLOB's and wanted to u

  • Implement BADI PT_GEN_REQ for program RPTARQEMAIL - ESS

    Hi, I was trying to implement this method with the idea to send, always, a mail to the HR responsible. For that I've written the following code (example): method IF_EX_PT_GEN_REQ~GET_ADMINS. data: admins_receivers TYPE ptreq_email_receivers_tab, p_re

  • Blackberry Tour Non-connectivity

    I just recently received a blackberry tour on Wednesday of last week (Sept 9) and from ever since I have not been able to connect to the internet because my xev are all lower case and I was informed that they should be upper case for it to work. I tr