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 }