You will use an Event Hook logic when you need to:
-
Run a piece of code at the moment, when certain event/action happens in the system, e.g.:
-
For a Quote, you can place hook before the Quote is converted to deal, and you can stop this transition depending on some calculation.
-
You can send email notification to certain people.
-
Logic API
-
Logic Nature: eventHook
-
Logic Type: Calculation/Pricing
-
-
Execution Types:
-
Standard - to perform some calculation and return the decision (if any).
-
-
Information provided to the logic:
-
Depends on the type of the hook event (see the list of all hook events at HookEventType) for which it is triggered. For event
-
QUOTE_TO_DEAL_PRE
-
Binding variable
quote
- with the content of the Quote (incl. items), but it has only simple built-in fields and does not contain any information about inputs and outputs (not for header nor for items). So if you need the complete Quote content, you need to read it from the database.
-
-
-
-
Expected logic execution outcome:
-
Depends on the type of the hook event (see the list of all hook events at HookEventType) for which it is triggered. For event
-
QUOTE_TO_DEAL_PRE - The system will use only the result and message from the first logic element. The result must be of type boolean.
-
If the result type is NOT Boolean, the result and message is ignored and the action can continue with execution.
-
TRUE - The action can continue with execution.
-
FALSE - The action is NOT allowed to continue and the message will be used and displayed to the user.
-
exception - The action is NOT allowed to continue and the exception message will be used and displayed to the user.
-
-
-
Logging/Testing
The hook events are logged to the Hook Events (HEVT) table.
Configuration
Configured as Advanced Configuration Options on page
.The configuration option is called eventHooksConfig. There can be more various event types, that’s why the configuration is a list. But you can have only one logic for one event type.
The event is trigger either PRE or POST the action.
[ { "event": "QUOTE_TO_DEAL_PRE", "label": "Convert quote to deal pre-execute", "logicName": "EventHook_QuoteToDealPre" } ]
Code Sample
-
EventHook_QuoteToDeal_PRE - Very simple demo sample of the pre-convertToDeal hook.
def completeQuote = api.getCalculableLineItemCollection(quote.typedId) //❶ if (libs.QuoteSharedLib.utils.isIndicativePricingQuote(quoteWithItems)) { api.setAlertMessage("Indicative Pricing Quotes cannot be converted into a Deal") return false } return true
❶ The variable "quote" has only simplified Quote data, if you want the complete info, you need to read it from the database.