diff --git a/addons/account/models/account_invoice.py b/addons/account/models/account_invoice.py index 35ae3065467..96fc0b37fb1 100644 --- a/addons/account/models/account_invoice.py +++ b/addons/account/models/account_invoice.py @@ -451,6 +451,9 @@ class AccountInvoice(models.Model): @api.model def create(self, vals): + if not vals.get('journal_id') and vals.get('type'): + vals['journal_id'] = self.with_context(type=vals.get('type'))._default_journal().id + onchanges = { '_onchange_partner_id': ['account_id', 'payment_term_id', 'fiscal_position_id', 'partner_bank_id'], '_onchange_journal_id': ['currency_id'], diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py index dc38e526693..a90f1c8421d 100644 --- a/addons/account/models/account_move.py +++ b/addons/account/models/account_move.py @@ -1361,6 +1361,9 @@ class AccountPartialReconcile(models.Model): ''' return tax.cash_basis_base_account_id or line.account_id + def _get_amount_tax_cash_basis(self, amount, line): + return line.company_id.currency_id.round(amount) + def create_tax_cash_basis_entry(self, percentage_before_rec): self.ensure_one() move_date = self.debit_move_id.date @@ -1377,7 +1380,7 @@ class AccountPartialReconcile(models.Model): percentage_after = line._get_matched_percentage()[move.id] #amount is the current cash_basis amount minus the one before the reconciliation amount = line.balance * percentage_after - line.balance * percentage_before - rounded_amt = line.company_id.currency_id.round(amount) + rounded_amt = self._get_amount_tax_cash_basis(amount, line) if float_is_zero(rounded_amt, precision_rounding=line.company_id.currency_id.rounding): continue if line.tax_line_id and line.tax_line_id.tax_exigibility == 'on_payment': diff --git a/addons/account/tests/test_account_supplier_invoice.py b/addons/account/tests/test_account_supplier_invoice.py index d6584ab6138..d1a6ef46902 100644 --- a/addons/account/tests/test_account_supplier_invoice.py +++ b/addons/account/tests/test_account_supplier_invoice.py @@ -24,6 +24,7 @@ class TestAccountSupplierInvoice(AccountingTestCase): 'account_id': invoice_account, 'type': 'in_invoice', }) + self.assertEquals(invoice.journal_id.type, 'purchase') self.env['account.invoice.line'].create({'product_id': self.env.ref('product.product_product_4').id, 'quantity': 1.0, @@ -79,6 +80,7 @@ class TestAccountSupplierInvoice(AccountingTestCase): 'account_id': invoice_account, 'type': 'in_invoice', }) + self.assertEquals(invoice.journal_id.type, 'purchase') invoice_line = self.env['account.invoice.line'].create({'product_id': self.env.ref('product.product_product_4').id, 'quantity': 5.0, diff --git a/addons/account/views/account_view.xml b/addons/account/views/account_view.xml index 44b6835f0aa..03ebd6038b8 100644 --- a/addons/account/views/account_view.xml +++ b/addons/account/views/account_view.xml @@ -866,7 +866,7 @@