我正在尝试修改 BoM 行以添加两个自定义字段: measure 和度量单位,如下所示:
这是简单的部分,但是,如您所见, PO 订单不采用 measure 和度量单位值 BoM 行。
我们需要从 BoM 中获取此值,并且也按度量对每个项目进行拆分,不仅按变量进行划分,而且按度量进行划分,因为我们的供应商也可以使用。
我们如何创建这种行为?哪些功能可以处理?
答案 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模型中添加了两个自定义字段,并且这些字段的值从一个模型转移到另一个模型,并且所需的代码最少,并且在系统流程中的干预尽可能少。