SHARE
TWEET

aqsdq1

a guest Dec 9th, 2019 114 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Envío email si se llama a la S326 - US25109. By Santiago Peña - 9/10/2019.
  2.                
  3.                 // Hago una query para buscar el Contacto de la Cuenta a la que la Orden hace referencia.
  4.                 Contact c = [SELECT Id, Email, Name from Contact WHERE Account.Id=:accountId];
  5.                 // Little query para buscar el número de orden.
  6.                 Order o = [SELECT Id, OrderNumber from Order WHERE Id=:orderId];
  7.  
  8.                
  9.                 //OrderItems
  10.                 List<OrderItem> orderitemList = [SELECT vlocity_cmt__SerialNumber__c,OrderId,Product_Type__c,ProductName__c,OrderItemNumber,vlocity_cmt__JSONAttribute__c,vlocity_cmt__Action__c,Order.Contact_Name__c,Order.vlocity_cmt__Email__c,Order.PrimaryContactEmail__c,Order.OrderNumber from OrderItem where OrderId =:orderId and (Product_Type__c='Dispositivo' OR Product_Type__c='Accesorio')LIMIT 1];
  11.                
  12.                
  13.                 //Busco el template.
  14.                 List<EmailTemplate> template = [select id, HtmlValue from EmailTemplate where DeveloperName = 'AnnulationDeliveryCancelledOrder'];
  15.                    
  16.                    
  17.                 //Busco el HtmlValue para el template a mappear.
  18.                 string htmlBody = template[0].HtmlValue;
  19.                 string diadehoy = date.today().format();
  20.                 String value;
  21.  
  22.                 //Creo un mapa para reemplazar los valores de ciertas variables en el template más adelante en el código.    
  23.                 Map<String, String> varMap = new Map<String, String>();
  24.  
  25.                
  26.                 //Marca
  27.                 if(orderitemList.size()>0){
  28.                    
  29.                     String strMake,strModel;
  30.                    
  31.                    
  32.                     Map<String, Object> jsonAttributeMap = AssetAttributesUtils.GetJSONAttribute(orderitemList[0].vlocity_cmt__JSONAttribute__c,'Marca');
  33.                     if(jsonAttributeMap!= null && jsonAttributeMap.containsKey('attributeRunTimeInfo')){
  34.                         Map<String,Object> attrRTinfoMap =  (Map<String, Object>) jsonAttributeMap.get('attributeRunTimeInfo');        
  35.                         Map<String,Object>  defaultMap= ((Map<String, Object>)((List<Object>)attrRTinfoMap.get('default'))[0]);
  36.                         strMake = String.ValueOf(defaultMap.get('displayText'));
  37.                        
  38.                     }
  39.                     jsonAttributeMap.clear();
  40.                    
  41.                     //Modelo
  42.                     jsonAttributeMap = AssetAttributesUtils.GetJSONAttribute(orderitemList[0].vlocity_cmt__JSONAttribute__c,'Modelo');
  43.                    
  44.                     if(jsonAttributeMap != null && jsonAttributeMap.containsKey('attributeRunTimeInfo')){
  45.                         strModel =  (String)((Map<String, Object>)jsonAttributeMap.get('attributeRunTimeInfo')).get('value');
  46.                         System.debug('strModel'+strModel);    
  47.                     }
  48.                     jsonAttributeMap.clear();
  49.                    
  50.                    
  51.                    
  52.                    
  53.                     //Reemplaza los valores del template por los del JSON Attribute si HAY dispositivos.
  54.                     varMap.put('%ContactName%', orderitemList[0].Order.Contact_Name__c);
  55.                     varMap.put('%OrderNumber%', orderitemList[0].Order.OrderNumber);
  56.                     varMap.put('%Today%', diadehoy);
  57.                     varMap.put('%marca%', 'Equipo '+ strMake);
  58.                     varMap.put('%modelo%', strModel+'.');
  59.                 }
  60.                
  61.                 else {  //Reemplaza los valores del template por los del JSON Attribute si NO HAY dispositivos.
  62.                        
  63.                         varMap.put('%ContactName%', c.Name);
  64.                         varMap.put('%OrderNumber%', o.OrderNumber);
  65.                         varMap.put('%Today%', diadehoy);
  66.                         varMap.put('%marca%', '');
  67.                         varMap.put('%modelo%', '');
  68.                 }
  69.                
  70.                    
  71.                    
  72.                     if(!Test.IsRunningTest()){
  73.                         if(!varMap.IsEmpty() && varMap.size()>0){
  74.                            
  75.                             for(string key : varMap.keySet())
  76.                             {
  77.                                 if(varMap.get(key) == null || varMap.get(key) == ' '){
  78.                                     value = '';
  79.                                 }
  80.                                 else{
  81.                                     value =  varMap.get(key);
  82.                                 }
  83.                                 htmlBody = htmlBody.replace(key,value);
  84.                             }    
  85.                      //Creo una lista de direcciones de email en donde pongo el email del contacto.
  86.                      
  87.                      
  88.                      
  89.                      
  90.                       List<String> toAddresses = new List<String>();
  91.                       List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage> ();
  92.                                
  93.                       toAddresses.add(c.Email);
  94.                                
  95.                       Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage();
  96.                                
  97.                                 email.setHtmlBody(htmlBody);
  98.                                 email.setReplyTo('noreply@personal.com.ar');
  99.                                 email.setTemplateId(template[0].id);
  100.                                 email.setTargetObjectId(c.Id);
  101.                                 email.setWhatId(orderId);
  102.                                 email.saveAsActivity = false;
  103.                                 email.setToAddresses(toAddresses);
  104.                                
  105.                                 emails.add(email);
  106.                                 Messaging.sendEmail(emails);
  107.                                 system.debug('Numero de emails'+emails.size());
  108.                                
  109.                      
  110.                                
  111.                            
  112.                         } } }
  113.             // Fin de envío de email.
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top