Skip to content

Commit

Permalink
[14.0][MIG] account_invoice_partner from 10.0
Browse files Browse the repository at this point in the history
  • Loading branch information
acsonefho committed Oct 11, 2021
1 parent 959b478 commit babd61d
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 34 deletions.
3 changes: 2 additions & 1 deletion account_invoice_partner/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3


=================================================
Automatically select invoicing partner on invoice
=================================================
Expand Down Expand Up @@ -64,4 +65,4 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

To contribute to this module, please visit https://odoo-community.org.
To contribute to this module, please visit https://odoo-community.org.
2 changes: 1 addition & 1 deletion account_invoice_partner/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

{
"name": "Automatically select invoicing partner on invoice",
"summary": """Replace the partner by an invoice contact if found""",
"summary": "Replace the partner by an invoice contact if found",
"author": "Therp BV,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/account-invoicing",
"category": "Accounting & Finance",
Expand Down
2 changes: 1 addition & 1 deletion account_invoice_partner/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
from . import account_invoice
from . import account_move
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@
from odoo import api, models


class AccountInvoice(models.Model):
_inherit = "account.invoice"
class AccountMove(models.Model):
_inherit = "account.move"

@api.onchange("partner_id", "company_id")
def _onchange_partner_id(self):
"""
Replace the selected partner with the preferred invoice contact
"""
partner_invoice_id = self.partner_id
partner_invoice = self.partner_id
if self.partner_id:
addr_ids = self.partner_id.address_get(adr_pref=["invoice"])
partner_invoice_id = self.env["res.partner"].browse(addr_ids["invoice"])
result = super(AccountInvoice, self)._onchange_partner_id()
if partner_invoice_id != self.partner_id:
self.partner_id = partner_invoice_id
partner_invoice = self.env["res.partner"].browse(addr_ids["invoice"])
result = super()._onchange_partner_id()
if partner_invoice != self.partner_id:
self.partner_id = partner_invoice
return result
39 changes: 15 additions & 24 deletions account_invoice_partner/tests/test_account_invoice_partner.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,40 +7,32 @@
class TestAccountInvoiceParner(SavepointCase):
@classmethod
def setUpClass(cls):
super(TestAccountInvoiceParner, cls).setUpClass()
super().setUpClass()

# MODELS
cls.inv_model = cls.env["account.invoice"]
cls.partner_model = cls.env["res.partner"]
cls.AccountMove = cls.env["account.move"]
cls.ResPartner = cls.env["res.partner"]
cls.AccountAccount = cls.env["account.account"]
cls.AccountJournal = cls.env["account.journal"]

# INSTANCE
# partners
partners = cls.partner_model.search(
[("type", "!=", "invoice"), ("child_ids", "=", False)]
partners = cls.ResPartner.search(
[("type", "!=", "invoice"), ("child_ids", "=", False)], limit=2
)
cls.partner = partners[0]
cls.partner_2 = partners[1]

# invoice
account_payable = cls.env["account.account"].create(
{
"code": "X1111",
"name": "Sale - Test Payable Account",
"user_type_id": cls.env.ref("account.data_account_type_payable").id,
"reconcile": True,
}
)
journal = cls.env["account.journal"].create(
journal = cls.AccountJournal.create(
{"name": "Purchase Journal - Test", "code": "STPJ", "type": "purchase"}
)
invoice_vals = {
"name": "TEST",
"type": "in_invoice",
"move_type": "in_invoice",
"partner_id": cls.partner.id,
"account_id": account_payable.id,
"journal_id": journal.id,
}
cls.invoice = cls.env["account.invoice"].create(invoice_vals)
cls.invoice = cls.AccountMove.create(invoice_vals)

def test_0(self):
# these partners are differents
Expand All @@ -50,15 +42,14 @@ def test_0(self):
self.assertEqual(self.invoice.partner_id, self.partner)

# partner has no address defined for invoice
res = self.invoice._onchange_partner_id()
self.assertFalse("value" in res)
self.invoice._onchange_partner_id()
self.assertEqual(self.invoice.partner_id, self.partner)

# change partner type to define partner invoice address
self.partner_2.write({"type": "invoice"})
self.partner.write({"child_ids": [(6, 0, self.partner_2.ids)]})
data = self.partner._convert_to_write(self.partner._cache)
self.assertEqual(data["child_ids"], [(6, 0, self.partner_2.ids)])
self.assertIn(self.partner_2, self.partner.child_ids)

# test onchange function
res = self.invoice._onchange_partner_id()
self.assertEqual(self.invoice.partner_id.id, self.partner_2.id)
self.invoice._onchange_partner_id()
self.assertEqual(self.invoice.partner_id, self.partner_2)

0 comments on commit babd61d

Please sign in to comment.