From f9b325fe230ea4ecba4074604435dfcc8ab95d0e Mon Sep 17 00:00:00 2001
From: Jairo Llopis
Date: Fri, 5 Feb 2021 16:42:41 +0000
Subject: [PATCH 01/23] [ADD] sale_crm_event_reservation: sell events like a
boss
This module extends the functionality of *crm_event*, *event_sale_reservation*
and *sale_crm* to support fast generation of event quotations from
opportunities and to allow you to sell events like a boss.
@Tecnativa TT27664
[UPD] Update sale_crm_event_reservation.pot
[UPD] README.rst
---
sale_crm_event_reservation/README.rst | 124 +++++
sale_crm_event_reservation/__init__.py | 2 +
sale_crm_event_reservation/__manifest__.py | 22 +
sale_crm_event_reservation/i18n/es.po | 146 ++++++
.../i18n/sale_crm_event_reservation.pot | 145 ++++++
.../readme/CONFIGURE.rst | 4 +
.../readme/CONTRIBUTORS.rst | 1 +
.../readme/DESCRIPTION.rst | 3 +
sale_crm_event_reservation/readme/INSTALL.rst | 4 +
sale_crm_event_reservation/readme/USAGE.rst | 21 +
.../reports/__init__.py | 1 +
.../reports/event_type_report.py | 14 +
.../reports/event_type_report_views.xml | 28 ++
.../static/description/icon.png | Bin 0 -> 9455 bytes
.../static/description/index.html | 466 ++++++++++++++++++
sale_crm_event_reservation/tests/__init__.py | 1 +
.../tests/test_wizard.py | 127 +++++
.../views/crm_lead_views.xml | 18 +
.../wizards/__init__.py | 1 +
.../wizards/crm_lead_event_sale_wizard.py | 128 +++++
.../crm_lead_event_sale_wizard_views.xml | 43 ++
21 files changed, 1299 insertions(+)
create mode 100644 sale_crm_event_reservation/README.rst
create mode 100644 sale_crm_event_reservation/__init__.py
create mode 100644 sale_crm_event_reservation/__manifest__.py
create mode 100644 sale_crm_event_reservation/i18n/es.po
create mode 100644 sale_crm_event_reservation/i18n/sale_crm_event_reservation.pot
create mode 100644 sale_crm_event_reservation/readme/CONFIGURE.rst
create mode 100644 sale_crm_event_reservation/readme/CONTRIBUTORS.rst
create mode 100644 sale_crm_event_reservation/readme/DESCRIPTION.rst
create mode 100644 sale_crm_event_reservation/readme/INSTALL.rst
create mode 100644 sale_crm_event_reservation/readme/USAGE.rst
create mode 100644 sale_crm_event_reservation/reports/__init__.py
create mode 100644 sale_crm_event_reservation/reports/event_type_report.py
create mode 100644 sale_crm_event_reservation/reports/event_type_report_views.xml
create mode 100644 sale_crm_event_reservation/static/description/icon.png
create mode 100644 sale_crm_event_reservation/static/description/index.html
create mode 100644 sale_crm_event_reservation/tests/__init__.py
create mode 100644 sale_crm_event_reservation/tests/test_wizard.py
create mode 100644 sale_crm_event_reservation/views/crm_lead_views.xml
create mode 100644 sale_crm_event_reservation/wizards/__init__.py
create mode 100644 sale_crm_event_reservation/wizards/crm_lead_event_sale_wizard.py
create mode 100644 sale_crm_event_reservation/wizards/crm_lead_event_sale_wizard_views.xml
diff --git a/sale_crm_event_reservation/README.rst b/sale_crm_event_reservation/README.rst
new file mode 100644
index 000000000..a310062f1
--- /dev/null
+++ b/sale_crm_event_reservation/README.rst
@@ -0,0 +1,124 @@
+==========================================
+Create event quotations from opportunities
+==========================================
+
+.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! This file is generated by oca-gen-addon-readme !!
+ !! changes will be overwritten. !!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
+ :target: https://odoo-community.org/page/development-status
+ :alt: Production/Stable
+.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+ :alt: License: AGPL-3
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fevent-lightgray.png?logo=github
+ :target: https://github.com/OCA/event/tree/12.0/sale_crm_event_reservation
+ :alt: OCA/event
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+ :target: https://translation.odoo-community.org/projects/event-12-0/event-12-0-sale_crm_event_reservation
+ :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
+ :target: https://runbot.odoo-community.org/runbot/199/12.0
+ :alt: Try me on Runbot
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
+This module extends the functionality of *crm_event*, *event_sale_reservation*
+and *sale_crm* to support fast generation of event quotations from
+opportunities and to allow you to sell events like a boss.
+
+**Table of contents**
+
+.. contents::
+ :local:
+
+Installation
+============
+
+To install this module, you need to:
+
+#. Install *crm_event* and *event_sale_reservation* from
+ https://github.com/OCA/event.
+
+Configuration
+=============
+
+To make use of this module, a user needs these minimal permissions:
+
+- Sales / User: Own Documents Only
+- Events / User
+
+Usage
+=====
+
+To use this module, you need to:
+
+#. Go to *CRM > My Pipeline*.
+#. Create one opportunity.
+#. Set basic fields.
+#. Set *Customer*, *Event type* and *Seats Wanted*.
+#. Click on *New Event Quotation*.
+
+A wizard will open. If you want to register the customer in an scheduled event:
+
+#. Select *Mode = Register in scheduled event*.
+#. Select *Event* and *Ticket*
+#. Click on *Generate quotation*
+
+Instead, if you want to reserve some seats for the customer in some upcoming event:
+
+#. Select *Mode = Reserve upcoming event*.
+#. Select *Product*, which must be a reservation product for the chosen event type.
+#. Click on *Generate quotation*
+
+In either case, you will be presented with a sale order created just for you.
+
+Bug Tracker
+===========
+
+Bugs are tracked on `GitHub Issues `_.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed
+`feedback `_.
+
+Do not contact contributors directly about support or help with technical issues.
+
+Credits
+=======
+
+Authors
+~~~~~~~
+
+* Tecnativa
+
+Contributors
+~~~~~~~~~~~~
+
+* Jairo Llopis (https://www.tecnativa.com)
+
+Maintainers
+~~~~~~~~~~~
+
+This module is maintained by the OCA.
+
+.. image:: https://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: https://odoo-community.org
+
+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.
+
+.. |maintainer-Yajo| image:: https://github.com/Yajo.png?size=40px
+ :target: https://github.com/Yajo
+ :alt: Yajo
+
+Current `maintainer `__:
+
+|maintainer-Yajo|
+
+This module is part of the `OCA/event `_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/sale_crm_event_reservation/__init__.py b/sale_crm_event_reservation/__init__.py
new file mode 100644
index 000000000..8b31d3971
--- /dev/null
+++ b/sale_crm_event_reservation/__init__.py
@@ -0,0 +1,2 @@
+from . import reports
+from . import wizards
diff --git a/sale_crm_event_reservation/__manifest__.py b/sale_crm_event_reservation/__manifest__.py
new file mode 100644
index 000000000..ebcfe70fa
--- /dev/null
+++ b/sale_crm_event_reservation/__manifest__.py
@@ -0,0 +1,22 @@
+# Copyright 2021 Tecnativa - Jairo Llopis
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+{
+ "name": "Create event quotations from opportunities",
+ "summary": "Combine event reservations, opportunities and quotations",
+ "version": "12.0.1.0.0",
+ "development_status": "Production/Stable",
+ "category": "Marketing",
+ "website": "https://github.com/OCA/event",
+ "author": "Tecnativa, Odoo Community Association (OCA)",
+ "maintainers": ["Yajo"],
+ "license": "AGPL-3",
+ "application": False,
+ "installable": True,
+ "auto_install": True,
+ "depends": ["crm_event", "event_sale_reservation", "sale_crm"],
+ "data": [
+ "reports/event_type_report_views.xml",
+ "wizards/crm_lead_event_sale_wizard_views.xml",
+ "views/crm_lead_views.xml",
+ ],
+}
diff --git a/sale_crm_event_reservation/i18n/es.po b/sale_crm_event_reservation/i18n/es.po
new file mode 100644
index 000000000..d976ee432
--- /dev/null
+++ b/sale_crm_event_reservation/i18n/es.po
@@ -0,0 +1,146 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_crm_event_reservation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 12.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-02-05 16:37+0000\n"
+"PO-Revision-Date: 2021-02-05 16:38+0000\n"
+"Last-Translator: Jairo Llopis \n"
+"Language-Team: \n"
+"Language: es_ES\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.4.2\n"
+
+#. module: sale_crm_event_reservation
+#: model_terms:ir.ui.view,arch_db:sale_crm_event_reservation.crm_lead_event_sale_wizard_view_form
+msgid "Cancel"
+msgstr "Cancelar"
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__create_date
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__display_name
+msgid "Display Name"
+msgstr "Nombre mostrado"
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__event_id
+msgid "Event"
+msgstr "Evento"
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__event_type_id
+msgid "Event type"
+msgstr "Categoría de evento"
+
+#. module: sale_crm_event_reservation
+#: model:ir.actions.act_window,name:sale_crm_event_reservation.crm_lead_event_sale_wizard_action
+msgid "Generate event quotation"
+msgstr "Generar presupuesto para evento"
+
+#. module: sale_crm_event_reservation
+#: model_terms:ir.ui.view,arch_db:sale_crm_event_reservation.crm_lead_event_sale_wizard_view_form
+msgid "Generate quotation"
+msgstr "Generar presupuesto"
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,help:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__mode
+msgid "How to create the event quotation?"
+msgstr "¿Cómo presupuestar el evento?"
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,help:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__seats_wanted
+msgid ""
+"If this lead/opportunity is related to a specific event type, indicate how "
+"many seats would you sell if won."
+msgstr ""
+"Si esta iniciativa u oportunidad está relacionada con una categoría "
+"específica de evento, indique cuántas plazas vendería si se gana."
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,help:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__event_type_id
+msgid ""
+"If this lead/opportunity is related to a specific event type, indicate it "
+"here."
+msgstr ""
+"Si esta iniciativa u oportunidad está relacionada con una categoría "
+"específica de evento, indíquelo aquí."
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard____last_update
+msgid "Last Modified on"
+msgstr "Última modificación en"
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Última actualización de"
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__write_date
+msgid "Last Updated on"
+msgstr "Última actualización en"
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__mode
+msgid "Mode"
+msgstr "Modo"
+
+#. module: sale_crm_event_reservation
+#: model_terms:ir.ui.view,arch_db:sale_crm_event_reservation.crm_case_form_view_oppor
+msgid "New Event Quotation"
+msgstr "Presupuestar evento"
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__opportunity_id
+msgid "Opportunity"
+msgstr "Oportunidad"
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__product_id
+msgid "Product"
+msgstr "Producto"
+
+#. module: sale_crm_event_reservation
+#: selection:crm.lead.event.sale.wizard,mode:0
+msgid "Register in scheduled event"
+msgstr "Registrar en un evento ya programado"
+
+#. module: sale_crm_event_reservation
+#: selection:crm.lead.event.sale.wizard,mode:0
+msgid "Reserve upcoming event"
+msgstr "Reservar un evento futuro"
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__seats_wanted
+msgid "Seats Wanted"
+msgstr "Asientos deseados"
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__event_ticket_id
+msgid "Ticket"
+msgstr "Ticket"
+
+#. module: sale_crm_event_reservation
+#: model:ir.model,name:sale_crm_event_reservation.model_crm_lead_event_sale_wizard
+msgid "Wizard to generate event quotation from event opportunity"
+msgstr "Asistente para presupuestar eventos desde una oportunidad de evento"
diff --git a/sale_crm_event_reservation/i18n/sale_crm_event_reservation.pot b/sale_crm_event_reservation/i18n/sale_crm_event_reservation.pot
new file mode 100644
index 000000000..cb696e052
--- /dev/null
+++ b/sale_crm_event_reservation/i18n/sale_crm_event_reservation.pot
@@ -0,0 +1,145 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_crm_event_reservation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 12.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: sale_crm_event_reservation
+#: model_terms:ir.ui.view,arch_db:sale_crm_event_reservation.crm_lead_event_sale_wizard_view_form
+msgid "Cancel"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__create_uid
+msgid "Created by"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__create_date
+msgid "Created on"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__event_id
+msgid "Event"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model,name:sale_crm_event_reservation.model_event_type_report
+msgid "Event categories analysis report"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__event_type_id
+msgid "Event category"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.actions.act_window,name:sale_crm_event_reservation.crm_lead_event_sale_wizard_action
+msgid "Generate event quotation"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model_terms:ir.ui.view,arch_db:sale_crm_event_reservation.crm_lead_event_sale_wizard_view_form
+msgid "Generate quotation"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,help:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__mode
+msgid "How to create the event quotation?"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__id
+msgid "ID"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,help:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__seats_wanted
+msgid "If this lead/opportunity is related to a specific event category, indicate how many seats would you sell if won."
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,help:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__event_type_id
+msgid "If this lead/opportunity is related to a specific event category, indicate it here."
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard____last_update
+msgid "Last Modified on"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__write_uid
+msgid "Last Updated by"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__write_date
+msgid "Last Updated on"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__mode
+msgid "Mode"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model_terms:ir.ui.view,arch_db:sale_crm_event_reservation.crm_case_form_view_oppor
+msgid "New Event Quotation"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__opportunity_id
+msgid "Opportunity"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__product_id
+msgid "Product"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: selection:crm.lead.event.sale.wizard,mode:0
+msgid "Register in scheduled event"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: selection:crm.lead.event.sale.wizard,mode:0
+msgid "Reserve upcoming event"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_event_type_report__seats_reservation_total
+msgid "Reserved seats"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__seats_wanted
+msgid "Seats Wanted"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__event_ticket_id
+msgid "Ticket"
+msgstr ""
+
+#. module: sale_crm_event_reservation
+#: model:ir.model,name:sale_crm_event_reservation.model_crm_lead_event_sale_wizard
+msgid "Wizard to generate event quotation from event opportunity"
+msgstr ""
+
diff --git a/sale_crm_event_reservation/readme/CONFIGURE.rst b/sale_crm_event_reservation/readme/CONFIGURE.rst
new file mode 100644
index 000000000..3e1ff454b
--- /dev/null
+++ b/sale_crm_event_reservation/readme/CONFIGURE.rst
@@ -0,0 +1,4 @@
+To make use of this module, a user needs these minimal permissions:
+
+- Sales / User: Own Documents Only
+- Events / User
diff --git a/sale_crm_event_reservation/readme/CONTRIBUTORS.rst b/sale_crm_event_reservation/readme/CONTRIBUTORS.rst
new file mode 100644
index 000000000..cfe37df6a
--- /dev/null
+++ b/sale_crm_event_reservation/readme/CONTRIBUTORS.rst
@@ -0,0 +1 @@
+* Jairo Llopis (https://www.tecnativa.com)
diff --git a/sale_crm_event_reservation/readme/DESCRIPTION.rst b/sale_crm_event_reservation/readme/DESCRIPTION.rst
new file mode 100644
index 000000000..b5856b162
--- /dev/null
+++ b/sale_crm_event_reservation/readme/DESCRIPTION.rst
@@ -0,0 +1,3 @@
+This module extends the functionality of *crm_event*, *event_sale_reservation*
+and *sale_crm* to support fast generation of event quotations from
+opportunities and to allow you to sell events like a boss.
diff --git a/sale_crm_event_reservation/readme/INSTALL.rst b/sale_crm_event_reservation/readme/INSTALL.rst
new file mode 100644
index 000000000..49a1ab408
--- /dev/null
+++ b/sale_crm_event_reservation/readme/INSTALL.rst
@@ -0,0 +1,4 @@
+To install this module, you need to:
+
+#. Install *crm_event* and *event_sale_reservation* from
+ https://github.com/OCA/event.
diff --git a/sale_crm_event_reservation/readme/USAGE.rst b/sale_crm_event_reservation/readme/USAGE.rst
new file mode 100644
index 000000000..d78b722ef
--- /dev/null
+++ b/sale_crm_event_reservation/readme/USAGE.rst
@@ -0,0 +1,21 @@
+To use this module, you need to:
+
+#. Go to *CRM > My Pipeline*.
+#. Create one opportunity.
+#. Set basic fields.
+#. Set *Customer*, *Event type* and *Seats Wanted*.
+#. Click on *New Event Quotation*.
+
+A wizard will open. If you want to register the customer in an scheduled event:
+
+#. Select *Mode = Register in scheduled event*.
+#. Select *Event* and *Ticket*
+#. Click on *Generate quotation*
+
+Instead, if you want to reserve some seats for the customer in some upcoming event:
+
+#. Select *Mode = Reserve upcoming event*.
+#. Select *Product*, which must be a reservation product for the chosen event type.
+#. Click on *Generate quotation*
+
+In either case, you will be presented with a sale order created just for you.
diff --git a/sale_crm_event_reservation/reports/__init__.py b/sale_crm_event_reservation/reports/__init__.py
new file mode 100644
index 000000000..1274103c2
--- /dev/null
+++ b/sale_crm_event_reservation/reports/__init__.py
@@ -0,0 +1 @@
+from . import event_type_report
diff --git a/sale_crm_event_reservation/reports/event_type_report.py b/sale_crm_event_reservation/reports/event_type_report.py
new file mode 100644
index 000000000..03dfc6ad9
--- /dev/null
+++ b/sale_crm_event_reservation/reports/event_type_report.py
@@ -0,0 +1,14 @@
+# Copyright 2021 Tecnativa - Jairo Llopis
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from odoo import fields, models
+
+
+class EventTypeReport(models.Model):
+ _inherit = "event.type.report"
+
+ seats_reservation_total = fields.Integer(string="Reserved seats", readonly=True)
+
+ def _select(self, fields_=()):
+ fields_ += (("seats_reservation_total", "et.seats_reservation_total"),)
+ return super()._select(fields_)
diff --git a/sale_crm_event_reservation/reports/event_type_report_views.xml b/sale_crm_event_reservation/reports/event_type_report_views.xml
new file mode 100644
index 000000000..c1c84feb5
--- /dev/null
+++ b/sale_crm_event_reservation/reports/event_type_report_views.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+ Add reservations to event category pivot
+ event.type.report
+
+
+
+
+
+
+
+
+
+ Add reservations to event category graph
+ event.type.report
+
+
+
+
+
+
+
+
+
diff --git a/sale_crm_event_reservation/static/description/icon.png b/sale_crm_event_reservation/static/description/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d
GIT binary patch
literal 9455
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
z
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
Xviia!U7SGha1wx#SCgwmn*{w2TRX*I
literal 0
HcmV?d00001
diff --git a/sale_crm_event_reservation/static/description/index.html b/sale_crm_event_reservation/static/description/index.html
new file mode 100644
index 000000000..e0fbe7224
--- /dev/null
+++ b/sale_crm_event_reservation/static/description/index.html
@@ -0,0 +1,466 @@
+
+
+
+
+
+
+Create event quotations from opportunities
+
+
+
+
+
Create event quotations from opportunities
+
+
+
+
This module extends the functionality of crm_event, event_sale_reservation
+and sale_crm to support fast generation of event quotations from
+opportunities and to allow you to sell events like a boss.
Bugs are tracked on GitHub Issues.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed
+feedback.
+
Do not contact contributors directly about support or help with technical issues.
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.
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
+
This module extends the functionality of crm_event, event_sale_reservation
and sale_crm to support fast generation of event quotations from
opportunities and to allow you to sell events like a boss.
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-feedback.
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
+
This module extends the functionality of crm_event, event_sale_reservation
and sale_crm to support fast generation of event quotations from
opportunities and to allow you to sell events like a boss.
From a3e6732ff71eaac0e7ef5f38447d570c106d579c Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Wed, 27 Apr 2022 06:46:14 +0000
Subject: [PATCH 05/23] sale_crm_event_reservation 13.0.1.0.1
---
sale_crm_event_reservation/__manifest__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sale_crm_event_reservation/__manifest__.py b/sale_crm_event_reservation/__manifest__.py
index cc754b24e..9be4bfbe3 100644
--- a/sale_crm_event_reservation/__manifest__.py
+++ b/sale_crm_event_reservation/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Create event quotations from opportunities",
"summary": "Combine event reservations, opportunities and quotations",
- "version": "13.0.1.0.0",
+ "version": "13.0.1.0.1",
"development_status": "Beta",
"category": "Marketing",
"website": "https://github.com/OCA/event",
From 433844b01828fbd4301f62fa41615e895fa4198b Mon Sep 17 00:00:00 2001
From: Stefan
Date: Mon, 6 Mar 2023 16:36:29 +0100
Subject: [PATCH 06/23] [IMP] sale_crm_event_reservation: black, isort,
prettier
---
sale_crm_event_reservation/tests/test_wizard.py | 8 ++++++--
.../wizards/crm_lead_event_sale_wizard.py | 8 ++++++--
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/sale_crm_event_reservation/tests/test_wizard.py b/sale_crm_event_reservation/tests/test_wizard.py
index 553a39439..4e9309822 100644
--- a/sale_crm_event_reservation/tests/test_wizard.py
+++ b/sale_crm_event_reservation/tests/test_wizard.py
@@ -88,7 +88,9 @@ def test_register(self):
)
self.assertTrue(so.order_line.event_ok)
self.assertEqual(
- so.order_line.product_uom_qty, 3, "SO line qty = opportunity.seats_wanted",
+ so.order_line.product_uom_qty,
+ 3,
+ "SO line qty = opportunity.seats_wanted",
)
self.assertAlmostEqual(
so.amount_untaxed,
@@ -114,7 +116,9 @@ def test_reserve(self):
self.assertFalse(so.order_line.event_ticket_id)
self.assertFalse(so.order_line.event_ok)
self.assertEqual(
- so.order_line.product_uom_qty, 3, "SO line qty = opportunity.seats_wanted",
+ so.order_line.product_uom_qty,
+ 3,
+ "SO line qty = opportunity.seats_wanted",
)
self.assertAlmostEqual(
so.amount_untaxed,
diff --git a/sale_crm_event_reservation/wizards/crm_lead_event_sale_wizard.py b/sale_crm_event_reservation/wizards/crm_lead_event_sale_wizard.py
index 53a03b6c1..3f5cda628 100644
--- a/sale_crm_event_reservation/wizards/crm_lead_event_sale_wizard.py
+++ b/sale_crm_event_reservation/wizards/crm_lead_event_sale_wizard.py
@@ -18,7 +18,8 @@ class CRMLeadEventSale(models.TransientModel):
string="Opportunity",
)
event_type_id = fields.Many2one(
- readonly=True, related="opportunity_id.event_type_id",
+ readonly=True,
+ related="opportunity_id.event_type_id",
)
mode = fields.Selection(
required=True,
@@ -28,7 +29,10 @@ class CRMLeadEventSale(models.TransientModel):
],
help="How to create the event quotation?",
)
- seats_wanted = fields.Integer(readonly=True, related="opportunity_id.seats_wanted",)
+ seats_wanted = fields.Integer(
+ readonly=True,
+ related="opportunity_id.seats_wanted",
+ )
product_id = fields.Many2one(
comodel_name="product.product",
domain="""
From 17ab191760651158b7da4378eb9c4b8a9e77c6d5 Mon Sep 17 00:00:00 2001
From: Stefan
Date: Tue, 7 Mar 2023 14:40:34 +0100
Subject: [PATCH 07/23] [MIG] sale_crm_event_reservation: Migration to 15.0
---
sale_crm_event_reservation/README.rst | 11 +++--
sale_crm_event_reservation/__manifest__.py | 3 +-
sale_crm_event_reservation/i18n/es.po | 47 ++++++++++++++-----
.../i18n/sale_crm_event_reservation.pot | 2 +-
.../readme/CONTRIBUTORS.rst | 1 +
.../security/ir.model.access.csv | 2 +
.../static/description/index.html | 7 +--
.../tests/test_wizard.py | 9 ++--
.../views/crm_lead_views.xml | 1 +
.../wizards/crm_lead_event_sale_wizard.py | 12 ++---
10 files changed, 63 insertions(+), 32 deletions(-)
create mode 100644 sale_crm_event_reservation/security/ir.model.access.csv
diff --git a/sale_crm_event_reservation/README.rst b/sale_crm_event_reservation/README.rst
index 2121bf6eb..d37df1576 100644
--- a/sale_crm_event_reservation/README.rst
+++ b/sale_crm_event_reservation/README.rst
@@ -14,13 +14,13 @@ Create event quotations from opportunities
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fevent-lightgray.png?logo=github
- :target: https://github.com/OCA/event/tree/13.0/sale_crm_event_reservation
+ :target: https://github.com/OCA/event/tree/15.0/sale_crm_event_reservation
:alt: OCA/event
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/event-13-0/event-13-0-sale_crm_event_reservation
+ :target: https://translation.odoo-community.org/projects/event-15-0/event-15-0-sale_crm_event_reservation
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/199/13.0
+ :target: https://runbot.odoo-community.org/runbot/199/15.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -81,7 +81,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -99,6 +99,7 @@ Contributors
* `Tecnativa `_:
* Jairo Llopis
+ * Stefan Ungureanu
Maintainers
~~~~~~~~~~~
@@ -121,6 +122,6 @@ Current `maintainer `__:
|maintainer-Yajo|
-This module is part of the `OCA/event `_ project on GitHub.
+This module is part of the `OCA/event `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/sale_crm_event_reservation/__manifest__.py b/sale_crm_event_reservation/__manifest__.py
index 9be4bfbe3..972576274 100644
--- a/sale_crm_event_reservation/__manifest__.py
+++ b/sale_crm_event_reservation/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Create event quotations from opportunities",
"summary": "Combine event reservations, opportunities and quotations",
- "version": "13.0.1.0.1",
+ "version": "15.0.1.0.0",
"development_status": "Beta",
"category": "Marketing",
"website": "https://github.com/OCA/event",
@@ -16,6 +16,7 @@
"depends": ["crm_event", "event_sale_reservation", "sale_crm"],
"data": [
"reports/event_type_report_views.xml",
+ "security/ir.model.access.csv",
"wizards/crm_lead_event_sale_wizard_views.xml",
"views/crm_lead_views.xml",
],
diff --git a/sale_crm_event_reservation/i18n/es.po b/sale_crm_event_reservation/i18n/es.po
index d976ee432..083d74b83 100644
--- a/sale_crm_event_reservation/i18n/es.po
+++ b/sale_crm_event_reservation/i18n/es.po
@@ -42,10 +42,15 @@ msgstr "Nombre mostrado"
msgid "Event"
msgstr "Evento"
+#. module: sale_crm_event_reservation
+#: model:ir.model,name:sale_crm_event_reservation.model_event_type_report
+msgid "Event categories analysis report"
+msgstr ""
+
#. module: sale_crm_event_reservation
#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__event_type_id
-msgid "Event type"
-msgstr "Categoría de evento"
+msgid "Event category"
+msgstr ""
#. module: sale_crm_event_reservation
#: model:ir.actions.act_window,name:sale_crm_event_reservation.crm_lead_event_sale_wizard_action
@@ -70,20 +75,16 @@ msgstr "ID"
#. module: sale_crm_event_reservation
#: model:ir.model.fields,help:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__seats_wanted
msgid ""
-"If this lead/opportunity is related to a specific event type, indicate how "
-"many seats would you sell if won."
+"If this lead/opportunity is related to a specific event category, indicate "
+"how many seats would you sell if won."
msgstr ""
-"Si esta iniciativa u oportunidad está relacionada con una categoría "
-"específica de evento, indique cuántas plazas vendería si se gana."
#. module: sale_crm_event_reservation
#: model:ir.model.fields,help:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__event_type_id
msgid ""
-"If this lead/opportunity is related to a specific event type, indicate it "
-"here."
+"If this lead/opportunity is related to a specific event category, indicate "
+"it here."
msgstr ""
-"Si esta iniciativa u oportunidad está relacionada con una categoría "
-"específica de evento, indíquelo aquí."
#. module: sale_crm_event_reservation
#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard____last_update
@@ -121,15 +122,20 @@ msgid "Product"
msgstr "Producto"
#. module: sale_crm_event_reservation
-#: selection:crm.lead.event.sale.wizard,mode:0
+#: model:ir.model.fields.selection,name:sale_crm_event_reservation.selection__crm_lead_event_sale_wizard__mode__register
msgid "Register in scheduled event"
msgstr "Registrar en un evento ya programado"
#. module: sale_crm_event_reservation
-#: selection:crm.lead.event.sale.wizard,mode:0
+#: model:ir.model.fields.selection,name:sale_crm_event_reservation.selection__crm_lead_event_sale_wizard__mode__reserve
msgid "Reserve upcoming event"
msgstr "Reservar un evento futuro"
+#. module: sale_crm_event_reservation
+#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_event_type_report__seats_reservation_total
+msgid "Reserved seats"
+msgstr ""
+
#. module: sale_crm_event_reservation
#: model:ir.model.fields,field_description:sale_crm_event_reservation.field_crm_lead_event_sale_wizard__seats_wanted
msgid "Seats Wanted"
@@ -144,3 +150,20 @@ msgstr "Ticket"
#: model:ir.model,name:sale_crm_event_reservation.model_crm_lead_event_sale_wizard
msgid "Wizard to generate event quotation from event opportunity"
msgstr "Asistente para presupuestar eventos desde una oportunidad de evento"
+
+#~ msgid "Event type"
+#~ msgstr "Categoría de evento"
+
+#~ msgid ""
+#~ "If this lead/opportunity is related to a specific event type, indicate "
+#~ "how many seats would you sell if won."
+#~ msgstr ""
+#~ "Si esta iniciativa u oportunidad está relacionada con una categoría "
+#~ "específica de evento, indique cuántas plazas vendería si se gana."
+
+#~ msgid ""
+#~ "If this lead/opportunity is related to a specific event type, indicate it "
+#~ "here."
+#~ msgstr ""
+#~ "Si esta iniciativa u oportunidad está relacionada con una categoría "
+#~ "específica de evento, indíquelo aquí."
diff --git a/sale_crm_event_reservation/i18n/sale_crm_event_reservation.pot b/sale_crm_event_reservation/i18n/sale_crm_event_reservation.pot
index 84f1e9bee..c197292f3 100644
--- a/sale_crm_event_reservation/i18n/sale_crm_event_reservation.pot
+++ b/sale_crm_event_reservation/i18n/sale_crm_event_reservation.pot
@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 13.0\n"
+"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
diff --git a/sale_crm_event_reservation/readme/CONTRIBUTORS.rst b/sale_crm_event_reservation/readme/CONTRIBUTORS.rst
index 8c4d96846..bdf9d224a 100644
--- a/sale_crm_event_reservation/readme/CONTRIBUTORS.rst
+++ b/sale_crm_event_reservation/readme/CONTRIBUTORS.rst
@@ -1,3 +1,4 @@
* `Tecnativa `_:
* Jairo Llopis
+ * Stefan Ungureanu
diff --git a/sale_crm_event_reservation/security/ir.model.access.csv b/sale_crm_event_reservation/security/ir.model.access.csv
new file mode 100644
index 000000000..b2b46276c
--- /dev/null
+++ b/sale_crm_event_reservation/security/ir.model.access.csv
@@ -0,0 +1,2 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+sale_crm_event_reservation.access_crm_lead_event_sale_wizard,access_crm_lead_event_sale_wizard,sale_crm_event_reservation.model_crm_lead_event_sale_wizard,event.group_event_user,1,1,1,1
diff --git a/sale_crm_event_reservation/static/description/index.html b/sale_crm_event_reservation/static/description/index.html
index 0e3e6f426..1cf691d37 100644
--- a/sale_crm_event_reservation/static/description/index.html
+++ b/sale_crm_event_reservation/static/description/index.html
@@ -367,7 +367,7 @@
Create event quotations from opportunities
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
+
This module extends the functionality of crm_event, event_sale_reservation
and sale_crm to support fast generation of event quotations from
opportunities and to allow you to sell events like a boss.
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-feedback.
This module extends the functionality of crm_event,
event_sale_reservation and sale_crm to support fast generation of
event quotations from opportunities and to allow you to sell events like
@@ -390,7 +395,7 @@
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
@@ -442,15 +447,15 @@
From 16e67d33f5d0a60063720e8fc4c07831f45c8ddd Mon Sep 17 00:00:00 2001
From: "Pedro M. Baeza"
Date: Tue, 5 Aug 2025 17:44:49 +0200
Subject: [PATCH 21/23] [FIX] sale_crm_event_reservation: Compare datetime
properly
Don't compare a date with a datetime field:
```
File "/opt/odoo/auto/addons/sale_crm_event_reservation/wizards/crm_lead_event_sale_wizard.py", line 96, in
or ticket.end_sale_datetime >= fields.Date.context_today(self)
TypeError: can't compare datetime.datetime to datetime.date
```
TT57560
---
.../wizards/crm_lead_event_sale_wizard.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sale_crm_event_reservation/wizards/crm_lead_event_sale_wizard.py b/sale_crm_event_reservation/wizards/crm_lead_event_sale_wizard.py
index 30e51bc90..ca671ff09 100644
--- a/sale_crm_event_reservation/wizards/crm_lead_event_sale_wizard.py
+++ b/sale_crm_event_reservation/wizards/crm_lead_event_sale_wizard.py
@@ -93,7 +93,7 @@ def _compute_allowed_event_ticket_ids(self):
tickets = record.event_id.event_ticket_ids.filtered(
lambda ticket, record=record: (
not ticket.end_sale_datetime
- or ticket.end_sale_datetime >= fields.Date.context_today(self)
+ or ticket.end_sale_datetime >= fields.Datetime.now()
)
and (
not ticket.seats_limited
From 393be595da530268476d1d43b30bbcc2091ef96f Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Tue, 5 Aug 2025 17:09:09 +0000
Subject: [PATCH 22/23] [BOT] post-merge updates
---
sale_crm_event_reservation/README.rst | 2 +-
sale_crm_event_reservation/__manifest__.py | 2 +-
sale_crm_event_reservation/static/description/index.html | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/sale_crm_event_reservation/README.rst b/sale_crm_event_reservation/README.rst
index c4c1c4cec..4809a8e98 100644
--- a/sale_crm_event_reservation/README.rst
+++ b/sale_crm_event_reservation/README.rst
@@ -11,7 +11,7 @@ Create event quotations from opportunities
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !! source digest: sha256:dff8a58279a5aa7830ec9659d75feab812d47d59ec22de6f6664170982f9fee0
+ !! source digest: sha256:8bea0893e123c7a7a942ebd7392a2238837c8f7e79eee21e82b99458c5ccc266
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
diff --git a/sale_crm_event_reservation/__manifest__.py b/sale_crm_event_reservation/__manifest__.py
index e197234cb..c0becce66 100644
--- a/sale_crm_event_reservation/__manifest__.py
+++ b/sale_crm_event_reservation/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Create event quotations from opportunities",
"summary": "Combine event reservations, opportunities and quotations",
- "version": "17.0.1.0.1",
+ "version": "17.0.1.0.2",
"development_status": "Mature",
"category": "Marketing",
"website": "https://github.com/OCA/event",
diff --git a/sale_crm_event_reservation/static/description/index.html b/sale_crm_event_reservation/static/description/index.html
index 4da3d5440..3e1e422e2 100644
--- a/sale_crm_event_reservation/static/description/index.html
+++ b/sale_crm_event_reservation/static/description/index.html
@@ -372,7 +372,7 @@
Create event quotations from opportunities
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!! source digest: sha256:dff8a58279a5aa7830ec9659d75feab812d47d59ec22de6f6664170982f9fee0
+!! source digest: sha256:8bea0893e123c7a7a942ebd7392a2238837c8f7e79eee21e82b99458c5ccc266
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
This module extends the functionality of crm_event,
From c8e45add209e2885cf60009713acbfe70f97d7d7 Mon Sep 17 00:00:00 2001
From: cca
Date: Tue, 19 Aug 2025 17:48:37 +0200
Subject: [PATCH 23/23] [MIG] sale_crm_event_reservation: Migration to 18.0
---
sale_crm_event_reservation/README.rst | 18 +++++-----
sale_crm_event_reservation/__manifest__.py | 2 +-
.../readme/CONTRIBUTORS.md | 1 +
.../static/description/index.html | 35 ++++++++-----------
.../tests/test_wizard.py | 9 ++---
5 files changed, 28 insertions(+), 37 deletions(-)
diff --git a/sale_crm_event_reservation/README.rst b/sale_crm_event_reservation/README.rst
index 4809a8e98..f280c723b 100644
--- a/sale_crm_event_reservation/README.rst
+++ b/sale_crm_event_reservation/README.rst
@@ -1,7 +1,3 @@
-.. image:: https://odoo-community.org/readme-banner-image
- :target: https://odoo-community.org/get-involved?utm_source=readme
- :alt: Odoo Community Association
-
==========================================
Create event quotations from opportunities
==========================================
@@ -17,17 +13,17 @@ Create event quotations from opportunities
.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
:target: https://odoo-community.org/page/development-status
:alt: Mature
-.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
+.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fevent-lightgray.png?logo=github
- :target: https://github.com/OCA/event/tree/17.0/sale_crm_event_reservation
+ :target: https://github.com/OCA/event/tree/18.0/sale_crm_event_reservation
:alt: OCA/event
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/event-17-0/event-17-0-sale_crm_event_reservation
+ :target: https://translation.odoo-community.org/projects/event-18-0/event-18-0-sale_crm_event_reservation
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
- :target: https://runboat.odoo-community.org/builds?repo=OCA/event&target_branch=17.0
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/event&target_branch=18.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -93,7 +89,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -113,6 +109,8 @@ Contributors
- Jairo Llopis
- Stefan Ungureanu
+- `Apik `__
+
Maintainers
-----------
@@ -134,6 +132,6 @@ Current `maintainer `__:
|maintainer-pilarvargas-tecnativa|
-This module is part of the `OCA/event `_ project on GitHub.
+This module is part of the `OCA/event `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/sale_crm_event_reservation/__manifest__.py b/sale_crm_event_reservation/__manifest__.py
index c0becce66..cde8e1853 100644
--- a/sale_crm_event_reservation/__manifest__.py
+++ b/sale_crm_event_reservation/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Create event quotations from opportunities",
"summary": "Combine event reservations, opportunities and quotations",
- "version": "17.0.1.0.2",
+ "version": "18.0.1.0.0",
"development_status": "Mature",
"category": "Marketing",
"website": "https://github.com/OCA/event",
diff --git a/sale_crm_event_reservation/readme/CONTRIBUTORS.md b/sale_crm_event_reservation/readme/CONTRIBUTORS.md
index 3541fd95f..b5f575513 100644
--- a/sale_crm_event_reservation/readme/CONTRIBUTORS.md
+++ b/sale_crm_event_reservation/readme/CONTRIBUTORS.md
@@ -1,3 +1,4 @@
- [Tecnativa](https://www.tecnativa.com):
- Jairo Llopis
- Stefan Ungureanu
+- [Apik](https://apik.cloud)
diff --git a/sale_crm_event_reservation/static/description/index.html b/sale_crm_event_reservation/static/description/index.html
index 3e1e422e2..8f4c119ac 100644
--- a/sale_crm_event_reservation/static/description/index.html
+++ b/sale_crm_event_reservation/static/description/index.html
@@ -3,7 +3,7 @@
-README.rst
+Create event quotations from opportunities
-
This module extends the functionality of crm_event,
event_sale_reservation and sale_crm to support fast generation of
event quotations from opportunities and to allow you to sell events like
@@ -395,7 +390,7 @@
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
-feedback.