콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
1 회신
6871 화면

I have an onchange function that creates an order line on the sales order, which fires when I put a discount value in the global_discount_rate field. The function is:

@api.onchange('global_discount_rate', 'global_discount_type')
def calculate_discount(self):

I need to call this onchange function from a function that I am attaching to a button in the same view. But I don't know the correct way to do it. I tried the following:
Attemp 1:

def create_line(self):
...
    self.calculate_discount()

Attemp 2:

def create_line(self):
...
linevals = {
'global_discount_rate': disc,
'global_discount_type': self.global_discount_type
}
line = self.env['sale.order'].new(self)
line.calculate_discount()
linevals = line._convert_to_write(line._cache)

Neither creates the line I need in the sales order











아바타
취소
베스트 답변

Hi,
You can call the function from anywhere using it’s object. The onchange function calculate_discount() is defined in ‘sale.order’, then you can call it with a sale.order object. In your code, if the self is contain an object of sale.order then you can call it like this:
self.calculate_discount()

And if there's an another field order_id which is stored sale order object then
self.order_id.calculate_discount()

Regards

아바타
취소
관련 게시물 답글 화면 활동
0
8월 20
7744
3
1월 18
5636
1
7월 25
2548
2
12월 24
21181
0
9월 24
1049