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 }