summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorJorge Pinna Puissant <jpp@odoo.com>2019-03-04 09:00:29 +0000
committerJorge Pinna Puissant <jpp@odoo.com>2019-03-18 08:47:57 +0000
commit1ceb68980512b94aad98472650d9db7ea029a4ed (patch)
treee1ab92f4e26f05752c5101ebc42ed4451a30dbc6 /addons
parenta03bd36ec82c32f36d26714e1040418d9113b523 (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.py20
-rw-r--r--addons/account/tests/test_account_supplier_invoice.py36
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)