2017-01-26 2 views
0

Ниже метода существует вКак переопределить (удалить или добавить одну строку) существующий размораживание с помощью пользовательского модуля в odoo 10

запроса 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.

ответ

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 
Смежные вопросы