Skip to main content

Oracle Apps AP/AR Aged Trial Balance Report (R12)


How to customize the Account Analysis Report (XLAAARPT) for AR Aged Trial Balance Report ?

Introduction : 
       When we were doing an R12 re-implementation from release 11.5.10, we thought of migrating the custom 11i reports to R12, by just changing the outdated tables and the policy context. Hoping that, this should be enough for getting the desired results.Then, when we actually test the result with 11i, they were not matching. 
Finally we decided to take the standard R12 Account Analysis Report and customize it.

AR Aged Trial Balance Report : 

Now, why would we need the AR Aged Trial Balance Report ? How will this be used by a business user ?


Sample AR Trial Balance Report
Above is a sample report, if we see this report, we can ascertain, how many customers have outstanding payment and how long they have not paid. In other words, it represents the number of days of average charges that are yet to be collected from each customer. Not only that, it can also give us the summary based on Customers, Accounts and Ledger.

Account Analysis Report(XLAAARPT) 

The standard Account Analysis Report(XLAAARPT), has got the enough information for us to customize the report to AR Aged Trial Balance Report.

  • The report is an XML publisher report with Data template and RTF template.
  • The data template has a call to XLA_ACCT_ANALYSIS_RPT_PKG, which will be used to construct the xml data file.
  • We need to rename all the relevant procedure calls to custom procedure calls names.
Steps:

  1. Copy the existing Account Analysis Report(XLAAARPT) to a custom program name , say XXXXLAAARPT.
  2. Switch Responsibility to XML Publisher Administrator -->Home-->Data Definition -->Query for XLAAARPT.
  3. Create a new Data Definition similar to XLAAARPT, say XXXXLAAARPT.
  4. Similarly create a new template for Data definition: Account Analysis Report, say XX Account Analysis Report.
  5. Now for getting the aging buckets, we need the  ar_payment_schedules_all.DUE_DATE, this needs to be included in the xml data template. 
To include this column, we need to customize the XLA_ACCT_ANALYSIS_RPT_PKG. The variable C_TB_SOURCE_SQL holds the SQL query. 

Append in the select query the following :

     ,(select due_date from ar_payment_schedules_all where trx_number =tbg.transaction_number) DUE_DATE     
     , CASE 
          WHEN ROUND((sysdate - (select due_date from ar_payment_schedules_all where trx_number =tbg.transaction_number))/30)<= 0 THEN tbg.entered_rounded_orig_amount
          ELSE 0 
       END BUCKET0
     , CASE 
          WHEN ROUND((sysdate - (select due_date from ar_payment_schedules_all where trx_number =tbg.transaction_number))/30)  = 1 THEN tbg.entered_rounded_orig_amount
          ELSE 0 
       END BUCKET1
     , CASE 
          WHEN ROUND((sysdate - (select due_date from ar_payment_schedules_all where trx_number =tbg.transaction_number))/30)  = 2 THEN tbg.entered_rounded_orig_amount
          ELSE 0 
       END BUCKET2
     , CASE 
          WHEN ROUND((sysdate - (select due_date from ar_payment_schedules_all where trx_number =tbg.transaction_number))/30)  = 3 THEN tbg.entered_rounded_orig_amount
          ELSE 0 
       END BUCKET3
     , CASE 
          WHEN ROUND((sysdate - (select due_date from ar_payment_schedules_all where trx_number =tbg.transaction_number))/30)  = 4 THEN tbg.entered_rounded_orig_amount
          ELSE 0 
       END BUCKET4
     , CASE 
          WHEN ROUND((sysdate - (select due_date from ar_payment_schedules_all where trx_number =tbg.transaction_number))/30) = 5 THEN tbg.entered_rounded_orig_amount
          ELSE 0 
       END BUCKET5
     , CASE 
          WHEN ROUND((sysdate - (select due_date from ar_payment_schedules_all where trx_number =tbg.transaction_number))/30) >= 6 THEN tbg.entered_rounded_orig_amount
          ELSE 0                

       END BUCKET6 



The new column names need to be included in the XML data template as well.

Customize the rtf, by including the bucket range with the corresponding total.



AP Aged Trial Balance Report : 

Now, why would we need the AP Aged Trial Balance Report ? How will this be used by a business user ?

Similar to the AR Aged Trial Balance Report, we need to know how much we owe to our Suppliers. We need to know, to which supplier, we are supposed to pay for more than 100 or 180 days. 

Not only that,the standard report can also give the outstanding based on Supplier, Account and Ledger.

Open Account AP Balances Listing(XLAAPRPT) : 

Similar to AR, the standard report Open Account AP Balances Listing, has rich information, enough to create the AP Aged Trial Balance Report. We need to create custom program keeping the Open Account AP Balances Listing as a baseline.

Customizing Open Account AP Balances Listing :

To customize just follow the steps we did for AR. Finally fill the customized RTF template with the bucket information as below
Template for AP Aged Trial Balance Report


I will upload the code shortly, which will be a plug and play :)

Conclusion

Aging Reports in R12, is no longer a complex development, if we use the XML publisher, instead of the conventional way of developing in RDF. 

Cheers and Happy Coding :) !!!

Comments

Popular posts from this blog

Oracle Subledger Accounting (SLA) Tables, Views

Oracle Subledger Accounting (SLA) Tables, Views Oracle Subledger Accounting Tables: TABLE NAME DESCRIPTION XLA_AAD_GROUPS The XLA_AAD_GROUPS table stores the merge dependencies analyzed during the merge analysis.  All application accounting definitions with the same GROUP_NUM must be merged together. XLA_AAD_HDR_ACCT_ATTRS The XLA_AAD_HDR_ACCT_ATTRS stores standard, system and custom sources assigned to an accounting attribute at the AAD level. XLA_AAD_HEADER_AC_ASSGNS Store the analytical criteria for the application accounting definitions. XLA_AAD_LINE_DEFN_ASSGNS This table stores the journal lines definitions for the application accounting definitions. XLA_AAD_LOADER_DEFNS_T The XLA_AAD_LOADER_DEFNS_T table is the interface table that facilitates the data transfer from data files and the database. XLA_AAD_LOADER_LOGS The XLA_AAD_LOADER_LOGS table stores the errors and logs generated by the application accounting definitions loader. XLA_AAD_SOURCES XLA_AAD_SOURCES table stores a...

Oracle Fusion Cloud: Supplier Import Process using File Based Data Import (FBDI)

 Supplier Data Migration or Upload to Oracle Fusion environment File-Based Data Import for Oracle Procurement Cloud Supplier import in oracle fusion   In this post , We will discuss about Supplier import in oracle fusion. Oracle has provided the FBDI tool to import suppliers from External  Source  to the Oracle fusion. Supplier Import in Oracle fusion we first need to  Download  the Supplier Import FDBI  templates  given by the Oracle fusion to import suppliers. Oracle has given 5 Different FBDI templates to Import supplier in Fusion. Here in this post , I will share the Complete steps for Supplier import in oracle fusion. You can refer this post for Supplier Import.   Steps for Supplier import in oracle fusion     Step1- First we need to download Supplier Data  Template  from Oracle Repository. Go to this path for Oracle Repository. ( select Based on your Cloud version) https://docs.oracle.com/en/...

Number to Word conversion in RTF

<?xdofx: expression ?> for extended SQL functions <?xdoxslt: expression ?> for extended XSL functions. You cannot mix xdofx statements with XSL expressions in the same context This function enables the conversion of numbers to words for RTF template output. This is a common requirement for check printing. The new function is “to_check_number”. The syntax of this function is <?xdofx:to_check_number(amount, precisionOrCurrency, caseType, decimalStyle)?> The following table describes the function attributes:   Attribute Description Valid Value amount The number to be transformed. Any number precisionOrCurrency For this attribute you can specify either the precision, which is the number of digits after the decimal point; or the currency code, which will govern the number of digits after the decimal point. The currency code does not generate a currency symbol in the output. An integer, such as 2; or a currency code, such as ‘USD’. caseType The case type of th...