0

以下方法存在于

查询 1: stock.move

@api.multi
def action_assign(self, no_prepare=False):
     for move in moves:
        if move.product_id.type == 'consu'
            moves_to_assign |= move
            continue
        else:
            moves_to_do |= move

我只想添加一行更改(即)

@api.multi
def action_assign(self, no_prepare=False):
     for move in moves:
        if move.product_id.type == 'consu' or move.product_id.type == 'service':
            moves_to_assign |= move
            continue
        else:
            moves_to_do |= move

我只想自定义这一行

  **if move.product_id.type == 'consu' or move.product_id.type == 'service':**

以及 此方法中的查询 2: 'mrp.production'

def _generate_raw_move(self, bom_line, line_data):

我只想删除以下行

if bom_line.product_id.type not in ['product', 'consu']:
        #return self.env['stock.move']

如何在 Odoo 10 的自定义模块中编写此方法。

4

1 回答 1

1

在你的插件中,你想从这个插件继承stock.move。然后只需将现有方法粘贴到您自己的模型中即可。这将完全覆盖现有方法。因此,当调用该方法时,它只会调用您的方法,而不是先前存在的方法。

这是完成您正在尝试做的事情的唯一方法。你不能告诉程序'我只想改变这两行'。当涉及到方法时,它实际上并不是这样工作的。

如果您希望保持现有方法完好无损,您可以在调用super之前或之后调用并执行您的处理super,有时这比完全覆盖现有方法要好。在我看来,这真的取决于你的情况。

class ClassName(models.Model):
    _inherit = 'stock.move'

    @api.multi
    def action_assign(self, no_prepare=False):
        for move in moves:
            if move.product_id.type == 'consu' or move.product_id.type == 'service':
                moves_to_assign |= move
                continue
            else:
                moves_to_do |= move
于 2017-01-26T20:00:27.553 回答