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

View Issue DetailsJump to Notes ] Issue History ] Print ]
ID
0045453
TypeCategorySeverityReproducibilityDate SubmittedLast Update
backport[Retail Modules] Web POSmajoralways2020-10-27 06:352020-11-18 09:11
ReportermarvintmView Statuspublic 
Assigned Toaferraz 
PrioritynormalResolutionfixedFixed in VersionRR20Q3.2
StatusclosedFix in branchFixed in SCM revision
ProjectionnoneETAnoneTarget VersionRR20Q3.2
OSAnyDatabaseAnyJava version
OS VersionDatabase versionAnt version
Product VersionSCM revision 
Review Assigned Tomarvintm
Regression level
Regression date
Regression introduced in release
Regression introduced by commit
Triggers an Emergency PackNo
Summary

0045453: Performance of the tax engine can be improved

DescriptionCurrently, the ticket calculation performance degrades quite significantly with the number of lines. Almost all the degradation comes from the tax engine, and particularly the call to the OB.Taxes.filterRulesByTicketLine function, which computes which tax rules could be applied to a line.

If this was optimised, the performance of the engine, and the ticket calculation speed in general, would improve by a very large amount.
Steps To ReproduceCreate a big ticket using "GPS" products (to ensure that all lines have a discount).
Realise that after 200 lines, calculating a ticket takes around 1.5 seconds.
Do some profiling. Realise that almost all the time is spent in the OB.Taxes.filterRulesByTicketLine function.
Proposed SolutionThe initial optimisation we are going to try consists in trying to avoid calculating the rules if the line already has them, and the line itself didn't change.
TagsNo tags attached.
Attached Files

- Relationships Relation Graph ] Dependency Graph ]
blocks defect 0045303 closedaferraz Performance of the tax engine can be improved 

-  Notes
(0124472)
hgbot (developer)
2020-11-18 09:09

Repository: https://gitlab.com/openbravo/product/pmods/org.openbravo.retail.posterminal [^]
Changeset: a9cd81947ca27a88f0f4ac392c2b74d5921774ea
Author: Álvaro Ferraz <alvaro.ferraz@openbravo.com>
Date: 2020-11-18T09:09:26+01:00
URL: https://gitlab.com/openbravo/product/pmods/org.openbravo.retail.posterminal/-/commit/a9cd81947ca27a88f0f4ac392c2b74d5921774ea [^]

Fixes ISSUE-45453: Performance of the tax engine can be improved

Move maps, filters and sorts not using line information from filterRulesByTicketLine to filterRulesByTicket:
- joinRuleAndZone
- sortByRegionFrom
- sortByCountryFrom
- sortByLineno
- sortByCascade
- sortByTaxBase

Move some filters to filterRulesByTicket to reduce the rules sent to filterRulesByTicketLine:
- checkTaxCategory,
- checkCountry
- checkRegion

Reorder some filters to apply first the ones more restrictive.

---
M web/org.openbravo.retail.posterminal/app/model/business-logic/taxes-engine/engine/tax-engine.js
---

- Issue History
Date Modified Username Field Change
2020-11-16 16:36 marvintm Type defect => backport
2020-11-16 16:36 marvintm Target Version => RR20Q3.2
2020-11-18 09:07 aferraz Assigned To marvintm => aferraz
2020-11-18 09:09 hgbot Resolution open => fixed
2020-11-18 09:09 hgbot Status scheduled => resolved
2020-11-18 09:09 hgbot Fixed in Version => RR20Q3.2
2020-11-18 09:09 hgbot Note Added: 0124472
2020-11-18 09:11 marvintm Review Assigned To => marvintm
2020-11-18 09:11 marvintm Status resolved => closed


Copyright © 2000 - 2009 MantisBT Group
Powered by Mantis Bugtracker