/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.module.purap.document; import java.math.BigDecimal; import java.sql.Timestamp; import java.text.MessageFormat; import java.text.ParseException; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.NumberUtils; import org.kuali.kfs.module.purap.PurapParameterConstants; import org.kuali.kfs.module.purap.businessobject.ElectronicInvoice; import org.kuali.kfs.module.purap.businessobject.ElectronicInvoiceContact; import org.kuali.kfs.module.purap.businessobject.ElectronicInvoiceItem; import org.kuali.kfs.module.purap.businessobject.ElectronicInvoiceLoadSummary; import org.kuali.kfs.module.purap.businessobject.ElectronicInvoiceOrder; import org.kuali.kfs.module.purap.businessobject.ElectronicInvoicePostalAddress; import org.kuali.kfs.module.purap.businessobject.ElectronicInvoiceRejectItem; import org.kuali.kfs.module.purap.businessobject.ElectronicInvoiceRejectReason; import org.kuali.kfs.module.purap.businessobject.PurchaseOrderView; import org.kuali.kfs.module.purap.document.service.PurchaseOrderService; import org.kuali.kfs.module.purap.service.ElectronicInvoiceMappingService; import org.kuali.kfs.module.purap.util.ElectronicInvoiceUtils; import org.kuali.kfs.module.purap.util.PurApRelatedViews; import org.kuali.kfs.module.purap.util.PurapSearchUtils; import org.kuali.kfs.sys.KFSConstants.AdHocPaymentIndicator; import org.kuali.kfs.sys.ObjectUtil; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.kfs.sys.document.FinancialSystemTransactionalDocumentBase; import org.kuali.kfs.sys.service.impl.KfsParameterConstants; import org.kuali.kfs.vnd.businessobject.CampusParameter; import org.kuali.kfs.vnd.businessobject.VendorDetail; import org.kuali.kfs.vnd.document.service.VendorService; import org.kuali.rice.core.api.datetime.DateTimeService; import org.kuali.rice.core.api.util.type.KualiDecimal; import org.kuali.rice.coreservice.framework.parameter.ParameterService; import org.kuali.rice.kew.framework.postprocessor.DocumentRouteStatusChange; import org.kuali.rice.krad.bo.Note; import org.kuali.rice.krad.document.SessionDocument; import org.kuali.rice.krad.util.NoteType; import org.kuali.rice.krad.util.ObjectUtils; public class ElectronicInvoiceRejectDocument extends FinancialSystemTransactionalDocumentBase implements SessionDocument { protected static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(ElectronicInvoiceRejectDocument.class); protected static BigDecimal zero = new BigDecimal(0); // NOT NULL FIELDS protected Integer purapDocumentIdentifier; protected Integer accountsPayablePurchasingDocumentLinkIdentifier; protected Integer invoiceLoadSummaryIdentifier; protected Timestamp invoiceProcessTimestamp; protected Boolean invoiceFileHeaderTypeIndicator = Boolean.FALSE; protected Boolean invoiceFileInformationOnlyIndicator = Boolean.FALSE; protected Boolean invoiceFileTaxInLineIndicator = Boolean.FALSE; protected Boolean invoiceFileSpecialHandlingInLineIndicator = Boolean.FALSE; protected Boolean invoiceFileShippingInLineIndicator = Boolean.FALSE; protected Boolean invoiceFileDiscountInLineIndicator = Boolean.FALSE; protected String invoiceFileName; protected String vendorDunsNumber; protected Integer vendorHeaderGeneratedIdentifier; protected Integer vendorDetailAssignedIdentifier; protected String invoiceFileDate; protected String invoiceFileNumber; protected String invoiceFilePurposeIdentifier; protected String invoiceFileOperationIdentifier; protected String invoiceFileDeploymentModeValue; protected String invoiceOrderReferenceOrderIdentifier; protected String invoiceOrderReferenceDocumentReferencePayloadIdentifier; protected String invoiceOrderReferenceDocumentReferenceText; protected String invoiceOrderMasterAgreementReferenceIdentifier; protected String invoiceOrderMasterAgreementReferenceDate; protected String invoiceOrderMasterAgreementInformationIdentifier; protected String invoiceOrderMasterAgreementInformationDate; protected String invoiceOrderPurchaseOrderIdentifier; protected String invoiceOrderPurchaseOrderDate; protected String invoiceOrderSupplierOrderInformationIdentifier; protected String invoiceShipDate; protected String invoiceShipToAddressName; protected String invoiceShipToAddressType; protected String invoiceShipToAddressLine1; protected String invoiceShipToAddressLine2; protected String invoiceShipToAddressLine3; protected String invoiceShipToAddressCityName; protected String invoiceShipToAddressStateCode; protected String invoiceShipToAddressPostalCode; protected String invoiceShipToAddressCountryCode; protected String invoiceShipToAddressCountryName; protected String invoiceBillToAddressName; protected String invoiceBillToAddressType; protected String invoiceBillToAddressLine1; protected String invoiceBillToAddressLine2; protected String invoiceBillToAddressLine3; protected String invoiceBillToAddressCityName; protected String invoiceBillToAddressStateCode; protected String invoiceBillToAddressPostalCode; protected String invoiceBillToAddressCountryCode; protected String invoiceBillToAddressCountryName; protected String invoiceRemitToAddressName; protected String invoiceRemitToAddressType; protected String invoiceRemitToAddressLine1; protected String invoiceRemitToAddressLine2; protected String invoiceRemitToAddressLine3; protected String invoiceRemitToAddressCityName; protected String invoiceRemitToAddressStateCode; protected String invoiceRemitToAddressPostalCode; protected String invoiceRemitToAddressCountryCode; protected String invoiceRemitToAddressCountryName; protected Integer paymentRequestIdentifier; protected String invoiceCustomerNumber; protected String invoicePurchaseOrderNumber; protected Integer purchaseOrderIdentifier; protected String purchaseOrderDeliveryCampusCode; protected String invoiceItemSubTotalCurrencyCode; protected String invoiceItemSpecialHandlingCurrencyCode; protected String invoiceItemSpecialHandlingDescription; protected String invoiceItemShippingCurrencyCode; protected String invoiceItemShippingDescription; protected String invoiceItemTaxCurrencyCode; protected String invoiceItemTaxDescription; protected String invoiceItemGrossCurrencyCode; protected String invoiceItemDiscountCurrencyCode; protected String invoiceItemNetCurrencyCode; protected BigDecimal invoiceItemSubTotalAmount; protected BigDecimal invoiceItemSpecialHandlingAmount; protected BigDecimal invoiceItemShippingAmount; protected BigDecimal invoiceItemTaxAmount; protected BigDecimal invoiceItemGrossAmount; protected BigDecimal invoiceItemDiscountAmount; protected BigDecimal invoiceItemNetAmount; protected boolean invoiceNumberAcceptIndicator = false; protected boolean invoiceResearchIndicator = false; protected Timestamp invoiceFileTimeStampForSearch; protected Timestamp accountsPayableApprovalTimestamp; protected transient PurApRelatedViews relatedViews; protected PurchaseOrderDocument currentPurchaseOrderDocument; protected VendorDetail vendorDetail; protected ElectronicInvoiceLoadSummary invoiceLoadSummary; protected List<ElectronicInvoiceRejectItem> invoiceRejectItems = new ArrayList<ElectronicInvoiceRejectItem>(); protected List<ElectronicInvoiceRejectReason> invoiceRejectReasons = new ArrayList<ElectronicInvoiceRejectReason>(); protected boolean isDocumentCreationInProgress = false; protected String vendorNumber; protected CampusParameter purchaseOrderDeliveryCampus; /** * */ public ElectronicInvoiceRejectDocument() { super(); } public void setFileLevelData(ElectronicInvoice ei) { DateTimeService dateTimeService = SpringContext.getBean(DateTimeService.class); this.invoiceProcessTimestamp = dateTimeService.getCurrentTimestamp(); this.invoiceFileHeaderTypeIndicator = new Boolean(ei.getInvoiceDetailRequestHeader().isHeaderInvoiceIndicator()); this.invoiceFileInformationOnlyIndicator = new Boolean(ei.getInvoiceDetailRequestHeader().isInformationOnly()); this.invoiceFileTaxInLineIndicator = new Boolean(ei.getInvoiceDetailRequestHeader().isTaxInLine()); this.invoiceFileSpecialHandlingInLineIndicator = new Boolean(ei.getInvoiceDetailRequestHeader().isSpecialHandlingInLine()); this.invoiceFileShippingInLineIndicator = new Boolean(ei.getInvoiceDetailRequestHeader().isShippingInLine()); this.invoiceFileDiscountInLineIndicator = new Boolean(ei.getInvoiceDetailRequestHeader().isDiscountInLine()); this.invoiceFileName = ei.getFileName(); this.vendorDunsNumber = ei.getDunsNumber(); this.vendorHeaderGeneratedIdentifier = ei.getVendorHeaderID(); this.vendorDetailAssignedIdentifier = ei.getVendorDetailID(); this.invoiceFileDate = ei.getInvoiceDateDisplayText(); this.invoiceFileNumber = ei.getInvoiceDetailRequestHeader().getInvoiceId(); this.invoiceFilePurposeIdentifier = ei.getInvoiceDetailRequestHeader().getPurpose(); this.invoiceFileOperationIdentifier = ei.getInvoiceDetailRequestHeader().getOperation(); this.invoiceFileDeploymentModeValue = ei.getDeploymentMode(); this.invoiceCustomerNumber = ei.getCustomerNumber(); for (ElectronicInvoiceRejectReason eirr : ei.getFileRejectReasons()) { ElectronicInvoiceRejectReason newReason = new ElectronicInvoiceRejectReason(); ObjectUtil.buildObject(newReason, eirr); this.invoiceRejectReasons.add(newReason); } } public void setInvoiceOrderLevelData(ElectronicInvoice ei, ElectronicInvoiceOrder eio) { this.invoiceOrderReferenceOrderIdentifier = eio.getOrderReferenceOrderID(); this.invoiceOrderReferenceDocumentReferencePayloadIdentifier = eio.getOrderReferenceDocumentRefPayloadID(); this.invoiceOrderReferenceDocumentReferenceText = eio.getOrderReferenceDocumentRef(); this.invoiceOrderMasterAgreementReferenceIdentifier = eio.getMasterAgreementReferenceID(); this.invoiceOrderMasterAgreementReferenceDate = ei.getMasterAgreementReferenceDateDisplayText(eio); this.invoiceOrderMasterAgreementInformationIdentifier = eio.getMasterAgreementIDInfoID(); this.invoiceOrderMasterAgreementInformationDate = ei.getMasterAgreementIDInfoDateDisplayText(eio); this.invoiceOrderPurchaseOrderIdentifier = eio.getOrderIDInfoID(); this.invoiceOrderPurchaseOrderDate = ei.getOrderIDInfoDateDisplayText(eio); this.invoiceOrderSupplierOrderInformationIdentifier = eio.getSupplierOrderInfoID(); this.invoiceShipDate = ei.getShippingDateDisplayText(eio); ElectronicInvoiceContact shipToContact = ei.getCxmlContact(eio, ElectronicInvoiceMappingService.CXML_ADDRESS_SHIP_TO_ROLE_ID); ElectronicInvoicePostalAddress shipToAddress = this.getCxmlPostalAddressByAddressName(shipToContact, ElectronicInvoiceMappingService.CXML_ADDRESS_SHIP_TO_NAME); // ElectronicInvoicePostalAddress shipToAddress = // ei.getCxmlPostalAddress(eio,ElectronicInvoiceMappingService.CXML_ADDRESS_SHIP_TO_ROLE_ID, // ElectronicInvoiceMappingService.CXML_ADDRESS_SHIP_TO_NAME); if (shipToAddress != null) { this.invoiceShipToAddressName = shipToContact.getName(); this.invoiceShipToAddressType = shipToAddress.getType(); this.invoiceShipToAddressLine1 = shipToAddress.getLine1(); this.invoiceShipToAddressLine2 = shipToAddress.getLine2(); this.invoiceShipToAddressLine3 = shipToAddress.getLine3(); this.invoiceShipToAddressCityName = shipToAddress.getCityName(); this.invoiceShipToAddressStateCode = shipToAddress.getStateCode(); this.invoiceShipToAddressPostalCode = shipToAddress.getPostalCode(); this.invoiceShipToAddressCountryCode = shipToAddress.getCountryCode(); this.invoiceShipToAddressCountryName = shipToAddress.getCountryName(); } ElectronicInvoiceContact billToContact = ei.getCxmlContact(eio, ElectronicInvoiceMappingService.CXML_ADDRESS_BILL_TO_ROLE_ID); ElectronicInvoicePostalAddress billToAddress = this.getCxmlPostalAddressByAddressName(billToContact, ElectronicInvoiceMappingService.CXML_ADDRESS_BILL_TO_NAME); // ElectronicInvoicePostalAddress billToAddress = // ei.getCxmlPostalAddress(eio,ElectronicInvoiceMappingService.CXML_ADDRESS_BILL_TO_ROLE_ID, // ElectronicInvoiceMappingService.CXML_ADDRESS_BILL_TO_NAME); if (billToAddress != null) { this.invoiceBillToAddressName = billToContact.getName(); this.invoiceBillToAddressType = billToAddress.getType(); this.invoiceBillToAddressLine1 = billToAddress.getLine1(); this.invoiceBillToAddressLine2 = billToAddress.getLine2(); this.invoiceBillToAddressLine3 = billToAddress.getLine3(); this.invoiceBillToAddressCityName = billToAddress.getCityName(); this.invoiceBillToAddressStateCode = billToAddress.getStateCode(); this.invoiceBillToAddressPostalCode = billToAddress.getPostalCode(); this.invoiceBillToAddressCountryCode = billToAddress.getCountryCode(); this.invoiceBillToAddressCountryName = billToAddress.getCountryName(); } ElectronicInvoiceContact remitToContact = ei.getCxmlContact(eio, ElectronicInvoiceMappingService.CXML_ADDRESS_REMIT_TO_ROLE_ID); ElectronicInvoicePostalAddress remitToAddress = this.getCxmlPostalAddressByAddressName(remitToContact, ElectronicInvoiceMappingService.CXML_ADDRESS_REMIT_TO_NAME); // ElectronicInvoicePostalAddress remitToAddress = // ei.getCxmlPostalAddress(eio,ElectronicInvoiceMappingService.CXML_ADDRESS_REMIT_TO_ROLE_ID, // ElectronicInvoiceMappingService.CXML_ADDRESS_REMIT_TO_NAME); if (remitToAddress != null) { this.invoiceRemitToAddressName = remitToContact.getName(); this.invoiceRemitToAddressType = remitToAddress.getType(); this.invoiceRemitToAddressLine1 = remitToAddress.getLine1(); this.invoiceRemitToAddressLine2 = remitToAddress.getLine2(); this.invoiceRemitToAddressLine3 = remitToAddress.getLine3(); this.invoiceRemitToAddressCityName = remitToAddress.getCityName(); this.invoiceRemitToAddressStateCode = remitToAddress.getStateCode(); this.invoiceRemitToAddressPostalCode = remitToAddress.getPostalCode(); this.invoiceRemitToAddressCountryCode = remitToAddress.getCountryCode(); this.invoiceRemitToAddressCountryName = remitToAddress.getCountryName(); } this.invoicePurchaseOrderNumber = eio.getInvoicePurchaseOrderID(); this.purchaseOrderIdentifier = eio.getPurchaseOrderID(); this.purchaseOrderDeliveryCampusCode = eio.getPurchaseOrderCampusCode(); try { this.invoiceItemSubTotalAmount = ei.getInvoiceSubTotalAmount(eio); this.invoiceItemSubTotalCurrencyCode = ei.getInvoiceSubTotalCurrencyIfNotValid(eio); } catch (Exception e) { this.invoiceItemSubTotalAmount = null; this.invoiceItemSubTotalCurrencyCode = "INVALID Amount"; } try { this.invoiceItemSpecialHandlingAmount = ei.getInvoiceSpecialHandlingAmount(eio); this.invoiceItemSpecialHandlingCurrencyCode = ei.getInvoiceSpecialHandlingCurrencyIfNotValid(eio); } catch (Exception e) { this.invoiceItemSpecialHandlingAmount = null; this.invoiceItemSpecialHandlingCurrencyCode = "INVALID AMOUNT"; } this.invoiceItemSpecialHandlingDescription = ei.getInvoiceSpecialHandlingDescription(eio); try { this.invoiceItemShippingAmount = ei.getInvoiceShippingAmount(eio); this.invoiceItemShippingCurrencyCode = ei.getInvoiceShippingCurrencyIfNotValid(eio); } catch (Exception e) { this.invoiceItemShippingAmount = null; this.invoiceItemShippingCurrencyCode = "INVALID AMOUNT"; } this.invoiceItemShippingDescription = ei.getInvoiceShippingDescription(eio); try { this.invoiceItemTaxAmount = ei.getInvoiceTaxAmount(eio); this.invoiceItemTaxCurrencyCode = ei.getInvoiceTaxCurrencyIfNotValid(eio); } catch (Exception e) { this.invoiceItemTaxAmount = null; this.invoiceItemTaxCurrencyCode = "INVALID AMOUNT"; } this.invoiceItemTaxDescription = ei.getInvoiceTaxDescription(eio); try { this.invoiceItemGrossAmount = ei.getInvoiceGrossAmount(eio); this.invoiceItemGrossCurrencyCode = ei.getInvoiceGrossCurrencyIfNotValid(eio); } catch (Exception e) { this.invoiceItemGrossAmount = null; this.invoiceItemGrossCurrencyCode = "INVALID AMOUNT"; } try { this.invoiceItemDiscountAmount = ei.getInvoiceDiscountAmount(eio); this.invoiceItemDiscountCurrencyCode = ei.getInvoiceDiscountCurrencyIfNotValid(eio); } catch (Exception e) { this.invoiceItemDiscountAmount = null; this.invoiceItemDiscountCurrencyCode = "INVALID AMOUNT"; } try { this.invoiceItemNetAmount = ei.getInvoiceNetAmount(eio); this.invoiceItemNetCurrencyCode = ei.getInvoiceNetCurrencyIfNotValid(eio); } catch (Exception e) { this.invoiceItemNetAmount = null; this.invoiceItemNetCurrencyCode = "INVALID AMOUNT"; } for (ElectronicInvoiceItem eii : eio.getInvoiceItems()) { ElectronicInvoiceRejectItem eiri = new ElectronicInvoiceRejectItem(this, eii); this.invoiceRejectItems.add(eiri); } for (ElectronicInvoiceRejectReason eirr : eio.getOrderRejectReasons()) { eirr.setElectronicInvoiceRejectDocument(this); this.invoiceRejectReasons.add(eirr); } } /** * @see org.kuali.rice.krad.document.DocumentBase#getDocumentTitle() */ @Override public String getDocumentTitle() { if (SpringContext.getBean(ParameterService.class).getParameterValueAsBoolean(ElectronicInvoiceRejectDocument.class, PurapParameterConstants.PURAP_OVERRIDE_EIRT_DOC_TITLE)) { return getCustomDocumentTitle(); } return this.buildDocumentTitle(super.getDocumentTitle()); } /** * Returns a custom document title based on the properties of current document.. * * @return - Customized document title. */ protected String getCustomDocumentTitle() { String poID = StringUtils.isEmpty(getInvoicePurchaseOrderNumber()) ? "UNKNOWN" : getInvoicePurchaseOrderNumber(); String researchInd = isInvoiceResearchIndicator() ? "Y" : "N"; // if this method is called when EIRT doc is just created, vendorDetail is not set yet, need to retrieve from DB VendorDetail vendorDetail = getVendorDetail(); Integer headerId = getVendorHeaderGeneratedIdentifier(); Integer detailId = getVendorDetailAssignedIdentifier(); if (vendorDetail == null && headerId != null && detailId != null) { vendorDetail = SpringContext.getBean(VendorService.class).getVendorDetail(headerId, detailId); } String vendorName = vendorDetail == null || StringUtils.isEmpty(vendorDetail.getVendorName()) ? "UNKNOWN" : vendorDetail.getVendorName(); //set title to: Vendor: <Vendor's Name> PO: <PO#> <Research Indicator> String documentTitle = "Vendor: " + vendorName + " PO: " + poID + " " + researchInd; return documentTitle; } /** * Builds document title based on the properties of current document. * * @param the default document title * @return the combine information of the given title and additional payment indicators */ protected String buildDocumentTitle(String title) { if(this.getVendorDetail() == null) { return title; } Integer vendorHeaderGeneratedIdentifier = this.getVendorDetail().getVendorHeaderGeneratedIdentifier(); if (vendorHeaderGeneratedIdentifier != null) { VendorService vendorService = SpringContext.getBean(VendorService.class); Object[] indicators = new String[2]; boolean isEmployeeVendor = vendorService.isVendorInstitutionEmployee(vendorHeaderGeneratedIdentifier); indicators[0] = isEmployeeVendor ? AdHocPaymentIndicator.EMPLOYEE_VENDOR : AdHocPaymentIndicator.OTHER; boolean isVendorForeign = vendorService.isVendorForeign(vendorHeaderGeneratedIdentifier); indicators[1] = isVendorForeign ? AdHocPaymentIndicator.ALIEN_VENDOR : AdHocPaymentIndicator.OTHER; for(Object indicator : indicators) { if(!AdHocPaymentIndicator.OTHER.equals(indicator)) { String titlePattern = title + " [{0}:{1}]"; return MessageFormat.format(titlePattern, indicators); } } } return title; } protected ElectronicInvoicePostalAddress getCxmlPostalAddressByAddressName(ElectronicInvoiceContact contact, String addressName) { if (contact != null) { for (ElectronicInvoicePostalAddress cpa : contact.getPostalAddresses()) { if (addressName == null) { return cpa; } else { if (addressName.equalsIgnoreCase(cpa.getName())) { return cpa; } } } } return null; } public KualiDecimal getTotalAmount() { KualiDecimal returnValue = new KualiDecimal(zero); try { for (ElectronicInvoiceRejectItem eiri : this.invoiceRejectItems) { BigDecimal toAddAmount1 = eiri.getInvoiceItemSubTotalAmount(); KualiDecimal toAddAmount = KualiDecimal.ZERO; if (toAddAmount1 != null) { toAddAmount = new KualiDecimal(toAddAmount1.setScale(KualiDecimal.SCALE, KualiDecimal.ROUND_BEHAVIOR)); } if (LOG.isDebugEnabled()) { LOG.debug("getTotalAmount() setting returnValue with arithmatic => '" + returnValue.doubleValue() + "' + '" + toAddAmount.doubleValue() + "'"); } returnValue = returnValue.add(toAddAmount); } if (LOG.isDebugEnabled()) { LOG.debug("getTotalAmount() returning amount " + returnValue.doubleValue()); } return returnValue; } catch (NumberFormatException n) { // do nothing this is already rejected LOG.error("getTotalAmount() Error attempting to calculate total amount for invoice with filename " + this.invoiceFileName); return new KualiDecimal(zero); } } public void setTotalAmount(KualiDecimal amount) { // ignore this } public KualiDecimal getGrandTotalAmount() { KualiDecimal returnValue = new KualiDecimal(zero); try { for (ElectronicInvoiceRejectItem eiri : this.invoiceRejectItems) { KualiDecimal toAddAmount = new KualiDecimal(eiri.getInvoiceItemNetAmount()); if (LOG.isDebugEnabled()) { LOG.debug("getTotalAmount() setting returnValue with arithmatic => '" + returnValue.doubleValue() + "' + '" + toAddAmount.doubleValue() + "'"); } returnValue = returnValue.add(toAddAmount); } if (LOG.isDebugEnabled()) { LOG.debug("getTotalAmount() returning amount " + returnValue.doubleValue()); } if (this.getInvoiceItemSpecialHandlingAmount() != null && zero.compareTo(this.getInvoiceItemSpecialHandlingAmount()) != 0) { returnValue = returnValue.add(new KualiDecimal(this.getInvoiceItemSpecialHandlingAmount())); } if (this.getInvoiceItemShippingAmount() != null && zero.compareTo(this.getInvoiceItemShippingAmount()) != 0) { returnValue = returnValue.add(new KualiDecimal(this.getInvoiceItemShippingAmount())); } // if (this.getInvoiceItemTaxAmount() != null && zero.compareTo(this.getInvoiceItemTaxAmount()) != 0) { // returnValue = returnValue.add(new KualiDecimal(this.getInvoiceItemTaxAmount())); // } if (this.getInvoiceItemDiscountAmount() != null && zero.compareTo(this.getInvoiceItemDiscountAmount()) != 0) { returnValue = returnValue.subtract(new KualiDecimal(this.getInvoiceItemDiscountAmount())); } if (LOG.isDebugEnabled()) { LOG.debug("getGrandTotalAmount() returning amount " + returnValue.doubleValue()); } return returnValue; } catch (NumberFormatException n) { // do nothing this is already rejected LOG.error("getTotalAmount() Error attempting to calculate total amount for invoice with filename " + this.invoiceFileName); return new KualiDecimal(zero); } } public void setGrandTotalAmount(KualiDecimal amount) { // ignore this } /** * @return Returns the invoiceLoadSummaryIdentifier. */ public Integer getInvoiceLoadSummaryIdentifier() { return invoiceLoadSummaryIdentifier; } /** * @param invoiceLoadSummaryIdentifier The invoiceLoadSummaryIdentifier to set. */ public void setInvoiceLoadSummaryIdentifier(Integer loadSummaryId) { this.invoiceLoadSummaryIdentifier = loadSummaryId; } public PurchaseOrderDocument getCurrentPurchaseOrderDocument() { if (StringUtils.isEmpty(getInvoicePurchaseOrderNumber()) || !NumberUtils.isDigits(getInvoicePurchaseOrderNumber())){ currentPurchaseOrderDocument = null; }else if (currentPurchaseOrderDocument == null) { currentPurchaseOrderDocument = SpringContext.getBean(PurchaseOrderService.class).getCurrentPurchaseOrder(new Integer(getInvoicePurchaseOrderNumber())); }else if (!StringUtils.equals(getInvoicePurchaseOrderNumber(), currentPurchaseOrderDocument.getPurapDocumentIdentifier().toString())){ currentPurchaseOrderDocument = SpringContext.getBean(PurchaseOrderService.class).getCurrentPurchaseOrder(new Integer(getInvoicePurchaseOrderNumber())); } return currentPurchaseOrderDocument; } public VendorDetail getVendorDetail() { return vendorDetail; } public void setVendorDetail(VendorDetail vendorDetail) { this.vendorDetail = vendorDetail; } /** * @return Returns the invoiceLoadSummary. */ public ElectronicInvoiceLoadSummary getInvoiceLoadSummary() { return invoiceLoadSummary; } /** * @param invoiceLoadSummary The invoiceLoadSummary to set. */ public void setInvoiceLoadSummary(ElectronicInvoiceLoadSummary electronicInvoiceLoadSummary) { this.invoiceLoadSummary = electronicInvoiceLoadSummary; this.invoiceLoadSummaryIdentifier = electronicInvoiceLoadSummary.getInvoiceLoadSummaryIdentifier(); } /** * @return Returns the invoiceBillToAddressCityName. */ public String getInvoiceBillToAddressCityName() { return invoiceBillToAddressCityName; } /** * @param invoiceBillToAddressCityName The invoiceBillToAddressCityName to set. */ public void setInvoiceBillToAddressCityName(String billToAddressCityName) { this.invoiceBillToAddressCityName = billToAddressCityName; } /** * @return Returns the invoiceBillToAddressCountryCode. */ public String getInvoiceBillToAddressCountryCode() { return invoiceBillToAddressCountryCode; } /** * @param invoiceBillToAddressCountryCode The invoiceBillToAddressCountryCode to set. */ public void setInvoiceBillToAddressCountryCode(String billToAddressCountryCode) { this.invoiceBillToAddressCountryCode = billToAddressCountryCode; } /** * @return Returns the invoiceBillToAddressCountryName. */ public String getInvoiceBillToAddressCountryName() { return invoiceBillToAddressCountryName; } /** * @param invoiceBillToAddressCountryName The invoiceBillToAddressCountryName to set. */ public void setInvoiceBillToAddressCountryName(String billToAddressCountryName) { this.invoiceBillToAddressCountryName = billToAddressCountryName; } /** * @return Returns the invoiceBillToAddressLine1. */ public String getInvoiceBillToAddressLine1() { return invoiceBillToAddressLine1; } /** * @param invoiceBillToAddressLine1 The invoiceBillToAddressLine1 to set. */ public void setInvoiceBillToAddressLine1(String billToAddressLine1) { this.invoiceBillToAddressLine1 = billToAddressLine1; } /** * @return Returns the invoiceBillToAddressLine2. */ public String getInvoiceBillToAddressLine2() { return invoiceBillToAddressLine2; } /** * @param invoiceBillToAddressLine2 The invoiceBillToAddressLine2 to set. */ public void setInvoiceBillToAddressLine2(String billToAddressLine2) { this.invoiceBillToAddressLine2 = billToAddressLine2; } /** * @return Returns the invoiceBillToAddressLine3. */ public String getInvoiceBillToAddressLine3() { return invoiceBillToAddressLine3; } /** * @param invoiceBillToAddressLine3 The invoiceBillToAddressLine3 to set. */ public void setInvoiceBillToAddressLine3(String billToAddressLine3) { this.invoiceBillToAddressLine3 = billToAddressLine3; } /** * @return Returns the invoiceBillToAddressName. */ public String getInvoiceBillToAddressName() { return invoiceBillToAddressName; } /** * @param invoiceBillToAddressName The invoiceBillToAddressName to set. */ public void setInvoiceBillToAddressName(String billToAddressName) { this.invoiceBillToAddressName = billToAddressName; } /** * @return Returns the invoiceBillToAddressPostalCode. */ public String getInvoiceBillToAddressPostalCode() { return invoiceBillToAddressPostalCode; } /** * @param invoiceBillToAddressPostalCode The invoiceBillToAddressPostalCode to set. */ public void setInvoiceBillToAddressPostalCode(String billToAddressPostalCode) { this.invoiceBillToAddressPostalCode = billToAddressPostalCode; } /** * @return Returns the invoiceBillToAddressStateCode. */ public String getInvoiceBillToAddressStateCode() { return invoiceBillToAddressStateCode; } /** * @param invoiceBillToAddressStateCode The invoiceBillToAddressStateCode to set. */ public void setInvoiceBillToAddressStateCode(String billToAddressStateCode) { this.invoiceBillToAddressStateCode = billToAddressStateCode; } /** * @return Returns the invoiceBillToAddressType. */ public String getInvoiceBillToAddressType() { return invoiceBillToAddressType; } /** * @param invoiceBillToAddressType The invoiceBillToAddressType to set. */ public void setInvoiceBillToAddressType(String billToAddressType) { this.invoiceBillToAddressType = billToAddressType; } /** * @return Returns the invoiceFileDeploymentModeValue. */ public String getInvoiceFileDeploymentModeValue() { return invoiceFileDeploymentModeValue; } /** * @param invoiceFileDeploymentModeValue The invoiceFileDeploymentModeValue to set. */ public void setInvoiceFileDeploymentModeValue(String deploymentMode) { this.invoiceFileDeploymentModeValue = deploymentMode; } /** * @return Returns the invoiceRejectItems. */ public List<ElectronicInvoiceRejectItem> getInvoiceRejectItems() { return invoiceRejectItems; } /** * @param invoiceRejectItems The invoiceRejectItems to set. */ public void setInvoiceRejectItems(List<ElectronicInvoiceRejectItem> electronicInvoiceRejectItems) { this.invoiceRejectItems = electronicInvoiceRejectItems; } public ElectronicInvoiceRejectItem getInvoiceRejectItem(int index) { while (getInvoiceRejectItems().size() <= index) { getInvoiceRejectItems().add(new ElectronicInvoiceRejectItem()); } return getInvoiceRejectItems().get(index); } /** * @return Returns the invoiceRejectReasons. */ public List<ElectronicInvoiceRejectReason> getInvoiceRejectReasons() { return invoiceRejectReasons; } /** * @param invoiceRejectReasons The invoiceRejectReasons to set. */ public void setInvoiceRejectReasons(List<ElectronicInvoiceRejectReason> electronicInvoiceRejectReasons) { this.invoiceRejectReasons = electronicInvoiceRejectReasons; } public ElectronicInvoiceRejectReason getInvoiceRejectReason(int index) { while (getInvoiceRejectReasons().size() <= index) { getInvoiceRejectReasons().add(new ElectronicInvoiceRejectReason()); } return getInvoiceRejectReasons().get(index); } /** * Gets the paymentRequestIdentifier attribute. * @return Returns the paymentRequestIdentifier. */ public Integer getPaymentRequestIdentifier() { return paymentRequestIdentifier; } /** * Sets the paymentRequestIdentifier attribute value. * @param paymentRequestIdentifier The paymentRequestIdentifier to set. */ public void setPaymentRequestIdentifier(Integer paymentRequestIdentifier) { this.paymentRequestIdentifier = paymentRequestIdentifier; } /** * @return Returns the purchaseOrderDeliveryCampusCode. */ public String getPurchaseOrderDeliveryCampusCode() { return purchaseOrderDeliveryCampusCode; } /** * @param purchaseOrderDeliveryCampusCode The purchaseOrderDeliveryCampusCode to set. */ public void setPurchaseOrderDeliveryCampusCode(String poDeliveryCampusCode) { this.purchaseOrderDeliveryCampusCode = poDeliveryCampusCode; } /** * @return Returns the purchaseOrderIdentifier. */ public Integer getPurchaseOrderIdentifier() { return purchaseOrderIdentifier; } /** * @param purchaseOrderIdentifier The purchaseOrderIdentifier to set. */ public void setPurchaseOrderIdentifier(Integer purchaseOrderId) { this.purchaseOrderIdentifier = purchaseOrderId; } /** * @return Returns the invoiceFileDiscountInLineIndicator. */ public Boolean getInvoiceFileDiscountInLineIndicator() { return invoiceFileDiscountInLineIndicator; } public Boolean isInvoiceFileDiscountInLineIndicator() { return invoiceFileDiscountInLineIndicator; } /** * @param invoiceFileDiscountInLineIndicator The invoiceFileDiscountInLineIndicator to set. */ public void setInvoiceFileDiscountInLineIndicator(Boolean fileDiscountInLineIndicator) { this.invoiceFileDiscountInLineIndicator = fileDiscountInLineIndicator; } /** * @return Returns the invoiceFileHeaderTypeIndicator. */ public Boolean getInvoiceFileHeaderTypeIndicator() { return invoiceFileHeaderTypeIndicator; } public Boolean isInvoiceFileHeaderTypeIndicator() { return invoiceFileHeaderTypeIndicator; } /** * @param invoiceFileHeaderTypeIndicator The invoiceFileHeaderTypeIndicator to set. */ public void setInvoiceFileHeaderTypeIndicator(Boolean fileHeaderTypeIndicator) { this.invoiceFileHeaderTypeIndicator = fileHeaderTypeIndicator; } /** * @return Returns the invoiceFileInformationOnlyIndicator. */ public Boolean getInvoiceFileInformationOnlyIndicator() { return invoiceFileInformationOnlyIndicator; } public Boolean isInvoiceFileInformationOnlyIndicator() { return invoiceFileInformationOnlyIndicator; } /** * @param invoiceFileInformationOnlyIndicator The invoiceFileInformationOnlyIndicator to set. */ public void setInvoiceFileInformationOnlyIndicator(Boolean fileInformationOnlyIndicator) { this.invoiceFileInformationOnlyIndicator = fileInformationOnlyIndicator; } /** * @return Returns the invoiceFileOperationIdentifier. */ public String getInvoiceFileOperationIdentifier() { return invoiceFileOperationIdentifier; } /** * @param invoiceFileOperationIdentifier The invoiceFileOperationIdentifier to set. */ public void setInvoiceFileOperationIdentifier(String fileOperationId) { this.invoiceFileOperationIdentifier = fileOperationId; } /** * @return Returns the invoiceFilePurposeIdentifier. */ public String getInvoiceFilePurposeIdentifier() { return invoiceFilePurposeIdentifier; } /** * @param invoiceFilePurposeIdentifier The invoiceFilePurposeIdentifier to set. */ public void setInvoiceFilePurposeIdentifier(String filePurposeId) { this.invoiceFilePurposeIdentifier = filePurposeId; } /** * @return Returns the invoiceFileShippingInLineIndicator. */ public Boolean getInvoiceFileShippingInLineIndicator() { return invoiceFileShippingInLineIndicator; } public Boolean isInvoiceFileShippingInLineIndicator() { return invoiceFileShippingInLineIndicator; } /** * @param invoiceFileShippingInLineIndicator The invoiceFileShippingInLineIndicator to set. */ public void setInvoiceFileShippingInLineIndicator(Boolean fileShippingInLineIndicator) { this.invoiceFileShippingInLineIndicator = fileShippingInLineIndicator; } /** * @return Returns the invoiceFileSpecialHandlingInLineIndicator. */ public Boolean getInvoiceFileSpecialHandlingInLineIndicator() { return invoiceFileSpecialHandlingInLineIndicator; } public Boolean isInvoiceFileSpecialHandlingInLineIndicator() { return invoiceFileSpecialHandlingInLineIndicator; } /** * @param invoiceFileSpecialHandlingInLineIndicator The invoiceFileSpecialHandlingInLineIndicator to set. */ public void setInvoiceFileSpecialHandlingInLineIndicator(Boolean fileSpecHandlingInLineIndicator) { this.invoiceFileSpecialHandlingInLineIndicator = fileSpecHandlingInLineIndicator; } /** * @return Returns the invoiceFileTaxInLineIndicator. */ public Boolean getInvoiceFileTaxInLineIndicator() { return invoiceFileTaxInLineIndicator; } public Boolean isInvoiceFileTaxInLineIndicator() { return invoiceFileTaxInLineIndicator; } /** * @param invoiceFileTaxInLineIndicator The invoiceFileTaxInLineIndicator to set. */ public void setInvoiceFileTaxInLineIndicator(Boolean fileTaxInLineIndicator) { this.invoiceFileTaxInLineIndicator = fileTaxInLineIndicator; } /** * @return Returns the purapDocumentIdentifier. */ public Integer getPurapDocumentIdentifier() { return purapDocumentIdentifier; } /** * @param purapDocumentIdentifier The purapDocumentIdentifier to set. */ public void setPurapDocumentIdentifier(Integer id) { this.purapDocumentIdentifier = id; } public Integer getAccountsPayablePurchasingDocumentLinkIdentifier() { return accountsPayablePurchasingDocumentLinkIdentifier; } public void setAccountsPayablePurchasingDocumentLinkIdentifier(Integer accountsPayablePurchasingDocumentLinkIdentifier) { this.accountsPayablePurchasingDocumentLinkIdentifier = accountsPayablePurchasingDocumentLinkIdentifier; } /** * @return Returns the invoiceCustomerNumber. */ public String getInvoiceCustomerNumber() { return invoiceCustomerNumber; } /** * @param invoiceCustomerNumber The invoiceCustomerNumber to set. */ public void setInvoiceCustomerNumber(String invoiceCustomerNumber) { this.invoiceCustomerNumber = invoiceCustomerNumber; } /** * @return Returns the invoiceFileDate. */ public String getInvoiceFileDate() { return invoiceFileDate; } /** * @param invoiceFileDate The invoiceFileDate to set. */ public void setInvoiceFileDate(String invoiceDate) { this.invoiceFileDate = invoiceDate; } /** * @return Returns the invoiceItemDiscountAmount. */ public BigDecimal getInvoiceItemDiscountAmount() { if (this.isInvoiceFileDiscountInLineIndicator()) { BigDecimal returnValue = zero; try { for (ElectronicInvoiceRejectItem eiri : this.invoiceRejectItems) { BigDecimal toAddAmount = eiri.getInvoiceItemDiscountAmount(); if (LOG.isDebugEnabled()) { LOG.debug("getTotalAmount() setting returnValue with arithmatic => '" + returnValue.doubleValue() + "' + '" + toAddAmount.doubleValue() + "'"); } returnValue = returnValue.add(toAddAmount); } if (LOG.isDebugEnabled()) { LOG.debug("getTotalAmount() returning amount " + returnValue.doubleValue()); } return returnValue; } catch (NumberFormatException n) { // do nothing this is already rejected LOG.error("getTotalAmount() Error attempting to calculate total amount for invoice with filename " + this.invoiceFileName); return zero; } } else { return invoiceItemDiscountAmount; } } /** * @param invoiceItemDiscountAmount The invoiceItemDiscountAmount to set. */ public void setInvoiceItemDiscountAmount(BigDecimal invoiceDiscountAmount) { this.invoiceItemDiscountAmount = invoiceDiscountAmount; } /** * @return Returns the invoiceItemDiscountCurrencyCode. */ public String getInvoiceItemDiscountCurrencyCode() { return invoiceItemDiscountCurrencyCode; } /** * @param invoiceItemDiscountCurrencyCode The invoiceItemDiscountCurrencyCode to set. */ public void setInvoiceItemDiscountCurrencyCode(String invoiceDiscountAmountCurrency) { this.invoiceItemDiscountCurrencyCode = invoiceDiscountAmountCurrency; } /** * @return Returns the invoiceFileName. */ public String getInvoiceFileName() { return invoiceFileName; } /** * @param invoiceFileName The invoiceFileName to set. */ public void setInvoiceFileName(String invoiceFileName) { this.invoiceFileName = invoiceFileName; } /** * @return Returns the invoiceItemGrossAmount. */ public BigDecimal getInvoiceItemGrossAmount() { return invoiceItemGrossAmount; } /** * @param invoiceItemGrossAmount The invoiceItemGrossAmount to set. */ public void setInvoiceItemGrossAmount(BigDecimal invoiceGrossAmount) { this.invoiceItemGrossAmount = invoiceGrossAmount; } /** * @return Returns the invoiceItemGrossCurrencyCode. */ public String getInvoiceItemGrossCurrencyCode() { return invoiceItemGrossCurrencyCode; } /** * @param invoiceItemGrossCurrencyCode The invoiceItemGrossCurrencyCode to set. */ public void setInvoiceItemGrossCurrencyCode(String invoiceGrossAmountCurrency) { this.invoiceItemGrossCurrencyCode = invoiceGrossAmountCurrency; } /** * @return Returns the invoiceItemNetAmount. */ public BigDecimal getInvoiceItemNetAmount() { return invoiceItemNetAmount; } /** * @param invoiceItemNetAmount The invoiceItemNetAmount to set. */ public void setInvoiceItemNetAmount(BigDecimal invoiceNetAmount) { this.invoiceItemNetAmount = invoiceNetAmount; } public boolean isInvoiceNumberAcceptIndicator() { return invoiceNumberAcceptIndicator; } public void setInvoiceNumberAcceptIndicator(boolean invoiceNumberAcceptIndicator) { this.invoiceNumberAcceptIndicator = invoiceNumberAcceptIndicator; } public boolean isInvoiceResearchIndicator() { return invoiceResearchIndicator; } public boolean getInvoiceResearchIndicator() { return invoiceResearchIndicator; } public void setInvoiceResearchIndicator(boolean invoiceResearchIndicator) { this.invoiceResearchIndicator = invoiceResearchIndicator; } public Timestamp getAccountsPayableApprovalTimestamp() { return accountsPayableApprovalTimestamp; } public void setAccountsPayableApprovalTimestamp(Timestamp accountsPayableApprovalTimestamp) { this.accountsPayableApprovalTimestamp = accountsPayableApprovalTimestamp; } /** * @return Returns the invoiceItemNetCurrencyCode. */ public String getInvoiceItemNetCurrencyCode() { return invoiceItemNetCurrencyCode; } /** * @param invoiceItemNetCurrencyCode The invoiceItemNetCurrencyCode to set. */ public void setInvoiceItemNetCurrencyCode(String invoiceNetAmountCurrency) { this.invoiceItemNetCurrencyCode = invoiceNetAmountCurrency; } /** * @return Returns the invoiceFileNumber. */ public String getInvoiceFileNumber() { return invoiceFileNumber; } /** * @param invoiceFileNumber The invoiceFileNumber to set. */ public void setInvoiceFileNumber(String invoiceNumber) { this.invoiceFileNumber = invoiceNumber; } /** * @return Returns the invoiceOrderPurchaseOrderDate. */ public String getInvoiceOrderPurchaseOrderDate() { return invoiceOrderPurchaseOrderDate; } /** * @param invoiceOrderPurchaseOrderDate The invoiceOrderPurchaseOrderDate to set. */ public void setInvoiceOrderPurchaseOrderDate(String invoiceOrderDate) { this.invoiceOrderPurchaseOrderDate = invoiceOrderDate; } /** * @return Returns the invoiceOrderPurchaseOrderIdentifier. */ public String getInvoiceOrderPurchaseOrderIdentifier() { return invoiceOrderPurchaseOrderIdentifier; } /** * @param invoiceOrderPurchaseOrderIdentifier The invoiceOrderPurchaseOrderIdentifier to set. */ public void setInvoiceOrderPurchaseOrderIdentifier(String invoiceOrderId) { this.invoiceOrderPurchaseOrderIdentifier = invoiceOrderId; } /** * @return Returns the invoiceProcessTimestamp. */ public Timestamp getInvoiceProcessTimestamp() { return invoiceProcessTimestamp; } /** * @param invoiceProcessTimestamp The invoiceProcessTimestamp to set. */ public void setInvoiceProcessTimestamp(Timestamp invoiceProcessTimestamp) { this.invoiceProcessTimestamp = invoiceProcessTimestamp; } /** * @return Returns the invoicePurchaseOrderNumber. */ public String getInvoicePurchaseOrderNumber() { return invoicePurchaseOrderNumber; } /** * @param invoicePurchaseOrderNumber The invoicePurchaseOrderNumber to set. */ public void setInvoicePurchaseOrderNumber(String invoicePurchaseOrderId) { this.invoicePurchaseOrderNumber = invoicePurchaseOrderId; } /** * @return Returns the invoiceShipDate. */ public String getInvoiceShipDate() { return invoiceShipDate; } /** * @param invoiceShipDate The invoiceShipDate to set. */ public void setInvoiceShipDate(String invoiceShipDate) { this.invoiceShipDate = invoiceShipDate; } /** * @return Returns the invoiceItemShippingAmount. */ public BigDecimal getInvoiceItemShippingAmount() { if (this.isInvoiceFileShippingInLineIndicator()) { BigDecimal returnValue = zero; try { for (ElectronicInvoiceRejectItem eiri : this.invoiceRejectItems) { BigDecimal toAddAmount = eiri.getInvoiceItemShippingAmount(); if (LOG.isDebugEnabled()) { LOG.debug("getTotalAmount() setting returnValue with arithmatic => '" + returnValue.doubleValue() + "' + '" + toAddAmount.doubleValue() + "'"); } returnValue = returnValue.add(toAddAmount); } if (LOG.isDebugEnabled()) { LOG.debug("getTotalAmount() returning amount " + returnValue.doubleValue()); } return returnValue; } catch (NumberFormatException n) { // do nothing this is already rejected LOG.error("getTotalAmount() Error attempting to calculate total amount for invoice with filename " + this.invoiceFileName); return zero; } } else { return invoiceItemShippingAmount; } } /** * @param invoiceItemShippingAmount The invoiceItemShippingAmount to set. */ public void setInvoiceItemShippingAmount(BigDecimal invoiceShippingAmount) { this.invoiceItemShippingAmount = invoiceShippingAmount; } /** * @return Returns the invoiceItemShippingCurrencyCode. */ public String getInvoiceItemShippingCurrencyCode() { return invoiceItemShippingCurrencyCode; } /** * @param invoiceItemShippingCurrencyCode The invoiceItemShippingCurrencyCode to set. */ public void setInvoiceItemShippingCurrencyCode(String invoiceShippingAmountCurrency) { this.invoiceItemShippingCurrencyCode = invoiceShippingAmountCurrency; } /** * @return Returns the invoiceItemShippingDescription. */ public String getInvoiceItemShippingDescription() { return invoiceItemShippingDescription; } /** * @param invoiceItemShippingDescription The invoiceItemShippingDescription to set. */ public void setInvoiceItemShippingDescription(String invoiceShippingDescription) { this.invoiceItemShippingDescription = invoiceShippingDescription; } /** * @return Returns the invoiceItemSpecialHandlingAmount. */ public BigDecimal getInvoiceItemSpecialHandlingAmount() { if (this.isInvoiceFileSpecialHandlingInLineIndicator()) { BigDecimal returnValue = zero; try { for (ElectronicInvoiceRejectItem eiri : this.invoiceRejectItems) { BigDecimal toAddAmount = eiri.getInvoiceItemSpecialHandlingAmount(); if (LOG.isDebugEnabled()) { LOG.debug("getTotalAmount() setting returnValue with arithmatic => '" + returnValue.doubleValue() + "' + '" + toAddAmount.doubleValue() + "'"); } returnValue = returnValue.add(toAddAmount); } if (LOG.isDebugEnabled()) { LOG.debug("getTotalAmount() returning amount " + returnValue.doubleValue()); } return returnValue; } catch (NumberFormatException n) { // do nothing this is already rejected LOG.error("getTotalAmount() Error attempting to calculate total amount for invoice with filename " + this.invoiceFileName); return zero; } } else { return invoiceItemSpecialHandlingAmount; } } /** * @param invoiceItemSpecialHandlingAmount The invoiceItemSpecialHandlingAmount to set. */ public void setInvoiceItemSpecialHandlingAmount(BigDecimal invoiceSpecialHandlingAmount) { this.invoiceItemSpecialHandlingAmount = invoiceSpecialHandlingAmount; } /** * @return Returns the invoiceItemSpecialHandlingCurrencyCode. */ public String getInvoiceItemSpecialHandlingCurrencyCode() { return invoiceItemSpecialHandlingCurrencyCode; } /** * @param invoiceItemSpecialHandlingCurrencyCode The invoiceItemSpecialHandlingCurrencyCode to set. */ public void setInvoiceItemSpecialHandlingCurrencyCode(String invoiceSpecialHandlingAmountCurrency) { this.invoiceItemSpecialHandlingCurrencyCode = invoiceSpecialHandlingAmountCurrency; } /** * @return the invoiceItemSpecialHandlingDescription */ public String getInvoiceItemSpecialHandlingDescription() { return invoiceItemSpecialHandlingDescription; } /** * @param invoiceItemSpecialHandlingDescription the invoiceItemSpecialHandlingDescription to set */ public void setInvoiceItemSpecialHandlingDescription(String invoiceSpecialHandlingDescription) { this.invoiceItemSpecialHandlingDescription = invoiceSpecialHandlingDescription; } /** * @return Returns the invoiceItemSubTotalAmount. */ public BigDecimal getInvoiceItemSubTotalAmount() { return invoiceItemSubTotalAmount; } /** * @param invoiceItemSubTotalAmount The invoiceItemSubTotalAmount to set. */ public void setInvoiceItemSubTotalAmount(BigDecimal invoiceSubTotalAmount) { this.invoiceItemSubTotalAmount = invoiceSubTotalAmount; } /** * @return Returns the invoiceItemSubTotalCurrencyCode. */ public String getInvoiceItemSubTotalCurrencyCode() { return invoiceItemSubTotalCurrencyCode; } /** * @param invoiceItemSubTotalCurrencyCode The invoiceItemSubTotalCurrencyCode to set. */ public void setInvoiceItemSubTotalCurrencyCode(String invoiceSubTotalAmountCurrency) { this.invoiceItemSubTotalCurrencyCode = invoiceSubTotalAmountCurrency; } /** * @return Returns the invoiceItemTaxAmount. */ public BigDecimal getInvoiceItemTaxAmount() { BigDecimal returnValue = zero; boolean enableSalesTaxInd = SpringContext.getBean(ParameterService.class).getParameterValueAsBoolean(KfsParameterConstants.PURCHASING_DOCUMENT.class, PurapParameterConstants.ENABLE_SALES_TAX_IND); try { //if sales tax enabled, calculate total by totaling items if(enableSalesTaxInd){ for (ElectronicInvoiceRejectItem eiri : this.invoiceRejectItems) { BigDecimal toAddAmount = eiri.getInvoiceItemTaxAmount(); if (LOG.isDebugEnabled()) { LOG.debug("getTotalAmount() setting returnValue with arithmatic => '" + returnValue.doubleValue() + "' + '" + toAddAmount.doubleValue() + "'"); } returnValue = returnValue.add(toAddAmount); } }else{ //else take the total, which should be the summary tax total returnValue = returnValue.add(this.invoiceItemTaxAmount); } if (LOG.isDebugEnabled()) { LOG.debug("getTotalAmount() returning amount " + returnValue.doubleValue()); } return returnValue; } catch (NumberFormatException n) { // do nothing this is already rejected LOG.error("getTotalAmount() Error attempting to calculate total amount for invoice with filename " + this.invoiceFileName); return zero; } // return invoiceItemTaxAmount; } /** * @param invoiceItemTaxAmount The invoiceItemTaxAmount to set. */ public void setInvoiceItemTaxAmount(BigDecimal invoiceTaxAmount) { this.invoiceItemTaxAmount = invoiceTaxAmount; } /** * @return Returns the invoiceItemTaxCurrencyCode. */ public String getInvoiceItemTaxCurrencyCode() { return invoiceItemTaxCurrencyCode; } /** * @param invoiceItemTaxCurrencyCode The invoiceItemTaxCurrencyCode to set. */ public void setInvoiceItemTaxCurrencyCode(String invoiceTaxAmountCurrency) { this.invoiceItemTaxCurrencyCode = invoiceTaxAmountCurrency; } /** * @return Returns the invoiceItemTaxDescription. */ public String getInvoiceItemTaxDescription() { return invoiceItemTaxDescription; } /** * @param invoiceItemTaxDescription The invoiceItemTaxDescription to set. */ public void setInvoiceItemTaxDescription(String invoiceTaxDescription) { this.invoiceItemTaxDescription = invoiceTaxDescription; } /** * @return Returns the invoiceOrderMasterAgreementInformationDate. */ public String getInvoiceOrderMasterAgreementInformationDate() { return invoiceOrderMasterAgreementInformationDate; } /** * @param invoiceOrderMasterAgreementInformationDate The invoiceOrderMasterAgreementInformationDate to set. */ public void setInvoiceOrderMasterAgreementInformationDate(String masterAgreementInfoDate) { this.invoiceOrderMasterAgreementInformationDate = masterAgreementInfoDate; } /** * @return Returns the invoiceOrderMasterAgreementInformationIdentifier. */ public String getInvoiceOrderMasterAgreementInformationIdentifier() { return invoiceOrderMasterAgreementInformationIdentifier; } /** * @param invoiceOrderMasterAgreementInformationIdentifier The invoiceOrderMasterAgreementInformationIdentifier to set. */ public void setInvoiceOrderMasterAgreementInformationIdentifier(String masterAgreementInfoId) { this.invoiceOrderMasterAgreementInformationIdentifier = masterAgreementInfoId; } /** * @return Returns the invoiceOrderMasterAgreementReferenceDate. */ public String getInvoiceOrderMasterAgreementReferenceDate() { return invoiceOrderMasterAgreementReferenceDate; } /** * @param invoiceOrderMasterAgreementReferenceDate The invoiceOrderMasterAgreementReferenceDate to set. */ public void setInvoiceOrderMasterAgreementReferenceDate(String masterAgreementReferenceDate) { this.invoiceOrderMasterAgreementReferenceDate = masterAgreementReferenceDate; } /** * @return Returns the invoiceOrderMasterAgreementReferenceIdentifier. */ public String getInvoiceOrderMasterAgreementReferenceIdentifier() { return invoiceOrderMasterAgreementReferenceIdentifier; } /** * @param invoiceOrderMasterAgreementReferenceIdentifier The invoiceOrderMasterAgreementReferenceIdentifier to set. */ public void setInvoiceOrderMasterAgreementReferenceIdentifier(String masterAgreementReferenceId) { this.invoiceOrderMasterAgreementReferenceIdentifier = masterAgreementReferenceId; } /** * @return Returns the invoiceOrderReferenceDocumentReferencePayloadIdentifier. */ public String getInvoiceOrderReferenceDocumentReferencePayloadIdentifier() { return invoiceOrderReferenceDocumentReferencePayloadIdentifier; } /** * @param invoiceOrderReferenceDocumentReferencePayloadIdentifier The invoiceOrderReferenceDocumentReferencePayloadIdentifier to * set. */ public void setInvoiceOrderReferenceDocumentReferencePayloadIdentifier(String referenceDocumentRefPayloadId) { this.invoiceOrderReferenceDocumentReferencePayloadIdentifier = referenceDocumentRefPayloadId; } /** * @return Returns the invoiceOrderReferenceDocumentReferenceText. */ public String getInvoiceOrderReferenceDocumentReferenceText() { return invoiceOrderReferenceDocumentReferenceText; } /** * @param invoiceOrderReferenceDocumentReferenceText The invoiceOrderReferenceDocumentReferenceText to set. */ public void setInvoiceOrderReferenceDocumentReferenceText(String referenceDocumentRefText) { this.invoiceOrderReferenceDocumentReferenceText = referenceDocumentRefText; } /** * @return Returns the invoiceOrderReferenceOrderIdentifier. */ public String getInvoiceOrderReferenceOrderIdentifier() { return invoiceOrderReferenceOrderIdentifier; } /** * @param invoiceOrderReferenceOrderIdentifier The invoiceOrderReferenceOrderIdentifier to set. */ public void setInvoiceOrderReferenceOrderIdentifier(String referenceOrderId) { this.invoiceOrderReferenceOrderIdentifier = referenceOrderId; } /** * @return Returns the invoiceRemitToAddressCityName. */ public String getInvoiceRemitToAddressCityName() { return invoiceRemitToAddressCityName; } /** * @param invoiceRemitToAddressCityName The invoiceRemitToAddressCityName to set. */ public void setInvoiceRemitToAddressCityName(String remitToAddressCityName) { this.invoiceRemitToAddressCityName = remitToAddressCityName; } /** * @return Returns the invoiceRemitToAddressCountryCode. */ public String getInvoiceRemitToAddressCountryCode() { return invoiceRemitToAddressCountryCode; } /** * @param invoiceRemitToAddressCountryCode The invoiceRemitToAddressCountryCode to set. */ public void setInvoiceRemitToAddressCountryCode(String remitToAddressCountryCode) { this.invoiceRemitToAddressCountryCode = remitToAddressCountryCode; } /** * @return Returns the invoiceRemitToAddressCountryName. */ public String getInvoiceRemitToAddressCountryName() { return invoiceRemitToAddressCountryName; } /** * @param invoiceRemitToAddressCountryName The invoiceRemitToAddressCountryName to set. */ public void setInvoiceRemitToAddressCountryName(String remitToAddressCountryName) { this.invoiceRemitToAddressCountryName = remitToAddressCountryName; } /** * @return Returns the invoiceRemitToAddressLine1. */ public String getInvoiceRemitToAddressLine1() { return invoiceRemitToAddressLine1; } /** * @param invoiceRemitToAddressLine1 The invoiceRemitToAddressLine1 to set. */ public void setInvoiceRemitToAddressLine1(String remitToAddressLine1) { this.invoiceRemitToAddressLine1 = remitToAddressLine1; } /** * @return Returns the invoiceRemitToAddressLine2. */ public String getInvoiceRemitToAddressLine2() { return invoiceRemitToAddressLine2; } /** * @param invoiceRemitToAddressLine2 The invoiceRemitToAddressLine2 to set. */ public void setInvoiceRemitToAddressLine2(String remitToAddressLine2) { this.invoiceRemitToAddressLine2 = remitToAddressLine2; } /** * @return Returns the invoiceRemitToAddressLine3. */ public String getInvoiceRemitToAddressLine3() { return invoiceRemitToAddressLine3; } /** * @param invoiceRemitToAddressLine3 The invoiceRemitToAddressLine3 to set. */ public void setInvoiceRemitToAddressLine3(String remitToAddressLine3) { this.invoiceRemitToAddressLine3 = remitToAddressLine3; } /** * @return Returns the invoiceRemitToAddressName. */ public String getInvoiceRemitToAddressName() { return invoiceRemitToAddressName; } /** * @param invoiceRemitToAddressName The invoiceRemitToAddressName to set. */ public void setInvoiceRemitToAddressName(String remitToAddressName) { this.invoiceRemitToAddressName = remitToAddressName; } /** * @return Returns the invoiceRemitToAddressPostalCode. */ public String getInvoiceRemitToAddressPostalCode() { return invoiceRemitToAddressPostalCode; } /** * @param invoiceRemitToAddressPostalCode The invoiceRemitToAddressPostalCode to set. */ public void setInvoiceRemitToAddressPostalCode(String remitToAddressPostalCode) { this.invoiceRemitToAddressPostalCode = remitToAddressPostalCode; } /** * @return Returns the invoiceRemitToAddressStateCode. */ public String getInvoiceRemitToAddressStateCode() { return invoiceRemitToAddressStateCode; } /** * @param invoiceRemitToAddressStateCode The invoiceRemitToAddressStateCode to set. */ public void setInvoiceRemitToAddressStateCode(String remitToAddressStateCode) { this.invoiceRemitToAddressStateCode = remitToAddressStateCode; } /** * @return Returns the invoiceRemitToAddressType. */ public String getInvoiceRemitToAddressType() { return invoiceRemitToAddressType; } /** * @param invoiceRemitToAddressType The invoiceRemitToAddressType to set. */ public void setInvoiceRemitToAddressType(String remitToAddressType) { this.invoiceRemitToAddressType = remitToAddressType; } /** * @return Returns the invoiceShipToAddressCityName. */ public String getInvoiceShipToAddressCityName() { return invoiceShipToAddressCityName; } /** * @param invoiceShipToAddressCityName The invoiceShipToAddressCityName to set. */ public void setInvoiceShipToAddressCityName(String shipToAddressCityName) { this.invoiceShipToAddressCityName = shipToAddressCityName; } /** * @return Returns the invoiceShipToAddressCountryCode. */ public String getInvoiceShipToAddressCountryCode() { return invoiceShipToAddressCountryCode; } /** * @param invoiceShipToAddressCountryCode The invoiceShipToAddressCountryCode to set. */ public void setInvoiceShipToAddressCountryCode(String shipToAddressCountryCode) { this.invoiceShipToAddressCountryCode = shipToAddressCountryCode; } /** * @return Returns the invoiceShipToAddressCountryName. */ public String getInvoiceShipToAddressCountryName() { return invoiceShipToAddressCountryName; } /** * @param invoiceShipToAddressCountryName The invoiceShipToAddressCountryName to set. */ public void setInvoiceShipToAddressCountryName(String shipToAddressCountryName) { this.invoiceShipToAddressCountryName = shipToAddressCountryName; } /** * @return Returns the invoiceShipToAddressLine1. */ public String getInvoiceShipToAddressLine1() { return invoiceShipToAddressLine1; } /** * @param invoiceShipToAddressLine1 The invoiceShipToAddressLine1 to set. */ public void setInvoiceShipToAddressLine1(String shipToAddressLine1) { this.invoiceShipToAddressLine1 = shipToAddressLine1; } /** * @return Returns the invoiceShipToAddressLine2. */ public String getInvoiceShipToAddressLine2() { return invoiceShipToAddressLine2; } /** * @param invoiceShipToAddressLine2 The invoiceShipToAddressLine2 to set. */ public void setInvoiceShipToAddressLine2(String shipToAddressLine2) { this.invoiceShipToAddressLine2 = shipToAddressLine2; } /** * @return Returns the invoiceShipToAddressLine3. */ public String getInvoiceShipToAddressLine3() { return invoiceShipToAddressLine3; } /** * @param invoiceShipToAddressLine3 The invoiceShipToAddressLine3 to set. */ public void setInvoiceShipToAddressLine3(String shipToAddressLine3) { this.invoiceShipToAddressLine3 = shipToAddressLine3; } /** * @return Returns the invoiceShipToAddressName. */ public String getInvoiceShipToAddressName() { return invoiceShipToAddressName; } /** * @param invoiceShipToAddressName The invoiceShipToAddressName to set. */ public void setInvoiceShipToAddressName(String shipToAddressName) { this.invoiceShipToAddressName = shipToAddressName; } /** * @return Returns the invoiceShipToAddressPostalCode. */ public String getInvoiceShipToAddressPostalCode() { return invoiceShipToAddressPostalCode; } /** * @param invoiceShipToAddressPostalCode The invoiceShipToAddressPostalCode to set. */ public void setInvoiceShipToAddressPostalCode(String shipToAddressPostalCode) { this.invoiceShipToAddressPostalCode = shipToAddressPostalCode; } /** * @return Returns the invoiceShipToAddressStateCode. */ public String getInvoiceShipToAddressStateCode() { return invoiceShipToAddressStateCode; } /** * @param invoiceShipToAddressStateCode The invoiceShipToAddressStateCode to set. */ public void setInvoiceShipToAddressStateCode(String shipToAddressStateCode) { this.invoiceShipToAddressStateCode = shipToAddressStateCode; } /** * @return Returns the invoiceShipToAddressType. */ public String getInvoiceShipToAddressType() { return invoiceShipToAddressType; } /** * @param invoiceShipToAddressType The invoiceShipToAddressType to set. */ public void setInvoiceShipToAddressType(String shipToAddressType) { this.invoiceShipToAddressType = shipToAddressType; } /** * @return Returns the invoiceOrderSupplierOrderInformationIdentifier. */ public String getInvoiceOrderSupplierOrderInformationIdentifier() { return invoiceOrderSupplierOrderInformationIdentifier; } /** * @param invoiceOrderSupplierOrderInformationIdentifier The invoiceOrderSupplierOrderInformationIdentifier to set. */ public void setInvoiceOrderSupplierOrderInformationIdentifier(String supplierOrderInfoId) { this.invoiceOrderSupplierOrderInformationIdentifier = supplierOrderInfoId; } /** * @return Returns the vendorDetailAssignedIdentifier. */ public Integer getVendorDetailAssignedIdentifier() { return vendorDetailAssignedIdentifier; } /** * @param vendorDetailAssignedIdentifier The vendorDetailAssignedIdentifier to set. */ public void setVendorDetailAssignedIdentifier(Integer vendorDetailID) { this.vendorDetailAssignedIdentifier = vendorDetailID; } /** * @return Returns the vendorDunsNumber. */ public String getVendorDunsNumber() { return vendorDunsNumber; } /** * @param vendorDunsNumber The vendorDunsNumber to set. */ public void setVendorDunsNumber(String vendorDunsNumber) { this.vendorDunsNumber = vendorDunsNumber; } /** * @return Returns the vendorHeaderGeneratedIdentifier. */ public Integer getVendorHeaderGeneratedIdentifier() { return vendorHeaderGeneratedIdentifier; } /** * @param vendorHeaderGeneratedIdentifier The vendorHeaderGeneratedIdentifier to set. */ public void setVendorHeaderGeneratedIdentifier(Integer vendorHeaderID) { this.vendorHeaderGeneratedIdentifier = vendorHeaderID; } public void addRejectItem(ElectronicInvoiceRejectItem item) { // int itemLinePosition = getItemLinePosition(); // if (ObjectUtils.isNotNull(item.getItemLineNumber()) && (item.getItemLineNumber() > 0) && (item.getItemLineNumber() <= // itemLinePosition)) { // itemLinePosition = item.getItemLineNumber().intValue() - 1; // } item.setPurapDocumentIdentifier(this.purapDocumentIdentifier); item.setElectronicInvoiceRejectDocument(this); invoiceRejectItems.add(item); // renumberItems(itemLinePosition); } public void addRejectReason(ElectronicInvoiceRejectReason reason) { // int itemLinePosition = getItemLinePosition(); // if (ObjectUtils.isNotNull(item.getItemLineNumber()) && (item.getItemLineNumber() > 0) && (item.getItemLineNumber() <= // itemLinePosition)) { // itemLinePosition = item.getItemLineNumber().intValue() - 1; // } reason.setPurapDocumentIdentifier(this.purapDocumentIdentifier); reason.setElectronicInvoiceRejectDocument(this); invoiceRejectReasons.add(reason); // renumberItems(itemLinePosition); } public PurApRelatedViews getRelatedViews() { if (relatedViews == null) { relatedViews = new PurApRelatedViews(this.documentNumber, this.accountsPayablePurchasingDocumentLinkIdentifier); } return relatedViews; } public void setRelatedViews(PurApRelatedViews relatedViews) { this.relatedViews = relatedViews; } public boolean isBoNotesSupport() { return true; } public boolean isDocumentCreationInProgress() { return isDocumentCreationInProgress; } public void setDocumentCreationInProgress(boolean isDocumentCreationInProgress) { this.isDocumentCreationInProgress = isDocumentCreationInProgress; } /** * Returns the vendor number for this document. * * @return the vendor number for this document. */ public String getVendorNumber() { if (StringUtils.isNotEmpty(vendorNumber)) { return vendorNumber; } else if (ObjectUtils.isNotNull(vendorDetail)) { return vendorDetail.getVendorNumber(); } else if (getVendorHeaderGeneratedIdentifier() != null && getVendorDetailAssignedIdentifier() != null){ VendorDetail vendorDetail = new VendorDetail(); vendorDetail.setVendorHeaderGeneratedIdentifier(getVendorHeaderGeneratedIdentifier()); vendorDetail.setVendorDetailAssignedIdentifier(getVendorDetailAssignedIdentifier()); return vendorDetail.getVendorNumber(); } else { return ""; } } public void setVendorNumber(String vendorNumber) { this.vendorNumber = vendorNumber; } /** * Always returns false. * This method is needed here because it's called by some tag files shared with PurAp documents. */ public boolean getIsATypeOfPurAPRecDoc() { return false; } /** * Always returns false. * This method is needed here because it's called by some tag files shared with PurAp documents. */ public boolean getIsATypeOfPurDoc() { return false; } /** * Always returns false. * This method is needed here because it's called by some tag files shared with PurAp documents. */ public boolean getIsATypeOfPODoc() { return false; } /** * Always returns false. * This method is needed here because it's called by some tag files shared with PurAp documents. */ public boolean getIsPODoc() { return false; } /** * Always returns false. * This method is needed here because it's called by some tag files shared with PurAp documents. */ public boolean getIsReqsDoc() { return false; } public boolean isInvoiceResearchIndicatorForSearching() { return invoiceResearchIndicator; } public String getInvoiceResearchIndicatorForResult(){ if (isInvoiceResearchIndicator()){ return "Yes"; }else{ return "No"; } } public String getPurchaseOrderDeliveryCampusCodeForSearch(){ return getPurchaseOrderDeliveryCampusCode(); } public CampusParameter getPurchaseOrderDeliveryCampus() { return purchaseOrderDeliveryCampus; } public Date getAccountsPayableApprovalDateForSearch(){ if (getAccountsPayableApprovalTimestamp() != null){ DateTimeService dateTimeService = SpringContext.getBean(DateTimeService.class); try { return dateTimeService.convertToSqlDate(getAccountsPayableApprovalTimestamp()); } catch (ParseException e) { throw new RuntimeException("ParseException thrown when trying to convert Timestamp to sqlDate.", e); } } return null; } public Timestamp getInvoiceFileTimeStampForSearch() { Date invoiceDate = ElectronicInvoiceUtils.getDate(getInvoiceFileDate()); if (invoiceDate != null){ return new Timestamp(invoiceDate.getTime()); }else{ return null; } } public void setInvoiceFileTimeStampForSearch(Timestamp invoiceFileTimeStamp) { //Not needed } public String getWorkflowStatusForResult(){ return PurapSearchUtils.getWorkFlowStatusString(getDocumentHeader()); } /** * Checks whether the related purchase order views need a warning to be displayed, * i.e. if at least one of the purchase orders has never been opened. * @return true if at least one related purchase order needs a warning; false otherwise */ public boolean getNeedWarningRelatedPOs() { List<PurchaseOrderView> poViews = getRelatedViews().getRelatedPurchaseOrderViews(); for (PurchaseOrderView poView : poViews) { if (poView.getNeedWarning()) { return true; } } return false; } /** * @see org.kuali.rice.krad.document.DocumentBase#doRouteStatusChange() */ @Override public void doRouteStatusChange(DocumentRouteStatusChange statusChangeEvent) { LOG.debug("doRouteStatusChange() started"); super.doRouteStatusChange(statusChangeEvent); if (this.getFinancialSystemDocumentHeader().getWorkflowDocument().isApproved()){ //Set the current date as approval timestamp this.setAccountsPayableApprovalTimestamp(SpringContext.getBean(DateTimeService.class).getCurrentTimestamp()); } } /** * @see org.kuali.rice.krad.bo.PersistableBusinessObjectBase#getBoNotes() */ @Override public List getNotes() { List notes = super.getNotes(); if (!StringUtils.isBlank(this.getObjectId())) { for (Iterator iterator = notes.iterator(); iterator.hasNext();) { Note note = (Note) iterator.next(); if (!StringUtils.isBlank(note.getObjectId())) { note.refresh(); } } } return super.getNotes(); } @Override public NoteType getNoteType() { return NoteType.BUSINESS_OBJECT; } }