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