Author: surajk
Date: Sat Aug 18 08:34:18 2018
New Revision: 1838320

URL: http://svn.apache.org/viewvc?rev=1838320&view=rev
Log:
Improved: Added support to calculate deposit price as well while creating 
shopping cart item.
(OFBIZ-7482)

Modified:
    
ofbiz/ofbiz-framework/trunk/applications/datamodel/data/seed/OrderSeedData.xml
    
ofbiz/ofbiz-framework/trunk/applications/datamodel/data/seed/ProductSeedData.xml
    
ofbiz/ofbiz-framework/trunk/applications/order/src/main/java/org/apache/ofbiz/order/shoppingcart/ShoppingCartItem.java

Modified: 
ofbiz/ofbiz-framework/trunk/applications/datamodel/data/seed/OrderSeedData.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/datamodel/data/seed/OrderSeedData.xml?rev=1838320&r1=1838319&r2=1838320&view=diff
==============================================================================
--- 
ofbiz/ofbiz-framework/trunk/applications/datamodel/data/seed/OrderSeedData.xml 
(original)
+++ 
ofbiz/ofbiz-framework/trunk/applications/datamodel/data/seed/OrderSeedData.xml 
Sat Aug 18 08:34:18 2018
@@ -49,6 +49,7 @@ under the License.
     <OrderAdjustmentType description="Additional Feature" hasTable="N" 
orderAdjustmentTypeId="ADDITIONAL_FEATURE"/>
     <OrderAdjustmentType description="Warranty" hasTable="N" 
orderAdjustmentTypeId="WARRANTY_ADJUSTMENT"/>
     <OrderAdjustmentType description="Marketing Package Adjustment" 
hasTable="N" orderAdjustmentTypeId="MKTG_PKG_AUTO_ADJUST"/>
+    <OrderAdjustmentType description="Deposit" hasTable="N" 
orderAdjustmentTypeId="DEPOSIT_ADJUSTMENT"/>
 
     <OrderBlacklistType orderBlacklistTypeId="BLACKLIST_ADDRESS" 
description="Addresss"/>
     <OrderBlacklistType orderBlacklistTypeId="BLACKLIST_CREDITCARD" 
description="Credit Card"/>

Modified: 
ofbiz/ofbiz-framework/trunk/applications/datamodel/data/seed/ProductSeedData.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/datamodel/data/seed/ProductSeedData.xml?rev=1838320&r1=1838319&r2=1838320&view=diff
==============================================================================
--- 
ofbiz/ofbiz-framework/trunk/applications/datamodel/data/seed/ProductSeedData.xml
 (original)
+++ 
ofbiz/ofbiz-framework/trunk/applications/datamodel/data/seed/ProductSeedData.xml
 Sat Aug 18 08:34:18 2018
@@ -281,6 +281,7 @@ under the License.
     <ProductPriceType description="Minimum Order Price" 
productPriceTypeId="MINIMUM_ORDER_PRICE"/>
     <ProductPriceType description="Shipping Allowance Price" 
productPriceTypeId="SHIPPING_ALLOWANCE"/>
 
+    <ProductPricePurpose description="Deposit price" 
productPricePurposeId="DEPOSIT"/>
     <ProductPricePurpose description="Purchase/Initial" 
productPricePurposeId="PURCHASE"/>
     <ProductPricePurpose description="Recurring Charge" 
productPricePurposeId="RECURRING_CHARGE"/>
     <ProductPricePurpose description="Usage Charge" 
productPricePurposeId="USAGE_CHARGE"/>

Modified: 
ofbiz/ofbiz-framework/trunk/applications/order/src/main/java/org/apache/ofbiz/order/shoppingcart/ShoppingCartItem.java
URL: 
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/order/src/main/java/org/apache/ofbiz/order/shoppingcart/ShoppingCartItem.java?rev=1838320&r1=1838319&r2=1838320&view=diff
==============================================================================
--- 
ofbiz/ofbiz-framework/trunk/applications/order/src/main/java/org/apache/ofbiz/order/shoppingcart/ShoppingCartItem.java
 (original)
+++ 
ofbiz/ofbiz-framework/trunk/applications/order/src/main/java/org/apache/ofbiz/order/shoppingcart/ShoppingCartItem.java
 Sat Aug 18 08:34:18 2018
@@ -1038,6 +1038,7 @@ public class ShoppingCartItem implements
             ProductPromoWorker.doPromotions(cart, dispatcher);
         }
 
+        calcDepositAdjustments();
         if (!"PURCHASE_ORDER".equals(cart.getOrderType())) {
             // store the auto-save cart
             if (triggerExternalOps && 
ProductStoreWorker.autoSaveCart(delegator, productStoreId)) {
@@ -1061,6 +1062,33 @@ public class ShoppingCartItem implements
         }
     }
 
+    public void calcDepositAdjustments() {
+        List<GenericValue>itemAdjustments = this.getAdjustments();
+        try {
+            GenericValue depositAmount = 
EntityQuery.use(delegator).from("ProductPrice").where("productId", 
this.getProductId(), "productPricePurposeId", "DEPOSIT", "productPriceTypeId", 
"DEFAULT_PRICE").filterByDate().queryFirst();
+            if (UtilValidate.isNotEmpty(depositAmount)) {
+                Boolean updatedDepositAmount = false;
+                BigDecimal adjustmentAmount = 
depositAmount.getBigDecimal("price").multiply(this.getQuantity(), 
generalRounding);
+                // itemAdjustments is a reference so directly setting updated 
amount to the same.
+                    for(GenericValue itemAdjustment : itemAdjustments) {
+                    
if("DEPOSIT_ADJUSTMENT".equals(itemAdjustment.getString("orderAdjustmentTypeId")))
 {
+                            itemAdjustment.set("amount", adjustmentAmount);
+                            updatedDepositAmount = true;
+                        }
+                }
+                if (!updatedDepositAmount) {
+                    GenericValue orderAdjustment = 
delegator.makeValue("OrderAdjustment");
+                    orderAdjustment.set("orderAdjustmentTypeId", 
"DEPOSIT_ADJUSTMENT");
+                    orderAdjustment.set("description", "Surcharge Adjustment");
+                    orderAdjustment.set("amount", adjustmentAmount);
+                    this.addAdjustment(orderAdjustment);
+                }
+            }
+        } catch (GenericEntityException e){
+            Debug.logError("Error in fetching deposite price details!!", 
module);
+        }
+    }
+
     public void updatePrice(LocalDispatcher dispatcher, ShoppingCart cart) 
throws CartItemModifyException {
         // set basePrice using the calculateProductPrice service
         if (_product != null && isModifiedPrice == false) {


Reply via email to