Order to Cash – O2C

This article elucidates about the basic flow, navigation, concurrent programs, basic tables and common errors which are involved in O2C cycle.

[table id=3 /]

O2C basic flow involves the following steps

Detail Flow
Enter a Sales Order >> Credit Check >> Book Order >> Pick Release and Move Order >> Ship Confirm >> Invoice Creation >> Revenue Recognition >> Collections >> Create and post Receipts >> Bank Reconciliation >> Transfer Accounting and Posting to GL

  1. Enter a Sales Order – In OM we create a sales order by entering Customer details (Sold To, Ship To and Bill To), Order type, Price list, Warehouse, Items, Quantity
  2. Credit Check – Credit check is required to check customer’s credibility. We perform credit check to check if the customer has sufficient credit available with the organization at the point of order booking, picking, packing and shipping.
  3. Book Order – Book a sales order when it surpasses Credit Check/ any holds applied.
  4. Pick Release and Move Order – Once the order gets booked, it gets picked from the Inventory and it is moved to the staging area. This movement of items from Inventory to staging area is Move Order.
  5. Ship Confirm – Sending the items to customer site. Once the items are ship confirmed the on hand items quantity from inventory gets reduced.
  6. Invoice Creation – We need to run Workflow Background Process program in OM. Workflow Background Process program moves the lines from OM to AR interface tables (ra_interface_lines_all rail). After the successful completion of this program we need to run Auto Invoice Master Program to move the lines from AR interface to AR base table. The creation of invoice takes place at this step. Also we can create other transaction types (Credit Memo, Debit Memo, Deposit, ChargeBack, and Guarantee)
  7. Revenue Recognition – Revenue Recognition manages revenue processing.
  8. Collections – Advanced Collections manages the collections process until the payment is received.
  9. Create and post Receipts – Once the payment is received, a receipt is created and posted in receivables.
  10. Bank Reconciliation – In Cash Management module, the receipts data is pulled and matches against the reconciliation file presented by bank.
  11. Transfer Accounting and Posting to GL – The accounting is transferred to GL through Sub Ledger Accounting.

1. Creating/Entering an Order
Navigation: Go to Order Management Super User, Vision Operations (USA) > > Orders, Returns >> Sales Orders >> Enter Customer details (Sold To, Ship To and Bill To) and Order Type >> Save the form to get Order number

Go to Line Items tab >> Enter Ordered item and Quantity

The line status will be in Entered

Errors
In case you come across below note (Quantity on hand fails to satisfy reservation) then opt below solution.

Enter the correct Warehouse details in Shipping tab of Line items

Checking the availability of On Hand Qty in different ways:
1. Click on Availability button in Line items tab to get item availability status

Table: SELECT * FROM mtl_onhand_quantities_detail

2. In Order Management Super User, Vision Operations (USA) >> Inventory >> On-hand, Availability >> On-hand Quantity >> Select appropriate Organization >> Enter Item/ Revision >> Click on Find >> Click on Availability

The Available to Transact denotes the transactable quantity

3. In Order Management Super User, Vision Operations (USA) >> Inventory >> Reports >> On-hand >> Check Single Request >> Ok >> Run Item quantities summary program

View output to get Quantity

Tables
The Order information is stored at Header and Line level. The header level information is stored Order Information tab and line level information is stored in Line Items tab.

oe_order_headers_all ooha — Header information
oe_order_lines_all oola — Lines information
ooha.header_id = oola.header_id — Join

2. Book a Sales Order
Navigation: Order Management Super User, Vision Operations (USA) >> Orders, Returns >> Sales Orders >> Query Order Number >> Click on Book Order button to book sales order >>A note ‘Order has been booked’ appears.

The header status will be updated to Booked and line status to Awaiting Shipping.

Errors
In case you have message text as ‘Order-level sales credit total () must equal 100%.’ and not able to book the order then follow below process.
Order Information tab (Header) >> Click on Actions >> Sales Credits >> Enter the Salesperson details >> Give % as 100 >> Ok >> Save

Tables
oe_order_headers_all ooha
oe_order_lines_all oola
wsh_delivery_details wdd
wsh_delivery_assignments wda

3. Launch Pick Release
Navigation: In Order Management Super User, Vision Operations (USA) >> Shipping >> Release Sales Orders >> Release Sales Orders >> In Order tab – provide Order number and on keyboard use tab to get details. Ensure the Scheduled Ship Dates From – SYSDATE & To – NULL

In Shipping tab – Select Autocreate Delivery, Auto Pick Confirm and AutoPack Delivery to ‘Yes’

In Inventory tab – Enter the warehouse details and select Auto Allocate to ‘Yes’

Click on Execute Now button and verify the successful note. Make a note of Batch ID

Errors
In case the below error persists:

In ‘Shipping Exceptions Report’ if you have
****************************
Message: Error: The item CM08830 does not have a preferred container load relationship in the organization Seattle Manufacturing. Please make sure that there is a container load relationship and that it is checked as preferred.
Error Message: E
****************************
Solution: Order Management Super User, Vision Operations (USA) >> Setup >> Shipping >> Container Load Details >> Enter the Container Item (any) & Load Item (our item) >> Save >> Retest

Also ensure the below Shipping Parameters:
Order Management Super User, Vision Operations (USA) >> Setup >> Shipping >> Shipping Parameters >>Ensure the Percent Fill Basis – Quantity (since we selected item of UOM Each) >> In Shipping Transaction, Enforce Packing in Containers – No

In ‘Shipping Exceptions Report’ if you have
***************************************************************************************************
Message: Error: Some deliveries selected for Ship Confirm have errors or warnings.
Error Message: E
***************************************************************************************************
Solution:
Execute the below query:
SELECT severity, status, a.*
FROM wsh_exceptions a
WHERE batch_id = 3924036

Here the Severity is Info and status is NO_ACTION_REQUIRED. So we can proceed further without making any changes.
We can view these user defined messages:
Order Management Super User, Vision Operations (USA) >> Shipping >> Exceptions >> Click on Find button on View Exception form >> Enter the Delivery Name (wsh_delivery_assignments.delivery_id) >> Find >> Check for Exception Status & Behaviour

The Order line status will be Picked

Concurrent Program
The Execute Now button enables three concurrent programs:
1. Pick Slip Report
2. Shipping Exception Report
3. Auto Pack Report

Tables
wsh_delivery_details wdd
wsh_delivery_assignments wda
wsh_new_deliveries

wdd.released_status = ‘Y’ (Pick Confirmed) if Auto Pick Confirm is set to ‘YES’ else ‘S’ (release to warehouse)

If Auto Pick Confirm is set to No, then follow below steps:
Inventory responsibility >> Move Orders >> Transact Move Orders >> Select appropriate Inventory >> Enter batch number in Headers tab and click on find >> Select/check particular line >> Click on View/ Update Allocations >> Click on Transact button >> The Transact button gets disabled and proceeds the Order further
In case you come across below error after clicking on View/ Update Allocations click on Lot/ Serial button >> Go to line level DFF >> now enter from and to serial number as per your quantity opted in OM
Serial number range does not match transaction quantity OR Serial number range not entered.

4. Ship Confirm
Navigation: Order Management Super User, Vision Operations (USA) responsibility >> Shipping >> Transactions >> Enter from and to Order Number and click on Find

In Delivery tab >> Click on Ship Confirm >> Check for Successful note

The status will be closed in Shipping Transactions form

The order line status will be Shipped

Errors
1) In case you come across the “Error: The action cannot be performed because the selected records are not eligible.”
Then observe in Lines/LPNs whether we have Line Status as Staged/Pick Confirmed & Next Step as Ship Confirm/Close Trip Stop and in Delivery tab with Status as Open & Firm Status as Not Firm then in Delivery tab >> Actions >> Re-open >> Go >> Now test Ship Confirm

2) In case you have below error message
***************************************Warning: Some containers on delivery 3789388 do not meet their minimum fill percent.
———————————–
Error: Bill of Lading Number could not be generated because the ship method code was not selected for the trip 3141354.
———————————–
Warning: Bill of Lading information could not be automatically created for delivery 3789388.
———————————–
Submitted 4 out of 4 documents for this document set. (REQ_IDS=5873897, 5873898, 5873899, 5873900)
———————————–
Warning: Failed to submit document set for delivery 3789388
———————————–
Ship to Deliver Workflow is launched for delivery 3789388.
———————————–
Unexpected Error: Error in Routine WSH_NEW_DELIVERY_ACTIONS.setInTransit, Oracle Error – -29280
ORA-29280: invalid directory path
ORA-06512: at “SYS.UTL_FILE”, line 41
ORA-06512: at “SYS.UTL_FILE”, line 478
ORA-06512: at “APPS.ADS_UTIL_PKG”, line 22
ORA-06512: at “APPS.ADS_WSH_DELIVERY_DET_TRG1”, line 67
ORA-01403: no data found
ORA-04088: error during execution of trigger ‘APPS.ADS_WSH_DELIVERY_DET_TRG1’
———————————–
Error: Stop M1- Seattle Mfg:Seattle cannot be set to status CLOSED.
———————————–
Warning: 1 deliveries will be marked as Confirmed.
***************************************
Solution:
Here only ‘APPS.ADS_WSH_DELIVERY_DET_TRG1’ is error rest all are warning messages which doesn’t have any impact

Execute the below sql and check for status:
SELECT trigger_name, status, owner
FROM dba_triggers
WHERE trigger_name LIKE ‘%ADS_WSH_DELIVERY_DET_TRG1%’;

The status has to be disabled for which use below syntax in Toad/ sql*plus
ALTER TRIGGER ADS_WSH_DELIVERY_DET_TRG1 DISABLE;

In case the ship confirm button is disabled then, Order Management Super User, Vision Operations (USA) >> Shipping >> Setup >> Grants and Role Definitions >> Grants >> Query your User details >> Select Role accordingly (Upgrade Role) >> Now go back to perform ship confirm.

Concurrent Program
1. Interface Trip Stop
2. Commercial Invoice
3. Packing Slip Report
4. Bill of Lading

Tables
oe_order_headers_all ooha
oe_order_lines_all oola
wsh_delivery_details wdd
ooha.flow_status_code = ‘BOOKED’; oola.flow_status_code = ‘SHIPPED’; wdd.released_status = ‘C’ (Ship confirmed)

5. Creation of Invoice
Navigation
The process starts by running Workflow Background Process program. Workflow Background Process program moves the lines from OM to AR interface tables (ra_interface_lines_all rail)
Order Management Super User, Vision Operations (USA) responsibility >> View >> Requests >> Run Workflow Background Process program >> Mandatory parameter: Process Deferred: Yes; Process Timeout: No

After the successful execution of Workflow Background Process we have
ooha.flow_status_code = ‘CLOSED’ {In case of scheduled programs header gets closed later}
oola.flow_status_code = ‘CLOSED’

Now we need to run Auto Invoice Master program to move the lines from AR interface to AR base. The creation of invoice takes place at this step.
Prior to executing Auto Invoice Master Program in case of any errors we can check in AR interface lines.
Receivables, Vision Operations (USA) >> Control >> AutoInvoice >> Interface Lines >> Query with Sales Order number and click on Error button to check the errors.

Invoice gets generated after Auto invoice master program runs.
Receivables, Vision Operations (USA) >> View >> Requests >> Run Autoinvoice Master Program >> Mandatory Parameters: Number of Instances: 1; Organization: Specific OU; Invoice Source: Order Management; Default Date: Todays date; Enter low & high sales order number.

This program move the lines from AR interface table to AR base table. To get invoice details go through given navigation Receivables Super User >> Transactions >> Transactions >> Query with Order Number/ Date

Errors
In Autoinvoice Import Program if you come across below error:
***************************************************************************
Errors: 1) Please complete your tax accounting flexfield (01-000—000)
***************************************************************************
Solution: Receivables, Vision Operations (USA) >> Setup >> Transactions >> Autoaccounting >> Select specific OU & Type as Tax >> Below screen shot deciphers >> Now exclude the table name as taxes and enter relevant constant value (like Standard VAT-Receivables) & Sub-Account : No Sub Account.
Save the form and run AutoInvoice Master Program

Alternately we can make changes in EBT. Get the tax regime code and go to Tax Managers >> Tax Configuration >> Taxes >> Tax Rates tab

Click on Tax Rate Code >> View Tax Accounts >> Include the Ledger in case doesn’t exist >> Update Tax Accounts >> Enter details for Tax Recoverable/Liability

Concurrent Program
Workflow Background Process
Auto Invoice Master Program
Auto Invoice Import Program

Tables
Workflow Background Process program moves the lines from OM base to AR interface table
ra_interface_lines_all rail

rail.interface_line_context = ‘ORDER ENTRY’; rail.interface_line_attribute1 = Order_Number;
rail.interface_line_attribute3 = Delivery_Id

AR Base tables:
ra_customer_trx_all rcta
ra_customer_trx_lines_all rctla
ra_cust_trx_line_gl_dist_all rctlg
rcta.ct_reference = TO_CHAR(ooha.order_number)
rcta.customer_trx_id = rctla.customer_trx_id
rctla.customer_trx_line_id = rctlg.customer_trx_line_id

SELECT ooha.flow_status_code header_status,
oola.flow_status_code line_status,
wdd.released_status,
rcta.trx_number invoice_number
FROM apps.oe_order_headers_all ooha,
apps.oe_order_lines_all oola,
apps.wsh_delivery_details wdd,
apps.wsh_delivery_assignments wda,
apps.ra_customer_trx_all rcta,
apps.ra_customer_trx_lines_all rctla,
apps.ra_cust_trx_line_gl_dist_all rctlg
WHERE order_number = 66499
AND ooha.header_id = oola.header_id
AND ooha.header_id = wdd.source_header_id
AND wdd.delivery_detail_id = wda.delivery_detail_id
AND rcta.ct_reference = TO_CHAR (ooha.order_number)
AND rcta.customer_trx_id = rctla.customer_trx_id
AND rctla.customer_trx_line_id = rctlg.customer_trx_line_id

6. Receipt
Navigation: Receivables, Vision Operations (USA) >> Receipts >> Receipts >> We are creating receipt manually so in Receipt Method: Select bank from LOV; Receipt Number: Enter some manual number; Receipt Amount: Give amount details (could be partial/ full) >> Under Trans Number enter invoice number and click on Apply button >> Cross check the values in next page and save.

Now go to AR transaction page and click on Details button under Balance due section

Same Receipt number can be applied to one invoice for different payments. Also same Receipt number can be applied to multiple invoices. Ultimately ensure that the Balance in AR transaction form should be Zero.

Types
1. Manual
2. Automatic (Auto lock box)

Tables
ar_cash_receipts_all acra
ar_receivable_applications_all araa

rcta.customer_trx_id = araa.applied_customer_trx_id
araa.cash_receipt_id = acra.cash_receipt_id

SELECT ooha.flow_status_code header_status,
oola.flow_status_code line_status,
wdd.released_status,
rcta.trx_number invoice_number,
acra.receipt_number
FROM apps.oe_order_headers_all ooha,
apps.oe_order_lines_all oola,
apps.wsh_delivery_details wdd,
apps.wsh_delivery_assignments wda,
apps.ra_customer_trx_all rcta,
apps.ra_customer_trx_lines_all rctla,
apps.ra_cust_trx_line_gl_dist_all rctlg,
ar_receivable_applications_all araa,
ar_cash_receipts_all acra
WHERE order_number = 66499
AND ooha.header_id = oola.header_id
AND ooha.header_id = wdd.source_header_id
AND wdd.delivery_detail_id = wda.delivery_detail_id
AND rcta.ct_reference = TO_CHAR (ooha.order_number)
AND rcta.customer_trx_id = rctla.customer_trx_id
AND rctla.customer_trx_line_id = rctlg.customer_trx_line_id
AND rcta.customer_trx_id = araa.applied_customer_trx_id
AND araa.cash_receipt_id = acra.cash_receipt_id;

Now run ‘Create Accounting’ program from Receivables, Vision Operations (USA).
This program creates subledger journal entries
In 11i we used ‘General Ledger Transfer Program’ but in R12 we use ‘Create Accounting’
Enter Ledger; End Date: SYSDATE; Mode; Other parameters; Transfer to GL & Posted to GL: Yes

We have two modes to run the program.
1. Draft – For viewing purpose – Then we have to run ‘Transfer Journal Entries to GL’ which triggers ‘Journal Import’ program
2. Final – AR Base to GL Interface. In this mode we have to select Transfer to GL & Posted to GL: Yes. Here the subledger journal entries posted to GL. This triggers ‘Journal Import’ program.

Now view the output of ‘Posting: Single Ledger’ program and make a note of batch name against specific Period. Looks like below screen shot.

7. Transfer to GL
Navigation
General Ledger Super User >> Journals >> Enter >> Under Batch enter: %A 1550007 5874371 2% >> Find >> You will find the batch status as Posted.

Click on Review Journal >> Click on T Accounts >> Options >> Check the Balances if unchecked >> Save >> Close form and again reopen T Accounts >> Here you find the receipt amount included to main balance = Receivable account Dr. to Revenue account Cr.

Tables
gl_je_batches; gl_je_headers; gl_je_lines; gl_balances

SELECT *
FROM gl_je_batches gjb, gl_je_headers gjh, gl_je_lines gjl
WHERE 1 = 1
AND gjb.name LIKE ‘%A 1550007 5874371 2%’
AND gjb.je_batch_id = gjh.je_batch_id
AND gjh.je_header_id = gjl.je_header_id

Post Journal batches: To update account balances in GL we post unposted journal batches.

Accounting Entries
Mandatory accounts in O2C
Sales Order Entry – No Accounting Entry

Sales Order Booking – No Accounting Entry
Sales Order Release – No Accounting Entry
Sales Order Shipping – Accounting entry created in Costing
Dr. Deferred cost of goods sold A/C
Cr. Inventory Material A/C
Invoice created in Receivables – Accounting entry created in Receivables
Dr. Receivable A/C
Cr. Revenue A/C
Receipts created in Receivables – Accounting entry created in Receivables
Dr. Cash
Cr. Receivables

[table id=20 /]

API’s for Move Order:
For move order creation – INV_MOVE_PUB.PROCESS_MOVE_ORDER
For move order allocation – INV_REPLENISH_DETAIL_PUB.LINE_DETAILS_PIB
For move order or sales order confirm – INV_PICK_WAVE_PICK_CONFIRM_PUB.PICK_CONFIRM
For reservation creation – INV_RESERVATION_PUB.CREATE_RESERVATION
To get all reservations for an item – INV_RESERVATION_PUB.QUERY_RESERVATION