/* * 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/>. */ /* * Created on Feb 13, 2006 * */ package org.kuali.kfs.module.purap.businessobject; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.builder.ToStringBuilder; import org.kuali.kfs.module.purap.util.ElectronicInvoiceUtils; import org.kuali.kfs.module.purap.util.cxml.CxmlExtrinsic; import org.kuali.kfs.sys.util.KfsDateUtils; public class ElectronicInvoiceDetailRequestHeader { private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(ElectronicInvoiceDetailRequestHeader.class); private String invoiceId; private String purpose = "standard"; private String operation = "new"; private String invoiceDateString; private java.util.Date invoiceDate; private boolean isInformationOnly; private boolean isHeaderInvoiceIndicator; private boolean isTaxInLine; private boolean isSpecialHandlingInLine; private boolean isShippingInLine; private boolean isDiscountInLine; private String shippingDateString; private java.util.Date shippingDate; private String invoiceCustomerNumber; private List invoicePartnerContacts = new ArrayList(); private List invoiceShippingContacts = new ArrayList(); // holds the ship to address information private List extrinsics = new ArrayList(); /** * Newly Added */ private boolean isAccountingInLine; private String idReferenceCreator; private String idReferenceDescription; private String idReferenceDomain; private String idReferenceIdentifier; private int payInNumberOfDays; private String percentageRate; public ElectronicInvoiceDetailRequestHeader() { super(); } /** * @param invoiceId * @param purpose * @param operation * @throws ParseException */ public ElectronicInvoiceDetailRequestHeader(String invoiceId,String invoiceDate,String purpose,String operation) { super(); this.invoiceId = invoiceId; this.purpose = purpose; this.operation = operation; this.setInvoiceDateString(invoiceDate); } /** * This method returns the first ElectronicInvoicePostalAddress associated with the ElectronicInvoiceContact * that has a roleID matching the given roleID. If the addressName is given then * the ElectronicInvoicePostalAddress returned must match that... otherwise the first * ElectronicInvoicePostalAddress found is returned * * @param roleID Valid 'Contact' tag attribute value for 'roleID' * @param addressName Valid 'PostalAddress' tag attribute value for 'name' * @return ElectronicInvoicePostalAddress relating to given info */ public ElectronicInvoicePostalAddress getCxmlPostalAddressByRoleID(String roleID,String addressName) { if (roleID != null) { ElectronicInvoiceContact contact = this.getCxmlContactByRoleID(roleID); if (contact != null) { for (Iterator iterator = contact.getPostalAddresses().iterator(); iterator.hasNext();) { ElectronicInvoicePostalAddress cpa = (ElectronicInvoicePostalAddress) iterator.next(); if (addressName == null) { return cpa; } else { if (addressName.equalsIgnoreCase(cpa.getName())) { return cpa; } } } } } return null; } /** * This method returns the first ElectronicInvoiceContact associated with the given * roleID. * * @param roleID Valid 'Contact' tag attribute value for 'roleID' * @return ElectronicInvoiceContact relating to given info */ public ElectronicInvoiceContact getCxmlContactByRoleID(String roleID) { if (roleID != null) { for (Iterator iter = this.invoicePartnerContacts.iterator(); iter.hasNext();) { ElectronicInvoiceContact contact = (ElectronicInvoiceContact) iter.next(); if (roleID.equalsIgnoreCase(contact.getRole())) { return contact; } } for (Iterator shipIter = this.invoiceShippingContacts.iterator(); shipIter.hasNext();) { ElectronicInvoiceContact shipContact = (ElectronicInvoiceContact) shipIter.next(); if (roleID.equalsIgnoreCase(shipContact.getRole())) { return shipContact; } } } return null; } /** * @return Returns the invoiceDateString. */ public String getInvoiceDateString() { return invoiceDateString; } /** * @param invoiceDateString The invoiceDateString to set. */ public void setInvoiceDateString(String invoiceDateString) { this.invoiceDateString = invoiceDateString; setInvoiceDate(ElectronicInvoiceUtils.getDate(invoiceDateString)); } /** * @return Returns the shippingDateString. */ public String getShippingDateString() { return shippingDateString; } /** * @param shippingDateString The shippingDateString to set. */ public void setShippingDateString(String shippingDateString) { this.shippingDateString = shippingDateString; // if ( (shippingDateString != null) && (!("".equals(shippingDateString))) ) { // SimpleDateFormat sdf = new SimpleDateFormat(PurapConstants.ElectronicInvoice.CXML_DATE_FORMAT, Locale.US); // try { // this.shippingDate = sdf.parse(shippingDateString); // } catch (ParseException e) { // // setting shipping date to null to identify problem // LOG.error("setShippingDateString() SimpleDateFormat parser error attempting to set invalid date string " + shippingDateString + " in ShippingDate field... setting date to null"); // this.shippingDate = null; // } // } else { // this.shippingDate = null; // } setShippingDate(ElectronicInvoiceUtils.getDate(shippingDateString)); } /** * @return Returns the extrinsics. */ public List getExtrinsics() { return extrinsics; } /** * @param extrinsics The extrinsics to set. */ public void setExtrinsics(List extrinsics) { this.extrinsics = extrinsics; } /** * @return Returns the invoiceCustomerNumber. */ public String getInvoiceCustomerNumber() { return invoiceCustomerNumber; } /** * @param invoiceCustomerNumber The invoiceCustomerNumber to set. */ public void setInvoiceCustomerNumber(String invoiceCustomerNumber) { this.invoiceCustomerNumber = invoiceCustomerNumber; } /** * @return Returns the invoiceDate. */ public java.sql.Date getInvoiceDate() { if (invoiceDate != null){ return KfsDateUtils.convertToSqlDate(invoiceDate); }else{ return null; } } /** * @param invoiceDate The invoiceDate to set. */ public void setInvoiceDate(Date invoiceDate) { this.invoiceDate = invoiceDate; } /** * @return Returns the invoiceId. */ public String getInvoiceId() { return invoiceId; } /** * @param invoiceId The invoiceId to set. */ public void setInvoiceId(String invoiceId) { this.invoiceId = invoiceId; } /** * @return Returns the invoicePartnerContacts. */ public List getInvoicePartnerContacts() { return invoicePartnerContacts; } /** * @param invoicePartnerContacts The invoicePartnerContacts to set. */ public void setInvoicePartnerContacts(List invoicePartnerContacts) { this.invoicePartnerContacts = invoicePartnerContacts; } /** * @return Returns the invoiceShippingContacts. */ public List getInvoiceShippingContacts() { return invoiceShippingContacts; } /** * @param invoiceShippingContacts The invoiceShippingContacts to set. */ public void setInvoiceShippingContacts(List invoiceShippingContacts) { this.invoiceShippingContacts = invoiceShippingContacts; } /** * @return Returns the isDiscountInLine. */ public boolean isDiscountInLine() { return isDiscountInLine; } /** * @param isDiscountInLine The isDiscountInLine to set. */ public void setDiscountInfoProvidedIndicator(String isDiscountInLine) { this.isDiscountInLine = StringUtils.equalsIgnoreCase(StringUtils.defaultString(isDiscountInLine),"yes");; } /** * @return Returns the isHeaderInvoiceIndicator. */ public boolean isHeaderInvoiceIndicator() { return isHeaderInvoiceIndicator; } /** * @param isHeaderInvoiceIndicator The isHeaderInvoiceIndicator to set. */ public void setHeaderInvoiceInd(String isHeaderInvoiceIndicator) { this.isHeaderInvoiceIndicator = StringUtils.equalsIgnoreCase(StringUtils.defaultString(isHeaderInvoiceIndicator),"yes"); } /** * @return Returns the isInformationOnly. */ public boolean isInformationOnly() { return isInformationOnly; } /** * @param isInformationOnly The isInformationOnly to set. */ public void setbuyerInformationOnlyIndicator(String informationOnly) { /** * It's not possible to have the param as boolean type since yes is not a allowed boolean value in xsd (Allowed ones - true/false/1/0) */ this.isInformationOnly = StringUtils.equalsIgnoreCase(StringUtils.defaultString(informationOnly),"yes"); } /** * @return Returns the isShippingInLine. */ public boolean isShippingInLine() { return isShippingInLine; } /** * @param isShippingInLine The isShippingInLine to set. */ public void setShippingInfoProvidedIndicator(String isShippingInLine) { this.isShippingInLine = StringUtils.equalsIgnoreCase(StringUtils.defaultString(isShippingInLine),"yes"); } /** * @return Returns the isSpecialHandlingInLine. */ public boolean isSpecialHandlingInLine() { return isSpecialHandlingInLine; } /** * @param isSpecialHandlingInLine The isSpecialHandlingInLine to set. */ public void setSpecialHandlingInfoProvidedIndicator(String isSpecialHandlingInLine) { this.isSpecialHandlingInLine = StringUtils.equalsIgnoreCase(StringUtils.defaultString(isSpecialHandlingInLine),"yes"); } /** * @return Returns the isTaxInLine. */ public boolean isTaxInLine() { return isTaxInLine; } /** * @param isTaxInLine The isTaxInLine to set. */ public void setTaxInfoProvidedIndicator(String isTaxInLine) { this.isTaxInLine = StringUtils.equalsIgnoreCase(StringUtils.defaultString(isTaxInLine),"yes"); } /** * @return Returns the operation. */ public String getOperation() { return operation; } /** * @param operation The operation to set. */ public void setOperation(String operation) { this.operation = operation; } /** * @return Returns the purpose. */ public String getPurpose() { return purpose; } /** * @param purpose The purpose to set. */ public void setPurpose(String purpose) { this.purpose = purpose; } /** * @return Returns the shippingDate. */ public Date getShippingDate() { return shippingDate; } /** * @param shippingDate The shippingDate to set. */ public void setShippingDate(Date shippingDate) { this.shippingDate = shippingDate; } public boolean isAccountingInLine() { return isAccountingInLine; } public void setAccountingInfoProvidedIndicator(String isAccountingInLine) { this.isAccountingInLine = StringUtils.equalsIgnoreCase(StringUtils.defaultString(isAccountingInLine),"yes");; } public String getIdReferenceCreator() { return idReferenceCreator; } public void setIdReferenceCreator(String idReferenceCreator) { this.idReferenceCreator = idReferenceCreator; } public String getIdReferenceDescription() { return idReferenceDescription; } public void setIdReferenceDescription(String idReferenceDescription) { this.idReferenceDescription = idReferenceDescription; } public String getIdReferenceDomain() { return idReferenceDomain; } public void setIdReferenceDomain(String idReferenceDomain) { this.idReferenceDomain = idReferenceDomain; } public String getIdReferenceIdentifier() { return idReferenceIdentifier; } public void setIdReferenceIdentifier(String idReferenceIdentifier) { this.idReferenceIdentifier = idReferenceIdentifier; } public void addInvoicePartnerContact(ElectronicInvoiceContact electronicInvoiceContact){ if (electronicInvoiceContact != null){ invoicePartnerContacts.add(electronicInvoiceContact); } } public ElectronicInvoiceContact[] getInvoicePartnerContactsAsArray(){ if (invoicePartnerContacts.size() > 0){ ElectronicInvoiceContact[] tempContacts = new ElectronicInvoiceContact[invoicePartnerContacts.size()]; invoicePartnerContacts.toArray(tempContacts); return tempContacts; } return null; } public void addInvoiceShippingContacts(ElectronicInvoiceContact electronicInvoiceContact){ invoiceShippingContacts.add(electronicInvoiceContact); } public ElectronicInvoiceContact[] getInvoiceShippingContactsAsArray(){ if (invoiceShippingContacts.size() > 0){ ElectronicInvoiceContact[] tempContacts = new ElectronicInvoiceContact[invoiceShippingContacts.size()]; invoiceShippingContacts.toArray(tempContacts); return tempContacts; } return null; } public void addExtrinsic(CxmlExtrinsic extrinsic) { this.extrinsics.add(extrinsic); } public CxmlExtrinsic[] getExtrinsicAsArray() { if (extrinsics.size() > 0){ CxmlExtrinsic[] extrinsics = new CxmlExtrinsic[this.extrinsics.size()]; this.extrinsics.toArray(extrinsics); return extrinsics; } return null; } public int getPayInNumberOfDays() { return payInNumberOfDays; } public void setPayInNumberOfDays(int payInNumberOfDays) { this.payInNumberOfDays = payInNumberOfDays; } public String getPercentageRate() { return percentageRate; } public void setPercentageRate(String percentageRate) { this.percentageRate = percentageRate; } public String toString(){ ToStringBuilder toString = new ToStringBuilder(this); toString.append("invoiceID",getInvoiceId()); toString.append("purpose",getPurpose()); toString.append("operation",getOperation()); toString.append("invoiceDate",getInvoiceDateString()); toString.append("isInformationOnly",isInformationOnly()); toString.append("isHeaderInvoiceIndicator",isHeaderInvoiceIndicator()); toString.append("isTaxInLine",isTaxInLine()); toString.append("isSpecialHandlingInLine",isSpecialHandlingInLine()); toString.append("isShippingInLine",isShippingInLine()); toString.append("isDiscountInLine",isDiscountInLine()); toString.append("isAccountingInLine",isAccountingInLine()); toString.append("idReferenceCreator",getIdReferenceCreator()); toString.append("idReferenceDescription",getIdReferenceDescription()); toString.append("idReferenceDomain",getIdReferenceDomain()); toString.append("idReferenceIdentifier",getIdReferenceIdentifier()); toString.append("shippingDate",getShippingDateString()); toString.append("invoiceCustomerNumber",getInvoiceCustomerNumber()); toString.append("payInNumberOfDays",getPayInNumberOfDays()); toString.append("percentageRate",getPercentageRate()); toString.append("invoicePartnerContacts",getInvoicePartnerContacts()); toString.append("invoiceShippingContacts",getInvoiceShippingContacts()); toString.append("extrinsics",getExtrinsics()); return toString.toString(); } }