Skip to content

Commit

Permalink
Merge PR #417 into 17.0
Browse files Browse the repository at this point in the history
Signed-off-by pedrobaeza
  • Loading branch information
OCA-git-bot committed Dec 11, 2024
2 parents 073acef + d4eaa82 commit c27f9a6
Show file tree
Hide file tree
Showing 26 changed files with 1,737 additions and 0 deletions.
123 changes: 123 additions & 0 deletions event_stage_cancelled/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
============================
Event cancellation workflows
============================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:2c6facd843a69eb5970fe525b81d5e5364d69baa69bdb84e31580e41f5312782
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |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/event_stage_cancelled
: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-event_stage_cancelled
: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
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module adds the posibility of flagging an event stage as cancelled
so we can hook workflows onto it like cancelling registrations or
scheduling special mail events.

**Table of contents**

.. contents::
:local:

Use Cases / Context
===================

Up to v14, events had an state field instead of configurable stages. A
lost feature with that change was the concept of a cancelled event and
with it the logic associated to it: when we cancelled an event, its
registrations were cancelled along with it.

Configuration
=============

To set a stage as cancelled:

- Go to *Events > Configuration > Event Stages* and choose the one you
want to be the cancelled one.

To schedule a mail that triggers when the event is cancelled:

- Go to *Events* and select an event.
- Go to the *Communication* tab and add a new scheduler.
- Choose to trigger it *After the event cancellation*.
- Choose the other parameters like template or the interval.

When the event is cancelled, the corresponding mail will be sent to the
attendants who where confirmed at the moment of the cancellation.

Usage
=====

When you want to cancel an event an its registration, just click on the
*Cancel Event* button from the event itself.

A confirmation dialog will show up and if you confirm it, the linked
registrations will be cancelled as well.

Known issues / Roadmap
======================

- If you just change the stage to the cancelled one, the registrations
won't be cancelled. This is avoided for the moment on purpose as a
confirmation dialog would require an special ``ir.actions.client``
implementation.

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:%20event_stage_cancelled%0Aversion:%2017.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://tecnativa.com>`__

- David Vidal

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.

This module is part of the `OCA/event <https://github.com/OCA/event/tree/17.0/event_stage_cancelled>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions event_stage_cancelled/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
17 changes: 17 additions & 0 deletions event_stage_cancelled/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright 2024 Tecnativa - David Vidal
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
{
"name": "Event cancellation workflows",
"version": "17.0.1.0.0",
"category": "Marketing",
"author": "Tecnativa, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/event",
"license": "AGPL-3",
"depends": ["event"],
"data": [
"data/event_data.xml",
"data/mail_template_data.xml",
"views/event_stage_views.xml",
"views/event_event_views.xml",
],
}
6 changes: 6 additions & 0 deletions event_stage_cancelled/data/event_data.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record model="event.stage" id="event.event_stage_cancelled">
<field name="is_cancelled" eval="True" />
</record>
</odoo>
184 changes: 184 additions & 0 deletions event_stage_cancelled/data/mail_template_data.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
<?xml version="1.0" ?>
<odoo>
<record id="event_cancelled" model="mail.template">
<field name="name">Event: Cancelled</field>
<field name="model_id" ref="event.model_event_registration" />
<field name="subject">{{ object.event_id.name }}: event cancelled</field>
<field
name="email_from"
>{{ (object.event_id.organizer_id.email_formatted or object.event_id.user_id.email_formatted or '') }}</field>
<field
name="email_to"
>{{ (object.email and '"%s" &lt;%s&gt;' % (object.name, object.email) or object.partner_id.email_formatted or '') }}</field>
<field name="body_html" type="html">
<table
border="0"
cellpadding="0"
cellspacing="0"
style="padding-top: 16px; background-color: #F1F1F1; font-family:Verdana, Arial,sans-serif; color: #454748; width: 100%; border-collapse:separate;"
><tr><td align="center">
<t
t-set="date_begin"
t-value="format_datetime(object.event_id.date_begin, tz='UTC', dt_format=&quot;yyyyMMdd'T'HHmmss'Z'&quot;)"
/>
<t
t-set="date_end"
t-value="format_datetime(object.event_id.date_end, tz='UTC', dt_format=&quot;yyyyMMdd'T'HHmmss'Z'&quot;)"
/>
<t
t-set="is_online"
t-value="'is_published' in object.event_id and object.event_id.is_published"
/>
<t t-set="event_organizer" t-value="object.event_id.organizer_id" />
<t t-set="event_address" t-value="object.event_id.address_id" />
<table
border="0"
cellpadding="0"
cellspacing="0"
width="590"
style="padding: 16px; background-color: white; color: #454748; border-collapse:separate;"
>
<tbody>
<!-- HEADER -->
<tr>
<td align="center" style="min-width: 590px;">
<table
width="590"
border="0"
cellpadding="0"
cellspacing="0"
style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;"
>
<tr><td valign="middle">
<span style="font-size: 10px;">Your registration</span><br />
<span
style="font-size: 20px; font-weight: bold;"
t-out="object.name or ''"
>Oscar Morgan</span>
</td><td valign="middle" align="right">
<t t-if="is_online">
<a
t-attf-href="{{ object.event_id.website_url }}"
style="padding: 8px 12px; font-size: 12px; color: #FFFFFF; text-decoration: none !important; font-weight: 400; background-color: #875A7B; border: 0px solid #875A7B; border-radius:3px"
>
View Event
</a>
</t>
<t t-else="">
<img
t-att-src="'/logo.png?company=%s' % object.company_id.id"
style="padding: 0px; margin: 0px; height: auto; width: 80px;"
t-att-alt="'%s' % object.company_id.name"
/>
</t>
</td></tr>
<tr><td colspan="2" style="text-align:center;">
<hr
width="100%"
style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin:16px 0px 16px 0px;"
/>
</td></tr>
</table>
</td>
</tr>
<!-- EVENT DESCRIPTION -->
<tr>
<td align="center" style="min-width: 590px;">
<table
width="590"
border="0"
cellpadding="0"
cellspacing="0"
style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;"
>
<tr><td valign="top" style="font-size: 14px;">
<div>
Hello <t t-out="object.name or ''">Oscar Morgan</t>,<br />
We are sorry to inform you that the
<t t-if="is_online">
<a
t-att-href="object.event_id.website_url"
style="color:#875A7B;text-decoration:none;"
t-out="object.event_id.name or ''"
>OpenWood Collection Online Reveal</a>
</t>
<t t-else="">
<strong
t-out="object.event_id.name or ''"
>OpenWood Collection Online Reveal</strong>
</t>
has been cancelled.
</div>
<t t-if="event_organizer">
<div>
<br />
<div
>Please do not hesitate to contact the organizer at for further information:</div>
<ul>
<li t-out="event_organizer.name or ''">YourCompany</li>
<t t-if="event_organizer.email">
<li>Mail: <a
t-attf-href="mailto:{{ event_organizer.email }}"
style="text-decoration:none;color:#875A7B;"
t-out="event_organizer.email or ''"
/></li>
</t>
<t t-if="event_organizer.phone">
<li>Phone: <t
t-out="event_organizer.phone or ''"
/></li>
</t>
</ul>
</div>
</t>
<div>
We understand the inconvenience this may cause and sincerely apologize for any disappointment.<br
/>
<span style="color: #454748;">
-- <br />
<t t-if="event_organizer">
<t t-out="event_organizer.name or ''">YourCompany</t>
</t>
<t t-else="">
The <t
t-out="object.event_id.name or ''"
>OpenWood Collection Online Reveal</t> Team
</t>
</span>
</div>
</td></tr>
</table>
</td>
</tr>
</tbody>
</table>
</td></tr>
<!-- FOOTER BY -->
<tr><td align="center" style="min-width: 590px;">
<table
t-if="object.company_id"
width="590"
border="0"
cellpadding="0"
cellspacing="0"
style="min-width: 590px; background-color: #F1F1F1; color: #454748; padding: 8px; border-collapse:separate;"
>
<tr><td style="text-align: center; font-size: 14px;">
Sent by <a
target="_blank"
t-attf-href="{{ object.company_id.website }}"
style="color: #875A7B;"
t-out="object.company_id.name or ''"
>YourCompany</a>
<t t-if="'website_url' in object.event_id and object.event_id.website_url">
<br />
Discover <a href="/event" style="color:#875A7B;">all our events</a>.
</t>
</td></tr>
</table>
</td></tr>
</table>
</field>
<field name="lang">{{ object.event_id.lang or object.partner_id.lang }}</field>
</record>
</odoo>
Loading

0 comments on commit c27f9a6

Please sign in to comment.