Friday 12 October 2012

Order To Cash Cycle Technical Flow





I have started to write this article from scorch 
What is a sales order?
Sales Order will have all the details of items/goods/services requested by the customer and the due dates.
In what situation we have to create a sales order
When customer is plan to buy  items/goods/services, it comes into a picture
How to enter a sales order in to system?
§  Manual entry (based on a phone call, fax)
§  Order Import (through API / Concurrent program)
§  Copy from an existing sales order
§  Convert from an Quote
§  From other CRM modules (Service, Sales)
§  From an Blanket Sales Agreement

Order to cash Technical Flow
Enter order
Book order
Pick release
Pick confirm
Ship confirm
Generate invoice
Create a receipt
Complete line
Close the order

Enter order:

his is first stage, when the order is entered in the system; it creates a record in order headers and Order Lines table.
  • Enter header details: Once you enter details on the order header and save it record goes to one table OE_ORDER_HEADERS_ALL.
We enter the fields like customer name, ship to and bill to location,order type extc,,,,
  FLOW_STATUS_CODE = ENTERED,
  BOOKED_FLAG = N),
  Primary key=HEADER_ID
After this go for lines
  • Enter Line details for this order: Enter different item numbers, quantity and other details in line tab. When the record gets saved, it goes to one table. Order header details will be linked with line details by order HEADER_ID.
OE_ORDER_LINES_ALL
FLOW_STATUS_CODE = ENTERED,
BOOKED_FLAG = N,
OPEN_FLAG = Y
Primary key= LINE_ID

Book order:
Before Booking the order we need to check item availability in the sales order form, if items are available in the global inventory or not. If it is available booked it otherwise go for Back Order
 when Order is booked then the Flow status changed from Entered to Booked. At this stage, these below table get affected.
  • OE_ORDER_HEADERS_ALL (FLOW_STATUS_CODE as BOOKED, BOOKED_FLAG updated to Y)
  • OE_ORDER_LINES_ALL (FLOW_STATUS_CODE as AWAITING_SHIPPING, BOOKED_FLAGupdated Y)
  • WSH_DELIVERY_DETAILS (DELIVERY_DETAIL_ID is assigned here, RELEASED_STATUS ‘R’ ready to release, LINE_ID comes as SOURCE_LINE_ID)
  • WSH_DELIVERY_ASSIGNMENTS (DELIVERY_ASSIGNMENT_ID is assigned for DELIVERY_DETAIL_ID present in WSH_DELIVERY_DETAILS, DELIVERY_ID remains blank till this stage)
In shipping transaction form order status remains "Ready to Release".
At the same time, Demand interface program runs in background And insert into inventory tables MTL_DEMAND, here LINE_ID come as a reference in DEMAND_SOURCE_LINE


Reservation :
This step is required for doing reservations SCHEDULE ORDER PROGRAM runs in the background and quantities are reserved. Once these programs get successfully get completed.
  • MTL_DEMAND andMTL_RESERVATIONS table get updated. LINE_ID gets updated in DEMAND_SOURCE_LINE_ID in both the tables.
Pick release :
 Pick Release is the process of putting reservation on on-hand quantity available in the inventory and pick them for particular sales order.
Pick release can be done from 'Release Sales Order' form or 'Pick release SRS' program can be scheduled in background. In both of these cases all lines of the order gets pick released depending on the Picking rule used. If specific line/s needs to be pick release it can be done from 'Shipping Transaction form. For this case Pick Release is done from 'Release Sales Order' form with Pick Confirm=NO.

Pick Release process in turn will kick off several other requests like Pick Slip Report,

Shipping Exception Report and Auto Pack Report

Once pick release is done these are the tables get affected:
· If step 3 is not done then MTL_RESERVATIONS gets updated now.
· WSH_NEW_DELIVERIES (one record gets inserted with SOURCE_HEADER_ID= order header ID, STATUS_CODE=OP =>open)
· WSH_DELIVERY_ASSIGNMENTS (DELIVERY_ID gets assigned which comes from WSH_NEW_DELIVERIES)
· WSH_DELIVERY_DETAILS (RELEASED_STATUS ‘S’ ‘submitted for release’)
· MTL_TXN_REQUEST_HEADERS
· MTL_TXN_REQUEST_LINES (LINE_ID goes as TXN_SOURCE_LINE_ID)
· (move order tables. Here request is generated to move item from Source (RM or FG) sub-inventory to staging sub-inventory)
· MTL_MATERIAL_TRANSACTIONS_TEMP (link to above tables through MOVE_ORDER_HEADER_ID/LINE_ID, this table holds the record temporally)
· MTL_SERIAL_NUMBERS_TEMP (if item is serial controlled at receipt then record goes in this table)
· MTL_SERIAL_NUMBERS (enter value in GROUP_MARK_ID )
*In shipping transaction form order status remains "Released to Warehouse" and all the material still remains in source sub-inventory. We need to do Move Order Transaction for this order. Till this no material transaction has been posted to MTL_MATERIAL_TRANSACTIONS

Pick confirm/ Move Oder Transaction:
Items are transferred from source sub-inventory to staging Sub-inventory. Here material transaction occurs.
Order line status becomes 'Picked' on Sales Order and 'Staged/Pick Confirmed' on Shipping Transaction Form.
  • MTL_MATERIAL_TRANSACTIONS_TEMP (Record gets deleted from here and gets posted to MTL_MATERIAL_TRANSACTIONS)
  • OE_ORDER_LINES_ALL (FLOW_STATUS_CODE ‘PICKED’ )
  • MTL_MATERIAL_TRANSACTIONS (LINE_ID goes as TXN_SOURCE_LINE_ID)
  • MTL_TRANSACTION_ACCOUNTS
  • WSH_DELIVERY_DETAILS (RELEASED_STATUS becomes ‘Y’ => ‘Released’ )
  • WSH_DELIVERY_ASSIGNMENTS
  • MTL_ONHAND_QUANTITIES
  • MTL_SERIAL_NUMBERS_TEMP (record gets inserted after putting details for the item which are serial controlled at 'Sales order issue')
  • MTL_SERIAL_NUMBERS (record gets inserted after putting details for the item which are serial controlled at 'Sales order issue')


Ship Confirm:
* This step can be eliminated if we set Pick Confirm=YES at the time of Pick Release

This will kick off concurrent programs like.INTERFACE TRIP Stop, Commercial Invoice, Packing Slip Report, Bill of Lading

 Here is the ship confirm interface program runs in background. Data removed from
  • WSH_NEW_DELIVERIES. The items on the delivery shipped to customer at this stage
  • OE_ORDER_LINES_ALL (FLOW_STATUS_CODE ‘shipped’)
  • WSH_DELIVERY_DETAILS (RELEASED_STATUS ‘C’ ‘Shipped’, SERIAL_NUMBER if quantity is ONE)
  • WSH_SERIAL_NUMBERS (records gets inserted with the DELIVERY_DETAIL_ID reference, only in case of shipped quantity is two or more)
  • MTL_TRANSACTION_INTERFACE
  • MTL_MATERIAL_TRANSACTIONS (linked through Transaction source header id)
  • MTL_TRANSACTION_ACCOUNTS
  • Data deleted from MTL_DEMAND, MTL_RESERVATIONS
  • Item deducted from MTL_ONHAND_QUANTITIES
  • MTL_SERIAL_NUMBERS_TEMP (records gets deleted from this table)
  • MTL_SERIAL_NUMBERS (Serial number stauts gets updated CURRENT_STATUS=4 , 'Issued out of store')
Underlying tables affected:

 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

 Invoice:
After shipping the order, order lines are eligible to transfer to RA_INTERFACE_LINES_ALL. Workflow background engine picks those records and post it to RA_INTERFACE_LINES_ALL. This is also called Receivable interface, this mean information moved to accounting area for invoicing details. Invoicing workflow activity transfers shipped item information to Oracle Receivables. At the same time records also goes in the table RA_INTERFACE_SALESCREDITS_ALL which hold details of sales credit for the particular order
  • RA_INTERFACE_LINES_ALL (interface table into which the data is transferred from order management) Then Autoinvoice program imports data from this table which get affected into this stage are receivables base table. At the same time records goes in
  • RA_CUSTOMER_TRX_ALL (CUST_TRX_ID is primary key to link it to TRX_LINES table and TRX_NUMBER is the invoice number)
  • RA_CUSTOMER_TRX_LINES_ALL (LINE_ATTRIBUTE_1 and LINE_ATTRIBUTE_6 are linked to order number and LINE_ID of the orders)
·         orkflow 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 
·         and spawns Auto invoice Master Program and Auto invoice import program which creates Invoice for that particular Order.

Underlying tables:

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.
Create receipt:
Navigation:

Receivables> Receipts> Receipts


Underlying tables:

AR_CASH_RECEIPTS_ALL

Transfer to General Ledger:

To transfer the Receivables accounting information to general ledger, run General Ledger Transfer Program.


Navigation:

Receivables> View Requests

 Parameters:

·         Give in the Start date and Post through date to specify the date range of the transactions to be transferred.

·         Specify the GL Posted Date, defaults to SYSDATE.

·         Post in summary: This controls how Receivables creates journal entries for your transactions in the interface table. If you select ‘No’, then the General Ledger Interface program creates at least one journal entry in the interface table for each transaction in your posting submission. If you select ‘Yes’, then the program creates one journal entry for each general ledger account.

·         If the Parameter Run Journal Import is set to ‘Yes’, the journal import program is kicked off automatically which transfers journal entries from the interface table to General Ledger, otherwise follow the topic Journal Import to import the journals to General Ledger manually.

Underlying tables:

This transfers data about your adjustments, chargeback, credit memos, commitments, debit memos, invoices, and receipts to the GL_INTERFACE table.

Journal Import:

 To transfer the data from General Ledger Interface table to General Ledger, run the Journal Import program from Oracle General Ledger.
Navigation:

General Ledger > Journal> Import> Run

Parameters:

·         Select the appropriate Source.

·         Enter one of the following Selection Criteria:

No Group ID: To import all data for that source that has no group ID. Use this option if you specified a NULL group ID for this source.

All Group IDs: To import all data for that source that has a group ID. Use this option to import multiple journal batches for the same source with varying group IDs.

Specific Group ID: To import data for a specific source/group ID combination. Choose a specific group ID from the List of Values for the Specific Value field.

If you do not specify a Group ID, General Ledger imports all data from the specified journal entry source, where the Group_ID is null.

·         Define the Journal Import Run Options (optional)

Choose Post Errors to Suspense if you have suspense posting enabled for your set of books to post the difference resulting from any unbalanced journals to your suspense account.

Choose Create Summary Journals to have journal import create the following:

• one journal line for all transactions that share the same account, period, and currency and that has a debit balance

• one journal line for all transactions that share the same account, period, and currency and that has a credit balance.

·         Enter a Date Range to have General Ledger import only journals with accounting dates in that range. If you do not specify a date range, General Ledger imports all journals data.

·         Choose whether to Import Descriptive Flexfields, and whether to import them with validation.

 Underlying tables:


GL_JE_BATCHES, GL_JE_HEADERS, GL_JE_LINES



Posting:


We have to Post journal batches that we have imported previously to update the account balances in General Ledger.

Navigation:

 General Ledger> Journals > Enter

 nderlying tables:
GL_BALANCES.




Friday 5 October 2012

XML Publisher Interview Questions and Answers


1.     What are the XML publisher tables.
Ans>PER_GB_XDO_TEMPLATES
XDO_DS_DEFINITIONS_B
XDO_DS_DEFINITIONS_TL
XDO_DS_DEFINITIONS_VL
XDO_LOBS
XDO_TEMPLATES_B
XDO_TEMPLATES_TL
XDO_TEMPLATES_VL
XDO_TEMPLATE_FIELDS
XDO_TRANS_UNITS
XDO_TRANS_UNIT_PROPS
XDO_TRANS_UNIT_VALUES
2.     how to create report with out .rdf?
Ans> Using Data template…..see below link
3.     how to write a loop in rtf template design ?
Ans> <?for-each:G_invoice_no?>
     ……………………..<?end for each?>
4.     how to design  sub templates in rtf layout ?
Ans> using following tags..
                <?template:template_name?>
                      This is Last Page
                               <?end template?>
5.     how to call a header or footer ?
          Ans> using this tag <?call:header?> and <?call:footer?>
                We have to use header section and footer section of the page.

6.     How to break the page in specific condition ?
Ans>  <?split-by-page-break:?>
7.     How to use section break ?
Ans>  <?for-each@section:G_CUSTOMER(This is group name)?>
8.     How to create multi layouts in XMLP ?
        Ans>  using below conditions
               <?choose:?>
               <?when:CF_CHOICE=’VENDOR’?>
            Your template….
               <?end when?>
                   <?when:CF_CHOICE=’INVOICE’?>
                Your template….
              <?end when?>
                           <?when:CF_CHOICE=’RECEIPT’?>
                              Your template….
                    <?end when?>
                                              <?end choose?>
9.     How to calculate the running total in XMLP?
Ans>           <?xdoxslt:set_variable($_XDOCTX, 'RTotVar', xdoxslt:get_variable($_XDOCTX, 'RTotVar') + ACCTD_AMT(This is                                                column name) )?><?xdoxslt:get_variable($_XDOCTX, 'RTotVar')?>
10.   How to submit a layout in the backend ?
       Ans>  we have to write a procedure for this using the below code
                              fnd_request.add_layout
                             (template_appl_name      => 'application name',
                              template_code           => 'your template code',
                              template_language       => 'En',
                              template_territory      => 'US',
                              output_format           => 'PDF'
                             );
11.   How to display the images in XMLP?
        Ans> url:{'http://image location'}
                 For example, enter:
                   url:{'http://www.oracle.com/images/ora_log.gif'}
                      url:{'${OA_MEDIA}/image name'}
12.   How to pass the page numbers in rtf layout?
Ans>  <REPORT>
<PAGESTART>200<\PAGESTART>
....
</REPORT>
Enter the following in your template:
<?initial-page-number:PAGESTART?>

13.How to display  last page is differently in XML Publisher Reports.

Ans> what you want to dispay the test anything write in last of page

last page header 

<?start@last-page-first:body?>    <?end body?>

more questions i will update soon......... 
 we have any doubts on this please give the comment....i will respond...u r comment