communication error- email with velocity script custom object- multiple

SandyBarta99
Level 2

errorm.pngerror2.PNG

 

Hi all and

We are trying to come up with Velocity Script to display field data from an Custom Object when certain criteria are met. I have it working when there is just one qualifying product but when a person has 2 or more qualifying products, the script does not complete and when I preview the email it give a Communication Failure error as you can see above.

 1- User qualifies for a renewal for 1 product-mostly it will show no errors

2- User qualifies for more than 1 product - above errors will show

- can't it be because the database it needs to check it is huge?

Code

 

 

 

 

 

#foreach( $A__Installed_Product in $A__Installed_Product__cList )
#set($startDate = $convert.parseDate(${A__Installed_Product.Warranty_Start__c}, "yyyy-MM-dd"))
#set($formattedStartDate = $date.format("dd/MM/yyyy", $startDate))
#set($endDate = $convert.parseDate(${A__Installed_Product.Warranty_End__c}, "yyyy-MM-dd"))
#set($formattedEndDate = $date.format("dd/MM/yyyy", $endDate))
#set( $defaultTimeZone = $date.getTimeZone().getTimeZone("Europe/London") )
#set( $defaultLocale = $date.getLocale() )
#set( $calNow = $date.getCalendar() )
#set( $ret = $calNow.setTimeZone($defaultTimeZone) )
#set( $calConst = $field.in($calNow) )
## determine date 30 days from now
$calNow.add($calConst.DATE,30)
#set( $thirtyDaysAwayDate = $date.format("dd/MM/yyyy",$calNow) )
#if ( $formattedEndDate == "$thirtyDaysAwayDate" && ${A__Installed_Product__cList.get(0).A__Status__c}== "Installed (Auto-validated)" &&${A__Installed_Product.Product2List.get(0).Has_Orderable__c}=="1" && !${A__Installed_Product__cList.get(0).1_Contract_End_Date__c} && !${A__Installed_Product__cList.get(0).2_Contract_End_Date__c} && !${A__Installed_Product__cList.get(0).3o_Contract_End_Date__c})
Orderable PS+:              ${A__Installed_Product.Product2List.get(0).Has_Orderable__c}  <br>
30 Day Date:       $thirtyDaysAwayDate <br>
eComm:    ${A__Installed_Product.Product2List.get(0)._eCommerce_Options__c}  <br>
Product:              ${A__Installed_Product.A__Product_Name__c}  <br>
Serial No:              ${A__Installed_Product.Serial_Number__c}<br>
Warranty Start:           $formattedStartDate<br>
Warranty End:             $formattedEndDate<br>
Basic Material:              ${A__Installed_Product.Product2List.get(0).Basic_Material__c} <br>
"===========================================" <br>
#if ( ${A__Installed_Product.Product2List.get(0).eCommerce_Options__c} == "1")   
href="https://wwww=${A__Installed_Product.EC_Hashed_Purchase_Key__c}"><strong>Buy extended cover now</strong></a></p></td>
#else
href="https://wwww?q=${A__Installed_Product.Product2List.get(0).Basic_Material__c}"><strong>Where to buy</strong></a></p></td>
#end                     
#end
#end
<br>

 

 

 

 

 


When I try doing it in the recommended way, it won't show me anything

https://nation.marketo.com/t5/product-discussions/velocity-script-foreach-loop-trying-to-display-mul...


Declare list

 

 

 

#set($qualifyingproducts=[])
#set($void=$qualifyingproducts.add($A__Installed_Product ))
"++++++++++"
$qualifyingproducts
"+++++++++++

 

 

 

 

Code

 

 

 

#set($qualifyingproducts=[])
#foreach( $A__Installed_Product in $A__Installed_Product__cList )
#set($startDate = $convert.parseDate(${A__Installed_Product.Warranty_Start__c}, "yyyy-MM-dd"))
#set($formattedStartDate = $date.format("dd/MM/yyyy", $startDate))
#set($endDate = $convert.parseDate(${A__Installed_Product.Warranty_End__c}, "yyyy-MM-dd"))
#set($formattedEndDate = $date.format("dd/MM/yyyy", $endDate))
#set( $defaultTimeZone = $date.getTimeZone().getTimeZone("Europe/London") )
#set( $defaultLocale = $date.getLocale() )
#set( $calNow = $date.getCalendar() )
#set( $ret = $calNow.setTimeZone($defaultTimeZone) )
#set( $calConst = $field.in($calNow) )
## determine date 30 days from now
$calNow.add($calConst.DATE,30)
#set( $thirtyDaysAwayDate = $date.format("dd/MM/yyyy",$calNow) )
#if ( $formattedEndDate == "$thirtyDaysAwayDate" && ${A__Installed_Product__cList.get(0).A__Status__c}== "Installed (Auto-validated)" &&${A__Installed_Product.Product2List.get(0).Has_Orderable__c}=="1" && !${A__Installed_Product__cList.get(0).1_Contract_End_Date__c} && !${A__Installed_Product__cList.get(0).2Contract_End_Date__c} && !${A__Installed_Product__cList.get(0).3Contract_End_Date__c})
#set($void=$qualifyingproducts.add($A__Installed_Product ))
#foreach(A__Installed_Product in $qualifyingProducts )
Orderable PS+: ${A__Installed_Product.Product2List.get(0).Has_Orderable__c} <br>
30 Day Date: $thirtyDaysAwayDate <br>
eComm: ${A__Installed_Product.Product2List.get(0).eCommerce_Options__c} <br>
Product: ${A__Installed_Product.A__Product_Name__c} <br>
Serial No: ${A__Installed_Product.Serial_Number__c}<br>
Warranty Start: $formattedStartDate<br>
Warranty End: $formattedEndDate<br>
Basic Material: ${A__Installed_Product.Product2List.get(0).Basic_Material__c} <br>
"===========================================" <br>
#if ( ${A__Installed_Product.Product2List.get(0).PS_eCommerce_Options__c} == "1")
href="https://wwww=${A__Installed_Product.EC_Hashed_Purchase_Key__c}"><strong>Buy extended cover now</strong></a></p></td>
#else
href="https://wwww?q=${A__Installed_Product.Product2List.get(0).Basic_Material__c}"><strong>Where to buy</strong></a></p></td>
#end
#end
#end
<br>

 

 

 

12 REPLIES 12