{{fscript dueDate := NSDate date. arrayOfOpps := {}. incompleteTasks := objectContext objectsForEntityNamed:'Task' qualifierLocum:'(statusCode < 7)' bindings:nil. opsForTask := incompleteTasks opportunities. globals setFetchedOpportunities:(opsForTask flattenArrayOfArrays) distinct. globals setIncompTasks:incompleteTasks. }}

{{localize 'Incomplete Tasks By Opportunity'}}

{{foreach opportunity fetchedOpportunities do}}
Opportunity: {{opportunity.name}}
Status: {{fscript (opportunity opportunityStateString).}}

{{fscript globals setIncompTasksForOpp:nil. incomptasksForOpportunity := {}. allTasksForOpportunity := opportunity tasks. allTasksForOpportunity do:[:task | (task statusCode < 7) ifTrue: [ incomptasksForOpportunity addObject:task. ]. ]. incomptasksForOpportunity := incomptasksForOpportunity sortedArrayUsingDescriptors:{(NSSortDescriptor sortDescriptorWithKey:'dueDate' ascending:true)}. globals setIncompTasksForOpp:incomptasksForOpportunity. }} {{foreach task incompTasksForOpp do}} {{endforeach do}}
{{localize 'Task Name'}} {{localize 'Due Date'}} {{localize 'Status'}} {{localize 'Owner'}}
{{task.name}} {{fscript (task dueDate) mcShortDate.}} {{fscript (task statusString).}} {{fscript task assignedTo contact derivedFullname.}}

{{endforeach do}}

{{localize 'Generated by %@ on %@', objectContext.user.contact.cachedName, date}}.