/* * 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.sql.Date; import java.util.ArrayList; import java.util.List; import org.kuali.kfs.module.purap.businessobject.Carrier; import org.kuali.kfs.module.purap.businessobject.CorrectionReceivingItem; import org.kuali.kfs.module.purap.businessobject.DeliveryRequiredDateReason; import org.kuali.kfs.module.purap.businessobject.LineItemReceivingItem; import org.kuali.kfs.module.purap.businessobject.ReceivingItem; import org.kuali.kfs.module.purap.document.service.ReceivingService; import org.kuali.kfs.sys.KFSPropertyConstants; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.kfs.vnd.businessobject.CampusParameter; import org.kuali.kfs.vnd.businessobject.VendorDetail; import org.kuali.rice.kew.framework.postprocessor.DocumentRouteStatusChange; import org.kuali.rice.krad.util.ObjectUtils; import org.kuali.rice.location.framework.country.CountryEbo; /** * @author Kuali Nervous System Team (kualidev@oncourse.iu.edu) */ public class CorrectionReceivingDocument extends ReceivingDocumentBase { protected String lineItemReceivingDocumentNumber; //Collections protected List<CorrectionReceivingItem> items; protected LineItemReceivingDocument lineItemReceivingDocument; /** * Default constructor. */ public CorrectionReceivingDocument() { super(); items = new ArrayList<CorrectionReceivingItem>(); } public void populateCorrectionReceivingFromReceivingLine(LineItemReceivingDocument rlDoc){ //populate receiving line document from purchase order this.setPurchaseOrderIdentifier( rlDoc.getPurchaseOrderIdentifier() ); this.getDocumentHeader().setDocumentDescription( rlDoc.getDocumentHeader().getDocumentDescription()); this.getDocumentHeader().setOrganizationDocumentNumber( rlDoc.getDocumentHeader().getOrganizationDocumentNumber() ); this.setAccountsPayablePurchasingDocumentLinkIdentifier( rlDoc.getAccountsPayablePurchasingDocumentLinkIdentifier() ); this.setLineItemReceivingDocumentNumber(rlDoc.getDocumentNumber()); //copy receiving line items for (LineItemReceivingItem rli : (List<LineItemReceivingItem>) rlDoc.getItems()) { this.getItems().add(new CorrectionReceivingItem(rli, this)); } } @Override public void doRouteStatusChange(DocumentRouteStatusChange statusChangeEvent) { if(this.getFinancialSystemDocumentHeader().getWorkflowDocument().isProcessed()) { SpringContext.getBean(ReceivingService.class).completeCorrectionReceivingDocument(this); } super.doRouteStatusChange(statusChangeEvent); } /** * Gets the lineItemReceivingDocumentNumber attribute. * * @return Returns the lineItemReceivingDocumentNumber * */ public String getLineItemReceivingDocumentNumber() { return lineItemReceivingDocumentNumber; } /** * Sets the lineItemReceivingDocumentNumber attribute. * * @param lineItemReceivingDocumentNumber The lineItemReceivingDocumentNumber to set. * */ public void setLineItemReceivingDocumentNumber(String lineItemReceivingDocumentNumber) { this.lineItemReceivingDocumentNumber = lineItemReceivingDocumentNumber; } /** * Gets the lineItemReceivingDocument attribute. * @return Returns the lineItemReceivingDocument. */ public LineItemReceivingDocument getLineItemReceivingDocument() { refreshLineReceivingDocument(); return lineItemReceivingDocument; } @Override public void processAfterRetrieve() { super.processAfterRetrieve(); refreshLineReceivingDocument(); } protected void refreshLineReceivingDocument(){ if(ObjectUtils.isNull(lineItemReceivingDocument) || lineItemReceivingDocument.getDocumentNumber() == null){ this.refreshReferenceObject("lineItemReceivingDocument"); if (ObjectUtils.isNull(lineItemReceivingDocument.getDocumentHeader().getDocumentNumber())) { lineItemReceivingDocument.refreshReferenceObject(KFSPropertyConstants.DOCUMENT_HEADER); } }else{ if (ObjectUtils.isNull(lineItemReceivingDocument.getDocumentHeader().getDocumentNumber())) { lineItemReceivingDocument.refreshReferenceObject(KFSPropertyConstants.DOCUMENT_HEADER); } } } @Override public Integer getPurchaseOrderIdentifier() { if (ObjectUtils.isNull(super.getPurchaseOrderIdentifier())){ refreshLineReceivingDocument(); if (ObjectUtils.isNotNull(lineItemReceivingDocument)){ setPurchaseOrderIdentifier(lineItemReceivingDocument.getPurchaseOrderIdentifier()); } } return super.getPurchaseOrderIdentifier(); } /** * Sets the lineItemReceivingDocument attribute value. * @param lineItemReceivingDocument The lineItemReceivingDocument to set. * @deprecated */ public void setLineItemReceivingDocument(LineItemReceivingDocument lineItemReceivingDocument) { this.lineItemReceivingDocument = lineItemReceivingDocument; } @Override public Class getItemClass() { return CorrectionReceivingItem.class; } @Override public List getItems() { return items; } @Override public void setItems(List items) { this.items = items; } @Override public ReceivingItem getItem(int pos) { return (ReceivingItem) items.get(pos); } public void addItem(ReceivingItem item) { getItems().add(item); } public void deleteItem(int lineNum) { if (getItems().remove(lineNum) == null) { // throw error here } } @Override public Integer getAlternateVendorDetailAssignedIdentifier() { return getLineItemReceivingDocument().getAlternateVendorDetailAssignedIdentifier(); } @Override public Integer getAlternateVendorHeaderGeneratedIdentifier() { return getLineItemReceivingDocument().getAlternateVendorHeaderGeneratedIdentifier(); } @Override public String getAlternateVendorName() { return getLineItemReceivingDocument().getAlternateVendorName(); } @Override public String getAlternateVendorNumber() { return getLineItemReceivingDocument().getAlternateVendorNumber(); } @Override public Carrier getCarrier() { return getLineItemReceivingDocument().getCarrier(); } @Override public String getCarrierCode() { return getLineItemReceivingDocument().getCarrierCode(); } @Override public String getDeliveryBuildingCode() { return getLineItemReceivingDocument().getDeliveryBuildingCode(); } @Override public String getDeliveryBuildingLine1Address() { return getLineItemReceivingDocument().getDeliveryBuildingLine1Address(); } @Override public String getDeliveryBuildingLine2Address() { return getLineItemReceivingDocument().getDeliveryBuildingLine2Address(); } @Override public String getDeliveryBuildingName() { return getLineItemReceivingDocument().getDeliveryBuildingName(); } @Override public String getDeliveryBuildingRoomNumber() { return getLineItemReceivingDocument().getDeliveryBuildingRoomNumber(); } @Override public CampusParameter getDeliveryCampus() { return getLineItemReceivingDocument().getDeliveryCampus(); } @Override public String getDeliveryCampusCode() { return getLineItemReceivingDocument().getDeliveryCampusCode(); } @Override public String getDeliveryCityName() { return getLineItemReceivingDocument().getDeliveryCityName(); } @Override public String getDeliveryCountryCode() { return getLineItemReceivingDocument().getDeliveryCountryCode(); } @Override public String getDeliveryInstructionText() { return getLineItemReceivingDocument().getDeliveryInstructionText(); } @Override public String getDeliveryPostalCode() { return getLineItemReceivingDocument().getDeliveryPostalCode(); } @Override public Date getDeliveryRequiredDate() { return getLineItemReceivingDocument().getDeliveryRequiredDate(); } @Override public DeliveryRequiredDateReason getDeliveryRequiredDateReason() { return getLineItemReceivingDocument().getDeliveryRequiredDateReason(); } @Override public String getDeliveryRequiredDateReasonCode() { return getLineItemReceivingDocument().getDeliveryRequiredDateReasonCode(); } @Override public String getDeliveryStateCode() { return getLineItemReceivingDocument().getDeliveryStateCode(); } @Override public String getDeliveryToEmailAddress() { return getLineItemReceivingDocument().getDeliveryToEmailAddress(); } @Override public String getDeliveryToName() { return getLineItemReceivingDocument().getDeliveryToName(); } @Override public String getDeliveryToPhoneNumber() { return getLineItemReceivingDocument().getDeliveryToPhoneNumber(); } @Override public String getShipmentBillOfLadingNumber() { return getLineItemReceivingDocument().getShipmentBillOfLadingNumber(); } @Override public String getShipmentPackingSlipNumber() { return getLineItemReceivingDocument().getShipmentPackingSlipNumber(); } @Override public Date getShipmentReceivedDate() { return getLineItemReceivingDocument().getShipmentReceivedDate(); } @Override public String getShipmentReferenceNumber() { return getLineItemReceivingDocument().getShipmentReferenceNumber(); } @Override public Integer getVendorAddressGeneratedIdentifier() { return getLineItemReceivingDocument().getVendorAddressGeneratedIdentifier(); } @Override public String getVendorCityName() { return getLineItemReceivingDocument().getVendorCityName(); } @Override public CountryEbo getVendorCountry() { return getLineItemReceivingDocument().getVendorCountry(); } @Override public String getVendorCountryCode() { return getLineItemReceivingDocument().getVendorCountryCode(); } @Override public VendorDetail getVendorDetail() { return getLineItemReceivingDocument().getVendorDetail(); } @Override public Integer getVendorDetailAssignedIdentifier() { return getLineItemReceivingDocument().getVendorDetailAssignedIdentifier(); } @Override public Integer getVendorHeaderGeneratedIdentifier() { return getLineItemReceivingDocument().getVendorHeaderGeneratedIdentifier(); } @Override public String getVendorLine1Address() { return getLineItemReceivingDocument().getVendorLine1Address(); } @Override public String getVendorLine2Address() { return getLineItemReceivingDocument().getVendorLine2Address(); } @Override public String getVendorName() { return getLineItemReceivingDocument().getVendorName(); } @Override public String getVendorNumber() { return getLineItemReceivingDocument().getVendorNumber(); } @Override public String getVendorPostalCode() { return getLineItemReceivingDocument().getVendorPostalCode(); } @Override public String getVendorStateCode() { return getLineItemReceivingDocument().getVendorStateCode(); } @Override public List buildListOfDeletionAwareLists() { List managedLists = super.buildListOfDeletionAwareLists(); managedLists.add(this.getItems()); return managedLists; } }