Hi David,

I just read by chance in this thread 
http://www.nabble.com/Percentage-discounts-%28code-snippet-included%29-to6737939.html#a6745868
<<Iain,
Have you tried this out and checked other areas? My guess is that
this would mess a few things up... The sourcePercentage is meant for
information only and should already be accounted for an adjustment
amount, which shouldn't be recalculated because this is not meant to
represent all of the information that goes into that.
-David >>

Do you think there could be any problems with the code below. I think it's ok because at this stage all calculations are already done.

Thanks

Jacques

Author: jleroux
Date: Sun Feb 17 13:41:49 2008
New Revision: 628552

URL: http://svn.apache.org/viewvc?rev=628552&view=rev
Log:
Fix "Sales percent discount doesn't show up in Journal" 
(https://issues.apache.org/jira/browse/OFBIZ-1608) - OFBIZ-1608

Modified:
   
ofbiz/branches/release4.0/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java

Modified: 
ofbiz/branches/release4.0/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release4.0/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java?rev=628552&r1=628551&r2=628552&view=diff
==============================================================================
--- 
ofbiz/branches/release4.0/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java
 (original)
+++ 
ofbiz/branches/release4.0/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java
 Sun Feb 17 13:41:49 2008
@@ -735,6 +735,29 @@
        if (cart != null) {
            double taxAmount = cart.getTotalSalesTax();
            double total = cart.getGrandTotal();
+            List adjustments = cart.getAdjustments();
+
+            if (adjustments != null && adjustments.size() > 0) {
+                Iterator iter = adjustments.iterator();
+                while(iter.hasNext()){
+                    GenericValue orderAdjustment = (GenericValue) iter.next();
+                    Double amount = orderAdjustment.getDouble("amount");
+                    Double sourcePercentage = 
orderAdjustment.getDouble("sourcePercentage");
+                    if (UtilValidate.isNotEmpty(sourcePercentage)) {
+                        double percentage = 
sourcePercentage.doubleValue()/100.0; // sourcePercentage is negative
+                        amount = new Double(total / ((1 + percentage) / 
percentage));
+                    }
+                    XModel adjustmentLine = Journal.appendNode(model, "tr", 
"adjustment", "");
+                    Journal.appendNode(adjustmentLine, "td", "sku", "");
+                    Journal.appendNode(adjustmentLine, "td", "desc",
+                            UtilProperties.getMessage("pos", 
"(SalesDiscount)",defaultLocale));
+                    Journal.appendNode(adjustmentLine, "td", "qty", "");
+                    if (UtilValidate.isNotEmpty(amount)) {
+                        Journal.appendNode(adjustmentLine, "td", "price", 
UtilFormatOut.formatPrice(amount));
+                    }
+                    Journal.appendNode(adjustmentLine, "td", "index", "-1");
+                }
+            }

            XModel taxLine = Journal.appendNode(model, "tr", "", "");
            Journal.appendNode(taxLine, "td", "sku", "");




Reply via email to