View Javadoc
1   /*
2    * Copyright 2008 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.ole.module.purap.document.service;
17  
18  import org.kuali.ole.module.purap.document.CorrectionReceivingDocument;
19  import org.kuali.ole.module.purap.document.LineItemReceivingDocument;
20  import org.kuali.ole.module.purap.document.PurchaseOrderDocument;
21  import org.kuali.ole.module.purap.document.ReceivingDocument;
22  import org.kuali.rice.kew.api.exception.WorkflowException;
23  
24  import java.util.HashMap;
25  import java.util.List;
26  
27  public interface ReceivingService {
28  
29      /**
30       * Populates a Receiving Line Document with information from a Purchase Order.
31       *
32       * @param rlDoc
33       */
34      public void populateReceivingLineFromPurchaseOrder(LineItemReceivingDocument rlDoc);
35  
36      /**
37       * Populates a Receiving Correction Document with information from a Receiving Line.
38       *
39       * @param rcDoc
40       */
41      public void populateCorrectionReceivingFromReceivingLine(CorrectionReceivingDocument rcDoc);
42  
43      /**
44       * A save is done passing the continue purap event so as to call a populate within
45       * prepare for save.
46       *
47       * @param rlDoc
48       * @throws WorkflowException
49       */
50      public void populateAndSaveLineItemReceivingDocument(LineItemReceivingDocument rlDoc) throws WorkflowException;
51  
52      /**
53       * Populates the receiving correction document.
54       *
55       * @param rcDoc
56       */
57      public void populateCorrectionReceivingDocument(CorrectionReceivingDocument rcDoc);
58  
59      /**
60       * Determines if a receiving line document can be created at the time the user requests it.
61       * This version looks up the current purchase order by po id and also excludes the current receiving
62       * document from the check.
63       *
64       * @param poId
65       * @param receivingDocumentNumber
66       * @return
67       * @throws RuntimeException
68       */
69      public boolean canCreateLineItemReceivingDocument(Integer poId, String receivingDocumentNumber) throws RuntimeException;
70  
71      public boolean canCreateLineItemReceivingDocument(PurchaseOrderDocument purchaseOrderDocument, String receivingDocumentNumber) throws RuntimeException;
72  
73      /**
74       * Determines if a receiving line document can be created at the time the user requests it.
75       * This version requires the purchase order being evaluated to be passed in.
76       *
77       * @param po
78       * @return
79       * @throws RuntimeException
80       */
81      public boolean canCreateLineItemReceivingDocument(PurchaseOrderDocument po) throws RuntimeException;
82  
83      /**
84       * @param rl
85       * @return
86       * @throws RuntimeException
87       */
88      public boolean canCreateCorrectionReceivingDocument(LineItemReceivingDocument rl) throws RuntimeException;
89  
90      /**
91       * @param rl
92       * @param receivingCorrectionDocNumber
93       * @return
94       * @throws RuntimeException
95       */
96      public boolean canCreateCorrectionReceivingDocument(LineItemReceivingDocument rl, String receivingCorrectionDocNumber) throws RuntimeException;
97  
98      /**
99       * Checks for duplicate Receiving Line documents and passes back a list of those found
100      * where vendor date, packing slip number or bill of lading match on previous receiving line
101      * documents by purchase order.
102      *
103      * @param rlDoc
104      * @return
105      */
106     public HashMap<String, String> receivingLineDuplicateMessages(LineItemReceivingDocument rlDoc);
107 
108     /**
109      * This method deletes unneeded items and updates the totals on the po and does any additional processing based on items i.e. FYI etc
110      *
111      * @param receivingDocument receiving document
112      */
113     public void completeReceivingDocument(ReceivingDocument receivingDocument);
114 
115     /**
116      * This method updates the corrected quantities on the receiving document.
117      *
118      * @param receivingDocument receivingCorrectionDocument
119      */
120     public void completeCorrectionReceivingDocument(ReceivingDocument correctionDocument);
121 
122     /**
123      * Adds a note to a receiving document.
124      *
125      * @param receivingDocument
126      * @param note
127      * @throws Exception
128      */
129     public void addNoteToReceivingDocument(ReceivingDocument receivingDocument, String note) throws Exception;
130 
131     /**
132      * Returns a delivery campus code on a receiving document based on the purchase order passed in.
133      *
134      * @param po
135      * @return
136      */
137     public String getReceivingDeliveryCampusCode(PurchaseOrderDocument po);
138 
139     /**
140      * Determines if there is at least one receiving line document that has gone to final for a purchase order.
141      *
142      * @param poId
143      * @return
144      * @throws RuntimeException
145      */
146     public boolean isLineItemReceivingDocumentGeneratedForPurchaseOrder(Integer poId) throws RuntimeException;
147 
148     public void createNoteForReturnedAndDamagedItems(ReceivingDocument recDoc);
149 
150     /**
151      * This method iterates all the line item receiving documents with Awaiting Purchase Order Open Status and approves it if the
152      * associated PO is available for amedment.
153      */
154     public void approveReceivingDocsForPOAmendment();
155 
156     /**
157      * Returns a list of line item receiving documents in process for a purchase order
158      *
159      * @param receivingDocumentNumber
160      * @return
161      */
162     public List<String> getLineItemReceivingDocumentNumbersInProcessForPurchaseOrder(Integer poId, String receivingDocumentNumber);
163 
164     /**
165      * Returns a list of line item receiving documents in final status for a purchase order
166      *
167      * @param receivingDocumentNumber
168      * @return
169      */
170     public List<LineItemReceivingDocument> getLineItemReceivingDocumentsInFinalForPurchaseOrder(Integer poId);
171 
172 
173     /**
174      * Returns a list of correction receiving documents in process for a purchase order
175      *
176      * @param poId
177      * @param receivingDocumentNumber
178      * @return
179      */
180     public List<String> getCorrectionReceivingDocumentNumbersInProcessForPurchaseOrder(Integer poId, String receivingDocumentNumber);
181 
182     /**
183      * Returns true, if the po is active for receiving document creation
184      */
185     public boolean isPurchaseOrderActiveForLineItemReceivingDocumentCreation(Integer poId);
186 
187     /**
188      * Checks if there're newly added items in the given LineItemReceivingDocument.
189      *
190      * @param rlDoc the given LineItemReceivingDocument
191      * @return true if there're newly added (unordered) items; false otherwise.
192      */
193     public boolean hasNewUnorderedItem(LineItemReceivingDocument rlDoc);
194 
195 }