Professional Documents
Culture Documents
Note: 1606530.2
Copyright (c) 2019, Oracle. All rights reserved. Oracle Confidential.
Overview
The Funds Accrual Engine (FAE) extracts all accrual and discount information from sales orders executed through any ordering channel. It handles the
following categories of events:
1. Ship-confirmed orders: calculates budget utilization and earnings based on ship confirmed orders. - Return orders: adjusts budget utilization and
earnings in the event of a return order. - Fully accrued budget accrue to customers: updates the budget and the utilized column of the budget with the
accrued amount.
2. Fully accrued budget accrue to sales: updates the budget,but does not update the committed and utilized columns of the budget.
3. Volume offer adjustments: calculates accruals for each sales order and makes the required accrual adjustments. - Accrual rates that are adjusted
retroactively: creates adjustments based on past sales order information.
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=krop1ygc5_684&id=1606530.2 1/17
5/15/2019 Note: 1606530.2
When an offer is created in Channel Revenue Management, a modifer is created in Advanced Pricing (see Integration Troubleshooting : Trade Management
Offers (WIP) (Doc ID xxxxxx.2))
After the offer is applied to a sales order, an off-invoice discount or accrual adjustment is created for the order. AMS Funds Accrual Engine fetches the order
(and the related offer adjustment
information), ultimately updating the budget utilized column.
You need to run the concurrent request Funds Accrual Engine with the following parameters;
Parameter Overview
Run Exception Messages Set to Y to run Order Capture (ASO) Exception Queue.
Run Budget Utilization for Adjusted Offer Set the adjustment parameter to 'Yes" to close Offer Adjustment.
Run Budget Utilization For Volume Offer Set to Yes for processing Volume Offer Adjustment for tier jumps
Repost Failed GL Posting Set to Yes for repost Failed postings
Run in Debug Mode Set to Yes for Debug messages on Concurrent Log File
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=krop1ygc5_684&id=1606530.2 3/17
5/15/2019 Note: 1606530.2
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=krop1ygc5_684&id=1606530.2 4/17
5/15/2019 Note: 1606530.2
Integration Flow
Integration Flow
The following section provides an overview of the flow of data and control, from a technical perspective, when running the Funds Accrual Engine (FAE)
Order If any actions happen on the order check the stautus of the message in each
Created, lines containing Pricing Modifers, order runnign this query;
Booked OM populates the ASO advanced
and queue table
Shipped aso.aq$aso_order_feedback_t with the SELECT t.queue, t.enq_time, t.msg_state,
corresponding CREATE, UPDATE or t2.price_adjustment_id,
DELETE messages for each t2.operation, t2.line_id,
modifer/order line combination. t2.list_line_type_code,
t2.header_id, t2.applied_flag,
These messages are in READY state. t2.list_header_id,
When Funds Accrual Engine is run, it t2.adjusted_amount, t2.last_update_date
dequeues these messages and FROM aso.aq$aso_order_feedback_t t,
populates the funds utilization table Table(t.user_data.line_adj_varray) t2
with the accrual records. WHERE t.consumer_name = 'OZF'
The ASO message state changes to AND t2.header_id = (select header_id from
PROCESSED. apps.oe_order_headers_all
where order_number = <insert order
number> )
Run call to
Funds OZF_ACCRUAL_ENGINE.ACCRUE_OFFERS > aso_order_feedback_pub.get_notice Get the Budget information for the business
Accrual : returns all of the data regarding event
Engine > get_message changes (inserts, updates and deletes)
>> aso_order_feedback_pub.get_notice to Order information - in our case we SELECT 'FUND' AccrualType,
>>>ASO_ORDER_FEEDBACK_GET_PVT.GET_NOTICE are concerned with offers, discounts util.utilization_id UtilizationId,
etc. associated with Order and Order util.fund_id FundId,
Lines
> adjust_accrual NVL(map.xref_line_id_value,oe.list_line_id)
>> post_accrual_to_gl DiscountLineId,
util.product_id ProductId,
if backdated adjustment or volume offer adjustment util.object_id OrderId,
> ozf_adjustment_ext_pvt.adjust_backdated_offer util.order_line_id OrderLineId,
NVL(line.invoiced_quantity,
> post_offinvoice_to_gl NVL(line.shipped_quantity, 0))
ShippedQuantity,
if volume offer adjustment (NVL(line.invoiced_quantity,
NVL(line.shipped_quantity,
> ozf_adjustment_ext_pvt.adjust_volume_offer 0))*line.unit_selling_price) Revenue,
NVL(util.plan_curr_amount,0)
if unposted GL AccrualAmount
FROM oe_order_lines_all line,
> reprocess_failed_gl_posting ozf_funds_utilized_all_b util,
ozf_offers off, oe_price_adjustments oe,
:
ozf_xref_map map
WHERE line.line_id = util.order_line_id
raise business event AND line.header_id = util.object_id
oracle.apps.ozf.order.accrual.info AND util.object_type = 'ORDER'
AND util.request_id =
fnd_global.conc_request_id
For AND util.plan_type = 'OFFR'
AND util.plan_id = off.qp_list_header_id
Budget Data AND util.price_adjustment_id =
Offer Data oe.price_adjustment_id
AND util.gl_posted_flag IN ('Y', 'X')
AND oe.list_line_id = map.list_line_id(+)
AND NVL(line.invoiced_quantity,
NVL(line.shipped_quantity, 0)) <> 0
AND NVL(off.budget_offer_yn, 'N') = 'Y'
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=krop1ygc5_684&id=1606530.2 6/17
5/15/2019 Note: 1606530.2
NVL(map.xref_line_id_value,oe.list_line_id)
DiscountLineId,
util.product_id ProductId,
util.object_id OrderId,
util.order_line_id OrderLineId,
util.cust_account_id CustomerId,
NVL(line.invoiced_quantity,
NVL(line.shipped_quantity, 0))
ShippedQuantity,
(NVL(line.invoiced_quantity,
NVL(line.shipped_quantity,
0))*line.unit_selling_price) Revenue,
NVL(util.plan_curr_amount,0)
AccrualAmount
FROM oe_order_lines_all line,
ozf_funds_utilized_all_b util,
ozf_offers off, oe_price_adjustments oe,
ozf_xref_map map
WHERE line.line_id = util.order_line_id
AND line.header_id = util.object_id
AND util.object_type = 'ORDER'
AND util.request_id =
fnd_global.conc_request_id
AND util.price_adjustment_id =
oe.price_adjustment_id
AND util.plan_type = 'OFFR'
AND util.plan_id = off.qp_list_header_id
AND util.price_adjustment_id =
oe.price_adjustment_id
AND util.gl_posted_flag = 'Y'
AND NVL(line.invoiced_quantity,
NVL(line.shipped_quantity, 0)) <> 0
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=krop1ygc5_684&id=1606530.2 7/17
5/15/2019 Note: 1606530.2
select *
from ozf_funds_utilized_all_vl
where utilization_id = (select
max(utilization_id)
from ozf_funds_utilized_all_b
where object_type = 'ORDER'
and object_id is not null
and utilization_type not in ('REQUEST',
'TRANSFER'))
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=krop1ygc5_684&id=1606530.2 8/17
5/15/2019 Note: 1606530.2
ACCRUAL
"X" : for fully accrual budget accrue to sales
or accrual to customer with
liability flag off
SELECT a.flow_status_code,a.*
FROM oe_order_lines_all a
, oe_order_headers_all b
WHERE a.header_id = b.header_id
AND EXISTS
( SELECT 1
FROM ozf_funds_utilized_all_b c
WHERE c.object_id = b.header_id
AND c.gl_posted_flag = 'F'
)
ORDER BY a.header_id;
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=krop1ygc5_684&id=1606530.2 11/17
5/15/2019 Note: 1606530.2
Packages
The following packages may be called during the process flow. See the Technical Flow tab for details of when and why each package is called.
CS_Charge_Create_Order_PUB (csxpchob.pls)
CS_Charge_Create_Order_PVT (csxvchob.pls)
CS_CHARGE_DETAILS_CUHK (cschrs.pls)
ASO_ORDER_INT (asoiordb.pls)
OE_VALIDATE_LINE (OEXLLINB.pls)
ASO_MAP_QUOTE_ORDER_INT (asoimqob.pls)
ASO_CHECK_TCA_PVT (asovctcb.pls)
Updated Tables
The following tables are updated as the ChRM -> GL flow is processed :
ozf_act_budgets
ozf_funds_utilized_all_b
ozf_funds_utilized_all_tl
ozf_funds_all_b
ozf_object_fund_summary
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=krop1ygc5_684&id=1606530.2 12/17
5/15/2019 Note: 1606530.2
Setup Considerations
Overview
The following section highlights any specific pieces of setup that commonly affect the interaction between Channel Revenue Management and General
Ledger. It is not a guide to the complete product setup but highlights one or more areas that should be reviewed and confirmed.
To integrate both Subledger Accounting and General Ledger with Oracle Channel Revenue Management, complete the following procedures:
For more details see the Oracle Channel Revenuew Management Implementation and Administration Guide : Integrating with General Ledger via
Subledger Accounting.
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=krop1ygc5_684&id=1606530.2 13/17
5/15/2019 Note: 1606530.2
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=krop1ygc5_684&id=1606530.2 14/17
5/15/2019 Note: 1606530.2
Account In order to debug the account generator workflow, set the profile Account Generator: Debug mode to Yes. The
Yes
Generator : Run in No workflow process can then be seen from the process editor and the owner of the workflow will be the user who
No
Debug Mode runs the concurrent program or performs an action which invokes accounting.
OZF : Create GL Shipped In this release, GL entries for accruals are created based on a profile option setting. The setting can be either
Yes
Entries for Orders Invoiced Shipped (Ship Confirmed) or Invoiced.
ASO: Order
Time in
Feedback Queue Yes Retention Time
seconds
Retention Time
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=krop1ygc5_684&id=1606530.2 15/17
5/15/2019 Note: 1606530.2
The 'OZF: Use Account Generator Workflow' profile option is defined at site level only with default value as 'No'. The profile dictates the call of Account Generator Workflow for both
Accrual/Adjustment and Claim Settlement Flow.
1. If profile OZF: Use Account Generator Workflow is Yes and the value of this flag is passed as True, then account generator will be not be called.
2. If profile OZF: Use Account Generator Workflow is Yes and the value of this flag is passed as False, then account generator will be called.
3. If profile OZF: Use Account Generator Workflow is No, then account generator will be not be called irrespective of the value of this flag.
If the above condition set as 'true', then the account can be derived on the below sequence;
If the above condition set as 'False', then account generator will not be called and the accounts can be derived based on the below setup.
1. Debit/Credit Accounts from Adjustment Public API Value would be null for accruals and adjustment from UI.
2. Accounts from Adjustment Types
3. Accounts from Budget
4. Accounts from Budget Category
5. Accounts from System Parameter
Paid Adjustment using Public API - Debit Account
a) Debit Accounts from Adjustment Public API
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=krop1ygc5_684&id=1606530.2 16/17
5/15/2019 Note: 1606530.2
If the profile 'OZF: Use Account Generator Workflow' value is set as 'Yes', the account can be derived on the below sequence.
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=krop1ygc5_684&id=1606530.2 17/17