diff --git a/account_invoice_change/__manifest__.py b/account_invoice_change/__manifest__.py index c610edcc..952b2e59 100644 --- a/account_invoice_change/__manifest__.py +++ b/account_invoice_change/__manifest__.py @@ -1,7 +1,7 @@ { 'name': 'Account Invoice Change', 'author': 'Hibou Corp. ', - 'version': '12.0.1.0.0', + 'version': '13.0.1.0.0', 'category': 'Accounting', 'sequence': 95, 'summary': 'Technical foundation for changing invoices.', diff --git a/account_invoice_change/tests/test_invoice_change.py b/account_invoice_change/tests/test_invoice_change.py index 3809241c..e2c362bd 100644 --- a/account_invoice_change/tests/test_invoice_change.py +++ b/account_invoice_change/tests/test_invoice_change.py @@ -1,60 +1,51 @@ from odoo.addons.account.tests.account_test_users import AccountTestUsers from odoo import fields + class TestInvoiceChange(AccountTestUsers): def test_invoice_change_basic(self): - self.account_invoice_obj = self.env['account.invoice'] + self.account_invoice_obj = self.env['account.move'] self.payment_term = self.env.ref('account.account_payment_term_advance') self.journalrec = self.env['account.journal'].search([('type', '=', 'sale')])[0] self.partner3 = self.env.ref('base.res_partner_3') - account_user_type = self.env.ref('account.data_account_type_receivable') - self.account_rec1_id = self.account_model.sudo(self.account_manager.id).create(dict( - code="cust_acc", - name="customer account", - user_type_id=account_user_type.id, - reconcile=True, - )) - invoice_line_data = [ - (0, 0, - { - 'product_id': self.env.ref('product.product_product_5').id, - 'quantity': 10.0, - 'account_id': self.env['account.account'].search( - [('user_type_id', '=', self.env.ref('account.data_account_type_revenue').id)], limit=1).id, - 'name': 'product test 5', - 'price_unit': 100.00, - } - ) - ] - self.invoice_basic = self.account_invoice_obj.sudo(self.account_user.id).create(dict( - name="Test Customer Invoice", - reference_type="none", - payment_term_id=self.payment_term.id, - journal_id=self.journalrec.id, - partner_id=self.partner3.id, - account_id=self.account_rec1_id.id, - invoice_line_ids=invoice_line_data - )) + self.invoice_basic = self.account_invoice_obj.with_user(self.account_user).create({ + 'type': 'out_invoice', + 'name': "Test Customer Invoice", + 'invoice_payment_term_id': self.payment_term.id, + 'journal_id': self.journalrec.id, + 'partner_id': self.partner3.id, + # account_id=self.account_rec1_id.id, + 'line_ids': [(0, 0, { + 'product_id': self.env.ref('product.product_product_5').id, + 'quantity': 10.0, + 'account_id': self.env['account.account'].search( + [('user_type_id', '=', self.env.ref('account.data_account_type_revenue').id)], limit=1).id, + 'name': 'product test 5', + 'price_unit': 100.00, + })], + }) self.assertEqual(self.invoice_basic.state, 'draft') - self.invoice_basic.action_invoice_open() - self.assertEqual(self.invoice_basic.state, 'open') + self.invoice_basic.action_post() + self.assertEqual(self.invoice_basic.state, 'posted') self.assertEqual(self.invoice_basic.date, fields.Date.today()) - self.assertEqual(self.invoice_basic.user_id, self.account_user) - self.assertEqual(self.invoice_basic.move_id.date, fields.Date.today()) - self.assertEqual(self.invoice_basic.move_id.line_ids[0].date, fields.Date.today()) + self.assertEqual(self.invoice_basic.invoice_date, fields.Date.today()) + self.assertEqual(self.invoice_basic.invoice_user_id, self.account_user) + self.assertEqual(self.invoice_basic.line_ids[0].date, fields.Date.today()) - ctx = {'active_model': 'account.invoice', 'active_ids': [self.invoice_basic.id]} + ctx = {'active_model': 'account.move', 'active_ids': [self.invoice_basic.id]} change = self.env['account.invoice.change'].with_context(ctx).create({}) self.assertEqual(change.date, self.invoice_basic.date) - self.assertEqual(change.user_id, self.invoice_basic.user_id) + self.assertEqual(change.invoice_date, self.invoice_basic.invoice_date) + self.assertEqual(change.invoice_user_id, self.invoice_basic.invoice_user_id) change_date = '2018-01-01' + change_invoice_date = '2019-01-01' change_user = self.env.user - change.write({'user_id': change_user.id, 'date': change_date}) + change.write({'invoice_user_id': change_user.id, 'date': change_date, 'invoice_date': change_invoice_date}) change.affect_change() - self.assertEqual(self.invoice_basic.date, change_date) - self.assertEqual(self.invoice_basic.user_id, change_user) - self.assertEqual(self.invoice_basic.move_id.date, change_date) - self.assertEqual(self.invoice_basic.move_id.line_ids[0].date, change_date) + self.assertEqual(str(self.invoice_basic.date), change_date) + self.assertEqual(str(self.invoice_basic.invoice_date), change_invoice_date) + self.assertEqual(self.invoice_basic.invoice_user_id, change_user) + self.assertEqual(str(self.invoice_basic.line_ids[0].date), change_date) diff --git a/account_invoice_change/wizard/invoice_change.py b/account_invoice_change/wizard/invoice_change.py index def9583f..63baae08 100644 --- a/account_invoice_change/wizard/invoice_change.py +++ b/account_invoice_change/wizard/invoice_change.py @@ -6,10 +6,11 @@ class InvoiceChangeWizard(models.TransientModel): _name = 'account.invoice.change' _description = 'Invoice Change' - invoice_id = fields.Many2one('account.invoice', string='Invoice', readonly=True, required=True) - invoice_company_id = fields.Many2one('res.company', readonly=True, related='invoice_id.company_id') - user_id = fields.Many2one('res.users', string='Salesperson') + move_id = fields.Many2one('account.move', string='Invoice', readonly=True, required=True) + move_company_id = fields.Many2one('res.company', readonly=True, related='move_id.company_id') + invoice_user_id = fields.Many2one('res.users', string='Salesperson') date = fields.Date(string='Accounting Date') + invoice_date = fields.Date(string='Invoice Date') @api.model def default_get(self, fields): @@ -22,35 +23,35 @@ class InvoiceChangeWizard(models.TransientModel): if not active_model or not active_ids: raise UserError( _("Programmation error: wizard action executed without active_model or active_ids in context.")) - if active_model != 'account.invoice': + if active_model != 'account.move': raise UserError(_( - "Programmation error: the expected model for this action is 'account.invoice'. The provided one is '%d'.") % active_model) + "Programmation error: the expected model for this action is 'account.move'. The provided one is '%d'.") % active_model) # Checks on received invoice records invoice = self.env[active_model].browse(active_ids) if len(invoice) != 1: raise UserError(_("Invoice Change expects only one invoice.")) rec.update({ - 'invoice_id': invoice.id, - 'user_id': invoice.user_id.id, + 'move_id': invoice.id, + 'invoice_user_id': invoice.invoice_user_id.id, 'date': invoice.date, + 'invoice_date': invoice.invoice_date, }) return rec - def _new_invoice_vals(self): + def _new_move_vals(self): vals = {} - if self.invoice_id.user_id != self.user_id: - vals['user_id'] = self.user_id.id - if self.invoice_id.date != self.date: + if self.move_id.invoice_user_id != self.invoice_user_id: + vals['invoice_user_id'] = self.invoice_user_id.id + if self.move_id.date != self.date: vals['date'] = self.date + if self.move_id.invoice_date != self.invoice_date: + vals['invoice_date'] = self.invoice_date return vals - @api.multi def affect_change(self): self.ensure_one() - vals = self._new_invoice_vals() + vals = self._new_move_vals() if vals: - self.invoice_id.write(vals) - if 'date' in vals and self.invoice_id.move_id: - self.invoice_id.move_id.write({'date': vals['date']}) + self.move_id.write(vals) return True diff --git a/account_invoice_change/wizard/invoice_change_views.xml b/account_invoice_change/wizard/invoice_change_views.xml index 5852570c..5e233688 100644 --- a/account_invoice_change/wizard/invoice_change_views.xml +++ b/account_invoice_change/wizard/invoice_change_views.xml @@ -7,9 +7,10 @@
- - - + + + + @@ -26,21 +27,20 @@ Invoice Change Wizard ir.actions.act_window account.invoice.change - form form new - - account.invoice.form.inherit - account.invoice - + + account.move.form.inherit.invoice.change + account.move +