bemade_multiple_billing_contacts: incorporating views

This commit is contained in:
Marc Durepos 2023-09-13 11:39:43 -04:00
parent 866f650ffe
commit 8974d412de
5 changed files with 24 additions and 10 deletions

View file

@ -31,7 +31,8 @@
'account',
'bemade_partner_root_ancestor',
],
'data': [],
'data': ['views/account_move_views.xml',
'views/res_partner_views.xml'],
'demo': [],
'installable': True,
'auto_install': False,

View file

@ -8,7 +8,7 @@ class AccountMove(models.Model):
string="Billing Contacts",
compute='_compute_billing_contacts',
inverse='_inverse_billing_contacts',
store=True)
store=True,)
@api.depends('line_ids.sale_line_ids.order_id', 'partner_id')
def _compute_billing_contacts(self):

View file

@ -8,11 +8,14 @@ class Partner(models.Model):
comodel_name='res.partner',
compute='_compute_billing_contacts',
inverse='_inverse_billing_contacts')
potential_billing_contacts = fields.Many2many(comodel_name='res.partner',
compute='_compute_billing_contacts')
@api.depends('child_ids.type')
def _compute_billing_contacts(self):
for rec in self:
rec.billing_contacts = rec.child_ids.filtered(lambda r: r.type == 'invoice')
rec.potential_billing_contacts = rec.child_ids | rec.parent_id.child_ids if rec.is_company else None
@api.depends('billing_contacts')
def _inverse_billing_contacts(self):

View file

@ -34,9 +34,11 @@ class TestBillingContacts(TransactionCase):
'parent_id': cls.parent_co.id,
'type': 'contact',
})
cls.product = cls.env['product.product'].with_company(cls.parent_co.company_id).create({
cls.product = cls.env['product.product'].with_company(
cls.parent_co.company_id).create({
'name': 'Product',
'categ_id': cls.env['product.category'].create({'name': 'Product Category'}).id,
'categ_id': cls.env['product.category'].create(
{'name': 'Product Category'}).id,
'list_price': 100.0,
'type': 'service',
'uom_id': cls.env.ref('uom.product_uom_unit').id,
@ -70,19 +72,23 @@ class TestBillingContacts(TransactionCase):
self.assertTrue(self.non_billing_contact not in self.parent_co.billing_contacts)
def test_sale_order_default_billing_contacts(self):
self.assertTrue(self.sale_order.billing_contacts == self.parent_co.billing_contacts)
self.assertTrue(
self.sale_order.billing_contacts == self.parent_co.billing_contacts)
def test_sale_order_change_contacts(self):
# Test that changing the billing contacts on an SO doesn't change them on the partner
self.sale_order.write({'billing_contacts': [Command.link(self.non_billing_contact.id)]})
self.assertTrue(all([c in self.sale_order.billing_contacts for c in self.parent_co.billing_contacts]))
self.sale_order.write(
{'billing_contacts': [Command.link(self.non_billing_contact.id)]})
self.assertTrue(all([c in self.sale_order.billing_contacts for c in
self.parent_co.billing_contacts]))
self.assertTrue(self.non_billing_contact not in self.parent_co.billing_contacts)
self.assertTrue(self.non_billing_contact in self.sale_order.billing_contacts)
def test_sale_order_to_invoice_contacts(self):
# Test that the invoices created from sales orders take the billing contacts configured on the SO
self.sale_order.write({'billing_contacts': [Command.link(self.non_billing_contact.id)]})
self.sale_order.write(
{'billing_contacts': [Command.link(self.non_billing_contact.id)]})
self.sale_order.action_confirm()
wiz = self.env['sale.advance.payment.inv'].create({})
@ -99,10 +105,12 @@ class TestBillingContacts(TransactionCase):
self.assertTrue(self.parent_co.billing_contacts == invoice.billing_contacts)
def test_invoice_followers_on_validate(self):
# Make sure all billing contacts get added as followers upon validating the invoice
self.sale_order.action_confirm()
wiz = self.env['sale.advance.payment.inv'].create({})
invoice = wiz._create_invoice(self.sale_order, self.sale_order.order_line[0],
self.sale_order.order_line.price_total)
invoice.write({'date': datetime.date.today()})
invoice.action_post()
self.assertTrue(all([r in invoice.message_partner_ids for r in self.parent_co.billing_contacts]))
self.assertTrue(all([r in invoice.message_partner_ids for r in
self.parent_co.billing_contacts]))

View file

@ -10,7 +10,9 @@
<page name="default_contacts" string="Default Contacts"
help="Settings for default contacts to whom different correspondence should be sent.">
<group>
<field name="billing_contacts" attrs="{'invisible': [('company_type', '=', 'person')]}">
<field name="billing_contacts"
domain="[('parent_id', '=', id),
('is_company', '=', False)]">
<tree editable="bottom">
<field name="name" widget="res_partner_many2one" />
<field name="email" widget="email"/>