/* * 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.pdp.businessobject; import java.sql.Timestamp; import java.text.ParseException; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import org.kuali.kfs.pdp.PdpPropertyConstants; import org.kuali.kfs.sys.KFSPropertyConstants; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.rice.core.api.datetime.DateTimeService; import org.kuali.rice.core.api.util.type.KualiDecimal; import org.kuali.rice.core.api.util.type.KualiInteger; import org.kuali.rice.krad.bo.TransientBusinessObjectBase; /** * Represents the parsed contents of an incoming payment file. */ public class PaymentFileLoad extends TransientBusinessObjectBase { // header fields private String chart; private String unit; private String subUnit; protected Timestamp creationDate; // trailer fields private int paymentCount; private KualiDecimal paymentTotalAmount; // data private List<PaymentGroup> paymentGroups; // load vars private KualiInteger batchId; private boolean fileThreshold; private boolean detailThreshold; private boolean taxEmailRequired; private List<PaymentDetail> thresholdPaymentDetails; private CustomerProfile customer; private boolean passedValidation; public PaymentFileLoad() { super(); paymentGroups = new ArrayList<PaymentGroup>(); fileThreshold = false; detailThreshold = false; taxEmailRequired = false; passedValidation = false; thresholdPaymentDetails = new ArrayList<PaymentDetail>(); } /** * @return number of detail records loaded */ public int getActualPaymentCount() { int count = 0; for (PaymentGroup paymentGroup : paymentGroups) { for (PaymentDetail paymentDetail : paymentGroup.getPaymentDetails()) { count++; } } return count; } /** * @return total amount of all payments */ public KualiDecimal getCalculatedPaymentTotalAmount() { KualiDecimal totalAmount = KualiDecimal.ZERO; for (PaymentGroup paymentGroup : paymentGroups) { for (PaymentDetail paymentDetail : paymentGroup.getPaymentDetails()) { totalAmount = totalAmount.add(paymentDetail.getAccountTotal()); } } return totalAmount; } /** * Gets the chart attribute. * * @return Returns the chart. */ public String getChart() { return chart; } /** * Sets the chart attribute value. * * @param chart The chart to set. */ public void setChart(String chart) { this.chart = chart; } /** * Gets the unit attribute. * * @return Returns the unit. */ public String getUnit() { return unit; } /** * Sets the unit attribute value. * * @param unit The unit to set. */ public void setUnit(String unit) { this.unit = unit; } /** * Gets the subUnit attribute. * * @return Returns the subUnit. */ public String getSubUnit() { return subUnit; } /** * Sets the subUnit attribute value. * * @param subUnit The subUnit to set. */ public void setSubUnit(String subUnit) { this.subUnit = subUnit; } /** * Gets the creationDate attribute. * * @return Returns the creationDate. */ public Timestamp getCreationDate() { return creationDate; } /** * Sets the creationDate attribute value. * * @param creationDate The creationDate to set. */ public void setCreationDate(Timestamp creationDate) { this.creationDate = creationDate; } /** * Takes a <code>String</code> and attempt to format as <code>Timestamp</code for setting the * creationDate field * * @param creationDate Timestamp as string */ public void setCreationDate(String creationDate) { try { this.creationDate = SpringContext.getBean(DateTimeService.class).convertToSqlTimestamp(creationDate); } catch (ParseException e) { throw new RuntimeException("Unable to convert create timestamp value " + creationDate + " :" + e.getMessage(), e); } } /** * Gets the paymentCount attribute. * * @return Returns the paymentCount. */ public int getPaymentCount() { return paymentCount; } /** * Sets the paymentCount attribute value. * * @param paymentCount The paymentCount to set. */ public void setPaymentCount(int paymentCount) { this.paymentCount = paymentCount; } /** * Helper method to set the paymentCount int from a string. * * @param paymentCount String payment count */ public void setPaymentCount(String paymentCount) { this.paymentCount = Integer.parseInt(paymentCount); } /** * Gets the paymentTotalAmount attribute. * * @return Returns the paymentTotalAmount. */ public KualiDecimal getPaymentTotalAmount() { return paymentTotalAmount; } /** * Sets the paymentTotalAmount attribute value. * * @param paymentTotalAmount The paymentTotalAmount to set. */ public void setPaymentTotalAmount(KualiDecimal paymentTotalAmount) { this.paymentTotalAmount = paymentTotalAmount; } public void setPaymentTotalAmount(String paymentTotalAmount) { this.paymentTotalAmount = new KualiDecimal(paymentTotalAmount); } /** * Gets the paymentGroups attribute. * * @return Returns the paymentGroups. */ public List<PaymentGroup> getPaymentGroups() { return paymentGroups; } /** * Sets the paymentGroups attribute value. * * @param paymentGroups The paymentGroups to set. */ public void setPaymentGroups(List<PaymentGroup> paymentGroups) { this.paymentGroups = paymentGroups; } /** * Adds a <code>PaymentGroup</code> to the group <code>List</code> * * @param paymentGroup <code>PaymentGroup</code> to add */ public void addPaymentGroup(PaymentGroup paymentGroup) { this.paymentGroups.add(paymentGroup); } /** * Gets the fileThreshold attribute. * * @return Returns the fileThreshold. */ public boolean isFileThreshold() { return fileThreshold; } /** * Sets the fileThreshold attribute value. * * @param fileThreshold The fileThreshold to set. */ public void setFileThreshold(boolean fileThreshold) { this.fileThreshold = fileThreshold; } /** * Gets the detailThreshold attribute. * * @return Returns the detailThreshold. */ public boolean isDetailThreshold() { return detailThreshold; } /** * Sets the detailThreshold attribute value. * * @param detailThreshold The detailThreshold to set. */ public void setDetailThreshold(boolean detailThreshold) { this.detailThreshold = detailThreshold; } /** * Gets the batchId attribute. * * @return Returns the batchId. */ public KualiInteger getBatchId() { return batchId; } /** * Sets the batchId attribute value. * * @param batchId The batchId to set. */ public void setBatchId(KualiInteger batchId) { this.batchId = batchId; } /** * Gets the taxEmailRequired attribute. * * @return Returns the taxEmailRequired. */ public boolean isTaxEmailRequired() { return taxEmailRequired; } /** * Sets the taxEmailRequired attribute value. * * @param taxEmailRequired The taxEmailRequired to set. */ public void setTaxEmailRequired(boolean taxEmailRequired) { this.taxEmailRequired = taxEmailRequired; } /** * Gets the thresholdPaymentDetails attribute. * * @return Returns the thresholdPaymentDetails. */ public List<PaymentDetail> getThresholdPaymentDetails() { return thresholdPaymentDetails; } /** * Sets the thresholdPaymentDetails attribute value. * * @param thresholdPaymentDetails The thresholdPaymentDetails to set. */ public void setThresholdPaymentDetails(List<PaymentDetail> thresholdPaymentDetails) { this.thresholdPaymentDetails = thresholdPaymentDetails; } /** * Gets the passedValidation attribute. * * @return Returns the passedValidation. */ public boolean isPassedValidation() { return passedValidation; } /** * Sets the passedValidation attribute value. * * @param passedValidation The passedValidation to set. */ public void setPassedValidation(boolean passedValidation) { this.passedValidation = passedValidation; } /** * Gets the customer attribute. * * @return Returns the customer. */ public CustomerProfile getCustomer() { return customer; } /** * Sets the customer attribute value. * * @param customer The customer to set. */ public void setCustomer(CustomerProfile customer) { this.customer = customer; } protected LinkedHashMap toStringMapper_RICE20_REFACTORME() { LinkedHashMap m = new LinkedHashMap(); m.put(KFSPropertyConstants.CHART, this.chart); m.put(PdpPropertyConstants.UNIT, this.unit); m.put(PdpPropertyConstants.SUB_UNIT, this.subUnit); m.put(PdpPropertyConstants.CREATION_DATE, this.creationDate); return m; } }