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.document; 017 018 import java.sql.Date; 019 import java.util.LinkedHashMap; 020 import java.util.List; 021 022 import org.kuali.kfs.module.purap.businessobject.Carrier; 023 import org.kuali.kfs.module.purap.businessobject.CorrectionReceivingItem; 024 import org.kuali.kfs.module.purap.businessobject.DeliveryRequiredDateReason; 025 import org.kuali.kfs.module.purap.businessobject.LineItemReceivingItem; 026 import org.kuali.kfs.module.purap.businessobject.ReceivingItem; 027 import org.kuali.kfs.module.purap.document.service.ReceivingService; 028 import org.kuali.kfs.sys.KFSPropertyConstants; 029 import org.kuali.kfs.sys.context.SpringContext; 030 import org.kuali.kfs.vnd.businessobject.CampusParameter; 031 import org.kuali.kfs.vnd.businessobject.VendorDetail; 032 import org.kuali.rice.kew.dto.DocumentRouteStatusChangeDTO; 033 import org.kuali.rice.kns.bo.Country; 034 import org.kuali.rice.kns.util.ObjectUtils; 035 import org.kuali.rice.kns.util.TypedArrayList; 036 037 /** 038 * @author Kuali Nervous System Team (kualidev@oncourse.iu.edu) 039 */ 040 public class CorrectionReceivingDocument extends ReceivingDocumentBase { 041 042 protected String lineItemReceivingDocumentNumber; 043 //Collections 044 protected List<CorrectionReceivingItem> items; 045 046 protected LineItemReceivingDocument lineItemReceivingDocument; 047 048 /** 049 * Default constructor. 050 */ 051 public CorrectionReceivingDocument() { 052 super(); 053 items = new TypedArrayList(getItemClass()); 054 } 055 056 public void populateCorrectionReceivingFromReceivingLine(LineItemReceivingDocument rlDoc){ 057 058 //populate receiving line document from purchase order 059 this.setPurchaseOrderIdentifier( rlDoc.getPurchaseOrderIdentifier() ); 060 this.getDocumentHeader().setDocumentDescription( rlDoc.getDocumentHeader().getDocumentDescription()); 061 this.getDocumentHeader().setOrganizationDocumentNumber( rlDoc.getDocumentHeader().getOrganizationDocumentNumber() ); 062 this.setAccountsPayablePurchasingDocumentLinkIdentifier( rlDoc.getAccountsPayablePurchasingDocumentLinkIdentifier() ); 063 this.setLineItemReceivingDocumentNumber(rlDoc.getDocumentNumber()); 064 065 //copy receiving line items 066 for (LineItemReceivingItem rli : (List<LineItemReceivingItem>) rlDoc.getItems()) { 067 this.getItems().add(new CorrectionReceivingItem(rli, this)); 068 } 069 070 } 071 072 @Override 073 public void doRouteStatusChange(DocumentRouteStatusChangeDTO statusChangeEvent) { 074 075 if(this.getDocumentHeader().getWorkflowDocument().stateIsProcessed()) { 076 SpringContext.getBean(ReceivingService.class).completeCorrectionReceivingDocument(this); 077 } 078 super.doRouteStatusChange(statusChangeEvent); 079 } 080 081 /** 082 * Gets the lineItemReceivingDocumentNumber attribute. 083 * 084 * @return Returns the lineItemReceivingDocumentNumber 085 * 086 */ 087 public String getLineItemReceivingDocumentNumber() { 088 return lineItemReceivingDocumentNumber; 089 } 090 091 /** 092 * Sets the lineItemReceivingDocumentNumber attribute. 093 * 094 * @param lineItemReceivingDocumentNumber The lineItemReceivingDocumentNumber to set. 095 * 096 */ 097 public void setLineItemReceivingDocumentNumber(String lineItemReceivingDocumentNumber) { 098 this.lineItemReceivingDocumentNumber = lineItemReceivingDocumentNumber; 099 } 100 101 /** 102 * Gets the lineItemReceivingDocument attribute. 103 * @return Returns the lineItemReceivingDocument. 104 */ 105 public LineItemReceivingDocument getLineItemReceivingDocument() { 106 refreshLineReceivingDocument(); 107 return lineItemReceivingDocument; 108 } 109 110 @Override 111 public void processAfterRetrieve() { 112 super.processAfterRetrieve(); 113 refreshLineReceivingDocument(); 114 } 115 116 protected void refreshLineReceivingDocument(){ 117 if(ObjectUtils.isNull(lineItemReceivingDocument) || lineItemReceivingDocument.getDocumentNumber() == null){ 118 this.refreshReferenceObject("lineItemReceivingDocument"); 119 if (ObjectUtils.isNull(lineItemReceivingDocument.getDocumentHeader().getDocumentNumber())) { 120 lineItemReceivingDocument.refreshReferenceObject(KFSPropertyConstants.DOCUMENT_HEADER); 121 } 122 }else{ 123 if (ObjectUtils.isNull(lineItemReceivingDocument.getDocumentHeader().getDocumentNumber())) { 124 lineItemReceivingDocument.refreshReferenceObject(KFSPropertyConstants.DOCUMENT_HEADER); 125 } 126 } 127 } 128 129 public Integer getPurchaseOrderIdentifier() { 130 if (ObjectUtils.isNull(super.getPurchaseOrderIdentifier())){ 131 refreshLineReceivingDocument(); 132 if (ObjectUtils.isNotNull(lineItemReceivingDocument)){ 133 setPurchaseOrderIdentifier(lineItemReceivingDocument.getPurchaseOrderIdentifier()); 134 } 135 } 136 return super.getPurchaseOrderIdentifier(); 137 } 138 139 /** 140 * Sets the lineItemReceivingDocument attribute value. 141 * @param lineItemReceivingDocument The lineItemReceivingDocument to set. 142 * @deprecated 143 */ 144 public void setLineItemReceivingDocument(LineItemReceivingDocument lineItemReceivingDocument) { 145 this.lineItemReceivingDocument = lineItemReceivingDocument; 146 } 147 148 /** 149 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper() 150 */ 151 protected LinkedHashMap toStringMapper() { 152 LinkedHashMap m = new LinkedHashMap(); 153 m.put("documentNumber", this.documentNumber); 154 return m; 155 } 156 157 public Class getItemClass() { 158 return CorrectionReceivingItem.class; 159 } 160 161 public List getItems() { 162 return items; 163 } 164 165 public void setItems(List items) { 166 this.items = items; 167 } 168 169 public ReceivingItem getItem(int pos) { 170 return (ReceivingItem) items.get(pos); 171 } 172 173 public void addItem(ReceivingItem item) { 174 getItems().add(item); 175 } 176 177 public void deleteItem(int lineNum) { 178 if (getItems().remove(lineNum) == null) { 179 // throw error here 180 } 181 } 182 183 @Override 184 public Integer getAlternateVendorDetailAssignedIdentifier() { 185 return getLineItemReceivingDocument().getAlternateVendorDetailAssignedIdentifier(); 186 } 187 188 @Override 189 public Integer getAlternateVendorHeaderGeneratedIdentifier() { 190 return getLineItemReceivingDocument().getAlternateVendorHeaderGeneratedIdentifier(); 191 } 192 193 @Override 194 public String getAlternateVendorName() { 195 return getLineItemReceivingDocument().getAlternateVendorName(); 196 } 197 198 @Override 199 public String getAlternateVendorNumber() { 200 return getLineItemReceivingDocument().getAlternateVendorNumber(); 201 } 202 203 @Override 204 public Carrier getCarrier() { 205 return getLineItemReceivingDocument().getCarrier(); 206 } 207 208 @Override 209 public String getCarrierCode() { 210 return getLineItemReceivingDocument().getCarrierCode(); 211 } 212 213 @Override 214 public String getDeliveryBuildingCode() { 215 return getLineItemReceivingDocument().getDeliveryBuildingCode(); 216 } 217 218 @Override 219 public String getDeliveryBuildingLine1Address() { 220 return getLineItemReceivingDocument().getDeliveryBuildingLine1Address(); 221 } 222 223 @Override 224 public String getDeliveryBuildingLine2Address() { 225 return getLineItemReceivingDocument().getDeliveryBuildingLine2Address(); 226 } 227 228 @Override 229 public String getDeliveryBuildingName() { 230 return getLineItemReceivingDocument().getDeliveryBuildingName(); 231 } 232 233 @Override 234 public String getDeliveryBuildingRoomNumber() { 235 return getLineItemReceivingDocument().getDeliveryBuildingRoomNumber(); 236 } 237 238 @Override 239 public CampusParameter getDeliveryCampus() { 240 return getLineItemReceivingDocument().getDeliveryCampus(); 241 } 242 243 @Override 244 public String getDeliveryCampusCode() { 245 return getLineItemReceivingDocument().getDeliveryCampusCode(); 246 } 247 248 @Override 249 public String getDeliveryCityName() { 250 return getLineItemReceivingDocument().getDeliveryCityName(); 251 } 252 253 @Override 254 public String getDeliveryCountryCode() { 255 return getLineItemReceivingDocument().getDeliveryCountryCode(); 256 } 257 258 @Override 259 public String getDeliveryInstructionText() { 260 return getLineItemReceivingDocument().getDeliveryInstructionText(); 261 } 262 263 @Override 264 public String getDeliveryPostalCode() { 265 return getLineItemReceivingDocument().getDeliveryPostalCode(); 266 } 267 268 @Override 269 public Date getDeliveryRequiredDate() { 270 return getLineItemReceivingDocument().getDeliveryRequiredDate(); 271 } 272 273 @Override 274 public DeliveryRequiredDateReason getDeliveryRequiredDateReason() { 275 return getLineItemReceivingDocument().getDeliveryRequiredDateReason(); 276 } 277 278 @Override 279 public String getDeliveryRequiredDateReasonCode() { 280 return getLineItemReceivingDocument().getDeliveryRequiredDateReasonCode(); 281 } 282 283 @Override 284 public String getDeliveryStateCode() { 285 return getLineItemReceivingDocument().getDeliveryStateCode(); 286 } 287 288 @Override 289 public String getDeliveryToEmailAddress() { 290 return getLineItemReceivingDocument().getDeliveryToEmailAddress(); 291 } 292 293 @Override 294 public String getDeliveryToName() { 295 return getLineItemReceivingDocument().getDeliveryToName(); 296 } 297 298 @Override 299 public String getDeliveryToPhoneNumber() { 300 return getLineItemReceivingDocument().getDeliveryToPhoneNumber(); 301 } 302 303 @Override 304 public String getShipmentBillOfLadingNumber() { 305 return getLineItemReceivingDocument().getShipmentBillOfLadingNumber(); 306 } 307 308 @Override 309 public String getShipmentPackingSlipNumber() { 310 return getLineItemReceivingDocument().getShipmentPackingSlipNumber(); 311 } 312 313 @Override 314 public Date getShipmentReceivedDate() { 315 return getLineItemReceivingDocument().getShipmentReceivedDate(); 316 } 317 318 @Override 319 public String getShipmentReferenceNumber() { 320 return getLineItemReceivingDocument().getShipmentReferenceNumber(); 321 } 322 323 @Override 324 public Integer getVendorAddressGeneratedIdentifier() { 325 return getLineItemReceivingDocument().getVendorAddressGeneratedIdentifier(); 326 } 327 328 @Override 329 public String getVendorCityName() { 330 return getLineItemReceivingDocument().getVendorCityName(); 331 } 332 333 @Override 334 public Country getVendorCountry() { 335 return getLineItemReceivingDocument().getVendorCountry(); 336 } 337 338 @Override 339 public String getVendorCountryCode() { 340 return getLineItemReceivingDocument().getVendorCountryCode(); 341 } 342 343 @Override 344 public VendorDetail getVendorDetail() { 345 return getLineItemReceivingDocument().getVendorDetail(); 346 } 347 348 @Override 349 public Integer getVendorDetailAssignedIdentifier() { 350 return getLineItemReceivingDocument().getVendorDetailAssignedIdentifier(); 351 } 352 353 @Override 354 public Integer getVendorHeaderGeneratedIdentifier() { 355 return getLineItemReceivingDocument().getVendorHeaderGeneratedIdentifier(); 356 } 357 358 @Override 359 public String getVendorLine1Address() { 360 return getLineItemReceivingDocument().getVendorLine1Address(); 361 } 362 363 @Override 364 public String getVendorLine2Address() { 365 return getLineItemReceivingDocument().getVendorLine2Address(); 366 } 367 368 @Override 369 public String getVendorName() { 370 return getLineItemReceivingDocument().getVendorName(); 371 } 372 373 @Override 374 public String getVendorNumber() { 375 return getLineItemReceivingDocument().getVendorNumber(); 376 } 377 378 @Override 379 public String getVendorPostalCode() { 380 return getLineItemReceivingDocument().getVendorPostalCode(); 381 } 382 383 @Override 384 public String getVendorStateCode() { 385 return getLineItemReceivingDocument().getVendorStateCode(); 386 } 387 388 public List buildListOfDeletionAwareLists() { 389 List managedLists = super.buildListOfDeletionAwareLists(); 390 managedLists.add(this.getItems()); 391 return managedLists; 392 } 393 394 }