Showing posts with label Order. Show all posts
Showing posts with label Order. Show all posts

Monday, 28 March 2016

Sales Order --> Rules --> Processing Constraints

Depending on the business requirements we can be required to check for some conditions and based on their applicability restrict some operations to be performed on the Sales Order.
These restrictions can be applied via the Processing Constraints. There are number of Seeded Oracle Constraints which prevent certain operations in orders to maintain Data Integrity .
E.g. We cannot split an Order line After it is shipped , thus Seeded Oracle Processing Constraint will ensure that this action cannot be performed by the user.


Apart from these we can have custom constraints defined too. Once the constraints have been defined we need to apply it i.e. map it to the responsibilities to specify which responsibilities will be bound by the constraint or can override the constraint.


This can be done by the Applicable to Option :


Oracle provides 3 options which work as below :


All Responsibilities : This means this constraint will be applicable to all responsibilities.
Authorized Responsibility : When any responsibility is mentioned here, then the processing constraint will NOT BE applicable to that responsibility
Constrained Responsibility : When any responsibility is mentioned here, then the processing constraint will BE applicable ONLY to that responsibility


For Seeded constraints the Applicability is All Responsibilities and cannot be updated

Tuesday, 5 January 2016

Order Import Error : VALIDATION FAILED FOR THE FIELD - ORDER TYPE

When creating Sales Order by populating the Order Interface , via Process Order API or entering the Sales Order manually , we get the Error : VALIDATION FAILED FOR THE FIELD - ORDER TYPE .
This issue is observed when the Order Date for the Sales Order is having a Value which is earlier to the Effective from date of the Sales Order Type,

Solution : Make the Effective to of the order type to a historical date earlier than the order date and re-rty

Monday, 31 August 2015

Order Line Status Awaiting Fulfillment

In Oracle we can have a scenario where for a multi line order one or more lines of the Order are in status Awaiting Fulfillment.
This scenario occurs in case the order lines have been assigned a Fulfillment set.

Fulfillment set are defined as a group of lines to be fulfilled together.

There can be different cases for these :

Eg : 1 , Book a sales order with 2 lines
     Line 1 --> shippable Item
     Line 2 --> Service / Bill Only item

In this scenario let us assume that business has created a Sales Order for Laptop and Warranty sell. Laptop is a shippable item and Warranty is a Bill Only item.

CASE 1 --> Order Booked without Fulfillment Set

when the order is Booked , Line 1 will go to awaiting shipping and Line 2 will close since it is a BILL Only item.

Once Line 1 is shipped  , it will be closed and invoiced. In the current scenario we will have 2 AR Invoices generated for same sales order --> One for the Warranty and one for the shipped products.

From business perspective it does not make sense to Bill a customer for Warranty till the Laptop is shipped .

In such a scenario business will follow the below case :

CASE 1 --> Order Booked with Fulfillment Set

when the order is Booked , Line 1 will go to awaiting shipping and Line 2 will proceed to Awaiting Fulfillment stage .

As Order Line 1 is not shipped : Line 2 will not be fulfilled (and therefore invoiced) until the shippable line is fulfilled

Once Line 1 is shipped  , Line 1 and Line 2 will move to status Fulfilled and then be closed simultaneously and invoices. In the current scenario we will have 1 AR Invoice generated for sales order --> for Warranty and Shipped goods.

The same approach can be applied even for multi-line order with different shippable items in case the lines need to be closed and invoiced together.

Thus when lines are in Awaiting Fulfillment status check if Fulfillment set is used on order line

Hopefully this clarifies the doubt on status Awaiting fulfillment and how it can be resolved , also providing details of usage of fulfillment set.


Thursday, 12 February 2015

Order Line Pricing Issue , Line Not Getting Priced using a Price List

Many times when Trying to create a Sales Order we enter an item on the Order Line but the Pricing of the line does not happen  , and in some cases when selecting the item on the  Order line for a specific Price List we get and error that " Item XXXX and UOM EA not available on the price list"

In such scenarios we have to check the Setup of the concerned price list to determine the root cause of the issue :

1. Go to the Price List Setup and see if the Item is actually Available on the price list or not by entering the Price List name and the Item details

If the item is not available on the Price list then maintain the item on the price list and re-try Order Line Creation
2. If the Item is available on the Price List , then scroll right on the Item Setup line and check the         Start Date and End Date on the price list line. Ensure that the line is not end dated and the start Date if available is less than the Order Pricing Date


If there is an issue with the pricing dates , correct it and re-try booking the order

3. If the price list Line setup is correct then check for the Qualifier Setup on the Price List by clicking on the Qualifier Tab
   

The Qualifiers are used to specify the conditions which Govern if this price list should be Selected or not for the Order Lines pricing
An important thing to know here is the Grouping number
Records of the Grouping number will be ANDed with each other and records of different Grouping  Number will follow an OR condition
An important thing to note here is about Grouping Number : -1 , a grouping number of -1 will always be included in the condition formation and will be ANDed with the conditions of other Grouping numbers

Many a times the Price List Qualifiers fail and give an issue in Order Line Pricing

Tables storing Price list information :

QP_LIST_HEADERS --> Price List Header information
QP_LIST_LINES --> Price details
QP_PRICING_ATRRIBUTES --> Item details

Below SQL can be used to check item availability on a price-list

select qlh.name,msib.segment1,qll.operand
  from apps.qp_list_headers qlh,
           apps.qp_list_lines qll,
           apps.qp_pricing_attributes qpa,
           apps.mtl_system_items_b msib
 where qlh.name = 'PRICE_LIST_NAME'
 and qlh.list_header_id = qpa.list_header_id
 and qpa.product_attr_value = msib.inventory_item_id
 and msib.organization_id = :WAREHOUSE_ID
 and msib.segment1 = 'ITEM_NUMBER'
 and qpa.list_line_id = qll.list_line_id;