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 * Created on Feb 13, 2006 018 * 019 */ 020 package org.kuali.kfs.module.purap.businessobject; 021 022 import java.util.ArrayList; 023 import java.util.Date; 024 import java.util.Iterator; 025 import java.util.List; 026 027 import org.apache.commons.lang.StringUtils; 028 import org.apache.commons.lang.builder.ToStringBuilder; 029 import org.kuali.kfs.module.purap.util.ElectronicInvoiceUtils; 030 import org.kuali.kfs.module.purap.util.cxml.CxmlExtrinsic; 031 import org.kuali.rice.kns.util.DateUtils; 032 033 public class ElectronicInvoiceDetailRequestHeader { 034 private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(ElectronicInvoiceDetailRequestHeader.class); 035 036 private String invoiceId; 037 private String purpose = "standard"; 038 private String operation = "new"; 039 private String invoiceDateString; 040 private java.util.Date invoiceDate; 041 042 private boolean isInformationOnly; 043 private boolean isHeaderInvoiceIndicator; 044 private boolean isTaxInLine; 045 private boolean isSpecialHandlingInLine; 046 private boolean isShippingInLine; 047 private boolean isDiscountInLine; 048 private String shippingDateString; 049 private java.util.Date shippingDate; 050 private String invoiceCustomerNumber; 051 052 private List invoicePartnerContacts = new ArrayList(); 053 private List invoiceShippingContacts = new ArrayList(); // holds the ship to address information 054 private List extrinsics = new ArrayList(); 055 056 /** 057 * Newly Added 058 */ 059 private boolean isAccountingInLine; 060 private String idReferenceCreator; 061 private String idReferenceDescription; 062 private String idReferenceDomain; 063 private String idReferenceIdentifier; 064 private int payInNumberOfDays; 065 private String percentageRate; 066 067 public ElectronicInvoiceDetailRequestHeader() { 068 super(); 069 } 070 071 /** 072 * @param invoiceId 073 * @param purpose 074 * @param operation 075 * @throws ParseException 076 */ 077 public ElectronicInvoiceDetailRequestHeader(String invoiceId,String invoiceDate,String purpose,String operation) { 078 super(); 079 this.invoiceId = invoiceId; 080 this.purpose = purpose; 081 this.operation = operation; 082 this.setInvoiceDateString(invoiceDate); 083 } 084 085 /** 086 * This method returns the first ElectronicInvoicePostalAddress associated with the ElectronicInvoiceContact 087 * that has a roleID matching the given roleID. If the addressName is given then 088 * the ElectronicInvoicePostalAddress returned must match that... otherwise the first 089 * ElectronicInvoicePostalAddress found is returned 090 * 091 * @param roleID Valid 'Contact' tag attribute value for 'roleID' 092 * @param addressName Valid 'PostalAddress' tag attribute value for 'name' 093 * @return ElectronicInvoicePostalAddress relating to given info 094 */ 095 public ElectronicInvoicePostalAddress getCxmlPostalAddressByRoleID(String roleID,String addressName) { 096 if (roleID != null) { 097 ElectronicInvoiceContact contact = this.getCxmlContactByRoleID(roleID); 098 if (contact != null) { 099 for (Iterator iterator = contact.getPostalAddresses().iterator(); iterator.hasNext();) { 100 ElectronicInvoicePostalAddress cpa = (ElectronicInvoicePostalAddress) iterator.next(); 101 if (addressName == null) { 102 return cpa; 103 } else { 104 if (addressName.equalsIgnoreCase(cpa.getName())) { 105 return cpa; 106 } 107 } 108 } 109 } 110 } 111 return null; 112 } 113 114 /** 115 * This method returns the first ElectronicInvoiceContact associated with the given 116 * roleID. 117 * 118 * @param roleID Valid 'Contact' tag attribute value for 'roleID' 119 * @return ElectronicInvoiceContact relating to given info 120 */ 121 public ElectronicInvoiceContact getCxmlContactByRoleID(String roleID) { 122 if (roleID != null) { 123 for (Iterator iter = this.invoicePartnerContacts.iterator(); iter.hasNext();) { 124 ElectronicInvoiceContact contact = (ElectronicInvoiceContact) iter.next(); 125 if (roleID.equalsIgnoreCase(contact.getRole())) { 126 return contact; 127 } 128 } 129 for (Iterator shipIter = this.invoiceShippingContacts.iterator(); shipIter.hasNext();) { 130 ElectronicInvoiceContact shipContact = (ElectronicInvoiceContact) shipIter.next(); 131 if (roleID.equalsIgnoreCase(shipContact.getRole())) { 132 return shipContact; 133 } 134 } 135 } 136 return null; 137 } 138 139 /** 140 * @return Returns the invoiceDateString. 141 */ 142 public String getInvoiceDateString() { 143 return invoiceDateString; 144 } 145 /** 146 * @param invoiceDateString The invoiceDateString to set. 147 */ 148 public void setInvoiceDateString(String invoiceDateString) { 149 this.invoiceDateString = invoiceDateString; 150 setInvoiceDate(ElectronicInvoiceUtils.getDate(invoiceDateString)); 151 } 152 153 /** 154 * @return Returns the shippingDateString. 155 */ 156 public String getShippingDateString() { 157 return shippingDateString; 158 } 159 /** 160 * @param shippingDateString The shippingDateString to set. 161 */ 162 public void setShippingDateString(String shippingDateString) { 163 this.shippingDateString = shippingDateString; 164 // if ( (shippingDateString != null) && (!("".equals(shippingDateString))) ) { 165 // SimpleDateFormat sdf = new SimpleDateFormat(PurapConstants.ElectronicInvoice.CXML_DATE_FORMAT, Locale.US); 166 // try { 167 // this.shippingDate = sdf.parse(shippingDateString); 168 // } catch (ParseException e) { 169 // // setting shipping date to null to identify problem 170 // LOG.error("setShippingDateString() SimpleDateFormat parser error attempting to set invalid date string " + shippingDateString + " in ShippingDate field... setting date to null"); 171 // this.shippingDate = null; 172 // } 173 // } else { 174 // this.shippingDate = null; 175 // } 176 setShippingDate(ElectronicInvoiceUtils.getDate(shippingDateString)); 177 } 178 179 /** 180 * @return Returns the extrinsics. 181 */ 182 public List getExtrinsics() { 183 return extrinsics; 184 } 185 /** 186 * @param extrinsics The extrinsics to set. 187 */ 188 public void setExtrinsics(List extrinsics) { 189 this.extrinsics = extrinsics; 190 } 191 /** 192 * @return Returns the invoiceCustomerNumber. 193 */ 194 public String getInvoiceCustomerNumber() { 195 return invoiceCustomerNumber; 196 } 197 /** 198 * @param invoiceCustomerNumber The invoiceCustomerNumber to set. 199 */ 200 public void setInvoiceCustomerNumber(String invoiceCustomerNumber) { 201 this.invoiceCustomerNumber = invoiceCustomerNumber; 202 } 203 /** 204 * @return Returns the invoiceDate. 205 */ 206 public java.sql.Date getInvoiceDate() { 207 if (invoiceDate != null){ 208 return DateUtils.convertToSqlDate(invoiceDate); 209 }else{ 210 return null; 211 } 212 } 213 /** 214 * @param invoiceDate The invoiceDate to set. 215 */ 216 public void setInvoiceDate(Date invoiceDate) { 217 this.invoiceDate = invoiceDate; 218 } 219 /** 220 * @return Returns the invoiceId. 221 */ 222 public String getInvoiceId() { 223 return invoiceId; 224 } 225 226 /** 227 * @param invoiceId The invoiceId to set. 228 */ 229 public void setInvoiceId(String invoiceId) { 230 this.invoiceId = invoiceId; 231 } 232 /** 233 * @return Returns the invoicePartnerContacts. 234 */ 235 public List getInvoicePartnerContacts() { 236 return invoicePartnerContacts; 237 } 238 /** 239 * @param invoicePartnerContacts The invoicePartnerContacts to set. 240 */ 241 public void setInvoicePartnerContacts(List invoicePartnerContacts) { 242 this.invoicePartnerContacts = invoicePartnerContacts; 243 } 244 /** 245 * @return Returns the invoiceShippingContacts. 246 */ 247 public List getInvoiceShippingContacts() { 248 return invoiceShippingContacts; 249 } 250 /** 251 * @param invoiceShippingContacts The invoiceShippingContacts to set. 252 */ 253 public void setInvoiceShippingContacts(List invoiceShippingContacts) { 254 this.invoiceShippingContacts = invoiceShippingContacts; 255 } 256 257 /** 258 * @return Returns the isDiscountInLine. 259 */ 260 public boolean isDiscountInLine() { 261 return isDiscountInLine; 262 } 263 /** 264 * @param isDiscountInLine The isDiscountInLine to set. 265 */ 266 public void setDiscountInfoProvidedIndicator(String isDiscountInLine) { 267 this.isDiscountInLine = StringUtils.equalsIgnoreCase(StringUtils.defaultString(isDiscountInLine),"yes");; 268 } 269 /** 270 * @return Returns the isHeaderInvoiceIndicator. 271 */ 272 public boolean isHeaderInvoiceIndicator() { 273 return isHeaderInvoiceIndicator; 274 } 275 /** 276 * @param isHeaderInvoiceIndicator The isHeaderInvoiceIndicator to set. 277 */ 278 public void setHeaderInvoiceInd(String isHeaderInvoiceIndicator) { 279 this.isHeaderInvoiceIndicator = StringUtils.equalsIgnoreCase(StringUtils.defaultString(isHeaderInvoiceIndicator),"yes"); 280 } 281 /** 282 * @return Returns the isInformationOnly. 283 */ 284 public boolean isInformationOnly() { 285 return isInformationOnly; 286 } 287 /** 288 * @param isInformationOnly The isInformationOnly to set. 289 */ 290 public void setbuyerInformationOnlyIndicator(String informationOnly) { 291 /** 292 * 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) 293 */ 294 this.isInformationOnly = StringUtils.equalsIgnoreCase(StringUtils.defaultString(informationOnly),"yes"); 295 } 296 /** 297 * @return Returns the isShippingInLine. 298 */ 299 public boolean isShippingInLine() { 300 return isShippingInLine; 301 } 302 /** 303 * @param isShippingInLine The isShippingInLine to set. 304 */ 305 public void setShippingInfoProvidedIndicator(String isShippingInLine) { 306 this.isShippingInLine = StringUtils.equalsIgnoreCase(StringUtils.defaultString(isShippingInLine),"yes"); 307 } 308 /** 309 * @return Returns the isSpecialHandlingInLine. 310 */ 311 public boolean isSpecialHandlingInLine() { 312 return isSpecialHandlingInLine; 313 } 314 /** 315 * @param isSpecialHandlingInLine The isSpecialHandlingInLine to set. 316 */ 317 public void setSpecialHandlingInfoProvidedIndicator(String isSpecialHandlingInLine) { 318 this.isSpecialHandlingInLine = StringUtils.equalsIgnoreCase(StringUtils.defaultString(isSpecialHandlingInLine),"yes"); 319 } 320 /** 321 * @return Returns the isTaxInLine. 322 */ 323 public boolean isTaxInLine() { 324 return isTaxInLine; 325 } 326 /** 327 * @param isTaxInLine The isTaxInLine to set. 328 */ 329 public void setTaxInfoProvidedIndicator(String isTaxInLine) { 330 this.isTaxInLine = StringUtils.equalsIgnoreCase(StringUtils.defaultString(isTaxInLine),"yes"); 331 } 332 /** 333 * @return Returns the operation. 334 */ 335 public String getOperation() { 336 return operation; 337 } 338 /** 339 * @param operation The operation to set. 340 */ 341 public void setOperation(String operation) { 342 this.operation = operation; 343 } 344 /** 345 * @return Returns the purpose. 346 */ 347 public String getPurpose() { 348 return purpose; 349 } 350 /** 351 * @param purpose The purpose to set. 352 */ 353 public void setPurpose(String purpose) { 354 this.purpose = purpose; 355 } 356 /** 357 * @return Returns the shippingDate. 358 */ 359 public Date getShippingDate() { 360 return shippingDate; 361 } 362 /** 363 * @param shippingDate The shippingDate to set. 364 */ 365 public void setShippingDate(Date shippingDate) { 366 this.shippingDate = shippingDate; 367 } 368 369 public boolean isAccountingInLine() { 370 return isAccountingInLine; 371 } 372 373 public void setAccountingInfoProvidedIndicator(String isAccountingInLine) { 374 this.isAccountingInLine = StringUtils.equalsIgnoreCase(StringUtils.defaultString(isAccountingInLine),"yes");; 375 } 376 377 public String getIdReferenceCreator() { 378 return idReferenceCreator; 379 } 380 381 public void setIdReferenceCreator(String idReferenceCreator) { 382 this.idReferenceCreator = idReferenceCreator; 383 } 384 385 public String getIdReferenceDescription() { 386 return idReferenceDescription; 387 } 388 389 public void setIdReferenceDescription(String idReferenceDescription) { 390 this.idReferenceDescription = idReferenceDescription; 391 } 392 393 public String getIdReferenceDomain() { 394 return idReferenceDomain; 395 } 396 397 public void setIdReferenceDomain(String idReferenceDomain) { 398 this.idReferenceDomain = idReferenceDomain; 399 } 400 401 public String getIdReferenceIdentifier() { 402 return idReferenceIdentifier; 403 } 404 405 public void setIdReferenceIdentifier(String idReferenceIdentifier) { 406 this.idReferenceIdentifier = idReferenceIdentifier; 407 } 408 409 public void addInvoicePartnerContact(ElectronicInvoiceContact electronicInvoiceContact){ 410 if (electronicInvoiceContact != null){ 411 invoicePartnerContacts.add(electronicInvoiceContact); 412 } 413 } 414 415 public ElectronicInvoiceContact[] getInvoicePartnerContactsAsArray(){ 416 if (invoicePartnerContacts.size() > 0){ 417 ElectronicInvoiceContact[] tempContacts = new ElectronicInvoiceContact[invoicePartnerContacts.size()]; 418 invoicePartnerContacts.toArray(tempContacts); 419 return tempContacts; 420 } 421 return null; 422 } 423 424 public void addInvoiceShippingContacts(ElectronicInvoiceContact electronicInvoiceContact){ 425 invoiceShippingContacts.add(electronicInvoiceContact); 426 } 427 428 public ElectronicInvoiceContact[] getInvoiceShippingContactsAsArray(){ 429 if (invoiceShippingContacts.size() > 0){ 430 ElectronicInvoiceContact[] tempContacts = new ElectronicInvoiceContact[invoiceShippingContacts.size()]; 431 invoiceShippingContacts.toArray(tempContacts); 432 return tempContacts; 433 } 434 return null; 435 } 436 437 public void addExtrinsic(CxmlExtrinsic extrinsic) { 438 this.extrinsics.add(extrinsic); 439 } 440 441 public CxmlExtrinsic[] getExtrinsicAsArray() { 442 if (extrinsics.size() > 0){ 443 CxmlExtrinsic[] extrinsics = new CxmlExtrinsic[this.extrinsics.size()]; 444 this.extrinsics.toArray(extrinsics); 445 return extrinsics; 446 } 447 return null; 448 } 449 450 public int getPayInNumberOfDays() { 451 return payInNumberOfDays; 452 } 453 454 public void setPayInNumberOfDays(int payInNumberOfDays) { 455 this.payInNumberOfDays = payInNumberOfDays; 456 } 457 458 public String getPercentageRate() { 459 return percentageRate; 460 } 461 462 public void setPercentageRate(String percentageRate) { 463 this.percentageRate = percentageRate; 464 } 465 466 public String toString(){ 467 468 ToStringBuilder toString = new ToStringBuilder(this); 469 470 toString.append("invoiceID",getInvoiceId()); 471 toString.append("purpose",getPurpose()); 472 toString.append("operation",getOperation()); 473 toString.append("invoiceDate",getInvoiceDateString()); 474 475 toString.append("isInformationOnly",isInformationOnly()); 476 toString.append("isHeaderInvoiceIndicator",isHeaderInvoiceIndicator()); 477 toString.append("isTaxInLine",isTaxInLine()); 478 toString.append("isSpecialHandlingInLine",isSpecialHandlingInLine()); 479 toString.append("isShippingInLine",isShippingInLine()); 480 toString.append("isDiscountInLine",isDiscountInLine()); 481 toString.append("isAccountingInLine",isAccountingInLine()); 482 483 toString.append("idReferenceCreator",getIdReferenceCreator()); 484 toString.append("idReferenceDescription",getIdReferenceDescription()); 485 toString.append("idReferenceDomain",getIdReferenceDomain()); 486 toString.append("idReferenceIdentifier",getIdReferenceIdentifier()); 487 488 489 toString.append("shippingDate",getShippingDateString()); 490 toString.append("invoiceCustomerNumber",getInvoiceCustomerNumber()); 491 toString.append("payInNumberOfDays",getPayInNumberOfDays()); 492 toString.append("percentageRate",getPercentageRate()); 493 494 toString.append("invoicePartnerContacts",getInvoicePartnerContacts()); 495 toString.append("invoiceShippingContacts",getInvoiceShippingContacts()); 496 toString.append("extrinsics",getExtrinsics()); 497 498 return toString.toString(); 499 } 500 501 502 503 } 504