1 package org.kuali.ole.patron.bill.controller;
2
3 import org.apache.log4j.Logger;
4 import org.kuali.ole.OLEConstants;
5 import org.kuali.ole.patron.bill.*;
6 import org.kuali.ole.patron.bo.OlePatronDocument;
7 import org.kuali.rice.krad.service.BusinessObjectService;
8 import org.kuali.rice.krad.service.KRADServiceLocator;
9 import org.kuali.rice.krad.util.GlobalVariables;
10 import org.kuali.rice.krad.util.KRADConstants;
11 import org.kuali.rice.krad.web.controller.UifControllerBase;
12 import org.kuali.rice.krad.web.form.UifFormBase;
13 import org.springframework.stereotype.Controller;
14 import org.springframework.validation.BindingResult;
15 import org.springframework.web.bind.annotation.ModelAttribute;
16 import org.springframework.web.bind.annotation.RequestMapping;
17 import org.springframework.web.servlet.ModelAndView;
18 import org.kuali.ole.patron.bill.form.PatronBillForm;
19 import javax.servlet.http.HttpServletRequest;
20 import javax.servlet.http.HttpServletResponse;
21 import java.math.BigDecimal;
22 import java.sql.*;
23 import java.util.*;
24 import java.util.Date;
25
26
27
28
29
30
31
32
33
34 @Controller
35 @RequestMapping(value = "/patronbill")
36 public class PatronBillController extends UifControllerBase {
37
38 private static final Logger LOG = Logger.getLogger(PatronBillController.class);
39
40
41 private BusinessObjectService businessObjectService;
42
43
44
45
46
47 private BusinessObjectService getBusinessObjectService() {
48 if (null == businessObjectService) {
49 businessObjectService = KRADServiceLocator.getBusinessObjectService();
50 }
51 return businessObjectService;
52 }
53
54
55
56
57
58
59 @Override
60 protected PatronBillForm createInitialForm(HttpServletRequest request) {
61 return new PatronBillForm();
62 }
63
64
65
66
67
68
69
70
71
72
73
74 @Override
75 @RequestMapping(params = "methodToCall=start")
76 public ModelAndView start(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
77 HttpServletRequest request, HttpServletResponse response) {
78 PatronBillForm patronBillForm = (PatronBillForm) form;
79 PatronBillHelperService patronBillHelperService = new PatronBillHelperService();
80 patronBillForm.setOlePatronDocument(patronBillHelperService.getPatronDetails(patronBillForm.getPatronId()));
81 patronBillForm.setPatronBillPaymentList(patronBillHelperService.getBillPayment(patronBillForm.getPatronId()));
82 patronBillForm.setFeeTypes(patronBillHelperService.getFeeTypeList(patronBillForm.getPatronBillPaymentList()));
83 patronBillForm.setPaymentAmount(null);
84 patronBillForm.setPaymentMethod("");
85 patronBillForm.setBillWisePayment("default");
86 return super.start(patronBillForm, result, request, response);
87 }
88
89
90
91
92
93
94
95
96
97 @RequestMapping(params = "methodToCall=accept")
98 public ModelAndView acceptPayment(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
99 HttpServletRequest request, HttpServletResponse response) {
100 LOG.debug("Initialized acceptPayment Method");
101 PatronBillHelperService patronBillHelperService = new PatronBillHelperService();
102 PatronBillForm patronBillForm = (PatronBillForm) form;
103 boolean valid = true;
104 if(patronBillForm.getPaymentAmount()==null){
105 valid = false;
106 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.PAY_AMT_EMPTY );
107 }else {
108 int signum = patronBillForm.getPaymentAmount().signum();
109 if(signum < 0){
110 valid = false;
111 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.NEGATIVE_NUM );
112 }
113 }
114 if(patronBillForm.getPaymentMethod()==null || patronBillForm.getPaymentMethod().trim().isEmpty()){
115 valid = false;
116 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.PAY_METHOD_REQUIRED );
117 }
118 if(!valid){
119 return getUIFModelAndView(patronBillForm);
120 }
121 BigDecimal paymentAmount = patronBillForm.getPaymentAmount();
122 if(patronBillForm.getBillWisePayment().equalsIgnoreCase(OLEConstants.BILL_WISE)){
123 List<PatronBillPayment> patronBillPayments = patronBillForm.getPatronBillPaymentList();
124 paymentAmount = patronBillHelperService.billWiseTransaction(patronBillPayments,paymentAmount,OLEConstants.FULL_PAID,OLEConstants.PAR_PAID,false,null);
125 }else if(patronBillForm.getBillWisePayment().equalsIgnoreCase(OLEConstants.ITEM_WISE)){
126 List<FeeType> feeTypes = patronBillForm.getFeeTypes();
127 paymentAmount = patronBillHelperService.itemWiseTransaction(feeTypes,paymentAmount,OLEConstants.FULL_PAID,OLEConstants.PAR_PAID,null);
128 }else{
129 List<PatronBillPayment> patronBillPayments = patronBillForm.getPatronBillPaymentList();
130 paymentAmount = patronBillHelperService.billWiseTransaction(patronBillPayments,paymentAmount,OLEConstants.FULL_PAID,OLEConstants.PAR_PAID,true,null);
131 }
132 if(paymentAmount.compareTo(OLEConstants.BIGDECIMAL_DEF_VALUE)>0){
133 patronBillForm.setMessage(OLEConstants.BAL_AMT+paymentAmount);
134 }
135 return start(patronBillForm, result, request, response);
136 }
137
138
139
140
141
142
143
144
145
146 @RequestMapping(params = "methodToCall=forgive")
147 public ModelAndView forgivePayment(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
148 HttpServletRequest request, HttpServletResponse response) {
149 LOG.debug("Initialized forgivePayment Method");
150 PatronBillHelperService patronBillHelperService = new PatronBillHelperService();
151 PatronBillForm patronBillForm = (PatronBillForm) form;
152 boolean valid = true;
153 if(patronBillForm.getPaymentAmount()==null){
154 valid = false;
155 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.PAY_AMT_EMPTY );
156 }else{
157 int signum = patronBillForm.getPaymentAmount().signum();
158 if(signum < 0){
159 valid = false;
160 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.NEGATIVE_NUM );
161 }
162 }
163
164
165
166
167 if(!valid){
168 return getUIFModelAndView(patronBillForm);
169 }
170 BigDecimal paymentAmount = patronBillForm.getPaymentAmount();
171 if(patronBillForm.getBillWisePayment().equalsIgnoreCase(OLEConstants.BILL_WISE)){
172 List<PatronBillPayment> patronBillPayments = patronBillForm.getPatronBillPaymentList();
173 paymentAmount = patronBillHelperService.billWiseTransaction(patronBillPayments,paymentAmount,OLEConstants.FORGIVEN,OLEConstants.PAR_PAID,false,patronBillForm.getForgiveNote());
174 }else if(patronBillForm.getBillWisePayment().equalsIgnoreCase(OLEConstants.ITEM_WISE)){
175 List<FeeType> feeTypes = patronBillForm.getFeeTypes();
176 paymentAmount = patronBillHelperService.itemWiseTransaction(feeTypes,paymentAmount,OLEConstants.FORGIVEN,OLEConstants.PAR_PAID,patronBillForm.getForgiveNote());
177
178 }else{
179 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.SELECT );
180 return start(patronBillForm, result, request, response);
181 }
182 if(paymentAmount.compareTo(OLEConstants.BIGDECIMAL_DEF_VALUE)>0){
183 patronBillForm.setMessage(OLEConstants.BAL_AMT+paymentAmount);
184 }
185 return start(patronBillForm, result, request, response);
186 }
187
188
189
190
191
192
193
194
195
196 @RequestMapping(params = "methodToCall=error")
197 public ModelAndView errorPayment(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
198 HttpServletRequest request, HttpServletResponse response) {
199 LOG.debug("Initialized forgivePayment Method");
200 PatronBillHelperService patronBillHelperService = new PatronBillHelperService();
201 PatronBillForm patronBillForm = (PatronBillForm) form;
202 boolean valid = true;
203 if(patronBillForm.getPaymentAmount()==null){
204 valid = false;
205 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.PAY_AMT_EMPTY );
206 }else {
207 int signum = patronBillForm.getPaymentAmount().signum();
208 if(signum < 0){
209 valid = false;
210 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.NEGATIVE_NUM );
211 }
212 }
213
214
215
216
217 if(!valid){
218 return getUIFModelAndView(patronBillForm);
219 }
220 BigDecimal paymentAmount = patronBillForm.getPaymentAmount();
221 if(patronBillForm.getBillWisePayment().equalsIgnoreCase(OLEConstants.BILL_WISE)){
222 List<PatronBillPayment> patronBillPayments = patronBillForm.getPatronBillPaymentList();
223 paymentAmount = patronBillHelperService.billWiseTransaction(patronBillPayments,paymentAmount,OLEConstants.IN_ERROR,OLEConstants.PAR_PAID,false,patronBillForm.getErrorNote());
224 }else if(patronBillForm.getBillWisePayment().equalsIgnoreCase(OLEConstants.ITEM_WISE)){
225 List<FeeType> feeTypes = patronBillForm.getFeeTypes();
226 paymentAmount = patronBillHelperService.itemWiseTransaction(feeTypes,paymentAmount,OLEConstants.IN_ERROR,OLEConstants.PAR_PAID,patronBillForm.getErrorNote());
227
228 }else{
229 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.SELECT );
230 return start(patronBillForm, result, request, response);
231 }
232 if(paymentAmount.compareTo(OLEConstants.BIGDECIMAL_DEF_VALUE)>0){
233 patronBillForm.setMessage(OLEConstants.BAL_AMT+paymentAmount);
234 }
235 return start(patronBillForm, result, request, response);
236 }
237
238
239
240
241
242
243
244
245
246 @RequestMapping(params = "methodToCall=print")
247 public ModelAndView printBill(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,HttpServletRequest request, HttpServletResponse response) throws Exception {
248 LOG.debug("Initialized printBill Method");
249 PatronBillForm patronBillForm = (PatronBillForm) form;
250 PatronBillHelperService patronBillHelperService = new PatronBillHelperService();
251 PrintBill printBill = new PrintBill();
252 List<PatronBillPayment> patronBillList = new ArrayList<PatronBillPayment>();
253 List<PatronBillPayment> patronBillPaymentList =new ArrayList<PatronBillPayment>();
254 List<FeeType> feeTypes = new ArrayList<FeeType>();
255 OlePatronDocument olePatronDocument = patronBillForm.getOlePatronDocument();
256 String firstName = olePatronDocument.getFirstName();
257 String lastName= olePatronDocument.getLastName();
258
259 if(patronBillForm.getBillWisePayment().equalsIgnoreCase(OLEConstants.BILL_WISE)){
260 for(PatronBillPayment patronBillPayment : patronBillForm.getPatronBillPaymentList()) {
261 if (patronBillPayment.isSelectBill()) {
262 patronBillPaymentList.add(patronBillPayment);
263 feeTypes = patronBillHelperService.getFeeTypeList(patronBillPaymentList);
264 }
265 }
266 printBill.generatePdf(firstName,lastName,patronBillPaymentList,feeTypes,response);
267 }else if(patronBillForm.getBillWisePayment().equalsIgnoreCase(OLEConstants.ITEM_WISE)){
268 patronBillList = patronBillForm.getPatronBillPaymentList();
269 for(FeeType feeType : patronBillForm.getFeeTypes()) {
270 if (feeType.isActiveItem()) {
271 feeTypes.add(feeType);
272 }
273 }
274 printBill.generatePdf(firstName,lastName,patronBillList,feeTypes,response);
275 }
276 return getUIFModelAndView(patronBillForm,"BillViewPage");
277 }
278
279
280
281
282
283
284
285
286
287 @RequestMapping(params = "methodToCall=payment")
288 public ModelAndView payment(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
289 HttpServletRequest request, HttpServletResponse response) {
290 return getUIFModelAndView(form,"BillViewPage");
291 }
292
293
294
295
296 @Override
297 @RequestMapping(params = "methodToCall=close")
298 public ModelAndView close(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
299 HttpServletRequest request, HttpServletResponse response) {
300 return super.close(form, result, request, response);
301 }
302
303
304
305
306
307
308
309
310 @RequestMapping(params = "methodToCall=freeTextNote")
311 public ModelAndView freeTextNote(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
312 HttpServletRequest request, HttpServletResponse response) {
313 PatronBillHelperService patronBillHelperService = new PatronBillHelperService();
314 PatronBillForm patronBillForm = (PatronBillForm) form;
315 if(patronBillForm.getBillWisePayment().equalsIgnoreCase(OLEConstants.BILL_WISE)){
316 List<PatronBillPayment> patronBillPayments = patronBillForm.getPatronBillPaymentList();
317 patronBillHelperService.billWiseCancellation(patronBillPayments,patronBillForm.getFreeTextNote());
318 }else if(patronBillForm.getBillWisePayment().equalsIgnoreCase(OLEConstants.ITEM_WISE)){
319 List<FeeType> feeTypes = patronBillForm.getFeeTypes();
320 patronBillHelperService.itemWiseCancellation(feeTypes,patronBillForm.getFreeTextNote());
321
322 }else{
323 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.SELECT );
324 }
325 return start(patronBillForm, result, request, response);
326 }
327
328
329
330
331
332
333
334
335
336 @RequestMapping(params = "methodToCall=printBillPayment")
337 public ModelAndView printBillPayment(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
338 HttpServletRequest request, HttpServletResponse response) {
339 PatronBillForm patronBillForm = (PatronBillForm) form;
340 PatronBillHelperService patronBillHelperService = new PatronBillHelperService();
341 List<PatronBillPayment> patronBillPaymentList = patronBillHelperService.getBillPayment(patronBillForm.getPatronId());
342 List<FeeType> feeTypeList = patronBillHelperService.getFeeTypeList(patronBillPaymentList);
343 patronBillForm.setPrintBillReview(true);
344 patronBillForm.setPrintFlag(true);
345 boolean review = false;
346 String reviewBillParameter = patronBillHelperService.getParameter(OLEConstants.OlePatron.PATRON_BILL_REVIEW_PRINT);
347 boolean reviewParameter = reviewBillParameter.equalsIgnoreCase(OLEConstants.TRUE);
348 if(patronBillForm.getBillWisePayment().equalsIgnoreCase("default")){
349 patronBillForm.setPrintFlag(false);
350 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.SELECT );
351 }
352 if (patronBillForm.getPatronBillPaymentList().size() > 0) {
353 for (PatronBillPayment patronBill : patronBillForm.getPatronBillPaymentList() ) {
354 if ( patronBillPaymentList.size() > 0 ) {
355 for ( PatronBillPayment patronBillPayment : patronBillPaymentList ) {
356 if (patronBillPayment.getBillNumber().equals(patronBill.getBillNumber())) {
357 if (patronBill.isSelectBill()) {
358 review = patronBillPayment.isReviewed();
359 if ( (reviewParameter && !review)) {
360 patronBillForm.setPrintBillReview(false);
361 break;
362 }
363 }
364 }
365 }
366 }
367 }
368 }
369 if (patronBillForm.getFeeTypes().size() > 0) {
370 for (FeeType feeTypeBo : patronBillForm.getFeeTypes() ) {
371 if ( feeTypeList.size() > 0 ) {
372 for ( FeeType feeType : feeTypeList ) {
373 if ( feeType.getBillNumber().equals(feeTypeBo.getBillNumber()) ) {
374 if ( feeTypeBo.isActiveItem() ) {
375 PatronBillPayment billPayment = feeType.getPatronBillPayment();
376 review = billPayment.isReviewed();
377 if ( (reviewParameter && !review) ) {
378 patronBillForm.setPrintBillReview(false);
379 break;
380 }
381 }
382 }
383 }
384 }
385 }
386 }
387 if ( !patronBillForm.isPrintBillReview() ) {
388 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.NOT_REVIEWED );
389 }
390 return getUIFModelAndView(patronBillForm,"BillViewPage");
391 }
392
393 }