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 package org.kuali.kfs.module.purap.service.impl; 017 018 import java.math.BigDecimal; 019 import java.util.Map; 020 021 import org.kuali.kfs.module.purap.businessobject.ElectronicInvoice; 022 import org.kuali.kfs.module.purap.businessobject.ElectronicInvoiceItem; 023 import org.kuali.kfs.module.purap.businessobject.ElectronicInvoiceItemMapping; 024 import org.kuali.kfs.module.purap.businessobject.ElectronicInvoiceOrder; 025 import org.kuali.kfs.module.purap.businessobject.ElectronicInvoiceRejectItem; 026 import org.kuali.kfs.module.purap.businessobject.PurchaseOrderItem; 027 import org.kuali.kfs.module.purap.document.ElectronicInvoiceRejectDocument; 028 import org.kuali.kfs.module.purap.document.PurchaseOrderDocument; 029 import org.kuali.kfs.module.purap.util.ElectronicInvoiceUtils; 030 import org.kuali.rice.kns.util.KualiDecimal; 031 032 public class ElectronicInvoiceItemHolder { 033 034 private ElectronicInvoiceOrderHolder orderHolder; 035 private ElectronicInvoiceRejectItem rejectItem; 036 private ElectronicInvoiceItem invoiceItem; 037 private PurchaseOrderItem poItem; 038 private Map<String,ElectronicInvoiceItemMapping> itemTypeMappings; 039 040 private boolean isRejectItemHolder; 041 private boolean validateHeader; 042 043 public ElectronicInvoiceItemHolder(ElectronicInvoiceRejectItem rejectItem, 044 Map itemTypeMappings, 045 PurchaseOrderItem poItem, 046 ElectronicInvoiceOrderHolder orderHolder){ 047 048 if (rejectItem == null){ 049 throw new NullPointerException("ElectronicInvoiceRejectItem should not be null"); 050 } 051 052 this.rejectItem = rejectItem; 053 this.poItem = poItem; 054 this.orderHolder = orderHolder; 055 056 isRejectItemHolder = true; 057 } 058 059 public ElectronicInvoiceItemHolder(ElectronicInvoiceItem invoiceItem, 060 Map itemTypeMappings, 061 PurchaseOrderItem poItem, 062 ElectronicInvoiceOrderHolder orderHolder){ 063 064 if (invoiceItem == null){ 065 throw new NullPointerException("ElectronicInvoiceItem should not be null"); 066 } 067 068 this.invoiceItem = invoiceItem; 069 this.poItem = poItem; 070 this.orderHolder = orderHolder; 071 072 isRejectItemHolder = false; 073 } 074 075 public Integer getInvoiceItemLineNumber(){ 076 if (isRejectItemHolder()){ 077 return rejectItem.getInvoiceReferenceItemLineNumber(); 078 }else{ 079 return invoiceItem.getReferenceLineNumberInteger(); 080 } 081 } 082 083 public String getInvoiceItemDescription(){ 084 if (isRejectItemHolder()){ 085 return rejectItem.getInvoiceReferenceItemDescription(); 086 }else{ 087 return invoiceItem.getReferenceDescription(); 088 } 089 } 090 091 public PurchaseOrderItem getPurchaseOrderItem(){ 092 return poItem; 093 } 094 095 public String getCatalogNumberStripped(){ 096 if (isRejectItemHolder()){ 097 return ElectronicInvoiceUtils.stripSplChars(rejectItem.getInvoiceItemCatalogNumber()); 098 }else{ 099 return ElectronicInvoiceUtils.stripSplChars(invoiceItem.getCatalogNumber()); 100 } 101 } 102 103 public BigDecimal getUnitPrice(){ 104 if (isRejectItemHolder()){ 105 return rejectItem.getInvoiceItemUnitPrice(); 106 }else{ 107 return invoiceItem.getInvoiceLineUnitCostBigDecimal(); 108 } 109 } 110 111 public String getUnitPriceCurrency(){ 112 if (isRejectItemHolder()){ 113 return rejectItem.getInvoiceItemUnitPriceCurrencyCode(); 114 }else{ 115 return invoiceItem.getUnitPriceCurrency(); 116 } 117 } 118 119 public BigDecimal getQuantity(){ 120 if (isRejectItemHolder()){ 121 return rejectItem.getInvoiceItemQuantity(); 122 }else{ 123 return invoiceItem.getInvoiceLineQuantityBigDecimal(); 124 } 125 } 126 127 public KualiDecimal getSubTotalAmount(){ 128 if (isRejectItemHolder()){ 129 return new KualiDecimal(rejectItem.getInvoiceItemSubTotalAmount().setScale(KualiDecimal.SCALE, KualiDecimal.ROUND_BEHAVIOR)); 130 }else{ 131 return new KualiDecimal(invoiceItem.getInvoiceLineSubTotalAmountBigDecimal()); 132 } 133 } 134 135 public boolean isRejectItemHolder(){ 136 return isRejectItemHolder; 137 } 138 139 public ElectronicInvoiceItemMapping getItemMapping(String invoiceItemTypeCode){ 140 if (itemTypeMappings == null){ 141 return null; 142 }else{ 143 return itemTypeMappings.get(invoiceItemTypeCode); 144 } 145 } 146 147 public String getItemTypeCode(String invoiceItemTypeCode) { 148 149 ElectronicInvoiceItemMapping itemMapping = getItemMapping(invoiceItemTypeCode); 150 151 if (itemMapping != null) { 152 return itemMapping.getItemTypeCode(); 153 } 154 else { 155 return null; 156 } 157 } 158 159 public String getInvoiceItemCatalogNumber(){ 160 if (isRejectItemHolder()){ 161 return rejectItem.getInvoiceItemCatalogNumber(); 162 }else{ 163 return invoiceItem.getReferenceItemIDSupplierPartID(); 164 } 165 } 166 167 public String getInvoiceItemUnitOfMeasureCode(){ 168 if (isRejectItemHolder()){ 169 return rejectItem.getInvoiceItemUnitOfMeasureCode(); 170 }else{ 171 return invoiceItem.getUnitOfMeasure(); 172 } 173 } 174 175 public boolean isUnitOfMeasureAcceptIndicatorEnabled() { 176 if (isRejectItemHolder()){ 177 return rejectItem.isUnitOfMeasureAcceptIndicator(); 178 }else{ 179 return false; 180 } 181 } 182 183 public boolean isCatalogNumberAcceptIndicatorEnabled() { 184 if (isRejectItemHolder()){ 185 return rejectItem.isCatalogNumberAcceptIndicator(); 186 }else{ 187 return false; 188 } 189 } 190 191 public BigDecimal getInvoiceItemUnitPrice(){ 192 if (isRejectItemHolder()){ 193 return rejectItem.getInvoiceItemUnitPrice(); 194 }else{ 195 return invoiceItem.getInvoiceLineUnitCostBigDecimal(); 196 } 197 } 198 199 public BigDecimal getInvoiceItemQuantity(){ 200 if (isRejectItemHolder()){ 201 return rejectItem.getInvoiceItemQuantity(); 202 }else{ 203 return invoiceItem.getInvoiceLineQuantityBigDecimal(); 204 } 205 } 206 207 public BigDecimal getInvoiceItemSubTotalAmount(){ 208 if (isRejectItemHolder()){ 209 return rejectItem.getInvoiceItemSubTotalAmount(); 210 }else{ 211 return invoiceItem.getInvoiceLineSubTotalAmountBigDecimal(); 212 } 213 } 214 215 public BigDecimal getTaxAmount(){ 216 if (isRejectItemHolder()){ 217 return rejectItem.getInvoiceItemTaxAmount(); 218 }else{ 219 return invoiceItem.getInvoiceLineTaxAmountBigDecimal(); 220 } 221 } 222 223 public ElectronicInvoiceOrderHolder getInvoiceOrderHolder(){ 224 return orderHolder; 225 } 226 }