Groovy Code Examples
/**
* Product list page extension component
* @param arg Main order object objectData, sub-object details["SalesOrderProductObj",productList]
* @return Extended layout for product list page productIdToExtendMap:
* [id1: [info:[text content collection], tip:[hint content collection]],[id2:...]]]
*/
@Override
ProductsExtend.Result getProductsExtend(ProductsExtend.Arg arg) {
/*log.info("productsExtend Arg:" + arg)
//Main order object
Map masterData = arg.objectData as Map
//Sub-object details
List productList = arg.details["SalesOrderProductObj"] as List
Map resultMap = [:]
productList.each { item ->
String id = item["_id"] as String
List infoList = []
List tipList = []
infoList.add(["content": "infoContent2", "color": "#91959e"])
tipList.add(["title" : "titleContent", "content": "tipContent", "color": "#fc5857"])
Map tmpMap = ["info": infoList, "tip": tipList]
resultMap.put(id, tmpMap)
}
log.info("resultMap=" + resultMap)*/
return ProductsExtend.Result.builder().productIdToExtendMap(null).build()
}
/**
* Process main order and product data for order submission button
* @param arg Main order object objectData, sub-object details["SalesOrderProductObj",productList]
* @return
* Main order data,
* Sub-object details["SalesOrderProductObj",productList],
* Split order collection splitOrderDetail
*/
@Override
OrderDetails.Result commitOrderConfirm(OrderDetails.Arg arg) {
/*log.info("commitOrderConfirm Arg: " + arg)
//Main order object
Map masterData = arg.objectData as Map
//Sub-object
Map details = arg.details as Map
List productList = details["SalesOrderProductObj"] as List
//Process main order and product data if needed, assign processed data to objectData and details for return
//For split orders, put multiple data and details combinations into splitOrders collection
OrderDetails.SplitOrders splitOrders1 = OrderDetails.SplitOrders.builder()
.objectData(masterData)
.details(details)
.build()
OrderDetails.SplitOrders splitOrders2 = OrderDetails.SplitOrders.builder()
.objectData(masterData)
.details(details)
.build()
List splitOrders = [splitOrders1, splitOrders2]
OrderDetails.SplitOrderInfo splitinfo = OrderDetails.SplitOrderInfo.builder()
.groupField("") //Grouping dimension by API name
.collectMasterFieldList([]) //API name collection of fields to display independently on each split order
.uiEventMasterFieldList([]) //API name collection of fields triggering UI events configured in main order layout
.saveField("") //API name of new custom field (multi-line text) for storing collected master field data
.build()
OrderDetails.SplitOrderDetailDTO splitOrderDetailDTO = OrderDetails.SplitOrderDetailDTO.builder()
.splitOrderInfo(splitinfo)
.orderList(splitOrders)
.build()*/
return OrderDetails.Result.builder()
.objectData(null)
.details(null)
.splitOrderDetail(null)
.build()
}
/**
* Handle whether to skip main order information page
* @param arg Customer ID:accountId Current user ID:userId Layout name:orderLayout Display fields:showFields
* @return display true/false show/hide objectData Write main order data (effective when display=false)
* {"display" : true, "objectData" : {"field1" : "value1"}}
*/
@Override
CustomPageDisplay.Result customPageDisplayHandler(CustomPageDisplay.Arg arg) {
log.info("customPageDisplayHandler Arg: " + arg)
return CustomPageDisplay.Result.builder()
.display(true)
.objectData(null)
.build()
}