You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by mb...@apache.org on 2017/08/18 20:18:59 UTC

svn commit: r1805466 - in /ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting: period/PeriodServices.java tax/TaxAuthorityServices.java

Author: mbrohl
Date: Fri Aug 18 20:18:58 2017
New Revision: 1805466

URL: http://svn.apache.org/viewvc?rev=1805466&view=rev
Log:
Improved: Fixing defects reported by FindBugs, packages 
org.apache.ofbiz.accounting.period and 
org.apache.ofbiz.accounting.tax.
(OFBIZ-9527)

Thanks Kyra Pritzel-Hentley for reporting and providing the patch.

Modified:
    ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/period/PeriodServices.java
    ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/tax/TaxAuthorityServices.java

Modified: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/period/PeriodServices.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/period/PeriodServices.java?rev=1805466&r1=1805465&r2=1805466&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/period/PeriodServices.java (original)
+++ ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/period/PeriodServices.java Fri Aug 18 20:18:58 2017
@@ -39,7 +39,7 @@ import org.apache.ofbiz.service.ServiceU
 
 public class PeriodServices {
     
-    public static String module = PeriodServices.class.getName();
+    public static final String module = PeriodServices.class.getName();
     public static final String resource = "AccountingUiLabels";
 
     /* find the date of the last closed CustomTimePeriod, or, if none available, the earliest date available of any

Modified: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/tax/TaxAuthorityServices.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/tax/TaxAuthorityServices.java?rev=1805466&r1=1805465&r2=1805466&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/tax/TaxAuthorityServices.java (original)
+++ ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/tax/TaxAuthorityServices.java Fri Aug 18 20:18:58 2017
@@ -302,44 +302,8 @@ public class TaxAuthorityServices {
         EntityCondition taxAuthoritiesCond = EntityCondition.makeCondition(taxAuthCondOrList, EntityOperator.OR);
 
         try {
-            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<String> productCategoryIdSet = new HashSet<String>();
-                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<GenericValue> pcmList = EntityQuery.use(delegator).select("productCategoryId", "fromDate", "thruDate")
-                        .from("ProductCategoryMember")
-                        .where(productIdCond).cache().filterByDate().queryList();
-                for (GenericValue pcm : pcmList) {
-                    productCategoryIdSet.add(pcm.getString("productCategoryId"));
-                }
-
-                if (productCategoryIdSet.size() == 0) {
-                    productCategoryCond = EntityCondition.makeCondition("productCategoryId", EntityOperator.EQUALS, null);
-                } else {
-                    productCategoryCond = EntityCondition.makeCondition(
-                            EntityCondition.makeCondition("productCategoryId", EntityOperator.EQUALS, null),
-                            EntityOperator.OR,
-                            EntityCondition.makeCondition("productCategoryId", EntityOperator.IN, productCategoryIdSet));
-                }
-            } else {
-                productCategoryCond = EntityCondition.makeCondition("productCategoryId", EntityOperator.EQUALS, null);
-            }
+            EntityCondition productCategoryCond;
+            productCategoryCond = setProductCategoryCond(delegator, product);
 
             // FIXME handles shipping and promo tax. Simple solution, see https://issues.apache.org/jira/browse/OFBIZ-4160 for a better one 
             if (product == null && shippingAmount != null) {
@@ -348,11 +312,7 @@ public class TaxAuthorityServices {
                             EntityOperator.OR,
                             EntityCondition.makeCondition("taxShipping", EntityOperator.EQUALS, "Y"));
 
-                if (productCategoryCond != null) {
-                    productCategoryCond = EntityCondition.makeCondition(productCategoryCond,
-                            EntityOperator.OR,
-                            taxShippingCond);
-                }
+                    productCategoryCond = EntityCondition.makeCondition(productCategoryCond, EntityOperator.OR, taxShippingCond);
             }
 
             if (product == null && orderPromotionsAmount != null) {
@@ -361,11 +321,7 @@ public class TaxAuthorityServices {
                             EntityOperator.OR,
                             EntityCondition.makeCondition("taxPromotions", EntityOperator.EQUALS, "Y"));
 
-                if (productCategoryCond != null) {
-                    productCategoryCond = EntityCondition.makeCondition(productCategoryCond,
-                            EntityOperator.OR,
-                            taxOrderPromotionsCond);
-                }
+                productCategoryCond = EntityCondition.makeCondition(productCategoryCond, EntityOperator.OR, taxOrderPromotionsCond);
             }
 
             // build the main condition clause
@@ -552,6 +508,60 @@ public class TaxAuthorityServices {
         return adjustments;
     }
 
+    /**
+     * Private helper method which determines, based on the state of the
+     * product, how the ProdCondition should be set for the main condition.
+     * 
+     * @param delegator
+     * @param product
+     *            which may be null
+     * @return non-null Condition
+     * @throws GenericEntityException
+     */
+    private static EntityCondition setProductCategoryCond(Delegator delegator, GenericValue product)
+            throws GenericEntityException {
+
+        if (product == null) {
+            return EntityCondition.makeCondition("productCategoryId", EntityOperator.EQUALS, 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<String> productCategoryIdSet = new HashSet<String>();
+        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<GenericValue> pcmList = EntityQuery.use(delegator).select("productCategoryId", "fromDate", "thruDate")
+                .from("ProductCategoryMember").where(productIdCond).cache().filterByDate().queryList();
+        for (GenericValue pcm : pcmList) {
+            productCategoryIdSet.add(pcm.getString("productCategoryId"));
+        }
+
+        if (productCategoryIdSet.size() == 0) {
+            return EntityCondition.makeCondition("productCategoryId", EntityOperator.EQUALS, null);
+        }
+        return EntityCondition.makeCondition(
+                EntityCondition.makeCondition("productCategoryId", EntityOperator.EQUALS, null), EntityOperator.OR,
+                EntityCondition.makeCondition("productCategoryId", EntityOperator.IN, productCategoryIdSet));
+
+    }
+
     private static void handlePartyTaxExempt(GenericValue adjValue, Set<String> billToPartyIdSet, String taxAuthGeoId, String taxAuthPartyId, BigDecimal taxAmount, Timestamp nowTimestamp, Delegator delegator) throws GenericEntityException {
         Debug.logInfo("Checking for tax exemption : " + taxAuthGeoId + " / " + taxAuthPartyId, module);
         List<EntityCondition> ptiConditionList = UtilMisc.<EntityCondition>toList(