Fxiaoke Developer Manual Fxiaoke Developer Manual
  • APL Development Manual
  • PWC Development Manual
  • OpenAPI Documentation
APL Code Introduction
API Reference
Development Tools
Release Notes
  • 简体中文
  • English
APL Code Introduction
API Reference
Development Tools
Release Notes
  • 简体中文
  • English
  • Getting Started

  • APL Function Open Scenarios

  • APL Class Open Scenarios

    • Common Library

    • Electronic Signature

    • Authentication Provider

    • Available Business Types

    • Object Controller Plugin

    • Event Listener

    • Object Export Plugin

    • ERP Integration Platform

    • Field Service Type Function Validation

    • FMCG Order Business Plugin

      • 1.Overview
      • 2.Configuration Steps
      • 3.Groovy Code Examples
      • 4.FAQ
    • Object Business Handler

    • Online Documentation

    • Custom Model

    • Environment Deployment

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()
    }
2.Configuration Steps
4.FAQ

← 2.Configuration Steps 4.FAQ→

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式