Как установить значения по умолчанию для полей в Odoo 14

#javascript #python #xml #odoo

#javascript #python #xml #odoo

Вопрос:

Я добавил зарегистрированную компанию (это поле символа), при создании платежа я хочу установить значение по умолчанию. При создании нового платежа значение не отображалось в представлении формы . Но при печати «my_company» я получил правильный результат. Что не так, пожалуйста?

 class AccountPayment(models.Model):
_inherit = "account.payment"    

 @api.model
    def get_company(self):
        if self.move_type == 'in_invoice':
            my_company = self.env.user.company_id.name
            self.company = my_company

        else:
            self.company = ''

    company = fields.Char(string='Company   ', default=get_company)
 

Спасибо.

Комментарии:

1. Попробуйте это: company_id = поля. Many2one(‘res.company’, ‘Company’, по умолчанию =лямбда self: self.env[‘res.users’].browse(self.env.uid).company_id.id ) это приведет к получению компании текущего пользователя для входа в систему и присвоению ее в этом поле

2. @Muhammad Yusuf, поле, которое я добавил, является полем символа, я бы не стал менять его на поле Many2one , кроме того, у меня было другое условие move_type . Вот почему я добавил функцию ‘get_company’, где я могу добавить условие. Спасибо.

3. При создании нового платежа значение move_type является пустым, поэтому результатом всегда будут пустые кавычки.

4. @Tiki , да, кроме того, проблема все еще остается, когда я попытался с: если self.payment_type == ‘outbound’ , как я могу получить правильное условие для различения оплаты поставщика и клиента?

Ответ №1:

Вам нужно вернуть значение. Вот правильный код

 class AccountPayment(models.Model):
     _inherit = "account.payment"    


    def get_company(self):
        if self.move_type == 'in_invoice':
            my_company = self.env.user.company_id.name
            return my_company
        else:
            return None

    company = fields.Char(string='Company Name', default=get_company)
 

Комментарии:

1. У меня все еще есть проблема при условии, если self.move_type == ‘in_invoice’, он не входит в условие if; Я попробовал с: if self.payment_type == ‘outbound’ , у меня такая же проблема. Любая помощь, пожалуйста? Спасибо

2. Я всегда получал значение ‘False’ в payment_type .