From beb0a27ad66e6784f43d1260ad9316ca42912369 Mon Sep 17 00:00:00 2001 From: Iryna Vyshnevska Date: Tue, 13 Aug 2019 12:40:28 +0300 Subject: [PATCH] [FIX] save wizard before run we must save 'account.invoice.line.update' to be able match them to real invoice lines, --- account_invoice_update_wizard/__init__.py | 1 + account_invoice_update_wizard/__manifest__.py | 2 +- .../models/__init__.py | 1 + .../models/account_invoice.py | 22 +++++++++++++++++++ .../test_account_invoice_update_wizard.py | 22 +++++++++---------- .../views/account_invoice.xml | 4 ++-- .../wizard/account_invoice_update.py | 9 -------- 7 files changed, 37 insertions(+), 24 deletions(-) create mode 100644 account_invoice_update_wizard/models/__init__.py create mode 100644 account_invoice_update_wizard/models/account_invoice.py diff --git a/account_invoice_update_wizard/__init__.py b/account_invoice_update_wizard/__init__.py index 4027237..9b42961 100644 --- a/account_invoice_update_wizard/__init__.py +++ b/account_invoice_update_wizard/__init__.py @@ -1 +1,2 @@ +from . import models from . import wizard diff --git a/account_invoice_update_wizard/__manifest__.py b/account_invoice_update_wizard/__manifest__.py index 10b3e37..d7b4bfe 100644 --- a/account_invoice_update_wizard/__manifest__.py +++ b/account_invoice_update_wizard/__manifest__.py @@ -12,7 +12,7 @@ 'author': 'Akretion', 'website': 'https://github.com/akretion/odoo-usability', 'depends': [ - 'account' + 'account', ], 'data': [ 'wizard/account_invoice_update_view.xml', diff --git a/account_invoice_update_wizard/models/__init__.py b/account_invoice_update_wizard/models/__init__.py new file mode 100644 index 0000000..24d7b16 --- /dev/null +++ b/account_invoice_update_wizard/models/__init__.py @@ -0,0 +1 @@ +from . import account_invoice \ No newline at end of file diff --git a/account_invoice_update_wizard/models/account_invoice.py b/account_invoice_update_wizard/models/account_invoice.py new file mode 100644 index 0000000..04a285e --- /dev/null +++ b/account_invoice_update_wizard/models/account_invoice.py @@ -0,0 +1,22 @@ +# Copyright 2019 Camptocamp +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models, fields, api, _ +from odoo.exceptions import UserError +import odoo.addons.decimal_precision as dp + + +class AccountInvoice(models.Model): + _inherit = 'account.invoice' + + def prepare_update_wizard(self): + self.ensure_one() + wizard = self.env['account.invoice.update'] + res = wizard._prepare_default_get(self) + action = self.env.ref( + 'account_invoice_update_wizard.account_invoice_update_action' + ).read()[0] + action['name'] = "Update Wizard" + action['res_id'] = wizard.create(res).id + return action + diff --git a/account_invoice_update_wizard/tests/test_account_invoice_update_wizard.py b/account_invoice_update_wizard/tests/test_account_invoice_update_wizard.py index a6ab2e2..309717b 100644 --- a/account_invoice_update_wizard/tests/test_account_invoice_update_wizard.py +++ b/account_invoice_update_wizard/tests/test_account_invoice_update_wizard.py @@ -43,11 +43,9 @@ class TestAccountInvoiceUpdateWizard(SavepointCase): 'name': 'の', }) - def create_wizard(self): - UpdateWizard = self.env['account.invoice.update'].with_context( - active_model='account.invoice', - active_id=self.invoice1.id) - self.wiz = UpdateWizard.create({}) + def create_wizard(self, invoice): + res = self.invoice1.prepare_update_wizard() + self.wiz = self.env['account.invoice.update'].browse(res['res_id']) def test_add_analytic_account_line1(self): """ Add analytic account on an invoice line @@ -58,7 +56,7 @@ class TestAccountInvoiceUpdateWizard(SavepointCase): - create a new analytic line. """ self.invoice1.action_invoice_open() - self.create_wizard() + self.create_wizard(self.invoice1) wiz_line = self.wiz.line_ids.filtered( lambda rec: rec.invoice_line_id == self.inv_line1) @@ -80,7 +78,7 @@ class TestAccountInvoiceUpdateWizard(SavepointCase): self.inv_line1.account_analytic_id = self.aa2 self.invoice1.action_invoice_open() - self.create_wizard() + self.create_wizard(self.invoice1) wiz_line = self.wiz.line_ids.filtered( lambda rec: rec.invoice_line_id == self.inv_line1) @@ -105,7 +103,7 @@ class TestAccountInvoiceUpdateWizard(SavepointCase): self.inv_line2.unit_price = 42.0 self.invoice1.action_invoice_open() - self.create_wizard() + self.create_wizard(self.invoice1) line1 = self.wiz.line_ids[0] line1.account_analytic_id = self.aa1 @@ -119,7 +117,7 @@ class TestAccountInvoiceUpdateWizard(SavepointCase): This will update move line. """ self.invoice1.action_invoice_open() - self.create_wizard() + self.create_wizard(self.invoice1) wiz_line = self.wiz.line_ids.filtered( lambda rec: rec.invoice_line_id == self.inv_line1) @@ -141,7 +139,7 @@ class TestAccountInvoiceUpdateWizard(SavepointCase): self.inv_line1.analytic_tag_ids = self.atag1 self.invoice1.action_invoice_open() - self.create_wizard() + self.create_wizard(self.invoice1) wiz_line = self.wiz.line_ids.filtered( lambda rec: rec.invoice_line_id == self.inv_line1) @@ -162,7 +160,7 @@ class TestAccountInvoiceUpdateWizard(SavepointCase): - create an analytic line """ self.invoice1.action_invoice_open() - self.create_wizard() + self.create_wizard(self.invoice1) wiz_line = self.wiz.line_ids.filtered( lambda rec: rec.invoice_line_id == self.inv_line1) @@ -186,7 +184,7 @@ class TestAccountInvoiceUpdateWizard(SavepointCase): self.inv_line1.account_analytic_id = self.aa2 self.invoice1.action_invoice_open() - self.create_wizard() + self.create_wizard(self.invoice1) wiz_line = self.wiz.line_ids.filtered( lambda rec: rec.invoice_line_id == self.inv_line1) diff --git a/account_invoice_update_wizard/views/account_invoice.xml b/account_invoice_update_wizard/views/account_invoice.xml index f4737b5..ad44634 100644 --- a/account_invoice_update_wizard/views/account_invoice.xml +++ b/account_invoice_update_wizard/views/account_invoice.xml @@ -11,7 +11,7 @@ @@ -21,7 +21,7 @@ diff --git a/account_invoice_update_wizard/wizard/account_invoice_update.py b/account_invoice_update_wizard/wizard/account_invoice_update.py index 755bf33..588e2a0 100644 --- a/account_invoice_update_wizard/wizard/account_invoice_update.py +++ b/account_invoice_update_wizard/wizard/account_invoice_update.py @@ -60,15 +60,6 @@ class AccountInvoiceUpdate(models.TransientModel): }]) return res - @api.model - def default_get(self, fields_list): - res = super(AccountInvoiceUpdate, self).default_get(fields_list) - assert self._context.get('active_model') == 'account.invoice',\ - 'active_model should be account.invoice' - inv = self.env['account.invoice'].browse(self._context['active_id']) - res = self._prepare_default_get(inv) - return res - @api.onchange('type') def type_on_change(self): res = {'domain': {}}