In general, we manage tax calculation for products and adjustments (only for
shipping and promotions).
As we have TaxAuthorityRateProduct in OFBiz to manage the taxing of
products, so why not to have the same system for adjustments?
I propose the solution to have the TaxAuthorityRateAdjustment entity, who is
related in similar order to TaxAuthority.
TaxAuthorityRateAdjustment will have the following fields:

*Tax type*   (Sales Tax, etc)
*Store ID*
*Catetgory*  (empty category means all categories)
Title Transfer   ???  (I do not know, what can you suggest?)
Min Item Pirce  ??? (I do not know, what can you suggest?)
Min Purchase Price  ???? (I do not know, what can you suggest?)
*Tax Percentage *
*From Date *
*Thru Date*
*Description*

The settings will be placed in the separate tab near to "Product rates" (Tax
Authority settings).
The UI is very similar!

RE: TaxAuthorityRateAdjustment 
we should retire 
*Tax Shipping*
*Tax Promotions*
because they look more like a hack.


The tax calculation service must be reworked,

<service name="calcTax" engine="java"
        location="org.ofbiz.accounting.tax.TaxAuthorityServices"
invoke="rateProductTaxCalc">
       <description>Tax Authority Rate Product Calc Service</description>
       <implements service="calcTaxInterface"/>
</service>

   <service name="calcTaxInterface" engine="interface" location=""
invoke="">
       <description>Tax Calc Service Interface</description>
       <attribute name="productStoreId" type="String" mode="IN"
optional="true"></attribute>
       <attribute name="facilityId" type="String" mode="IN"
optional="true"></attribute>
       <attribute name="payToPartyId" type="String" mode="IN"
optional="true"/>
       <attribute name="billToPartyId" type="String" mode="IN"
optional="true"></attribute>
       <attribute name="itemProductList" type="java.util.List" mode="IN"
optional="false"></attribute>
       <attribute name="itemAmountList" type="java.util.List" mode="IN"
optional="false"></attribute>
       <attribute name="itemPriceList" type="java.util.List" mode="IN"
optional="false"></attribute>
       <attribute name="itemQuantityList" type="java.util.List" mode="IN"
optional="true"></attribute>
       <attribute name="itemShippingList" type="java.util.List" mode="IN"
optional="true"></attribute>
*       <attribute name="orderShippingAmount" type="BigDecimal" mode="IN"
optional="true"/>
       <attribute name="orderPromotionsAmount" type="BigDecimal" mode="IN"
optional="true"/>
*       <attribute name="shippingAddress"
type="org.ofbiz.entity.GenericValue" mode="IN" optional="true"/>
       <attribute name="orderAdjustments" type="java.util.List" mode="OUT"
optional="false"></attribute>
       <attribute name="itemAdjustments" type="java.util.List" mode="OUT"
optional="false"></attribute>
   </service>

This interface must have /OrderAdjustment/ list as IN parameter. 

That is my draft solution.
What do you think about this?

--
View this message in context: 
http://ofbiz.135035.n4.nabble.com/Tax-calculation-for-all-order-adjustments-tp4119597p4152813.html
Sent from the OFBiz - User mailing list archive at Nabble.com.

Reply via email to