本文介绍了如何在报价单的小计中添加另一个折扣?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

报价单行中有一个subtotal (price_subtotal) 字段.

There is a subtotal (price_subtotal) field in Quotation Order Line.

我添加了一个新字段extra_discount.

我已经尝试过此代码,但无济于事.

I have tried this code but to no avail.

@api.depends('product_uom_qty', 'price_unit', 'extra_discount')
    def compute_all(self):
        for record in self:
            record.price_subtotal = (record.product_uom_qty * record.price_unit) - record.extra_discount

它对小计没有任何作用.

那么,我该如何实现?

推荐答案

我会尝试覆盖 sale.order.line.price_subtotal字段后面的计算方法.

I would try to override the computation method behind the field sale.order.line.price_subtotal.

但我不确定 api.depends() 扩展(再添加一个重新计算触发器字段)是否按预期工作.

But i'm not sure if api.depends() extensions (adding one more recomputation trigger field) are working as expected.

但它应该看起来像这样:

But it should look something like that:

class SaleOrderLine(models.Model):
    _inherit = "sale.order.line"

    extra_discount = fields.Float()

    @api.depends('product_uom_qty', 'discount', 'price_unit',
                 'tax_id', 'extra_discount')
    def _compute_amount(self):
        """
        Compute the amounts of the SO line.

        Fully overridden to add field extra_discount to the
        formula and triggers.
        """
        for line in self:
            price = line.price_unit * (1 - (line.discount or 0.0) / 100.0)
            # new: substract extra_discount
            price -= line.extra_discount
            taxes = line.tax_id.compute_all(price, line.order_id.currency_id, line.product_uom_qty, product=line.product_id, partner=line.order_id.partner_shipping_id)
            line.update({
                'price_tax': sum(t.get('amount', 0.0) for t in taxes.get('taxes', [])),
                'price_total': taxes['total_included'],
                'price_subtotal': taxes['total_excluded'],
            })
            if self.env.context.get('import_file', False) and not self.env.user.user_has_groups('account.group_account_manager'):
                line.tax_id.invalidate_cache(['invoice_repartition_line_ids'], [line.tax_id.id])

这篇关于如何在报价单的小计中添加另一个折扣?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 18:35