1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.ole.select.document.service.impl;
17
18 import org.apache.commons.lang.StringUtils;
19 import org.kuali.ole.docstore.common.client.DocstoreClientLocator;
20 import org.kuali.ole.docstore.common.document.*;
21 import org.kuali.ole.DocumentUniqueIDPrefix;
22 import org.kuali.ole.docstore.common.document.content.instance.xstream.HoldingOlemlRecordProcessor;
23 import org.kuali.ole.docstore.common.document.content.instance.xstream.InstanceOlemlRecordProcessor;
24 import org.kuali.ole.docstore.common.document.content.instance.xstream.ItemOlemlRecordProcessor;
25 import org.kuali.ole.integration.purap.CapitalAssetSystem;
26 import org.kuali.ole.module.purap.PurapConstants;
27 import org.kuali.ole.module.purap.PurapConstants.PurchaseOrderStatuses;
28 import org.kuali.ole.module.purap.businessobject.*;
29 import org.kuali.ole.module.purap.document.PurchaseOrderDocument;
30 import org.kuali.ole.module.purap.document.PurchasingAccountsPayableDocument;
31 import org.kuali.ole.module.purap.document.RequisitionDocument;
32 import org.kuali.ole.module.purap.document.service.OlePurapService;
33 import org.kuali.ole.select.OleSelectConstant;
34 import org.kuali.ole.select.OleSelectNotificationConstant;
35 import org.kuali.ole.select.businessobject.*;
36 import org.kuali.ole.select.document.OlePurchaseOrderDocument;
37 import org.kuali.ole.select.document.OleRequisitionDocument;
38 import org.kuali.ole.select.document.service.OlePurchaseOrderDocumentHelperService;
39 import org.kuali.ole.select.document.service.OleRequestorService;
40 import org.kuali.ole.select.document.service.OleSelectDocumentService;
41 import org.kuali.ole.select.service.BibInfoWrapperService;
42 import org.kuali.ole.select.service.FileProcessingService;
43 import org.kuali.ole.select.service.OleUrlResolver;
44 import org.kuali.ole.select.service.impl.BibInfoWrapperServiceImpl;
45 import org.kuali.ole.sys.OLEConstants;
46 import org.kuali.ole.sys.context.SpringContext;
47 import org.kuali.rice.core.api.config.property.ConfigurationService;
48 import org.kuali.rice.core.api.datetime.DateTimeService;
49 import org.kuali.rice.core.api.util.type.KualiDecimal;
50 import org.kuali.rice.core.api.util.type.KualiInteger;
51 import org.kuali.rice.kew.api.WorkflowDocument;
52 import org.kuali.rice.kew.api.exception.WorkflowException;
53 import org.kuali.rice.kim.api.identity.Person;
54 import org.kuali.rice.kim.api.identity.PersonService;
55 import org.kuali.rice.krad.UserSession;
56 import org.kuali.rice.krad.rules.rule.event.KualiDocumentEvent;
57 import org.kuali.rice.krad.service.KRADServiceLocator;
58 import org.kuali.rice.krad.util.GlobalVariables;
59 import java.math.BigDecimal;
60 import java.util.*;
61
62 public class OlePurchaseOrderDocumentHelperServiceImpl implements OlePurchaseOrderDocumentHelperService {
63
64 protected static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(OlePurchaseOrderDocumentHelperServiceImpl.class);
65 private final String UPDATE_EXISTING_DOCSTORE_RECORD_QUERY_STRING = "docAction=checkIn&stringContent=";
66 private final String CHECKOUT_DOCSTORE_RECORD_QUERY_STRING = "docAction=checkOut&uuid=";
67 private final String CREATE_NEW_DOCSTORE_RECORD_QUERY_STRING = "docAction=ingestContent&stringContent=";
68 private ItemOlemlRecordProcessor itemOlemlRecordProcessor;
69 private HoldingOlemlRecordProcessor holdingOlemlRecordProcessor;
70 private InstanceOlemlRecordProcessor instanceOlemlRecordProcessor;
71 private transient OleUrlResolver oleUrlResolver;
72 private static transient OlePatronRecordHandler olePatronRecordHandler;
73 private static transient OlePatronDocumentList olePatronDocumentList;
74 private static transient OleSelectDocumentService oleSelectDocumentService;
75 private static transient OlePurapService olePurapService;
76 private DocstoreClientLocator docstoreClientLocator;
77 protected ConfigurationService kualiConfigurationService;
78
79 public DocstoreClientLocator getDocstoreClientLocator() {
80 if (docstoreClientLocator == null) {
81 docstoreClientLocator = SpringContext.getBean(DocstoreClientLocator.class);
82 }
83 return docstoreClientLocator;
84 }
85 public static OleSelectDocumentService getOleSelectDocumentService() {
86 if (oleSelectDocumentService == null) {
87 oleSelectDocumentService = SpringContext.getBean(OleSelectDocumentService.class);
88 }
89 return oleSelectDocumentService;
90 }
91
92 public static void setOleSelectDocumentService(OleSelectDocumentService oleSelectDocumentService) {
93 OlePurchaseOrderDocumentHelperServiceImpl.oleSelectDocumentService = oleSelectDocumentService;
94 }
95
96 public static OlePatronDocumentList getOlePatronDocumentList() {
97 if (olePatronDocumentList == null) {
98 olePatronDocumentList = SpringContext.getBean(OlePatronDocumentList.class);
99 }
100 return olePatronDocumentList;
101 }
102
103 public static void setOlePatronDocumentList(OlePatronDocumentList olePatronDocumentList) {
104 OlePurchaseOrderDocumentHelperServiceImpl.olePatronDocumentList = olePatronDocumentList;
105 }
106
107
108 public OlePatronRecordHandler getOlePatronRecordHandler() {
109 if (null == olePatronRecordHandler) {
110 olePatronRecordHandler = new OlePatronRecordHandler();
111 }
112 return olePatronRecordHandler;
113 }
114
115 public void setOlePatronRecordHandler(OlePatronRecordHandler olePatronRecordHandler) {
116 this.olePatronRecordHandler = olePatronRecordHandler;
117 }
118
119 public static OlePurapService getOlePurapService() {
120 if (olePurapService == null) {
121 olePurapService = SpringContext.getBean(OlePurapService.class);
122 }
123 return olePurapService;
124 }
125
126 public static void setOlePurapService(OlePurapService olePurapService) {
127 OlePurchaseOrderDocumentHelperServiceImpl.olePurapService = olePurapService;
128 }
129
130
131
132
133
134
135
136 @Override
137 public void populatePurchaseOrderFromRequisition(PurchaseOrderDocument purchaseOrderDoc, RequisitionDocument requisitionDoc) {
138 LOG.debug("Inside populatePurchaseOrderFromRequisition of OlePurchaseOrderDocumentHelperServiceImpl");
139 OlePurchaseOrderDocument purchaseOrderDocument = (OlePurchaseOrderDocument) purchaseOrderDoc;
140 OleRequisitionDocument requisitionDocument = (OleRequisitionDocument) requisitionDoc;
141 purchaseOrderDocument.setPurchaseOrderCreateTimestamp(SpringContext.getBean(DateTimeService.class).getCurrentTimestamp());
142 purchaseOrderDocument.getDocumentHeader().setOrganizationDocumentNumber(requisitionDocument.getDocumentHeader().getOrganizationDocumentNumber());
143 purchaseOrderDocument.getDocumentHeader().setDocumentDescription(requisitionDocument.getDocumentHeader().getDocumentDescription());
144 purchaseOrderDocument.getDocumentHeader().setExplanation(requisitionDocument.getDocumentHeader().getExplanation());
145 purchaseOrderDocument.setBillingName(requisitionDocument.getBillingName());
146 purchaseOrderDocument.setBillingLine1Address(requisitionDocument.getBillingLine1Address());
147 purchaseOrderDocument.setBillingLine2Address(requisitionDocument.getBillingLine2Address());
148 purchaseOrderDocument.setBillingCityName(requisitionDocument.getBillingCityName());
149 purchaseOrderDocument.setBillingStateCode(requisitionDocument.getBillingStateCode());
150 purchaseOrderDocument.setBillingPostalCode(requisitionDocument.getBillingPostalCode());
151 purchaseOrderDocument.setBillingCountryCode(requisitionDocument.getBillingCountryCode());
152 purchaseOrderDocument.setBillingPhoneNumber(requisitionDocument.getBillingPhoneNumber());
153
154 purchaseOrderDocument.setReceivingName(requisitionDocument.getReceivingName());
155 purchaseOrderDocument.setReceivingCityName(requisitionDocument.getReceivingCityName());
156 purchaseOrderDocument.setReceivingLine1Address(requisitionDocument.getReceivingLine1Address());
157 purchaseOrderDocument.setReceivingLine2Address(requisitionDocument.getReceivingLine2Address());
158 purchaseOrderDocument.setReceivingStateCode(requisitionDocument.getReceivingStateCode());
159 purchaseOrderDocument.setReceivingPostalCode(requisitionDocument.getReceivingPostalCode());
160 purchaseOrderDocument.setReceivingCountryCode(requisitionDocument.getReceivingCountryCode());
161 purchaseOrderDocument.setAddressToVendorIndicator(requisitionDocument.getAddressToVendorIndicator());
162
163 purchaseOrderDocument.setDeliveryBuildingCode(requisitionDocument.getDeliveryBuildingCode());
164 purchaseOrderDocument.setDeliveryBuildingRoomNumber(requisitionDocument.getDeliveryBuildingRoomNumber());
165 purchaseOrderDocument.setDeliveryBuildingName(requisitionDocument.getDeliveryBuildingName());
166 purchaseOrderDocument.setDeliveryCampusCode(requisitionDocument.getDeliveryCampusCode());
167 purchaseOrderDocument.setDeliveryCityName(requisitionDocument.getDeliveryCityName());
168 purchaseOrderDocument.setDeliveryCountryCode(requisitionDocument.getDeliveryCountryCode());
169 purchaseOrderDocument.setDeliveryInstructionText(requisitionDocument.getDeliveryInstructionText());
170 purchaseOrderDocument.setDeliveryBuildingLine1Address(requisitionDocument.getDeliveryBuildingLine1Address());
171 purchaseOrderDocument.setDeliveryBuildingLine2Address(requisitionDocument.getDeliveryBuildingLine2Address());
172 purchaseOrderDocument.setDeliveryPostalCode(requisitionDocument.getDeliveryPostalCode());
173 purchaseOrderDocument.setDeliveryRequiredDate(requisitionDocument.getDeliveryRequiredDate());
174 purchaseOrderDocument.setDeliveryRequiredDateReasonCode(requisitionDocument.getDeliveryRequiredDateReasonCode());
175 purchaseOrderDocument.setDeliveryStateCode(requisitionDocument.getDeliveryStateCode());
176 purchaseOrderDocument.setDeliveryToEmailAddress(requisitionDocument.getDeliveryToEmailAddress());
177 purchaseOrderDocument.setDeliveryToName(requisitionDocument.getDeliveryToName());
178 purchaseOrderDocument.setDeliveryToPhoneNumber(requisitionDocument.getDeliveryToPhoneNumber());
179 purchaseOrderDocument.setDeliveryBuildingOtherIndicator(requisitionDocument.isDeliveryBuildingOtherIndicator());
180 purchaseOrderDocument.setPurchaseOrderTypeId(requisitionDocument.getPurchaseOrderTypeId());
181 purchaseOrderDocument.setPurchaseOrderBeginDate(requisitionDocument.getPurchaseOrderBeginDate());
182 purchaseOrderDocument.setPurchaseOrderCostSourceCode(requisitionDocument.getPurchaseOrderCostSourceCode());
183 purchaseOrderDocument.setPostingYear(requisitionDocument.getPostingYear());
184 purchaseOrderDocument.setPurchaseOrderEndDate(requisitionDocument.getPurchaseOrderEndDate());
185 purchaseOrderDocument.setChartOfAccountsCode(requisitionDocument.getChartOfAccountsCode());
186 purchaseOrderDocument.setDocumentFundingSourceCode(requisitionDocument.getDocumentFundingSourceCode());
187 purchaseOrderDocument.setInstitutionContactEmailAddress(requisitionDocument.getInstitutionContactEmailAddress());
188 purchaseOrderDocument.setInstitutionContactName(requisitionDocument.getInstitutionContactName());
189 purchaseOrderDocument.setInstitutionContactPhoneNumber(requisitionDocument.getInstitutionContactPhoneNumber());
190 purchaseOrderDocument.setNonInstitutionFundAccountNumber(requisitionDocument.getNonInstitutionFundAccountNumber());
191 purchaseOrderDocument.setNonInstitutionFundChartOfAccountsCode(requisitionDocument.getNonInstitutionFundChartOfAccountsCode());
192 purchaseOrderDocument.setNonInstitutionFundOrgChartOfAccountsCode(requisitionDocument.getNonInstitutionFundOrgChartOfAccountsCode());
193 purchaseOrderDocument.setNonInstitutionFundOrganizationCode(requisitionDocument.getNonInstitutionFundOrganizationCode());
194 purchaseOrderDocument.setOrganizationCode(requisitionDocument.getOrganizationCode());
195 purchaseOrderDocument.setRecurringPaymentTypeCode(requisitionDocument.getRecurringPaymentTypeCode());
196 purchaseOrderDocument.setRequestorPersonEmailAddress(requisitionDocument.getRequestorPersonEmailAddress());
197 purchaseOrderDocument.setRequestorPersonName(requisitionDocument.getRequestorPersonName());
198 purchaseOrderDocument.setRequestorPersonPhoneNumber(requisitionDocument.getRequestorPersonPhoneNumber());
199 purchaseOrderDocument.setRequisitionIdentifier(requisitionDocument.getPurapDocumentIdentifier());
200 purchaseOrderDocument.setPurchaseOrderTotalLimit(requisitionDocument.getPurchaseOrderTotalLimit());
201 purchaseOrderDocument.setPurchaseOrderTransmissionMethodCode(requisitionDocument.getPurchaseOrderTransmissionMethodCode());
202 purchaseOrderDocument.setUseTaxIndicator(requisitionDocument.isUseTaxIndicator());
203 purchaseOrderDocument.setPurchaseOrderTypeId(requisitionDocument.getPurchaseOrderTypeId());
204 purchaseOrderDocument.setVendorCityName(requisitionDocument.getVendorCityName());
205 purchaseOrderDocument.setVendorContractGeneratedIdentifier(requisitionDocument.getVendorContractGeneratedIdentifier());
206 purchaseOrderDocument.setVendorCountryCode(requisitionDocument.getVendorCountryCode());
207 purchaseOrderDocument.setVendorCustomerNumber(requisitionDocument.getVendorCustomerNumber());
208 purchaseOrderDocument.setVendorAttentionName(requisitionDocument.getVendorAttentionName());
209 purchaseOrderDocument.setVendorDetailAssignedIdentifier(requisitionDocument.getVendorDetailAssignedIdentifier());
210 purchaseOrderDocument.setVendorFaxNumber(requisitionDocument.getVendorFaxNumber());
211 purchaseOrderDocument.setVendorHeaderGeneratedIdentifier(requisitionDocument.getVendorHeaderGeneratedIdentifier());
212 purchaseOrderDocument.setVendorLine1Address(requisitionDocument.getVendorLine1Address());
213 purchaseOrderDocument.setVendorLine2Address(requisitionDocument.getVendorLine2Address());
214 purchaseOrderDocument.setVendorAddressInternationalProvinceName(requisitionDocument.getVendorAddressInternationalProvinceName());
215 purchaseOrderDocument.setVendorName(requisitionDocument.getVendorName());
216 purchaseOrderDocument.setVendorNoteText(requisitionDocument.getVendorNoteText());
217 purchaseOrderDocument.setVendorPhoneNumber(requisitionDocument.getVendorPhoneNumber());
218 purchaseOrderDocument.setVendorPostalCode(requisitionDocument.getVendorPostalCode());
219 purchaseOrderDocument.setVendorStateCode(requisitionDocument.getVendorStateCode());
220 purchaseOrderDocument.setVendorRestrictedIndicator(requisitionDocument.getVendorRestrictedIndicator());
221 purchaseOrderDocument.setVendorPoNumber(requisitionDocument.getVendorPoNumber());
222 purchaseOrderDocument.setExternalOrganizationB2bSupplierIdentifier(requisitionDocument.getExternalOrganizationB2bSupplierIdentifier());
223 purchaseOrderDocument.setRequisitionSourceCode(requisitionDocument.getRequisitionSourceCode());
224 purchaseOrderDocument.setAccountsPayablePurchasingDocumentLinkIdentifier(requisitionDocument.getAccountsPayablePurchasingDocumentLinkIdentifier());
225 purchaseOrderDocument.setReceivingDocumentRequiredIndicator(requisitionDocument.isReceivingDocumentRequiredIndicator());
226 purchaseOrderDocument.setPaymentRequestPositiveApprovalIndicator(requisitionDocument.isPaymentRequestPositiveApprovalIndicator());
227
228
229
230 purchaseOrderDocument.setStatusCode(PurapConstants.PurchaseOrderStatuses.APPDOC_IN_PROCESS);
231
232
233 List<OlePurchaseOrderItem> items = new ArrayList();
234 for (PurApItem reqItem : ((PurchasingAccountsPayableDocument) requisitionDocument).getItems()) {
235 RequisitionCapitalAssetItem reqCamsItem = (RequisitionCapitalAssetItem) requisitionDocument.getPurchasingCapitalAssetItemByItemIdentifier(reqItem.getItemIdentifier().intValue());
236 items.add(new OlePurchaseOrderItem((OleRequisitionItem) reqItem, purchaseOrderDocument, reqCamsItem));
237 }
238 purchaseOrderDocument.setItems(items);
239
240
241 purchaseOrderDocument.setCapitalAssetSystemTypeCode(requisitionDocument.getCapitalAssetSystemTypeCode());
242 purchaseOrderDocument.setCapitalAssetSystemStateCode(requisitionDocument.getCapitalAssetSystemStateCode());
243 for (CapitalAssetSystem capitalAssetSystem : requisitionDocument.getPurchasingCapitalAssetSystems()) {
244 purchaseOrderDocument.getPurchasingCapitalAssetSystems().add(new PurchaseOrderCapitalAssetSystem(capitalAssetSystem));
245 }
246
247 purchaseOrderDocument.fixItemReferences();
248 }
249
250
251
252
253
254
255 @Override
256 public void prepareForSave(PurchaseOrderDocument purchaseOrderDocument, KualiDocumentEvent event) {
257 LOG.debug("Inside prepareForSave of OlePurchaseOrderDocumentHelperServiceImpl");
258 WorkflowDocument workFlowDocument = purchaseOrderDocument.getDocumentHeader().getWorkflowDocument();
259 try {
260 List<OlePurchaseOrderItem> items = purchaseOrderDocument.getItems();
261 Iterator iterator = items.iterator();
262 while (iterator.hasNext()) {
263 Object object = iterator.next();
264 if (object instanceof OlePurchaseOrderItem) {
265 OlePurchaseOrderItem singleItem = (OlePurchaseOrderItem) object;
266 if ((!StringUtils.isEmpty(singleItem.getInternalRequestorId()) || !StringUtils.isEmpty(singleItem
267 .getRequestorId())) && singleItem.getRequestorTypeId() == null) {
268 KualiInteger staffRequestorTypeId = getRequestorTypeId(OleSelectConstant.REQUESTOR_TYPE_STAFF);
269 singleItem.setRequestorTypeId(staffRequestorTypeId.intValue());
270 }
271 }
272 }
273 } catch (Exception e) {
274 LOG.error("Exception in OlePurchaseOrderDocumentHelperServiceImpl:prepareForSave: " + e.getMessage());
275 throw new RuntimeException(e);
276 }
277 if (event instanceof org.kuali.rice.krad.rules.rule.event.RouteDocumentEvent &&
278 purchaseOrderDocument.getRequisitionIdentifier() == null) {
279 try {
280 UserSession userSession = GlobalVariables.getUserSession();
281
282
283 String user = null;
284 if (GlobalVariables.getUserSession() == null) {
285 kualiConfigurationService = SpringContext.getBean(ConfigurationService.class);
286 user = kualiConfigurationService.getPropertyValueAsString(getOleSelectDocumentService().getSelectParameterValue(OleSelectNotificationConstant.ACCOUNT_DOCUMENT_INTIATOR));
287 GlobalVariables.setUserSession(new UserSession(user));
288 }
289 RequisitionDocument rdoc = SpringContext.getBean(org.kuali.ole.module.purap.document.service.RequisitionService.class)
290 .generateRequisitionFromPurchaseOrder(purchaseOrderDocument);
291 if (LOG.isDebugEnabled()) {
292 LOG.debug("Requisition Document Status Code---->" + rdoc.getApplicationDocumentStatus());
293 }
294 rdoc.setRequisitionSourceCode("STAN");
295 List adhocRouteRecipientList = new ArrayList();
296 adhocRouteRecipientList.addAll(purchaseOrderDocument.getAdHocRoutePersons());
297 adhocRouteRecipientList.addAll(purchaseOrderDocument.getAdHocRouteWorkgroups());
298 SpringContext.getBean(org.kuali.rice.krad.service.DocumentService.class).blanketApproveDocument(rdoc, "Automatic Approval From PO", adhocRouteRecipientList);
299 GlobalVariables.setUserSession(userSession);
300 purchaseOrderDocument.setAccountsPayablePurchasingDocumentLinkIdentifier(rdoc.getPurapDocumentIdentifier());
301 purchaseOrderDocument.setRequisitionIdentifier(rdoc.getPurapDocumentIdentifier());
302 } catch (WorkflowException e) {
303 LOG.error("Exception in OlePurchaseOrderDocumentHelperServiceImpl:prepareForSave: " + e.getMessage());
304 throw new RuntimeException("Error in OlePurchaseOrderDocumentHelperServiceImpl:prepareForSave: " + e.getMessage());
305 }
306
307 purchaseOrderDocument.setStatusCode(PurchaseOrderStatuses.APPDOC_IN_PROCESS);
308 }
309 }
310
311 private KualiInteger getRequestorTypeId(String requestorType) {
312 KualiInteger requestorTypeId = null;
313 Map<String, Object> criteria = new HashMap<String, Object>();
314 criteria.put(OleSelectConstant.REQUESTOR_TYPE, requestorType);
315 org.kuali.rice.krad.service.BusinessObjectService businessObjectService = SpringContext.getBean(org.kuali.rice.krad.service.BusinessObjectService.class);
316 Collection<OleRequestorType> requestorTypeList = businessObjectService.findMatching(OleRequestorType.class, criteria);
317 requestorTypeId = new KualiInteger(requestorTypeList.iterator().next().getRequestorTypeId());
318 return requestorTypeId;
319 }
320
321 protected void setRequestorNameOnItem(OlePurchasingItem singleItem) {
322 String requestorFirstName = singleItem.getRequestorFirstName();
323 if ((singleItem.getRequestorId() != null) || (singleItem.getInternalRequestorId() != null)) {
324 int requestorTypeId = singleItem.getRequestorTypeId();
325 Map requestorTypeIdMap = new HashMap();
326 requestorTypeIdMap.put("requestorTypeId", requestorTypeId);
327 org.kuali.rice.krad.service.BusinessObjectService businessObjectService = SpringContext.getBean(org.kuali.rice.krad.service.BusinessObjectService.class);
328 List<OleRequestorType> oleRequestorTypeList = (List) businessObjectService.findMatching(OleRequestorType.class, requestorTypeIdMap);
329 for (int i = 0; i < oleRequestorTypeList.size(); i++) {
330 if (oleRequestorTypeList.get(i).getRequestorType().equalsIgnoreCase(OleSelectConstant.REQUESTOR_TYPE_STAFF)) {
331 Person personImpl = SpringContext.getBean(PersonService.class).getPerson(singleItem.getInternalRequestorId());
332 if (singleItem.getRequestorId() == null && singleItem.getInternalRequestorId() != null) {
333 if (personImpl != null) {
334 singleItem.setRequestorFirstName(personImpl.getName());
335 }
336 }
337 }
338
339
340
341
342
343 }
344 }
345 }
346
347
348
349
350
351
352
353 @Override
354 public void processAfterRetrieve(PurchaseOrderDocument purchaseOrderDocument) {
355
356
357 LOG.debug("Inside processAfterRetrieve of OlePurchaseOrderDocumentHelperServiceImpl");
358
359 try {
360 PurchaseOrderType purchaseOrderTypeDoc = getOlePurapService().getPurchaseOrderType(purchaseOrderDocument.getPurchaseOrderTypeId());
361 if(purchaseOrderTypeDoc != null){
362 purchaseOrderDocument.setOrderType(purchaseOrderTypeDoc);
363 }
364 List<OlePurchaseOrderItem> items = purchaseOrderDocument.getItems();
365 Iterator iterator = items.iterator();
366 while (iterator.hasNext()) {
367 Object object = iterator.next();
368 if (object instanceof OlePurchaseOrderItem) {
369 OlePurchaseOrderItem singleItem = (OlePurchaseOrderItem) object;
370 setItemDetailWhileProcessAfterRetrive(singleItem);
371 }
372 }
373 } catch (Exception e) {
374 LOG.error("Exception in OlePurchaseOrderDocument:processAfterRetrieve for OlePurchaseOrderItem " + e.getMessage());
375 throw new RuntimeException(e);
376 }
377
378 }
379
380
381
382
383
384 private void setItemDetailWhileProcessAfterRetrive(OlePurchaseOrderItem olePurchaseOrderItem)throws Exception{
385 if(olePurchaseOrderItem.getRequestorId()!=null){
386 olePurchaseOrderItem.setRequestorFirstName(getOlePurapService().getPatronName(olePurchaseOrderItem.getRequestorId()));
387 }
388
389 setRequestorNameOnItem(olePurchaseOrderItem);
390 HashMap<String, String> dataMap = new HashMap<String, String>();
391 if(olePurchaseOrderItem.getItemUnitPrice()!=null){
392 olePurchaseOrderItem.setItemUnitPrice(olePurchaseOrderItem.getItemUnitPrice().setScale(2, BigDecimal.ROUND_HALF_UP));
393 }
394 if (olePurchaseOrderItem.getItemTitleId() != null) {
395 Bib bib = new BibMarc();
396 if (olePurchaseOrderItem.getItemTitleId() != null && olePurchaseOrderItem.getItemTitleId() != "") {
397 bib = getDocstoreClientLocator().getDocstoreClient().retrieveBib(olePurchaseOrderItem.getItemTitleId());
398 }
399 olePurchaseOrderItem.setBibUUID(bib.getId());
400 dataMap.put(OleSelectConstant.TITLE_ID, olePurchaseOrderItem.getItemTitleId());
401 dataMap.put(OleSelectConstant.DOC_CATEGORY_TYPE, OleSelectConstant.DOC_CATEGORY_TYPE_ITEMLINKS);
402 olePurchaseOrderItem.setDocFormat(DocumentUniqueIDPrefix.getBibFormatType(olePurchaseOrderItem.getItemTitleId()));
403 olePurchaseOrderItem.setItemDescription(getOlePurapService().getItemDescription(bib));
404 }
405 BibTree bibTree = new BibTree();
406 if(olePurchaseOrderItem.getItemTitleId() != null && olePurchaseOrderItem.getItemTitleId() != ""){
407 bibTree = getDocstoreClientLocator().getDocstoreClient().retrieveBibTree(olePurchaseOrderItem.getItemTitleId());
408 }
409 if (null != olePurchaseOrderItem.getItemTitleId()) {
410 if (olePurchaseOrderItem.getItemQuantity().isGreaterThan(new KualiDecimal(1))
411 || olePurchaseOrderItem.getItemNoOfParts().isGreaterThan(new KualiInteger(1))) {
412 List<OleCopies> copies = setCopiesToLineItem(olePurchaseOrderItem, bibTree);
413 olePurchaseOrderItem.setItemTypeDescription(bibTree.getHoldingsTrees().get(bibTree.getHoldingsTrees().size() - 1)
414 .getItems().get(0).getItemType());
415 olePurchaseOrderItem.setCopies(copies);
416 }
417 }
418 if (olePurchaseOrderItem.getItemQuantity() != null && olePurchaseOrderItem.getItemNoOfParts() != null && !olePurchaseOrderItem.getItemQuantity().isGreaterThan(new KualiDecimal(1))
419 && !olePurchaseOrderItem.getItemNoOfParts().isGreaterThan(new KualiInteger(1))&&olePurchaseOrderItem.getCopyList().size()>0) {
420 olePurchaseOrderItem.setSingleCopyNumber(olePurchaseOrderItem.getCopyList().get(0).getCopyNumber());
421 }
422 }
423
424 public List<OleCopies> setCopiesToLineItem(OlePurchaseOrderItem singleItem, BibTree bibTree) {
425 List<HoldingsTree> instanceDocuments = bibTree.getHoldingsTrees();
426 List<OleCopies> copies = new ArrayList<OleCopies>();
427 for (HoldingsTree holdingsTree : instanceDocuments) {
428 List<Item> itemDocuments = holdingsTree.getItems();
429 StringBuffer enumeration = new StringBuffer();
430 for (int itemDocs = 0; itemDocs < itemDocuments.size(); itemDocs++) {
431 if (itemDocs + 1 == itemDocuments.size()) {
432 enumeration = enumeration.append(itemDocuments.get(itemDocs).getEnumeration());
433 } else {
434 enumeration = enumeration.append(itemDocuments.get(itemDocs).getEnumeration() + ";");
435 }
436
437 }
438 int startingCopy = 0;
439 if (singleItem.getItemNoOfParts().intValue() != 0 && null != enumeration) {
440 String enumerationSplit = enumeration.substring(1, 2);
441 boolean isint = checkIsEnumerationSplitIsIntegerOrNot(enumerationSplit);
442 if (isint) {
443 startingCopy = Integer.parseInt(enumerationSplit);
444 }
445 }
446 if (singleItem.getItemQuantity().isGreaterThan(new KualiDecimal(1))
447 || singleItem.getItemNoOfParts().isGreaterThan(new KualiInteger(1))) {
448 int noOfCopies = holdingsTree.getItems().size()
449 / singleItem.getItemNoOfParts().intValue();
450 OleRequisitionCopies copy = new OleRequisitionCopies();
451 copy.setParts(singleItem.getItemNoOfParts());
452 copy.setLocationCopies(holdingsTree.getHoldings().getLocationName());
453 copy.setItemCopies(new KualiDecimal(noOfCopies));
454 copy.setPartEnumeration(enumeration.toString());
455 copy.setStartingCopyNumber(new KualiInteger(startingCopy));
456 copies.add(copy);
457 }
458 }
459 return copies;
460 }
461
462 public boolean checkIsEnumerationSplitIsIntegerOrNot(String enumerationSplit) {
463 try {
464 int startingCopy = Integer.parseInt(enumerationSplit);
465 } catch (NumberFormatException e) {
466 return false;
467 }
468 return true;
469 }
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499 @Override
500 public void setBibInfoBean(BibInfoBean bibInfoBean, OlePurchaseOrderItem singleItem) {
501 bibInfoBean.setTitle(singleItem.getItemTitle());
502 bibInfoBean.setAuthor(singleItem.getItemAuthor());
503 bibInfoBean.setRequestor(singleItem.getRequestorId() == null ? null : singleItem.getRequestorId().toString());
504 }
505
506 @Override
507 public void setBibInfoBean(BibInfoBean bibInfoBean, OleRequisitionItem singleItem) {
508 bibInfoBean.setTitle(singleItem.getBibInfoBean().getTitle());
509 bibInfoBean.setAuthor(singleItem.getBibInfoBean().getAuthor());
510 bibInfoBean.setRequestor(singleItem.getRequestorId() == null ? null : singleItem.getRequestorId().toString());
511 }
512
513
514
515
516
517
518 @Override
519 public boolean getIsFinalReqs(PurchaseOrderDocument purchaseOrderDocument) {
520 LOG.debug("Inside getIsFinalReqs of OlePurchaseOrderDocumentHelperServiceImpl");
521 if (purchaseOrderDocument.getDocumentHeader().getWorkflowDocument().isFinal()) {
522 return true;
523 }
524 return false;
525 }
526
527
528 @Override
529 public boolean getIsSplitPO(PurchaseOrderDocument purchaseOrderDocument) {
530 LOG.debug("Inside getIsSplitPO of OlePurchaseOrderDocumentHelperServiceImpl");
531 if (purchaseOrderDocument.getDocumentHeader().getWorkflowDocument().getDocumentTypeName().equalsIgnoreCase(OLEConstants.FinancialDocumentTypeCodes.PURCHASE_ORDER_SPLIT) && purchaseOrderDocument.getDocumentHeader().getWorkflowDocument().isSaved()) {
532 return true;
533 }
534 return false;
535 }
536
537 @Override
538 public boolean getIsReOpenPO(PurchaseOrderDocument purchaseOrderDocument) {
539 LOG.debug("Inside getIsSplitPO of OlePurchaseOrderDocumentHelperServiceImpl");
540 if (purchaseOrderDocument.getDocumentHeader().getWorkflowDocument().getDocumentTypeName().equalsIgnoreCase(OLEConstants.FinancialDocumentTypeCodes.PURCHASE_ORDER_REOPEN) && purchaseOrderDocument.getDocumentHeader().getWorkflowDocument().isSaved()) {
541 return true;
542 }
543 return false;
544 }
545
546
547
548
549
550
551 @Override
552 public String getBibeditorCreateURL() {
553 String bibeditorCreateURL = SpringContext.getBean(ConfigurationService.class).getPropertyValueAsString(OLEConstants.BIBEDITOR_CREATE_URL_KEY);
554 return bibeditorCreateURL;
555 }
556
557 @Override
558 public String getBibSearchURL() {
559 String bibSearchURL = SpringContext.getBean(ConfigurationService.class).getPropertyValueAsString(OLEConstants.BIBEDITOR_SEARCH_URL_KEY);
560 return bibSearchURL;
561 }
562
563
564
565
566
567
568 @Override
569 public String getBibeditorEditURL() {
570 String bibeditorEditURL = SpringContext.getBean(ConfigurationService.class).getPropertyValueAsString(OLEConstants.BIBEDITOR_URL_KEY);
571 return bibeditorEditURL;
572 }
573
574
575
576
577
578
579 public String getDublinEditorEditURL() {
580 String dublinEditorEditURL = SpringContext.getBean(ConfigurationService.class).getPropertyValueAsString(OLEConstants.DUBLINEDITOR_URL_KEY);
581 return dublinEditorEditURL;
582 }
583
584
585
586
587
588 @Override
589 public String getBibeditorViewURL() {
590 String bibeditorViewURL = SpringContext.getBean(ConfigurationService.class).getPropertyValueAsString(OLEConstants.DOCSTORE_APP_URL_KEY);
591 return bibeditorViewURL;
592 }
593
594
595
596
597
598 public String getDublinEditorViewURL() {
599 String dublinEditorViewURL = SpringContext.getBean(ConfigurationService.class).getPropertyValueAsString(OLEConstants.DOCSTORE_VIEW_URL_KEY);
600 return dublinEditorViewURL;
601 }
602
603
604
605
606
607 @Override
608 public String getInstanceEditorURL() {
609 String instanceEditorURL = SpringContext.getBean(ConfigurationService.class).getPropertyValueAsString(
610 OLEConstants.INSTANCEEDITOR_URL_KEY);
611 return instanceEditorURL;
612 }
613
614
615
616
617
618
619 @Override
620 public String getMarcXMLFileDirLocation() throws Exception {
621 FileProcessingService fileProcessingService = SpringContext.getBean(FileProcessingService.class);
622 String externaleDirectory = fileProcessingService.getMarcXMLFileDirLocation();
623 return externaleDirectory;
624 }
625
626
627 @Override
628 public List getItemsActiveOnly(PurchaseOrderDocument purchaseOrderDocument) {
629 List returnList = new ArrayList();
630 for (Iterator iter = purchaseOrderDocument.getItems().iterator(); iter.hasNext(); ) {
631 OlePurchaseOrderItem item = (OlePurchaseOrderItem) iter.next();
632 if (item.isItemActiveIndicator()) {
633 returnList.add(item);
634 }
635 }
636 return returnList;
637 }
638
639
640
641
642
643
644 @Override
645 public List getItemsActiveOnlySetupAlternateAmount(PurchaseOrderDocument purchaseOrderDocument) {
646 List returnList = new ArrayList();
647 for (Iterator iter = purchaseOrderDocument.getItems().iterator(); iter.hasNext(); ) {
648 OlePurchaseOrderItem item = (OlePurchaseOrderItem) iter.next();
649 if (item.isItemActiveIndicator()) {
650 for (Object element : item.getSourceAccountingLines()) {
651 PurchaseOrderAccount account = (PurchaseOrderAccount) element;
652 account.setAlternateAmountForGLEntryCreation(account.getItemAccountOutstandingEncumbranceAmount());
653 }
654 returnList.add(item);
655 }
656 }
657 return returnList;
658 }
659
660 @Override
661 public boolean getAdditionalChargesExist(PurchaseOrderDocument purchaseOrderDocument) {
662 List<OlePurchaseOrderItem> items = purchaseOrderDocument.getItems();
663 for (OlePurchaseOrderItem item : items) {
664 if ((item != null) &&
665 (item.getItemType() != null) &&
666 (item.getItemType().isAdditionalChargeIndicator()) &&
667 (item.getExtendedPrice() != null) &&
668 (!KualiDecimal.ZERO.equals(item.getExtendedPrice()))) {
669 return true;
670 }
671 }
672 return false;
673 }
674 }