You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ja...@apache.org on 2010/12/17 09:02:36 UTC
svn commit: r1050304 -
/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/tax/TaxAuthorityServices.java
Author: jacopoc
Date: Fri Dec 17 08:02:36 2010
New Revision: 1050304
URL: http://svn.apache.org/viewvc?rev=1050304&view=rev
Log:
When tax rates are looked up for a product, if the product is a variant, the categories of the virtual are also considered in the lookup; this change fixes the issue where taxes are not applied to variant products even if they apply to the virtual.
Modified:
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/tax/TaxAuthorityServices.java
Modified: ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/tax/TaxAuthorityServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/tax/TaxAuthorityServices.java?rev=1050304&r1=1050303&r2=1050304&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/tax/TaxAuthorityServices.java (original)
+++ ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/tax/TaxAuthorityServices.java Fri Dec 17 08:02:36 2010
@@ -43,6 +43,7 @@ import org.ofbiz.entity.condition.Entity
import org.ofbiz.entity.condition.EntityOperator;
import org.ofbiz.entity.util.EntityUtil;
import org.ofbiz.party.contact.ContactMechWorker;
+import org.ofbiz.product.product.ProductWorker;
import org.ofbiz.service.DispatchContext;
import org.ofbiz.service.ServiceUtil;
@@ -314,9 +315,24 @@ public class TaxAuthorityServices {
EntityCondition productCategoryCond = null;
if (product != null) {
// find the tax categories associated with the product and filter by those, with an IN clause or some such
+ // if this product is variant, find the virtual product id and consider also the categories of the virtual
// question: get all categories, or just a special type? for now let's do all categories...
+ String virtualProductId = null;
+ if ("Y".equals(product.getString("isVariant"))) {
+ virtualProductId = ProductWorker.getVariantVirtualId(product);
+ }
Set productCategoryIdSet = FastSet.newInstance();
- List pcmList = delegator.findByAndCache("ProductCategoryMember", UtilMisc.toMap("productId", product.get("productId")));
+ EntityCondition productIdCond = null;
+ if (virtualProductId != null) {
+ productIdCond = EntityCondition.makeCondition(
+ EntityCondition.makeCondition("productId", EntityOperator.EQUALS, product.getString("productId")),
+ EntityOperator.OR,
+ EntityCondition.makeCondition("productId", EntityOperator.EQUALS, virtualProductId));
+
+ } else {
+ productIdCond = EntityCondition.makeCondition("productId", EntityOperator.EQUALS, product.getString("productId"));
+ }
+ List pcmList = delegator.findList("ProductCategoryMember", productIdCond, UtilMisc.toSet("productCategoryId"), null, null, true);
pcmList = EntityUtil.filterByDate(pcmList, true);
Iterator pcmIter = pcmList.iterator();
while (pcmIter.hasNext()) {