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(