|
How To Diagnose Inventory Accruals And Accrual Write Off Issues (文档 ID 866733.1) |
![]() |
![]() |

In this Document
|
Purpose |
|
Troubleshooting Steps |
Release 11i Write Off Process |
Release 12 Write Off Process |
R12 Process Flow By PO Example |
Table Level Contrast R11i And R12 |
Accounts Requirement For Write Off |
Processing Overview |
Data And Queries |
Still Have Questions? |
|
References |
Applies to:
Oracle Cost Management - Version 11.5.10.0 and laterOracle Payables - Version 11.5.10.0 to 12.1.1 [Release 11.5 to 12.1]
Oracle Purchasing - Version 11.5.10 to 12.3 [Release 11.5 to 12.3]
Information in this document applies to any platform.
CSTACRLR: Accrual Reconciliation Load Program
CSTACRAP: AP and PO Accrual Reconciliation Report
CSTACRWO: Accrual Write-Off Report
POXACWRO: WIP Accrual Write-Off Report
AP AND PO Write Off Form
Miscellaneous Write Off Form
View Write Off Transactions
***Checked for relevance on 04-JUN-2013***
Purpose
Accrual Write Off process identifies and writes off items that
misstates the accrual balance on the Accrual Reconciliation Reports.
Such transactions will also include non accrual transactions wrongly
debited or credited to the Inventory AP Accrual Account. The following
are potential transaction candidates to be written off : Differences
between receipts and invoices with no intention of future invoicing,
Discrepancies in supplier billing, A/P No PO Transactions - Invoices not
matched to PO or incorrect data conversion invoices, A/P No Match-Valid
Invoice with no corresponding receipt, Invoices Matched to Wrong PO or
Receipt, Miscellaneous inventory or work in process transactions that do
not belong to Accrual Accounts, Payable Entries for Sales Tax and
freight that do not belong to Accrual Accounts.
The Write Off
process is different from R12 and R11i. We will cover both and highlight
the differences. In R12 Accrual Write Off excludes the write off
transaction from the AP and PO Report and dynamically post to GL and
excluded from the Net Accrual balance. Therefore the risks and problems
associated with Manual Journals are avoided
For relevant Notes relating to Inventory Accrual Reconciliation process please refer to
the following Notes:
Note.1107953.1 - R12 Accrual Balance Mismatch Between Accrual Reconciliation Report - Troubleshooting
Note.1113712.1 - R12 FAQ Accrual Accounting - On Line and Period End Accruals
Note 728871.1 - R12 How To Diagnose And Reconcile Inventory AP Accrual Transactions Using Reconciliation Reports
Note 824388.1 - R12 Account Requirements For Inventory Accrual Reconciliation
Troubleshooting Steps
Release 11i Write Off Process
1) Run the Accrual Rebuild Reconciliation Report Or the Rebuild
Manager if Available and make sure the Date range includes the
transactions to be written off
2) Run the Accrual Reconciliation Report
Make sure the transactions you intend to write off appear in the Report
3) Go to Accrual Write Off Form
Nav: Purchasing responsibility/Accounting/Accrual Write Off
4) Select the source as PO or A/P OR AP and PO if both should be written off or any other source you intend to write Off
5) Put in the date range
6) Query the Transactions
7) Check and save the transactions to write off
Please take Note of the Following:
a) 'Matched to Purchase Order' should be selected to see matched Transactions
b) Invoices appearing on the Accrual Reconciliation Report with an Accrual
Transaction of 'A/P No PO' have not been matched to a PO. Therefore, to find
these transactions in the Accrual Write Offs form, the 'Matched to Purchase Order' should be unchecked
Release 12 Write Off Process
Please refer to Note:728871.1 under 'New Art' for detailed, dynamic and automated examples of R12 Write Offs.
In
R12 Accrual Write Off not only excludes the write off transaction from
the AP and PO Report but also dynamically post to GL and excluded from
the Net Accrual balance. Therefore the risks and problems associated
with Manual Journals are avoided
Before write off can be done in R12 data must first exist in CST_AP_PO_RECONCILIATION table.
Both the AP and PO Accrual Reconciliation Report and Accrual Write Off Form query their transactions from this Table.
The following steps should be followed before querying transactions from the Write Off Form:
1) Complete Receipt Transactions and Invoice matching.
2) Run the Create Accounting Program in Final Mode with subsequent Transfer of Entries to GL
3) Run the Accrual Reconciliation Load Program which will populate two Tables:
CST_RECONCILIATION_SUMMARY and
CST_AP_PO_RECONCILIATION
4) Run the AP and PO Accrual Reconciliation Report
The
Detail Version of the Report will show accrual account for each PO
distribution with the Receiving transaction amount and invoice
transaction amount with a net balance greater than zero.
5) Perform Accrual Write-off
Once the accrual entries for the PO or invoice are shown in AP and POl Reconciliation Report,
Accrual
Write-off can be done using Cost Management or Purchasing
responsibility>Accounting>Accrual write offs>AP and PO.
This
will delete the accrual entry from CST_AP_PO_RECONCILIATION table and
populate the write off transaction in CST_WRITE_OFFS table. This write
off transaction can also be viewed in the form View Write offs. In order
to create accounting entries for the write offs in SLA and GL for
submit the Create Accounting program after completing the write offs in
the Accrual Write Off Form. The Write Off Transactions can be viewed in
SLA menu by navigating to Tools > View Accounting in the View Write
offs form.
R12 Process Flow By PO Example
Let us use PO #60116 to demonstrate the Write Off Process in R12 discussed above
- Create PO #60116 for 10 items @ 25 USD each
- 6 items are received in two different slots (i.e. 2 different receipts)
- 5 items are billed by 1 invoice and match to the PO
- Posting of all the transactions are done (Receiving and AP Invoice matching) to GL via XLA
- User then decides to write-off items received but not billed
Run Accrual Load
Check the data in CST_RECONCILIATION_SUMMARY
Po_Distribution_ID |
200577 |
Accrual_Account_ID |
163682 |
Po_Balance | -150 |
Ap_Balance | 125 |
Write_Off_Balance | 0 |
Check the data in CST_AP_PO_RECONCILIATION
Transaction_Type_Code | RECEIVE | RECEIVE | AP PO MATCH |
---|---|---|---|
Accrual_Account_ID | 163682 | 163682 | 163682 |
Po_Distribution_ID | 200577 | 200577 | 200577 |
Invoice_Distribution_ID | 1401618 | ||
Rcv_Transaction_ID | 2774137 | 2774139 | |
Write_Off_ID | |||
Ae_Header_ID | 115918 | 115925 | 115923 |
Ae_Line_Num | 1 | 1 | 1 |
Quantity | -5 | -1 | 5 |
Amount | -125 | -25 | 125 |
AP PO Accrual reconciliation report:
The AP PO Accrual
reconciliation report is to support the outstanding accrual balance
investigation – The same data is available in the AP PO Accrual
transaction form
AP PO Accrual transaction form
AP PO Accrual transaction form – User can decide to write-off the accrual balance of that PO
Once submitted all data of that PO distribution ID will deleted from CST_AP_PO_RECONCILIATION and SUMMARY tables
Write off form – A write transaction will be generated in CST_WRITE_OFFS table associated with that Po_Distribution_ID
Check the data in CST_WRITE_OFFS
Write_Off_ID | 3 |
Offset_Account_ID | 163681 |
Accrual_Account_ID | 163682 |
Write_Off_Amount | 25 |
Transaction_Type_Code | WRITE OFF |
Po_Distribution_ID | 2005 |
Check the data in CST_WRITE_OFF_DETAILS
Write_Off_ID | 3 | 3 | 3 |
Rcv_Transaction_ID | 2771437 | 2771439 | |
Inv_Distribution_ID | 1401618 | ||
Transaction_Type_Code | RECEIVE | RECEIVE | AP PO MATCH |
Amount | -125 | -25 | 125 |
Quantity | -5 | -1 | 5 |
Operating_Unit_ID | 7375 | 7375 | 7375 |
Ae_Header_ID | 115918 | 115925 | 115923 |
Ae_Line_Num | 1 | 1 | 1 |
In R12 write off transactions are posted from Costing to GL using XLA
After running Create Accounting – Cost Management
The accounting of the write-off got transferred to XLA and GL
Table Level Contrast R11i And R12
Below we will contrast in more details the write offs in R11i and R12
Let us assume we have two PO's PO#1 and PO#2
Let us assume further that for every transaction we have 1 Line and I distribution.
Period #1 Jan 2009 (For easy analysis let us presume for each PO)
PO Price $10
Quantity Ordered 10 in 1/1/2009
Quantity Received 5 in 1/1/2009
Quantity Invoiced 5 for PO#1 on 1/31/2009
Quantity Invoiced 4 for PO#2 on 1/31/2009
Period #2 Feb 2005
Quantity Received 5 for PO#1 2/1/2009
Quantity Invoiced 4 for PO#1 2/28/2009
Quantity Received 5 for PO#2 2/1/2009
Quantity Invoiced 6 for PO#2 2/28/2009
R11i
When the Accrual Rebuild/or Rebuild Manager is run on 1/31/2009 after
invoicing the following data will be retrieved to
AP_ACCRUAL_RECONCILE_TEMPS_ALL
First period: Jan-2009
accrual_account | po_num | po_distribution_id | txn_date | txn_source | receipt_num | invoice_num | qty | amount | write_off_flag |
---|---|---|---|---|---|---|---|---|---|
ACCT#1 | PO#1 | D#1 | 1/1/2009 | Receipt | R#1 | - | 5 | -50 | - |
ACCT#1 | PO#1 | D#1 | 1/31/2009 | Invoice | - | V#1 | 5 | 50 | - |
ACCT#1 | PO#2 | D#2 | 1/1/2009 | Receipt | R#2 | - | 5 | -50 | Y |
ACCT#1 | PO#2 | D#2 | 1/31/2009 | Invoice | - | V#2 | 4 | 40 | Y |
Note:
PO#1 is self balanced (i.e. fully invoiced) but still loaded to the PO_ACCRUAL_RECONCILE_TEMPS_ALL
PO#2 has a balance of 10.
Second period: Feb-2009
accrual_account | po_num | po_distribution_id | txn_date | txn_source | receipt_num | invoice_num | qty | amount | write_off_flag |
---|---|---|---|---|---|---|---|---|---|
ACCT#1 | PO#1 | D#1 | 1/1/2009 | Receipt | R#1 | - | 5 | -50 | - |
ACCT#1 | PO#1 | D#1 | 1/31/2009 | Invoice | V#1 | - | 5 | 50 | - |
ACCT#1 | PO#1 | D#1 | 2/1/2009 | Receipt | R#3 | - | 5 | -50 | Y |
ACCT#1 | PO#1 | D#1 | 2/28/2009 | Invoice | V#3 | - | 4 | 40 | Y |
ACCT#1 | PO#2 | D#2 | 1/1/2009 | Receipt | R#2 | - | 5 | -50 | ? |
ACCT#1 | PO#2 | D#2 | 1/31/2009 | Invoice | V#2 | - | 4 | 40 | ? |
ACCT#1 | PO#2 | D#2 | 2/1/2009 | Receipt | R#4 | - | 5 | -50 | ? |
ACCT#1 | PO#2 | D#2 | 2/28/2009 | Invoice | V#4 | - | 6 | 60 | ? |
Customers can use the write_off checkbox to write off
balance. They could also do mass write-off based on the tolerance.
Assuming they choose to write off the balance for PO#2, the write-off
will immediately make PO#2 balanced. PO#2 and its details will disappear
from the reconciliation tables. Dynamic reconciliation. The write-off
txn and its details will be generated. The automated accounting is done
against the write-off txn. The data in write-off tables is persistent.
There is a track record, audit-able.
Write-off summary
write_off_id | accrual_account | po_num | po_distribution_id | write_off_date | reversal_id | write_off_type | wo_amount | write_off_reason | reverse checkbox |
---|---|---|---|---|---|---|---|---|---|
W#1 | ACCT#1 | PO#2 | D#2 | 1/31/2009 | - | write off | 10 | under invoice | X |
Write-off details
write_off_id | txn_date | txn_source | receipt_num | invoice_num | qty | amount |
---|---|---|---|---|---|---|
W#1 | 1/1/2009 | Receipt | R#2 | - | 5 | -50 |
W#1 | 1/31/2009 | Invoice | - | V#2 | 4 | 40 |
Suppose a mistake is made in the write-off, use the reverse
checkbox to reverse it. The reversal txn will have its own accounting
and transaction details. It also points to its original write-off txn.
Auditable again.
Write-off summary
write_off_id | accrual_account | po_num | po_distribution_id | write_off_date | reversal_id | write_off_type | wo_amount | write_off_reason | reverse checkbox |
---|---|---|---|---|---|---|---|---|---|
W#1 | ACCT#1 | PO#2 | D#2 | 1/31/2009 | - | write off | 10 | under invoice | - |
W#2 | ACCT#1 | PO#2 | D#2 | 1/31/2009 | W#1 | write_off reversal | -10 | made a mistake | - |
Write_off details
write_off_id | txn_date | txn_source | receipt_num | invoice_num | qty | amount |
---|---|---|---|---|---|---|
W#1 | 1/1/2009 | Receipt | R#2 | - | 5 | -50 |
W#1 | 1/31/2009 | Invoice | - | V#2 | 4 | 40 |
W#2 | 1/1/2009 | Receipt | R#2 | - | 5 | -50 |
W#2 | 1/31/2009 | Invoice | - | V#2 | 4 | 40 |
As soon as the reversal is done, the PO#2 becomes unbalanced again
and it comes back to the reconciliation tables. Dynamic reconciliation
again.
Both write-off and its reversal contribute to the total balance of a PO distribution.
Reconciliation summary
accrual_account | po_num | po_distribution_id | RCV_balance | AP_balance | WO_balance | total_balance | write_off checkbox |
---|---|---|---|---|---|---|---|
ACCT#1 | PO#2 | D#2 | -50 | 40 | 0 | -10 | - |
Reconciliation details
accrual_account | po_distribution_id | txn_date | txn_source | receipt_num | invoice_num | write_off_id | qty | amount |
---|---|---|---|---|---|---|---|---|
ACCT#1 | D#2 | 1/1/2009 | Receipt | R#2 | - | - | 5 | -50 |
ACCT#1 | D#2 | 1/31/2009 | Invoice | - | V#2 | - | 4 | 40 |
ACCT#1 | D#2 | 1/31/2009 | Write-off | - | - | W#1 | - | 10 |
ACCT#1 | D#2 | 1/31/2009 | Write-off reversal | - | - | W#2 | - | -10 |
Second period: Feb-2009
When
new txns for both PO#1 and PO#2 come in Feb, the new data actually
makes PO#2 balanced, so it comes off the reconciliation tables. However,
the new data for PO#1 makes it unbalanced for the first time, so we
will load all its txns.
Reconciliation summary
accrual_account | po_num | po_distribution_id | RCV_balance | AP_balance | WO_balance | total_balance | write_off checkbox |
---|---|---|---|---|---|---|---|
ACCT#1 | PO#1 | D#1 | -100 | 90 | 0 | -10 | - |
Reconciliation details
accrual_account | po_distribution_id | txn_date | txn_source | receipt_num | invoice_num | write_off_id | qty | amount |
---|---|---|---|---|---|---|---|---|
ACCT#1 | D#1 | 1/1/2009 | Receipt | R#1 | - | - | 5 | -50 |
ACCT#1 | D#1 | 1/31/2009 | Invoice | - | V#1 | - | 5 | 50 |
ACCT#1 | D#1 | 2/1/2009 | Receipt | R#3 | - | - | 5 | -50 |
ACCT#1 | D#1 | 2/28/2009 | Invoice | - | V#3 | - | 4 | 40 |
The data in write-off tables remain. So at the end of second
period, we have data in reconciliation tables for PO#1 that need to be
taken care of. We also have data in write-off tables for PO#2 for legal
and auditing purpose.
For normal business, over the time most
POs should be self-balanced and write-off would be needed only for a
small portion of problematic POs. Therefore, we will have lean
reconciliation tables and manageable size of write-off tables.
Accounts Requirement For Write Off
The following Accounts set up is required for all Accrual Accounts to be used in the Reconciliation Reports and Write Off.
Navigate: Purchasing Responsibility: Accrual Write Offs/Select Accrual Accounts.
Setup: Declare the accrual accounts to be used in Load Program and accrual write off
Processing Overview
Transactional:
Accrual load inserts accrual accounting journals in
CST_RECONCILIATION_BUILD: track of “Accrual Build”
CST_RECONCILIATION_SUMMARY: accrual data are summarized based on PO_DISTRIBUTION_ID only for AP PO reconciliation
CST_AP_PO_RECONCILIATION: AP and PO accrual journals
CST_MISC_RECONCILIATION: INV miscellaneous and AP miscellaneous date
CST_WRITE_OFFS and CST_WRITE_OFF_DETAILS: Store write-off transaction information
CST_RECONCILIATION_BUILD
CST_RECONCILIATION_BUILD will capture the different accrual load process running
The Columns
Operating_unit_id
From_date
To_date
Build_id
The
first run of the accrual load program, will check the minimum XLA
upgrade date and use that as the starting point no matter what start
date user is entering
CST_RECONCILIATION_SUMMARY
CST_RECONCILIATION_SUMMARY will capture the summary information for AP PO accrual journal entries.
The Columns
Po_Distribution_ID
Accrual_Account_ID
Po_Balance
Ap_Balance
Write_Off_Balance
Operating_Unit_ID
The table is the parent of the table CST_AP_PO_RECONCILIATION, it capture summarize balance information from different buckets
Those data can be rebuilt based on accrual date range
CST_AP_PO_RECONCILIATION
CST_AP_PO_RECONCILIATION will capture the detail information for AP PO accrual journal entries.
The Columns
Po_Distribution_ID
Rcv_Transaction_ID
Inv_Distribution_ID
Write_Off_ID
Amount
Entered_Amount
Quantity
Operating_Unit_ID
Inventory_Organization_ID
Ae_Header_ID
The
table is the child of the table CST_RECONCILIATION_SUMMARY, it captures
AP or PO/RCV sub-ledger journal details per operational transactions
Those data can rebuilt based on date range
CST_WRITE_OFFS
CST_WRITE_OFFS is the transactional table for Accrual Write-Off – Posting entity for accounting – Data are permanent
The Columns
Po_Distribution_ID
Write_off_ID
Accrual_Account_ID
Offset_Account_ID
Transaction_Type_Code
The table will generate the accounting post-able to GL via XLA
CST_WRITE_OFF_DETAILS
CST_WRITE_OFF_DETAILS is the detail table for CST_WRITE_OFFS – Data
are permanent – Mostly used for data regeneration at write-off reversal
The Columns
Write_off_ID
Rcv_Transaction_ID
Invoice_Distribution_ID
Transaction_Type_Code
Amount
Quantity
Ae_Header_ID
Ae_Line_Num
The table will generate the accounting post-able to GL via XLA
CST_WRITE_OFFS
CST_WRITE_OFFS is the transactional table for Accrual Write-Off – Posting entity for accounting – Data are permanent
The Columns
Po_Distribution_ID
Write_off_ID
Accrual_Account_ID
Offset_Account_ID
Transaction_Type_Code
The table will generate the accounting post-able to GL via XLA
Data And Queries
R11i
a)
PO_LINE_NUM, TRANSACTION_DATE, TRANSACTION_QUANTITY, TRANSACTION_AMOUNT,
TRANSACTION_SOURCE_CODE, WRITE_OFF_FLAG, WRITE_OFF_ID,
org_id
from po_accrual_reconcile_temp_all
where po_num in ( 'XXXXX', 'XXXXXX', 'XXXXXXX')
b)
PO_LINE_NUM, TRANSACTION_DATE, TRANSACTION_QUANTITY, TRANSACTION_AMOUNT, WRITE_OFF_CODE,
TRANSACTION_SOURCE_CODE, WRITE_OFF_ID,
org_id
from po_accrual_write_offs_all
where PO_num in ( 'XXXXXX', 'XXXXXX', 'XXXXXXX')
c)
inventory_item_id ITEM,
transaction_quantity TQTY,transaction_amount TAMT, write_off_id WR_ID,
write_off_code WR_CODE,
write_off_gl_date WGL_DATE
from po_accrual_write_offs_all paw
where write_off_id
not in (select par.write_off_id
from po_accrual_reconcile_temp_all par, po_accrual_write_offs_all paw1
where par.write_off_id =paw1.write_off_id)
And transaction_date between '01-JAN-99'and '31-OCT-08'
R12
Before Write Off:
a)
SUM(nvl(AMOUNT,0))
FROM CST_AP_PO_RECONCILIATION
GROUP BY ACCRUAL_ACCOUNT_ID, OPERATING_UNIT_ID, TRANSACTION_TYPE_CODE,
DECODE(WRITE_OFF_ID, NULL, 2, 1);
b)
DECODE(WRITE_OFF_SELECT_FLAG, NULL, 2, 1) "WRITTEN_OFF?",
SUM(nvl(AMOUNT,0))
FROM CST_MISC_RECONCILIATION
GROUP BY ACCRUAL_ACCOUNT_ID, OPERATING_UNIT_ID, TRANSACTION_TYPE_CODE,
DECODE(WRITE_OFF_SELECT_FLAG, NULL, 2, 1);
c)
DECODE(WRITE_OFF_SELECT_FLAG, NULL, 2, 1) "WRITTEN_OFF?",
SUM(nvl(PO_BALANCE,0)), SUM(nvl(AP_BALANCE,0)), sum(nvl(WRITE_OFF_BALANCE,0))
FROM CST_RECONCILIATION_SUMMARY
GROUP BY ACCRUAL_ACCOUNT_ID, OPERATING_UNIT_ID,
DECODE(WRITE_OFF_SELECT_FLAG,NULL, 2, 1);
If data is retrieved from the above Tables then proceed to the Write Off Process
After completing the Write Offs above run the following sql to confirm the write offs:
SUM(nvl(WRITE_OFF_AMOUNT,0))
FROM CST_WRITE_OFFS
GROUP BY OPERATING_UNIT_ID, ACCRUAL_ACCOUNT_ID,TRANSACTION_TYPE_CODE;
SELECT WO.WRITE_OFF_ID, AP_PO.ACC_AMT, NVL(WO.WRITE_OFF_AMOUNT,0) WO_AMT
FROM (SELECT WRITE_OFF_ID, SUM(NVL(AMOUNT,0)) ACC_AMT
FROM CST_AP_PO_RECONCILIATION
GROUP BY WRITE_OFF_ID) AP_PO,
CST_WRITE_OFFS WO
WHERE AP_PO.WRITE_OFF_ID = WO.WRITE_OFF_ID
AND NVL(AP_PO.ACC_AMT,0) <> NVL(WO.WRITE_OFF_AMOUNT,0)
Code Files
The following list of code files are vital in Write Off Transactions in R12
Code File | Description |
---|---|
CSTCRACCRCV | Create Accounting - Receiving |
CSTGLTRN | Transfer to GL concurrent program |
CSTACRLR (CST_ACCRUAL_LOAD.Start_accrual_load) | Accrual Reconciliation Load Run |
CSTACRSM | Summary Accrual Reconciliation Report |
CSTACRAP | AP and PO Accrual Reconciliation Report |
CSTACRMI | Miscellaneous Accrual Reconciliation Report |
CSTACRWO | Accrual Write-Off Report |
POXACWRO | WIP Accrual Write-Off Report |
Still Have Questions?
Join our growing Oracle Procurement Community and learn from your peers and Oracle on how to address your unique issues in Procurement. You can access the main Oracle Communities page at http://communities.oracle.com (If you are enrolled, the Procurement community will be listed on your left. If you're not already enrolled in the Procurement community, you can do so by clicking on the link Edit Subscriptions). OR From "My Oracle Support" as follows:
|