Advertisement
Guest User

aqsdq1

a guest
Dec 9th, 2019
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.19 KB | None | 0 0
  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.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement