Openerp Odoo 8超控量行

Openerp Odoo 8超控量行,openerp,odoo-8,Openerp,Odoo 8,我试图覆盖sale.order.line模型中的\u amount\u line函数,以添加客户逻辑 这是我的密码: class SaleOrderLine(models.Model): _inherit='sale.order.line' def金额行(自身): tax_obj=self.env['account.tax'] cur_obj=self.env['res.currency'] res={} 对于line in self: 打印line.tax\u id 价格=自身。\计算\行\基

我试图覆盖
sale.order.line
模型中的
\u amount\u line
函数,以添加客户逻辑

这是我的密码:

class SaleOrderLine(models.Model):
_inherit='sale.order.line'
def金额行(自身):
tax_obj=self.env['account.tax']
cur_obj=self.env['res.currency']
res={}
对于line in self:
打印line.tax\u id
价格=自身。\计算\行\基准\价格(行)
数量=自身\计算\行\数量(行)
打印“价格:{}和数量:{}”。格式(价格,数量)
税金=税金对象计算所有(第行税金id、价格、数量、,
line.product\u id,
行、订单号、合作伙伴号)
cur=line.order\u id.pricelist\u id.currency\u id
res[line.id]=cur_obj.round(cur,taxes['total'))
返回res
remise_palier=fields.Float('remise palier(%)'))
remise_total=fields.Float('remise total(%)'))
price\u subtotal=fields.Float(compute=''金额行',string='subtotal')
当我运行Odoo时,会出现以下错误:


调用compute\u all方法时出错

这个方法应该是这样的,

@api.multi
def _amount_line(self):
    tax_obj = self.env['account.tax']
    cur_obj = self.env['res.currency']
    for line in self:
        print line.tax_id
        price = self._calc_line_base_price(line)
        qty = self._calc_line_quantity(line)
        print" price:{} & quantity: {}".format(price,qty)
        taxes = line.tax_id.compute_all(price, qty, line.product_id, line.order_id.partner_id)        
        cur = line.order_id.pricelist_id.currency_id
        line.price_subtotal = cur.round(taxes['total'])

您在compute_all方法调用中出错

这个方法应该是这样的,

@api.multi
def _amount_line(self):
    tax_obj = self.env['account.tax']
    cur_obj = self.env['res.currency']
    for line in self:
        print line.tax_id
        price = self._calc_line_base_price(line)
        qty = self._calc_line_quantity(line)
        print" price:{} & quantity: {}".format(price,qty)
        taxes = line.tax_id.compute_all(price, qty, line.product_id, line.order_id.partner_id)        
        cur = line.order_id.pricelist_id.currency_id
        line.price_subtotal = cur.round(taxes['total'])

在Odoo V8+中,
compute\u all
调用应该在taxes本身上。您不需要将其称为“类方法”。以下代码段应该适合您:

@api.multi
#@api.depends()将其用于重新计算触发器
def金额行(自身):
对于line in self:
打印line.tax\u id
价格=自身。\计算\行\基准\价格(行)
数量=自身\计算\行\数量(行)
打印“价格:{}和数量:{}”。格式(价格,数量)
taxes=line.tax\u id.compute\u all(
价格、数量、行.产品\u id、行.订单\u id.合作伙伴\u id)
cur=line.order\u id.pricelist\u id.currency\u id
line.price_小计=当前整数(税费['total'])
编辑:不需要在新的API计算字段函数中返回某些内容。只需将值分配给计算字段


Edit2:对于currency
round()
,也有一种新的API风格的方法。我已经更改了我的代码片段。

在Odoo V8+中,
compute\u all
调用应该在taxes本身上。您不需要将其称为“类方法”。以下代码段应该适合您:

@api.multi
#@api.depends()将其用于重新计算触发器
def金额行(自身):
对于line in self:
打印line.tax\u id
价格=自身。\计算\行\基准\价格(行)
数量=自身\计算\行\数量(行)
打印“价格:{}和数量:{}”。格式(价格,数量)
taxes=line.tax\u id.compute\u all(
价格、数量、行.产品\u id、行.订单\u id.合作伙伴\u id)
cur=line.order\u id.pricelist\u id.currency\u id
line.price_小计=当前整数(税费['total'])
编辑:不需要在新的API计算字段函数中返回某些内容。只需将值分配给计算字段



Edit2:对于currency
round()
,也有一种新的API风格的方法。我已经更改了我的代码片段。

您好。它不起作用。这是sale.py
taxes=tax\u obj.compute\u all(cr,uid,line.tax\u id,price,qty,line.product\u id,line.order\u id.partner\u id)中的原始行
很抱歉,它可以工作,但我现在遇到了另一个错误:
返回新的\u api(self,*args,**kwargs)类型错误:round()只接受2个参数(给定3个)
line.price\u subtotal=cur.round(taxes['total'])
这不起作用吗?我没有看到您也修改了该行。我使用了
cur\u obj.round(cur,taxes['total'])
。这就是它不起作用的原因。它不起作用。这是sale.py
taxes=tax\u obj.compute\u all(cr,uid,line.tax\u id,price,qty,line.product\u id,line.order\u id.partner\u id)中的原始行
很抱歉,它可以工作,但我现在遇到了另一个错误:
返回新的\u api(self,*args,**kwargs)类型错误:round()只接受2个参数(给定3个)
line.price\u subtotal=cur.round(taxes['total'])
这不起作用吗?我没有看到您也修改了该行。我使用了
cur_obj.round(cur,taxes['total'])
。这就是为什么它不起作用的原因。它现在给了我
return new_api(self,*args,**kwargs)TypeError:round()正好有2个参数(3个给定)
我想这是同一个问题,让我看看它是经过编辑的。您必须使用新API调用currency对象的
round
。我刚才看到,这与@Emipro的答案相同。他的回答也应该有效。如果是这样,请将他的答案标记为正确答案。谢谢@CZoellner。最后一个问题,我在哪里可以找到货币对象(尤其是
round
方法)?我想将我的客户折扣应用于小计价格。您好@CZoellner它现在给了我
返回新的\u api(self,*args,**kwargs)类型错误:round()正好需要2个参数(给定3个)
我想这是相同的问题,让我看看它是否经过编辑。您必须使用新API调用currency对象的
round
。我刚才看到,这与@Emipro的答案相同。他的回答也应该有效。如果是这样,请将他的答案标记为正确答案。谢谢@CZoellner。最后一个问题,我在哪里可以找到货币对象(尤其是
round
方法)?我想对小计价格应用我的客户折扣。