try {
Student student = null;
String name = "";
JRPrintPage page = new JRBasePrintPage();
registrations = (Map<String, Registration>) system.query(new GetRegistration());
List<Registration> registrationList = new ArrayList<Registration>(registrations.values());
MergeSortAlgorithm sortAlgorithm = new MergeSortAlgorithm();
sortAlgorithm.sortRegistrationByName(registrationList);
for (Registration registration : registrationList) {
final List<Parcel> parcels = registration.getParcels();
for (Parcel parcel : parcels) {
final GDDate parcelDate = new GDDate(parcel.getDate());
if(!parcel.isPayed() && parcelDate.beforeOrEqualsDay(today) && parcelDate.beforeOrEqualsDay(finalDate) && parcelDate.afterOrEqualsDay(initialDate)){
final GDDate birthDate = new GDDate(registration.getStudent().getBirthDate());
String gender = ((Person) system.query(new GetPerson(registration.getIdPerson()))).getGender().toString();
if(ResponsableValidator.checkStudentUnderAge(birthDate.getFormatedDate())){
student = (Student) registration.getStudent().getPersonType("student");
name = "Prezado(a) "+student.getResponsableName()+",\n" +
"referente "+(gender.equals("Masculino")?"ao aluno ":"� aluna ") + registration.getStudent().getName()+"\n"+
"com parcela vencida no dia "+parcelDate.getFormatedDate();
} else {
name = "Prezad"+(gender.equals("Masculino")?"o ":"a ")+registration.getStudent().getName()+",\n" +
"com parcela vencida no dia "+parcelDate.getFormatedDate();
}
posX = convert(10);
posY = 0;
page = new JRBasePrintPage();
page.addElement(printMiniText("Remetente: ", posX, posY+10, 60, 12));
page.addElement(printImage("corporateLogo.jpg", posX+60, posY+10, 77, 40));
page.addElement(printLeftText((String) gd.get("street") + ", " + (String) gd.get("streetnumber"), posX, posY+55, 240, 12));
page.addElement(printLeftText((String) gd.get("zipcode") + " - " + gd.get("city") + " - " + gd.get("state"), posX, posY+67, 240, 12));
page.addElement(drawVerticalLine(posX+240, posY, 84));
page.addElement(printMiniText("Destinat�rio: ", posX+245, posY+10, 60, 12));
page.addElement(printLeftText((ResponsableValidator.checkStudentUnderAge(birthDate.getFormatedDate()) ? student.getResponsableName() : registration.getStudent().getName()), posX+245, posY+30, 290, 12));
String address = registration.getStudent().getStreet() + ", " + registration.getStudent().getStreetNumber() + (registration.getStudent().getStreetComplement().equals("") ? "" : " - " + registration.getStudent().getStreetComplement());
page.addElement(printLeftText(address, posX+245, posY+42, 290, 12));
page.addElement(printLeftText(registration.getStudent().getNeighborhood(), posX+245, posY+54, 290, 12));
page.addElement(printLeftText(registration.getStudent().getCep() + " - " + registration.getStudent().getCity() + " - " + registration.getStudent().getState(), posX+245, posY+66, 290, 12));
posY += 84;
page.addElement(drawHorizontalDottedLine(0, posY, convert(210)));
posY += 10;
page.addElement(printImage("juridicobkg.gif", convert(10), posY, 535, 700));
page.addElement(printRightText(gd.get("city") + ", " + new SimpleDateFormat("dd").format(new GDDate().getDate()) + " de " + new SimpleDateFormat("MMMM").format(new GDDate().getDate()) + " de " + new SimpleDateFormat("yyyy").format(new GDDate().getDate()) + ".", convert(10), posY+60, 535));
posY += 50;
if(type == 1) {
page.addElement(printJustifyText(name + letterText, convert(10)+10, posY, 515, 390));
page.addElement(printHorizontalLine(convert(10)+320, posY+430, 190));
page.addElement(printBoldText("Depto de Cr�dito e Cobran�a", convert(10)+320, posY+430, 190, 18));
page.addElement(printMiniText("Obs.: Caso j� tenha efetuado o\n pagamento, desconsidere este aviso.", convert(10)+8, posY+535, 200, 40));
} else if(type == 2) {
page.addElement(printJustifyText(name + letterText, convert(10)+10, posY, 515, 390));
page.addElement(printHorizontalLine(convert(10)+320, posY+430, 190));
page.addElement(printBoldText("Depto de Cr�dito e Cobran�a", convert(10)+320, posY+430, 190, 18));
} else if(type == 3) {
page.addElement(printNormalText(name, convert(10)+10, posY+5, 515, 50));
page.addElement(printBoldText("C O M U N I C A D O \nO F I C I A L", convert(10)+10, posY+65, 515, 36));
page.addElement(printJustifyText(letterText, convert(10)+10, posY+110, 515, 350));
page.addElement(printHorizontalLine(convert(10)+320, posY+500, 190));
page.addElement(printBoldText("Depto de Cr�dito e Cobran�a", convert(10)+320, posY+500, 190, 18));
page.addElement(printRectangle(convert(10)+25, posY+370, 485, 85, 5));
page.addElement(printLeftBoldText("1� Via Aluno\n2� Via Advogado (anexado ao processo)\n\n(� indispens�vel a apresenta��o desta para confirmar a negocia��o)", convert(10)+35, posY+380, 415, 65));
}
page.addElement(printMiniText(gd.get("namefancy") + "\n" +
gd.get("street") + ", " +gd.get("streetnumber") + "\n" +
"Tel.:" + gd.get("firstphone") + "\n" + gd.get("email"), convert(10)+315, posY+525, 215, 60));
jasperPrint.addPage(page);
page = new JRBasePrintPage();
}