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 }