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.pdf; 017 018 import java.util.HashMap; 019 import java.util.List; 020 import java.util.Map; 021 022 import org.apache.commons.lang.StringUtils; 023 import org.kuali.kfs.module.purap.PurapConstants; 024 import org.kuali.kfs.module.purap.businessobject.PurchaseOrderContractLanguage; 025 import org.kuali.kfs.module.purap.businessobject.PurchaseOrderVendorQuote; 026 import org.kuali.kfs.module.purap.dataaccess.ImageDao; 027 import org.kuali.kfs.module.purap.document.PurchaseOrderDocument; 028 import org.kuali.kfs.module.purap.exception.PurapConfigurationException; 029 import org.kuali.kfs.sys.KFSConstants; 030 import org.kuali.kfs.sys.KFSPropertyConstants; 031 import org.kuali.kfs.sys.context.SpringContext; 032 import org.kuali.kfs.sys.service.impl.KfsParameterConstants; 033 import org.kuali.kfs.vnd.businessobject.CampusParameter; 034 import org.kuali.rice.core.resourceloader.ServiceLocator; 035 import org.kuali.rice.kns.service.BusinessObjectService; 036 import org.kuali.rice.kns.service.KualiConfigurationService; 037 import org.kuali.rice.kns.service.ParameterService; 038 039 /** 040 * Contains the parameters needed for creating a purchase order pdf document. 041 */ 042 public class PurchaseOrderTransmitParameters implements PurchaseOrderParameters { 043 044 private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(PurchaseOrderTransmitParameters.class); 045 046 private String imageTempLocation; 047 private String key; 048 private String logoImage; 049 private String directorSignatureImage; 050 private String contractManagerSignatureImage; 051 private CampusParameter campusParameter; 052 private String statusInquiryUrl; 053 private String contractLanguage; 054 private String contractManagerCampusCode; 055 private boolean useImage; 056 057 // common parameters for pdf and fax 058 private String pdfFileLocation; 059 private String pdfFileName; 060 061 // parameters for sending fax 062 String recipientFaxNumber; 063 String vendorName; 064 String faxDescription; 065 066 public PurchaseOrderTransmitParameters() { 067 068 } 069 070 public void setPurchaseOrderPdfParameters(PurchaseOrderDocument po) { 071 setPurchaseOrderPdfParameters(po, null); 072 } 073 074 public void setPurchaseOrderPdfParameters(PurchaseOrderDocument po, PurchaseOrderVendorQuote povq) { 075 076 077 this.key = povq == null ? po.getPurapDocumentIdentifier().toString() : po.getPurapDocumentIdentifier().toString() + povq.getPurchaseOrderVendorQuoteIdentifier().toString(); // key can be any string; chose to use the PO number. 078 String campusCode = po.getDeliveryCampusCode().toLowerCase(); 079 boolean useImage = true; 080 if (SpringContext.getBean(ParameterService.class).parameterExists(KfsParameterConstants.PURCHASING_DOCUMENT.class, PurapConstants.PDF_IMAGES_AVAILABLE_INDICATOR)) { 081 useImage = SpringContext.getBean(ParameterService.class).getIndicatorParameter(KfsParameterConstants.PURCHASING_DOCUMENT.class, PurapConstants.PDF_IMAGES_AVAILABLE_INDICATOR); 082 } 083 // We'll get the imageTempLocation and the actual images only if the useImage is true. If useImage is false, we'll leave the 084 // images as blank space 085 if (useImage) { 086 this.imageTempLocation = SpringContext.getBean(KualiConfigurationService.class).getPropertyString(KFSConstants.TEMP_DIRECTORY_KEY) + "/"; 087 088 if (imageTempLocation == null) { 089 throw new PurapConfigurationException("IMAGE_TEMP_PATH is missing"); 090 } 091 092 // Get images 093 if ((this.logoImage = SpringContext.getBean(ImageDao.class).getLogo(key, campusCode, imageTempLocation)) == null) { 094 throw new PurapConfigurationException("logoImage is null."); 095 } 096 if ((this.directorSignatureImage = SpringContext.getBean(ImageDao.class).getPurchasingDirectorImage(key, campusCode, imageTempLocation)) == null) { 097 throw new PurapConfigurationException("directorSignatureImage is null."); 098 } 099 if ((this.contractManagerSignatureImage = SpringContext.getBean(ImageDao.class).getContractManagerImage(key, po.getContractManagerCode(), imageTempLocation)) == null) { 100 throw new PurapConfigurationException("contractManagerSignatureImage is null."); 101 } 102 } 103 104 Map<String, Object> criteria = new HashMap<String, Object>(); 105 criteria.put(KFSPropertyConstants.CAMPUS_CODE, po.getDeliveryCampusCode()); 106 this.campusParameter = (CampusParameter) ((List) SpringContext.getBean(BusinessObjectService.class).findMatching(CampusParameter.class, criteria)).get(0); 107 108 this. statusInquiryUrl = SpringContext.getBean(ParameterService.class).getParameterValue(KfsParameterConstants.PURCHASING_DOCUMENT.class, PurapConstants.STATUS_INQUIRY_URL); 109 if (this.statusInquiryUrl == null) { 110 LOG.debug("generatePurchaseOrderPdf() ended"); 111 throw new PurapConfigurationException("Application Setting INVOICE_STATUS_INQUIRY_URL is missing."); 112 } 113 114 StringBuffer contractLanguage = new StringBuffer(); 115 criteria.put(KFSPropertyConstants.ACTIVE, true); 116 List<PurchaseOrderContractLanguage> contractLanguageList = (List<PurchaseOrderContractLanguage>) (SpringContext.getBean(BusinessObjectService.class).findMatching(PurchaseOrderContractLanguage.class, criteria)); 117 if (!contractLanguageList.isEmpty()) { 118 int lineNumber = 1; 119 for (PurchaseOrderContractLanguage row : contractLanguageList) { 120 if (row.getCampusCode().equals(po.getDeliveryCampusCode())) { 121 contractLanguage.append(lineNumber + " " + row.getPurchaseOrderContractLanguageDescription() + "\n"); 122 ++lineNumber; 123 } 124 } 125 } 126 127 this.contractLanguage = contractLanguage.toString(); 128 129 this.pdfFileLocation = SpringContext.getBean(ParameterService.class).getParameterValue(KfsParameterConstants.PURCHASING_DOCUMENT.class, PurapConstants.PDF_DIRECTORY); 130 if (pdfFileLocation == null) { 131 LOG.debug("savePurchaseOrderPdf() ended"); 132 throw new PurapConfigurationException("Application Setting PDF_DIRECTORY is missing."); 133 } 134 135 String environment = SpringContext.getBean(KualiConfigurationService.class).getPropertyString(KFSConstants.ENVIRONMENT_KEY); 136 137 this.pdfFileName = povq != null ? "PURAP_PO_" + po.getPurapDocumentIdentifier().toString() + "_Quote" + povq.getPurchaseOrderVendorQuoteIdentifier().toString()+ "_" + environment + "_" + System.currentTimeMillis() + ".pdf" : 138 "PURAP_PO_" + po.getPurapDocumentIdentifier().toString() + "_" + environment + "_" + System.currentTimeMillis() + ".pdf"; 139 140 141 this.contractManagerCampusCode = po.getContractManager().getContractManagerPerson()!= null ? po.getContractManager().getContractManagerPerson().getCampusCode() : ""; 142 this.contractLanguage = contractLanguage.toString(); 143 144 } 145 146 147 public void setPurchaseOrderFaxParameters(PurchaseOrderDocument po, PurchaseOrderVendorQuote povq) { 148 // get parameters to send fax 149 150 151 this.pdfFileLocation = SpringContext.getBean(ParameterService.class).getParameterValue(KfsParameterConstants.PURCHASING_DOCUMENT.class, PurapConstants.PDF_DIRECTORY); 152 if (this.pdfFileLocation == null) { 153 LOG.debug("savePurchaseOrderPdf() ended"); 154 throw new PurapConfigurationException("Application Setting PDF_DIRECTORY is missing."); 155 } 156 157 158 this.pdfFileName = povq != null ? "PURAP_PO_" + po.getPurapDocumentIdentifier().toString() + "_Quote" + povq.getPurchaseOrderVendorQuoteIdentifier().toString()+ "_" + System.currentTimeMillis() + ".pdf" : 159 "PURAP_PO_" + po.getPurapDocumentIdentifier().toString() + "_" + System.currentTimeMillis() + ".pdf"; 160 161 162 this.faxDescription = povq != null ? "PO: " + po.getPurapDocumentIdentifier() + " Quote ID: " + povq.getPurchaseOrderVendorQuoteIdentifier(): 163 "PO: " + po.getPurapDocumentIdentifier() + " Cntrct Mgr: " + po.getContractManager().getContractManagerCode(); 164 165 String productionEnvironmentCode = SpringContext.getBean(KualiConfigurationService.class).getPropertyString(KFSConstants.PROD_ENVIRONMENT_CODE_KEY); 166 String environmentCode = SpringContext.getBean(KualiConfigurationService.class).getPropertyString(KFSConstants.ENVIRONMENT_KEY); 167 168 if (!StringUtils.equals(productionEnvironmentCode, environmentCode)) { 169 this.faxDescription = environmentCode + " TEST - " + this.faxDescription; 170 } 171 172 this.vendorName = povq != null ? povq.getVendorName() : po.getVendorName(); 173 174 175 176 177 178 } 179 180 181 182 public void setPurchaseOrderPdfAndFaxParameters(PurchaseOrderDocument po) { 183 setPurchaseOrderPdfAndFaxParameters(po, null); 184 } 185 186 public void setPurchaseOrderPdfAndFaxParameters(PurchaseOrderDocument po, PurchaseOrderVendorQuote povq) { 187 188 this.key = povq == null ? po.getPurapDocumentIdentifier().toString() : po.getPurapDocumentIdentifier().toString() + povq.getPurchaseOrderVendorQuoteIdentifier().toString(); // key can be any string; chose to use the PO number. 189 String campusCode = po.getDeliveryCampusCode().toLowerCase(); 190 // String imageTempLocation = ""; 191 // String logoImage = ""; 192 // String directorSignatureImage = ""; 193 // String contractManagerSignatureImage = ""; 194 boolean useImage = true; 195 if (SpringContext.getBean(ParameterService.class).parameterExists(KfsParameterConstants.PURCHASING_DOCUMENT.class, PurapConstants.PDF_IMAGES_AVAILABLE_INDICATOR)) { 196 useImage = SpringContext.getBean(ParameterService.class).getIndicatorParameter(KfsParameterConstants.PURCHASING_DOCUMENT.class, PurapConstants.PDF_IMAGES_AVAILABLE_INDICATOR); 197 } 198 // We'll get the imageTempLocation and the actual images only if the useImage is true. If useImage is false, we'll leave the 199 // images as blank space 200 if (useImage) { 201 this.imageTempLocation = SpringContext.getBean(KualiConfigurationService.class).getPropertyString(KFSConstants.TEMP_DIRECTORY_KEY) + "/"; 202 203 if (this.imageTempLocation == null) { 204 throw new PurapConfigurationException("IMAGE_TEMP_PATH is missing"); 205 } 206 207 // Get images 208 if ((this.logoImage = SpringContext.getBean(ImageDao.class).getLogo(key, campusCode, imageTempLocation)) == null) { 209 throw new PurapConfigurationException("logoImage is null."); 210 } 211 if ((this.directorSignatureImage = SpringContext.getBean(ImageDao.class).getPurchasingDirectorImage(key, campusCode, imageTempLocation)) == null) { 212 throw new PurapConfigurationException("directorSignatureImage is null."); 213 } 214 if ((this.contractManagerSignatureImage = SpringContext.getBean(ImageDao.class).getContractManagerImage(key, po.getContractManagerCode(), imageTempLocation)) == null) { 215 throw new PurapConfigurationException("contractManagerSignatureImage is null."); 216 } 217 } 218 219 Map<String, Object> criteria = new HashMap<String, Object>(); 220 criteria.put(KFSPropertyConstants.CAMPUS_CODE, po.getDeliveryCampusCode()); 221 this.campusParameter = (CampusParameter) ((List) SpringContext.getBean(BusinessObjectService.class).findMatching(CampusParameter.class, criteria)).get(0); 222 223 this.statusInquiryUrl = SpringContext.getBean(ParameterService.class).getParameterValue(KfsParameterConstants.PURCHASING_DOCUMENT.class, PurapConstants.STATUS_INQUIRY_URL); 224 if (this.statusInquiryUrl == null) { 225 LOG.debug("generatePurchaseOrderPdf() ended"); 226 throw new PurapConfigurationException("Application Setting INVOICE_STATUS_INQUIRY_URL is missing."); 227 } 228 229 StringBuffer contractLanguage = new StringBuffer(); 230 criteria.put(KFSPropertyConstants.ACTIVE, true); 231 List<PurchaseOrderContractLanguage> contractLanguageList = (List<PurchaseOrderContractLanguage>) (SpringContext.getBean(BusinessObjectService.class).findMatching(PurchaseOrderContractLanguage.class, criteria)); 232 if (!contractLanguageList.isEmpty()) { 233 int lineNumber = 1; 234 for (PurchaseOrderContractLanguage row : contractLanguageList) { 235 if (row.getCampusCode().equals(po.getDeliveryCampusCode())) { 236 contractLanguage.append(lineNumber + " " + row.getPurchaseOrderContractLanguageDescription() + "\n"); 237 ++lineNumber; 238 } 239 } 240 } 241 242 this.contractLanguage = contractLanguage.toString(); 243 244 this.pdfFileLocation = SpringContext.getBean(ParameterService.class).getParameterValue(KfsParameterConstants.PURCHASING_DOCUMENT.class, PurapConstants.PDF_DIRECTORY); 245 if (pdfFileLocation == null) { 246 LOG.debug("savePurchaseOrderPdf() ended"); 247 throw new PurapConfigurationException("Application Setting PDF_DIRECTORY is missing."); 248 } 249 250 this.pdfFileName = povq != null ? "PURAP_PO_" + po.getPurapDocumentIdentifier().toString() + "_Quote" + povq.getPurchaseOrderVendorQuoteIdentifier().toString()+ "_" + System.currentTimeMillis() + ".pdf" : 251 "PURAP_PO_" + po.getPurapDocumentIdentifier().toString() + "_" + System.currentTimeMillis() + ".pdf"; 252 253 254 this.contractManagerCampusCode = po.getContractManager().getContractManagerPerson()!= null ? po.getContractManager().getContractManagerPerson().getCampusCode() : ""; 255 256 // get parameters to send fax 257 258 this.faxDescription = povq != null ? "PO: " + po.getPurapDocumentIdentifier() + " Quote ID: " + povq.getPurchaseOrderVendorQuoteIdentifier(): 259 "PO: " + po.getPurapDocumentIdentifier() + " Cntrct Mgr: " + po.getContractManager().getContractManagerCode(); 260 261 String productionEnvironmentCode = SpringContext.getBean(KualiConfigurationService.class).getPropertyString(KFSConstants.PROD_ENVIRONMENT_CODE_KEY); 262 String environmentCode = SpringContext.getBean(KualiConfigurationService.class).getPropertyString(KFSConstants.ENVIRONMENT_KEY); 263 264 if (!StringUtils.equals(productionEnvironmentCode, environmentCode)) { 265 this.faxDescription = environmentCode + " TEST - " + this.faxDescription; 266 } 267 268 this.vendorName = povq != null ? povq.getVendorName() : po.getVendorName(); 269 this.recipientFaxNumber = povq == null ? po.getVendorFaxNumber(): povq.getVendorFaxNumber(); 270 271 272 } 273 274 275 276 public String getContractManagerCampusCode() { 277 return contractManagerCampusCode; 278 } 279 280 public void setContractManagerCampusCode(String contractManagerCampusCode) { 281 this.contractManagerCampusCode = contractManagerCampusCode; 282 } 283 284 public String getPdfFileName() { 285 return pdfFileName; 286 } 287 288 public void setPdfFileName(String pdfFileName) { 289 this.pdfFileName = pdfFileName; 290 } 291 292 public String getPdfFileLocation() { 293 return pdfFileLocation; 294 } 295 296 public void setPdfFileLocation(String pdfFileLocation) { 297 this.pdfFileLocation = pdfFileLocation; 298 } 299 300 public CampusParameter getCampusParameter() { 301 return campusParameter; 302 } 303 304 public void setCampusParameter(CampusParameter campusParameter) { 305 this.campusParameter = campusParameter; 306 } 307 308 public String getContractLanguage() { 309 return contractLanguage; 310 } 311 312 public void setContractLanguage(String contractLanguage) { 313 this.contractLanguage = contractLanguage; 314 } 315 316 public String getContractManagerSignatureImage() { 317 return contractManagerSignatureImage; 318 } 319 320 public void setContractManagerSignatureImage(String contractManagerSignatureImage) { 321 this.contractManagerSignatureImage = contractManagerSignatureImage; 322 } 323 324 public String getDirectorSignatureImage() { 325 return directorSignatureImage; 326 } 327 328 public void setDirectorSignatureImage(String directorSignatureImage) { 329 this.directorSignatureImage = directorSignatureImage; 330 } 331 332 public String getImageTempLocation() { 333 return imageTempLocation; 334 } 335 336 public void setImageTempLocation(String imageTempLocation) { 337 this.imageTempLocation = imageTempLocation; 338 } 339 340 public String getKey() { 341 return key; 342 } 343 344 public void setKey(String key) { 345 this.key = key; 346 } 347 348 public String getLogoImage() { 349 return logoImage; 350 } 351 352 public void setLogoImage(String logoImage) { 353 this.logoImage = logoImage; 354 } 355 356 public String getStatusInquiryUrl() { 357 return statusInquiryUrl; 358 } 359 360 public void setStatusInquiryUrl(String statusInquiryUrl) { 361 this.statusInquiryUrl = statusInquiryUrl; 362 } 363 364 public boolean isUseImage() { 365 return useImage; 366 } 367 368 public void setUseImage(boolean useImage) { 369 this.useImage = useImage; 370 } 371 372 public String getRecipientFaxNumber() { 373 return recipientFaxNumber; 374 } 375 376 public void setRecipientFaxNumber(String recipientFaxNumber) { 377 this.recipientFaxNumber = recipientFaxNumber; 378 } 379 380 public String getVendorName() { 381 return vendorName; 382 } 383 384 public void setVendorName(String vendorName) { 385 vendorName = vendorName; 386 } 387 388 public String getFaxDescription() { 389 return faxDescription; 390 } 391 392 public void setFaxDescription(String faxDescription) { 393 this.faxDescription = faxDescription; 394 } 395 396 397 398 399 }