diff options
| author | Jorge Pinna Puissant <jpp@odoo.com> | 2019-03-04 09:00:29 +0000 |
|---|---|---|
| committer | Jorge Pinna Puissant <jpp@odoo.com> | 2019-03-18 08:47:57 +0000 |
| commit | 1ceb68980512b94aad98472650d9db7ea029a4ed (patch) | |
| tree | e1ab92f4e26f05752c5101ebc42ed4451a30dbc6 /addons | |
| parent | a03bd36ec82c32f36d26714e1040418d9113b523 (diff) | |
[FIX] account: missing partner bank account in vendor credit note
Have a partner (vendor) with a bank account.
Create a Vendor Bills. Change the form view of the vendors bills to
display the field partner_bank_id ('Bank account').
The field shows correctly the bank account of the vendor.
Before this commit, when creating a Credit Note, the field
partner_bank_id is empty.
Now, the field parnet_bank_id is the one of the Company.
opw-1903143
closes odoo/odoo#31554
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/account/models/account_invoice.py | 20 | ||||
| -rw-r--r-- | addons/account/tests/test_account_supplier_invoice.py | 36 |
2 files changed, 50 insertions, 6 deletions
diff --git a/addons/account/models/account_invoice.py b/addons/account/models/account_invoice.py index 05c358f354c..be3e8ab52a4 100644 --- a/addons/account/models/account_invoice.py +++ b/addons/account/models/account_invoice.py @@ -499,16 +499,19 @@ class AccountInvoice(models.Model): """ res = super(AccountInvoice, self).default_get(default_fields) - if not res.get('type', False) == 'out_invoice' or not 'company_id' in res: + if res.get('type', False) not in ('out_invoice', 'in_refund') or not 'company_id' in res: return res - company = self.env['res.company'].browse(res['company_id']) - if company.partner_id: - partner_bank_result = self.env['res.partner.bank'].search([('partner_id', '=', company.partner_id.id)], limit=1) - if partner_bank_result: - res['partner_bank_id'] = partner_bank_result.id + partner_bank_result = self._get_partner_bank_id(res['company_id']) + if partner_bank_result: + res['partner_bank_id'] = partner_bank_result.id return res + def _get_partner_bank_id(self, company_id): + company = self.env['res.company'].browse(company_id) + if company.partner_id: + return self.env['res.partner.bank'].search([('partner_id', '=', company.partner_id.id)], limit=1) + @api.model def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False): def get_view_id(xid, name): @@ -1353,6 +1356,11 @@ class AccountInvoice(models.Model): values['payment_term_id'] = False values['refund_invoice_id'] = invoice.id + if values['type'] == 'in_refund': + partner_bank_result = self._get_partner_bank_id(values['company_id']) + if partner_bank_result: + values['partner_bank_id'] = partner_bank_result.id + if date: values['date'] = date if description: diff --git a/addons/account/tests/test_account_supplier_invoice.py b/addons/account/tests/test_account_supplier_invoice.py index e28a4b4f893..9d3046577d7 100644 --- a/addons/account/tests/test_account_supplier_invoice.py +++ b/addons/account/tests/test_account_supplier_invoice.py @@ -105,3 +105,39 @@ class TestAccountSupplierInvoice(AccountingTestCase): #I cancel the account move which is in posted state and verifies that it gives warning message with self.assertRaises(Warning): invoice.move_id.button_cancel() + + def test_vendor_bill_refund(self): + invoice_account = self.env['account.account'].search( + [('user_type_id', '=', self.env.ref('account.data_account_type_receivable').id)], limit=1) + invoice_line_account = self.env['account.account'].search( + [('user_type_id', '=', self.env.ref('account.data_account_type_expenses').id)], limit=1) + + if self.env.ref('base.main_partner').bank_account_count > 0: + bank = self.env['res.partner.bank'].search([('partner_id', '=', self.env.ref('base.main_partner').id)], limit=1) + + else: + bank = self.env['res.partner.bank'].create({ + 'acc_number': '12345678910', + 'partner_id': self.env.ref('base.main_partner').id, + }) + + invoice_id = self.env['account.invoice'].create({ + 'name': 'invoice test refund', + 'reference_type': 'none', + 'partner_id': self.env.ref("base.res_partner_2").id, + 'account_id': invoice_account.id, + 'currency_id': self.env.ref('base.USD').id, + 'type': 'in_invoice', + }) + self.env['account.invoice.line'].create({ + 'product_id': self.env.ref("product.product_product_4").id, + 'quantity': 1, + 'price_unit': 15.0, + 'invoice_id': invoice_id.id, + 'name': 'something', + 'account_id': invoice_line_account.id, + }) + + refund_invoices = invoice_id.refund() + + self.assertEqual(refund_invoices.partner_bank_id, bank) |
