Openbravo Issue Tracking System - Retail Modules | ||||||||||||
View Issue Details | ||||||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | |||||||
0033986 | Retail Modules | Web POS | public | 2016-09-08 23:22 | 2016-09-26 23:09 | |||||||
Reporter | guilleaer | |||||||||||
Assigned To | Retail | |||||||||||
Priority | high | Severity | major | Reproducibility | always | |||||||
Status | closed | Resolution | fixed | |||||||||
Platform | OS | 5 | OS Version | |||||||||
Product Version | ||||||||||||
Target Version | RR16Q2.3 | Fixed in Version | RR16Q2.3 | |||||||||
Merge Request Status | ||||||||||||
Review Assigned To | guilleaer | |||||||||||
OBNetwork customer | ||||||||||||
Support ticket | ||||||||||||
Regression level | ||||||||||||
Regression date | ||||||||||||
Regression introduced in release | ||||||||||||
Regression introduced by commit | ||||||||||||
Triggers an Emergency Pack | No | |||||||||||
Summary | 0033986: Docuemnt level taxes calculation fails when tax rate has decimals | |||||||||||
Description | Document level tax calculations done by web POS are wrong when the tax rate has decimals. It happens because the algorithm is rounding earlier than expected. | |||||||||||
Steps To Reproduce | Create a tax with a rate of 21.5 (you can modify ENTREGAS IVA 21% rate's) Open web POS in a terminal using price not including taxes Add a product - Avalanche Transceiver (150.50) Realize that taxes calculations are wrong - Tax amount is 27.14 but it should be 26.63 - Net should be 123.87 but it is 123.36 This happens because when executing the algorithm, we are rounding. In this case, the algorithm first calculates the total gross 150.5 Then the net is recalculated with the following expression: newNet = round(totalGross / (1+rate)) The problem is that wrongly we are doing the following newNet = round(totalGross / round(1+rate)) So in this particular case, newNet calculation is wrong: wrong -> newNet = round(150.5 / round(1+0.215)) wrong -> newNet = round(150.5 / 1+1.22) wrong -> newNet = round(123.3606557) -> 123.36 correct -> newNet = round(150.5 / 1+1.215) correct -> newNet = round(123.8683128) -> 123.87 Because tax amount is based on net, it is also wrong taxamount = total - newNet Wrong -> 150.5 - 123.36 = 27.14 Correct -> 150.5 - 123.87 = 26.63 | |||||||||||
Proposed Solution | round in the correct place when net is being calculated do newNet = round(totalGross / (1+rate)) instead of newNet = round(totalGross / round(1+rate)) | |||||||||||
Additional Information | ||||||||||||
Tags | No tags attached. | |||||||||||
Relationships |
| |||||||||||
Attached Files | ||||||||||||
Issue History | ||||||||||||
Date Modified | Username | Field | Change | |||||||||
2016-09-14 10:17 | marvintm | Type | defect => backport | |||||||||
2016-09-14 10:17 | marvintm | Target Version | RR16Q4 => RR16Q2.3 | |||||||||
2016-09-22 12:52 | hgbot | Checkin | ||||||||||
2016-09-22 12:52 | hgbot | Note Added: 0090165 | ||||||||||
2016-09-22 12:52 | hgbot | Status | scheduled => resolved | |||||||||
2016-09-22 12:52 | hgbot | Resolution | open => fixed | |||||||||
2016-09-22 12:52 | hgbot | Fixed in SCM revision | http://code.openbravo.com/erp/pmods/org.openbravo.retail.posterminal/rev/847e6420c8a6551d9cc71dd951b8129e5539d68d [^] => http://code.openbravo.com/retail/backports/3.0RR16Q2.3/org.openbravo.retail.posterminal/rev/b1a09f76ee46c18e1ee718868599baf5c4dc1b72 [^] | |||||||||
2016-09-26 23:09 | guilleaer | Review Assigned To | => guilleaer | |||||||||
2016-09-26 23:09 | guilleaer | Status | resolved => closed | |||||||||
2016-09-26 23:09 | guilleaer | Fixed in Version | => RR16Q2.3 |
Notes | |||||
|
|||||
|
|