Повторяющаяся проблема с записью в odoo - PullRequest
0 голосов
/ 26 июня 2019

Я добавил новое настраиваемое поле в строку заказа на продажу и строку счета, а затем переопределил метод с именем action_invoice_create(), который срабатывает при нажатии пользователем кнопки.

Что я пытаюсь получить из этогометод выводится примерно так:

order_line SR
order_line ZRE
invoice_line SR
invoice_line ZRE

, но в настоящее время я получаю этот вывод, который показывает дублированную запись:

order_line SR
invoice_line SR
invoice_line SR
order_line ZRE
invoice_line ZRE
invoice_line ZRE

Поэтому мне нужна помощь для исправления циклов for, чтобы получить правильный вывод.

class SalesOrder(models.Model):
    _inherit = 'sale.order'
    _description = 'Move VAT Code'

    @api.multi
    def action_invoice_create(self, grouped=False, final=False):
        res = super(SalesOrder, self).action_invoice_create()
        for record in self:
            for rec in record.order_line:
              print('order_line %s' % rec.x_vat_code_id.name)
              for invoice in record.invoice_ids:
                for invoice_line in invoice.invoice_line_ids:
                    invoice_line['vat_code_id'] = rec.x_vat_code_id.id
                    print('invoice_line %s' % rec.x_vat_code_id.name)

        return res

Формат данных:

{'order_line': [(0, 0, {'state': 'draft', 'x_qty': 0.0, 'x_partner': False, 'x_price_unit': 0.0, 'x_onhand': 0.0, 'x_reverse': 0.0, 'x_reference': False, 'x_stock_partner': False, 'x_vat_code_id': 51})]}

1 Ответ

0 голосов
/ 26 июня 2019

Вы можете просто развязать цикл, который перебирает записи.invoice_ids, вот так и проверить, нормально ли он работает.

class SalesOrder(models.Model):
_inherit = 'sale.order'
_description = 'Move VAT Code'

@api.multi
def action_invoice_create(self, grouped=False, final=False):
    res = super(SalesOrder, self).action_invoice_create()
    for record in self:
        for rec in record.order_line:
          print('order_line %s' % rec.x_vat_code_id.name)
        for invoice in record.invoice_ids:
          for invoice_line in invoice.invoice_line_ids:
              invoice_line['vat_code_id'] = rec.x_vat_code_id.id
              print('invoice_line %s' % rec.x_vat_code_id.name)

    return res
...