February 29th, 2008
One of the fundamental flaws in Oracle Order Management (OM) is the inability to include tax on freight and special charge modifiers that are setup in Advanced Pricing (QP). There’s just no way to do it out of the box. Even if you use the Oracle suggested work around, which is to add freight as a line item to a sales order, it’s still a manual process and defeats the purpose of being able to include and calculate freight automatically the way you can through a charge modifier.
Oracle does provide the ability to recognize freight as revenue, which in turn calculates tax on the charge, but this doesn’t happen until the order has been interfaced to Receivables (AR). For some corporations, that calculation needs to happen at the time of order entry. Additionally, some clients who utilize iPayment to authorize a credit card charge in OM and apply the fully transact the charge when the order is interfaced to AR will also encounter issues because the authorized amount, which doesn’t include the tax on freight, is less than the actual charge amount on the AR side, causing the credit card transaction to fail entirely.
Needless to say, it’s a pain, and a blatant functionality gap. However, with a slight customization, a semi-acceptable solution can be found by harnessing some of the functionalities available in Advanced Pricing.
Going back to Oracle’s recommended solution of adding an order line item for freight if it is to be taxed – the main issue with this work around is that it’s not automatically added to the order. For high-volume order entry environments, this is an absolute necessity. One of the great advantages of modifiers in Advanced Pricing is the ability to allow charges and adjustments to be automatically applied to an order based on qualifying events. This is an important piece of functionality that is lost using Oracle’s line item workaround.
However, there is a functionality in Advanced Pricing, often not used, that can automate the entry of an order line. The “get item” functionality under the “Promotion” modifier type allows you to add items to a sales order based on the qualifiers you set. This functionality is typically used for a “buy one, get one free” scenario, but can be used in this situation to add a freight order line automatically to a sales order.
The only setback to this functionality is that the pricing capabilities are limited. When setting up a “get item” modifier, you cannot attach a formula. The functionality only allows you to obtain a fixed list price from a price list or generate a new price. This may be OK if you’re organization charges a fixed amount for freight, but for those who calculate freight based on the selling amount, this is very bad. Out of the box, there is no way to get around this. Even applying a modifier on top of the order line that is added by the “get item” modifier doesn’t work, because when the line item is added, the Calculate Price Flag is set to “Partial Pricing”. What “Partial Pricing” means is that it will obtain the price that is established in the “get item” setup, but it will neglect any modifiers or adjustments applied to that order line. The only way around this is to manually set the Calculate Price Flag to “Calculate Price”, then re-price the line.
While setting the Calculate Price Flag manually works, this defeats the purpose of adding the freight line automatically to the order. The point of this exercise is to add the line with the price automatically calculated so that there’s no need for the users to perform this step in a high volume order entry environment. This is where that “slight” customization as I mentioned earlier comes in.
If setting the Calculate Price Flag to “Calculate Price” after the line has been automatically added solves the issue, then why not have a concurrent request, which runs as often as the business desires, perform this action so that the price of the freight order line is correctly calculated? This is exactly what we did with my last client and it ended up working quite well, but with one little exception.
Being that this is a line item, there is no way to prorate the freight in the event there is partial or multiple shipments for a given order. Depending on the nature of your business, this may not be acceptable. There’s a couple of way to address this:
- Restrict partial shipments from occurring by enabling header level invoicing or utilizing fulfillment sets. This will ensure that all line items are fulfilled before issuing an invoice. However, if you’re organization requires that an invoice be generated for each shipment, this would not be an acceptable solution.
- If the first option doesn’t fit your business model, you can place an automatic invoicing hold on the freight line item that is only released when the entire order is shipped. What this does is allow items that are shipped partial to generate an invoice, but delays the billing of freight until the last shipment is made. The automatic hold can be done as a hold source, but releasing the hold would need to be another one of those “slight” customizations you would need. However, if you’re organization needs to include freight charges with every delivery, this solution wouldn’t work for you either.
- If neither of the above option is acceptable, and you need the whole shebang, than a more complex customization is needed that splits the freight item for each shipment. So for example, you have a 10 line item sales order where your freight charge is $50. During the first shipment, 5 of the 10 lines are shipped out there door. What the customization would do is split the freight line item into two lines 0.5 quantities, which in affect would split the price in half. Only one of the split lines would be processed with the shipment, the other split line would be placed on hold. For this to happen, you’re item would need to be setup as “OM Divisible” enabled, which indicates that fractional quantities are allowed.
Getting around this issue is not easy, but can be possible. If you’d like to obtain a copy of my code which resolves the pricing issues with adding line items automatically using the “get item” functionality, feel free to contact me.
Also, to find out how to calculate freight, charges, or adjustments based on the total order amount, check out this article.