Как создать автоматический счет поставщика после проверки отправки в odoo 12? - PullRequest
0 голосов
/ 24 мая 2019

Я хотел бы поделиться с вами всеми своими проблемами, связанными с моими кодами. Итак, в данном случае, я хотел бы создать автоматизацию по счету поставщика сразу после того, как я проверю комплектацию. Таким образом, после проверки отгрузки в stock.pic, он будет автоматически заполнять счет поставщика, а также автоматически проверять счет поставщика. (поэтому мне не нужно вручную нажимать счет поставщика, чтобы создать его). Это цель.

Я думаю, что уже могу заполнить форму, но у меня есть проблема с полями invoice_line_ids, которая имеет account_id в качестве обязательного поля. Вот моя функция внизу:

from odoo import api, models, fields

class StockPicking(models.Model):

    _inherit = 'stock.picking'

    @api.multi
    def button_validate(self):
        res = super(StockPicking, self).button_validate()
        action = self.env.ref('account.action_vendor_bill_template')
        result = action.read()[0]
        invoice_line_ids = []
        loop = self.purchase_id.order_line
        for line in loop:
            inv_line_vals = [0, False]
            inv_line = {
                'product_id' : line.product_id.id,
                'name' : line.name,
                'quantity' : line.product_qty,
                'price_unit' : line.price_unit,
                'discount' : float(line.discount),
                'invoice_line_tax_ids' : [(6, 0,line.taxes_id.ids)],
                'price_subtotal' : line.price_subtotal,
                'account_id' : line.id,
            }

        inv_line_vals.append(inv_line)
        invoice_line_ids.append(inv_line_vals)

        result = {
            'type': 'in_invoice',
            'purchase_id': self.purchase_id.id,
            'currency_id': self.purchase_id.currency_id.id,
            'company_id': self.purchase_id.company_id.id,
            'partner_id': self.purchase_id.partner_id.id,
            'date_invoice': self.move_ids_without_package.date_expected.strftime("%Y-%m-%d"),
            'origin' : self.purchase_id.name,
            'reference' : self.purchase_id.partner_ref,
            'company_id': self.company_id.id,
            'invoice_line_ids' : tuple(invoice_line_ids),
        }
        bils = self.env['account.invoice'].create(result)
        bils.action_invoice_open()
        return res

Появляется предупреждение об ошибке:

Ошибка сервера Odoo

The operation cannot be completed, probably due to the following:

- deletion: you may be trying to delete a record while other records still reference it
- creation/update: a mandatory field is not correctly set

[object with reference: Account - account.account]
...