/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.module.tem.report; import static org.kuali.kfs.module.tem.TemConstants.Report.TEMPLATE_CLASSPATH; import static org.kuali.kfs.sys.KFSConstants.ReportGeneration.PDF_FILE_EXTENSION; import static org.springframework.ui.jasperreports.JasperReportsUtils.convertReportData; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import net.sf.jasperreports.engine.JRDataSource; import org.apache.log4j.Logger; import org.kuali.kfs.module.tem.report.annotations.DetailSection; import org.kuali.kfs.module.tem.report.annotations.Group; import org.kuali.kfs.module.tem.report.annotations.JasperReport; import org.kuali.kfs.module.tem.report.annotations.ReportStyle; import org.kuali.kfs.module.tem.report.annotations.SubReport; import org.kuali.kfs.module.tem.report.annotations.Summary; import org.kuali.kfs.module.tem.report.annotations.TitleStyle; import org.kuali.kfs.sys.report.ReportInfoHolder; import org.kuali.rice.core.api.util.type.KualiDecimal; /** * Represents an Expense Summary Report * */ @JasperReport @ReportStyle("standard") @TitleStyle("standard") public class ExpenseSummaryReport extends ReportInfoHolder implements DetailedReport { public static Logger LOG = Logger.getLogger(ExpenseSummaryReport.class); private String traveler; private String initiator; private String authorizationInitiator; private Date beginDate; private Date endDate; private String locations; private String purpose; private String institution; @Group("expenseType") @DetailSection private JRDataSource data; @SubReport @Summary private JRDataSource summary; private String tripId; public ExpenseSummaryReport() { setReportTemplateClassPath(TEMPLATE_CLASSPATH); setReportFileName("ExpenseSummary" + PDF_FILE_EXTENSION); setReportTitle("Overview Summary of Expenses"); } /** * Gets the value of traveler * * @return the value of traveler */ public String getTraveler() { return this.traveler; } /** * Sets the value of traveler * * @param argTraveler Value to assign to this.traveler */ public void setTraveler(final String argTraveler) { this.traveler = argTraveler; } /** * Gets the value of initiator * * @return the value of initiator */ public String getInitiator() { return this.initiator; } /** * Sets the value of initiator * * @param argInitiator Value to assign to this.initiator */ public void setInitiator(final String argInitiator) { this.initiator = argInitiator; } /** * Gets the value of authorizationInitiator * * @return the value of authorizationInitiator */ public String getAuthorizationInitiator() { return this.authorizationInitiator; } /** * Sets the value of authorizationInitiator * * @param argAuthorizationInitiator Value to assign to this.authorizationInitiator */ public void setAuthorizationInitiator(final String argAuthorizationInitiator) { this.authorizationInitiator = argAuthorizationInitiator; } /** * Gets the value of Institution * * @return the value of Institution */ public String getInstitution() { return this.institution; } /** * Sets the value of Institution * * @param argInstitution Value to assign to this.Institution */ public void setInstitution(final String argInstitution) { this.institution = argInstitution; } /** * Gets the value of beginDate * * @return the value of beginDate */ public Date getBeginDate() { return this.beginDate; } /** * Sets the value of beginDate * * @param argBeginDate Value to assign to this.beginDate */ public void setBeginDate(final Date argBeginDate) { this.beginDate = argBeginDate; } /** * Gets the value of endDate * * @return the value of endDate */ public Date getEndDate() { return this.endDate; } /** * Sets the value of endDate * * @param argEndDate Value to assign to this.endDate */ public void setEndDate(final Date argEndDate) { this.endDate = argEndDate; } /** * Gets the value of locations * * @return the value of locations */ public String getLocations() { return this.locations; } /** * Sets the value of locations * * @param argLocations Value to assign to this.locations */ public void setLocations(final String argLocations) { this.locations = argLocations; } /** * Gets the value of TripId * * @return the value of TripId */ public String getTripId() { return this.tripId; } /** * Sets the value of TripId * * @param argTripId Value to assign to this.TripId */ public void setTripId(final String argTripId) { this.tripId = argTripId; } /** * Gets the value of Purpose * * @return the value of Purpose */ public String getPurpose() { return this.purpose; } /** * Sets the value of Purpose * * @param argPurpose Value to assign to this.Purpose */ public void setPurpose(final String argPurpose) { this.purpose = argPurpose; } /** * Gets the value of Data * * @return the value of Data */ @Override public JRDataSource getData() { return this.data; } /** * Sets the value of Data * * @param argData Value to assign to this.expenses */ public void setData(final Collection<Detail> argData) { LOG.debug("Report created with data " + argData.size()); this.data = convertReportData(argData); } /** * Gets the value of Summary * * @return the value of Summary */ public JRDataSource getSummary() { return this.summary; } /** * Sets the value of Summary * * @param argSummary Value to assign to this.Summary */ public void setSummary(final Collection<Detail> argSummary) { this.summary = convertReportData(argSummary); } public static class Detail { private String name = ""; private String expenseType = ""; private String date = ""; private BigDecimal amount = new BigDecimal(0); public Detail(final String name, final String expenseType, final KualiDecimal amount, final Date date) { this.name = name; if (amount != null) { this.amount = amount.bigDecimalValue(); } else { this.amount = KualiDecimal.ZERO.bigDecimalValue(); } if (date != null) { final String expenseDate = new SimpleDateFormat("MM/dd").format(date); this.date = expenseDate; } this.expenseType = expenseType; } /** * Gets the value of Name * * @return the value of Name */ public String getName() { return this.name; } /** * Sets the value of Name * * @param argName Value to assign to this.Name */ public void setName(final String argName) { this.name = argName; } /** * Gets the value of ExpenseType * * @return the value of ExpenseType */ public String getExpenseType() { return this.expenseType; } /** * Sets the value of ExpenseType * * @param argExpenseType Value to assign to this.ExpenseType */ public void setExpenseType(final String argExpenseType) { this.expenseType = argExpenseType; } /** * Gets the value of Amount * * @return the value of Amount */ public BigDecimal getAmount() { return this.amount; } /** * Sets the value of Amount * * @param argAmount Value to assign to this.Amount */ public void setAmount(final BigDecimal argAmount) { this.amount = argAmount; } /** * Gets the value of Date * * @return the value of Date */ public String getDate() { return this.date; } /** * Sets the value of Date * * @param argDate Value to assign to this.Date */ public void setDate(final String argDate) { this.date = argDate; } } }