Initial commit: OCA Mrp packages (117 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:05 +02:00
commit 277e84fd7a
4403 changed files with 395154 additions and 0 deletions

View file

@ -0,0 +1,128 @@
======================
Link partner to events
======================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:c0d0bff2b3aa5b8ce1e5ef73bd94e2ad59b684ee2655298079d1b03d6260f8f0
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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/16.0/partner_event
:alt: OCA/event
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/event-16-0/event-16-0-partner_event
: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=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module links partners with the events they are registered through a
smart button.
It also includes:
* Search partners by their event attendees.
* Search partners by number of events attendees.
* Search partners by number of events attended.
* Partner column is visible on registration one2many list inside the event.
* Action in partner tree view 'More' button, to register several partners
to an event
* Restricts partner deletion when event attendees are linked to it.
* Onchange for partner_id removed in v16 core in Event Registration- including functionality here
**Table of contents**
.. contents::
:local:
Configuration
=============
There is a new option in event form view, "Create Partners in registration". If
this option is checked, when you add registrations to this event, partners will
be created automatically with name, email, phone and mobile fields.
If partner already exists and user only fills email, name, phone and mobile fields will
be filled with partner's data.
The event registration values email, name, phone and mobile will be changed if the
related partner values are changed and the event end date hasn't passed yet.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/event/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 <https://github.com/OCA/event/issues/new?body=module:%20partner_event%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* Tecnativa
Contributors
~~~~~~~~~~~~
* `Tecnativa <https://www.tecnativa.com>`__:
* Pedro M. Baeza
* Antonio Espinosa
* Jairo Llopis
* Vicent Cubells
* David Vidal
* Rafael Blasco
* Víctor Martínez
* Stefan Ungureanu
* Carolina Fernandez
* `Antiun <https://antiun.com/>`__:
* Javier Iniesta
* `Anil Kesariya`
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
.. |maintainer-rafaelbn| image:: https://github.com/rafaelbn.png?size=40px
:target: https://github.com/rafaelbn
:alt: rafaelbn
Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-yajo| |maintainer-rafaelbn|
This module is part of the `OCA/event <https://github.com/OCA/event/tree/16.0/partner_event>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,3 @@
from . import models
from . import wizard
from .hooks import post_init_hook

View file

@ -0,0 +1,30 @@
# Copyright 2014 Tecnativa S.L. - Pedro M. Baeza
# Copyright 2015 Tecnativa S.L. - Javier Iniesta
# Copyright 2016 Tecnativa S.L. - Antonio Espinosa
# Copyright 2016 Tecnativa S.L. - Vicent Cubells
# Copyright 2017 Tecnativa S.L. - David Vidal
# Copyright 2018 Jupical Technologies Pvt. Ltd. - Anil Kesariya
# Copyright 2020 Tecnativa S.L. - Víctor Martínez
# Copyright 2023 Tecnativa S.L. - Carolina Fernandez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Link partner to events",
"version": "16.0.1.1.0",
"category": "Marketing",
"author": "Tecnativa," "Odoo Community Association (OCA)",
"website": "https://github.com/OCA/event",
"development_status": "Production/Stable",
"license": "AGPL-3",
"depends": ["event"],
"data": [
"security/ir.model.access.csv",
"views/res_partner_view.xml",
"views/event_event_view.xml",
"views/event_registration_view.xml",
"wizard/res_partner_register_event_view.xml",
],
"maintainers": ["yajo", "rafaelbn"],
"post_init_hook": "post_init_hook",
"installable": True,
}

View file

@ -0,0 +1,19 @@
# Copyright 2019 David Vidal
# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html
from odoo import SUPERUSER_ID, api
def post_init_hook(cr, registry):
"""Preload proper attendee partner for existing registrations using
the same rules the module does"""
env = api.Environment(cr, SUPERUSER_ID, {})
attendees_emails = env["event.registration"].read_group(
[("email", "!=", False)], ["email"], groupby="email"
)
for email in attendees_emails:
attendee_partner = env["res.partner"].search(
[("email", "=ilike", email["email"])], limit=1
)
if attendee_partner:
attendees = env["event.registration"].search(email["__domain"])
attendees.write({"attendee_partner_id": attendee_partner.id})

View file

@ -0,0 +1,143 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_event
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.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: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner__registration_count
#: model:ir.model.fields,field_description:partner_event.field_res_users__registration_count
msgid "Attendances"
msgstr "Prisutnosti"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_registration_search
msgid "Attended"
msgstr "Pohađao"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_registration__attendee_partner_id
msgid "Attendee Partner"
msgstr "Partner učesnik"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_registration__partner_id
msgid "Booked by"
msgstr "Zakazao"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Cancel"
msgstr "Otkaži"
#. module: partner_event
#: model:ir.model,name:partner_event.model_res_partner
msgid "Contact"
msgstr "Kontakt"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_partner_form_registrations
msgid "Count of events with confirmed registrations."
msgstr "Broj događaja sa potvrđenim registracijama"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_event__create_partner
#: model:ir.model.fields,field_description:partner_event.field_event_session__create_partner
msgid "Create Partners in registration"
msgstr "Kreiraj partnere u registraciji"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Create registrations"
msgstr "Kreiraj registracije"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__display_name
msgid "Display Name"
msgstr "Prikazani naziv"
#. module: partner_event
#: model:ir.model,name:partner_event.model_event_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__event
msgid "Event"
msgstr "Dogadaj"
#. module: partner_event
#: model:ir.model,name:partner_event.model_event_registration
msgid "Event Registration"
msgstr "Registracija događaja"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner__event_registration_ids
#: model:ir.model.fields,field_description:partner_event.field_res_users__event_registration_ids
msgid "Event registrations"
msgstr "Registracije događaja"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__id
msgid "ID"
msgstr "ID"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event____last_update
msgid "Last Modified on"
msgstr "Zadnje mijenjano"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__write_uid
msgid "Last Updated by"
msgstr "Zadnji ažurirao"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__write_date
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_res_partner_filter
msgid "Linked events"
msgstr "Povezani događaji"
#. module: partner_event
#: model:ir.model,name:partner_event.model_base_partner_merge_automatic_wizard
msgid "Merge Partner Wizard"
msgstr "Čarobnjak za spajanje partnera"
#. module: partner_event
#: model:ir.actions.act_window,name:partner_event.action_partner_register_event
msgid "Register in an event"
msgstr "Registruj se na događaj"
#. module: partner_event
#: model:ir.model,name:partner_event.model_res_partner_register_event
msgid "Register partner for event"
msgstr "Registruj partnera za događaj"
#. module: partner_event
#: model:ir.actions.act_window,name:partner_event.act_partner_registration
msgid "Registrations"
msgstr "Registracije"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Select event to register"
msgstr "Odaberite događaj za registraciju"

View file

@ -0,0 +1,172 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_event
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-03 16:30+0000\n"
"PO-Revision-Date: 2024-01-13 16:36+0000\n"
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner__registration_count
#: model:ir.model.fields,field_description:partner_event.field_res_users__registration_count
msgid "Attendances"
msgstr "Asistencias"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_registration_search
msgid "Attended"
msgstr "Asistido"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_registration__attendee_partner_id
msgid "Attendee Partner"
msgstr "Empresa asistente"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_registration__partner_id
msgid "Booked by"
msgstr "Reservado por"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Cancel"
msgstr "Cancelar"
#. module: partner_event
#: model:ir.model,name:partner_event.model_res_partner
msgid "Contact"
msgstr "Contacto"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_partner_form_registrations
msgid "Count of events with confirmed registrations."
msgstr "Cantidad de eventos con asistencia confirmada."
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_event__create_partner
#: model:ir.model.fields,field_description:partner_event.field_event_session__create_partner
msgid "Create Partners in registration"
msgstr "Crear empresas en el registro"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Create registrations"
msgstr "Crear registros"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__create_date
msgid "Created on"
msgstr "Creado el"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__display_name
msgid "Display Name"
msgstr "Nombre mostrado"
#. module: partner_event
#: model:ir.model,name:partner_event.model_event_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__event
msgid "Event"
msgstr "Evento"
#. module: partner_event
#: model:ir.model,name:partner_event.model_event_registration
msgid "Event Registration"
msgstr "Registro a evento"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner__event_registration_ids
#: model:ir.model.fields,field_description:partner_event.field_res_users__event_registration_ids
msgid "Event registrations"
msgstr "Registros a eventos"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__id
msgid "ID"
msgstr "ID"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event____last_update
msgid "Last Modified on"
msgstr "Última modificación el"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__write_uid
msgid "Last Updated by"
msgstr "Última actualización por"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__write_date
msgid "Last Updated on"
msgstr "Última actualización el"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_res_partner_filter
msgid "Linked events"
msgstr ""
#. module: partner_event
#: model:ir.model,name:partner_event.model_base_partner_merge_automatic_wizard
msgid "Merge Partner Wizard"
msgstr "Asistente para la Fusión de Socios"
#. module: partner_event
#: model:ir.actions.act_window,name:partner_event.action_partner_register_event
msgid "Register in an event"
msgstr "Registrar en un evento"
#. module: partner_event
#: model:ir.model,name:partner_event.model_res_partner_register_event
msgid "Register partner for event"
msgstr "Registrar empresa al evento"
#. module: partner_event
#: model:ir.actions.act_window,name:partner_event.act_partner_registration
msgid "Registrations"
msgstr "Registros"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Select event to register"
msgstr "Selecciona el evento para registrar"
#~ msgid "Errors"
#~ msgstr "Errores"
#~ msgid ""
#~ "These partners haven't been registered because they\\'re "
#~ "already registered or other error occurred"
#~ msgstr ""
#~ "Estas empresas no se han registrado porque ya "
#~ "estaban registradas u otro error ocurrió"
#~ msgid "Event attended registrations number"
#~ msgstr "Nº de registrados que han asistido al evento"
#~ msgid "Event registrations number"
#~ msgstr "Nº Registros a eventos"
#~ msgid "Events"
#~ msgstr "Eventos"
#~ msgid "Partner"
#~ msgstr "Empresa"
#~ msgid "or"
#~ msgstr "o"

View file

@ -0,0 +1,146 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_event
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-07-03 16:47+0000\n"
"Last-Translator: Rémi <remi@le-filament.com>\n"
"Language-Team: none\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner__registration_count
#: model:ir.model.fields,field_description:partner_event.field_res_users__registration_count
msgid "Attendances"
msgstr "Présences"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_registration_search
msgid "Attended"
msgstr "Présent"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_registration__attendee_partner_id
msgid "Attendee Partner"
msgstr "Contact lié au participant"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_registration__partner_id
msgid "Booked by"
msgstr "Réservé par"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Cancel"
msgstr "Annuler"
#. module: partner_event
#: model:ir.model,name:partner_event.model_res_partner
msgid "Contact"
msgstr "Contact"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_partner_form_registrations
msgid "Count of events with confirmed registrations."
msgstr "Nombre d'évènements avec des inscriptions confirmées."
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_event__create_partner
#: model:ir.model.fields,field_description:partner_event.field_event_session__create_partner
msgid "Create Partners in registration"
msgstr "Créer les contacts à l'inscription"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Create registrations"
msgstr "Créer les inscriptions"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__create_uid
msgid "Created by"
msgstr "Créé par"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__create_date
msgid "Created on"
msgstr "Créé le"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__display_name
msgid "Display Name"
msgstr "Nom Affiché"
#. module: partner_event
#: model:ir.model,name:partner_event.model_event_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__event
msgid "Event"
msgstr "Évènement"
#. module: partner_event
#: model:ir.model,name:partner_event.model_event_registration
msgid "Event Registration"
msgstr "Inscription à l'évènement"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner__event_registration_ids
#: model:ir.model.fields,field_description:partner_event.field_res_users__event_registration_ids
msgid "Event registrations"
msgstr "Inscriptions à l'évènement"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__id
msgid "ID"
msgstr ""
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__write_uid
msgid "Last Updated by"
msgstr "Dernière mise à jour par"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__write_date
msgid "Last Updated on"
msgstr "Dernière mise à jour le"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_res_partner_filter
msgid "Linked events"
msgstr ""
#. module: partner_event
#: model:ir.model,name:partner_event.model_base_partner_merge_automatic_wizard
msgid "Merge Partner Wizard"
msgstr "Assistant de fusion de contacts"
#. module: partner_event
#: model:ir.actions.act_window,name:partner_event.action_partner_register_event
msgid "Register in an event"
msgstr "S'inscrire à un évènement"
#. module: partner_event
#: model:ir.model,name:partner_event.model_res_partner_register_event
msgid "Register partner for event"
msgstr "Inscrire un contact à l'évènement"
#. module: partner_event
#: model:ir.actions.act_window,name:partner_event.act_partner_registration
msgid "Registrations"
msgstr "Inscriptions"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Select event to register"
msgstr "Sélectionner un évènement pour s'y inscrire"

View file

@ -0,0 +1,149 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_event
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-05-10 10:23+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.10.4\n"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner__registration_count
#: model:ir.model.fields,field_description:partner_event.field_res_users__registration_count
msgid "Attendances"
msgstr "Presenze"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_registration_search
msgid "Attended"
msgstr "Presente"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_registration__attendee_partner_id
msgid "Attendee Partner"
msgstr "Partner partecipante"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_registration__partner_id
msgid "Booked by"
msgstr "Prenotato da"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Cancel"
msgstr "Annulla"
#. module: partner_event
#: model:ir.model,name:partner_event.model_res_partner
msgid "Contact"
msgstr "Contatto"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_partner_form_registrations
msgid "Count of events with confirmed registrations."
msgstr "Numero di eventi con registrazioni confermate."
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_event__create_partner
#: model:ir.model.fields,field_description:partner_event.field_event_session__create_partner
msgid "Create Partners in registration"
msgstr "Crea partner alla registrazione"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Create registrations"
msgstr "Crea registrazioni"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__create_date
msgid "Created on"
msgstr "Creato il"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: partner_event
#: model:ir.model,name:partner_event.model_event_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__event
msgid "Event"
msgstr "Evento"
#. module: partner_event
#: model:ir.model,name:partner_event.model_event_registration
msgid "Event Registration"
msgstr "Registrazione evento"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner__event_registration_ids
#: model:ir.model.fields,field_description:partner_event.field_res_users__event_registration_ids
msgid "Event registrations"
msgstr "Registrazioni evento"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__id
msgid "ID"
msgstr "ID"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_res_partner_filter
msgid "Linked events"
msgstr "Eventi collegati"
#. module: partner_event
#: model:ir.model,name:partner_event.model_base_partner_merge_automatic_wizard
msgid "Merge Partner Wizard"
msgstr "Procedura guidata unione partner"
#. module: partner_event
#: model:ir.actions.act_window,name:partner_event.action_partner_register_event
msgid "Register in an event"
msgstr "Registrare in un evento"
#. module: partner_event
#: model:ir.model,name:partner_event.model_res_partner_register_event
msgid "Register partner for event"
msgstr "Registrare partner per l'evento"
#. module: partner_event
#: model:ir.actions.act_window,name:partner_event.act_partner_registration
msgid "Registrations"
msgstr "Registrazioni"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Select event to register"
msgstr "Selezionare evento da registrare"
#~ msgid "Errors"
#~ msgstr "Errori"

View file

@ -0,0 +1,143 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_event
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.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: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner__registration_count
#: model:ir.model.fields,field_description:partner_event.field_res_users__registration_count
msgid "Attendances"
msgstr ""
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_registration_search
msgid "Attended"
msgstr ""
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_registration__attendee_partner_id
msgid "Attendee Partner"
msgstr ""
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_registration__partner_id
msgid "Booked by"
msgstr ""
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Cancel"
msgstr ""
#. module: partner_event
#: model:ir.model,name:partner_event.model_res_partner
msgid "Contact"
msgstr ""
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_partner_form_registrations
msgid "Count of events with confirmed registrations."
msgstr ""
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_event__create_partner
#: model:ir.model.fields,field_description:partner_event.field_event_session__create_partner
msgid "Create Partners in registration"
msgstr ""
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Create registrations"
msgstr ""
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__create_uid
msgid "Created by"
msgstr ""
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__create_date
msgid "Created on"
msgstr ""
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__display_name
msgid "Display Name"
msgstr ""
#. module: partner_event
#: model:ir.model,name:partner_event.model_event_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__event
msgid "Event"
msgstr ""
#. module: partner_event
#: model:ir.model,name:partner_event.model_event_registration
msgid "Event Registration"
msgstr ""
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner__event_registration_ids
#: model:ir.model.fields,field_description:partner_event.field_res_users__event_registration_ids
msgid "Event registrations"
msgstr ""
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__id
msgid "ID"
msgstr ""
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event____last_update
msgid "Last Modified on"
msgstr ""
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__write_uid
msgid "Last Updated by"
msgstr ""
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__write_date
msgid "Last Updated on"
msgstr ""
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_res_partner_filter
msgid "Linked events"
msgstr ""
#. module: partner_event
#: model:ir.model,name:partner_event.model_base_partner_merge_automatic_wizard
msgid "Merge Partner Wizard"
msgstr ""
#. module: partner_event
#: model:ir.actions.act_window,name:partner_event.action_partner_register_event
msgid "Register in an event"
msgstr ""
#. module: partner_event
#: model:ir.model,name:partner_event.model_res_partner_register_event
msgid "Register partner for event"
msgstr ""
#. module: partner_event
#: model:ir.actions.act_window,name:partner_event.act_partner_registration
msgid "Registrations"
msgstr ""
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Select event to register"
msgstr ""

View file

@ -0,0 +1,156 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_event
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-05-27 09:20+0000\n"
"PO-Revision-Date: 2015-08-30 07:43+0200\n"
"Last-Translator: Matjaz Mozetic <m.mozetic@matmoz.si>\n"
"Language-Team: \n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: \n"
"X-Generator: Poedit 1.8.4\n"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner__registration_count
#: model:ir.model.fields,field_description:partner_event.field_res_users__registration_count
msgid "Attendances"
msgstr ""
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_registration_search
msgid "Attended"
msgstr ""
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_registration__attendee_partner_id
#, fuzzy
msgid "Attendee Partner"
msgstr "Partner"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_registration__partner_id
msgid "Booked by"
msgstr ""
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Cancel"
msgstr ""
#. module: partner_event
#: model:ir.model,name:partner_event.model_res_partner
msgid "Contact"
msgstr ""
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_partner_form_registrations
msgid "Count of events with confirmed registrations."
msgstr ""
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_event__create_partner
#: model:ir.model.fields,field_description:partner_event.field_event_session__create_partner
#, fuzzy
msgid "Create Partners in registration"
msgstr "Prijave na dogodek"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
#, fuzzy
msgid "Create registrations"
msgstr "Prijave na dogodek"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__create_uid
msgid "Created by"
msgstr ""
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__create_date
msgid "Created on"
msgstr ""
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__display_name
msgid "Display Name"
msgstr ""
#. module: partner_event
#: model:ir.model,name:partner_event.model_event_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__event
#, fuzzy
msgid "Event"
msgstr "Dogodki"
#. module: partner_event
#: model:ir.model,name:partner_event.model_event_registration
#, fuzzy
msgid "Event Registration"
msgstr "Prijave na dogodek"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner__event_registration_ids
#: model:ir.model.fields,field_description:partner_event.field_res_users__event_registration_ids
msgid "Event registrations"
msgstr "Prijave na dogodek"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__id
msgid "ID"
msgstr ""
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event____last_update
msgid "Last Modified on"
msgstr ""
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__write_uid
msgid "Last Updated by"
msgstr ""
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__write_date
msgid "Last Updated on"
msgstr ""
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_res_partner_filter
msgid "Linked events"
msgstr ""
#. module: partner_event
#: model:ir.model,name:partner_event.model_base_partner_merge_automatic_wizard
msgid "Merge Partner Wizard"
msgstr ""
#. module: partner_event
#: model:ir.actions.act_window,name:partner_event.action_partner_register_event
#, fuzzy
msgid "Register in an event"
msgstr "Registracijska številka"
#. module: partner_event
#: model:ir.model,name:partner_event.model_res_partner_register_event
msgid "Register partner for event"
msgstr ""
#. module: partner_event
#: model:ir.actions.act_window,name:partner_event.act_partner_registration
msgid "Registrations"
msgstr "Prijave"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Select event to register"
msgstr ""
#~ msgid "Attended registration number"
#~ msgstr "Pričakovano število prijav"

View file

@ -0,0 +1,157 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_event
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-06-19 14:36+0000\n"
"Last-Translator: jakobkrabbe <jakob@syscare.se>\n"
"Language-Team: none\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner__registration_count
#: model:ir.model.fields,field_description:partner_event.field_res_users__registration_count
msgid "Attendances"
msgstr "Deltaganden"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_registration_search
msgid "Attended"
msgstr "Deltog"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_registration__attendee_partner_id
msgid "Attendee Partner"
msgstr "Partner till deltagare"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_registration__partner_id
msgid "Booked by"
msgstr "Bokad av"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Cancel"
msgstr "Avbryt"
#. module: partner_event
#: model:ir.model,name:partner_event.model_res_partner
msgid "Contact"
msgstr "Kontakt"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_partner_form_registrations
msgid "Count of events with confirmed registrations."
msgstr "Antal evenemang med bekräftade anmälningar."
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_event_event__create_partner
#: model:ir.model.fields,field_description:partner_event.field_event_session__create_partner
msgid "Create Partners in registration"
msgstr "Skapa partners vid anmälning"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Create registrations"
msgstr "Skapa anmälningar"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__create_uid
msgid "Created by"
msgstr "Skapad av"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__create_date
msgid "Created on"
msgstr "Skapad den"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__display_name
msgid "Display Name"
msgstr "Visningsnamn"
#. module: partner_event
#: model:ir.model,name:partner_event.model_event_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__event
msgid "Event"
msgstr "Evenemang"
#. module: partner_event
#: model:ir.model,name:partner_event.model_event_registration
msgid "Event Registration"
msgstr "Evenemangsanmälning"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner__event_registration_ids
#: model:ir.model.fields,field_description:partner_event.field_res_users__event_registration_ids
msgid "Event registrations"
msgstr "Evenemangsanmälningar"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__id
msgid "ID"
msgstr "ID"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event____last_update
msgid "Last Modified on"
msgstr "Senast ändrad den"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__write_uid
msgid "Last Updated by"
msgstr "Senast uppdaterad av"
#. module: partner_event
#: model:ir.model.fields,field_description:partner_event.field_res_partner_register_event__write_date
msgid "Last Updated on"
msgstr "Senast uppdaterad den"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.view_res_partner_filter
msgid "Linked events"
msgstr ""
#. module: partner_event
#: model:ir.model,name:partner_event.model_base_partner_merge_automatic_wizard
msgid "Merge Partner Wizard"
msgstr "Slå samman kontakter guide"
#. module: partner_event
#: model:ir.actions.act_window,name:partner_event.action_partner_register_event
msgid "Register in an event"
msgstr "Anmäl dig till ett evenemang"
#. module: partner_event
#: model:ir.model,name:partner_event.model_res_partner_register_event
msgid "Register partner for event"
msgstr "Anmäl partner till evenemanget"
#. module: partner_event
#: model:ir.actions.act_window,name:partner_event.act_partner_registration
msgid "Registrations"
msgstr "Anmälningar"
#. module: partner_event
#: model_terms:ir.ui.view,arch_db:partner_event.res_partner_register_event_view
msgid "Select event to register"
msgstr "Välj evenemang att anmäla"
#~ msgid "Errors"
#~ msgstr "Fel"
#~ msgid ""
#~ "These partners haven't been registered because they\\'re "
#~ "already registered or other error occurred"
#~ msgstr ""
#~ "Dessa partners har inte anmälts eftersom de redan "
#~ "är anmälda eller på grund av att ett annat fel "
#~ "uppstod"

View file

@ -0,0 +1,3 @@
from . import event_event
from . import event_registration
from . import res_partner

View file

@ -0,0 +1,15 @@
# Copyright 2014 Tecnativa S.L. - Pedro M. Baeza
# Copyright 2015 Tecnativa S.L. - Javier Iniesta
# Copyright 2016 Tecnativa S.L. - Antonio Espinosa
# Copyright 2016 Tecnativa S.L. - Vicent Cubells
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class EventEvent(models.Model):
_inherit = "event.event"
create_partner = fields.Boolean(
string="Create Partners in registration", default=False
)

View file

@ -0,0 +1,92 @@
# Copyright 2015 Tecnativa - Javier Iniesta
# Copyright 2016 Tecnativa - Antonio Espinosa
# Copyright 2016 Tecnativa - Vicent Cubells
# Copyright 2018 Jupical Technologies Pvt. Ltd. - Anil Kesariya
# Copyright 2020 Tecnativa - Víctor Martínez
# Copyright 2014-2023 Tecnativa - Pedro M. Baeza
# Copyright 2023 Tecnativa - Carolina Fernandez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
class EventRegistration(models.Model):
_inherit = "event.registration"
partner_id = fields.Many2one(ondelete="restrict")
attendee_partner_id = fields.Many2one(
comodel_name="res.partner",
string="Attendee Partner",
ondelete="restrict",
copy=False,
index=True,
)
def _prepare_partner(self, vals):
return {
"name": vals.get("name") or vals.get("email"),
"email": vals.get("email", False),
"phone": vals.get("phone", False),
}
def _update_attendee_partner_id(self, vals):
# Don't update if doing a partner merging
if (
not vals.get("attendee_partner_id")
and vals.get("email")
and not self.env.context.get("partner_event_merging")
):
Partner = self.env["res.partner"]
Event = self.env["event.event"]
# Look for a partner with that email
email = vals.get("email").replace("%", "").replace("_", "\\_")
attendee_partner = Partner.search(
[("email", "=ilike", email)], limit=1, order="id"
)
event = Event.browse()
if vals.get("event_id"):
event = Event.browse(vals["event_id"])
if attendee_partner:
for field in {"name", "phone", "mobile"}:
vals[field] = vals.get(field) or attendee_partner[field]
elif event and event.create_partner:
# Create partner
attendee_partner = Partner.sudo().create(self._prepare_partner(vals))
vals["attendee_partner_id"] = attendee_partner.id
return vals
@api.model_create_multi
def create(self, vals_list):
for vals in vals_list:
self._update_attendee_partner_id(vals)
return super().create(vals_list)
def write(self, vals):
self._update_attendee_partner_id(vals)
return super().write(vals)
def partner_data_update(self, data):
reg_data = {k: v for k, v in data.items() if k in ["name", "email", "phone"]}
if reg_data:
# Only update registration data if this event is not old
registrations = self.filtered(
lambda x: x.event_end_date >= fields.Datetime.now()
)
registrations.write(reg_data)
@api.onchange("attendee_partner_id", "partner_id")
def _onchange_partner_id(self):
if self.attendee_partner_id:
if not self.partner_id:
self.partner_id = self.attendee_partner_id
get_attendee_partner_address = {
"get_attendee_partner_address": self.attendee_partner_id,
}
self = self.with_context(**get_attendee_partner_address)
for registration in self:
if registration.partner_id:
registration.update(
registration._synchronize_partner_values(
registration.partner_id
)
)
return {}

View file

@ -0,0 +1,46 @@
# Copyright 2014 Tecnativa S.L. - Pedro M. Baeza
# Copyright 2015 Tecnativa S.L. - Javier Iniesta
# Copyright 2016 Tecnativa S.L. - Antonio Espinosa
# Copyright 2016 Tecnativa S.L. - Vicent Cubells
# Copyright 2020 Tecnativa S.L. - Víctor Martínez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
class ResPartner(models.Model):
_inherit = "res.partner"
event_registration_ids = fields.One2many(
string="Event registrations",
comodel_name="event.registration",
inverse_name="attendee_partner_id",
)
registration_count = fields.Integer(
string="Attendances", compute="_compute_registration_count", store=False
)
@api.depends("event_registration_ids")
def _compute_registration_count(self):
for partner in self:
partner.registration_count = len(
self.env["event.registration"]
.search(
[
("attendee_partner_id", "child_of", partner.id),
("state", "not in", ("cancel", "draft")),
]
)
.mapped("event_id")
)
def write(self, data):
res = super(ResPartner, self).write(data)
self.mapped("event_registration_ids").partner_data_update(data)
return res
def address_get(self, adr_pref=None):
attendee_partner = self.env.context.get("get_attendee_partner_address", False)
if attendee_partner:
return {adr_pref: attendee_partner}
return super(ResPartner, self).address_get(adr_pref)

View file

@ -0,0 +1,9 @@
There is a new option in event form view, "Create Partners in registration". If
this option is checked, when you add registrations to this event, partners will
be created automatically with name, email, phone and mobile fields.
If partner already exists and user only fills email, name, phone and mobile fields will
be filled with partner's data.
The event registration values email, name, phone and mobile will be changed if the
related partner values are changed and the event end date hasn't passed yet.

View file

@ -0,0 +1,17 @@
* `Tecnativa <https://www.tecnativa.com>`__:
* Pedro M. Baeza
* Antonio Espinosa
* Jairo Llopis
* Vicent Cubells
* David Vidal
* Rafael Blasco
* Víctor Martínez
* Stefan Ungureanu
* Carolina Fernandez
* `Antiun <https://antiun.com/>`__:
* Javier Iniesta
* `Anil Kesariya`

View file

@ -0,0 +1,13 @@
This module links partners with the events they are registered through a
smart button.
It also includes:
* Search partners by their event attendees.
* Search partners by number of events attendees.
* Search partners by number of events attended.
* Partner column is visible on registration one2many list inside the event.
* Action in partner tree view 'More' button, to register several partners
to an event
* Restricts partner deletion when event attendees are linked to it.
* Onchange for partner_id removed in v16 core in Event Registration- including functionality here

View file

@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_res_partner_register_event,access_res_partner_register_event,model_res_partner_register_event,base.group_user,1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_res_partner_register_event access_res_partner_register_event model_res_partner_register_event base.group_user 1 1 1 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.7 KiB

View file

@ -0,0 +1,464 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>Link partner to events</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="link-partner-to-events">
<h1 class="title">Link partner to events</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:c0d0bff2b3aa5b8ce1e5ef73bd94e2ad59b684ee2655298079d1b03d6260f8f0
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/event/tree/16.0/partner_event"><img alt="OCA/event" src="https://img.shields.io/badge/github-OCA%2Fevent-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/event-16-0/event-16-0-partner_event"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/event&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module links partners with the events they are registered through a
smart button.</p>
<p>It also includes:</p>
<ul class="simple">
<li>Search partners by their event attendees.</li>
<li>Search partners by number of events attendees.</li>
<li>Search partners by number of events attended.</li>
<li>Partner column is visible on registration one2many list inside the event.</li>
<li>Action in partner tree view More button, to register several partners
to an event</li>
<li>Restricts partner deletion when event attendees are linked to it.</li>
<li>Onchange for partner_id removed in v16 core in Event Registration- including functionality here</li>
</ul>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#configuration" id="toc-entry-1">Configuration</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-3">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-4">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-5">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-6">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="configuration">
<h1><a class="toc-backref" href="#toc-entry-1">Configuration</a></h1>
<p>There is a new option in event form view, “Create Partners in registration”. If
this option is checked, when you add registrations to this event, partners will
be created automatically with name, email, phone and mobile fields.</p>
<p>If partner already exists and user only fills email, name, phone and mobile fields will
be filled with partners data.</p>
<p>The event registration values email, name, phone and mobile will be changed if the
related partner values are changed and the event end date hasnt passed yet.</p>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/event/issues">GitHub Issues</a>.
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
<a class="reference external" href="https://github.com/OCA/event/issues/new?body=module:%20partner_event%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-3">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-4">Authors</a></h2>
<ul class="simple">
<li>Tecnativa</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-5">Contributors</a></h2>
<ul class="simple">
<li><a class="reference external" href="https://www.tecnativa.com">Tecnativa</a>:<ul>
<li>Pedro M. Baeza</li>
<li>Antonio Espinosa</li>
<li>Jairo Llopis</li>
<li>Vicent Cubells</li>
<li>David Vidal</li>
<li>Rafael Blasco</li>
<li>Víctor Martínez</li>
<li>Stefan Ungureanu</li>
<li>Carolina Fernandez</li>
</ul>
</li>
<li><a class="reference external" href="https://antiun.com/">Antiun</a>:<ul>
<li>Javier Iniesta</li>
</ul>
</li>
<li><cite>Anil Kesariya</cite></li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-6">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>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.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainers</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/yajo"><img alt="yajo" src="https://github.com/yajo.png?size=40px" /></a> <a class="reference external image-reference" href="https://github.com/rafaelbn"><img alt="rafaelbn" src="https://github.com/rafaelbn.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/event/tree/16.0/partner_event">OCA/event</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1 @@
from . import test_event_registration

View file

@ -0,0 +1,122 @@
# Copyright 2014 Tecnativa S.L. - Pedro M. Baeza
# Copyright 2015 Tecnativa S.L. - Javier Iniesta
# Copyright 2016 Tecnativa S.L. - Antonio Espinosa
# Copyright 2016 Tecnativa S.L. - Vicent Cubells
# Copyright 2017 Tecnativa - David Vidal
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from datetime import datetime, timedelta
from psycopg2 import IntegrityError
from odoo import fields
from odoo.tests import Form, common
from odoo.tools import mute_logger
class TestEventRegistration(common.TransactionCase):
@classmethod
def setUpClass(cls):
super(TestEventRegistration, cls).setUpClass()
cls.event_0 = cls.env["event.event"].create(
{
"name": "Test event",
"date_begin": fields.Datetime.now(),
"date_end": fields.Datetime.now(),
"seats_limited": True,
"seats_max": "5",
}
)
cls.event_0.create_partner = True
registration_model = cls.env["event.registration"].with_context(
registration_force_draft=True
)
partner_model = cls.env["res.partner"]
cls.partner_01 = partner_model.create(
{
"name": "Test Partner 01",
"email": "email01@test.com",
"phone": "254728911",
}
)
cls.registration_01 = registration_model.create(
{"email": "email01@test.com", "event_id": cls.event_0.id}
)
cls.registration_02 = registration_model.create(
{
"email": "email02@test.com",
"event_id": cls.event_0.id,
"name": "Test Registration 02",
"phone": "254728911",
}
)
def test_create(self):
self.assertEqual(self.partner_01.name, self.registration_01.name)
self.assertEqual(self.partner_01.email, self.registration_01.email)
self.assertEqual(self.partner_01.phone, self.registration_01.phone)
partner_02 = self.registration_02.attendee_partner_id
self.assertEqual(partner_02.name, self.registration_02.name)
self.assertEqual(partner_02.email, self.registration_02.email)
self.assertEqual(partner_02.phone, self.registration_02.phone)
def test_count_registrations(self):
event_1 = self.event_0.copy()
self.assertEqual(self.partner_01.registration_count, 0)
self.registration_01.state = "open"
self.partner_01.invalidate_recordset()
self.assertEqual(self.partner_01.registration_count, 1)
self.registration_02.state = "done"
self.registration_02.attendee_partner_id = self.partner_01
self.registration_02.event_id = event_1
self.partner_01.invalidate_recordset()
self.assertEqual(self.partner_01.registration_count, 2)
def test_button_register(self):
event_1 = self.event_0.copy()
wizard = self.env["res.partner.register.event"].create({"event": event_1.id})
active_ids = [self.partner_01.id, self.registration_02.attendee_partner_id.id]
wizard.with_context(active_ids=active_ids).button_register()
def test_data_update(self):
event_2 = self.event_0.copy()
self.yesterday = datetime.now() - timedelta(days=1)
self.tomorrow = datetime.now() + timedelta(days=1)
self.last_month = datetime.now() - timedelta(days=30)
# Set an old event
event_2.write({"date_begin": self.last_month})
event_2.write({"date_end": self.yesterday})
self.registration_02.event_id = event_2
self.registration_02.attendee_partner_id = self.partner_01
# Update partner for an old event
self.partner_01.write({"email": "new@test.com"})
self.assertNotEqual(event_2.registration_ids.email, "new@test.com")
# Update partner for a current event
event_2.write({"date_end": self.tomorrow})
self.partner_01.write({"email": "new@test.com"})
self.assertEqual(event_2.registration_ids.email, "new@test.com")
@mute_logger("odoo.sql_db")
def test_delete_registered_partner(self):
# We can't delete a partner with registrations
with self.assertRaises(IntegrityError), self.cr.savepoint():
self.cr._default_log_exceptions = False
self.partner_01.unlink()
# Create a brand new partner and delete it
partner3 = self.env["res.partner"].create({"name": "unregistered partner"})
partner3.unlink()
self.assertFalse(partner3.exists())
def test_attendee_partner_is_not_contact(self):
# Create a partner that belongs to a company but is saved as "other address"
self.partner_01.type = "other"
self.partner_01.parent_id = self.env["res.partner"].create(
{"name": "Company", "is_company": True}
)
# The partner gets registered
with Form(self.registration_01) as reg_f:
reg_f.attendee_partner_id = self.partner_01
# Partner data inherited in registration
self.assertEqual(self.registration_01.name, self.partner_01.name)
self.assertEqual(self.registration_01.email, self.partner_01.email)
self.assertEqual(self.registration_01.phone, self.partner_01.phone)

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2016 Tecnativa S.L. - Vicent Cubells
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
<odoo>
<record model="ir.ui.view" id="view_event_form_partner">
<field name="name">Events (with partner)</field>
<field name="model">event.event</field>
<field eval="20" name="priority" />
<field name="inherit_id" ref="event.view_event_form" />
<field name="arch" type="xml">
<field name="address_id" position="after">
<field name="create_partner" />
</field>
</field>
</record>
</odoo>

View file

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2016 Jairo Llopis <jairo.llopis@tecnativa.com>
Copyright 2016 Vicent Cubells <vicent.cubells@tecnativa.com>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="view_event_registration_form" model="ir.ui.view">
<field name="model">event.registration</field>
<field name="inherit_id" ref="event.view_event_registration_form" />
<field name="arch" type="xml">
<field name="name" position="after">
<field name="attendee_partner_id" />
</field>
</field>
</record>
<record id="view_event_registration_tree" model="ir.ui.view">
<field name="model">event.registration</field>
<field name="inherit_id" ref="event.view_event_registration_tree" />
<field name="arch" type="xml">
<field name="name" position="after">
<field name="attendee_partner_id" />
</field>
</field>
</record>
<record id="view_registration_search" model="ir.ui.view">
<field name="name">Search attended registrations</field>
<field name="model">event.registration</field>
<field name="inherit_id" ref="event.view_registration_search" />
<field name="arch" type="xml">
<filter name="expected" position="after">
<filter
name="done"
domain="[('state', '=', 'done')]"
string="Attended"
/>
</filter>
</field>
</record>
</odoo>

View file

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2016 Tecnativa S.L. - Vicent Cubells
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
<odoo>
<record id="act_partner_registration" model="ir.actions.act_window">
<field name="res_model">event.registration</field>
<field name="name">Registrations</field>
<field name="view_mode">tree,form,calendar,graph</field>
<field name="domain">[("attendee_partner_id", "child_of", active_ids)]</field>
<field
name="context"
>{'search_default_attendee_partner_id': active_id, 'default_attendee_partner_id': active_id, 'search_default_expected': True}</field>
</record>
<record model="ir.ui.view" id="view_partner_form_registrations">
<field name="name">Partner Form with registrations</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="arch" type="xml">
<div name="button_box" position="inside">
<button
name="%(partner_event.act_partner_registration)d"
type="action"
class="oe_stat_button oe_inline"
help="Count of events with confirmed registrations."
icon="fa-id-card"
>
<field name="registration_count" widget="statinfo" />
</button>
</div>
</field>
</record>
<record id="view_res_partner_filter" model="ir.ui.view">
<field name="name">res.partner.select</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_res_partner_filter" />
<field name="arch" type="xml">
<field name="user_id" position="after">
<field
name="event_registration_ids"
string="Linked events"
filter_domain="[('event_registration_ids.event_id', 'ilike', self)]"
/>
</field>
</field>
</record>
</odoo>

View file

@ -0,0 +1,2 @@
from . import base_partner_merge_automatic_wizard
from . import res_partner_register_event

View file

@ -0,0 +1,14 @@
# Copyright 2023 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models
class BasePartnerMergeAutomaticWizard(models.TransientModel):
_inherit = "base.partner.merge.automatic.wizard"
def action_merge(self):
"""Inject context for later intercept it when the merge process does a flush,
and an update is launched on the partner that recomputes attendee_partner_id.
"""
self = self.with_context(partner_event_merging=True)
return super().action_merge()

View file

@ -0,0 +1,43 @@
# Copyright 2015 Tecnativa - Javier Iniesta
# Copyright 2016 Tecnativa - Antonio Espinosa
# Copyright 2016 Tecnativa - Vicent Cubells
# Copyright 2018 Jupical Technologies Pvt. Ltd. - Anil Kesariya
# Copyright 2020 Tecnativa - Víctor Martínez
# Copyright 2014-2023 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class ResPartnerRegisterEvent(models.TransientModel):
_name = "res.partner.register.event"
_description = "Register partner for event"
event = fields.Many2one(
comodel_name="event.event", required=True, ondelete="cascade"
)
def _prepare_registration(self, partner):
return {
"event_id": self.event.id,
"partner_id": partner.id,
"attendee_partner_id": partner.id,
"name": partner.name,
"email": partner.email,
"phone": partner.phone,
}
def button_register(self):
vals_list = []
Registration = self.env["event.registration"]
for partner in self.env["res.partner"].browse(
self.env.context.get("active_ids", [])
):
if not Registration.search(
[
("event_id", "=", self.event.id),
("attendee_partner_id", "=", partner.id),
]
):
vals_list.append(self._prepare_registration(partner))
self.env["event.registration"].create(vals_list)

View file

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2016 Tecnativa - Vicent Cubells
Copyright 2023 Tecnativa - Pedro M. Baeza
Copyright 2018 Jupical Technologies Pvt. Ltd. - Anil kesariya
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
<odoo>
<record id="res_partner_register_event_view" model="ir.ui.view">
<field name="name">Register in an event</field>
<field name="model">res.partner.register.event</field>
<field name="arch" type="xml">
<form string="Select event to register">
<group>
<field
name="event"
options="{'no_create': True, 'no_create_edit':True}"
/>
</group>
<footer>
<div>
<button
name="button_register"
type="object"
string="Create registrations"
class="oe_highlight"
/>
<button special="cancel" string="Cancel" />
</div>
</footer>
</form>
</field>
</record>
<record id="action_partner_register_event" model="ir.actions.act_window">
<field name="name">Register in an event</field>
<field name="res_model">res.partner.register.event</field>
<field name="view_mode">form</field>
<field name="view_id" ref="res_partner_register_event_view" />
<field name="binding_model_id" ref="base.model_res_partner" />
<field name="target">new</field>
</record>
</odoo>