Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Envío email si se llama a la S326 - US25109. By Santiago Peña - 9/10/2019.
- // Hago una query para buscar el Contacto de la Cuenta a la que la Orden hace referencia.
- Contact c = [SELECT Id, Email, Name from Contact WHERE Account.Id=:accountId];
- // Little query para buscar el número de orden.
- Order o = [SELECT Id, OrderNumber from Order WHERE Id=:orderId];
- //OrderItems
- 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];
- //Busco el template.
- List<EmailTemplate> template = [select id, HtmlValue from EmailTemplate where DeveloperName = 'AnnulationDeliveryCancelledOrder'];
- //Busco el HtmlValue para el template a mappear.
- string htmlBody = template[0].HtmlValue;
- string diadehoy = date.today().format();
- String value;
- //Creo un mapa para reemplazar los valores de ciertas variables en el template más adelante en el código.
- Map<String, String> varMap = new Map<String, String>();
- //Marca
- if(orderitemList.size()>0){
- String strMake,strModel;
- Map<String, Object> jsonAttributeMap = AssetAttributesUtils.GetJSONAttribute(orderitemList[0].vlocity_cmt__JSONAttribute__c,'Marca');
- if(jsonAttributeMap!= null && jsonAttributeMap.containsKey('attributeRunTimeInfo')){
- Map<String,Object> attrRTinfoMap = (Map<String, Object>) jsonAttributeMap.get('attributeRunTimeInfo');
- Map<String,Object> defaultMap= ((Map<String, Object>)((List<Object>)attrRTinfoMap.get('default'))[0]);
- strMake = String.ValueOf(defaultMap.get('displayText'));
- }
- jsonAttributeMap.clear();
- //Modelo
- jsonAttributeMap = AssetAttributesUtils.GetJSONAttribute(orderitemList[0].vlocity_cmt__JSONAttribute__c,'Modelo');
- if(jsonAttributeMap != null && jsonAttributeMap.containsKey('attributeRunTimeInfo')){
- strModel = (String)((Map<String, Object>)jsonAttributeMap.get('attributeRunTimeInfo')).get('value');
- System.debug('strModel'+strModel);
- }
- jsonAttributeMap.clear();
- //Reemplaza los valores del template por los del JSON Attribute si HAY dispositivos.
- varMap.put('%ContactName%', orderitemList[0].Order.Contact_Name__c);
- varMap.put('%OrderNumber%', orderitemList[0].Order.OrderNumber);
- varMap.put('%Today%', diadehoy);
- varMap.put('%marca%', 'Equipo '+ strMake);
- varMap.put('%modelo%', strModel+'.');
- }
- else { //Reemplaza los valores del template por los del JSON Attribute si NO HAY dispositivos.
- varMap.put('%ContactName%', c.Name);
- varMap.put('%OrderNumber%', o.OrderNumber);
- varMap.put('%Today%', diadehoy);
- varMap.put('%marca%', '');
- varMap.put('%modelo%', '');
- }
- if(!Test.IsRunningTest()){
- if(!varMap.IsEmpty() && varMap.size()>0){
- for(string key : varMap.keySet())
- {
- if(varMap.get(key) == null || varMap.get(key) == ' '){
- value = '';
- }
- else{
- value = varMap.get(key);
- }
- htmlBody = htmlBody.replace(key,value);
- }
- //Creo una lista de direcciones de email en donde pongo el email del contacto.
- List<String> toAddresses = new List<String>();
- List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage> ();
- toAddresses.add(c.Email);
- Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage();
- email.setHtmlBody(htmlBody);
- email.setReplyTo('noreply@personal.com.ar');
- email.setTemplateId(template[0].id);
- email.setTargetObjectId(c.Id);
- email.setWhatId(orderId);
- email.saveAsActivity = false;
- email.setToAddresses(toAddresses);
- emails.add(email);
- Messaging.sendEmail(emails);
- system.debug('Numero de emails'+emails.size());
- } } }
- // Fin de envío de email.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement