odoo - Odoo 销售订单:kit bom 中的错误计算 qty_delivered
问题描述
我在 Odoo 11 上,我在一个特殊情况下:我有一个产品 (GRI002),它的 BoM 为“Kit”类型。GRI002STK 是唯一的组件:
当我做销售订单时,我为订购的数量设置了 2 GRI002。我确定。我去交货,我设置了 1 个完成的数量:
它告诉我我可以延期交货,我点击是的。因此,对于第一次选择,我有 1 个初始需求和 1 个完成,对于延期交货,我有 1 个初始需求和 0 个完成:
在销售订单中,我应该有 2 个 Ordererd 数量和 1 个交付,但问题是:我有 2 个 Ordererd 数量和 0 个交付。 我已经测试了没有 BOM 的产品,以及要制造的 BoM,它在这两种情况下都有效。
那么计算有序数量的函数是什么?我会修补它。
你有这个问题吗 ?我无法将 BoM 编辑为套件,因为它确实会生成制造订单,而我的客户不想要它。
解决方案
我通过执行 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
推荐阅读
- spring-boot - 如何在 SpringBootApplication 中的 MyBatis 映射之前启动 Liquibase 迁移?
- spring - kafka消费者消息不消费一些消息
- postgresql - 当只在表中完成插入时,估计的行数是否准确?
- api - 使用 Sequelize 的简单选择语句
- machine-learning - 如何为使用 KFold CV 训练的分类模型绘制 ROC 和 PR 曲线
- uwp - 如何确保视频效果显示在 MediaComposition 的叠加层之上
- flutter - Flutter“提示文本”动画
- python - AttributeError:“dict”对象没有属性“splits”
- python - 使用 Selenium 访问路由器
- javascript - 如何将 mat-datepicker-toggle 与共享模块一起使用?