diff --git a/crm_event/__manifest__.py b/crm_event/__manifest__.py index 4c42b7fa4..d3b5837dc 100644 --- a/crm_event/__manifest__.py +++ b/crm_event/__manifest__.py @@ -3,7 +3,7 @@ { "name": "CRM Event Category", "summary": "Link opportunities to event categories", - "version": "13.0.1.1.0", + "version": "15.0.1.0.0", "development_status": "Production/Stable", "category": "Event Management", "website": "https://github.com/OCA/event", diff --git a/crm_event/models/event_type.py b/crm_event/models/event_type.py index a9533e6da..05dcf1bff 100644 --- a/crm_event/models/event_type.py +++ b/crm_event/models/event_type.py @@ -47,7 +47,6 @@ def _events_domain(self): # events when clicking on it, so it seems more user-friendly to # include these events, even if they finished earlier today. ("date_end", ">=", fields.Date.today()), - ("state", "!=", "cancel"), ] def _compute_event_totals(self): @@ -56,7 +55,7 @@ def _compute_event_totals(self): types_with_unlimited_seats = ( self.env["event.event"] .search( - domain + [("seats_availability", "=", "unlimited")], + domain + [("seats_limited", "=", False)], ) .mapped("event_type_id") ) @@ -65,17 +64,12 @@ def _compute_event_totals(self): fields=["seats_available"], groupby=["event_type_id"], ) - translated_unlimited = dict( - self.env["event.event"].fields_get(["seats_availability"])[ - "seats_availability" - ]["selection"] - )["unlimited"] totals = {group["event_type_id"][0]: group for group in results} for one in self: totals_item = totals.get(one.id, {}) event_count = totals_item.get("event_type_id_count", 0) seats_sum = ( - translated_unlimited + _("Unlimited") if one in types_with_unlimited_seats else totals_item.get("seats_available", "0") ) diff --git a/crm_event/readme/CONTRIBUTORS.rst b/crm_event/readme/CONTRIBUTORS.rst index 7ee45dc9b..7de327916 100644 --- a/crm_event/readme/CONTRIBUTORS.rst +++ b/crm_event/readme/CONTRIBUTORS.rst @@ -1 +1,4 @@ -* Jairo Llopis (https://www.tecnativa.com/) +* `Tecnativa `__: + + * Jairo Llopis + * Stefan Ungureanu diff --git a/crm_event/reports/event_type_report.py b/crm_event/reports/event_type_report.py index 32eb29461..786d1ec7d 100644 --- a/crm_event/reports/event_type_report.py +++ b/crm_event/reports/event_type_report.py @@ -48,8 +48,8 @@ def _select(self, fields_=()): ("events_available_count", "COUNT(ee.*)"), ( "event_seats_availability", - """CASE WHEN 'unlimited' = ANY(ARRAY_AGG(seats_availability)) - THEN 'unlimited' ELSE 'limited' END""", + """CASE WHEN ee.seats_limited + THEN 'limited' ELSE 'unlimited' END""", ), ("seats_limited_available", "COALESCE(SUM(ee.seats_available), 0)"), ("open_opportunities_count", "et.open_opportunities_count"), @@ -80,10 +80,7 @@ def _where(self, clauses=()): Arguments: clauses: `("mt.field >= 10 OR mt.field < 0", ...)` """ - clauses += ( - "ee.state IS NULL OR ee.state != 'cancel'", - "ee.date_end IS NULL OR ee.date_end >= CURRENT_DATE", - ) + clauses += ("ee.date_end IS NULL OR ee.date_end >= CURRENT_DATE",) result = sql.Composed(map(sql.SQL, clauses)).join(" AND ") return result @@ -93,7 +90,7 @@ def _groupby(self, clauses=()): Arguments: clauses: `("mt.field", ...)` """ - clauses += ("et.id",) + clauses += ("et.id", "ee.seats_limited") result = sql.Composed(map(sql.SQL, clauses)).join(", ") return result diff --git a/crm_event/tests/test_event_type.py b/crm_event/tests/test_event_type.py index 8e628f3a8..3581010bd 100644 --- a/crm_event/tests/test_event_type.py +++ b/crm_event/tests/test_event_type.py @@ -3,10 +3,10 @@ from datetime import datetime, timedelta -from odoo.tests.common import SavepointCase +from odoo.tests.common import TransactionCase -class CrmEventCase(SavepointCase): +class CrmEventCase(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() @@ -21,7 +21,7 @@ def setUpClass(cls): "date_begin": datetime.now() - timedelta(days=1), "date_end": datetime.now() - timedelta(minutes=1), "name": "Today's past event", - "seats_availability": "limited", + "seats_limited": True, "seats_max": 1, }, { @@ -29,7 +29,7 @@ def setUpClass(cls): "date_begin": datetime.now() - timedelta(days=2), "date_end": datetime.now() - timedelta(days=1), "name": "Yesterday's past event", - "seats_availability": "limited", + "seats_limited": True, "seats_max": 10, }, { @@ -37,7 +37,7 @@ def setUpClass(cls): "date_begin": datetime.now() - timedelta(days=1), "date_end": datetime.now() + timedelta(days=1), "name": "Present event", - "seats_availability": "limited", + "seats_limited": True, "seats_max": 100, }, { @@ -45,7 +45,7 @@ def setUpClass(cls): "date_begin": datetime.now() + timedelta(days=1), "date_end": datetime.now() + timedelta(days=2), "name": "Future event", - "seats_availability": "limited", + "seats_limited": True, "seats_max": 1000, }, ] @@ -55,7 +55,7 @@ def setUpClass(cls): cls.b_events = cls.env["event.event"] for event in cls.a_events: cls.b_events |= event.copy({"event_type_id": cls.type_b.id}) - cls.b_events[0].seats_availability = "unlimited" + cls.b_events[0].seats_limited = False # Leads and opportunities test data cls.opportunities = cls.env["crm.lead"].create( [ diff --git a/crm_event/views/crm_lead_view.xml b/crm_event/views/crm_lead_view.xml index 7cda3ee0a..cec5edbc4 100644 --- a/crm_event/views/crm_lead_view.xml +++ b/crm_event/views/crm_lead_view.xml @@ -32,7 +32,7 @@
- +