/* * 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.fp.businessobject; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.kuali.kfs.fp.document.service.DisbursementVoucherPayeeService; import org.kuali.kfs.sys.KFSConstants; import org.kuali.kfs.sys.KFSPropertyConstants; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.kfs.vnd.document.service.VendorService; import org.kuali.rice.kim.api.identity.IdentityService; import org.kuali.rice.kim.api.identity.principal.Principal; import org.kuali.rice.krad.bo.PersistableBusinessObjectBase; import org.kuali.rice.krad.service.KualiModuleService; import org.kuali.rice.krad.service.ModuleService; import org.kuali.rice.krad.util.ObjectUtils; import org.kuali.rice.location.api.LocationConstants; import org.kuali.rice.location.framework.country.CountryEbo; import org.kuali.rice.location.framework.postalcode.PostalCodeEbo; import org.kuali.rice.location.framework.state.StateEbo; /** * This class is used to represent a disbursement voucher payee detail. */ public class DisbursementVoucherPayeeDetail extends PersistableBusinessObjectBase { private String documentNumber; private String disbVchrPaymentReasonCode; private String disbVchrPayeeIdNumber; private String disbVchrPayeePersonName; private String disbVchrPayeeLine1Addr; private String disbVchrPayeeLine2Addr; private String disbVchrPayeeCityName; private String disbVchrPayeeStateCode; private String disbVchrPayeeZipCode; private String disbVchrPayeeCountryCode; private String disbVchrSpecialHandlingPersonName; private String disbVchrSpecialHandlingLine1Addr; private String disbVchrSpecialHandlingLine2Addr; private String disbVchrSpecialHandlingCityName; private String disbVchrSpecialHandlingStateCode; private String disbVchrSpecialHandlingZipCode; private String disbVchrSpecialHandlingCountryCode; private Boolean dvPayeeSubjectPaymentCode; private Boolean disbVchrAlienPaymentCode; private Boolean disbVchrPayeeEmployeeCode; private Boolean disbVchrEmployeePaidOutsidePayrollCode; private String disbursementVoucherPayeeTypeCode; private PaymentReasonCode disbVchrPaymentReason; // The following vendor-associated attributes are for convenience only and are not mapped to OJB or the DB. private String disbVchrVendorHeaderIdNumber; private String disbVchrVendorDetailAssignedIdNumber; private String disbVchrVendorAddressIdNumber; private boolean hasMultipleVendorAddresses = false; private StateEbo disbVchrPayeeState; private CountryEbo disbVchrPayeeCountry; private PostalCodeEbo disbVchrPayeePostalZipCode; /** * Default no-arg constructor. */ public DisbursementVoucherPayeeDetail() { super(); } /** * Gets the documentNumber attribute. * * @return Returns the documentNumber */ public String getDocumentNumber() { return documentNumber; } /** * Sets the documentNumber attribute. * * @param documentNumber The documentNumber to set. */ public void setDocumentNumber(String documentNumber) { this.documentNumber = documentNumber; } /** * Gets the disbVchrPaymentReasonCode attribute. * * @return Returns the disbVchrPaymentReasonCode */ public String getDisbVchrPaymentReasonCode() { return disbVchrPaymentReasonCode; } /** * Sets the disbVchrPaymentReasonCode attribute. * * @param disbVchrPaymentReasonCode The disbVchrPaymentReasonCode to set. */ public void setDisbVchrPaymentReasonCode(String disbVchrPaymentReasonCode) { this.disbVchrPaymentReasonCode = disbVchrPaymentReasonCode; } /** * Gets the disbVchrPayeeIdNumber attribute. * * @return Returns the disbVchrVendorIdNumber */ public String getDisbVchrPayeeIdNumber() { return disbVchrPayeeIdNumber; } /** * Sets the disbVchrPayeeIdNumber attribute. * * @param disbVchrPayeeIdNumber The disbVchrPayeeIdNumber to set. */ public void setDisbVchrPayeeIdNumber(String disbVchrPayeeIdNumber) { this.disbVchrPayeeIdNumber = disbVchrPayeeIdNumber; // KFSMI-5976 : Blanking out these fields so they are re-derived upon next access disbVchrVendorHeaderIdNumber = null; disbVchrVendorDetailAssignedIdNumber = null; } /** * This method... * * @return */ public String getDisbVchrVendorHeaderIdNumber() { if (this.isVendor()) { if (StringUtils.isBlank(disbVchrVendorHeaderIdNumber)) { int dashIndex = disbVchrPayeeIdNumber.indexOf('-'); disbVchrVendorHeaderIdNumber = disbVchrPayeeIdNumber.substring(0, dashIndex); } } else { // Return null if payee is not a vendor return null; } return disbVchrVendorHeaderIdNumber; } /** * This method... * * @param disbVchrVendorheaderIdNumber */ public void setDisbVchrVendorHeaderIdNumber(String disbVchrVendorHeaderIdNumber) { if (this.isVendor()) { this.disbVchrVendorHeaderIdNumber = disbVchrVendorHeaderIdNumber; } } /** * Gets the disbVchrVendorIdNumber attribute as an Integer. * * @return Returns the disbVchrVendorIdNumber in Integer form. This is the format used on the VendorDetail. */ public Integer getDisbVchrVendorHeaderIdNumberAsInteger() { if (getDisbVchrVendorHeaderIdNumber() != null) { try { return new Integer(getDisbVchrVendorHeaderIdNumber()); } catch (NumberFormatException nfe) { nfe.printStackTrace(); } } return null; } /** * This method... * * @return */ public String getDisbVchrVendorDetailAssignedIdNumber() { if (this.isVendor()) { if (StringUtils.isBlank(disbVchrVendorDetailAssignedIdNumber)) { int dashIndex = disbVchrPayeeIdNumber.indexOf('-'); disbVchrVendorDetailAssignedIdNumber = disbVchrPayeeIdNumber.substring(dashIndex + 1); } } else { // Return null if payee is not a vendor return null; } return disbVchrVendorDetailAssignedIdNumber; } /** * This method... * * @param disbVchrVendorDetailAssignedIdNumber */ public void setDisbVchrVendorDetailAssignedIdNumber(String disbVchrVendorDetailAssignedIdNumber) { // This field should only be set if the payee type is "V", otherwise, ignore any calls if (this.isVendor()) { this.disbVchrVendorDetailAssignedIdNumber = disbVchrVendorDetailAssignedIdNumber; } } /** * This method... * * @return */ public Integer getDisbVchrVendorDetailAssignedIdNumberAsInteger() { if (getDisbVchrVendorDetailAssignedIdNumber() != null) { try { return new Integer(getDisbVchrVendorDetailAssignedIdNumber()); } catch (NumberFormatException nfe) { nfe.printStackTrace(); } } return null; } /** * This method should only be called for retrieving the id associated with the payee if the payee type is equal to "E". * Otherwise, this method will return null. * * @return The id of the universal user set as the payee on the DV, if the payee type code indicates the payee is an employee. * Otherwise, this method will return null. */ public String getDisbVchrEmployeeIdNumber() { if (this.isEmployee()) { return disbVchrPayeeIdNumber; } else { // Return null if payee is not a employee return null; } } /** * Gets the disbVchrPayeePersonName attribute. * * @return Returns the disbVchrPayeePersonName */ public String getDisbVchrPayeePersonName() { return disbVchrPayeePersonName; } /** * Sets the disbVchrPayeePersonName attribute. * * @param disbVchrPayeePersonName The disbVchrPayeePersonName to set. */ public void setDisbVchrPayeePersonName(String disbVchrPayeePersonName) { this.disbVchrPayeePersonName = disbVchrPayeePersonName; } /** * Gets the disbVchrPayeeLine1Addr attribute. * * @return Returns the disbVchrPayeeLine1Addr */ public String getDisbVchrPayeeLine1Addr() { return disbVchrPayeeLine1Addr; } /** * Sets the disbVchrPayeeLine1Addr attribute. * * @param disbVchrPayeeLine1Addr The disbVchrPayeeLine1Addr to set. */ public void setDisbVchrPayeeLine1Addr(String disbVchrPayeeLine1Addr) { this.disbVchrPayeeLine1Addr = disbVchrPayeeLine1Addr; } /** * Gets the disbVchrPayeeLine2Addr attribute. * * @return Returns the disbVchrPayeeLine2Addr */ public String getDisbVchrPayeeLine2Addr() { return disbVchrPayeeLine2Addr; } /** * Sets the disbVchrPayeeLine2Addr attribute. * * @param disbVchrPayeeLine2Addr The disbVchrPayeeLine2Addr to set. */ public void setDisbVchrPayeeLine2Addr(String disbVchrPayeeLine2Addr) { this.disbVchrPayeeLine2Addr = disbVchrPayeeLine2Addr; } /** * Gets the disbVchrPayeeCityName attribute. * * @return Returns the disbVchrPayeeCityName */ public String getDisbVchrPayeeCityName() { return disbVchrPayeeCityName; } /** * Sets the disbVchrPayeeCityName attribute. * * @param disbVchrPayeeCityName The disbVchrPayeeCityName to set. */ public void setDisbVchrPayeeCityName(String disbVchrPayeeCityName) { this.disbVchrPayeeCityName = disbVchrPayeeCityName; } /** * Gets the disbVchrPayeeStateCode attribute. * * @return Returns the disbVchrPayeeStateCode */ public String getDisbVchrPayeeStateCode() { return disbVchrPayeeStateCode; } /** * Sets the disbVchrPayeeStateCode attribute. * * @param disbVchrPayeeStateCode The disbVchrPayeeStateCode to set. */ public void setDisbVchrPayeeStateCode(String disbVchrPayeeStateCode) { this.disbVchrPayeeStateCode = disbVchrPayeeStateCode; } /** * Gets the disbVchrPayeeZipCode attribute. * * @return Returns the disbVchrPayeeZipCode */ public String getDisbVchrPayeeZipCode() { return disbVchrPayeeZipCode; } /** * Sets the disbVchrPayeeZipCode attribute. * * @param disbVchrPayeeZipCode The disbVchrPayeeZipCode to set. */ public void setDisbVchrPayeeZipCode(String disbVchrPayeeZipCode) { this.disbVchrPayeeZipCode = disbVchrPayeeZipCode; } /** * Gets the disbVchrPayeeCountryCode attribute. * * @return Returns the disbVchrPayeeCountryCode */ public String getDisbVchrPayeeCountryCode() { return disbVchrPayeeCountryCode; } /** * Sets the disbVchrPayeeCountryCode attribute. * * @param disbVchrPayeeCountryCode The disbVchrPayeeCountryCode to set. */ public void setDisbVchrPayeeCountryCode(String disbVchrPayeeCountryCode) { this.disbVchrPayeeCountryCode = disbVchrPayeeCountryCode; } /** * Gets the disbVchrSpecialHandlingPersonName attribute. * * @return Returns the disbVchrSpecialHandlingPersonName */ public String getDisbVchrSpecialHandlingPersonName() { return disbVchrSpecialHandlingPersonName; } /** * Sets the disbVchrSpecialHandlingPersonName attribute. * * @param disbVchrSpecialHandlingPersonName The disbVchrSpecialHandlingPersonName to set. */ public void setDisbVchrSpecialHandlingPersonName(String disbVchrSpecialHandlingPersonName) { this.disbVchrSpecialHandlingPersonName = disbVchrSpecialHandlingPersonName; } /** * Gets the disbVchrSpecialHandlingLine1Addr attribute. * * @return Returns the disbVchrSpecialHandlingLine1Addr */ public String getDisbVchrSpecialHandlingLine1Addr() { return disbVchrSpecialHandlingLine1Addr; } /** * Sets the disbVchrSpecialHandlingLine1Addr attribute. * * @param disbVchrSpecialHandlingLine1Addr The disbVchrSpecialHandlingLine1Addr to set. */ public void setDisbVchrSpecialHandlingLine1Addr(String disbVchrSpecialHandlingLine1Addr) { this.disbVchrSpecialHandlingLine1Addr = disbVchrSpecialHandlingLine1Addr; } /** * Gets the disbVchrSpecialHandlingLine2Addr attribute. * * @return Returns the disbVchrSpecialHandlingLine2Addr */ public String getDisbVchrSpecialHandlingLine2Addr() { return disbVchrSpecialHandlingLine2Addr; } /** * Sets the disbVchrSpecialHandlingLine2Addr attribute. * * @param disbVchrSpecialHandlingLine2Addr The disbVchrSpecialHandlingLine2Addr to set. */ public void setDisbVchrSpecialHandlingLine2Addr(String disbVchrSpecialHandlingLine2Addr) { this.disbVchrSpecialHandlingLine2Addr = disbVchrSpecialHandlingLine2Addr; } /** * Gets the disbVchrSpecialHandlingCityName attribute. * * @return Returns the disbVchrSpecialHandlingCityName */ public String getDisbVchrSpecialHandlingCityName() { return disbVchrSpecialHandlingCityName; } /** * Sets the disbVchrSpecialHandlingCityName attribute. * * @param disbVchrSpecialHandlingCityName The disbVchrSpecialHandlingCityName to set. */ public void setDisbVchrSpecialHandlingCityName(String disbVchrSpecialHandlingCityName) { this.disbVchrSpecialHandlingCityName = disbVchrSpecialHandlingCityName; } /** * Gets the disbVchrSpecialHandlingStateCode attribute. * * @return Returns the disbVchrSpecialHandlingStateCode */ public String getDisbVchrSpecialHandlingStateCode() { return disbVchrSpecialHandlingStateCode; } /** * Sets the disbVchrSpecialHandlingStateCode attribute. * * @param disbVchrSpecialHandlingStateCode The disbVchrSpecialHandlingStateCode to set. */ public void setDisbVchrSpecialHandlingStateCode(String disbVchrSpecialHandlingStateCode) { this.disbVchrSpecialHandlingStateCode = disbVchrSpecialHandlingStateCode; } /** * Gets the disbVchrSpecialHandlingZipCode attribute. * * @return Returns the disbVchrSpecialHandlingZipCode */ public String getDisbVchrSpecialHandlingZipCode() { return disbVchrSpecialHandlingZipCode; } /** * Sets the disbVchrSpecialHandlingZipCode attribute. * * @param disbVchrSpecialHandlingZipCode The disbVchrSpecialHandlingZipCode to set. */ public void setDisbVchrSpecialHandlingZipCode(String disbVchrSpecialHandlingZipCode) { this.disbVchrSpecialHandlingZipCode = disbVchrSpecialHandlingZipCode; } /** * Gets the disbVchrSpecialHandlingCountryCode attribute. * * @return Returns the disbVchrSpecialHandlingCountryCode */ public String getDisbVchrSpecialHandlingCountryCode() { return disbVchrSpecialHandlingCountryCode; } /** * Sets the disbVchrSpecialHandlingCountryCode attribute. * * @param disbVchrSpecialHandlingCountryCode The disbVchrSpecialHandlingCountryCode to set. */ public void setDisbVchrSpecialHandlingCountryCode(String disbVchrSpecialHandlingCountryCode) { this.disbVchrSpecialHandlingCountryCode = disbVchrSpecialHandlingCountryCode; } /** * Gets the disbVchrPayeeEmployeeCode attribute. * * @return Returns true if the vendor associated with this DV is an employee of the institution. */ public boolean isDisbVchrPayeeEmployeeCode() { if (ObjectUtils.isNull(disbVchrPayeeEmployeeCode)) { if (this.isEmployee()) { disbVchrPayeeEmployeeCode = true; } else if (this.isVendor()) { try { disbVchrPayeeEmployeeCode = SpringContext.getBean(VendorService.class).isVendorInstitutionEmployee(getDisbVchrVendorHeaderIdNumberAsInteger()); this.setDisbVchrEmployeePaidOutsidePayrollCode(disbVchrPayeeEmployeeCode); } catch (Exception ex) { disbVchrPayeeEmployeeCode = false; ex.printStackTrace(); } } } return disbVchrPayeeEmployeeCode; } /** * Sets the disbVchrPayeeEmployeeCode attribute. * * @param disbVchrPayeeEmployeeCode The disbVchrPayeeEmployeeCode to set. */ public void setDisbVchrPayeeEmployeeCode(boolean disbVchrPayeeEmployeeCode) { this.disbVchrPayeeEmployeeCode = disbVchrPayeeEmployeeCode; } /** * Gets the disbVchrAlienPaymentCode attribute. * * @return Returns the disbVchrAlienPaymentCode */ public boolean isDisbVchrAlienPaymentCode() { if (StringUtils.isNotBlank(this.getDisbVchrEmployeeIdNumber()) && this.isVendor()) { try { disbVchrAlienPaymentCode = SpringContext.getBean(VendorService.class).isVendorForeign(getDisbVchrVendorHeaderIdNumberAsInteger()); } catch (Exception ex) { disbVchrAlienPaymentCode = false; ex.printStackTrace(); } } return ObjectUtils.isNull(disbVchrAlienPaymentCode) ? false : disbVchrAlienPaymentCode; } /** * Sets the disbVchrAlienPaymentCode attribute. * * @param disbVchrAlienPaymentCode The disbVchrAlienPaymentCode to set. */ public void setDisbVchrAlienPaymentCode(boolean disbVchrAlienPaymentCode) { this.disbVchrAlienPaymentCode = disbVchrAlienPaymentCode; } /** * Gets the dvPayeeSubjectPayment attribute. * * @return Returns the dvPayeeSubjectPayment */ public boolean isDvPayeeSubjectPaymentCode() { if (ObjectUtils.isNull(dvPayeeSubjectPaymentCode) && (getDisbVchrVendorHeaderIdNumberAsInteger() != null)) { dvPayeeSubjectPaymentCode = SpringContext.getBean(VendorService.class).isSubjectPaymentVendor(getDisbVchrVendorHeaderIdNumberAsInteger()); } return dvPayeeSubjectPaymentCode; } /** * Sets the dvPayeeSubjectPayment attribute. * * @param dvPayeeSubjectPayment The dvPayeeSubjectPayment to set. */ public void setDvPayeeSubjectPaymentCode(boolean dvPayeeSubjectPaymentCode) { this.dvPayeeSubjectPaymentCode = dvPayeeSubjectPaymentCode; } /** * Gets the disbVchrEmployeePaidOutsidePayrollCode attribute. * * @return Returns the disbVchrEmployeePaidOutsidePayrollCode. */ public boolean isDisbVchrEmployeePaidOutsidePayrollCode() { return disbVchrEmployeePaidOutsidePayrollCode; } /** * Gets the disbVchrEmployeePaidOutsidePayrollCode attribute. * * @return Returns the disbVchrEmployeePaidOutsidePayrollCode. */ public boolean getDisbVchrEmployeePaidOutsidePayrollCode() { return disbVchrEmployeePaidOutsidePayrollCode; } /** * Sets the disbVchrEmployeePaidOutsidePayrollCode attribute value. * * @param disbVchrEmployeePaidOutsidePayrollCode The disbVchrEmployeePaidOutsidePayrollCode to set. */ public void setDisbVchrEmployeePaidOutsidePayrollCode(boolean disbVchrEmployeePaidOutsidePayrollCode) { this.disbVchrEmployeePaidOutsidePayrollCode = disbVchrEmployeePaidOutsidePayrollCode; } /** * Gets the disbVchrPaymentReason attribute. * * @return Returns the disbVchrPaymentReason */ public PaymentReasonCode getDisbVchrPaymentReason() { return disbVchrPaymentReason; } /** * Sets the disbVchrPaymentReason attribute. * * @param disbVchrPaymentReason The disbVchrPaymentReason to set. * @deprecated */ @Deprecated public void setDisbVchrPaymentReason(PaymentReasonCode disbVchrPaymentReason) { this.disbVchrPaymentReason = disbVchrPaymentReason; } /** * @return Returns the disbursementVoucherPayeeTypeCode. */ public String getDisbursementVoucherPayeeTypeCode() { return disbursementVoucherPayeeTypeCode; } /** * @param disbursementVoucherPayeeTypeCode The disbursementVoucherPayeeTypeCode to set. */ public void setDisbursementVoucherPayeeTypeCode(String disbursementVoucherPayeeTypeCode) { this.disbursementVoucherPayeeTypeCode = disbursementVoucherPayeeTypeCode; } /** * @return Returns the payee type name */ public String getDisbursementVoucherPayeeTypeName() { DisbursementVoucherPayeeService payeeService = SpringContext.getBean(DisbursementVoucherPayeeService.class); return payeeService.getPayeeTypeDescription(disbursementVoucherPayeeTypeCode); } /** * This method is a dummy method defined for OJB. * * @param name */ public void setDisbursementVoucherPayeeTypeName(String name) { } /** * Returns the name associated with the payment reason name * * @return */ public String getDisbVchrPaymentReasonName() { this.refreshReferenceObject(KFSPropertyConstants.DISB_VCHR_PAYMENT_REASON); return this.getDisbVchrPaymentReason().getCodeAndDescription(); } /** * This method is a dummy method defined for OJB. * * @param name */ public void setDisbVchrPaymentReasonName(String name) { } /** * Gets the disbVchrVendorAddressIdNumber attribute. * * @return Returns the disbVchrVendorAddressIdNumber. */ public String getDisbVchrVendorAddressIdNumber() { return disbVchrVendorAddressIdNumber; } /** * Gets the disbVchrVendorAddressIdNumber attribute. * * @return Returns the disbVchrVendorAddressIdNumber. */ public Integer getDisbVchrVendorAddressIdNumberAsInteger() { if (getDisbVchrVendorAddressIdNumber() != null) { try { return new Integer(getDisbVchrVendorAddressIdNumber()); } catch (NumberFormatException nfe) { nfe.printStackTrace(); } } return null; } /** * Sets the disbVchrVendorAddressIdNumber attribute value. * * @param disbVchrVendorAddressIdNumber The disbVchrVendorAddressIdNumber to set. */ public void setDisbVchrVendorAddressIdNumber(String disbVchrVendorAddressIdNumber) { this.disbVchrVendorAddressIdNumber = disbVchrVendorAddressIdNumber; } /** * Gets the hasMultipleVendorAddresses attribute. * * @return Returns the hasMultipleVendorAddresses. */ public Boolean getHasMultipleVendorAddresses() { return hasMultipleVendorAddresses; } /** * Sets the hasMultipleVendorAddresses attribute value. * * @param hasMultipleVendorAddresses The hasMultipleVendorAddresses to set. */ public void setHasMultipleVendorAddresses(boolean hasMultipleVendorAddresses) { this.hasMultipleVendorAddresses = hasMultipleVendorAddresses; } /** * Gets the disbVchrPayeeState attribute. * * @return Returns the disbVchrPayeeState. */ public StateEbo getDisbVchrPayeeState() { if ( StringUtils.isBlank(disbVchrPayeeStateCode) || StringUtils.isBlank(KFSConstants.COUNTRY_CODE_UNITED_STATES ) ) { disbVchrPayeeState = null; } else { if ( disbVchrPayeeState == null || !StringUtils.equals( disbVchrPayeeState.getCode(),disbVchrPayeeStateCode) || !StringUtils.equals(disbVchrPayeeState.getCountryCode(), KFSConstants.COUNTRY_CODE_UNITED_STATES ) ) { ModuleService moduleService = SpringContext.getBean(KualiModuleService.class).getResponsibleModuleService(StateEbo.class); if ( moduleService != null ) { Map<String,Object> keys = new HashMap<String, Object>(2); keys.put(LocationConstants.PrimaryKeyConstants.COUNTRY_CODE, KFSConstants.COUNTRY_CODE_UNITED_STATES);/*RICE20_REFACTORME*/ keys.put(LocationConstants.PrimaryKeyConstants.CODE, disbVchrPayeeStateCode); disbVchrPayeeState = moduleService.getExternalizableBusinessObject(StateEbo.class, keys); } else { throw new RuntimeException( "CONFIGURATION ERROR: No responsible module found for EBO class. Unable to proceed." ); } } } return disbVchrPayeeState; } /** * Sets the disbVchrPayeeState attribute value. * @param disbVchrPayeeState The disbVchrPayeeState to set. */ public void setDisbVchrPayeeState(StateEbo disbVchrPayeeState) { this.disbVchrPayeeState = disbVchrPayeeState; } /** * Gets the disbVchrPayeeCountry attribute. * @return Returns the disbVchrPayeeCountry. */ public CountryEbo getDisbVchrPayeeCountry() { if ( StringUtils.isBlank(disbVchrPayeeCountryCode) ) { disbVchrPayeeCountry = null; } else { if ( disbVchrPayeeCountry == null || !StringUtils.equals( disbVchrPayeeCountry.getCode(),disbVchrPayeeCountryCode) ) { ModuleService moduleService = SpringContext.getBean(KualiModuleService.class).getResponsibleModuleService(CountryEbo.class); if ( moduleService != null ) { Map<String,Object> keys = new HashMap<String, Object>(1); keys.put(LocationConstants.PrimaryKeyConstants.CODE, disbVchrPayeeCountryCode); disbVchrPayeeCountry = moduleService.getExternalizableBusinessObject(CountryEbo.class, keys); } else { throw new RuntimeException( "CONFIGURATION ERROR: No responsible module found for EBO class. Unable to proceed." ); } } } return disbVchrPayeeCountry; } /** * Sets the disbVchrPayeeCountry attribute value. * @param disbVchrPayeeCountry The disbVchrPayeeCountry to set. */ public void setDisbVchrPayeeCountry(CountryEbo disbVchrPayeeCountry) { this.disbVchrPayeeCountry = disbVchrPayeeCountry; } /** * Gets the disbVchrPayeePostalZipCode attribute. * * @return Returns the disbVchrPayeePostalZipCode. */ public PostalCodeEbo getDisbVchrPayeePostalZipCode() { if ( StringUtils.isBlank(disbVchrPayeeZipCode) || StringUtils.isBlank(KFSConstants.COUNTRY_CODE_UNITED_STATES ) ) { disbVchrPayeePostalZipCode = null; } else { if ( disbVchrPayeePostalZipCode == null || !StringUtils.equals( disbVchrPayeePostalZipCode.getCode(), disbVchrPayeeZipCode) || !StringUtils.equals(disbVchrPayeePostalZipCode.getCountryCode(), KFSConstants.COUNTRY_CODE_UNITED_STATES ) ) { ModuleService moduleService = SpringContext.getBean(KualiModuleService.class).getResponsibleModuleService(PostalCodeEbo.class); if ( moduleService != null ) { Map<String,Object> keys = new HashMap<String, Object>(2); keys.put(LocationConstants.PrimaryKeyConstants.COUNTRY_CODE, KFSConstants.COUNTRY_CODE_UNITED_STATES);/*RICE20_REFACTORME*/ keys.put(LocationConstants.PrimaryKeyConstants.CODE, disbVchrPayeeZipCode); disbVchrPayeePostalZipCode = moduleService.getExternalizableBusinessObject(PostalCodeEbo.class, keys); } else { throw new RuntimeException( "CONFIGURATION ERROR: No responsible module found for EBO class. Unable to proceed." ); } } } return disbVchrPayeePostalZipCode; } /** * Sets the disbVchrPayeePostalZipCode attribute value. * @param disbVchrPayeePostalZipCode The disbVchrPayeePostalZipCode to set. */ public void setDisbVchrPayeePostalZipCode(PostalCodeEbo disbVchrPayeePostalZipCode) { this.disbVchrPayeePostalZipCode = disbVchrPayeePostalZipCode; } /** * Checks the payee type code for vendor type */ public boolean isVendor() { return SpringContext.getBean(DisbursementVoucherPayeeService.class).isVendor(this); } /** * Checks the payee type code for employee type */ public boolean isEmployee() { return SpringContext.getBean(DisbursementVoucherPayeeService.class).isEmployee(this); } /** * Checks the payee type code for customer type */ public boolean isCustomer() { return KFSConstants.PaymentPayeeTypes.CUSTOMER.equals(getDisbursementVoucherPayeeTypeCode()); } /** * @see org.kuali.rice.krad.bo.BusinessObjectBase#toStringMapper() */ protected LinkedHashMap toStringMapper_RICE20_REFACTORME() { LinkedHashMap m = new LinkedHashMap(); m.put(KFSPropertyConstants.DOCUMENT_NUMBER, this.documentNumber); return m; } /** * This method... * * @param compareDetail * @return */ public boolean hasSameAddress(DisbursementVoucherPayeeDetail compareDetail) { boolean isEqual = true; isEqual &= nullSafeEquals(this.getDisbVchrPayeeLine1Addr(), compareDetail.getDisbVchrPayeeLine1Addr()); isEqual &= nullSafeEquals(this.getDisbVchrPayeeLine2Addr(), compareDetail.getDisbVchrPayeeLine2Addr()); isEqual &= nullSafeEquals(this.getDisbVchrPayeeCityName(), compareDetail.getDisbVchrPayeeCityName()); isEqual &= nullSafeEquals(this.getDisbVchrPayeeStateCode(), compareDetail.getDisbVchrPayeeStateCode()); isEqual &= nullSafeEquals(this.getDisbVchrPayeeZipCode(), compareDetail.getDisbVchrPayeeZipCode()); isEqual &= nullSafeEquals(this.getDisbVchrPayeeCountryCode(), compareDetail.getDisbVchrPayeeCountryCode()); return isEqual; } /** * Returns the equality of the two given objects, automatically handling when one or both of the objects is null. * * @param obj1 * @param obj2 * * @return true if both objects are null or both are equal */ private boolean nullSafeEquals(Object obj1, Object obj2) { if (obj1 != null && obj2 != null) { return obj1.equals(obj2); } else { return (obj1 == obj2); } } /** * This method creates a string representation of the address assigned to this payee. * * @return */ public String getAddressAsString() { StringBuffer address = new StringBuffer(); address.append(this.getDisbVchrPayeeLine1Addr()).append(", "); address.append(this.getDisbVchrPayeeLine2Addr()).append(", "); address.append(this.getDisbVchrPayeeCityName()).append(", "); address.append(this.getDisbVchrPayeeStateCode()).append(" "); address.append(this.getDisbVchrPayeeZipCode()).append(", "); address.append(this.getDisbVchrPayeeCountryCode()); return address.toString(); } /** * For non-vendor employee payee, retrieves the principalId using payeeId (which shall hold employeeId in this case); * otherwise return null. * @return */ public String getEmployeePrincipalId() { if (StringUtils.isBlank(disbVchrPayeeIdNumber) || isVendor() || !isEmployee()) { return null; } List<Principal> plist = SpringContext.getBean(IdentityService.class).getPrincipalsByEmployeeId(disbVchrPayeeIdNumber); if (ObjectUtils.isNotNull(plist) && !plist.isEmpty()) { // we can only return on principal for inquiry link, choose the first one in the list as default Principal principal = plist.get(0); if (ObjectUtils.isNotNull(principal)) { return principal.getPrincipalId(); } } return null; } }