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
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>