Skip to Content
Menu
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
To pytanie dostało ostrzeżenie
2 Odpowiedzi
5391 Widoki

Hi,

I inherited the class purchase_order and wrote my method _prepare_inv_line to override the one of the class, but when I ran the code it was not called.

The question is, why this method was not called,

second, how to override such functions ?


Here is my own method I inserted in the inherited class purchase_order


	def _prepare_inv_line(self, cr, uid, account_id, order_line, context=None):
		res = super(purchase_order,self)._prepare_inv_line(cr, uid, account_id, order_line, context)
		line = self.pool.get('purchase.order.line').browse(cr,uid,order_line)
		if not line.order_id.requisition_id:
			""" get the account # defined as reserved for this department """
			account_obj = self.pool.get('account.account')
			acct_id = account_obj.search(cr,uid,[('department_id','=',line.order_id.department_id.id)])
			res['account_id'] = acct_id
		return res

I'm OpenERP 7.0

in this method if the PO is not linked to a Purchase Requisition then I have to get the account id from the chart of accounts that is related to the department of the user initiated the PO

This method has not been visited when I ran the code

thx in advance for help

Awatar
Odrzuć

Check the class instantiation at the end of the class. If your class is purchase_order then close it with an purchase_order()

Check if the same method already overridden somewhere else.

Najlepsza odpowiedź

Hello Tarek,

please paste your code over here, so we can solve your exact problem.

thanks.

Awatar
Odrzuć
Najlepsza odpowiedź

Check the followings 

* file not added in __init__.py

* class method signature different than base class method

To ensure your class is loaded put ipdb statement in class init method. 

Awatar
Odrzuć
Powiązane posty Odpowiedzi Widoki Czynność
2
cze 23
2213
1
cze 20
35246
1
lis 17
3236
1
cze 16
4676
1
sie 23
2986