Download as pdf or txt
Download as pdf or txt
You are on page 1of 22

SSG MANAGEMENT SOLUTION JOINT STOCK COMPANY

Technical Department

Oracle E-Bussiness Suite (EBS) training

Order To Cash (O2C) cycle

Nguyễn Ngọc Điển


Course Outline

Lesson 1.
Lesson 2. Lesson 3.
Tổng quan quy trình O2C (
Quy trình xử lý nghiệp vụ Mô tả luồng dữ liệu theo
Order to Cash (O2C) Cycle (Process Flow). nghiệp vụ xử lý (Data Flow)
Overview)
1. Tổng quan quy trình O2C
➢ Order to Cash also known as O2C
or OTC is the business process that
covers the entirety of the order
processing system right from
receiving the order to up until the
point the payment is made and an
entry is logged in your accounting
books.
➢ Oracle Order Management is an
order-to-cash solution that
provides capabilities for customers,
partners and employees to select
the right products and services,
negotiate the best prices and
ensure timely fulfilment.
2. Quy trình xử lý nghiệp vụ
The Order to Cash flow is the complete process of entering an order into the system (Sales
Order), delivery the good(s) (Shipping), and then producing the Invoice for the good(s).
The ability to take a Sales Order through the following phases:
➢ Create Order: Booking of the Sales order is done through Order Management and as the
order progresses, users can track the status of the order.
➢ Pick Release, Ship Confirm: Pick release and Ship confirm will be done by Inventory
Management. Once goods are shipped, inventory interfaces will be processed and
corresponding GL entries will be created and posted to GL.
➢ Invoice: Oracle Receivables lets businesses raise invoices for the goods and services
provided to customers. The invoices can be linked to Sales Orders and revenue tracked.
➢ Bank / Cash receipts: Oracle Receivables also facilitates receipt of money against
invoices from customers. Lockbox functionality also provides the flexibility to upload
bank statements to Oracle and process receipts automatically reducing time and efforts
of business users.
Receipt of Material
➢ After receiving the PO, the supplier will
send the items.
➢ Purchasing lets you control the items
you order through receiving,
inspection, transfer, and internal
delivery. You can use these features to
control the quantity, quality, and
internal delivery of the items you
receive.
3. Luồng dữ liệu

Order Deliver Invoice,Cash Transfer to GL

Oe_order_heade Wsh_new_deliveri ra_customer_trx_ gl_je_headers


rs_all OEH es WND all CTH JEH
Oe_order_lines_a Wsh_delivery_assi ra_customer_trx_l gl_je_lines JEL
ll OEL gnments WDA ines_all CTL gl_je_batches
Wsh_delivery_det ra_cust_trx_line_g JEB
ails WDD l_dist_all TCD gl_balances GLB
mtl_material_tran ar_cash_receipts
sactions MMT _all CRP
1. Tổ chức kho

Subinventoty
(Khu vực kho 1.1)
Inventory Organization
(Kho 1)
Subinventoty
Operating Units (Khu vực kho 1.2)
(Đơn vị kinh doanh)

Inventory Organization Subinventory


(Kho 2) (Khu vực kho 2.1)
Back end Tables
Select *
From hr_operating_units HOU --View Đơn vị
Join org_organization_definitions ORG
ON (ORG.operating_unit = HOU.organization_id)-- View Kho
Join mtl_secondary_inventories SUB
ON (SUB. organization_id = ORG. organization_id)
;
➢Mtl_parameters – View kho liên quan tới các setup về kho
➢Mtl_system_items_b, mtl_system_items_tl: Bảng thông tin lưu thành phẩm, nguyên
liệu, hàng hóa, dịch vụ.
➢Mtl_system_items_vl: View của 2 bảng trên.
2. Customers (Khách hàng)
select *
from hz_cust_accounts CUS
join hz_cust_acct_sites_all CAS ON (CAS.cust_account_id = CUS.cust_account_id)
Join hz_cust_site_uses_all CSU ON (CSU.cust_acct_site_id =
CAS.cust_acct_site_id)
join hz_party_sites PTS ON (PTS.party_site_id = CAS.party_site_id )
join hz_locations LOC ON (LOC.location_id = PTS.location_id)
where CSU.site_use_code = 'BILL_TO’
;
select *
from hz_cust_accounts CUS
join hz_cust_acct_sites_all CAS ON (CAS.cust_account_id = CUS.cust_account_id)
join hz_cust_site_uses_all CSU ON (CSU.cust_acct_site_id = CAS.cust_acct_site_id)
join hz_party_sites PTS ON (PTS.party_site_id = CAS.party_site_id )
join hz_locations LOC ON (LOC.location_id = PTS.location_id)
where CSU.site_use_code = ‘SHIP_TO'
;
3. O2C steps
➢Enter the Sales Order
➢Book the Sales Order
➢Launch Pick Release
➢Ship Confirm
➢Create Invoice
➢Create the Receipts either manually or using Auto Lockbox ( In this
article we will concentrate on Manual creation)
➢Transfer to General Ledger
➢Journal Import
➢Posting
3.1 Enter the Sales Order
➢The header information is stored in OE_ORDER_HEADERS_ALL and the line information in
OE_ORDER_LINES_ALL when the order is entered. The column called FLOW_STATUS_CODE is
available in both the headers and lines tables which tell us the status of the order at each
stage.
➢At this stage, the FLOW_STATUS_CODE in OE_ORDER_HEADERS_ALL is ‘Entered’
➢SQL
Select *
From oe_order_headers_all OEH
Join oe_order_lines_all OEL ON (OEL.header_id = OEH.header_id)
Where OEH.flow_status_code = ‘ENTERED’
;
3.2 Book the Sales Order
➢The FLOW_STATUS_CODE in the table OE_ORDER_HEADERS_ALL would be ‘BOOKED’
➢The FLOW_STATUS_CODE in OE_ORDER_LINES_ALL will be ‘AWAITING_SHIPPING’.
➢Record(s) will be created in the table WSH_DELIVERY_DETAILS with RELEASED_STATUS=’R’
(Ready to Release)
➢Also Record(s) will be inserted into WSH_DELIVERY_ASSIGNMENTS.
➢At the same time DEMAND INTERFACE PROGRAM runs in the background and inserts into
MTL_DEMAND
➢SQL
Select *
From oe_order_headers_all OEH
Join oe_order_lines_all OEL ON (OEL.header_id = OEH.header_id)
Where OEH.flow_status_code = ‘BOOKED’
;
3.3 Launch Pick Release, Confirm
➢If Autocreate Delivery is set to ‘Yes’ then a new record is created in the table
WSH_NEW_DELIVERIES.
➢DELIVERY_ID is populated in the table WSH_DELIVERY_ASSIGNMENTS.
➢The RELEASED_STATUS in WSH_DELIVERY_DETAILS would be now set to ‘Y’ (Pick Confirmed) if Auto
Pick Confirm is set to Yes otherwise RELEASED_STATUS is ‘S’ (Release to Warehouse)
➢SQL
Select *
From oe_order_headers_all OEH
Join oe_order_lines_all OEL ON (OEL.header_id = OEH.header_id)
Join wsh_delivery_details WDD ON (WDD.source_line_id = OEL.line_id and
WDD.source_code = ‘OE’)
Join wsh_delivery_assigments WDA ON (WDA.delivery_detail_id =
WDD.delivery_detail_id)
Join wsh_new_deliveries WND ON (WND.delivery_id = WDA.delivery_id)
Where WDD.released_status in (‘Y’, ‘S’)
;
3.4 Ship Confirm the Order
◦ RELEASED_STATUS in WSH_DELIVERY_DETAILS would be ‘C’ (Ship Confirmed)
◦ FLOW_STATUS_CODE in OE_ORDER_HEADERS_ALL would be “BOOKED”
◦ FLOW_STATUS_CODE in OE_ORDER_LINES_ALL would be “SHIPPED”
➢SQL
Select *
From oe_order_headers_all OEH
Join oe_order_lines_all OEL ON (OEL.header_id = OEH.header_id)
Join wsh_delivery_details WDD ON (WDD.source_line_id = OEL.line_id and
WDD.source_code = ‘OE’)
Join wsh_delivery_assigments WDA ON (WDA.delivery_detail_id =
WDD.delivery_detail_id)
Join wsh_new_deliveries WND ON (WND.delivery_id = WDA.delivery_id)
Where WDD.released_status = ‘C’
;
3.5 Create Invoice
➢ Workflow Background Process inserts the records RA_INTERFACE_LINES_ALL with
✓ INTERFACE_LINE_CONTEXT = ‘ORDER ENTRY’
✓ INTERFACE_LINE_ATTRIBUTE1= Order_number
✓ INTERFACE_LINE_ATTRIBUTE3= Delivery_id
➢ RA_CUSTOMER_TRX_ALL will have the Invoice header information. The column INTERFACE_HEADER_ATTRIBUTE1 will have the
Order Number.
➢ RA_CUSTOMER_TRX_LINES_ALL will have the Invoice lines information. The column INTERFACE_LINE_ATTRIBUTE1 will have the
Order Number.
➢ SQL
FROM ra_cust_trx_line_gl_dist_all TRXD
JOIN ra_customer_trx_all HEAD ON (HEAD.customer_trx_id = TRXD.customer_trx_id)
JOIN ra_customer_trx_lines_all LINE ON (HEAD.customer_trx_id = LINE.customer_trx_id)
JOIN mtl_system_items_b ITEM ON (ITEM.inventory_item_id = LINE.inventory_item_id)
JOIN ar_customers CUST ON (CUST.customer_id = HEAD.sold_to_customer_id)
WHERE TRXD.account_class = 'REC'
AND TRXD.gl_date BETWEEN l_start_date AND l_end_date
AND HEAD.org_id = i_org_id
AND (LINE.quantity_invoiced IS NOT NULL OR LINE.quantity_credited IS NOT NULL)
AND LINE.interface_line_context = 'ORDER ENTRY'
;
3.6 Create Receipt
➢SQL
FROM ra_customer_trx_all CTH
JOIN ar_receivable_applications_all RAP ON (RAP.applied_customer_trx_id =
CTH.customer_trx_id)
JOIN ar_cash_receipts_all CRP ON (CRP. cash_receipt_id = RAP.
cash_receipt_id)
WHERE RAP.status = ‘APP'
;
3.7 Transfer to GL
➢To transfer the data from General Ledger Interface table to General Ledger, run the
Journal Import program from Oracle General Ledger
➢SQL
from gl.gl_je_headers JEH
join gl.gl_je_lines JEL ON (JEL.je_header_id = JEH.je_header_id)
join gl.gl_code_combinations GCC ON (GCC.code_combination_id =
JEL.code_combination_id)
where JEH.period_name = l_period_name
and JEH.status = 'P'
and JEH.actual_flag = 'A'
;
3.7 Transfer to GL
Select *
from xla.xla_ae_headers XAH
join xla.xla_ae_lines XAL ON (XAL.ae_header_id = XAH.ae_header_id and XAL.application_id =
XAH.application_id)
join xla.xla_transaction_entities XTE ON (XTE.entity_id = XAH.entity_id and XTE.application_id =
XAH.application_id)
join apps.xla_events XE ON (XE.event_id = XAH.event_id and XE.application_id = XAH.application_id)
join apps.gl_import_references GIR ON (GIR.gl_sl_link_id = XAL.gl_sl_link_id)
join apps.gl_je_headers GJH ON (GJH.je_header_id = GIR.je_header_id)
join apps.gl_code_combinations GCC ON (GCC.code_combination_id = XAL.code_combination_id)
left join apps.ap_checks_all ACA ON (ACA.check_id = XTE.source_id_int_1 and XTE.application_id = 200
and XTE.entity_code = 'AP_PAYMENTS')
left join apps.ap_invoices_all AIA ON (AIA.invoice_id = XTE.source_id_int_1 and XTE.application_id = 200
and XTE.entity_code = 'AP_INVOICES')
left join apps.ra_customer_trx_all RCT ON (RCT.customer_trx_id = XTE.source_id_int_1 and XTE.application_id =
222 and xte.entity_code = 'TRANSACTIONS')
8. Diagram for Customer
8. Diagram for Sales Order
oe_order_headers_all
oh
oh.header_id =
ol.header_id
oe_order_lines_all
wsh_delivery_assignments ol
wda
wdd.source_line_id = mtl_material_transactions
ol.line_id mtx
wdd.delivery_detail_id =
wda.delivery_detail_id mtx.picking_line_id =
wdd.delivery_detail_id
wnd.delivery_id = wsh_delivery_details
wda.delivery_id wdd
(wdd.released_status = 'C',
‘S’ -- Closed, Shipped)
wsh_new_deliveries
wnd wdd.move_order_line_id =
wdd.transaction_id = mtrl.line_id
mmt.transaction_id
mtl_txn_request_lines
mtl_material_transactions mtrl
mmt
mtrh.header_id =
mmt.transfer_transaction_id = mtrl.header_id
mrc.transaction_id
mtl_txn_request_headers
mtl_material_transactions mtrh
mrc
8. Diagram for Receivable ra_customer_trx_lines_all
header_freight

header_freight.customer_trx_id =
ra_customer_trx_lines_all
trx.customer_trx_id
tax (không có header_freight.link_to_cust_trx_line_id =
line.customer_trx_line_id)
line.customer_trx_line_id = ra_customer_trx_lines_all
tax.link_to_cust_trx_line_id(+) line_freight
ra_batch_sources_all
line.customer_trx_line_id =
line_freight.link_to_cust_trx_line_id(+) bat

trx.batch_source_id =
bat.batch_source_id
ra_customer_trx_lines_all and trx.org_id =
bat.org_id
line
ra_cust_trx_types_all
rtt
trx.customer_trx_id = trx.cust_trx_type_id =
line.customer_trx_id rtt.cust_trx_type_id
and trx.org_id =
ra_terms_vl ra_customer_trx_all rtt.org_id
trx.term_id =
trm trx
trm.term_id(+) trx.bill_to_customer_id =
hca.cust_account_id
trx.customer_trx_id = hz_cust_accounts
sch.customer_trx_id(+) trx.bill_to_site_use_id = hca
bill_su.site_use_id(+)
ar_payment_schedules_all trx.org_id =
sch ou.organization_id hca.party_id =
hz_cust_site_uses_all hz.party_id
bill_su
hr_operating_units
hz_parties
ou
bill_su.cust_acct_site_id = hz
bill_cas.cust_acct_site_id(+)
entity.legal_entity_id =
ou.default_legal_context_id
hz_cust_acct_sites_all
xle_entity_profiles bill_cas
entity
bill_cas.party_site_id =
bill_ps.party_site_id(+)

hz_party_sites
hz_locations bill_ps.location_id =
bill_loc.location_id(+) bill_ps
bill_loc
THANK YOU!
.

You might also like