Draft:Module Event Organization
(Draft page, no need to be translated) This is a draft on how the "Event Organization" module can be designed.
This module will be used to organize Events: An event can be a congress, a summit, a DevCamp, a forum, a training campaign, a virtual congress. We must be able to organize an event by defining and following tasks. Also we must be able to group a lot of existing element of an event (proposal, invoices, stocks movement, etc...). For this reason, an event will be a Dolibarr project. But we will add a new role "usage_organize_event"
Module Event Organization
An event can be a congress, a summit, a training campaign, a virtual congress...
- We must be able to organize an event by defining and following tasks.
- We must be able to group on same Event, a lot of existing elements of this event (proposals, invoices, stocks movement, events in agenda, etc...).
- We must be able to bill time spent for organization ofbthe event and have a view of the balance revenues/expenses of the event.
=> So an Event Organization must be a "Project" with the new role: "Organize an event" because all this features already exists on project.
- An event may contains 1 to n Conference, and|or 1 to n Booths.
Add a module 'Event Organization':
- A dependency must be added to enable module Project when we enable this new module Event Organization.
- Into the setup page of the Event Organization module:
- Define a list of label of tasks to create automatically when we validate a Project with role usage_organize_event. For example "Send Call for Conference", "Send Call for Booth", "Receive call for conferences", "Receive call for Booth", "Open subscriptions to events for attendees", "Send remind of event to speakers", "Send remind of event to Booth hoster", "Send remind of event to attendees" - Category to add to third-parties automatically created when someone suggests a conference. - Category to add to third-parties automatically created when they suggests a booth. - Template of email to send after receiving a suggestion of a conference. - Template of email to send after receiving a suggestion of a booth. - Template of email to send after a subscription to a booth has been paid. - Template of email to send after a subscription to an event has been paid.
Changes to do in Project module:
- Add a new role (so a new field) on project, called "Organize event" (under role "Follow tasks" and "Bill time spent"). The field is already in project table with name "usage_organize_event"
- Add a field "Allow unknown people to suggest conferences" (integer 0 or 1)
- Add a field "Allow unknown people to suggest booth" (integer 0 or 1)
- Add a field "Price of subscription" in project
- Add a field "Price of booth" in project
Trigger on validation of project
Into the trigger of module EventOrganization : When a project is validated, if usage_organize_event is set, create automatically the tasks defined into setup.
New object ConferenceOrBooth
- Add a new object ConferenceOrBooth with properties:
- Parent id of EventOrganization (the ID of event this conference or Booth is part of). - Label - Description - Conference Speaker or Booth responsible (Id to third party) - Format (A dictionary with fields: code, label, type). Dictionary must be prefilled with sql data "ONLINECONF", "Online/Virtual conference", "conference" "INDOORCONF", "Indoor conference", "conference" "ONLINEBOOTH", "Online/Virtual booth", "booth", "INDOORBOOTH", "Indoor booth", "booth - Status ("Draft", "Suggested", "Confirmed", "Not selected") - Planned start date/hour - Planned end date/hour - Booth paid (yes or no)
- Add a tab with list of attendees (see object ConferenceOrBoothAttendee)
We must have a + button to be able to add an attendee (An attendee will be a prospect third party with a given Tag). A link will be saved between third party and ConferenceOrBooth object into table ConferenceOrBoothAttendees.
We must be able to remove an attendee from backoffice.
- Add also a link on the ConferenceorBooth object to the payment page /public/payment/newpayment.php to pay a booth.
Public pages to register (as speaker or booth responsible)
- If role "Organize event" is checked on project, show a link on Project page to a public "Page for conferences or booth" (/public/project/index.php. See example of /public/payment/newpayment.php). This page show the name or project and the public note of project and has a button "Suggest a new conference" (if field suggest conferences is on), "View and vote for suggested events" (if field suggest conferences is on), "Suggest a booth" (if field suggest booth is on). Same architecture than the public payment page.
Suggesting a "new conference" event from public page will add a third-party record ("supplier" identified by email with the category defined into setup) if record does not exist yet. It will also add a record "ConferenceBooth". All submitted events will be visible with status on the second page "View and vote for suggested events".
Suggesting a "new booth" event from public page will add a third-party record ("supplier" identified by email with the category defined into setup) if record does not exist yet. It will also add a record "ConferenceBooth". If a price for booth is defined, create an invoice and redirect to page of public payment.
Public pages to register (as attendee of a conference)
- If role "Organize event" is checked, add a new link to a public "Page for attendees subscription" with a form to subscribe to the event. When someone register, we will add third-party record "prospect" and add a link between third-party and project into object "EventOrganizationSubscriptions". If a price for subscription has been set, create an invoice and redirect to public payment page.
Modify the public payment page so when an invoice linked to an EventOrganization is paid, the subscription is confirmed. Send an email from emails templates.
New tab on project
- Add a tab on project card called "Organized event". In this tab, show list of Conferences with button + to add a new one.
- Can click on a conference ref to open conference record.
- Add also button "Send emailing to speakers" => Create an emailing with list of speakers email prefilled
- Add also button "Send emailing to attendees" => Create an emailing with list of attendees email prefilled
The module must add a substitution variable that will be public link to download an ICS file of the event.
Add a public url to ICS file
Add a public url to be able to download an ICS file of an event.
Enhance the public payment page
Enhance the existing public page to make payment so we can provide an id of event to show the amount on payment page. Once payment has been done, we must generate an invoice linked to the project and record payment.
Enhancement of mass emailing module
- Enhance the mass emailing module so we can fill the content of emails by selecting a template email
New object EventOrganizationAttendees
- Properties of object EventOrganizationAttendees (link between Third-party and ConferenceBooth):
- Attendee (Id to third-party prospect) - Project id (Id of project) - Date of subscription - Amount of subscription paid
- Enabling the module will also add menu entries into project menu:
- Organized events - List - New - ConferenceOrBooth - List - New
- read (Read conference or booth, attendees)
- create/modify (Create/modify conference or booth, attendees)
- delete (Delete conference or booth, remove attendees)
Module and new managed objects must be generated with modulebuilder.
Goal is to have module included in core so modification of core files is possible (for example to manage the new role usage_organize_event on projects).