Draft:Module Event Organization: Difference between revisions

Jump to navigation Jump to search
no edit summary
No edit summary
Tag: 2017 source edit
No edit summary
Line 4: Line 4:
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"
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 =
=Module Event Organization=
An event can be a congress, a summit, a training campaign, a virtual congress...
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 organize an event by defining and following tasks.
* We must be able to bill time spent for organization ofbthe event and have a view of the balance revenues/expenses of the event.
*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.
=> 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.
*An event may contains 1 to n Conference, and|or 1 to n Booths.


Add a module 'Event Organization':
Add a module 'Event Organization':


* A dependency must be added to enable module Project when we enable this new 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:
*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"
 
  - 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" => Field textarea separate by return char
  - Category to add to third-parties automatically created when someone suggests a conference.
  - 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.
  - Category to add to third-parties automatically created when they suggests a booth.
Line 29: Line 31:
Changes to do in Project module:
Changes to do in Project module:


* Add a new role (so a new field) on project when module Organize Event is on, 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 new role (so a new field) on project when module Organize Event is on, called "Organize event" (under role "Follow tasks" and "Bill time spent"). The field is already in project table with name "'''usage_organize_event'''"
 
=> On the new tab Conférence or Booth (see below)
=> On the new tab Conférence or Booth (see below)
* 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 registration" in project
* Add a field "Price of booth" in project


= Trigger on validation of project =
*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 registration" in project
*Add a field "Price of booth" in project
 
=Trigger on validation of project=
Into the trigger of module EventOrganization :
Into the trigger of module EventOrganization :
When a project is validated, if '''usage_organize_event''' is set, create automatically the tasks defined into setup.
When a project is validated, if '''usage_organize_event''' is set, create automatically the tasks defined into setup.


= New object ConferenceOrBooth =
=New object ConferenceOrBooth=


* Add a new object ConferenceOrBooth with properties:
*Add a new object ConferenceOrBooth with properties:


  - Parent id of EventOrganization (the ID of event this conference or Booth is part of).
  - Parent id of EventOrganization (the ID of event this conference or Booth is part of).
Line 58: Line 62:
  - Booth paid (yes or no)
  - Booth paid (yes or no)


* Add a tab with list of attendees (see object ConferenceOrBoothAttendee)
*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 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.
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.
*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)=


= 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.
* 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 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".
Line 71: Line 77:
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.
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) =
=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.
 
*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.
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.
Send an email from emails templates.


= New tab on project =
=New tab on project=
* If the checkbox "Organize event": Add a tab on project card called "Organized event". In this tab, show list of ConferencesOrBooth with button + to add a new one.


* Can click on a conference ref to open conference record.
*If the checkbox "Organize event": Add a tab on project card called "Organized event". In this tab, show list of ConferencesOrBooth with button + to add a new one.


* Add also button "Send emailing to speakers" => Create an emailing with list of speakers email prefilled
*Can click on a conference ref to open conference record.


* Add also button "Send emailing to attendees" => Create an emailing with list of attendees email prefilled
*Add also button "Send emailing to speakers" => Create an emailing with list of speakers email prefilled


= Add substitution variable for link to ICS file of event =
*Add also button "Send emailing to attendees" => Create an emailing with list of attendees email prefilled
 
=Add substitution variable for link to ICS file of event=
The module must add a substitution variable that will be public link to download an ICS file of the event.
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 ICS file=
Add a public url to be able to download an ICS file of an event.
Add a public url to be able to download an ICS file of an event.


= Enhance the public payment page =
=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.
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 =
=Enhancement of mass emailing module=
* Enhance the mass emailing module so we can fill the content of emails by selecting a template email
 
*Enhance the mass emailing module so we can fill the content of emails by selecting a template email




= New object EventOrganizationAttendees =
=New object EventOrganizationAttendees=


* Properties of object EventOrganizationAttendees (link between Third-party and ConferenceBooth):
*Properties of object EventOrganizationAttendees (link between Third-party and ConferenceBooth):


  - Attendee (Id to third-party prospect)
  - Attendee (Id to third-party prospect)
Line 108: Line 117:
  - Amount of subscription paid
  - Amount of subscription paid


= Menus =
=Menus=
* Enabling the module will also add menu entries into project menu:
 
*Enabling the module will also add menu entries into project menu:
 
  - Organized events
  - Organized events
     - List => Project List filter by project with attribute "Event"  
     - List => Project List filter by project with attribute "Event"  
Line 117: Line 128:
     - New
     - New


= Permissions =
=Permissions=
* read (Read conference or booth, attendees)
 
* create/modify (Create/modify conference or booth, attendees)
*read (Read conference or booth, attendees)
* delete (Delete conference or booth, remove attendees)
*create/modify (Create/modify conference or booth, attendees)
*delete (Delete conference or booth, remove attendees)




= Note =
=Note=
Module and new managed objects must be generated with modulebuilder.
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).
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).
Bureaucrats, emailconfirmed, Administrators
824

edits

Navigation menu