0

我想在每次我在 One2many 字段上创建数据时,同时我希望它保存为我的 maintenance.equipment 上的数据。我尝试在插件中的其他模块上找到解决方案,但我还没有找到答案。

场景是,在验证我的产品中的货件之前,我需要在其上输入序列号。我同时为该产品创建的每个序列号都用作我的设备名称。

这是场景的图片

还有那个序列号是sample1010,我需要它成为我在模块maintenance.equipment中的设备名称。我希望它会显示在我的设备中。

我的设备模块

我所教的只是我需要做的就是像这样创建 Many2one 和 One2many 字段

class StockPackOperation(models.Model):
    _inherit = 'stock.pack.operation'

    lines_ids = fields.One2many('maintenance.equipment', 'lines_id')
    sample = fields.Char(string="Sample")

class MaintenanceEquipment(models.Model):
    _inherit = 'maintenance.equipment'

    lines_id = fields.Many2one('stock.pack.operation')

但什么也没发生。请提供任何帮助或建议或建议。我需要这样做。谢谢高手指教。Anw我是odoo的新手。

4

1 回答 1

0

这可以通过继承 stock.pack.operation.lot 类来实现,因为输入的序列号与 lot_name (在进货的情况下)和 lot_id (在出货的情况下)一起存储在此类中。

您无需关心发货,因为在发货时我们选择已经存在的序列号。类 StockPackOperationLot(models.Model): _inherit = 'stock.pack.operation.lot'

@api.model
def create(self, vals):
    res = super(StockPackOperationLot, self).create(vals)
    if vals.get('lot_name'):
        self.env['maintenance.equipment'].create({'name': vals.get('lot_name')})
    return res

@api.multi
def write(self, vals):
    if vals.get('lot_name'):
        lot_name = self.lot_name
        equipment_id = self.env['maintenance.equipment'].search([('name', '=', lot_name)])
        res = super(StockPackOperationLot, self).write(vals)
        equipment_id.name = vals.get('lot_name')
        return res
    else:
        return super(StockPackOperationLot, self).write(vals)

要使该功能正常工作,您需要确保设备名称是唯一的,否则您需要在每个 stock.pack.operation.lot 记录中存储相关的设备 ID,以便用户在编辑序列号时,设备也会更新,当设备名称没有唯一约束时。

希望这可以帮助你...

于 2018-03-06T12:29:23.650 回答