Anonymous | Login
Project:
RSS
  
News | My View | View Issues | Roadmap | Summary

View Issue DetailsJump to Notes ] Issue History ] Print ]
ID
0042544
TypeCategorySeverityReproducibilityDate SubmittedLast Update
backport[Retail Modules] Web POSmajorhave not tried2019-12-12 19:182019-12-25 21:18
ReportermarvintmView Statuspublic 
Assigned Toranjith_qualiantech_com 
PrioritynormalResolutionfixedFixed in VersionRR19Q3.2
StatusclosedFix in branchFixed in SCM revisionabe46f59a942
ProjectionnoneETAnoneTarget VersionRR19Q3.2
OSAnyDatabaseAnyJava version
OS VersionDatabase versionAnt version
Product VersionSCM revision 
Review Assigned Toguilleaer
Regression levelProduction - Confirmed Stable
Regression date2019-01-16
Regression introduced in releaseRR19Q2
Regression introduced by commithttps://code.openbravo.com/erp/pmods/org.openbravo.retail.posterminal/rev/4cd21ae4e9d2 [^]
Triggers an Emergency PackNo
Summary

0042544: Precision problem when calculating prices for services

DescriptionThere is currently a problem in the precision of calculation of the prices for services using Service Price Rules functionality. The calculation is not properly applying the currency precision, which leads to wrong calculation result.
Steps To Reproduce- Define the POS precision of currency EURO to 0.
- In the back office, configure the service "Configuration" so that it implements a Service Price Rule of percentage 10 (and is marked as "Is Price Rule based").
- Define the price of GPS nano in the pricelist to 100, and the price of the Configuration service to 3.99.
- In the WebPOS, add a GPS Nano product.
- You will be shown the mandatory proposed services, and you will see that the "Configuration" service has price 4. This is wrong, it should have price 13.99 (3.99+10).
Proposed SolutionThe problem is the implementation of the following function:

function calculatePercentageAmount(
    product,
    amount,
    percentage,
    partialPrice,
    callback
  ) {
    var newprice,
      oldprice = partialPrice ? 0 : product.get('listPrice');
    newprice = OB.DEC.add(
      oldprice,
      OB.DEC.mul(amount, OB.DEC.div(percentage, 100))
    );
    callback(newprice);
  }

The division of the percentage by 100 is rounded before the result is then multiplied by the amount. This is not correct, only the final result should be rounded.
TagsNo tags attached.
Attached Files

- Relationships Relation Graph ] Dependency Graph ]
blocks defect 0042542 closedranjith_qualiantech_com Precision problem when calculating prices for services 

-  Notes
(0116347)
hgbot (developer)
2019-12-16 14:03

Repository: retail/backports/3.0RR19Q3.2/org.openbravo.retail.posterminal
Changeset: abe46f59a942a9fc2de152a7df0322de2cf3edcb
Author: Ranjith S R <ranjith <at> qualiantech.com>
Date: Mon Dec 16 18:33:33 2019 +0530
URL: http://code.openbravo.com/retail/backports/3.0RR19Q3.2/org.openbravo.retail.posterminal/rev/abe46f59a942a9fc2de152a7df0322de2cf3edcb [^]

Fixed issue 42544 : BigDecimal should be used to calculate percentage instead of DEC function

* If Precision is set as 0, DEC function will return invalid value for percentage calculation

---
M web/org.openbravo.retail.posterminal/js/utils/ob-utilitiesuipos.js
---

- Issue History
Date Modified Username Field Change
2019-12-12 19:21 marvintm Type defect => backport
2019-12-12 19:21 marvintm Target Version => RR19Q3.2
2019-12-16 14:03 hgbot Checkin
2019-12-16 14:03 hgbot Note Added: 0116347
2019-12-16 14:03 hgbot Status scheduled => resolved
2019-12-16 14:03 hgbot Resolution open => fixed
2019-12-16 14:03 hgbot Fixed in SCM revision => http://code.openbravo.com/retail/backports/3.0RR19Q3.2/org.openbravo.retail.posterminal/rev/abe46f59a942a9fc2de152a7df0322de2cf3edcb [^]
2019-12-25 21:18 guilleaer Review Assigned To => guilleaer
2019-12-25 21:18 guilleaer Status resolved => closed
2019-12-25 21:18 guilleaer Fixed in Version => RR19Q3.2


Copyright © 2000 - 2009 MantisBT Group
Powered by Mantis Bugtracker