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 */
016package org.kuali.ole.select.document;
017
018import org.kuali.ole.module.purap.document.PurchaseOrderCloseDocument;
019import org.kuali.ole.module.purap.document.RequisitionDocument;
020import org.kuali.ole.select.document.service.OlePurchaseOrderDocumentHelperService;
021import org.kuali.ole.sys.OLEConstants;
022import org.kuali.ole.sys.context.SpringContext;
023import org.kuali.ole.vnd.businessobject.VendorAlias;
024import org.kuali.rice.krad.rules.rule.event.KualiDocumentEvent;
025
026import java.util.HashMap;
027import java.util.List;
028import java.util.Map;
029
030/**
031 * This class is the document class for Ole Purchase Order Close Document
032 */
033public class OlePurchaseOrderCloseDocument extends PurchaseOrderCloseDocument {
034    private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(OlePurchaseOrderCloseDocument.class);
035    private String vendorPoNumber;
036
037    /**
038     * Default constructor.
039     */
040    public OlePurchaseOrderCloseDocument() {
041        super();
042    }
043
044    /**
045     * This method is overridden to populate newly added ole fields from requisition into Ole Purchase Order Close Document.
046     *
047     * @see org.kuali.ole.module.purap.document.PurchaseOrderDocument#populatePurchaseOrderFromRequisition(org.kuali.ole.module.purap.document.RequisitionDocument)
048     */
049    @Override
050    public void populatePurchaseOrderFromRequisition(RequisitionDocument requisitionDocument) {
051        SpringContext.getBean(OlePurchaseOrderDocumentHelperService.class).populatePurchaseOrderFromRequisition(this, requisitionDocument);
052    }
053
054    /**
055     * This method is overriden to populate bib info in Ole Purchase Order Close Document.
056     *
057     * @see org.kuali.ole.module.purap.document.PurchaseOrderCloseDocument#prepareForSave(org.kuali.rice.krad.rule.event.KualiDocumentEvent)
058     */
059    @Override
060    public void prepareForSave(KualiDocumentEvent event) {
061        SpringContext.getBean(OlePurchaseOrderDocumentHelperService.class).prepareForSave(this, event);
062        super.prepareForSave(event);
063    }
064
065    /**
066     * This method is overriden to populate bib info in Ole Purchase Order Close Document.
067     *
068     * @see org.kuali.ole.module.purap.document.PurchaseOrderCloseDocument#prepareForSave(org.kuali.rice.krad.rule.event.KualiDocumentEvent)
069     */
070    @Override
071    public void processAfterRetrieve() {
072        if (this.getVendorAliasName() == null) {
073            populateVendorAliasName();
074        }
075     //   super.processAfterRetrieve();
076        SpringContext.getBean(OlePurchaseOrderDocumentHelperService.class).processAfterRetrieve(this);
077    }
078
079    @Override
080    public List getItemsActiveOnly() {
081        return SpringContext.getBean(OlePurchaseOrderDocumentHelperService.class).getItemsActiveOnly(this);
082    }
083
084    /**
085     * Gets the active items in this Purchase Order, and sets up the alternate amount for GL entry creation.
086     *
087     * @return the list of all active items in this Purchase Order.
088     */
089    @Override
090    public List getItemsActiveOnlySetupAlternateAmount() {
091        return SpringContext.getBean(OlePurchaseOrderDocumentHelperService.class).getItemsActiveOnlySetupAlternateAmount(this);
092    }
093
094    @Override
095    public boolean getAdditionalChargesExist() {
096        return SpringContext.getBean(OlePurchaseOrderDocumentHelperService.class).getAdditionalChargesExist(this);
097    }
098
099    /**
100     * This method returns if Purchase Order Document created is in Final Status
101     *
102     * @return
103     */
104    public boolean getIsFinalReqs() {
105        return SpringContext.getBean(OlePurchaseOrderDocumentHelperService.class).getIsFinalReqs(this);
106    }
107
108    public boolean getIsSplitPO() {
109        return SpringContext.getBean(OlePurchaseOrderDocumentHelperService.class).getIsSplitPO(this);
110    }
111
112    public boolean getIsReOpenPO() {
113        return SpringContext.getBean(OlePurchaseOrderDocumentHelperService.class).getIsReOpenPO(this);
114    }
115
116    /**
117     * This method is used to get the bibedtior creat url from propertie file
118     *
119     * @return Bibeditor creat url string
120     */
121    public String getBibeditorCreateURL() {
122        return SpringContext.getBean(OlePurchaseOrderDocumentHelperService.class).getBibeditorCreateURL();
123    }
124
125    public String getBibSearchURL() {
126        LOG.debug("Inside getBibSearchURL of OlePurchaseOrderCloseDocument");
127        return SpringContext.getBean(OlePurchaseOrderDocumentHelperService.class).getBibSearchURL();
128    }
129
130    /**
131     * This method is used to get the bibedtior edit url from propertie file
132     *
133     * @return Bibeditor edit url string
134     */
135    public String getBibeditorEditURL() {
136        return SpringContext.getBean(OlePurchaseOrderDocumentHelperService.class).getBibeditorEditURL();
137    }
138
139    /**
140     * This method is used to get the Instanceeditor url from propertie file
141     *
142     * @return Instanceeditor url string
143     */
144    public String getInstanceEditorURL() {
145        return SpringContext.getBean(OlePurchaseOrderDocumentHelperService.class).getInstanceEditorURL();
146    }
147
148    /**
149     * This method is used to get the bibedtior view url from propertie file
150     *
151     * @return Bibeditor view url string
152     */
153    public String getBibeditorViewURL() {
154        return SpringContext.getBean(OlePurchaseOrderDocumentHelperService.class).getBibeditorViewURL();
155    }
156
157    /**
158     * This method is used to get the directory path where the marc xml files need to be created
159     *
160     * @return Directory path string
161     */
162    public String getMarcXMLFileDirLocation() throws Exception {
163        return SpringContext.getBean(OlePurchaseOrderDocumentHelperService.class).getMarcXMLFileDirLocation();
164    }
165
166    public String getVendorPoNumber() {
167        return vendorPoNumber;
168    }
169
170    public void setVendorPoNumber(String vendorPoNumber) {
171        this.vendorPoNumber = vendorPoNumber;
172    }
173
174    /**
175     * This method is used to check the status of the document for displaying view and edit buttons in line item
176     *
177     * @return boolean
178     */
179    public boolean getIsSaved() {
180        if (this.getDocumentHeader().getWorkflowDocument().isSaved() || this.getDocumentHeader().getWorkflowDocument().isInitiated()) {
181            return true;
182        }
183        return false;
184    }
185
186    /**
187     * This method is used to get the dublin editor edit url from property file
188     *
189     * @return Dublineditor edit url string
190     */
191    public String getDublinEditorEditURL() {
192        return SpringContext.getBean(OlePurchaseOrderDocumentHelperService.class).getDublinEditorEditURL();
193    }
194
195    /**
196     * This method is used to get the dublin editor view url from property file
197     *
198     * @return dublineditor view url string
199     */
200    public String getDublinEditorViewURL() {
201        return SpringContext.getBean(OlePurchaseOrderDocumentHelperService.class).getDublinEditorViewURL();
202    }
203
204    public boolean getIsATypeOfRCVGDoc() {
205        return false;
206    }
207
208    public boolean getIsATypeOfCORRDoc() {
209        return false;
210    }
211
212    private void populateVendorAliasName() {
213        Map vendorDetailMap = new HashMap();
214        vendorDetailMap.put(OLEConstants.VENDOR_HEADER_IDENTIFIER, this.getVendorHeaderGeneratedIdentifier());
215        vendorDetailMap.put(OLEConstants.VENDOR_HEADER_IDENTIFIER, this.getVendorDetailAssignedIdentifier());
216        List<VendorAlias> vendorDetailList = (List) getBusinessObjectService().findMatching(VendorAlias.class, vendorDetailMap);
217        if (vendorDetailList != null && vendorDetailList.size() > 0) {
218            this.setVendorAliasName(vendorDetailList.get(0).getVendorAliasName());
219        }
220    }
221}