Author: mridulpathak
Date: Sat Apr 16 13:25:59 2016
New Revision: 1739457

URL: http://svn.apache.org/viewvc?rev=1739457&view=rev
Log:
[OFBIZ-7008] Support to add condition for Geo Location in Promo Engine. Thanks 
Vishal Chhabria for contribution.

Modified:
    
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/product/ProductPromoWorker.java
    ofbiz/trunk/applications/product/data/ProductTypeData.xml
    ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml

Modified: 
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/product/ProductPromoWorker.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/product/ProductPromoWorker.java?rev=1739457&r1=1739456&r2=1739457&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/product/ProductPromoWorker.java
 (original)
+++ 
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/product/ProductPromoWorker.java
 Sat Apr 16 13:25:59 2016
@@ -1134,7 +1134,6 @@ public class ProductPromoWorker {
             if (partyId != null && UtilValidate.isNotEmpty(condValue)) {
                 // if a PartyRole exists for this partyId and the specified 
roleTypeId
                 GenericValue partyRole = 
EntityQuery.use(delegator).from("PartyRole").where("partyId", partyId, 
"roleTypeId", condValue).cache(true).queryOne();
-
                 // then 0 (equals), otherwise 1 (not equals)
                 if (partyRole != null) {
                     compareBase = Integer.valueOf(0);
@@ -1144,6 +1143,24 @@ public class ProductPromoWorker {
             } else {
                 compareBase = Integer.valueOf(1);
             }
+        } else if ("PPIP_GEO_ID".equals(inputParamEnumId)) {
+            compareBase = Integer.valueOf(1);
+            GenericValue shippingAddress = cart.getShippingAddress();
+            if (UtilValidate.isNotEmpty(condValue) && 
UtilValidate.isNotEmpty(shippingAddress)) {
+                if(condValue.equals(shippingAddress.getString("countryGeoId")) 
|| condValue.equals(shippingAddress.getString("countyGeoId")) 
+                        || 
condValue.equals(shippingAddress.getString("postalCodeGeoId")) || 
condValue.equals(shippingAddress.getString("stateProvinceGeoId"))) {
+                    compareBase = Integer.valueOf(0);
+                } else {
+                    List<GenericValue> geoAssocList = 
EntityQuery.use(delegator).from("GeoAssoc").where("geoIdTo", 
condValue).queryList();
+                    for (GenericValue geo : geoAssocList) {
+                        
if(geo.get("geoId").equals(shippingAddress.getString("countryGeoId")) || 
geo.get("geoId").equals(shippingAddress.getString("countyGeoId")) || 
geo.get("geoId").equals(shippingAddress.getString("postalCodeGeoId"))
+                            || 
condValue.equals(shippingAddress.getString("stateProvinceGeoId"))) {
+                            compareBase = Integer.valueOf(0);
+                            break;
+                        }
+                    }
+                }
+            }
         } else if ("PPIP_ORDER_TOTAL".equals(inputParamEnumId)) {
             if (UtilValidate.isNotEmpty(condValue)) {
                 BigDecimal orderSubTotal = cart.getSubTotalForPromotions();

Modified: ofbiz/trunk/applications/product/data/ProductTypeData.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/data/ProductTypeData.xml?rev=1739457&r1=1739456&r2=1739457&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/data/ProductTypeData.xml (original)
+++ ofbiz/trunk/applications/product/data/ProductTypeData.xml Sat Apr 16 
13:25:59 2016
@@ -410,6 +410,7 @@ under the License.
     <Enumeration description="List Price minus Unit Price (Percent)" 
enumCode="LPMUP_PER" enumId="PPIP_LPMUP_PER" sequenceId="15" 
enumTypeId="PROD_PROMO_IN_PARAM"/>
     <Enumeration description="Shipping Total" enumCode="ORDER_SHIP_TOTAL" 
enumId="PPIP_ORDER_SHIPTOTAL" sequenceId="16" enumTypeId="PROD_PROMO_IN_PARAM"/>
     <Enumeration description="Call Service" enumCode="SERVICE" 
enumId="PPIP_SERVICE" sequenceId="17" enumTypeId="PROD_PROMO_IN_PARAM"/>
+    <Enumeration description="Shipping Destination" enumCode="GEO_ID" 
enumId="PPIP_GEO_ID" sequenceId="18" enumTypeId="PROD_PROMO_IN_PARAM"/>
 
     <EnumerationType description="Product Promotion Condition" 
enumTypeId="PROD_PROMO_COND" hasTable="N" parentTypeId="PROD_PROMO"/>
     <!-- old style very technical ...

Modified: ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml?rev=1739457&r1=1739456&r2=1739457&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml (original)
+++ ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml Sat Apr 16 
13:25:59 2016
@@ -1168,6 +1168,8 @@ under the License.
         <promoText><![CDATA[Spend more than $1000 in any 12 months on our 
fabulous Widgets and Gizmos and get a 5% discount.]]></promoText>
     </ProductPromo>
     <ProductPromo productPromoId="9020" promoName="Test Promotion Recurrence - 
Happy hour" promoText="Get 1 Free [WG-1111], between 15:00 - 18:00 at weekdays" 
userEntered="Y" showToCustomer="Y" requireCode="N" useLimitPerOrder="1" 
createdDate="2008-01-01 12:00:00.0" createdByUserLogin="admin" 
lastModifiedDate="2008-01-01 12:00:00.0" lastModifiedByUserLogin="admin"/>
+    <ProductPromo productPromoId="10001" promoName=“Test Promotion - Free 
Shipping in Utah" promoText="Free Shipping in Utah" requireCode="N" 
showToCustomer="Y" useLimitPerOrder="1" userEntered="Y"/>
+
     <ProductPromoRule productPromoId="9000" productPromoRuleId="01" 
ruleName="Rule 1: Free Widget"/>
     <ProductPromoRule productPromoId="9010" productPromoRuleId="01" 
ruleName="Test Percent off rule"/>
     <ProductPromoRule productPromoId="9011" productPromoRuleId="01" 
ruleName="Test percent off order"/>
@@ -1180,6 +1182,8 @@ under the License.
     <ProductPromoRule productPromoId="9018" productPromoRuleId="01" 
ruleName="GWP for Gizmos Only Not Counted"/>
     <ProductPromoRule productPromoId="9019" productPromoRuleId="01" 
ruleName="Percent off for Ordered Sub-Total History"/>
     <ProductPromoRule productPromoId="9020" productPromoRuleId="01" 
ruleName="Test Promotion Recurrence"/>
+    <ProductPromoRule productPromoId="10001" productPromoRuleId="00001" 
ruleName=“Test Promotion - Free Shipping in Utah"/>
+
     <ProductPromoAction productPromoId="9000" productPromoRuleId="01" 
productPromoActionSeqId="01" productPromoActionEnumId="PROMO_GWP" 
orderAdjustmentTypeId="PROMOTION_ADJUSTMENT" quantity="1.0" 
productId="WG-1111"/>
     <ProductPromoAction productPromoId="9010" productPromoRuleId="01" 
productPromoActionSeqId="01" productPromoActionEnumId="PROMO_PROD_DISC" 
orderAdjustmentTypeId="PROMOTION_ADJUSTMENT" quantity="1.0" amount="20.0"/>
     <ProductPromoAction productPromoId="9011" productPromoRuleId="01" 
productPromoActionSeqId="01" productPromoActionEnumId="PROMO_ORDER_PERCENT" 
orderAdjustmentTypeId="PROMOTION_ADJUSTMENT" amount="10.0"/>
@@ -1192,6 +1196,8 @@ under the License.
     <ProductPromoAction productPromoId="9018" productPromoRuleId="01" 
productPromoActionSeqId="01" productPromoActionEnumId="PROMO_GWP" 
orderAdjustmentTypeId="PROMOTION_ADJUSTMENT" quantity="1.0" 
productId="GZ-1006"/>
     <ProductPromoAction productPromoId="9019" productPromoRuleId="01" 
productPromoActionSeqId="01" productPromoActionEnumId="PROMO_ORDER_PERCENT" 
orderAdjustmentTypeId="PROMOTION_ADJUSTMENT" amount="5.0"/>
     <ProductPromoAction productPromoId="9020" productPromoRuleId="01" 
productPromoActionSeqId="01" productPromoActionEnumId="PROMO_GWP" 
orderAdjustmentTypeId="PROMOTION_ADJUSTMENT" quantity="1.0" 
productId="WG-1111"/>
+    <ProductPromoAction amount="100.000000" 
orderAdjustmentTypeId="PROMOTION_ADJUSTMENT" 
productPromoActionEnumId="PROMO_SHIP_CHARGE" productPromoActionSeqId="10000" 
productPromoId="10001" productPromoRuleId="00001" useCartQuantity="N"/>
+
     <ProductPromoCond productPromoId="9000" productPromoRuleId="01" 
productPromoCondSeqId="01" inputParamEnumId="PPIP_ORDER_TOTAL" 
operatorEnumId="PPC_GT" condValue="100"/>
     <ProductPromoCond productPromoId="9012" productPromoRuleId="01" 
productPromoCondSeqId="01" inputParamEnumId="PPIP_ORDER_TOTAL" 
operatorEnumId="PPC_GTE" condValue="50"/>
     <ProductPromoCond productPromoId="9013" productPromoRuleId="01" 
productPromoCondSeqId="01" inputParamEnumId="PPIP_PRODUCT_QUANT" 
operatorEnumId="PPC_EQ" condValue="3"/>
@@ -1200,6 +1206,8 @@ under the License.
     <ProductPromoCond productPromoId="9018" productPromoRuleId="01" 
productPromoCondSeqId="01" inputParamEnumId="PPIP_PRODUCT_TOTAL" 
operatorEnumId="PPC_GTE" condValue="150"/>
     <ProductPromoCond productPromoId="9019" productPromoRuleId="01" 
productPromoCondSeqId="01" inputParamEnumId="PPIP_ORST_HIST" 
operatorEnumId="PPC_GTE" condValue="1000" otherValue="12"/>
     <ProductPromoCond productPromoId="9020" productPromoRuleId="01" 
productPromoCondSeqId="01" inputParamEnumId="PPIP_RECURRENCE" 
operatorEnumId="PPC_EQ" condValue="205"/>
+    <ProductPromoCond productPromoId="10001" productPromoRuleId="01" 
productPromoCondSeqId="01" condValue="UT" inputParamEnumId="PPIP_GEO_ID" 
operatorEnumId="PPC_EQ" />
+
     <ProductPromoCategory productPromoId="9013" productPromoRuleId="_NA_" 
productPromoActionSeqId="_NA_" productPromoCondSeqId="_NA_" 
productCategoryId="200" andGroupId="_NA_" productPromoApplEnumId="PPPA_INCLUDE" 
includeSubCategories="Y"/>
     <ProductPromoCategory productPromoId="9013" productPromoRuleId="_NA_" 
productPromoActionSeqId="_NA_" productPromoCondSeqId="_NA_" 
productCategoryId="201" andGroupId="_NA_" productPromoApplEnumId="PPPA_EXCLUDE" 
includeSubCategories="Y"/>
     <ProductPromoCategory productPromoId="9013" productPromoRuleId="_NA_" 
productPromoActionSeqId="_NA_" productPromoCondSeqId="_NA_" 
productCategoryId="20111" andGroupId="_NA_" 
productPromoApplEnumId="PPPA_ALWAYS" includeSubCategories="N"/>
@@ -1229,6 +1237,7 @@ under the License.
     <ProductStorePromoAppl productStoreId="9000" productPromoId="9018" 
fromDate="2001-05-13 12:00:00.0" sequenceNum="1"/>
     <ProductStorePromoAppl productStoreId="9000" productPromoId="9019" 
fromDate="2001-05-13 12:00:00.0" sequenceNum="1"/>
     <ProductStorePromoAppl productStoreId="9000" productPromoId="9020" 
fromDate="2001-05-13 12:00:00.0" sequenceNum="1"/>
+    <ProductStorePromoAppl productStoreId="9000" productPromoId="10001" 
fromDate="2016-04-16 13:59:19.748" sequenceNum="1"/>
 
     <ProductPromo productPromoId="9021" promoName="Test Products for Special 
Promo Price" promoText="With special code [9021] get products in the Featured 
Products category for their special promotion price." userEntered="Y" 
showToCustomer="Y" requireCode="Y" createdDate="2001-05-13 12:00:00.0" 
createdByUserLogin="admin" lastModifiedDate="2001-05-13 12:00:00.0" 
lastModifiedByUserLogin="admin"/>
     <ProductPromoCode productPromoCodeId="9021" productPromoId="9021" 
userEntered="Y" requireEmailOrParty="N" createdDate="2001-05-13 12:00:00.0" 
createdByUserLogin="admin" lastModifiedDate="2001-05-13 12:00:00.0" 
lastModifiedByUserLogin="admin"/>


Reply via email to