【问题标题】:Odoo Sale order : wrong calcul qty_delivered in kit bomOdoo 销售订单:kit bom 中的错误计算 qty_delivered
【发布时间】:2022-04-16 13:06:18
【问题描述】:

我在 Odoo 11 上,我在一个特殊情况下: 我有一个产品 (GRI002),它的 BoM 为“Kit”类型。 GRI002STK 是唯一的组件:

当我做一个销售订单时,我为订购的数量设置了 2 GRI002。我确定。我去交货,我设置了 1 个完成的数量:

它告诉我我可以延期交货,我点击是的。 因此,对于第一次选择,我有 1 个初始需求和 1 个完成,对于延期交货,我有 1 个初始需求和 0 个完成:

在销售订单中,我应该有 2 个 Ordererd 数量和 1 个交付,但问题是:我有 2 个 Ordererd 数量和 0 个交付。 我已经测试过没有 BOM 的产品,以及要制造的 BoM,这两种情况都适用。

那么计算有序数量的函数是什么?我会修补它。

你有这个问题吗?我无法将 BoM 编辑为套件,因为它确实会发出制造订单,而我的客户不想要它。

【问题讨论】:

  • 这是一个函数问题,与编程无关。请在official Odoo forums 中提出此类问题。
  • 我想我需要编写代码来覆盖计算的原始方法,但我不知道它在哪里。顺便说一句,我不能在 Odoo 论坛上提问,我不知道为什么......

标签: odoo calculated-field


【解决方案1】:

我通过执行 super() 并重新计算成功:

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


    @api.multi
    def _get_delivered_qty(self):
        self.ensure_one()

        #Hérite de sale/models/sale.py, de sale_stock/models/sale_order.py et de sale_mrp/models/sale_mrp.py
        qty = super(SaleOrderLine, self)._get_delivered_qty()

        #On recherche la nomenclature avec le produit actuel
        bom = self.env['mrp.bom']._bom_find(product=self.product_id)

        #Si c'est une nomenclature en kit
        if bom and bom.type == 'phantom':
            qty = 0   #obligé sinon les quantités seraient comptées 2x

            for move in self.move_ids:
                if move.state == 'done':
                    #on ajoute autant de quantité qu'il y en a dans le stock_move
                    qty = qty + move.quantity_done
        return qty

【讨论】:

    猜你喜欢
    • 2016-10-14
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 2019-10-09
    相关资源
    最近更新 更多