← Back to team overview

c2c-oerpscenario team mailing list archive

[Bug 704922] Re: Trigger on store function field doesn't work in inherits object

 

The bug is in function orm's __init__() function and also fails to
consider the case when a function or related field is inherited and
replaced by a "normal" field. The reason is that the function fills in a
dictionary in the pool called _store_function but entries in the
dictionary are not removed when a function field is inherited.

The attached patch fixes that by removing those entries (if they exist).
It creates a new "_store_function_inv" dictionary to speed up the
search. It seems to work properly in my case. Joël, can you give it a
try?


** Patch added: "osv.diff"
   https://bugs.launchpad.net/openobject-server/+bug/704922/+attachment/1890442/+files/osv.diff

-- 
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/704922

Title:
  Trigger on store function field doesn't work in inherits object

Status in OpenERP Server:
  Confirmed

Bug description:
  Hi,

  
  This is a quite complex one affecting last v6.0 :( Also to explain, I'll try...

  Situation :

  - Add a store field on account.analytic.line with the following:

  'aa_currency_id': fields.function(_get_account_currency, method=True, type='many2one', relation='res.currency', string='Account currency',
                    store={
                        'account.analytic.account': (_get_account_line, ['company_id'], 50),
                        'account.analytic.line': (lambda self,cr,uid,ids,c={}: ids, ['amount','unit_amount'],10),
                    },
                    help="The related analytic account currency."),

  - This will trigger any modifications done on the related analytic
  account or in the amount or unit_amount field of analytic lines. When
  the trigger is trigged, the value of aa_curency_id is re-computed by
  _get_account_currency.

  This works perfectly as expected, the trigger works. But then you
  install hr_timesheet module which inherits account.analytic.line and
  try to change something in the hr.analytic.timesheet, the trigger on
  the account.analytic.line isn't trigged !!!

  You can find a working example in the c2c_multicost_base module of
  extra-addons for v 5.0, in v5.0 this works perfectly. Changing the
  hr.analytic.timesheet will trig the account.analytic.line.

  I expect this to work also n v 6.0. A trigger put on an object A
  should be trigged also when an inherits object B change some values in
  the inherited object A.

  Thanks to have a look, this sould be very important I think.

  Regards,

  Joël



References