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    /*
018     * Created on Aug 25, 2004
019     *
020     */
021    package org.kuali.kfs.module.purap.businessobject;
022    
023    import java.math.BigDecimal;
024    import java.text.ParseException;
025    import java.text.SimpleDateFormat;
026    import java.util.ArrayList;
027    import java.util.Date;
028    import java.util.List;
029    
030    import org.apache.commons.lang.StringUtils;
031    import org.apache.commons.lang.builder.ToStringBuilder;
032    import org.kuali.kfs.module.purap.PurapConstants;
033    import org.kuali.kfs.module.purap.document.ElectronicInvoiceRejectDocument;
034    import org.kuali.kfs.module.purap.util.PurApDateFormatUtils;
035    import org.kuali.kfs.module.purap.util.cxml.CxmlExtrinsic;
036    
037    
038    public class ElectronicInvoiceItem {
039      private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(ElectronicInvoiceItem.class);
040      
041      // this class is equiped to hold InvoiceDetailItem values as well as a few rudimentary
042      // InvoiceDetailServiceItem values
043    
044      private String catalogNumber;
045      private String invoiceLineNumber;
046      private String quantity;
047      private String unitOfMeasure;
048      // UnitPrice is deprecated for InvoiceDetailServiceItem tags
049      private String unitPrice; // has money xml node
050      private String unitPriceCurrency;
051      private String subTotalAmount; // has money xml node
052      private String subTotalAmountCurrency;
053      private String invoiceLineSpecialHandlingAmount; // has money xml node
054      private String invoiceLineSpecialHandlingAmountCurrency;
055      private String invoiceLineShippingAmount; // has money xml node
056      private String invoiceLineShippingAmountCurrency;
057      private String taxAmount; // has money xml node  (not all tax fields are stored as tax should never occur)
058      private String taxAmountCurrency;
059      private String taxDescription;
060      // invoiceLineGrossAmount should = subtotalAmount + taxAmount + invoiceLineSpecialHandlingAmount + invoiceLineShippingAmount 
061      private String invoiceLineGrossAmount; // subtotal + taxes + shipping + special handling
062      private String invoiceLineGrossAmountCurrency;
063      private String invoiceLineDiscountAmount; // has money xml node
064      private String invoiceLineDiscountAmountCurrency;
065      private String invoiceLineDiscountPercentageRate;
066      // invoiceLineNetAmount should = invoiceLineGrossAmount - invoiceLineDiscountAmount 
067      private String invoiceLineNetAmount;  // has money xml node
068      private String invoiceLineNetAmountCurrency;
069      private String shippingDateString;
070      private Date shippingDate;
071      
072      private List invoiceShippingContacts = new ArrayList();
073      private List comments = new ArrayList();
074      private List extrinsic = new ArrayList();
075      
076      // following fields describe PO information
077      private String referenceLineNumber; // only match available for InvoiceDetailServiceItem values
078      private String referenceSerialNumber; // attribute of <InvoiceDetailItemReference> deprecated to be <SerialNumber> inside it
079      private List<String> referenceSerialNumbers = new ArrayList<String>(); // used only if above String field is null
080      private String referenceItemIDSupplierPartID;
081      private String referenceItemIDSupplierPartAuxID;
082      private String referenceDescription;
083      private String referenceManufacturerPartID;
084      private String referenceManufacturerName;
085      private String referenceCountryCode;
086      private String referenceCountryName;
087      
088      private ElectronicInvoiceRejectDocument electronicInvoiceRejectDocument;
089      
090      public ElectronicInvoiceItem() {
091      }
092      
093      public Integer getReferenceLineNumberInteger() {
094        if (this.referenceLineNumber != null) {
095          return new Integer(Integer.parseInt(referenceLineNumber));
096        }
097        return null;
098      }
099      
100      public String getInvoiceLineShippingDescription() {
101        return "";
102      }
103      
104      public BigDecimal getInvoiceLineQuantityBigDecimal() {
105        if (StringUtils.isNotEmpty(quantity)) {
106          return new BigDecimal(this.quantity);
107        } else {
108          return null;
109        }
110      }
111      
112      public BigDecimal getInvoiceLineUnitCostBigDecimal() {
113        if (StringUtils.isNotEmpty(unitPrice)) {
114          return new BigDecimal(this.unitPrice);
115        } else {
116          return BigDecimal.ZERO;
117        }
118      }
119      
120      public BigDecimal getInvoiceLineSubTotalAmountBigDecimal() {
121        if (StringUtils.isNotEmpty(subTotalAmount)) {
122          return new BigDecimal(this.subTotalAmount);
123        } else {
124          return BigDecimal.ZERO;
125        }
126      }
127    
128      public BigDecimal getInvoiceLineTaxAmountBigDecimal() {
129        if (StringUtils.isNotEmpty(taxAmount)) {
130          return new BigDecimal(this.taxAmount);
131        } else {
132          return BigDecimal.ZERO;
133        }
134      }
135    
136      public BigDecimal getInvoiceLineSpecialHandlingAmountBigDecimal() {
137        if (StringUtils.isNotEmpty(invoiceLineSpecialHandlingAmount)) {
138          return new BigDecimal(this.invoiceLineSpecialHandlingAmount);
139        } else {
140          return BigDecimal.ZERO;
141        }
142      }
143    
144      public BigDecimal getInvoiceLineShippingAmountBigDecimal() {
145        if (StringUtils.isNotEmpty(invoiceLineShippingAmount)) {
146          return new BigDecimal(this.invoiceLineShippingAmount);
147        } else {
148          return BigDecimal.ZERO;
149        }
150      }
151    
152      public BigDecimal getInvoiceLineGrossAmountBigDecimal() {
153        if (StringUtils.isNotEmpty(invoiceLineGrossAmount)) {
154          return new BigDecimal(this.invoiceLineGrossAmount);
155        } else {
156          return BigDecimal.ZERO;
157        }
158      }
159    
160      public BigDecimal getInvoiceLineDiscountAmountBigDecimal() {
161        if (StringUtils.isNotEmpty(invoiceLineDiscountAmount)) {
162          return new BigDecimal(this.invoiceLineDiscountAmount);
163        } else {
164          return BigDecimal.ZERO;
165        }
166      }
167    
168      public BigDecimal getInvoiceLineNetAmountBigDecimal() {
169        if (StringUtils.isNotEmpty(invoiceLineNetAmount)) {
170          return new BigDecimal(this.invoiceLineNetAmount);
171        } else {
172          return BigDecimal.ZERO;
173        }
174      }
175    
176      /**
177       * @return Returns the shippingDateString.
178       */
179      public String getShippingDateString() {
180        return shippingDateString;
181      }
182      /**
183       * @param shippingDateString The shippingDateString to set.
184       */
185      public void setShippingDateString(String shippingDateString) {
186        this.shippingDateString = shippingDateString;
187        if ( (shippingDateString != null) && (!("".equals(shippingDateString))) ) {
188          SimpleDateFormat sdf = PurApDateFormatUtils.getSimpleDateFormat(PurapConstants.NamedDateFormats.CXML_DATE_FORMAT);
189          try {
190            this.shippingDate = sdf.parse(shippingDateString);
191          } catch (ParseException e) {
192            // setting shipping date to null to identify problem
193            LOG.error("setShippingDateString() SimpleDateFormat parser error attempting to set invalid date string " + shippingDateString + " in ShippingDate field... setting date to null");
194            this.shippingDate = null;
195          }
196        } else {
197          this.shippingDate = null;
198        }
199      }
200      
201      /**
202       * @return Returns the catalogNumber.
203       */
204      public String getCatalogNumber() {
205        return catalogNumber;
206      }
207      
208      /**
209       * @param catalogNumber The catalogNumber to set.
210       */
211      public void setCatalogNumber(String catalogNumber) {
212        this.catalogNumber = catalogNumber;
213      }
214      /**
215       * @return Returns the comments.
216       */
217      public List getComments() {
218        return comments;
219      }
220      /**
221       * @param comments The comments to set.
222       */
223      public void setComments(List comments) {
224        this.comments = comments;
225      }
226      /**
227       * @return Returns the extrinsic.
228       */
229      public List getExtrinsic() {
230        return extrinsic;
231      }
232      /**
233       * @param extrinsic The extrinsic to set.
234       */
235      public void setExtrinsic(List extrinsic) {
236        this.extrinsic = extrinsic;
237      }
238      /**
239       * @return Returns the invoiceLineDiscountAmount.
240       */
241      public String getInvoiceLineDiscountAmount() {
242        return invoiceLineDiscountAmount;
243      }
244      /**
245       * @param invoiceLineDiscountAmount The invoiceLineDiscountAmount to set.
246       */
247      public void setInvoiceLineDiscountAmount(String invoiceLineDiscountAmount) {
248        this.invoiceLineDiscountAmount = invoiceLineDiscountAmount;
249      }
250      /**
251       * @return Returns the invoiceLineDiscountAmountCurrency.
252       */
253      public String getInvoiceLineDiscountAmountCurrency() {
254        return invoiceLineDiscountAmountCurrency;
255      }
256      /**
257       * @param invoiceLineDiscountAmountCurrency The invoiceLineDiscountAmountCurrency to set.
258       */
259      public void setInvoiceLineDiscountAmountCurrency(String invoiceLineDiscountAmountCurrency) {
260        this.invoiceLineDiscountAmountCurrency = invoiceLineDiscountAmountCurrency;
261      }
262      /**
263       * @return Returns the invoiceLineGrossAmount.
264       */
265      public String getInvoiceLineGrossAmount() {
266        return invoiceLineGrossAmount;
267      }
268      /**
269       * @param invoiceLineGrossAmount The invoiceLineGrossAmount to set.
270       */
271      public void setInvoiceLineGrossAmount(String invoiceLineGrossAmount) {
272        this.invoiceLineGrossAmount = invoiceLineGrossAmount;
273      }
274      /**
275       * @return Returns the invoiceLineGrossAmountCurrency.
276       */
277      public String getInvoiceLineGrossAmountCurrency() {
278        return invoiceLineGrossAmountCurrency;
279      }
280      /**
281       * @param invoiceLineGrossAmountCurrency The invoiceLineGrossAmountCurrency to set.
282       */
283      public void setInvoiceLineGrossAmountCurrency(String invoiceLineGrossAmountCurrency) {
284        this.invoiceLineGrossAmountCurrency = invoiceLineGrossAmountCurrency;
285      }
286      /**
287       * @return Returns the invoiceLineNetAmount.
288       */
289      public String getInvoiceLineNetAmount() {
290        return invoiceLineNetAmount;
291      }
292      /**
293       * @param invoiceLineNetAmount The invoiceLineNetAmount to set.
294       */
295      public void setInvoiceLineNetAmount(String invoiceLineNetAmount) {
296        this.invoiceLineNetAmount = invoiceLineNetAmount;
297      }
298      /**
299       * @return Returns the invoiceLineNetAmountCurrency.
300       */
301      public String getInvoiceLineNetAmountCurrency() {
302        return invoiceLineNetAmountCurrency;
303      }
304      /**
305       * @param invoiceLineNetAmountCurrency The invoiceLineNetAmountCurrency to set.
306       */
307      public void setInvoiceLineNetAmountCurrency(String invoiceLineNetAmountCurrency) {
308        this.invoiceLineNetAmountCurrency = invoiceLineNetAmountCurrency;
309      }
310      /**
311       * @return Returns the invoiceLineNumber.
312       */
313      public String getInvoiceLineNumber() {
314        return invoiceLineNumber;
315      }
316      /**
317       * @param invoiceLineNumber The invoiceLineNumber to set.
318       */
319      public void setInvoiceLineNumber(String invoiceLineNumber) {
320        this.invoiceLineNumber = invoiceLineNumber;
321      }
322      /**
323       * @return Returns the invoiceLineShippingAmount.
324       */
325      public String getInvoiceLineShippingAmount() {
326        return invoiceLineShippingAmount;
327      }
328      /**
329       * @param invoiceLineShippingAmount The invoiceLineShippingAmount to set.
330       */
331      public void setInvoiceLineShippingAmount(String invoiceLineShippingAmount) {
332        this.invoiceLineShippingAmount = invoiceLineShippingAmount;
333      }
334      /**
335       * @return Returns the invoiceLineShippingAmountCurrency.
336       */
337      public String getInvoiceLineShippingAmountCurrency() {
338        return invoiceLineShippingAmountCurrency;
339      }
340      /**
341       * @param invoiceLineShippingAmountCurrency The invoiceLineShippingAmountCurrency to set.
342       */
343      public void setInvoiceLineShippingAmountCurrency(String invoiceLineShippingAmountCurrency) {
344        this.invoiceLineShippingAmountCurrency = invoiceLineShippingAmountCurrency;
345      }
346      /**
347       * @return Returns the invoiceLineSpecialHandlingAmount.
348       */
349      public String getInvoiceLineSpecialHandlingAmount() {
350        return invoiceLineSpecialHandlingAmount;
351      }
352      /**
353       * @param invoiceLineSpecialHandlingAmount The invoiceLineSpecialHandlingAmount to set.
354       */
355      public void setInvoiceLineSpecialHandlingAmount(String invoiceLineSpecialHandlingAmount) {
356        this.invoiceLineSpecialHandlingAmount = invoiceLineSpecialHandlingAmount;
357      }
358      /**
359       * @return Returns the invoiceLineSpecialHandlingAmountCurrency.
360       */
361      public String getInvoiceLineSpecialHandlingAmountCurrency() {
362        return invoiceLineSpecialHandlingAmountCurrency;
363      }
364      /**
365       * @param invoiceLineSpecialHandlingAmountCurrency The invoiceLineSpecialHandlingAmountCurrency to set.
366       */
367      public void setInvoiceLineSpecialHandlingAmountCurrency(
368          String invoiceLineSpecialHandlingAmountCurrency) {
369        this.invoiceLineSpecialHandlingAmountCurrency = invoiceLineSpecialHandlingAmountCurrency;
370      }
371      /**
372       * @return Returns the invoiceShippingContacts.
373       */
374      public List getInvoiceShippingContacts() {
375        return invoiceShippingContacts;
376      }
377      /**
378       * @param invoiceShippingContacts The invoiceShippingContacts to set.
379       */
380      public void setInvoiceShippingContacts(List invoiceShippingContacts) {
381        this.invoiceShippingContacts = invoiceShippingContacts;
382      }
383      
384      public void addInvoiceShippingContacts(ElectronicInvoiceContact contact) {
385          invoiceShippingContacts.add(contact);
386      }
387      
388      /**
389       * @return Returns the quantity.
390       */
391      public String getQuantity() {
392        return quantity;
393      }
394      /**
395       * @param quantity The quantity to set.
396       */
397      public void setQuantity(String quantity) {
398        this.quantity = quantity;
399      }
400      /**
401       * @return Returns the referenceCountryCode.
402       */
403      public String getReferenceCountryCode() {
404        return referenceCountryCode;
405      }
406      /**
407       * @param referenceCountryCode The referenceCountryCode to set.
408       */
409      public void setReferenceCountryCode(String referenceCountryCode) {
410        this.referenceCountryCode = referenceCountryCode;
411      }
412      /**
413       * @return Returns the referenceCountryName.
414       */
415      public String getReferenceCountryName() {
416        return referenceCountryName;
417      }
418      /**
419       * @param referenceCountryName The referenceCountryName to set.
420       */
421      public void setReferenceCountryName(String referenceCountryName) {
422        this.referenceCountryName = referenceCountryName;
423      }
424      /**
425       * @return Returns the referenceDescription.
426       */
427      public String getReferenceDescription() {
428        return referenceDescription;
429      }
430      /**
431       * @param referenceDescription The referenceDescription to set.
432       */
433      public void setReferenceDescription(String referenceDescription) {
434        this.referenceDescription = referenceDescription;
435      }
436      /**
437       * @return Returns the referenceItemIDSupplierPartAuxID.
438       */
439      public String getReferenceItemIDSupplierPartAuxID() {
440        return referenceItemIDSupplierPartAuxID;
441      }
442      /**
443       * @param referenceItemIDSupplierPartAuxID The referenceItemIDSupplierPartAuxID to set.
444       */
445      public void setReferenceItemIDSupplierPartAuxID(String referenceItemIDSupplierPartAuxID) {
446        this.referenceItemIDSupplierPartAuxID = referenceItemIDSupplierPartAuxID;
447      }
448      /**
449       * @return Returns the referenceItemIDSupplierPartID.
450       */
451      public String getReferenceItemIDSupplierPartID() {
452        return referenceItemIDSupplierPartID;
453      }
454      /**
455       * @param referenceItemIDSupplierPartID The referenceItemIDSupplierPartID to set.
456       */
457      public void setReferenceItemIDSupplierPartID(String referenceItemIDSupplierPartID) {
458        this.referenceItemIDSupplierPartID = referenceItemIDSupplierPartID;
459      }
460      /**
461       * @return Returns the referenceLineNumber.
462       */
463      public String getReferenceLineNumber() {
464        return referenceLineNumber;
465      }
466      /**
467       * @param referenceLineNumber The referenceLineNumber to set.
468       */
469      public void setReferenceLineNumber(String referenceLineNumber) {
470        this.referenceLineNumber = referenceLineNumber;
471      }
472      /**
473       * @return Returns the referenceManufacturerName.
474       */
475      public String getReferenceManufacturerName() {
476        return referenceManufacturerName;
477      }
478      /**
479       * @param referenceManufacturerName The referenceManufacturerName to set.
480       */
481      public void setReferenceManufacturerName(String referenceManufacturerName) {
482        this.referenceManufacturerName = referenceManufacturerName;
483      }
484      /**
485       * @return Returns the referenceManufacturerPartID.
486       */
487      public String getReferenceManufacturerPartID() {
488        return referenceManufacturerPartID;
489      }
490      /**
491       * @param referenceManufacturerPartID The referenceManufacturerPartID to set.
492       */
493      public void setReferenceManufacturerPartID(String referenceManufacturerPartID) {
494        this.referenceManufacturerPartID = referenceManufacturerPartID;
495      }
496      /**
497       * @return Returns the referenceSerialNumber.
498       */
499      public String getReferenceSerialNumber() {
500        return referenceSerialNumber;
501      }
502      /**
503       * @param referenceSerialNumber The referenceSerialNumber to set.
504       */
505      public void setReferenceSerialNumber(String referenceSerialNumber) {
506        this.referenceSerialNumber = referenceSerialNumber;
507      }
508      /**
509       * @return Returns the referenceSerialNumbers.
510       */
511      public List getReferenceSerialNumbers() {
512        return referenceSerialNumbers;
513      }
514      /**
515       * @param referenceSerialNumbers The referenceSerialNumbers to set.
516       */
517      public void setReferenceSerialNumbers(List referenceSerialNumbers) {
518        this.referenceSerialNumbers = referenceSerialNumbers;
519      }
520      /**
521       * @return Returns the shippingDate.
522       */
523      public Date getShippingDate() {
524        return shippingDate;
525      }
526      /**
527       * @param shippingDate The shippingDate to set.
528       */
529      public void setShippingDate(Date shippingDate) {
530        this.shippingDate = shippingDate;
531      }
532      /**
533       * @return Returns the subtotalAmount.
534       */
535      public String getSubTotalAmount() {
536        return subTotalAmount;
537      }
538      /**
539       * @param subtotalAmount The subtotalAmount to set.
540       */
541      public void setSubTotalAmount(String subTotalAmount) {
542        this.subTotalAmount = subTotalAmount;
543      }
544      /**
545       * @return Returns the subtotalAmountCurrency.
546       */
547      public String getSubTotalAmountCurrency() {
548        return subTotalAmountCurrency;
549      }
550      /**
551       * @param subtotalAmountCurrency The subtotalAmountCurrency to set.
552       */
553      public void setSubTotalAmountCurrency(String subTotalAmountCurrency) {
554        this.subTotalAmountCurrency = subTotalAmountCurrency;
555      }
556      /**
557       * @return Returns the taxAmount.
558       */
559      public String getTaxAmount() {
560        return taxAmount;
561      }
562      /**
563       * @param taxAmount The taxAmount to set.
564       */
565      public void setTaxAmount(String taxAmount) {
566        this.taxAmount = taxAmount;
567      }
568      /**
569       * @return Returns the taxAmountCurrency.
570       */
571      public String getTaxAmountCurrency() {
572        return taxAmountCurrency;
573      }
574      /**
575       * @param taxAmountCurrency The taxAmountCurrency to set.
576       */
577      public void setTaxAmountCurrency(String taxAmountCurrency) {
578        this.taxAmountCurrency = taxAmountCurrency;
579      }
580      /**
581       * @return Returns the taxDescription.
582       */
583      public String getTaxDescription() {
584        return taxDescription;
585      }
586      /**
587       * @param taxDescription The taxDescription to set.
588       */
589      public void setTaxDescription(String taxDescription) {
590        this.taxDescription = taxDescription;
591      }
592      /**
593       * @return Returns the unitOfMeasure.
594       */
595      public String getUnitOfMeasure() {
596        return unitOfMeasure;
597      }
598      /**
599       * @param unitOfMeasure The unitOfMeasure to set.
600       */
601      public void setUnitOfMeasure(String unitOfMeasure) {
602        this.unitOfMeasure = unitOfMeasure;
603      }
604      /**
605       * @return Returns the unitPrice.
606       */
607      public String getUnitPrice() {
608        return unitPrice;
609      }
610      /**
611       * @param unitPrice The unitPrice to set.
612       */
613      public void setUnitPrice(String unitPrice) {
614        this.unitPrice = unitPrice;
615      }
616      /**
617       * @return Returns the unitPriceCurrency.
618       */
619      public String getUnitPriceCurrency() {
620        return unitPriceCurrency;
621      }
622      /**
623       * @param unitPriceCurrency The unitPriceCurrency to set.
624       */
625      public void setUnitPriceCurrency(String unitPriceCurrency) {
626        this.unitPriceCurrency = unitPriceCurrency;
627      }
628    
629        public ElectronicInvoiceRejectDocument getElectronicInvoiceRejectDocument() {
630            return electronicInvoiceRejectDocument;
631        }
632        
633        public void setElectronicInvoiceRejectDocument(ElectronicInvoiceRejectDocument electronicInvoiceRejectDocument) {
634            this.electronicInvoiceRejectDocument = electronicInvoiceRejectDocument;
635        }
636        
637        
638        public void addReferenceSerialNumber(String referenceSerialNumber) {
639            this.referenceSerialNumbers.add(referenceSerialNumber);
640        }
641        
642        public String[] getReferenceSerialNumbersAsArray() {
643            if (referenceSerialNumbers.size() > 0){
644                String[] serialNumbers = new String[referenceSerialNumbers.size()];
645                referenceSerialNumbers.toArray(serialNumbers);
646                return serialNumbers;
647            }
648            return null;
649        }
650        
651        public void addExtrinsic(CxmlExtrinsic extrinsic) {
652            this.extrinsic.add(extrinsic);
653        }
654        
655        public CxmlExtrinsic[] getExtrinsicAsArray() {
656            if (extrinsic.size() > 0){
657                CxmlExtrinsic[] extrinsics = new CxmlExtrinsic[extrinsic.size()];
658                extrinsic.toArray(extrinsics);
659                return extrinsics;
660            }
661            return null;
662        }
663    
664        public void addComments(String comment){
665            this.comments.add(comment);
666        }
667        
668        public String getInvoiceLineDiscountPercentageRate() {
669            return invoiceLineDiscountPercentageRate;
670        }
671    
672        public void setInvoiceLineDiscountPercentageRate(String invoiceLineDiscountPercentageRate) {
673            this.invoiceLineDiscountPercentageRate = invoiceLineDiscountPercentageRate;
674        }
675        
676        public String toString(){
677            
678            ToStringBuilder toString = new ToStringBuilder(this);
679            
680            toString.append("invoiceLineNumber",getInvoiceLineNumber());
681            toString.append("quantity",getQuantity());
682            toString.append("catalogNumber",getCatalogNumber());
683            toString.append("unitOfMeasure",getUnitOfMeasure());
684            toString.append("unitPrice",getUnitPrice());
685            toString.append("unitPriceCurrency",getUnitPriceCurrency());
686            toString.append("subTotalAmount",getSubTotalAmount());
687            toString.append("subTotalAmountCurrency",getSubTotalAmountCurrency());
688            toString.append("invoiceLineSpecialHandlingAmount",getInvoiceLineSpecialHandlingAmount());
689            toString.append("invoiceLineSpecialHandlingAmountCurrency",getInvoiceLineSpecialHandlingAmountCurrency());
690            toString.append("invoiceLineShippingAmount",getInvoiceLineShippingAmount());
691            toString.append("invoiceLineShippingAmountCurrency",getInvoiceLineShippingAmountCurrency());
692            toString.append("taxAmount",getTaxAmount());
693            toString.append("taxAmountCurrency",getTaxAmountCurrency());
694            toString.append("taxDescription",getTaxDescription());
695            toString.append("invoiceLineGrossAmount",getInvoiceLineGrossAmount());
696            toString.append("invoiceLineGrossAmountCurrency",getInvoiceLineGrossAmountCurrency());
697            toString.append("invoiceLineDiscountAmount",getInvoiceLineDiscountAmount());
698            toString.append("invoiceLineDiscountAmountCurrency",getInvoiceLineDiscountAmountCurrency());
699            toString.append("invoiceLineNetAmount",getInvoiceLineNetAmount());
700            toString.append("invoiceLineNetAmountCurrency",getInvoiceLineNetAmountCurrency());
701            toString.append("shippingDateString",getShippingDateString());
702            
703            toString.append("referenceLineNumber",getReferenceLineNumber());
704            toString.append("referenceSerialNumber",getReferenceSerialNumber());
705            toString.append("referenceSerialNumbersList",getReferenceSerialNumbers());
706            toString.append("referenceItemIDSupplierPartID",getReferenceItemIDSupplierPartID());
707            toString.append("referenceItemIDSupplierPartAuxID",getReferenceItemIDSupplierPartAuxID());
708            toString.append("referenceDescription",getReferenceDescription());
709            toString.append("referenceManufacturerPartID",getReferenceManufacturerPartID());
710            toString.append("referenceManufacturerName",getReferenceManufacturerName());
711            toString.append("referenceCountryCode",getReferenceCountryCode());
712            toString.append("referenceCountryName",getReferenceCountryName());
713            
714            toString.append("invoiceShippingContacts",getInvoiceShippingContacts());
715            toString.append("comments",getComments());
716            toString.append("extrinsic",getExtrinsic());
717            
718            return toString.toString();
719            
720        }
721    
722       
723      
724    }