将MO BoM行中的自定义字段发送到Odoo中的PO订单行

时间:2018-10-12 07:59:27

标签: python odoo odoo-11

我正在尝试修改 BoM 行以添加两个自定义字段: measure 度量单位,如下所示: enter image description here

我为 PO 添加了相同的内容: enter image description here

这是简单的部分,但是,如您所见, PO 订单不采用 measure 度量单位 BoM 行。

我们需要从 BoM 中获取此值,并且也按度量对每个项目进行拆分,不仅按变量进行划分,而且按度量进行划分,因为我们的供应商也可以使用。

我们如何创建这种行为?哪些功能可以处理?

1 个答案:

答案 0 :(得分:0)

我们必须从给定的def update(self, time): self.speed += self.k_up + self.k_down if self.k_break: if self.speed > 0: self.speed = max(0, self.speed-0.5) elif self.speed < 0: self.speed = min(0, self.speed+0.5) 中得出库存中的价值。

首先,我们将两个值添加到各自的模型中:

values

我们不需要在class MrpBomLine(models.Model): _inherit = 'mrp.bom.line' item_num = fields.Integer(_('CAD Item Position'), help=_( "This is the item reference position into the CAD document that declares this BoM.")) measure = fields.Char(_('Measure')) measure_uom_id = fields.Many2one( 'product.uom', 'Unit of Measure', help="Unit of Measure (Unit of Measure) is the unit of measurement for the products measure") class PurchaseOrderLine(models.Model): _inherit = 'purchase.order.line' measure = fields.Char(_('Measure')) measure_uom_id = fields.Many2one( 'product.uom', 'Unit of Measure', help="Unit of Measure (Unit of Measure) is the unit of measurement for the products measure" ) 模型中添加任何其他内容。

第二,我们需要覆盖准备采购订单行的方法,这是在采购规则中。因此,我们继承了采购规则的模型:

mrp

我们继续准备功能:

class ProcurementRule(models.Model):
    _inherit = 'procurement.rule'

我们不需要将自定义字段添加到库存变动或其他功能中,这是因为使用数据字典创建了@api.multi def _prepare_purchase_order_line( self, product_id, product_qty, product_uom, values, po, supplier ): result = super(ProcurementRule, self)._prepare_purchase_order_line( product_id, product_qty, product_uom, values, po, supplier ) if values.get('move_dest_ids', False): result['measure'] = values['move_dest_ids'].bom_line_id.measure result['measure_uom_id'] = values['move_dest_ids'].bom_line_id.measure_uom_id.id return result 句柄,在这种情况下,它是Odoo通过此值,我们可以找到所有相关的变量和字段,values变量也包含自定义字段。

直到这里,我们解决了将信息从bom.line转移到bom.line的问题。

现在,我们需要避免重复购买订单,为此,我们将修改purchase.order函数:

_run_buy

我们首先检查 # Create Line po_line = False for line in po.order_line: if line.product_id == product_id and \ line.product_uom == product_id.uom_po_id and \ values.get('move_dest_ids', False) and \ line.measure == values['move_dest_ids'].bom_line_id.measure and \ line.measure_uom_id.id == values['move_dest_ids'].bom_line_id.measure_uom_id.id: if line._merge_in_existing_line( product_id, product_qty, product_uom, location_id, name, origin, values ): vals = self._update_purchase_order_line( product_id, product_qty, product_uom, values, line, partner ) po_line = line.write(vals) break 键是否存在;之后,我们检查订单行中的产品与物料清单行中的产品具有相同的度量,最后检查度量的度量单位是否相同。就是这样。

通过这种方式,我们在Bom Line模型中添加了两个自定义字段,并且这些字段的值从一个模型转移到另一个模型,并且所需的代码最少,并且在系统流程中的干预尽可能少。