mirror of
https://gitlab.com/flectra-hq/flectra.git
synced 2025-02-25 18:55:21 -06:00
[PATCH] Upstream patch - 05122023
This commit is contained in:
@@ -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 {}
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user