Cédric Krier pushed to branch branch/default at Tryton / Tryton
Commits: bd90b075 by Cédric Krier at 2023-06-05T12:53:59+02:00 Use defaultdict to compute cost and revenue total of project Since e35820296f3a, sum_tree is use to compute project total but it requires to have a default value for parents that are not in the list of instances.. Closes #12305 - - - - - b3ba331b by Cédric Krier at 2023-06-05T12:55:00+02:00 Fill result for unknown parent in sum_tree The parent of a record may not be in the list of instances computed. - - - - - 2 changed files: - modules/project_revenue/work.py - trytond/trytond/model/tree.py Changes: ===================================== modules/project_revenue/work.py ===================================== @@ -62,7 +62,7 @@ transaction = Transaction() cursor = transaction.connection.cursor() - costs = dict.fromkeys([w.id for w in works], 0) + costs = defaultdict(Decimal) table = cls.__table__() work = Work.__table__() @@ -156,7 +156,7 @@ @classmethod def _get_revenue(cls, works): - revenues = dict.fromkeys(map(int, works), Decimal(0)) + revenues = defaultdict(Decimal) for work in works: if not work.list_price: continue ===================================== trytond/trytond/model/tree.py ===================================== @@ -160,7 +160,10 @@ records.remove(leaf) parent = parents.get(leaf) if parent: - result[parent] += result[leaf] + try: + result[parent] += result[leaf] + except KeyError: + result[parent] = result[leaf] next_leafs = set(records) for record in records: parent = parents.get(record) View it on Heptapod: https://foss.heptapod.net/tryton/tryton/-/compare/3e415fd7a9f23bb8182c164bae02fd6dd909e83c...b3ba331b59d8c2d3de593dda958dfb9940e45b37 -- View it on Heptapod: https://foss.heptapod.net/tryton/tryton/-/compare/3e415fd7a9f23bb8182c164bae02fd6dd909e83c...b3ba331b59d8c2d3de593dda958dfb9940e45b37 You're receiving this email because of your account on foss.heptapod.net.