Note:

1) I don't think the code makes any assumption that the parent's level is 
already calculated, because it recursively calls the function field, which 
should be computed on-demand, as far as I can see. However the process of doing 
this is a bit inefficient. I think the computed values should be correct, 
provided the tree hierarchy is correct and did not change, because of 2).
It is not easy to implement this in an efficient way (in terms of DB queries). 
A possible approach might be to use cr.execute('SELECT id, parent_id WHERE 
parent_left < %s', account.parent_left), which will return pairs of (id, 
parent_id) for all possible ancestors of the current account, and then 
post-process these in python by putting the pairs in a map and walking up from 
the node's parent.

2) That's quite correct indeed, the values should be recomputed when the
hierarchy changes, e.g. via a different "store=..." trigger.

-- 
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to the OpenERP Project Group.
https://bugs.launchpad.net/bugs/783670

Title:
  account - level - wrong computation

Status in OpenERP Modules (addons):
  Confirmed

Bug description:
  account/account.py

  def _get_level

  currently the calculated level (except level 1) is very much random,
  depending on the sequence of processed records

  2 issues:
  1) IMHO the function makes the wrong assumption that the level of the parent 
account is already calculated, which is not necessarily the case
  2) the level (stored=True) of all childs must be recalculated if the level 
of a parent changes. IMHO this would also solve issue 1).
  change of structure may be done any time manually.

_______________________________________________
Mailing list: https://launchpad.net/~c2c-oerpscenario
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~c2c-oerpscenario
More help   : https://help.launchpad.net/ListHelp

Reply via email to