[PATCH] Upstream patch - 05122023

This commit is contained in:
Parthiv Patel
2023-12-05 08:34:24 +00:00
parent 5dffc367b5
commit 457a5bdb69
4 changed files with 50 additions and 10 deletions

View File

@@ -77,19 +77,18 @@ class Partner(models.Model):
meeting_data = self.env.cr.fetchall()
# Create a dict {partner_id: event_ids} and fill with events linked to the partner
meetings = {p.id: set() for p in all_partners}
for m in meeting_data:
meetings[m[0]].add(m[1])
meetings = {}
for p_id, m_id, _ in meeting_data:
meetings.setdefault(p_id, set()).add(m_id)
# Add the events linked to the children of the partner
all_partners.read(['parent_id'])
for p in all_partners:
for p in self.browse(meetings.keys()):
partner = p
while partner:
if partner in self:
meetings[partner.id] |= meetings[p.id]
while partner.parent_id:
partner = partner.parent_id
return {p.id: list(meetings[p.id]) for p in self if p.id}
if partner in self:
meetings[partner.id] = meetings.get(partner.id, set()) | meetings[p.id]
return {p_id: list(meetings[p_id]) if p_id in meetings else [] for p_id in self.ids}
return {}

View File

@@ -24,6 +24,8 @@ class TestResPartner(TransactionCase):
test_partner_3 = Partner.create({'name': 'test_partner_3', 'parent_id': test_partner_1.id})
test_partner_4 = Partner.create({'name': 'test_partner_4', 'parent_id': test_partner_3.id})
test_partner_5 = Partner.create({'name': 'test_partner_5'})
test_partner_6 = Partner.create({'name': 'test_partner_6'})
test_partner_7 = Partner.create({'name': 'test_partner_7', 'parent_id': test_partner_6.id})
Event.create({'name': 'event_1',
'partner_ids': [(6, 0, [test_partner_1.id,
@@ -48,7 +50,8 @@ class TestResPartner(TransactionCase):
Event.create({'name': 'event_7',
'partner_ids': [(6, 0, [test_partner_5.id])]})
Event.create({'name': 'event_8',
'partner_ids': [(6, 0, [test_partner_5.id])]})
'partner_ids': [(6, 0, [test_partner_5.id,
test_partner_7.id])]})
#Test rule to see if ir.rules are applied
calendar_event_model_id = self.env['ir.model']._get('calendar.event').id
@@ -71,3 +74,5 @@ class TestResPartner(TransactionCase):
self.assertEqual(test_partner_3.meeting_count, 6)
self.assertEqual(test_partner_4.meeting_count, 3)
self.assertEqual(test_partner_5.meeting_count, 2)
self.assertEqual(test_partner_6.meeting_count, 1)
self.assertEqual(test_partner_7.meeting_count, 1)

View File

@@ -54,6 +54,13 @@ class SaleOrder(models.Model):
else:
order.is_abandoned_cart = False
@api.onchange('partner_id')
def onchange_partner_id(self):
super().onchange_partner_id()
for order in self:
if order.website_id:
order.payment_term_id = order.website_id.with_company(order.company_id).sale_get_payment_term(order.partner_id)
def _search_abandoned_cart(self, operator, value):
abandoned_delay = self.website_id and self.website_id.cart_abandoned_delay or 1.0
abandoned_datetime = fields.Datetime.to_string(datetime.utcnow() - relativedelta(hours=abandoned_delay))

View File

@@ -265,3 +265,32 @@ class TestWebsiteSaleCheckoutAddress(TransactionCaseWithUserDemo, HttpCaseWithUs
self.WebsiteSaleController.address(**self.default_address_values)
# Name cannot be changed if there are issued invoices
self.assertNotEqual(self.portal_partner.name, self.default_address_values['name'], "Portal User should not be able to change the name if they have invoices under their name.")
def test_06_payment_term_when_address_change(self):
''' This test ensures that the payment term set when triggering
`onchange_partner_id` by changing the address of a website sale
order is computed by `sale_get_payment_term`.
'''
self._setUp_multicompany_env()
product_id = self.env['product.product'].create({
'name': 'Product A',
'list_price': 100,
'website_published': True,
'sale_ok': True}).id
env = api.Environment(self.env.cr, self.portal_user.id, {})
with MockRequest(env, website=self.website.with_env(env).with_context(website_id=self.website.id)) as req:
req.httprequest.method = "POST"
self.WebsiteSaleController.cart_update(product_id)
so = self.portal_user.sale_order_ids[0]
self.assertTrue(so.payment_term_id, "A payment term should be set by default on the sale order")
self.default_address_values['partner_id'] = self.portal_partner.id
self.default_address_values['name'] = self.portal_partner.name
self.WebsiteSaleController.address(**self.default_address_values)
self.assertTrue(so.payment_term_id, "A payment term should still be set on the sale order")
so.website_id = False
self.WebsiteSaleController.address(**self.default_address_values)
self.assertFalse(so.payment_term_id, "The website default payment term should not be set on a sale order not coming from the website")