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.businessobject;
017    
018    import java.util.LinkedHashMap;
019    
020    import org.apache.commons.lang.StringUtils;
021    import org.kuali.kfs.module.purap.PurapPropertyConstants;
022    import org.kuali.kfs.sys.businessobject.UnitOfMeasure;
023    import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
024    import org.kuali.rice.kns.util.KualiDecimal;
025    import org.kuali.rice.kns.util.ObjectUtils;
026    
027    /**
028     * This class...
029     */
030    public abstract class ReceivingItemBase extends PersistableBusinessObjectBase implements PurapEnterableItem, ReceivingItem {
031    
032        private Integer receivingItemIdentifier;
033        private String documentNumber;
034        private Integer purchaseOrderIdentifier;
035        private Integer itemLineNumber;
036        private String itemTypeCode;
037        private String itemUnitOfMeasureCode;
038        private String itemCatalogNumber;
039        private String itemDescription;
040        private KualiDecimal itemReceivedTotalQuantity;
041        private KualiDecimal itemReturnedTotalQuantity;
042        private KualiDecimal itemDamagedTotalQuantity;
043        private String itemReasonAddedCode;
044        protected KualiDecimal itemOriginalReceivedTotalQuantity;
045        protected KualiDecimal itemOriginalReturnedTotalQuantity;
046        protected KualiDecimal itemOriginalDamagedTotalQuantity;
047        
048        private ItemReasonAdded itemReasonAdded;
049        private ItemType itemType;
050        private UnitOfMeasure itemUnitOfMeasure;
051        
052        
053        /**
054         * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
055         */
056        protected LinkedHashMap toStringMapper() {
057            LinkedHashMap m = new LinkedHashMap();      
058            if (this.receivingItemIdentifier != null) {
059                m.put("receivingItemIdentifier", this.receivingItemIdentifier.toString());
060            }
061            return m;
062        }
063    
064        public boolean isConsideredEntered() {
065            //if all are not null then return true
066            return !((ObjectUtils.isNull(this.getItemReceivedTotalQuantity()) || this.getItemReceivedTotalQuantity().isZero()) &&
067                    (ObjectUtils.isNull(this.getItemDamagedTotalQuantity()) || this.getItemDamagedTotalQuantity().isZero()) &&
068                    (ObjectUtils.isNull(this.getItemReturnedTotalQuantity()) || this.getItemReturnedTotalQuantity().isZero()));
069        }
070    
071        public Integer getReceivingItemIdentifier() { 
072            return receivingItemIdentifier;
073        }
074    
075        public void setReceivingItemIdentifier(Integer receivingItemIdentifier) {
076            this.receivingItemIdentifier = receivingItemIdentifier;
077        }
078    
079        public String getDocumentNumber() {
080            return documentNumber;
081        }
082    
083        public void setDocumentNumber(String documentNumber) {
084            this.documentNumber = documentNumber;
085        }
086    
087        public Integer getPurchaseOrderIdentifier() {
088            return purchaseOrderIdentifier;
089        }
090    
091        public void setPurchaseOrderIdentifier(Integer purchaseOrderIdentifier) {
092            this.purchaseOrderIdentifier = purchaseOrderIdentifier;
093        }
094    
095        public Integer getItemLineNumber() {
096            return itemLineNumber;
097        }
098    
099        public void setItemLineNumber(Integer itemLineNumber) {
100            this.itemLineNumber = itemLineNumber;
101        }
102    
103        public String getItemTypeCode() {
104            return itemTypeCode;
105        }
106    
107        public void setItemTypeCode(String itemTypeCode) {
108            this.itemTypeCode = itemTypeCode;
109        }
110    
111        public String getItemUnitOfMeasureCode() {
112            return itemUnitOfMeasureCode;
113        }
114    
115        public void setItemUnitOfMeasureCode(String itemUnitOfMeasureCode) {
116            this.itemUnitOfMeasureCode = (StringUtils.isNotBlank(itemUnitOfMeasureCode) ? itemUnitOfMeasureCode.toUpperCase() : itemUnitOfMeasureCode);
117        }    
118        
119        public String getItemCatalogNumber() {
120            return itemCatalogNumber;
121        }
122    
123        public void setItemCatalogNumber(String itemCatalogNumber) {
124            this.itemCatalogNumber = itemCatalogNumber;
125        }
126    
127        public String getItemDescription() {
128            return itemDescription;
129        }
130    
131        public void setItemDescription(String itemDescription) {
132            this.itemDescription = itemDescription;
133        }
134    
135        public KualiDecimal getItemReceivedTotalQuantity() {
136            return itemReceivedTotalQuantity;
137        }
138    
139        public void setItemReceivedTotalQuantity(KualiDecimal itemReceivedTotalQuantity) {
140            this.itemReceivedTotalQuantity = itemReceivedTotalQuantity;
141        }
142    
143        public KualiDecimal getItemReturnedTotalQuantity() {
144            return itemReturnedTotalQuantity;
145        }
146    
147        public void setItemReturnedTotalQuantity(KualiDecimal itemReturnedTotalQuantity) {
148            this.itemReturnedTotalQuantity = itemReturnedTotalQuantity;
149        }
150    
151        public KualiDecimal getItemDamagedTotalQuantity() {
152            return itemDamagedTotalQuantity;
153        }
154    
155        public void setItemDamagedTotalQuantity(KualiDecimal itemDamagedTotalQuantity) {
156            this.itemDamagedTotalQuantity = itemDamagedTotalQuantity;
157        }
158    
159        public String getItemReasonAddedCode() {
160            return itemReasonAddedCode;
161        }
162    
163        public void setItemReasonAddedCode(String itemReasonAddedCode) {
164            this.itemReasonAddedCode = itemReasonAddedCode;
165        }
166        /**
167         * Gets the itemType attribute. 
168         * @return Returns the itemType.
169         */
170        public ItemType getItemType() {
171            if (ObjectUtils.isNull(itemType)) {
172                refreshReferenceObject(PurapPropertyConstants.ITEM_TYPE);
173            }
174            return itemType;
175        }
176    
177        /**
178         * Sets the itemType attribute value.
179         * @param itemType The itemType to set.
180         * @deprecated
181         */
182        public void setItemType(ItemType itemType) {
183            this.itemType = itemType;
184        }
185    
186        public KualiDecimal getItemOriginalReceivedTotalQuantity() { 
187            return itemOriginalReceivedTotalQuantity;
188        }
189    
190        public void setItemOriginalReceivedTotalQuantity(KualiDecimal itemOriginalReceivedTotalQuantity) {
191            this.itemOriginalReceivedTotalQuantity = itemOriginalReceivedTotalQuantity;
192        }
193    
194        public KualiDecimal getItemOriginalReturnedTotalQuantity() { 
195            return itemOriginalReturnedTotalQuantity;
196        }
197    
198        public void setItemOriginalReturnedTotalQuantity(KualiDecimal itemOriginalReturnedTotalQuantity) {
199            this.itemOriginalReturnedTotalQuantity = itemOriginalReturnedTotalQuantity;
200        }
201    
202        public KualiDecimal getItemOriginalDamagedTotalQuantity() { 
203            return itemOriginalDamagedTotalQuantity;
204        }
205    
206        public void setItemOriginalDamagedTotalQuantity(KualiDecimal itemOriginalDamagedTotalQuantity) {
207            this.itemOriginalDamagedTotalQuantity = itemOriginalDamagedTotalQuantity;
208        }
209    
210        public ItemReasonAdded getItemReasonAdded() {
211            if (itemReasonAdded != null) {
212                return itemReasonAdded;
213            }
214            else if (itemReasonAddedCode != null){
215                refreshReferenceObject(PurapPropertyConstants.ITEM_REASON_ADDED);
216            }
217            return itemReasonAdded;
218        } 
219    
220        public void setItemReasonAdded(ItemReasonAdded itemReasonAdded) {
221            this.itemReasonAdded = itemReasonAdded;
222        }    
223    
224        public UnitOfMeasure getItemUnitOfMeasure() {
225            if (ObjectUtils.isNull(itemUnitOfMeasure) || (!itemUnitOfMeasure.getItemUnitOfMeasureCode().equalsIgnoreCase(getItemUnitOfMeasureCode()))) {
226                refreshReferenceObject(PurapPropertyConstants.ITEM_UNIT_OF_MEASURE);
227            }
228            return itemUnitOfMeasure;
229        }
230    
231        public void setItemUnitOfMeasure(UnitOfMeasure itemUnitOfMeasure) {
232            this.itemUnitOfMeasure = itemUnitOfMeasure;
233        }
234    
235    }