Rebate Template Simple Working Example

A simplistic example of a logic for Rebate Templates. This logic creates one agreement with one line.

How to use:

  1. Place the code to a new logic under Administration > Logics > Rebate Template Logics.
    IMPORTANT: Review the first 3 lines and change it according to your system:

    1. conditionTypeName – Must be the name of an existing Condition Type, otherwise it fails.

    2. customerId – Should be an existing customer Id, but from our experience it may also work with a non-existent Id (advisable for testing purposes only).

    3. inputFieldOnConditionType – The name of the input parameter on the line item. It must be the NAME of the input (in case you have the Name different from Label of the input parameter).

  2. Make a new template record under Rebates > Rebate Templates and assign the new logic to it.

  3. Navigate to Rebates > Rebate Agreements and click the Create from Template button.

def conditionTypeName = "RebateOnSale" //Name of existing Condition Type def customerId = "CD-00001" //ID of existing customer def inputFieldOnConditionType = "Rebate discount %" //name of input field on the Condition Type def lineItemId = "1234567890" //this should be generated by random generator such as api.uuid(), but ok for first understanding def agreementLabel = api.stringUserEntry("Agreement Name") //create a builder for new Agreement, and setup the important header input fields builder = ratBuilder.fromParams([ "label" : agreementLabel, "startDate" : api.parseDate("yyyy-MM-dd", "2017-01-01"), "endDate" : api.parseDate("yyyy-MM-dd", "2017-12-31"), "payoutDate": api.parseDate("yyyy-MM-dd", "2018-02-01"), "targetDate": api.parseDate("yyyy-MM-dd", "2016-12-01"), //calculationDate ]) //set the value of "Customer(s)" input on header level builder.addOrUpdateInput("ROOT", [ "label" : "Customer(s)", "name" : "CustomerGroup", "type" : InputType.CUSTOMERGROUP, "value" : [ "customerFieldLabel": "Customer Id", "customerFieldName" : "customerId", "customerFieldValue": customerId ], "valueHint": customerId ]) //create new line with given existing condition type and setting a value of its input field builder.addLineItemWithId(lineItemId, conditionTypeName) .addOrUpdateInput(lineItemId, [ "name" : inputFieldOnConditionType, "label": inputFieldOnConditionType, "type" : InputType.USERENTRY, "value": 10 ]) builder.build()

Found an issue in documentation? Write to us.