Loading
Salesforce Document Generation
목차
필터 선택

          결과 없음
          결과 없음
          몇 가지 검색 팁

          키워드의 맞춤법을 확인하십시오.
          더 일반적인 검색 용어를 사용하십시오.
          필터 수를 줄여 검색 범위를 확장하십시오.

          전체 Salesforce 도움말 검색
          Group Quote Line Items by Selling Model Apex Example for Document Generation

          Group Quote Line Items by Selling Model Apex Example for Document Generation

          This Apex class groups quote line items by selling model type and returns a structured token format. During document generation, each group is rendered in a separate section.

          Required Editions

          Available in: Lightning Experience
          Available in: Professional, Enterprise, Unlimited, and Developer Editions

          For example, when the document generates, the plug-in groups quote line items by selling model type and returns the transformed token data. The document then renders separate sections for each selling model, confirming that the transform plug-in is working as expected and simplifying the template design.

          global class EnumGroupsTransformation implements ind_docgen_api.OpenInterface {
          
          global boolean invokeMethod(String methodName, Map<String, Object> inputMap, Map<String, Object> outMap) {
          if (methodName == null || String.isEmpty(methodName)) {
          return false;
          }
          
          switch on methodName {
          when 'transformTokenData' {
          return handleTransform(inputMap, outMap);
          }
          when else {
          System.debug('Unknown method: ' + methodName);
          return false;
          }
          }
          }
          
          private boolean handleTransform(Map<String, Object> inMap, Map<String, Object> outMap) {
          if (inMap == null || inMap.get('TokenData') == null) {
          return false;
          }
          
          Map<String, Object> inputMap = (Map<String, Object>) JSON.deserializeUntyped((String) inMap.get('TokenData'));
          Map<String, Object> temp = new Map<String, Object>();
          
          // Extract QuoteLineItems from inputMap
          List<Object> quoteLineItems = (List<Object>) inputMap.get('QuoteLineItem');
          
          if (quoteLineItems == null || quoteLineItems.isEmpty()) {
          temp.put('Groups', new List<Object>());
          String finalString = JSON.serialize(temp);
          outMap.put('TokenData', finalString);
          return true;
          }
          
          // Group items by SellingModelType
          Map<String, List<Map<String, Object>>> groupedItems = new Map<String, List<Map<String, Object>>>();
          
          for (Object item : quoteLineItems) {
          Map<String, Object> lineItem = (Map<String, Object>) item;
          String name = (String) lineItem.get('Name');
          Decimal unitPrice = (Decimal) lineItem.get('UnitPrice');
          String sellingModelType = (String) lineItem.get('SellingModelType');
          
          if (sellingModelType != null && name != null && unitPrice != null) {
          if (!groupedItems.containsKey(sellingModelType)) {
          groupedItems.put(sellingModelType, new List<Map<String, Object>>());
          }
          Map<String, Object> itemObj = new Map<String, Object>();
          itemObj.put('Name', name);
          itemObj.put('UnitPrice', unitPrice);
          groupedItems.get(sellingModelType).add(itemObj);
          }
          }
          
          // Build the output Groups array
          List<Object> groups = new List<Object>();
          
          for (String modelType : groupedItems.keySet()) {
          Map<String, Object> grp = new Map<String, Object>();
          grp.put('Type', modelType);
          grp.put('Items', groupedItems.get(modelType));
          groups.add(grp);
          }
          
          temp.put('Groups', groups);
          temp.put('Name', inputMap.get('Name'));
          
          String finalString = JSON.serialize(temp);
          outMap.put('TokenData', finalString);
          
          return true;
          }
          }
          

          Sample JSON Before Transformation

          {
            "QuoteLineItem":[
               {
                  "UnitPrice":1150.0,
                  "SellingModelType":"TermDefined",
                  "Name":"Laptop Pro Bundle"
               },
               {
                  "UnitPrice":1149.0,
                  "SellingModelType":"OneTime",
                  "Name":"Desktop"
               },
               {
                  "UnitPrice":1149.0,
                  "SellingModelType":"OneTime",
                  "Name":"Desktop"
               }
            ],
            "Name":"Laptop Purchase Quote 4/19/2024"
          }
          

          Sample JSON After Custom Class Enum Transformation

          {
            "Name":"Laptop Purchase Quote 4/19/2024"
            "Groups":[
               {
                  "Items":[
                     {
                         "UnitPrice":1150.0,
                         "Name":"Laptop Pro Bundle"
                     },
                  ],
                  "Type":"TermDefined"
               },
               {
                  "Items":[
                     {
                         "UnitPrice":1149.0,
                         "Name":"Desktop"
                     },
                     {
                         "UnitPrice":1149.0,
                         "Name":"Desktop"
                     }
                  ],
                  "Type":"OneTime"
               }
            ]
          }
          
           
          로드 중
          Salesforce Help | Article