Отправка электронной почты при минимальном количестве в odoo8

привет, я хочу отправить электронное письмо, если баланс на продукте меньше минимального, установленного в пользовательском модуле; я попробовал этот код, и я получил внутреннюю ошибку сервера, помогите, пожалуйста, я новичок в odoo

class stock_minimum(models.Model):
        _name = "rcs.stock_minimum"

        warehouse = fields.Many2one("stock.warehouse")
        product = fields.Many2one("product.product")
        available = fields.Float(compute="_compute_balance", string="Available Quantity")
        percentage = fields.Float(compute="_compute_balance", string="Percentage %")
        quantity = fields.Float(string="Minimum Quantity")

        @api.one
        def _compute_balance(self):
                transactions = self.env['rcs.stock_transaction'].search([('product','=',self.product.id),('warehouse','=',self.warehouse.id)])
                balance = 0.0
                for transaction in transactions:
                        if transaction.trans_type == "incoming":
                                balance = balance + transaction.quantity
                        else:
                                balance = balance - transaction.quantity
                self.available = balance
                self.percentage = self.available / self.quantity * 100
#check from here the additional codes
       if (self.available <= quantity):
                    def send_mail(self, cr, uid, ids, context=None, template="minimumstock"):                                                                                                
                      for object in self.browse(cr, uid, ids, context=context):
                            template_id = self.pool.get('email.template').search(cr, uid, [("name","=",template)])                                                                           
                            mail_message = self.pool.get('email.template').send_mail(cr,uid,template_id[0],object.id)

person user3821178    schedule 02.03.2016    source источник
comment
пожалуйста, отредактируйте вопрос, добавив всю трассировку исключения   -  person Alessandro Ruffolo    schedule 02.03.2016
comment
а еще пожалуйста исправьте отступ   -  person Alessandro Ruffolo    schedule 02.03.2016
comment
позвольте мне попытаться получить след   -  person user3821178    schedule 02.03.2016
comment
хотя я не думаю, что это проблема с отступом, я тоже это исправляю   -  person user3821178    schedule 02.03.2016
comment
я отредактировал отступ, но все же   -  person user3821178    schedule 02.03.2016
comment
Я имел в виду, что вам нужно исправить отступ кода, который вы предоставили здесь. Это просто кажется неправильным...   -  person Alessandro Ruffolo    schedule 02.03.2016
comment
@AlessandroRuffolo, не могли бы вы уточнить отступы или трассировку исключений?   -  person user3821178    schedule 02.03.2016
comment
конечно, я говорю об отступах: вы не предоставили трассировку. об отступе, похоже, вы определяете метод send_mail в зависимости от условия вне метода _compute_balance! исправить отступ.   -  person Alessandro Ruffolo    schedule 02.03.2016
comment
ну вот так перестал показывать ошибку но не отправляет   -  person user3821178    schedule 02.03.2016
comment
смотри, ты похоже не понял. Я прошу вас отредактировать свой вопрос, потому что я не вижу, какой код вы используете. Но я почему-то предполагаю, что это не работает только потому, что вы определяете send_mail, фактически не вызывая его!   -  person Alessandro Ruffolo    schedule 02.03.2016
comment
см. правки сверху, как я должен это сделать   -  person user3821178    schedule 02.03.2016
comment
@AlessandroRuffolo плюс я отредактировал количество на stock_minimum.quantity   -  person user3821178    schedule 02.03.2016
comment
@AlessandroRuffolo любая помощь в том, как это исправить, или вы можете поделиться исправленным синтаксисом   -  person user3821178    schedule 03.03.2016
comment
@AlessandroRuffolo, я имею в виду исправленный код   -  person user3821178    schedule 03.03.2016
comment
@AlessandroRuffolo позвольте мне попробовать этот ответ и вернуться к вам   -  person user3821178    schedule 03.03.2016


Ответы (1)


Кажется, я понимаю, в чем твоя проблема. Ваш синтаксис Python неверен. Использование фреймворка Odoo тоже неправильно.

Я не знаю, правильно ли использовать email.template, как вы, но вот лучшее, что я могу сделать с точки зрения синтаксиса/структуры

class stock_minimum(models.Model):
    _name = "rcs.stock_minimum"

    warehouse = fields.Many2one("stock.warehouse")
    product = fields.Many2one("product.product")
    available = fields.Float(compute="_compute_balance", string="Available Quantity")
    percentage = fields.Float(compute="_compute_balance", string="Percentage %")
    quantity = fields.Float(string="Minimum Quantity")

    @api.one
    def _compute_balance(self):
        transactions = self.env['rcs.stock_transaction'].search([('product','=',self.product.id),('warehouse','=',self.warehouse.id)])
        balance = 0.0
        for transaction in transactions:
            if transaction.trans_type == "incoming":
                balance = balance + transaction.quantity
            else:
                balance = balance - transaction.quantity
        self.available = balance
        self.percentage = self.available / self.quantity * 100
        #check from here the additional codes
        if (self.available <= self.quantity):
            template = self.env['email.template'].search([("name","=","minimumstock")])                                                                           
            mail_message = self.env['email.template'].send_mail(template[0].id,self.id)
person Alessandro Ruffolo    schedule 03.03.2016
comment
Я изменил код на этот без ошибок, но электронное письмо все равно не отправляется - person user3821178; 03.03.2016
comment
вероятно, вы должны настроить свой smtp. Кстати этот код должен работать 99% - person Alessandro Ruffolo; 03.03.2016
comment
Да, мой smtp показывает ошибку -2 даже при тестовом соединении, я попытаюсь исправить это, тогда я подтвержу коды - person user3821178; 04.03.2016
comment
@Alessandro_ruffolo я исправил smtp, но он все еще не отправляет электронное письмо, хотя ошибок нет - person user3821178; 07.03.2016