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 Mar 9, 2005
019     *
020     */
021    package org.kuali.kfs.module.purap.businessobject;
022    
023    import java.math.BigDecimal;
024    import java.util.ArrayList;
025    import java.util.Date;
026    import java.util.Iterator;
027    import java.util.List;
028    
029    import org.apache.commons.lang.builder.ToStringBuilder;
030    import org.kuali.kfs.module.purap.service.ElectronicInvoiceMappingService;
031    import org.kuali.kfs.module.purap.util.ElectronicInvoiceUtils;
032    import org.kuali.kfs.module.purap.util.cxml.CxmlHeader;
033    
034    public class ElectronicInvoice {
035        private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(ElectronicInvoice.class);
036    
037        private static BigDecimal zero = new BigDecimal(0.00);
038    
039        public static String INVOICE_AMOUNT_TYPE_CODE_ITEM = "ITEM";
040        public static String INVOICE_AMOUNT_TYPE_CODE_TAX = "TAX";
041        public static String INVOICE_AMOUNT_TYPE_CODE_SPECIAL_HANDLING = "SPHD";
042        public static String INVOICE_AMOUNT_TYPE_CODE_SHIPPING = "SHIP";
043        public static String INVOICE_AMOUNT_TYPE_CODE_DISCOUNT = "DISC";
044        public static String INVOICE_AMOUNT_TYPE_CODE_DEPOSIT = "DPST";
045        public static String INVOICE_AMOUNT_TYPE_CODE_DUE = "DUE";
046        public static String INVOICE_AMOUNT_TYPE_CODE_EXMT = "EXMT";
047    
048        public static boolean FILE_REJECTED = true;
049        public static boolean FILE_NOT_REJECTED = false;
050        public static boolean FILE_DOES_CONTAIN_REJECTS = true;
051        public static boolean FILE_DOES_NOT_CONTAIN_REJECTS = false;
052    
053        private CxmlHeader cxmlHeader;
054        private String customerNumber;
055    
056        private String fileName;
057        private String dunsNumber;
058        private Integer vendorHeaderID = null;
059        private Integer vendorDetailID = null;
060        private String vendorName = null;
061        private boolean fileRejected = FILE_NOT_REJECTED;
062        private boolean containsRejects = FILE_DOES_NOT_CONTAIN_REJECTS;
063        private List fileRejectReasons = new ArrayList();
064    
065        private ElectronicInvoiceDetailRequestHeader invoiceDetailRequestHeader;
066        private List invoiceDetailOrders = new ArrayList();
067        private ElectronicInvoiceDetailRequestSummary invoiceDetailRequestSummary;
068    
069        /**
070         * Newly Added
071         */
072        private String version = "1.2.019";
073        private String timestamp;
074        private String payloadID;
075        private String locale;
076        private String deploymentMode = "production";
077    
078        /**
079       * 
080       */
081        public ElectronicInvoice() {
082            super();
083        }
084    
085        private boolean containsLineLevelAmounts() {
086            return invoiceDetailRequestHeader.isShippingInLine() || invoiceDetailRequestHeader.isSpecialHandlingInLine() || invoiceDetailRequestHeader.isTaxInLine() || invoiceDetailRequestHeader.isDiscountInLine();
087        }
088    
089        public void addFileRejectReasonToList(ElectronicInvoiceRejectReason reason) {
090            this.fileRejectReasons.add(reason);
091        }
092    
093        /*
094         * ADDRESS METHODS
095         */
096        public ElectronicInvoicePostalAddress getCxmlPostalAddress(ElectronicInvoiceOrder eio, String roleID, String addressName) {
097            if (this.invoiceDetailRequestHeader.isShippingInLine()) {
098                return eio.getCxmlPostalAddressByRoleID(roleID, addressName);
099            }
100            else {
101                return this.invoiceDetailRequestHeader.getCxmlPostalAddressByRoleID(roleID, addressName);
102            }
103        }
104    
105        public ElectronicInvoiceContact getCxmlContact(ElectronicInvoiceOrder eio, String roleID) {
106            if (this.invoiceDetailRequestHeader.isShippingInLine()) {
107                return eio.getCxmlContactByRoleID(roleID);
108            }
109            else {
110                return this.invoiceDetailRequestHeader.getCxmlContactByRoleID(roleID);
111            }
112        }
113    
114        public String getShippingDateDisplayText(ElectronicInvoiceOrder eio) {
115            Date date = null;
116            String dateString = "";
117            if (this.invoiceDetailRequestHeader.isShippingInLine()) {
118                date = eio.getInvoiceShippingDate();
119                dateString = eio.getInvoiceShippingDateString();
120            }
121            else {
122                date = this.invoiceDetailRequestHeader.getShippingDate();
123                dateString = this.invoiceDetailRequestHeader.getShippingDateString();
124            }
125            if (date != null) {
126                return ElectronicInvoiceUtils.getDateDisplayText(date);
127            }
128            else {
129                return dateString;
130            }
131        }
132    
133        public String getMasterAgreementIDInfoDateDisplayText(ElectronicInvoiceOrder eio) {
134            Date date = eio.getMasterAgreementIDInfoDate();
135            if (date != null) {
136                return ElectronicInvoiceUtils.getDateDisplayText(date);
137            }
138            else {
139                return eio.getMasterAgreementIDInfoDateString();
140            }
141        }
142    
143        public String getMasterAgreementReferenceDateDisplayText(ElectronicInvoiceOrder eio) {
144            Date date = eio.getMasterAgreementReferenceDate();
145            if (date != null) {
146                return ElectronicInvoiceUtils.getDateDisplayText(date);
147            }
148            else {
149                return eio.getMasterAgreementReferenceDateString();
150            }
151        }
152    
153        public String getOrderIDInfoDateDisplayText(ElectronicInvoiceOrder eio) {
154            Date date = eio.getOrderIDInfoDate();
155            if (date != null) {
156                return ElectronicInvoiceUtils.getDateDisplayText(date);
157            }
158            else {
159                return eio.getOrderIDInfoDateString();
160            }
161        }
162    
163        public String getInvoiceDateDisplayText() {
164            Date date = this.invoiceDetailRequestHeader.getInvoiceDate();
165            if (date != null) {
166                return ElectronicInvoiceUtils.getDateDisplayText(date);
167            }
168            else {
169                return this.invoiceDetailRequestHeader.getInvoiceDateString();
170            }
171        }
172    
173        /*
174         * DESCRIPTION METHODS
175         */
176        public String getInvoiceShippingDescription(ElectronicInvoiceOrder eio) {
177            if (this.invoiceDetailRequestHeader.isShippingInLine()) {
178                return eio.getInvoiceShippingDescription();
179            }
180            else {
181                return invoiceDetailRequestSummary.getShippingDescription();
182            }
183        }
184    
185        public String getInvoiceTaxDescription(ElectronicInvoiceOrder eio) {
186            if (this.invoiceDetailRequestHeader.isTaxInLine()) {
187                return eio.getInvoiceTaxDescription();
188            }
189            else {
190                return invoiceDetailRequestSummary.getTaxDescription();
191            }
192        }
193    
194        public String getInvoiceSpecialHandlingDescription(ElectronicInvoiceOrder eio) {
195           
196            if (this.invoiceDetailRequestHeader.isSpecialHandlingInLine()) {
197                return eio.getInvoiceSpecialHandlingDescription();
198                
199            }else{
200                return invoiceDetailRequestSummary.getSpecialHandlingAmountDescription();
201            }
202        }
203    
204        /*
205         * AMOUNT METHODS
206         */
207        public BigDecimal getFileTotalAmountForInLineItems(String invoiceLineItemType) {
208            BigDecimal total = zero;
209            for (Iterator orderIter = this.invoiceDetailOrders.iterator(); orderIter.hasNext();) {
210                ElectronicInvoiceOrder eio = (ElectronicInvoiceOrder) orderIter.next();
211                if (INVOICE_AMOUNT_TYPE_CODE_TAX.equalsIgnoreCase(invoiceLineItemType)) {
212                    total = total.add(eio.getInvoiceTaxAmount());
213                }
214                else if (INVOICE_AMOUNT_TYPE_CODE_SPECIAL_HANDLING.equalsIgnoreCase(invoiceLineItemType)) {
215                    total = total.add(eio.getInvoiceSpecialHandlingAmount());
216                }
217                else if (INVOICE_AMOUNT_TYPE_CODE_SHIPPING.equalsIgnoreCase(invoiceLineItemType)) {
218                    total = total.add(eio.getInvoiceShippingAmount());
219                }
220                else if (INVOICE_AMOUNT_TYPE_CODE_DISCOUNT.equalsIgnoreCase(invoiceLineItemType)) {
221                    total = total.add(eio.getInvoiceDiscountAmount());
222                }
223            }
224            return total;
225        }
226    
227        public BigDecimal getInvoiceSubTotalAmount(ElectronicInvoiceOrder eio) {
228            if (this.containsLineLevelAmounts()) {
229                return eio.getInvoiceSubTotalAmount();
230            }
231            else {
232                return invoiceDetailRequestSummary.getInvoiceSubTotalAmount();
233            }
234        }
235    
236        public BigDecimal getInvoiceTaxAmount(ElectronicInvoiceOrder eio) {
237            if (this.invoiceDetailRequestHeader.isTaxInLine()) {
238                return eio.getInvoiceTaxAmount();
239            }
240            else {
241                return invoiceDetailRequestSummary.getInvoiceTaxAmount();
242            }
243        }
244    
245        public BigDecimal getInvoiceSpecialHandlingAmount(ElectronicInvoiceOrder eio) {
246            if (this.invoiceDetailRequestHeader.isSpecialHandlingInLine()) {
247                return eio.getInvoiceSpecialHandlingAmount();
248            }
249            else {
250                return invoiceDetailRequestSummary.getInvoiceSpecialHandlingAmount();
251            }
252        }
253    
254        public BigDecimal getInvoiceShippingAmount(ElectronicInvoiceOrder eio) {
255            if (this.invoiceDetailRequestHeader.isShippingInLine()) {
256                return eio.getInvoiceShippingAmount();
257            }
258            else {
259                return invoiceDetailRequestSummary.getInvoiceShippingAmount();
260            }
261        }
262    
263        public BigDecimal getInvoiceGrossAmount(ElectronicInvoiceOrder eio) {
264            if (this.containsLineLevelAmounts()) {
265                return eio.getInvoiceGrossAmount();
266            }
267            else {
268                return invoiceDetailRequestSummary.getInvoiceGrossAmount();
269            }
270        }
271    
272        public BigDecimal getInvoiceDiscountAmount(ElectronicInvoiceOrder eio) {
273            if (this.invoiceDetailRequestHeader.isDiscountInLine()) {
274                return eio.getInvoiceDiscountAmount();
275            }
276            else {
277                return invoiceDetailRequestSummary.getInvoiceDiscountAmount();
278            }
279        }
280    
281        public BigDecimal getInvoiceNetAmount(ElectronicInvoiceOrder eio) {
282            if (this.containsLineLevelAmounts()) {
283                return eio.getInvoiceNetAmount();
284            }
285            else {
286                return invoiceDetailRequestSummary.getInvoiceNetAmount();
287            }
288        }
289    
290        public BigDecimal getInvoiceDepositAmount() {
291            return invoiceDetailRequestSummary.getInvoiceDepositAmount();
292        }
293    
294        public BigDecimal getInvoiceDueAmount() {
295            return invoiceDetailRequestSummary.getInvoiceDueAmount();
296        }
297    
298        /*
299         * CURRENCY METHODS
300         */
301        public String getCodeOfLineItemThatContainsInvalidCurrency(String invoiceLineItemType) {
302            for (Iterator orderIter = this.invoiceDetailOrders.iterator(); orderIter.hasNext();) {
303                ElectronicInvoiceOrder eio = (ElectronicInvoiceOrder) orderIter.next();
304                for (Iterator itemIter = eio.getInvoiceItems().iterator(); itemIter.hasNext();) {
305                    ElectronicInvoiceItem eii = (ElectronicInvoiceItem) itemIter.next();
306                    if (INVOICE_AMOUNT_TYPE_CODE_TAX.equalsIgnoreCase(invoiceLineItemType)) {
307                        if (!(this.isCodeValidCurrency(eii.getTaxAmountCurrency()))) {
308                            return eii.getTaxAmountCurrency();
309                        }
310                    }
311                    else if (INVOICE_AMOUNT_TYPE_CODE_SPECIAL_HANDLING.equalsIgnoreCase(invoiceLineItemType)) {
312                        if (!(this.isCodeValidCurrency(eii.getInvoiceLineSpecialHandlingAmountCurrency()))) {
313                            return eii.getInvoiceLineSpecialHandlingAmountCurrency();
314                        }
315                    }
316                    else if (INVOICE_AMOUNT_TYPE_CODE_SHIPPING.equalsIgnoreCase(invoiceLineItemType)) {
317                        if (!(this.isCodeValidCurrency(eii.getInvoiceLineShippingAmountCurrency()))) {
318                            return eii.getInvoiceLineShippingAmountCurrency();
319                        }
320                    }
321                    else if (INVOICE_AMOUNT_TYPE_CODE_DISCOUNT.equalsIgnoreCase(invoiceLineItemType)) {
322                        if (!(this.isCodeValidCurrency(eii.getInvoiceLineDiscountAmountCurrency()))) {
323                            return eii.getInvoiceLineDiscountAmountCurrency();
324                        }
325                    }
326                }
327            }
328            return null;
329        }
330    
331        /**
332         * This method contains the mapping check for valid Currency Code(s)
333         */
334        public String checkCodeForValidCurrency(String code) {
335            if (!(this.isCodeValidCurrency(code))) {
336                return code;
337            }
338            else {
339                return null;
340            }
341        }
342    
343        /**
344         * This method contains the mapping check for valid Currency Code(s)
345         */
346        public boolean isCodeValidCurrency(String code) {
347            if (code != null) {
348                for (int i = 0; i < ElectronicInvoiceMappingService.CXML_VALID_CURRENCY_CODES.length; i++) {
349                    String validCode = ElectronicInvoiceMappingService.CXML_VALID_CURRENCY_CODES[i];
350                    if (code.equalsIgnoreCase(validCode)) {
351                        return true;
352                    }
353                }
354            }
355            return false;
356        }
357    
358        public String getInvoiceSubTotalCurrencyIfNotValid(ElectronicInvoiceOrder eio) {
359            if (this.containsLineLevelAmounts()) {
360                for (Iterator iter = eio.getInvoiceItems().iterator(); iter.hasNext();) {
361                    ElectronicInvoiceItem eii = (ElectronicInvoiceItem) iter.next();
362                    String currentCode = this.checkCodeForValidCurrency(eii.getSubTotalAmountCurrency());
363                    if (currentCode != null) {
364                        return currentCode;
365                    }
366                }
367                return null;
368            }
369            else {
370                return this.checkCodeForValidCurrency(invoiceDetailRequestSummary.getSubTotalAmountCurrency());
371            }
372        }
373    
374        public String getInvoiceTaxCurrencyIfNotValid(ElectronicInvoiceOrder eio) {
375            if (this.invoiceDetailRequestHeader.isTaxInLine()) {
376                for (Iterator iter = eio.getInvoiceItems().iterator(); iter.hasNext();) {
377                    ElectronicInvoiceItem eii = (ElectronicInvoiceItem) iter.next();
378                    String currentCode = this.checkCodeForValidCurrency(eii.getTaxAmountCurrency());
379                    if (currentCode != null) {
380                        return currentCode;
381                    }
382                }
383                return null;
384            }
385            else {
386                return this.checkCodeForValidCurrency(invoiceDetailRequestSummary.getTaxAmountCurrency());
387            }
388        }
389    
390        public String getInvoiceSpecialHandlingCurrencyIfNotValid(ElectronicInvoiceOrder eio) {
391            if (this.invoiceDetailRequestHeader.isSpecialHandlingInLine()) {
392                for (Iterator iter = eio.getInvoiceItems().iterator(); iter.hasNext();) {
393                    ElectronicInvoiceItem eii = (ElectronicInvoiceItem) iter.next();
394                    String currentCode = this.checkCodeForValidCurrency(eii.getInvoiceLineSpecialHandlingAmountCurrency());
395                    if (currentCode != null) {
396                        return currentCode;
397                    }
398                }
399                return null;
400            }
401            else {
402                return this.checkCodeForValidCurrency(invoiceDetailRequestSummary.getSpecialHandlingAmountCurrency());
403            }
404        }
405    
406        public String getInvoiceShippingCurrencyIfNotValid(ElectronicInvoiceOrder eio) {
407            if (this.invoiceDetailRequestHeader.isShippingInLine()) {
408                for (Iterator iter = eio.getInvoiceItems().iterator(); iter.hasNext();) {
409                    ElectronicInvoiceItem eii = (ElectronicInvoiceItem) iter.next();
410                    String currentCode = this.checkCodeForValidCurrency(eii.getInvoiceLineShippingAmountCurrency());
411                    if (currentCode != null) {
412                        return currentCode;
413                    }
414                }
415                return null;
416            }
417            else {
418                return this.checkCodeForValidCurrency(invoiceDetailRequestSummary.getShippingAmountCurrency());
419            }
420        }
421    
422        public String getInvoiceGrossCurrencyIfNotValid(ElectronicInvoiceOrder eio) {
423            if (this.containsLineLevelAmounts()) {
424                for (Iterator iter = eio.getInvoiceItems().iterator(); iter.hasNext();) {
425                    ElectronicInvoiceItem eii = (ElectronicInvoiceItem) iter.next();
426                    String currentCode = this.checkCodeForValidCurrency(eii.getInvoiceLineGrossAmountCurrency());
427                    if (currentCode != null) {
428                        return currentCode;
429                    }
430                }
431                return null;
432            }
433            else {
434                return this.checkCodeForValidCurrency(invoiceDetailRequestSummary.getGrossAmountCurrency());
435            }
436        }
437    
438        public String getInvoiceDiscountCurrencyIfNotValid(ElectronicInvoiceOrder eio) {
439            if (this.invoiceDetailRequestHeader.isDiscountInLine()) {
440                for (Iterator iter = eio.getInvoiceItems().iterator(); iter.hasNext();) {
441                    ElectronicInvoiceItem eii = (ElectronicInvoiceItem) iter.next();
442                    String currentCode = this.checkCodeForValidCurrency(eii.getInvoiceLineDiscountAmountCurrency());
443                    if (currentCode != null) {
444                        return currentCode;
445                    }
446                }
447                return null;
448            }
449            else {
450                return this.checkCodeForValidCurrency(invoiceDetailRequestSummary.getDiscountAmountCurrency());
451            }
452        }
453    
454        public String getInvoiceNetCurrencyIfNotValid(ElectronicInvoiceOrder eio) {
455            if (this.containsLineLevelAmounts()) {
456                for (ElectronicInvoiceItem eii : eio.getInvoiceItems()) {
457                    String currentCode = this.checkCodeForValidCurrency(eii.getInvoiceLineNetAmountCurrency());
458                    if (currentCode != null) {
459                        return currentCode;
460                    }
461                }
462                return null;
463            }
464            else {
465                return this.checkCodeForValidCurrency(invoiceDetailRequestSummary.getNetAmountCurrency());
466            }
467        }
468    
469        public String getInvoiceDepositCurrencyIfNotValid() {
470            return this.checkCodeForValidCurrency(invoiceDetailRequestSummary.getDepositAmountCurrency());
471        }
472    
473        public String getInvoiceDueCurrencyIfNotValid() {
474            return this.checkCodeForValidCurrency(invoiceDetailRequestSummary.getDueAmountCurrency());
475        }
476    
477        /*
478         * GETTERS AND SETTERS
479         */
480    
481        /**
482         * @return Returns the containsRejects.
483         */
484        public boolean isContainsRejects() {
485            return containsRejects;
486        }
487    
488        /**
489         * @param containsRejects The containsRejects to set.
490         */
491        public void setContainsRejects(boolean containsRejects) {
492            this.containsRejects = containsRejects;
493        }
494    
495        /**
496         * @return Returns the customerNumber.
497         */
498        public String getCustomerNumber() {
499            return customerNumber;
500        }
501    
502        /**
503         * @param customerNumber The customerNumber to set.
504         */
505        public void setCustomerNumber(String customerNumber) {
506            this.customerNumber = customerNumber;
507        }
508    
509        /**
510         * @return Returns the cxmlHeader.
511         */
512        public CxmlHeader getCxmlHeader() {
513            return cxmlHeader;
514        }
515    
516        /**
517         * @param cxmlHeader The cxmlHeader to set.
518         */
519        public void setCxmlHeader(CxmlHeader cxmlHeader) {
520            this.cxmlHeader = cxmlHeader;
521        }
522    
523        /**
524         * @return Returns the dunsNumber.
525         */
526        public String getDunsNumber() {
527            return dunsNumber;
528        }
529    
530        /**
531         * @param dunsNumber The dunsNumber to set.
532         */
533        public void setDunsNumber(String dunsNumber) {
534            this.dunsNumber = dunsNumber;
535        }
536    
537        /**
538         * @return Returns the fileName.
539         */
540        public String getFileName() {
541            return fileName;
542        }
543    
544        /**
545         * @param fileName The fileName to set.
546         */
547        public void setFileName(String fileName) {
548            this.fileName = fileName;
549        }
550    
551        /**
552         * @return Returns the fileRejected.
553         */
554        public boolean isFileRejected() {
555            return fileRejected;
556        }
557    
558        /**
559         * @param fileRejected The fileRejected to set.
560         */
561        public void setFileRejected(boolean fileRejected) {
562            this.fileRejected = fileRejected;
563        }
564    
565        /**
566         * @return Returns the fileRejectReasons.
567         */
568        public List<ElectronicInvoiceRejectReason> getFileRejectReasons() {
569            return fileRejectReasons;
570        }
571    
572        /**
573         * @param fileRejectReasons The fileRejectReasons to set.
574         */
575        public void setFileRejectReasons(List<ElectronicInvoiceRejectReason> fileRejectReasons) {
576            this.fileRejectReasons = fileRejectReasons;
577        }
578    
579        /**
580         * @return Returns the invoiceDetailOrders.
581         */
582        public List<ElectronicInvoiceOrder> getInvoiceDetailOrders() {
583            return invoiceDetailOrders;
584        }
585    
586        /**
587         * @param invoiceDetailOrders The invoiceDetailOrders to set.
588         */
589        public void setInvoiceDetailOrders(List<ElectronicInvoiceOrder> invoiceDetailOrders) {
590            this.invoiceDetailOrders = invoiceDetailOrders;
591        }
592    
593        /**
594         * @return Returns the invoiceDetailRequestHeader.
595         */
596        public ElectronicInvoiceDetailRequestHeader getInvoiceDetailRequestHeader() {
597            return invoiceDetailRequestHeader;
598        }
599    
600        /**
601         * @param invoiceDetailRequestHeader The invoiceDetailRequestHeader to set.
602         */
603        public void setInvoiceDetailRequestHeader(ElectronicInvoiceDetailRequestHeader invoiceDetailRequestHeader) {
604            this.invoiceDetailRequestHeader = invoiceDetailRequestHeader;
605        }
606    
607        /**
608         * @return Returns the invoiceDetailRequestSummary.
609         */
610        public ElectronicInvoiceDetailRequestSummary getInvoiceDetailRequestSummary() {
611            return invoiceDetailRequestSummary;
612        }
613    
614        /**
615         * @param invoiceDetailRequestSummary The invoiceDetailRequestSummary to set.
616         */
617        public void setInvoiceDetailRequestSummary(ElectronicInvoiceDetailRequestSummary invoiceDetailRequestSummary) {
618            this.invoiceDetailRequestSummary = invoiceDetailRequestSummary;
619        }
620    
621        /**
622         * @return Returns the vendorDetailID.
623         */
624        public Integer getVendorDetailID() {
625            return vendorDetailID;
626        }
627    
628        /**
629         * @param vendorDetailID The vendorDetailID to set.
630         */
631        public void setVendorDetailID(Integer vendorDetailID) {
632            this.vendorDetailID = vendorDetailID;
633        }
634    
635        /**
636         * @return Returns the vendorHeaderID.
637         */
638        public Integer getVendorHeaderID() {
639            return vendorHeaderID;
640        }
641    
642        /**
643         * @param vendorHeaderID The vendorHeaderID to set.
644         */
645        public void setVendorHeaderID(Integer vendorHeaderID) {
646            this.vendorHeaderID = vendorHeaderID;
647        }
648    
649        /**
650         * @return the vendorName
651         */
652        public String getVendorName() {
653            return vendorName;
654        }
655    
656        /**
657         * @param vendorName the vendorName to set
658         */
659        public void setVendorName(String vendorName) {
660            this.vendorName = vendorName;
661        }
662    
663        public String getPayloadID() {
664            return payloadID;
665        }
666    
667        public void setPayloadID(String payloadID) {
668            this.payloadID = payloadID;
669        }
670    
671        public String getTimestamp() {
672            return timestamp;
673        }
674    
675        public void setTimestamp(String timestamp) {
676            this.timestamp = timestamp;
677        }
678    
679        public String getVersion() {
680            return version;
681        }
682    
683        public void setVersion(String version) {
684            this.version = version;
685        }
686    
687        public String getLocale() {
688            return locale;
689        }
690    
691        public void setLocale(String locale) {
692            this.locale = locale;
693        }
694    
695        public void addInvoiceDetailOrder(ElectronicInvoiceOrder electronicInvoiceOrder) {
696            invoiceDetailOrders.add(electronicInvoiceOrder);
697        }
698    
699        public ElectronicInvoiceOrder[] getInvoiceDetailOrdersAsArray() {
700            if (invoiceDetailOrders.size() > 0) {
701                ElectronicInvoiceOrder[] tempOrders = new ElectronicInvoiceOrder[invoiceDetailOrders.size()];
702                invoiceDetailOrders.toArray(tempOrders);
703                return tempOrders;
704            }
705            return null;
706        }
707    
708        public String getDeploymentMode() {
709            return deploymentMode;
710        }
711    
712        public void setDeploymentMode(String deploymentMode) {
713            this.deploymentMode = deploymentMode;
714        }
715    
716        public String toString() {
717            ToStringBuilder toString = new ToStringBuilder(this);
718            toString.append("version", getVersion());
719            toString.append("timestamp", getTimestamp());
720            toString.append("payloadID", getPayloadID());
721            toString.append("locale", getLocale());
722            toString.append("customerNumber", getCustomerNumber());
723            toString.append("fileName", getFileName());
724            toString.append("deploymentMode", getDeploymentMode());
725    
726            toString.append("dunsNumber", getDunsNumber());
727            toString.append("vendorHeaderID", getVendorHeaderID());
728            toString.append("vendorDetailID", getVendorDetailID());
729            toString.append("vendorName", getVendorName());
730            toString.append("cxmlHeader", getCxmlHeader());
731            toString.append("invoiceDetailRequestHeader", getInvoiceDetailRequestHeader());
732            toString.append("invoiceDetailOrders", getInvoiceDetailOrders());
733            toString.append("invoiceDetailRequestSummary", getInvoiceDetailRequestSummary());
734    
735    
736            return toString.toString();
737    
738        }
739    
740    
741    }