001 /* 002 * Copyright 2011 The Kuali Foundation. 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017 package org.kuali.kfs.fp.businessobject; 018 019 import java.text.MessageFormat; 020 import java.util.HashMap; 021 import java.util.LinkedHashMap; 022 import java.util.Map; 023 024 import org.apache.commons.lang.StringUtils; 025 import org.kuali.kfs.fp.document.DisbursementVoucherConstants; 026 import org.kuali.kfs.fp.document.service.DisbursementVoucherPayeeService; 027 import org.kuali.kfs.sys.KFSConstants; 028 import org.kuali.kfs.sys.KFSPropertyConstants; 029 import org.kuali.kfs.sys.context.SpringContext; 030 import org.kuali.kfs.vnd.VendorConstants; 031 import org.kuali.kfs.vnd.VendorPropertyConstants; 032 import org.kuali.kfs.vnd.businessobject.VendorDetail; 033 import org.kuali.rice.kim.bo.Person; 034 import org.kuali.rice.kim.util.KIMPropertyConstants; 035 import org.kuali.rice.kns.bo.Inactivateable; 036 import org.kuali.rice.kns.bo.TransientBusinessObjectBase; 037 import org.kuali.rice.kns.util.KNSPropertyConstants; 038 039 public class DisbursementPayee extends TransientBusinessObjectBase implements Inactivateable { 040 private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(DisbursementPayee.class); 041 042 private String payeeIdNumber; 043 private String payeeTypeCode; 044 private String payeeTypeDescription; 045 private String payeeName; 046 047 private String paymentReasonCode; 048 private String taxNumber; 049 private String employeeId; 050 private String firstName; 051 private String lastName; 052 private String vendorName; 053 private String vendorNumber; 054 private String address; 055 private boolean active; 056 057 private String principalId; 058 059 public final static String addressPattern = "{0}, {1}, {2} {3}"; 060 061 /** 062 * Constructs a DisbursementPayee.java. 063 */ 064 public DisbursementPayee() { 065 super(); 066 } 067 068 /** 069 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper() 070 */ 071 @Override 072 protected LinkedHashMap toStringMapper() { 073 LinkedHashMap<String, Object> map = new LinkedHashMap<String, Object>(); 074 map.put(KFSPropertyConstants.PAYEE_ID_NUMBER, this.payeeIdNumber); 075 map.put(KFSPropertyConstants.PAYEE_TYPE_CODE, this.payeeTypeCode); 076 map.put(KFSPropertyConstants.PAYEE_NAME, this.payeeName); 077 078 return map; 079 } 080 081 /** 082 * convert the field names between Payee and Vendor 083 * 084 * @return a field name map of Payee and Vendor. The map key is a field name of Payee, and its value is a field name of Vendor 085 */ 086 public static Map<String, String> getFieldConversionBetweenPayeeAndVendor() { 087 Map<String, String> fieldConversionMap = new HashMap<String, String>(); 088 089 fieldConversionMap.put(KFSPropertyConstants.TAX_NUMBER, VendorPropertyConstants.VENDOR_TAX_NUMBER); 090 091 fieldConversionMap.put(KFSPropertyConstants.VENDOR_NAME, KFSPropertyConstants.VENDOR_NAME); 092 fieldConversionMap.put(KFSPropertyConstants.VENDOR_NUMBER, KFSPropertyConstants.VENDOR_NUMBER); 093 094 fieldConversionMap.put(KFSPropertyConstants.PERSON_FIRST_NAME, VendorPropertyConstants.VENDOR_FIRST_NAME); 095 fieldConversionMap.put(KFSPropertyConstants.PERSON_LAST_NAME, VendorPropertyConstants.VENDOR_LAST_NAME); 096 097 fieldConversionMap.put(KNSPropertyConstants.ACTIVE, KFSPropertyConstants.ACTIVE_INDICATOR); 098 099 return fieldConversionMap; 100 } 101 102 /** 103 * convert the field names between Payee and Person 104 * 105 * @return a field name map of Payee and Person. The map key is a field name of Payee, and its value is a field name of Person 106 */ 107 public static Map<String, String> getFieldConversionBetweenPayeeAndPerson() { 108 Map<String, String> fieldConversionMap = new HashMap<String, String>(); 109 110 // fieldConversionMap.put(KFSPropertyConstants.TAX_NUMBER, KIMPropertyConstants.Person.EXTERNAL_ID); 111 112 fieldConversionMap.put(KFSPropertyConstants.PERSON_FIRST_NAME, KIMPropertyConstants.Person.FIRST_NAME); 113 fieldConversionMap.put(KFSPropertyConstants.PERSON_LAST_NAME, KIMPropertyConstants.Person.LAST_NAME); 114 115 fieldConversionMap.put(KFSPropertyConstants.EMPLOYEE_ID, KIMPropertyConstants.Person.EMPLOYEE_ID); 116 fieldConversionMap.put(KNSPropertyConstants.ACTIVE, KNSPropertyConstants.ACTIVE); 117 118 return fieldConversionMap; 119 } 120 121 /** 122 * build a payee object from the given vendor object 123 * 124 * @param vendorDetail the given vendor object 125 * @return a payee object built from the given vendor object 126 */ 127 public static DisbursementPayee getPayeeFromVendor(VendorDetail vendorDetail) { 128 DisbursementPayee disbursementPayee = new DisbursementPayee(); 129 130 disbursementPayee.setActive(vendorDetail.isActiveIndicator()); 131 132 disbursementPayee.setPayeeIdNumber(vendorDetail.getVendorNumber()); 133 disbursementPayee.setPayeeName(vendorDetail.getAltVendorName()); 134 disbursementPayee.setTaxNumber(vendorDetail.getVendorHeader().getVendorTaxNumber()); 135 136 String vendorTypeCode = vendorDetail.getVendorHeader().getVendorTypeCode(); 137 String payeeTypeCode = getVendorPayeeTypeCodeMapping().get(vendorTypeCode); 138 disbursementPayee.setPayeeTypeCode(payeeTypeCode); 139 140 String vendorAddress = MessageFormat.format(addressPattern, vendorDetail.getDefaultAddressLine1(), vendorDetail.getDefaultAddressCity(), vendorDetail.getDefaultAddressStateCode(), vendorDetail.getDefaultAddressCountryCode()); 141 disbursementPayee.setAddress(vendorAddress); 142 143 return disbursementPayee; 144 } 145 146 /** 147 * build a payee object from the given person object 148 * 149 * @param person the given person object 150 * @return a payee object built from the given person object 151 */ 152 public static DisbursementPayee getPayeeFromPerson(Person person) { 153 DisbursementPayee disbursementPayee = new DisbursementPayee(); 154 155 disbursementPayee.setActive(person.isActive()); 156 157 disbursementPayee.setPayeeIdNumber(person.getEmployeeId()); 158 disbursementPayee.setPrincipalId(person.getPrincipalId()); 159 160 disbursementPayee.setPayeeName(person.getName()); 161 disbursementPayee.setTaxNumber(KFSConstants.BLANK_SPACE); 162 163 disbursementPayee.setPayeeTypeCode(DisbursementVoucherConstants.DV_PAYEE_TYPE_EMPLOYEE); 164 165 String personAddress = MessageFormat.format(addressPattern, person.getAddressLine1(), person.getAddressCityName(), person.getAddressStateCode(), person.getAddressCountryCode()); 166 disbursementPayee.setAddress(personAddress); 167 168 return disbursementPayee; 169 } 170 171 /** 172 * Gets the payeeIdNumber attribute. 173 * 174 * @return Returns the payeeIdNumber. 175 */ 176 public String getPayeeIdNumber() { 177 return payeeIdNumber; 178 } 179 180 /** 181 * Sets the payeeIdNumber attribute value. 182 * 183 * @param payeeIdNumber The payeeIdNumber to set. 184 */ 185 public void setPayeeIdNumber(String payeeIdNumber) { 186 this.payeeIdNumber = payeeIdNumber; 187 } 188 189 /** 190 * Gets the payeeTypeCode attribute. 191 * 192 * @return Returns the payeeTypeCode. 193 */ 194 public String getPayeeTypeCode() { 195 return payeeTypeCode; 196 } 197 198 /** 199 * Sets the payeeTypeCode attribute value. 200 * 201 * @param payeeTypeCode The payeeTypeCode to set. 202 */ 203 public void setPayeeTypeCode(String payeeTypeCode) { 204 this.payeeTypeCode = payeeTypeCode; 205 } 206 207 /** 208 * Gets the payeeName attribute. 209 * 210 * @return Returns the payeeName. 211 */ 212 public String getPayeeName() { 213 return payeeName; 214 } 215 216 /** 217 * Sets the payeeName attribute value. 218 * 219 * @param payeeName The payeeName to set. 220 */ 221 public void setPayeeName(String payeeName) { 222 this.payeeName = payeeName; 223 } 224 225 /** 226 * Gets the paymentReasonCode attribute. 227 * 228 * @return Returns the paymentReasonCode. 229 */ 230 public String getPaymentReasonCode() { 231 return paymentReasonCode; 232 } 233 234 /** 235 * Sets the paymentReasonCode attribute value. 236 * 237 * @param paymentReasonCode The paymentReasonCode to set. 238 */ 239 public void setPaymentReasonCode(String paymentReasonCode) { 240 this.paymentReasonCode = paymentReasonCode; 241 } 242 243 /** 244 * Gets the taxNumber attribute. 245 * 246 * @return Returns the taxNumber. 247 */ 248 public String getTaxNumber() { 249 return taxNumber; 250 } 251 252 /** 253 * Sets the taxNumber attribute value. 254 * 255 * @param taxNumber The taxNumber to set. 256 */ 257 public void setTaxNumber(String taxNumber) { 258 this.taxNumber = taxNumber; 259 } 260 261 /** 262 * Gets the employeeId attribute. 263 * 264 * @return Returns the employeeId. 265 */ 266 public String getEmployeeId() { 267 return employeeId; 268 } 269 270 /** 271 * Sets the employeeId attribute value. 272 * 273 * @param employeeId The employeeId to set. 274 */ 275 public void setEmployeeId(String employeeId) { 276 this.employeeId = employeeId; 277 } 278 279 /** 280 * Gets the vendorName attribute. 281 * 282 * @return Returns the vendorName. 283 */ 284 public String getVendorName() { 285 return vendorName; 286 } 287 288 /** 289 * Sets the vendorName attribute value. 290 * 291 * @param vendorName The vendorName to set. 292 */ 293 public void setVendorName(String vendorName) { 294 this.vendorName = vendorName; 295 } 296 297 /** 298 * Gets the address attribute. 299 * 300 * @return Returns the address. 301 */ 302 public String getAddress() { 303 return address; 304 } 305 306 /** 307 * Sets the address attribute value. 308 * 309 * @param address The address to set. 310 */ 311 public void setAddress(String address) { 312 this.address = address; 313 } 314 315 /** 316 * Gets the vendorNumber attribute. 317 * 318 * @return Returns the vendorNumber. 319 */ 320 public String getVendorNumber() { 321 return vendorNumber; 322 } 323 324 /** 325 * Sets the vendorNumber attribute value. 326 * 327 * @param vendorNumber The vendorNumber to set. 328 */ 329 public void setVendorNumber(String vendorNumber) { 330 this.vendorNumber = vendorNumber; 331 } 332 333 /** 334 * Gets the active attribute. 335 * 336 * @return Returns the active. 337 */ 338 public boolean isActive() { 339 return active; 340 } 341 342 /** 343 * Sets the active attribute value. 344 * 345 * @param active The active to set. 346 */ 347 public void setActive(boolean active) { 348 this.active = active; 349 } 350 351 /** 352 * Gets the firstName attribute. 353 * 354 * @return Returns the firstName. 355 */ 356 public String getFirstName() { 357 return firstName; 358 } 359 360 /** 361 * Sets the firstName attribute value. 362 * 363 * @param firstName The firstName to set. 364 */ 365 public void setFirstName(String firstName) { 366 this.firstName = firstName; 367 } 368 369 /** 370 * Gets the lastName attribute. 371 * 372 * @return Returns the lastName. 373 */ 374 public String getLastName() { 375 return lastName; 376 } 377 378 /** 379 * Sets the lastName attribute value. 380 * 381 * @param lastName The lastName to set. 382 */ 383 public void setLastName(String lastName) { 384 this.lastName = lastName; 385 } 386 387 /** 388 * Gets the payeeTypeDescription attribute. 389 * 390 * @return Returns the payeeTypeDescription. 391 */ 392 public String getPayeeTypeDescription() { 393 DisbursementVoucherPayeeService payeeService = SpringContext.getBean(DisbursementVoucherPayeeService.class); 394 395 return payeeService.getPayeeTypeDescription(payeeTypeCode); 396 } 397 398 /** 399 * Sets the payeeTypeDescription attribute value. 400 * 401 * @param payeeTypeDescription The payeeTypeDescription to set. 402 */ 403 public void setPayeeTypeDescription(String payeeTypeDescription) { 404 this.payeeTypeDescription = payeeTypeDescription; 405 } 406 407 /** 408 * Gets the principalId attribute. 409 * @return Returns the principalId. 410 */ 411 public String getPrincipalId() { 412 return principalId; 413 } 414 415 /** 416 * Sets the principalId attribute value. 417 * @param principalId The principalId to set. 418 */ 419 public void setPrincipalId(String principalId) { 420 this.principalId = principalId; 421 } 422 423 // do mapping between vendor type code and payee type code 424 private static Map<String, String> getVendorPayeeTypeCodeMapping() { 425 Map<String, String> payeeVendorTypeCodeMapping = new HashMap<String, String>(); 426 427 payeeVendorTypeCodeMapping.put(VendorConstants.VendorTypes.PURCHASE_ORDER, DisbursementVoucherConstants.DV_PAYEE_TYPE_VENDOR); 428 payeeVendorTypeCodeMapping.put(VendorConstants.VendorTypes.DISBURSEMENT_VOUCHER, DisbursementVoucherConstants.DV_PAYEE_TYPE_VENDOR); 429 payeeVendorTypeCodeMapping.put(VendorConstants.VendorTypes.REVOLVING_FUND, DisbursementVoucherConstants.DV_PAYEE_TYPE_REVOLVING_FUND_VENDOR); 430 payeeVendorTypeCodeMapping.put(VendorConstants.VendorTypes.SUBJECT_PAYMENT, DisbursementVoucherConstants.DV_PAYEE_TYPE_SUBJECT_PAYMENT_VENDOR); 431 432 return payeeVendorTypeCodeMapping; 433 } 434 }