Miscellaneous Functions
The following api. functions are available:
Name and Link to API Doc | Code Example |
---|---|
abortSyntaxCheck | Enables to skip input generation if the user knows that there are no inputs to be evaluated in the subsequent elements of the logic. It helps to save computation time for more complex logics if all the inputs are created in the first elements of the logic. |
addWarning | api.addWarning("Folders added!") Available for both header logic (warning displayed in the Messages section) and line item logic (warnings displayed next to the line item). |
boundCall | Product extensions // Get records from 'LocalMaterialData' PX table by a certain attribute9 value def request = """ { "operationType" : "fetch", "startRow" : 0, "endRow" : 300, "textMatchStyle" : "exact", "data" : { "operator" : "and", "_constructor" : "AdvancedCriteria", "criteria" : [ { "fieldName" : "attribute9", "operator" : "iEquals", "value" : "${material13}" } ] }, "oldValues" : null }""" def response = api.boundCall("aasecP", "productmanager.fetch/*/PX/LocalMaterialData", request).responseBody.response How to revoke a quote if (api.isInputGenerationExecution()) { return } def response = api.boundCall("ad-brazil", "quotemanager.revoke/241.Q", "").responseBody.response Important: The partition must be configured as a bound partition in the configuration. Please read also the Avoid api.boundCall article in Knowledge Base. |
contextByLabel | |
contextName | Note: Does not work for Rebate Agreements line items and Rebate Records. |
contextType | Note: Does not work for Rebate Agreements line items and Rebate Records. |
currentPartitionName | |
emitPersistedObject | |
emitRebateRecords | |
entityRef | |
evalExpression | |
filterFromMap | |
findCustomersInGroup | |
findWorkflowInfo | |
getBinding | |
getBoundPartitionNames | |
getCalculationContext | |
getCustomerIdsFromCustomerGroup | Returns a list of customer IDs based on the definition of the customer group. def custg = api.customerGroupEntry() def list = api.getCustomerIdsFromCustomerGrou(custg) return list |
getElement | Gets the result of a previous logic element.
Important: When saving the logic (during the input generation mode), this function will always behave as if it returned BigDecimal, even if the element returns a completely different data type. This can cause a problem during the "save" operation, if you are using the result as a Map, for example. To simplify your code, you can use def totalSales = out.Total_Sales |
getId | |
getSkusFromProductGroup | Returns a list of SKUs based on the definition of the product group. def prodg = api.productGroupEntry() def list = api.getSkusFromProductGroup(prodg) return list |
isDebugMode | Returns true if logic is called via UI debug/test exec mode. @return true if executed in debug mode When testing/debugging your code in the Test Drive, sometimes your code runs in a different context, than when it is executed in the real environment. In such a situation, it could be handy to identify that it runs in the Test Drive and make a manual input instead of taking data from the context, which is different than expected. if (api.isDebugMode()) { customerId = "40101610" } else { customerId = api.currentItem("customerId") } |
isDistributedMode | |
isSecondPass | |
(formerly isSyntaxCheck) | Returns true if the logic is executed in the input generation (or parameter determination) mode (i.e., typically when you are trying to save the logic). This function is mainly used to fix problems when saving a calculation logic in the logic editor. The trouble is, that the validator, which runs before saving, executes your code to identify possible run-time issues. If it detects an error, it does NOT save the logic. For example, when your logic element returns something else than BigDecimal (a Map, for instance), you have a problem, because the validator expects the function api.getElement() to return a BigDecimal. The workaround could be using the following construction: def pli = api.isInputGenerationExecution()? [:] : api.getElement("TargetPricePLI") Important: Some users tend to block checking the code of the whole element (using For an example of use, see the Knowledge Base article How to Show customerId Value from customerGroupEntry Picker in Outputs. |
jsonDecode | |
jsonDecodeList | |
jsonEncode | |
logInfo | Writes a message into the log file of the server node, on which the code is executed. The log file can be accessed via the menu Administration > Logs. api.logInfo("Adding LPG " + counter + " of " + size + " with label", lpg) Note: Ensure that the logging from logic is enabled – see the menu: Administration > Configuration > General Settings > Allow Groovy logging into system log. |
logWarn | Writes a message into the log file of the server node, on which the code is executed. The log file can be accessed via the menu Administration > Logs. api.logWarn("LI.Discount maximum discount",max) Note: Ensure that the logging from logic is enabled – see the menu: Administration > Configuration > General Settings > Allow Groovy logging into system log. |
multiKey | |
newController | |
putGlobal | |
random | |
removeSharedCache | |
resetSKUContextSwitch | |
sendEmail | |
setSharedCache | |
switchSKUContext | |
throwException | |
trace | Generates a trace message that can be used in the logic test drive.
|
uuid | |
walkFilter |
Found an issue in documentation? Write to us.
Â