Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

A Dimension represents a Salesforce object, which is related to the Reservation object in one or both of the following ways:

...

Dimensions allow you to do two important things:

Out of the box, the following Dimension records are already included:

  • Resource
  • Staff
  • Group
  • Contact

You can modify these Dimensions or even delete them if you are sure you don't need them. You can also create your own, as described below.

Info

For performance reasons, it's good practice to only have the minimum number of Dimensions, especially ones that are configured for conflict checking.

Create Dimension records

  1. Create (a) lookup(s) on the Reservation object, linking the Object you want to link (any Standard or Custom object)
  2. Create a Dimension record
    1. see Dimension section below for fields
      Image Removed
      Image Removed
  3. Create a lookup from the Availability object to the object that you want to use as a Dimension. Write down the API Name of this field
    1. Fill in the Availability Lookup field on the Dimension record record created in Step 2., with the just written down API Name
  4. Define Dimension Fields on that corresponding Dimension, to tell Booker25 that these fields should be plotted
    1. Each Dimension Field should have the same Name as the API Name of the lookup(s) created in Step 1.
    2. See Dimension Field section below for fields additional info on the fields
      Image Removed
  5. Define Dimension Junctions on the Dimension to tell Booker25 that you have related lists that should be plotted

Dimension

Dimensions are a way to let Booker25 know which objects related to a reservation are important.

...

The API name of a lookup from Availability to the dimension object.

For more information see this article about Availabilities

Dimension Field

Dimensions Fields are a way to let Booker25 know which lookups on a reservation are important.

...

Enables the advanced lookup filter on the reservation form for this dimension field.

The advanced lookup filter allows you to use autocomplete to search through valid related records. It will only show records in which the current reservation will be valid. So for example meeting rooms in closed buildings or staff that are unavailable because of holiday or sick leave will not be shown. Or if you have added a service to the reservation, it will only show records in which that service is actually available during the time of the reservation.

A known limitation of the advanced lookup filter is that it doesn't support custom lookup filters.

...

Controls if this dimension field gets populated with the related record id when creating a new reservation on the calendar.

Options:

  • Never - The field will not be populated
  • Only when on form - The field will only be populated if it is visible on the reservation form
  • Only when on form and required - Same as above but only if the field is required on the form
  • Always - The field will always be populated, even if it isn't visible on the form

...

Defines the behavior when Reservations are saved outside of the available times for the related dimension record.

  • None - Allow the Reservation to be saved
  • Soft - Allow the Reservation to be saved, but show a warning to the user and enter a Conflict record in the database
  • Hard - Don't allow the Reservation to be saved, and show an error message to the user

For more information, see this article about Conflict Checking, and this article about Availabilities

...

Defines the behavior when double bookings are detected for Reservations in this Dimension.

  • None - Allow the Reservation to be saved
  • Soft - Allow the Reservation to be saved, but show a warning to the user and enter a Conflict record in the database
  • Hard - Don't allow the Reservation to be saved, and show an error message to the user

For more information, see this article about Conflict Checking.

...

Defines the behavior when a Reservation's quantity exceeds the Dimension's capacity.

  • None - Allow the Reservation to be saved
  • Soft - Allow the Reservation to be saved, but show a warning to the user and enter a Conflict record in the database
  • Hard - Don't allow the Reservation to be saved, and show an error message to the user

For more information, see this article about Conflict Checking.

...

1: Can also be a cross-object reference or a checkbox formula on Reservation. However the latter will not be set yet when working from the Reservation Form UI.
2: Required when Enforce Capacity Check is enabled.
3: Can also be a number formula, and can also be a cross-object reference.

Dimension Junction

Dimensions Junctions are a way to let Booker25 know which junctions between a dimension and a reservation are important.

Info

A junction object is an object that sits in between two other objects (i.e. it has a lookup to each of the two objects). This creates a many-to-many relationship between those objects. For more information, see https://help.salesforce.com/articleView?id=relationships_manytomany.htm&type=5

...

  • Make this list visible on the reservation form
  • Make the reservation visible on the contact calendar for each contact in the list
  • (Optional) Make Booker25 detect and prevent double bookings for these contacts.
Warning

Don't forget to implement the trigger hook described in the next section, or junction records will not be properly checked for conflicts.

Warning

There is an edge case where you can get an error like this: SObject row was retrieved via SOQL without querying the requested field: B25__Reservation__c.<junctions>__r (where <junctions> is your relationship name).

This error happens when you have both a field and a junction under the same dimension, both with Availability Checking: None. A workaround for this error is to give either the field or the junction Availability Checking: Soft or Availability Checking: Hard.

...

Defines the behavior when Reservations are saved outside of the available times for the related dimension record.

  • None - Allow the Reservation to be saved
  • Soft - Allow the Reservation to be saved, but show a warning to the user and enter a Conflict record in the database
  • Hard - Don't allow the Reservation to be saved, and show an error message to the user

For more information, see this article about Conflict Checking, and this article about Availabilities

...

Defines the behavior when double bookings are detected for Reservations in this Dimension.

  • None - Allow the Reservation to be saved
  • Soft - Allow the Reservation to be saved, but show a warning to the user and enter a Conflict record in the database
  • Hard - Don't allow the Reservation to be saved, and show an error message to the user

For more information, see this article about Conflict Checking.

...

1: Can also be a cross-object reference or a checkbox formula on Reservation. However the latter will not be set yet when working from the Reservation Form UI.

Create trigger hook

For every Dimension Junction you create, make sure you also create a Trigger for its object, which calls the following method: B25.DimensionJunctionTriggerHook.execute()

This makes Booker25 check permissions on the object. Make sure to replace <Dimension_Junction_API_Name> with the actual API name of your object, and <Trigger_Name> with a name that makes sense to you.

Code Block
trigger <Trigger_Name> on <Dimension_Junction_API_Name> (before insert, before update, before delete, after insert, after update, after delete, after undelete) {
	B25.DimensionJunctionTriggerHook.execute();
}

Displaying Dimension Junctions on the Reservation Form

Almost there! Last step to allow your users to create Dimension Junction records from the Reservation Form is to display them.

Related articles

Filter by label (Content by label)
showLabelsfalse
max5
spacescom.atlassian.confluence.content.render.xhtml.model.resource.identifiers.SpaceResourceIdentifier@101b6
showSpacefalse
sortmodified
reversetrue
typepage
cqllabel = "kb-how-to-article" and type = "page" and space = "BPD"
labelskb-how-to-article

...

hiddentrue

...

titleOn this page

...

Please refer to this page.