1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.ole.module.purap.document.service.impl;
17
18 import org.apache.commons.lang.StringEscapeUtils;
19 import org.apache.commons.lang.StringUtils;
20 import org.apache.commons.lang.time.DateUtils;
21 import org.kuali.ole.DocumentUniqueIDPrefix;
22 import org.kuali.ole.docstore.common.document.Bib;
23 import org.kuali.ole.docstore.common.document.content.bib.marc.BibMarcRecord;
24 import org.kuali.ole.docstore.common.document.content.bib.marc.DataField;
25 import org.kuali.ole.docstore.engine.service.storage.rdbms.pojo.BibInfoRecord;
26 import org.kuali.ole.module.purap.businessobject.PurApItem;
27 import org.kuali.ole.module.purap.businessobject.PurchaseOrderType;
28 import org.kuali.ole.module.purap.document.*;
29 import org.kuali.ole.module.purap.document.service.OlePurapService;
30 import org.kuali.ole.select.OleSelectConstant;
31 import org.kuali.ole.select.businessobject.*;
32 import org.kuali.ole.select.document.OleInvoiceDocument;
33 import org.kuali.ole.select.document.OlePaymentRequestDocument;
34 import org.kuali.ole.select.document.OleRequisitionDocument;
35 import org.kuali.ole.sys.OLEConstants;
36 import org.kuali.ole.sys.context.SpringContext;
37 import org.kuali.ole.vnd.businessobject.VendorDetail;
38 import org.kuali.rice.core.api.datetime.DateTimeService;
39 import org.kuali.rice.core.api.util.type.KualiDecimal;
40 import org.kuali.rice.coreservice.framework.parameter.ParameterService;
41 import org.kuali.rice.coreservice.impl.parameter.ParameterBo;
42 import org.kuali.rice.kim.api.identity.Person;
43 import org.kuali.rice.kim.impl.identity.name.EntityNameBo;
44 import org.kuali.rice.krad.service.BusinessObjectService;
45 import org.kuali.rice.krad.service.DocumentHeaderService;
46 import org.kuali.rice.krad.service.KRADServiceLocator;
47 import org.kuali.rice.krad.util.GlobalVariables;
48
49 import java.math.BigDecimal;
50 import java.util.*;
51
52 public class OlePurapServiceImpl implements OlePurapService {
53
54 protected static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(OlePurapServiceImpl.class);
55 protected ParameterService parameterService;
56 private static transient BusinessObjectService businessObjectService;
57 private DateTimeService dateTimeService;
58 private static final String timeStampFormat = "MMddyyHHmm";
59
60 public BusinessObjectService getBusinessObjectService() {
61 if (businessObjectService == null) {
62 businessObjectService = SpringContext.getBean(BusinessObjectService.class);
63 }
64 return businessObjectService;
65 }
66
67 public DateTimeService getDateTimeService() {
68 if (dateTimeService == null) {
69 dateTimeService = SpringContext.getBean(DateTimeService.class);
70 }
71 return dateTimeService;
72 }
73
74 public void setBusinessObjectService(BusinessObjectService businessObjectService) {
75 this.businessObjectService = businessObjectService;
76 }
77
78 public void setParameterService(ParameterService parameterService) {
79 this.parameterService = parameterService;
80 }
81 @Override
82 public BigDecimal calculateDiscount(OleRequisitionItem oleRequisition) {
83
84 if (oleRequisition.getItemListPrice() != null && oleRequisition.getItemDiscountType() != null) {
85
86 if (oleRequisition.getItemDiscount() == null) {
87 oleRequisition.setItemDiscount(new KualiDecimal(0));
88 }
89 if (oleRequisition.getItemDiscountType().equalsIgnoreCase(OleSelectConstant.DISCOUNT_TYPE_PERCENTAGE)) {
90 LOG.debug("###### Percentage ##### ");
91 return oleRequisition.getItemListPrice().bigDecimalValue().subtract((oleRequisition.getItemDiscount().bigDecimalValue().multiply(new BigDecimal(0.01))).multiply(oleRequisition.getItemListPrice().bigDecimalValue()));
92 } else {
93 LOG.debug("###### Dollor ##### ");
94 if (LOG.isDebugEnabled()) {
95 LOG.debug("oleRequisition.getItemDiscountType()**********" + oleRequisition.getItemDiscountType());
96 }
97 return oleRequisition.getItemListPrice().bigDecimalValue().subtract(oleRequisition.getItemDiscount().bigDecimalValue());
98 }
99 } else {
100 oleRequisition.setItemListPrice(new KualiDecimal(0.0));
101 return new BigDecimal(0.0);
102 }
103
104 }
105
106 @Override
107 public BigDecimal calculateDiscount(OlePurchaseOrderItem olePurchaseOrder) {
108
109 if (olePurchaseOrder.getItemListPrice() != null && olePurchaseOrder.getItemDiscountType() != null) {
110 if (olePurchaseOrder.getItemDiscount() == null) {
111 olePurchaseOrder.setItemDiscount(new KualiDecimal(0));
112 }
113 if (olePurchaseOrder.getItemDiscountType().equalsIgnoreCase(OleSelectConstant.DISCOUNT_TYPE_PERCENTAGE)) {
114 return olePurchaseOrder.getItemListPrice().bigDecimalValue().subtract((olePurchaseOrder.getItemDiscount().bigDecimalValue().multiply(new BigDecimal(0.01))).multiply(olePurchaseOrder.getItemListPrice().bigDecimalValue()));
115 } else {
116 return olePurchaseOrder.getItemListPrice().bigDecimalValue().subtract(olePurchaseOrder.getItemDiscount().bigDecimalValue());
117 }
118 } else {
119 olePurchaseOrder.setItemListPrice(new KualiDecimal(0.0));
120 return new BigDecimal(0.0);
121 }
122
123 }
124
125
126
127
128 @Override
129 public OleRequisitionItem calculateForeignCurrency(OleRequisitionItem oleRequisition) {
130 if (oleRequisition.getItemForeignListPrice() != null && oleRequisition.getItemForeignDiscountType() != null) {
131 if (oleRequisition.getItemForeignDiscount() == null) {
132 oleRequisition.setItemForeignDiscount(new KualiDecimal(0));
133 }
134 if (oleRequisition.getItemForeignDiscountType().equalsIgnoreCase(OleSelectConstant.DISCOUNT_TYPE_PERCENTAGE)) {
135 BigDecimal calculatedForeignDiscountAmt = oleRequisition.getItemForeignDiscount().bigDecimalValue().multiply(new BigDecimal(0.01)).multiply(oleRequisition.getItemForeignListPrice().bigDecimalValue());
136 oleRequisition.setItemForeignDiscountAmt(new KualiDecimal(calculatedForeignDiscountAmt.setScale(KualiDecimal.SCALE, KualiDecimal.ROUND_BEHAVIOR)));
137 oleRequisition.setItemForeignUnitCost(oleRequisition.getItemForeignListPrice().subtract(oleRequisition.getItemForeignDiscountAmt()));
138 return oleRequisition;
139 } else {
140 oleRequisition.setItemForeignDiscountAmt((oleRequisition.getItemForeignDiscount()));
141 oleRequisition.setItemForeignUnitCost(new KualiDecimal(oleRequisition.getItemForeignListPrice().bigDecimalValue().subtract(oleRequisition.getItemForeignDiscount().bigDecimalValue())));
142 return oleRequisition;
143 }
144 } else {
145 return oleRequisition;
146 }
147 }
148
149 @Override
150 public OlePurchaseOrderItem calculateForeignCurrency(OlePurchaseOrderItem olePurchaseOrder) {
151 if (olePurchaseOrder.getItemForeignListPrice() != null && olePurchaseOrder.getItemForeignDiscountType() != null) {
152 if (olePurchaseOrder.getItemForeignDiscount() == null) {
153 olePurchaseOrder.setItemForeignDiscount(new KualiDecimal(0));
154 }
155 if (olePurchaseOrder.getItemForeignDiscountType().equalsIgnoreCase(OleSelectConstant.DISCOUNT_TYPE_PERCENTAGE)) {
156 BigDecimal calculatedForeignDiscountAmt = olePurchaseOrder.getItemForeignDiscount().bigDecimalValue().multiply(new BigDecimal(0.01)).multiply(olePurchaseOrder.getItemForeignListPrice().bigDecimalValue());
157 olePurchaseOrder.setItemForeignDiscountAmt(new KualiDecimal(calculatedForeignDiscountAmt.setScale(KualiDecimal.SCALE, KualiDecimal.ROUND_BEHAVIOR)));
158 olePurchaseOrder.setItemForeignUnitCost(olePurchaseOrder.getItemForeignListPrice().subtract(olePurchaseOrder.getItemForeignDiscountAmt()));
159 return olePurchaseOrder;
160 } else {
161 olePurchaseOrder.setItemForeignDiscountAmt(olePurchaseOrder.getItemForeignDiscount());
162 olePurchaseOrder.setItemForeignUnitCost(olePurchaseOrder.getItemForeignListPrice().subtract(olePurchaseOrder.getItemForeignDiscount()));
163 return olePurchaseOrder;
164 }
165 } else {
166 return olePurchaseOrder;
167 }
168 }
169
170 @Override
171 public BigDecimal calculateDiscount(OlePaymentRequestItem olePaymentRequestOrder) {
172
173 if (olePaymentRequestOrder.getItemListPrice() != null) {
174 if (olePaymentRequestOrder.getItemDiscount() == null) {
175 olePaymentRequestOrder.setItemDiscount(new KualiDecimal(0));
176 }
177 if (olePaymentRequestOrder.getItemDiscountType() != null && olePaymentRequestOrder.getItemDiscountType().equalsIgnoreCase(OleSelectConstant.DISCOUNT_TYPE_PERCENTAGE)) {
178 return olePaymentRequestOrder.getItemListPrice().bigDecimalValue().subtract((olePaymentRequestOrder.getItemDiscount().bigDecimalValue().multiply(new BigDecimal(0.01))).multiply(olePaymentRequestOrder.getItemListPrice().bigDecimalValue()));
179 } else {
180 return olePaymentRequestOrder.getItemListPrice().bigDecimalValue().subtract(olePaymentRequestOrder.getItemDiscount().bigDecimalValue());
181 }
182 } else {
183 olePaymentRequestOrder.setItemListPrice(new KualiDecimal(0.0));
184 return new BigDecimal(0.0);
185 }
186
187 }
188
189 @Override
190 public BigDecimal calculateDiscount(OleInvoiceItem oleInvoiceOrder) {
191
192 if (oleInvoiceOrder.getItemListPrice() != null) {
193 if (oleInvoiceOrder.getItemDiscount() == null) {
194 oleInvoiceOrder.setItemDiscount(new KualiDecimal(0));
195 }
196 if (oleInvoiceOrder.getItemDiscountType() != null && oleInvoiceOrder.getItemDiscountType().equalsIgnoreCase(OleSelectConstant.DISCOUNT_TYPE_PERCENTAGE)) {
197 return oleInvoiceOrder.getItemListPrice().bigDecimalValue().subtract((oleInvoiceOrder.getItemDiscount().bigDecimalValue().multiply(new BigDecimal(0.01))).multiply(oleInvoiceOrder.getItemListPrice().bigDecimalValue()));
198 } else {
199 return oleInvoiceOrder.getItemListPrice().bigDecimalValue().subtract(oleInvoiceOrder.getItemDiscount().bigDecimalValue());
200 }
201 } else {
202 oleInvoiceOrder.setItemListPrice(new KualiDecimal(0.0));
203 return new BigDecimal(0.0);
204 }
205
206 }
207
208 @Override
209 public OlePaymentRequestItem calculateForeignCurrency(OlePaymentRequestItem item) {
210 if (item.getItemForeignListPrice() != null) {
211 if (item.getItemForeignDiscount() == null) {
212 item.setItemForeignDiscount(new KualiDecimal(0));
213 }
214 if (item.getItemForeignDiscountType() != null && item.getItemForeignDiscountType().equalsIgnoreCase(OleSelectConstant.DISCOUNT_TYPE_PERCENTAGE)) {
215 BigDecimal calculatedForeignDiscountAmt = item.getItemForeignDiscount().bigDecimalValue().multiply(new BigDecimal(0.01)).multiply(item.getItemForeignListPrice().bigDecimalValue());
216 item.setItemForeignDiscountAmt(new KualiDecimal(calculatedForeignDiscountAmt.setScale(KualiDecimal.SCALE, KualiDecimal.ROUND_BEHAVIOR)));
217 item.setItemForeignUnitCost(item.getItemForeignListPrice().subtract(item.getItemForeignDiscountAmt()));
218 return item;
219 } else {
220 item.setItemForeignDiscountAmt(item.getItemForeignDiscount());
221 item.setItemForeignUnitCost(item.getItemForeignListPrice().subtract(item.getItemForeignDiscount()));
222 return item;
223 }
224 } else {
225 return item;
226 }
227 }
228
229
230 @Override
231 public OleInvoiceItem calculateForeignCurrency(OleInvoiceItem item) {
232 if (item.getItemForeignListPrice() != null) {
233 if (item.getItemForeignDiscount() == null) {
234 item.setItemForeignDiscount(new KualiDecimal(0));
235 }
236 if (item.getItemForeignDiscountType() != null && item.getItemForeignDiscountType().equalsIgnoreCase(OleSelectConstant.DISCOUNT_TYPE_PERCENTAGE)) {
237 BigDecimal calculatedForeignDiscountAmt = item.getItemForeignDiscount().bigDecimalValue().multiply(new BigDecimal(0.01)).multiply(item.getItemForeignListPrice().bigDecimalValue());
238 item.setItemForeignDiscountAmt(new KualiDecimal(calculatedForeignDiscountAmt.setScale(KualiDecimal.SCALE, KualiDecimal.ROUND_BEHAVIOR)));
239 item.setItemForeignUnitCost(item.getItemForeignListPrice().subtract(item.getItemForeignDiscountAmt()));
240 return item;
241 } else {
242 item.setItemForeignDiscountAmt(item.getItemForeignDiscount());
243 item.setItemForeignUnitCost(item.getItemForeignListPrice().subtract(item.getItemForeignDiscount()));
244 return item;
245 }
246 } else {
247 return item;
248 }
249 }
250
251
252
253
254
255
256
257
258 public String getOperatorInitials() {
259 LOG.debug("Inside getOperatorInitials()");
260 StringBuffer operatorInitials = new StringBuffer();
261 Person person = GlobalVariables.getUserSession().getPerson();
262 operatorInitials.append(StringUtils.isEmpty(person.getFirstName()) ? "" : person.getFirstName().toLowerCase().charAt(0));
263 operatorInitials.append(StringUtils.isEmpty(person.getMiddleName()) ? "" : person.getMiddleName().toLowerCase().charAt(0));
264 operatorInitials.append(StringUtils.isEmpty(person.getLastName()) ? "" : person.getLastName().toLowerCase().charAt(0));
265 LOG.debug("End of getOperatorInitials()");
266 return operatorInitials.toString();
267 }
268
269 public OleCreditMemoItem calculateForeignCurrency(OleCreditMemoItem oleCreditMemoItem) {
270 if (oleCreditMemoItem.getItemForeignListPrice() != null && oleCreditMemoItem.getItemForeignDiscountType() != null) {
271 if (oleCreditMemoItem.getItemForeignDiscount() == null) {
272 oleCreditMemoItem.setItemForeignDiscount(new KualiDecimal(0));
273 }
274 if (oleCreditMemoItem.getItemForeignDiscountType().equalsIgnoreCase(OleSelectConstant.DISCOUNT_TYPE_PERCENTAGE)) {
275 BigDecimal calculatedForeignDiscountAmt = oleCreditMemoItem.getItemForeignDiscount().bigDecimalValue().multiply(new BigDecimal(0.01)).multiply(oleCreditMemoItem.getItemForeignListPrice().bigDecimalValue());
276 oleCreditMemoItem.setItemForeignDiscountAmt(new KualiDecimal(calculatedForeignDiscountAmt.setScale(KualiDecimal.SCALE, KualiDecimal.ROUND_BEHAVIOR)));
277 oleCreditMemoItem.setItemForeignUnitCost(oleCreditMemoItem.getItemForeignListPrice().subtract(oleCreditMemoItem.getItemForeignDiscountAmt()));
278 return oleCreditMemoItem;
279 } else {
280 oleCreditMemoItem.setItemForeignDiscountAmt(oleCreditMemoItem.getItemForeignDiscount());
281 oleCreditMemoItem.setItemForeignUnitCost(oleCreditMemoItem.getItemForeignListPrice().subtract(oleCreditMemoItem.getItemForeignDiscount()));
282 return oleCreditMemoItem;
283 }
284 } else {
285 return oleCreditMemoItem;
286 }
287 }
288
289
290
291
292
293
294 public void getInitialCollapseSections(PurchasingAccountsPayableDocument document) {
295 LOG.debug("Inside getInitialCollapseSections()");
296 String[] collapseSections = new String[]{};
297 try {
298 if (document instanceof RequisitionDocument) {
299 OleRequisitionDocument requisitionDocument = (OleRequisitionDocument)document;
300 collapseSections = parameterService.getParameterValuesAsString(RequisitionDocument.class,
301 OLEConstants.INITIAL_COLLAPSE_SECTIONS).toArray(new String[]{});
302 requisitionDocument.setOverviewFlag(canCollapse(OLEConstants.OVERVIEW_SECTION, collapseSections));
303 requisitionDocument.setDeliveryFlag(canCollapse(OLEConstants.DELIVERY_SECTION, collapseSections));
304 requisitionDocument.setVendorFlag(canCollapse(OLEConstants.VENDOR_SECTION, collapseSections));
305 requisitionDocument.setTitlesFlag(canCollapse(OLEConstants.TITLES_SECTION, collapseSections));
306 requisitionDocument.setPaymentInfoFlag(canCollapse(OLEConstants.PAYMENT_INFO_SECTION, collapseSections));
307 requisitionDocument.setAdditionalInstitutionalInfoFlag(canCollapse(OLEConstants.ADDITIONAL_INSTUT_SECTION, collapseSections));
308 requisitionDocument.setAccountSummaryFlag(canCollapse(OLEConstants.ACCOUNT_SUMMARY_SECTION, collapseSections));
309 requisitionDocument.setRelatedDocumentsFlag(canCollapse(OLEConstants.RELATED_DOCUMENT_SECTION, collapseSections));
310 requisitionDocument.setPaymentHistoryFlag(canCollapse(OLEConstants.PAYMENT_HISTORY_SECTION, collapseSections));
311 requisitionDocument.setNotesAndAttachmentFlag(canCollapse(OLEConstants.NOTES_AND_ATTACH_SECTION, collapseSections));
312 requisitionDocument.setAdHocRecipientsFlag(canCollapse(OLEConstants.ADHOC_RECIPIENT_SECTION, collapseSections));
313 requisitionDocument.setRouteLogFlag(canCollapse(OLEConstants.ROUTE_LOG_SECTION, collapseSections));
314 }
315 else if (document instanceof PurchaseOrderDocument) {
316 PurchaseOrderDocument poDocument = (PurchaseOrderDocument)document;
317 collapseSections = parameterService.getParameterValuesAsString(PurchaseOrderDocument.class,
318 OLEConstants.INITIAL_COLLAPSE_SECTIONS).toArray(new String[]{});
319 poDocument.setOverviewFlag(canCollapse(OLEConstants.OVERVIEW_SECTION,collapseSections));
320 poDocument.setDeliveryFlag(canCollapse(OLEConstants.DELIVERY_SECTION,collapseSections));
321 poDocument.setVendorFlag(canCollapse(OLEConstants.VENDOR_SECTION,collapseSections));
322 poDocument.setTitlesFlag(canCollapse(OLEConstants.TITLES_SECTION,collapseSections));
323 poDocument.setPaymentInfoFlag(canCollapse(OLEConstants.PAYMENT_INFO_SECTION,collapseSections));
324 poDocument.setAdditionalInstitutionalInfoFlag(canCollapse(OLEConstants.ADDITIONAL_INSTUT_SECTION,collapseSections));
325 poDocument.setAccountSummaryFlag(canCollapse(OLEConstants.ACCOUNT_SUMMARY_SECTION,collapseSections));
326 poDocument.setRelatedDocumentsFlag(canCollapse(OLEConstants.RELATED_DOCUMENT_SECTION,collapseSections));
327 poDocument.setPaymentHistoryFlag(canCollapse(OLEConstants.PAYMENT_HISTORY_SECTION,collapseSections));
328 poDocument.setNotesAndAttachmentFlag(canCollapse(OLEConstants.NOTES_AND_ATTACH_SECTION,collapseSections));
329 poDocument.setAdHocRecipientsFlag(canCollapse(OLEConstants.ADHOC_RECIPIENT_SECTION,collapseSections));
330 poDocument.setRouteLogFlag(canCollapse(OLEConstants.ROUTE_LOG_SECTION,collapseSections));
331 }
332 else if (document instanceof PaymentRequestDocument) {
333 PaymentRequestDocument paymentRequestDoc = (PaymentRequestDocument)document;
334 collapseSections = parameterService.getParameterValuesAsString(PaymentRequestDocument.class,
335 OLEConstants.INITIAL_COLLAPSE_SECTIONS).toArray(new String[]{});
336 paymentRequestDoc.setOverviewFlag(canCollapse(OLEConstants.OVERVIEW_SECTION,collapseSections));
337 paymentRequestDoc.setDeliveryFlag(canCollapse(OLEConstants.DELIVERY_SECTION,collapseSections));
338 paymentRequestDoc.setInvoiceInfoFlag(canCollapse(OLEConstants.INVOICE_SECTION,collapseSections));
339 paymentRequestDoc.setProcessItemsFlag(canCollapse(OLEConstants.PROCESS_ITEM_SECTION,collapseSections));
340 paymentRequestDoc.setAccountSummaryFlag(canCollapse(OLEConstants.ACCOUNT_SUMMARY_SECTION,collapseSections));
341 paymentRequestDoc.setRelatedDocumentsFlag(canCollapse(OLEConstants.RELATED_DOCUMENT_SECTION,collapseSections));
342 paymentRequestDoc.setPaymentHistoryFlag(canCollapse(OLEConstants.PAYMENT_HISTORY_SECTION,collapseSections));
343 paymentRequestDoc.setGeneralEntriesFlag(canCollapse(OLEConstants.GENERAL_ENTRY_SECTION,collapseSections));
344 paymentRequestDoc.setNotesAndAttachmentFlag(canCollapse(OLEConstants.NOTES_AND_ATTACH_SECTION,collapseSections));
345 paymentRequestDoc.setAdHocRecipientsFlag(canCollapse(OLEConstants.ADHOC_RECIPIENT_SECTION,collapseSections));
346 paymentRequestDoc.setRouteLogFlag(canCollapse(OLEConstants.ROUTE_LOG_SECTION,collapseSections));
347 }
348 else if (document instanceof VendorCreditMemoDocument) {
349 VendorCreditMemoDocument vmDocument = (VendorCreditMemoDocument)document;
350 collapseSections = parameterService.getParameterValuesAsString(VendorCreditMemoDocument.class,
351 OLEConstants.INITIAL_COLLAPSE_SECTIONS).toArray(new String[]{});
352 vmDocument.setOverviewFlag(canCollapse(OLEConstants.OVERVIEW_SECTION,collapseSections));
353 vmDocument.setVendorFlag(canCollapse(OLEConstants.VENDOR_SECTION,collapseSections));
354 vmDocument.setCreditMemoInfoFlag(canCollapse(OLEConstants.VENDOR_SECTION,collapseSections));
355 vmDocument.setProcessItemsFlag(canCollapse(OLEConstants.PROCESS_ITEM_SECTION,collapseSections));
356 vmDocument.setAccountSummaryFlag(canCollapse(OLEConstants.ACCOUNT_SUMMARY_SECTION,collapseSections));
357 vmDocument.setRelatedDocumentsFlag(canCollapse(OLEConstants.RELATED_DOCUMENT_SECTION,collapseSections));
358 vmDocument.setPaymentHistoryFlag(canCollapse(OLEConstants.PAYMENT_HISTORY_SECTION,collapseSections));
359 vmDocument.setGeneralEntriesFlag(canCollapse(OLEConstants.GENERAL_ENTRY_SECTION,collapseSections));
360 vmDocument.setNotesAndAttachmentFlag(canCollapse(OLEConstants.NOTES_AND_ATTACH_SECTION,collapseSections));
361 vmDocument.setAdHocRecipientsFlag(canCollapse(OLEConstants.ADHOC_RECIPIENT_SECTION,collapseSections));
362 vmDocument.setRouteLogFlag(canCollapse(OLEConstants.ROUTE_LOG_SECTION,collapseSections));
363 }
364
365 }
366 catch (Exception e) {
367 LOG.error("Error while getting the default Collapse section on PurchasingAccountsPayable Document");
368 throw new RuntimeException(e);
369 }
370 LOG.debug("Leaving getInitialCollapseSections()");
371
372 }
373
374 private boolean canCollapse(String sectionName, String[] collapseSections) {
375 LOG.debug("Inside method canCollapse()");
376 List<String> sectionLists = Arrays.asList(collapseSections);
377 if (sectionLists.contains(sectionName)) {
378 return false;
379 }
380 return true;
381 }
382
383
384
385
386
387
388 public String getPatronName(String patronId){
389 StringBuffer patronName = new StringBuffer();
390 try{
391 if(LOG.isDebugEnabled()){
392 LOG.debug("Getting name for patron -" + patronId);
393 }
394 Map<String,String> map=new HashMap<String,String>();
395 map.put("entityId",patronId);
396 EntityNameBo entityNameBo=(EntityNameBo) KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(EntityNameBo.class,map);
397 patronName.append(entityNameBo.getLastName()).append(", ").append(entityNameBo.getFirstName());
398 if(LOG.isDebugEnabled()){
399 LOG.debug("Returning Name:" + patronName + ": for patronId :" + patronId + ":");
400 }
401 } catch(Exception e){
402 LOG.error("Exception while trying to get name for patron ",e);
403 }
404 return patronName.toString();
405 }
406
407
408
409
410
411
412 public void setBibMarcRecord(BibMarcRecord bibMarcRecord,BibInfoBean bibInfoBean){
413 LOG.debug("Inside setBibMarcRecord method.....");
414 List<org.kuali.ole.docstore.common.document.content.bib.marc.DataField> dataFieldList = new ArrayList<DataField>();
415 if(bibInfoBean.getTitle() != null){
416 dataFieldList.add(setDataField(org.kuali.ole.OLEConstants.MARC_EDITOR_TITLE_245,bibInfoBean.getTitle()));
417 }
418 if(bibInfoBean.getAuthor() !=null){
419 dataFieldList.add(setDataField(org.kuali.ole.OLEConstants.MARC_EDITOR_TITLE_100,bibInfoBean.getAuthor()));
420 }
421 bibMarcRecord.setDataFields(dataFieldList);
422 LOG.debug("setBibMarcRecord method successfull.....");
423 }
424
425
426
427
428
429
430
431 private DataField setDataField(String tag,String value){
432 if(LOG.isDebugEnabled()){
433 LOG.debug("inside setDataField method.....");
434 LOG.debug("tag---->"+tag+" "+"value---->"+value);
435 }
436 DataField dataField = new DataField();
437 dataField.setTag(tag);
438 List<org.kuali.ole.docstore.common.document.content.bib.marc.SubField> subFields = new ArrayList<org.kuali.ole.docstore.common.document.content.bib.marc.SubField>();
439 org.kuali.ole.docstore.common.document.content.bib.marc.SubField subField = new org.kuali.ole.docstore.common.document.content.bib.marc.SubField();
440 subField.setCode(org.kuali.ole.OLEConstants.A);
441 subField.setValue(value);
442 subFields.add(subField);
443 dataField.setSubFields(subFields);
444 return dataField;
445 }
446
447
448
449
450
451 public void setInvoiceDocumentsForRequisition(PurApItem purApItem) {
452 OleRequisitionItem singleItem = (OleRequisitionItem) purApItem;
453 Map<String, OleInvoiceDocument> paidDocuments = new HashMap<String, OleInvoiceDocument>();
454 Map<String, OlePaymentRequestDocument> paymentRequests = new HashMap<String, OlePaymentRequestDocument>();
455 for (OleCopy oleCopy : singleItem.getCopyList()) {
456 if (oleCopy.getOlePaidCopies().size() > 0) {
457 for (OLEPaidCopy olePaidCopy : oleCopy.getOlePaidCopies()) {
458 OleInvoiceDocument invoiceDocument = null;
459 if (olePaidCopy.getInvoiceItemId() != null &&
460 paidDocuments.containsKey(olePaidCopy.getInvoiceItemId().toString())) {
461 OleInvoiceItem invoiceItem = olePaidCopy.getInvoiceItem();
462 invoiceDocument = paidDocuments.get(olePaidCopy.getInvoiceItemId());
463 if (invoiceItem.getPoItemIdentifier().compareTo(oleCopy.getPoItemId()) == 0 && invoiceDocument != null) {
464 ((OleInvoiceItem)invoiceDocument.getItem(invoiceItem.getItemLineNumber())).setRequisitionItemIdentifier(oleCopy.getReqItemId());
465 }
466 }
467 else if (olePaidCopy.getInvoiceItem().getInvoiceDocument() != null && olePaidCopy.getInvoiceItem().getInvoiceDocument().getPurapDocumentIdentifier() != null
468 && (paidDocuments.containsKey(olePaidCopy.getInvoiceItem().getInvoiceDocument().getPurapDocumentIdentifier().toString()))) {
469 OleInvoiceItem invoiceItem = olePaidCopy.getInvoiceItem();
470 invoiceDocument = paidDocuments.get(olePaidCopy.getInvoiceItem().getInvoiceDocument().getPurapDocumentIdentifier());
471 if (invoiceItem.getPoItemIdentifier().compareTo(oleCopy.getPoItemId()) == 0 && invoiceDocument != null) {
472 ((OleInvoiceItem)invoiceDocument.getItem(invoiceItem.getItemLineNumber())).setRequisitionItemIdentifier(oleCopy.getReqItemId());
473 }
474 }
475 else {
476 if (olePaidCopy.getInvoiceItem() != null && olePaidCopy.getInvoiceItem().isDebitItem()) {
477 OleInvoiceItem invoiceItem = olePaidCopy.getInvoiceItem();
478 invoiceDocument = (OleInvoiceDocument)olePaidCopy.getInvoiceItem().getInvoiceDocument();
479 if (invoiceDocument != null && SpringContext.getBean(DocumentHeaderService.class) != null) {
480 invoiceDocument.setDocumentHeader(SpringContext.getBean(DocumentHeaderService.class).getDocumentHeaderById(invoiceDocument.getDocumentNumber()));
481 if (invoiceItem.getPoItemIdentifier().compareTo(oleCopy.getPoItemId()) == 0) {
482 invoiceItem.setRequisitionItemIdentifier(oleCopy.getReqItemId());
483 }
484 paidDocuments.put(invoiceDocument.getPurapDocumentIdentifier().toString(),
485 invoiceDocument);
486 invoiceDocument.setPaymentRequestDocuments(new ArrayList<OlePaymentRequestDocument>());
487 }
488 }
489 }
490 if (invoiceDocument != null && olePaidCopy.getPreqItem() != null) {
491 OlePaymentRequestDocument preq = (OlePaymentRequestDocument) olePaidCopy.getPreqItem().getPaymentRequestDocument();
492 if (preq != null && !paymentRequests.containsKey(preq.getDocumentNumber())) {
493 paymentRequests.put(preq.getDocumentNumber(), preq);
494 invoiceDocument.getPaymentRequestDocuments().add(preq);
495 }
496 }
497 if (invoiceDocument != null && SpringContext.getBean(DocumentHeaderService.class) != null) {
498 invoiceDocument.setDocumentHeader(SpringContext.getBean(DocumentHeaderService.class).getDocumentHeaderById(invoiceDocument.getDocumentNumber()));
499 paidDocuments.put(invoiceDocument.getPurapDocumentIdentifier().toString(),
500 invoiceDocument);
501 }
502 }
503 }
504 }
505 Collection collection = (Collection) (paidDocuments.values());
506 List list = new ArrayList(collection);
507 singleItem.setInvoiceDocuments(list);
508 }
509
510
511
512
513
514 public void setInvoiceDocumentsForPO(PurApItem purApItem) {
515 OlePurchaseOrderItem singleItem = (OlePurchaseOrderItem) purApItem;
516 Map<String, OleInvoiceDocument> paidDocuments = new HashMap<String, OleInvoiceDocument>();
517 Map<String, OlePaymentRequestDocument> paymentRequests = new HashMap<String, OlePaymentRequestDocument>();
518 for (OleCopy oleCopy : singleItem.getCopyList()) {
519 if (oleCopy.getOlePaidCopies().size() > 0) {
520 for (OLEPaidCopy olePaidCopy : oleCopy.getOlePaidCopies()) {
521 OleInvoiceDocument invoiceDocument = null;
522 if (olePaidCopy.getInvoiceItemId() != null &&
523 paidDocuments.containsKey(olePaidCopy.getInvoiceItemId().toString())) {
524 invoiceDocument = paidDocuments.get(olePaidCopy.getInvoiceItemId());
525 }
526 else if (olePaidCopy.getInvoiceItem().getInvoiceDocument() != null && olePaidCopy.getInvoiceItem().getInvoiceDocument().getPurapDocumentIdentifier() != null
527 && (paidDocuments.containsKey(olePaidCopy.getInvoiceItem().getInvoiceDocument().getPurapDocumentIdentifier().toString()))) {
528 invoiceDocument = paidDocuments.get(olePaidCopy.getInvoiceItem().getInvoiceDocument().getPurapDocumentIdentifier());
529 }
530 else {
531 if (olePaidCopy.getInvoiceItem() != null) {
532 invoiceDocument = (OleInvoiceDocument)olePaidCopy.getInvoiceItem().getInvoiceDocument();
533 if (invoiceDocument != null && SpringContext.getBean(DocumentHeaderService.class) != null) {
534 invoiceDocument.setDocumentHeader(SpringContext.getBean(DocumentHeaderService.class).getDocumentHeaderById(invoiceDocument.getDocumentNumber()));
535 paidDocuments.put(invoiceDocument.getPurapDocumentIdentifier().toString(),
536 invoiceDocument);
537 invoiceDocument.setPaymentRequestDocuments(new ArrayList<OlePaymentRequestDocument>());
538 }
539 }
540 }
541 if (invoiceDocument != null && olePaidCopy.getPreqItem() != null) {
542 OlePaymentRequestDocument preq = (OlePaymentRequestDocument)olePaidCopy.getPreqItem().getPaymentRequestDocument();
543 if (preq != null && !paymentRequests.containsKey(preq.getDocumentNumber())) {
544 paymentRequests.put(preq.getDocumentNumber(),preq);
545 invoiceDocument.getPaymentRequestDocuments().add(preq);
546 }
547 }
548 if (invoiceDocument != null && SpringContext.getBean(DocumentHeaderService.class) != null) {
549 invoiceDocument.setDocumentHeader(SpringContext.getBean(DocumentHeaderService.class).getDocumentHeaderById(invoiceDocument.getDocumentNumber()));
550 paidDocuments.put(invoiceDocument.getPurapDocumentIdentifier().toString(),
551 invoiceDocument);
552 }
553 }
554 }
555 }
556 Collection collection = (Collection)(paidDocuments.values());
557 List list = new ArrayList(collection);
558 singleItem.setInvoiceDocuments(list);
559 }
560
561
562
563
564
565
566 public Integer getRequestorTypeId(String requestorType) {
567 Map<String, Object> criteria = new HashMap<String, Object>();
568 criteria.put(OleSelectConstant.REQUESTOR_TYPE, requestorType);
569 Collection<OleRequestorType> requestorTypeList = getBusinessObjectService().findMatching(OleRequestorType.class, criteria);
570 return requestorTypeList.iterator().next().getRequestorTypeId();
571 }
572
573
574
575
576
577 public void setClaimDateForReq(OleRequisitionItem oleRequisitionItem,VendorDetail vendorDetail){
578 if (vendorDetail != null) {
579 String claimInterval = vendorDetail.getClaimInterval();
580 if (StringUtils.isNotBlank(claimInterval)) {
581 Integer actIntvl = Integer.parseInt(claimInterval);
582 oleRequisitionItem.setClaimDate(new java.sql.Date(DateUtils.addDays(new java.util.Date(), actIntvl).getTime()));
583 }
584 }
585 }
586
587
588
589
590
591 public void setClaimDateForPO(OlePurchaseOrderItem olePurchaseOrderItem,VendorDetail vendorDetail){
592 if (vendorDetail != null) {
593 String claimInterval = vendorDetail.getClaimInterval();
594 if (StringUtils.isNotBlank(claimInterval)) {
595 Integer actIntvl = Integer.parseInt(claimInterval);
596 olePurchaseOrderItem.setClaimDate(new java.sql.Date(DateUtils.addDays(new java.util.Date(), actIntvl).getTime()));
597 }
598 }
599 }
600
601
602
603
604
605 public String getItemDescription(Bib bib){
606 LOG.debug("### Inside setItemDescription() of OleRequisitionDocument ###");
607 String itemDescription = ((bib.getTitle() != null && !bib.getTitle().isEmpty()) ? bib.getTitle() + "," : "") + ((bib.getAuthor() != null && !bib.getAuthor().isEmpty()) ? bib.getAuthor() + "," : "") + ((bib.getPublisher() != null && !bib.getPublisher().isEmpty()) ? bib.getPublisher() + "," : "") + ((bib.getIsbn() != null && !bib.getIsbn().isEmpty()) ? bib.getIsbn() + "," : "");
608 itemDescription = itemDescription.lastIndexOf(",") < 0 ? itemDescription :
609 itemDescription.substring(0, itemDescription.lastIndexOf(","));
610 if(LOG.isDebugEnabled()){
611 LOG.debug("Item Description---------->"+itemDescription);
612 }
613 StringEscapeUtils stringEscapeUtils = new StringEscapeUtils();
614 itemDescription = stringEscapeUtils.unescapeHtml(itemDescription);
615 return itemDescription;
616 }
617
618
619 public String getItemDescription(OlePurchaseOrderItem olePurchaseOrderItem) {
620 BibInfoRecord bibInfoRecord = olePurchaseOrderItem.getBibInfoRecord();
621 String itemDescription = null;
622 if (bibInfoRecord != null) {
623 olePurchaseOrderItem.setBibUUID(bibInfoRecord.getBibIdStr());
624 olePurchaseOrderItem.setDocFormat(DocumentUniqueIDPrefix.getBibFormatType(olePurchaseOrderItem.getItemTitleId()));
625
626 itemDescription = ((bibInfoRecord.getTitle() != null && !bibInfoRecord.getTitle().isEmpty()) ? bibInfoRecord.getTitle().trim() + ", " : "")
627 + ((bibInfoRecord.getAuthor() != null && !bibInfoRecord
628 .getAuthor().isEmpty()) ? bibInfoRecord.getAuthor().trim() + ", "
629 : "")
630 + ((bibInfoRecord.getPublisher() != null && !bibInfoRecord
631 .getPublisher().isEmpty()) ? bibInfoRecord.getPublisher().trim()
632 + ", " : "")
633 + ((bibInfoRecord.getIsxn() != null && !bibInfoRecord.getIsxn()
634 .isEmpty()) ? bibInfoRecord.getIsxn().trim() + ", " : "");
635 }
636 if (itemDescription != null && !(itemDescription.equals(""))) {
637 itemDescription = itemDescription.lastIndexOf(",") < 0 ? itemDescription :
638 itemDescription.substring(0, itemDescription.lastIndexOf(","));
639 StringEscapeUtils stringEscapeUtils = new StringEscapeUtils();
640 itemDescription = stringEscapeUtils.unescapeXml(itemDescription);
641 }
642 return itemDescription;
643 }
644
645
646
647
648
649
650 public PurchaseOrderType getPurchaseOrderType(BigDecimal purchaseOrderTypeId){
651 Map purchaseOrderTypeIdMap = new HashMap();
652 purchaseOrderTypeIdMap.put(org.kuali.ole.OLEConstants.PURCHASE_ORDER_TYPE_ID, purchaseOrderTypeId);
653 List<PurchaseOrderType> purchaseOrderTypeDocumentList = (List) getBusinessObjectService().findMatching(PurchaseOrderType.class, purchaseOrderTypeIdMap);
654 if (purchaseOrderTypeDocumentList != null && purchaseOrderTypeDocumentList.size() > 0) {
655 return purchaseOrderTypeDocumentList.get(0);
656 }else{
657 return null;
658 }
659 }
660
661
662
663
664
665
666 public String getParameter(String name) {
667 LOG.debug("Inside getParameter()");
668 String parameter = "";
669 try {
670 Map<String, String> criteriaMap = new HashMap<String, String>();
671 criteriaMap.put(org.kuali.ole.OLEConstants.NAMESPACE_CODE, org.kuali.ole.OLEConstants.SELECT_NMSPC);
672 criteriaMap.put(org.kuali.ole.OLEConstants.COMPONENT_CODE, org.kuali.ole.OLEConstants.SELECT_CMPNT);
673 criteriaMap.put(org.kuali.ole.OLEConstants.NAME_SELECTOR, name);
674 List<ParameterBo> parametersList = (List<ParameterBo>) getBusinessObjectService().findMatching(ParameterBo.class, criteriaMap);
675 for (ParameterBo parameterBo : parametersList) {
676 parameter = parameterBo.getValue();
677 }
678 } catch (Exception e) {
679 LOG.error("Exception while getting parameter value", e);
680 }
681 LOG.debug("End of getParameter()");
682 return parameter;
683 }
684
685
686
687
688
689 public String getCurrentDateTime() {
690 LOG.debug("Inside getCurrentDateTime()");
691 Date date = getDateTimeService().getCurrentDate();
692 String currentDate = SpringContext.getBean(DateTimeService.class).toString(date, timeStampFormat);
693 LOG.debug("End of getCurrentDateTime()");
694 return currentDate;
695 }
696
697
698
699
700
701
702
703 public String setDocumentDescription(String description,Map descMap){
704 LOG.debug("Inside setDocumentDescription()");
705 if(description.contains(OLEConstants.OPERATOR_INITIALS)){
706 description = description.replace(OLEConstants.OPERATOR_INITIALS,getOperatorInitials());
707 }
708 if(description.contains(OLEConstants.CURRENT_DATE_TIME)){
709 description = description.replace(OLEConstants.CURRENT_DATE_TIME,getCurrentDateTime());
710 }
711 if(descMap != null){
712 if(description.contains(OLEConstants.PO_DOC_ID)){
713 description = description.replace(OLEConstants.PO_DOC_ID,descMap.get(OLEConstants.PO_DOC_ID) != null ?descMap.get(OLEConstants.PO_DOC_ID).toString():"");
714 }
715 if(description.contains(OLEConstants.VENDOR_NAME)){
716 description = description.replace(OLEConstants.VENDOR_NAME,descMap.get(OLEConstants.VENDOR_NAME) != null ?descMap.get(OLEConstants.VENDOR_NAME).toString():"");
717 }
718 if(description.contains(OLEConstants.ORDER_TYP)){
719 description = description.replace(OLEConstants.ORDER_TYP,descMap.get(OLEConstants.ORDER_TYP) != null ? descMap.get(OLEConstants.ORDER_TYP).toString():"");
720 }
721 if(description.contains(OLEConstants.VND_ITM_ID)){
722 description = description.replace(OLEConstants.VND_ITM_ID,descMap.get(OLEConstants.VND_ITM_ID) != null ? descMap.get(OLEConstants.VND_ITM_ID).toString():"");
723 }
724 }
725 if(LOG.isDebugEnabled()) {
726 LOG.debug("Document Description ----------------->" + description);
727 }
728 LOG.debug("End of setDocumentDescription()");
729 return description;
730
731 }
732 }