Subversion Repositories SmartDukaan

Rev

Rev 5020 | Rev 5108 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4600 varun.gupt 1
package in.shop2020.support.controllers;
2
 
4734 varun.gupt 3
import in.shop2020.logistics.LogisticsServiceException;
4
import in.shop2020.logistics.Provider;
4600 varun.gupt 5
import in.shop2020.model.v1.catalog.InventoryService.Client;
6
import in.shop2020.model.v1.catalog.Vendor;
7
import in.shop2020.model.v1.order.LineItem;
8
import in.shop2020.model.v1.order.Order;
4734 varun.gupt 9
import in.shop2020.model.v1.order.OrderStatus;
5020 varun.gupt 10
import in.shop2020.model.v1.order.OrderStatusGroups;
4600 varun.gupt 11
import in.shop2020.model.v1.order.PaymentSettlement;
12
import in.shop2020.model.v1.order.Transaction;
13
import in.shop2020.model.v1.order.TransactionServiceException;
14
import in.shop2020.payments.Payment;
15
import in.shop2020.payments.PaymentException;
16
import in.shop2020.payments.PaymentGateway;
17
import in.shop2020.thrift.clients.CatalogClient;
4734 varun.gupt 18
import in.shop2020.thrift.clients.LogisticsClient;
4600 varun.gupt 19
import in.shop2020.thrift.clients.PaymentClient;
20
import in.shop2020.thrift.clients.TransactionClient;
21
 
5020 varun.gupt 22
import java.io.ByteArrayOutputStream;
23
import java.io.File;
24
import java.io.FileInputStream;
25
import java.io.FileNotFoundException;
26
import java.io.IOException;
27
import java.text.DateFormat;
28
import java.text.ParseException;
29
import java.text.SimpleDateFormat;
30
import java.util.ArrayList;
31
import java.util.Date;
32
import java.util.HashMap;
33
import java.util.List;
34
import java.util.Map;
35
 
4600 varun.gupt 36
import javax.servlet.ServletContext;
37
import javax.servlet.ServletOutputStream;
38
import javax.servlet.http.HttpServletRequest;
39
import javax.servlet.http.HttpServletResponse;
40
import javax.servlet.http.HttpSession;
41
 
42
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
43
import org.apache.poi.ss.usermodel.Cell;
44
import org.apache.poi.ss.usermodel.CellStyle;
45
import org.apache.poi.ss.usermodel.Font;
46
import org.apache.poi.ss.usermodel.Row;
47
import org.apache.poi.ss.usermodel.Sheet;
48
import org.apache.poi.ss.usermodel.Workbook;
49
import org.apache.poi.ss.util.CellRangeAddress;
5020 varun.gupt 50
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
4600 varun.gupt 51
import org.apache.struts2.interceptor.ServletRequestAware;
52
import org.apache.struts2.interceptor.ServletResponseAware;
53
import org.apache.struts2.rest.DefaultHttpHeaders;
54
import org.apache.struts2.rest.HttpHeaders;
55
import org.apache.struts2.util.ServletContextAware;
4715 varun.gupt 56
import org.apache.thrift.TApplicationException;
4600 varun.gupt 57
import org.apache.thrift.TException;
58
import org.apache.thrift.transport.TTransportException;
59
import org.slf4j.Logger;
60
import org.slf4j.LoggerFactory;
61
 
4715 varun.gupt 62
import com.opensymphony.xwork2.ValidationAwareSupport;
63
 
4600 varun.gupt 64
/**
65
 * @author Varun Gupta
66
 * @description: This class handles web requests to generate vendor specific reconciliation reports
67
 *               for given vendor for a given date range
68
 */
4745 varun.gupt 69
//
4715 varun.gupt 70
//@InterceptorRefs({
71
//    @InterceptorRef("defaultStack"),
72
//    @InterceptorRef("login")
73
//})
74
//@Results({
75
//    @Result(name="authfail", type="redirectAction", params = {"actionName" , "reports"})
76
//})
77
public class VendorReconciliationController extends ValidationAwareSupport implements ServletRequestAware, ServletResponseAware, ServletContextAware {
4600 varun.gupt 78
 
79
    private static Logger logger = LoggerFactory.getLogger(VendorReconciliationController.class);
80
 
81
	private enum OrderReportColumn {
82
	    ORDER_ID(0),
83
	    ORDER_DATE(1),
84
		BILLING_NUMBER(2),
85
		BILLING_DATE(3),
86
		DELIVERY_DATE(4),
87
		SETTLEMENT_DATE(5),
88
		CURRENT_STATUS(6),
4745 varun.gupt 89
		PAYMENT_STATUS(7),
4600 varun.gupt 90
		BRAND(7),
91
		MODEL_NAME(8),
92
		MODEL_NUMBER(9),
93
		COLOR(10),
94
		QUANTITY(11),
95
		UNIT_TRANSFER_PRICE(12),
96
		UNIT_SELLING_PRICE(13),
97
		TOTAL_TRANSFER_PRICE(14),
98
		TOTAL_SELLING_PRICE(15),
5020 varun.gupt 99
		PAYMENT_TYPE(16),
100
		PAYMENT_ID(17),
101
		COUPON_CODE(18),
102
		SERVICE_TAX(19),
103
		OTHER_CHARGES(20),
104
		NET_COLLECTION(21),
105
	    REFUND(22),
106
	    FINAL_AMOUNT(23),
107
	    IS_RESHIPED_ORDER(24);
4600 varun.gupt 108
//		COUPON_CATEGORY(19),
109
//		DISCOUNT(20),
110
 
111
		private int value;
112
 
113
		OrderReportColumn(int value) {
114
			this.value = value;
115
		}
116
		public int getValue(){
117
			return this.value;
118
		}
119
	}
120
 
121
	private enum OrderMismatchColumn	{
122
		ORDER_ID(0),
123
		EXPECTED_COLLECTION(1),
124
		ACTUAL_COLLECTION(2);
125
 
126
		private int value;
127
 
128
		OrderMismatchColumn(int value) {
129
			this.value = value;
130
		}
131
		public int getValue(){
132
			return this.value;
133
		}
134
	}
135
 
136
	private HttpServletRequest request;
137
	private HttpServletResponse response;
138
	private ServletContext context;
139
    private HttpSession session;
140
	private List<Vendor> vendors;
5020 varun.gupt 141
	private Map<Long, String> codProviders = new HashMap<Long, String>();
142
	private Map<Long, String> paymentGateways = new HashMap<Long, String>();
143
 
4600 varun.gupt 144
	private String reportSource;
4715 varun.gupt 145
	private List<Long> orderIdsWithoutSuccess;
4600 varun.gupt 146
 
5098 varun.gupt 147
	private File orderIdsToBeMarkedPaid;
4600 varun.gupt 148
	private File hdfcSettlementReport;
149
 
150
	private File ebsSettlementReport;
151
	private File ebsSettlementSummary;
152
 
153
	private String bluedartSettlementDate;
154
	private File bluedartSettlementReport;
155
 
4715 varun.gupt 156
	private String aramexSettlementDate;
157
	private File aramexSettlementReport;
158
 
4600 varun.gupt 159
	private Map<Long, Map<String, Double>> misMatches = new HashMap<Long, Map<String, Double>>();
160
	private Map<Long, String> ebsSettlementSummaries;
161
 
5020 varun.gupt 162
	private List<OrderStatus> refundOrderStatuses;
4734 varun.gupt 163
 
4745 varun.gupt 164
	private List<Order> refundedOrdersBilledinDateRange = new ArrayList<Order>();
165
	private List<Order> reshippedOrders = new ArrayList<Order>();
166
 
5020 varun.gupt 167
	private Map<Long, PaymentSettlement> paymentSettlementsMap;
168
 
4600 varun.gupt 169
	private final DateFormat DATE_FORMAT = new SimpleDateFormat("dd/MM/yyyy");
170
 
5020 varun.gupt 171
	private int rowCount = 0;
172
 
4600 varun.gupt 173
	public String index()	{
5098 varun.gupt 174
		initiatializeDashboard();
4600 varun.gupt 175
		return "report";
176
	}
177
 
178
	public HttpHeaders create()	{
179
 
180
		String formType = request.getParameter("formtype");
4715 varun.gupt 181
		logger.info("Form Type: " + formType);
4600 varun.gupt 182
 
183
		if (formType.equals("uploadEBSSettlementSummary")) {
184
			uploadEBSSettlementSummary();
185
 
186
		} else if (formType.equals("uploadEBSSettlements")) {
187
			uploadEBSSettlements();
188
 
189
		} else if (formType.equals("uploadHDFCSettlements")) {
190
			uploadHDFCSettlements();
191
 
192
		} else if (formType.equals("uploadBluedartSettlements")) {
193
			uploadBluedartSettlements();
4715 varun.gupt 194
 
195
		} else if (formType.equals("uploadAramexSettlements")) {
196
			uploadAramexSettlements();
5098 varun.gupt 197
 
198
		} else if (formType.equals("markOrdersAsPaid"))	{
199
//			uploadOrderIdsToBeMarkedPaid();
4600 varun.gupt 200
		}
4715 varun.gupt 201
	    logger.info("Order Ids where no successful payment was found", orderIdsWithoutSuccess);
5098 varun.gupt 202
 
203
		initiatializeDashboard();
4600 varun.gupt 204
		return new DefaultHttpHeaders("report");
205
	}
206
 
207
	public HttpHeaders generateReconciliationReport()	{
208
		DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
209
 
210
		try	{
211
			//Formatting Form input parameters
212
 
5020 varun.gupt 213
//		    Date startDate = dateFormat.parse(request.getParameter("start"));
214
//			Date endDate = dateFormat.parse(request.getParameter("end"));
4600 varun.gupt 215
		    long vendorId = Long.parseLong(request.getParameter("vendor"));
216
 
5020 varun.gupt 217
		    logger.info("Vendor ID: " + vendorId);
4600 varun.gupt 218
 
4745 varun.gupt 219
		    String vendorName = getVendorName(vendorId);
4600 varun.gupt 220
			DateFormat dateFormatForFile = new SimpleDateFormat("dd.MM.yyyy");
4715 varun.gupt 221
 
4600 varun.gupt 222
			response.setContentType("application/vnd.ms-excel");
5020 varun.gupt 223
			response.setHeader("Content-disposition", "inline; filename=" + vendorName + "-reconciliation.xls");
4600 varun.gupt 224
 
225
			ServletOutputStream sos;
226
			try {
5020 varun.gupt 227
				ByteArrayOutputStream baos = getReconciliationReport(vendorId);
4600 varun.gupt 228
				sos = response.getOutputStream();
229
				baos.writeTo(sos);
230
				sos.flush();
231
			} catch (IOException e)	{
232
				logger.error("Error while streaming the hotspot reconciliation report", e);
233
			}
234
		} catch (NullPointerException e)   {
235
            logger.error("NullPointerException", e);
4745 varun.gupt 236
		}
4600 varun.gupt 237
		return new DefaultHttpHeaders("report");
238
	}
239
 
240
	public void uploadEBSSettlementSummary()	{
241
 
242
		DateFormat settlementDateFormat = new SimpleDateFormat("dd MMM,yyyy hh:mm:ss a");
243
		DateFormat transactionDateFormat = new SimpleDateFormat("yyyy-MM-dd");
244
 
245
		Workbook wb = null;
246
        try {
247
            wb = new HSSFWorkbook(new FileInputStream(ebsSettlementSummary));
248
        } catch (FileNotFoundException e) {
249
            logger.error("Unable to open the Settlement Summary report", e);
250
        } catch (IOException e) {
251
            logger.error("Unable to open the Settlement Summary report", e);
252
        }
253
        Sheet sheet = wb.getSheetAt(0);
254
 
255
        int indexSettlementId = 0;
256
        int indexSettlementDate = 1;
257
        int indexTransactionDateFrom = 2;
258
        int indexTransactionDateTo = 3;
259
        int indexAmount = 4;
260
 
261
        Row firstRow = sheet.getRow(0);
262
        Row secondRow = sheet.getRow(1);
263
        Row thirdRow = sheet.getRow(2);
264
        Row fourthRow = sheet.getRow(3);
265
        Row fifthRow = sheet.getRow(4);
5020 varun.gupt 266
 
4600 varun.gupt 267
		TransactionClient tsc;
268
 
269
		try {
270
			tsc = new TransactionClient();
271
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
272
 
273
			for(Row row: sheet)	{
274
				if(row.equals(firstRow) || row.equals(secondRow) || row.equals(thirdRow) || row.equals(fourthRow) || row.equals(fifthRow))	{
275
					continue;
276
				}
277
				long settlementId = (long) row.getCell(indexSettlementId).getNumericCellValue();
278
				String settlementDateStr = row.getCell(indexSettlementDate).getStringCellValue();
279
				String transactionDateFromStr = row.getCell(indexTransactionDateFrom).getStringCellValue();
280
				String transactionDateToStr = row.getCell(indexTransactionDateTo).getStringCellValue();
281
				Double amount = row.getCell(indexAmount).getNumericCellValue();
282
 
283
				Date settlementDate = settlementDateFormat.parse(settlementDateStr);
284
				Date transactionDateFrom = transactionDateFormat.parse(transactionDateFromStr);
285
				Date transactionDateTo = transactionDateFormat.parse(transactionDateToStr);
286
 
287
				try	{
288
					transactionClient.saveEBSSettlementSummary(settlementId, settlementDate.getTime(), transactionDateFrom.getTime(), transactionDateTo.getTime(), amount);
289
 
290
				} catch (Exception e) {
291
					e.printStackTrace();
292
				}
293
			}
294
        } catch (Exception e) {
295
        	e.printStackTrace();
296
		}
297
	}
298
 
299
	public void uploadHDFCSettlements()	{
300
		logger.info("Uploading HDFC settlements");
301
 
302
		Workbook wb = null;
303
		try {
304
			wb = new HSSFWorkbook(new FileInputStream(this.hdfcSettlementReport));
305
		} catch (FileNotFoundException e) {
4734 varun.gupt 306
			String errMsg = "Unable to open the HDFC Payout report";
307
			logger.error(errMsg, e);
308
			addActionError(errMsg);
309
			return;
4600 varun.gupt 310
		} catch (IOException e) {
4734 varun.gupt 311
			String errMsg = "Unable to open the HDFC Payout report";
312
			logger.error(errMsg, e);
313
			addActionError(errMsg);
314
			return;
4600 varun.gupt 315
		}
316
		Sheet sheet = wb.getSheetAt(0);
317
 
318
		Row firstRow = sheet.getRow(0);
319
 
320
		int indexRECFMT = 2;
321
		int indexSettlementDate = 7;
322
		int indexPaymentId = 13;
323
		int indexMSF = 14;
324
		int indexServiceTax = 15;
325
		int indexEduCess = 16;
326
		int indexNetCollection = 17;
327
 
328
		TransactionClient tsc;
329
		String paymentIdStr = "";
330
		long paymentId = 0;
5020 varun.gupt 331
 
4734 varun.gupt 332
		int countSuccessfulInserts = 0;
333
		int countRefunds = 0;
4600 varun.gupt 334
 
335
		try {
336
			tsc = new TransactionClient();
337
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
338
 
339
			for (Row row: sheet)	{
340
                if(row.equals(firstRow))	continue;
341
 
5020 varun.gupt 342
                if(row.getCell(0).getStringCellValue().equals("Total"))	break;
343
 
4600 varun.gupt 344
                try	{
345
                    String recfmt = row.getCell(indexRECFMT).getStringCellValue();
346
                    Date settlementDate = row.getCell(indexSettlementDate).getDateCellValue();
347
                	double netCollection = row.getCell(indexNetCollection).getNumericCellValue();
5020 varun.gupt 348
                	paymentIdStr = row.getCell(indexPaymentId).getStringCellValue().replace("'", "").trim();
4600 varun.gupt 349
                	paymentId = Long.parseLong(paymentIdStr);
350
 
351
                	logger.info("paymentId: " + paymentId + ", recfmt: " + recfmt + ", settlementDate: " + settlementDate + ", netCollection: " + netCollection);
352
 
4715 varun.gupt 353
                    if (recfmt.trim().equalsIgnoreCase("CVD"))	{
354
                    	if (netCollection > 0.0)	netCollection *= -1.0;
355
                    	transactionClient.savePaymentSettlements(settlementDate.getTime(), 1, paymentId, 0.0, 0.0, netCollection);
4734 varun.gupt 356
                    	countRefunds += 1;
5020 varun.gupt 357
 
4600 varun.gupt 358
                    } else	{
359
                    	double msf = row.getCell(indexMSF).getNumericCellValue();
360
                    	double serviceTax = row.getCell(indexServiceTax).getNumericCellValue();
361
                    	double eduCess = row.getCell(indexEduCess).getNumericCellValue();
362
                    	logger.info("msf: " + msf + ", serviceTax: " + serviceTax + ", eduCess: " + eduCess);
363
 
364
                    	transactionClient.savePaymentSettlements(settlementDate.getTime(), 1, paymentId, serviceTax, (eduCess + msf), netCollection);
4734 varun.gupt 365
                    	countSuccessfulInserts += 1;
4600 varun.gupt 366
                 	}
367
                } catch (NumberFormatException e) {
4734 varun.gupt 368
                	String errMsg = "NumberFormatException recieved for payment Id, " + paymentIdStr;
369
        			logger.error(errMsg + e);
370
        			addActionError(errMsg);
4600 varun.gupt 371
 
372
        		} catch (TransactionServiceException e) {
4734 varun.gupt 373
                	String errMsg = "TransactionServiceException recieved for payment Id, " + paymentId;
374
        			logger.error(errMsg + e);
375
        			addActionError(errMsg);
4600 varun.gupt 376
        		}
377
			}
378
		} catch (TTransportException e) {
379
			logger.error("TTransportException recieved for payment Id," + Long.toString(paymentId) + " " + e);
380
 
381
		} catch (TException e) {
382
			logger.error("TException recieved for payment Id," + Long.toString(paymentId) + " " + e);
383
		}
4734 varun.gupt 384
		addActionMessage("Added settlements for " + countSuccessfulInserts + " payments");
385
		addActionMessage("Added settlements for " + countRefunds + " refund payments");
4600 varun.gupt 386
	}
387
 
388
	public void uploadEBSSettlements()	{
389
		Workbook wb = null;
390
        try {
391
            wb = new HSSFWorkbook(new FileInputStream(this.ebsSettlementReport));
392
        } catch (FileNotFoundException e) {
4734 varun.gupt 393
            logger.error("Unable to open the EBS Settlement detail report", e);
4600 varun.gupt 394
        } catch (IOException e) {
4734 varun.gupt 395
            logger.error("Unable to open the EBS Settlement detail report", e);
4600 varun.gupt 396
        }
397
 
398
        Sheet sheet = wb.getSheetAt(0);
399
 
400
		Row firstRow = sheet.getRow(0);
401
		Row secondRow = sheet.getRow(1);
402
 
403
        int indexPaymentId = 2;
404
        int indexTxnType = 5;
405
        int indexAmount = 6;
406
 
407
        Map<Long, Map<String, Double>> map = new HashMap<Long, Map<String,Double>>();
408
        Map <String, Double> record;
4734 varun.gupt 409
        int countPaymentIds = 0;
4600 varun.gupt 410
 
411
        try	{
412
        	for (Row row: sheet)	{
413
                if(row.equals(firstRow) || row.equals(secondRow))	continue;
414
 
415
                long paymentId = Long.parseLong(row.getCell(indexPaymentId).getStringCellValue());
416
                String transactionType = row.getCell(indexTxnType).getStringCellValue();
417
                double amount = row.getCell(indexAmount).getNumericCellValue();
418
 
419
                if(map.containsKey(paymentId))	{
420
                	map.get(paymentId).put(transactionType, amount);
421
 
422
                } else	{
423
                	record = new HashMap<String, Double>();
424
                	record.put(transactionType, amount);
425
                	map.put(paymentId, record);
4734 varun.gupt 426
                	countPaymentIds += 1;
4600 varun.gupt 427
                }
428
        	}
429
        } catch	(NullPointerException e)	{
430
        	logger.error("" + e);
431
        }
4734 varun.gupt 432
        addActionMessage("Total Payment Ids added: " + countPaymentIds);
4600 varun.gupt 433
 
434
		TransactionClient tsc;
435
        long settlementId = Long.parseLong(request.getParameter("settlementId"));
436
 
4734 varun.gupt 437
        int countPaymentsRecieved = 0;
438
        int countPaymentsRefunded = 0;
439
 
4600 varun.gupt 440
        try	{
441
			tsc = new TransactionClient();
442
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
4734 varun.gupt 443
			long settlementDate;
4600 varun.gupt 444
 
4734 varun.gupt 445
			try	{
446
				settlementDate = transactionClient.getEBSSettlementDate(settlementId);
447
			} catch (TransactionServiceException e) {
448
				String errMsg = "Could not retrieve EBS Settlement date for settlementId, " + settlementId;
449
	        	logger.error(errMsg + e);
450
	        	addActionError(errMsg);
451
	        	return;
452
			}
453
 
4600 varun.gupt 454
        	for (long paymentId: map.keySet())	{
455
            	record = map.get(paymentId);
456
 
457
            	if(record.containsKey("Captured"))	{
458
            		double capturedAmount = record.get("Captured");
459
            		double tdr = record.get("TDR");
460
            		double serviceTax = record.get("ServiceTax");
461
 
462
            		if(tdr < 0)	tdr *= -1;
463
            		if(serviceTax < 0)	serviceTax *= -1;
464
 
465
            		double amount = capturedAmount - tdr - serviceTax;
4734 varun.gupt 466
 
467
            		try	{
468
            			transactionClient.savePaymentSettlements(settlementDate, 2, paymentId, serviceTax, tdr, amount);
469
        			} catch (TransactionServiceException e) {
470
        				String errMsg = "Could not save settlement for paymentId, " + paymentId;
471
        	        	logger.error(errMsg + e);
472
        	        	addActionError(errMsg);
473
        			}
474
            		countPaymentsRecieved += 1;
475
            	}
476
 
477
            	if(record.containsKey("Refunded"))	{
4600 varun.gupt 478
            		double refundedAmount = record.get("Refunded");
479
 
480
            		if (refundedAmount > 0)	refundedAmount *= -1;
481
 
4734 varun.gupt 482
            		try	{
483
            			transactionClient.savePaymentSettlements(settlementDate, 2, paymentId, 0.0, 0.0, refundedAmount);
484
        			} catch (TransactionServiceException e) {
485
        				String errMsg = "Could not save refund settlement for paymentId, " + paymentId;
486
        	        	logger.error(errMsg + e);
487
        	        	addActionError(errMsg);
488
        			}
489
            		countPaymentsRefunded += 1;
4600 varun.gupt 490
            	}
491
            }
4734 varun.gupt 492
        	addActionMessage("Total count of payments recieved: " + countPaymentsRecieved);
493
        	addActionMessage("Total count of payments refunded: " + countPaymentsRefunded);
4600 varun.gupt 494
 
4734 varun.gupt 495
        	try	{
496
        		transactionClient.markEBSSettlementUploaded(settlementId);
497
			} catch (TransactionServiceException e) {
498
				String errMsg = "Could not mark settlement for details Uploaded. Settlement ID: " + settlementId;
499
	        	logger.error(errMsg + e);
500
	        	addActionError(errMsg);
501
			}
4600 varun.gupt 502
        } catch (TTransportException e) {
503
        	logger.error("TTransportException " + e);
504
		} catch (TException e) {
505
        	logger.error("TException " + e);
506
		}
507
	}
508
 
509
	public void uploadBluedartSettlements()	{
510
 
511
		Workbook wb = null;
512
        try {
513
            wb = new HSSFWorkbook(new FileInputStream(this.bluedartSettlementReport));
514
        } catch (FileNotFoundException e) {
515
            logger.error("Unable to open the Settlement report", e);
516
        } catch (IOException e) {
517
            logger.error("Unable to open the Settlement report", e);
518
        }
519
 
520
        Sheet sheet = wb.getSheetAt(0);
521
 
522
        Row firstRow = sheet.getRow(0);
523
        logger.info("Cell count:" + firstRow.getPhysicalNumberOfCells());
524
 
5098 varun.gupt 525
        int indexOrderId = 15;
526
        int indexAmount = 14;
4600 varun.gupt 527
 
528
        TransactionClient tsc;
4734 varun.gupt 529
    	int countSuccessfulSaves = 0;
4600 varun.gupt 530
 
531
        try	{
532
			long settlementDate = DATE_FORMAT.parse(bluedartSettlementDate).getTime();
533
        	tsc = new TransactionClient();
534
        	in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
535
 
536
        	for (Row row : sheet) {
4875 varun.gupt 537
    			long orderId = 0;
5098 varun.gupt 538
    			String orderIdString = "";
4600 varun.gupt 539
        		try	{
5098 varun.gupt 540
        			orderIdString = row.getCell(indexOrderId).getStringCellValue(); 
541
        			orderId = Long.parseLong(orderIdString);
4715 varun.gupt 542
 
4600 varun.gupt 543
        			double amount = row.getCell(indexAmount).getNumericCellValue();
5020 varun.gupt 544
        			logger.info("Bluedart SettlementDate: " + settlementDate + ", OrderId: " + orderId + ", Amount: " + amount);
4905 varun.gupt 545
        			transactionClient.savePaymentSettlements(settlementDate, 4, orderId, 0.0, 0.0, amount);
4875 varun.gupt 546
        			countSuccessfulSaves += 1;
4600 varun.gupt 547
 
5098 varun.gupt 548
        		} catch (IllegalStateException e) {
549
        			logger.error("" + e);
550
 
551
        		} catch(NumberFormatException e)	{
552
        			logger.error("Extracted String: " + orderIdString + " " + e);
553
 
4600 varun.gupt 554
        		} catch (NullPointerException e) {
4875 varun.gupt 555
        			logger.error("For OrderId: " + orderId + " " + e);
4600 varun.gupt 556
 
4875 varun.gupt 557
        		} catch (TransactionServiceException e) {
558
					logger.error("For OrderId: " + orderId + " " + e);
4600 varun.gupt 559
				}
560
        	}
561
        } catch (ParseException e) {
562
        	logger.error("Could not parse " + bluedartSettlementDate + " " + e);
4875 varun.gupt 563
			addActionError(e.getMessage());
564
 
4600 varun.gupt 565
		} catch (TTransportException e) {
566
			logger.error("" + e);
4875 varun.gupt 567
			addActionError(e.getMessage());
568
 
4600 varun.gupt 569
        } catch (TException e) {
570
        	logger.error("" + e);
4875 varun.gupt 571
			addActionError(e.getMessage());
4600 varun.gupt 572
        }
4734 varun.gupt 573
        addActionMessage("Successfully added Bluedart settlement details for " + countSuccessfulSaves + " orders");
4600 varun.gupt 574
	}
575
 
4715 varun.gupt 576
	public void uploadAramexSettlements()	{
577
		logger.info("Uploading Aramex Settlements" + this.aramexSettlementDate);
578
 
579
		if(this.aramexSettlementDate.equals(""))	{
580
			addActionError("Settlement date cannot be left blank");
581
			return;
582
		}
583
 
584
		Workbook wb = null;
585
        try {
5020 varun.gupt 586
        	wb = new XSSFWorkbook(new FileInputStream(this.aramexSettlementReport));
4715 varun.gupt 587
        } catch (FileNotFoundException e) {
4875 varun.gupt 588
        	addActionError(e.getMessage());
4715 varun.gupt 589
            logger.error("Unable to open the Settlement report", e);
590
        } catch (IOException e) {
4875 varun.gupt 591
        	addActionError(e.getMessage());
4715 varun.gupt 592
            logger.error("Unable to open the Settlement report", e);
593
        } catch (NullPointerException e) {
594
        	addActionError(e.getMessage());
595
        	logger.error("Unable to open the Settlement report", e);
596
        	return;
597
		}
598
 
599
        Sheet sheet = wb.getSheetAt(0);
600
 
5020 varun.gupt 601
        int indexOrderId = 7;
4734 varun.gupt 602
        int indexAmount = 1;
4715 varun.gupt 603
 
604
        Row firstRow = sheet.getRow(0);
605
        logger.info("Cell count:" + firstRow.getPhysicalNumberOfCells());
606
 
607
        TransactionClient tsc;
4734 varun.gupt 608
        int countSuccessfulSaves = 0;
4715 varun.gupt 609
        try	{
610
			long settlementDate = DATE_FORMAT.parse(aramexSettlementDate).getTime();
611
 
612
        	tsc = new TransactionClient();
613
        	in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
614
 
615
	    	for (Row row: sheet)	{
616
	    		if(row.equals(firstRow))	continue;
617
 
5020 varun.gupt 618
	    		if(row.getCell(indexOrderId).getStringCellValue().equals(""))	break;
619
 
620
	    		long orderId = Long.parseLong(row.getCell(indexOrderId).getStringCellValue());
4715 varun.gupt 621
	    		double amount = row.getCell(indexAmount).getNumericCellValue();
5020 varun.gupt 622
	    		logger.info("Aramex Settlement, Order Id: " + orderId + " Amount: " + amount);
4715 varun.gupt 623
	    		try {
4907 varun.gupt 624
					transactionClient.savePaymentSettlements(settlementDate, 4, orderId, 0.0, 0.0, amount);
4734 varun.gupt 625
					countSuccessfulSaves += 1;
4715 varun.gupt 626
 
627
				} catch (TransactionServiceException e) {
628
					logger.error("Transaction Service Exception while getting order for id, " + orderId, e);
4875 varun.gupt 629
					addActionError("Transaction Service Exception while getting order for id, " + orderId);	
4715 varun.gupt 630
				}
631
	    	}
632
        } catch (ParseException e) {
633
        	addActionError("Could not parse " + aramexSettlementDate);
634
        	logger.error("Could not parse " + aramexSettlementDate + " " + e);
4875 varun.gupt 635
 
4715 varun.gupt 636
        } catch (TTransportException e) {
4875 varun.gupt 637
        	addActionError(e.getMessage());
4715 varun.gupt 638
        	logger.error("" + e);
4875 varun.gupt 639
 
4715 varun.gupt 640
        } catch (TException e) {
4875 varun.gupt 641
        	addActionError(e.getMessage());
4715 varun.gupt 642
        	logger.error("" + e);
643
        }
4734 varun.gupt 644
        addActionMessage("Successfully added Aramex settlement details for " + countSuccessfulSaves + " orders");
4715 varun.gupt 645
	}
646
 
5098 varun.gupt 647
	public void uploadOrderIdsToBeMarkedPaid()	{
648
		logger.info("Uploading Order Ids to be marked as paid");
649
 
650
		Workbook wb = null;
651
        try {
652
        	wb = new XSSFWorkbook(new FileInputStream(this.orderIdsToBeMarkedPaid));
653
        } catch (FileNotFoundException e) {
654
        	addActionError(e.getMessage());
655
            logger.error("Unable to open the sheet containing orders for which vendor is paid", e);
656
        	return;
657
        } catch (IOException e) {
658
        	addActionError(e.getMessage());
659
            logger.error("Unable to open the sheet containing orders for which vendor is paid", e);
660
        	return;
661
        } catch (NullPointerException e) {
662
        	addActionError(e.getMessage());
663
        	logger.error("Unable to open the sheet containing orders for which vendor is paid", e);
664
        	return;
665
		}
666
 
667
        Sheet sheet = wb.getSheetAt(0);
668
        int indexOrderId = 0;
669
 
670
        TransactionClient tsc;
671
        int countSuccessfulSaves = 0;
672
 
673
//        try	{
674
//        	tsc = new TransactionClient();
675
//        	in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
676
//        	
677
//	    	for (Row row: sheet)	{
678
//	    		
679
//	    		if(row.getCell(indexOrderId).getStringCellValue().equals(""))	break;
680
//	    		
681
//	    		long orderId = Long.parseLong(row.getCell(indexOrderId).getStringCellValue());
682
//	    		logger.info("Aramex Settlement, Order Id: " + orderId);
683
//	    		try {
684
//	    			transactionClient.updateOrderAsPaidToVendor(orderId);
685
//					countSuccessfulSaves += 1;
686
//					
687
//				} catch (TransactionServiceException e) {
688
//					logger.error("Transaction Service Exception while getting order for id, " + orderId, e);
689
//					addActionError("Transaction Service Exception while getting order for id, " + orderId);	
690
//				}
691
//	    	}
692
//        } catch (TTransportException e) {
693
//        	addActionError(e.getMessage());
694
//        	logger.error("" + e);
695
//        	
696
//        } catch (TException e) {
697
//        	addActionError(e.getMessage());
698
//        	logger.error("" + e);
699
//        }
700
        addActionMessage("Successfully marked " + countSuccessfulSaves + " orders as paid to vendor");
701
	}
702
 
4600 varun.gupt 703
	// Prepares the XLS worksheet object and fills in the data with proper formatting
5020 varun.gupt 704
	private ByteArrayOutputStream getReconciliationReport(long vendorId)	{
4875 varun.gupt 705
 
5020 varun.gupt 706
		List<PaymentSettlement> paymentSettlements = new ArrayList<PaymentSettlement>();
707
		List<PaymentSettlement> refundPaymentSettlements = new ArrayList<PaymentSettlement>();
708
 
4745 varun.gupt 709
		try	{
710
			TransactionClient tsc = new TransactionClient();
711
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
5020 varun.gupt 712
 
713
			paymentSettlements = transactionClient.getSettlementsByDate(0, (new Date()).getTime(), false);
4745 varun.gupt 714
			logger.info("Settlement Count: " + paymentSettlements.size());
4905 varun.gupt 715
 
5020 varun.gupt 716
			refundPaymentSettlements = transactionClient.getSettlementsByDate(0, (new Date()).getTime(), true);
717
			logger.info("Refund Settlement Count: " + refundPaymentSettlements.size());
4745 varun.gupt 718
 
719
		} catch	(TransactionServiceException e)	{
720
			String errMsg = "Transaction Service Exception occured";
721
			logger.error(errMsg, e);
722
			addActionError(errMsg);
723
		} catch (TTransportException e) {
724
			String errMsg = "Transaction Service Exception occured";
725
			logger.error(errMsg, e);
726
			addActionError(errMsg);
727
		} catch (TException e) {
728
			// TODO Auto-generated 
729
			String errMsg = "Transaction Service Exception occured";
730
			logger.error(errMsg, e);
731
			addActionError(errMsg);
732
		}
733
 
4600 varun.gupt 734
		ByteArrayOutputStream baosXLS = new ByteArrayOutputStream();
4745 varun.gupt 735
 
4600 varun.gupt 736
	    Workbook wb = new HSSFWorkbook();
4875 varun.gupt 737
 
4600 varun.gupt 738
	    //Create the style for the title row
739
	    Font font = wb.createFont();
740
	    font.setBoldweight(Font.BOLDWEIGHT_BOLD);
741
	    CellStyle boldStyle = wb.createCellStyle();
742
	    boldStyle.setFont(font);
743
 
744
	    CellStyle rightAlignStyle = wb.createCellStyle();
745
	    rightAlignStyle.setAlignment(CellStyle.ALIGN_RIGHT);
746
 
747
		Sheet orderSheet = wb.createSheet("Orders");
4875 varun.gupt 748
		Sheet reshippedOrderSheet = wb.createSheet("Reshipped");
4600 varun.gupt 749
		Sheet mismatchSheet = wb.createSheet("Mismatches");
750
 
5020 varun.gupt 751
	    populateOrderSheet(paymentSettlements, refundPaymentSettlements, vendorId, orderSheet, boldStyle, rightAlignStyle);
752
//	    populateReshippedOrderSheet(reshippedOrders, reshippedOrderSheet);
753
//	    populateMismatchSheet(mismatchSheet);
4600 varun.gupt 754
 
755
		// Write the workbook to the output stream
756
		try {
757
			wb.write(baosXLS);
758
			baosXLS.close();
759
		} catch (IOException e) {
760
			logger.error("Unable to write the hotspot reconciliation report to the byte array", e);
761
		}		
762
		return baosXLS;
763
	}
764
 
765
	private void populateMismatchSheet(Sheet sheet)	{
766
	    int serialNo = 0;
767
		Row titleRow = sheet.createRow(serialNo ++);
768
	    Cell titleCell = titleRow.createCell(0);
769
	    titleCell.setCellValue("Order Reconciliation Report (Mis-matches)");
770
 
771
	    sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 4));
772
	    sheet.createRow(serialNo ++);
773
 
774
	    Row headerRow = sheet.createRow(serialNo ++);
775
	    headerRow.createCell(OrderMismatchColumn.ORDER_ID.getValue()).setCellValue("Order Id");
776
	    headerRow.createCell(OrderMismatchColumn.EXPECTED_COLLECTION.getValue()).setCellValue("Expected Collection");
777
	    headerRow.createCell(OrderMismatchColumn.ACTUAL_COLLECTION.getValue()).setCellValue("Actual Collection");
778
 
779
	    for (long orderId: misMatches.keySet())	{
780
	    	Row contentRow = sheet.createRow(serialNo ++);
781
	    	contentRow.createCell(OrderMismatchColumn.ORDER_ID.getValue()).setCellValue(orderId);
782
	    	contentRow.createCell(OrderMismatchColumn.EXPECTED_COLLECTION.getValue()).setCellValue(misMatches.get(orderId).get("expected"));
783
	    	contentRow.createCell(OrderMismatchColumn.ACTUAL_COLLECTION.getValue()).setCellValue(misMatches.get(orderId).get("actual"));
784
	    }
785
	}
786
 
4875 varun.gupt 787
	private void populateReshippedOrderSheet(List<Order> orders, Sheet sheet) {
788
	    short serialNo = 0;
789
 
790
	    // Create the title row and put all the titles in it. Rows are 0 based.
791
	    Row titleRow = sheet.createRow(serialNo ++);
792
	    Cell titleCell = titleRow.createCell(0);
793
	    titleCell.setCellValue("Reshipped Orders");
794
 
795
	    sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 6));
796
 
797
	    sheet.createRow(serialNo ++);
798
 
799
	    Row headerRow = sheet.createRow(serialNo ++);
800
	    headerRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue("Order Id");
801
	    headerRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue("Order Date");
802
	    headerRow.createCell(OrderReportColumn.BILLING_NUMBER.getValue()).setCellValue("Billing Number");
803
	    headerRow.createCell(OrderReportColumn.BILLING_DATE.getValue()).setCellValue("Billing Date");
804
	    headerRow.createCell(OrderReportColumn.DELIVERY_DATE.getValue()).setCellValue("Delivery Date");
805
	    headerRow.createCell(OrderReportColumn.SETTLEMENT_DATE.getValue()).setCellValue("Settlement Date");
806
	    headerRow.createCell(OrderReportColumn.BRAND.getValue()).setCellValue("Brand");
807
	    headerRow.createCell(OrderReportColumn.MODEL_NAME.getValue()).setCellValue("Model Name");
808
	    headerRow.createCell(OrderReportColumn.MODEL_NUMBER.getValue()).setCellValue("Model Number");
809
	    headerRow.createCell(OrderReportColumn.COLOR.getValue()).setCellValue("Color");
810
	    headerRow.createCell(OrderReportColumn.QUANTITY.getValue()).setCellValue("Quantity");
811
	    headerRow.createCell(OrderReportColumn.UNIT_TRANSFER_PRICE.getValue()).setCellValue("Unit Transfer Price");
812
	    headerRow.createCell(OrderReportColumn.UNIT_SELLING_PRICE.getValue()).setCellValue("Unit Selling Price");
813
	    headerRow.createCell(OrderReportColumn.TOTAL_TRANSFER_PRICE.getValue()).setCellValue("Total Transfer Price");
814
	    headerRow.createCell(OrderReportColumn.TOTAL_SELLING_PRICE.getValue()).setCellValue("Total Selling Price");
815
	    headerRow.createCell(OrderReportColumn.CURRENT_STATUS.getValue()).setCellValue("Current Status");
816
	    headerRow.createCell(OrderReportColumn.PAYMENT_TYPE.getValue()).setCellValue("Payment Type");
817
	    headerRow.createCell(OrderReportColumn.PAYMENT_STATUS.getValue()).setCellValue("Payment Status");
818
	    headerRow.createCell(OrderReportColumn.PAYMENT_ID.getValue()).setCellValue("Payment Id");
819
	    headerRow.createCell(OrderReportColumn.COUPON_CODE.getValue()).setCellValue("Coupon Code");
820
//	    headerRow.createCell(OrderReportColumn.COUPON_CATEGORY.getValue()).setCellValue("Coupon Category");
821
//	    headerRow.createCell(OrderReportColumn.DISCOUNT.getValue()).setCellValue("Discount");
822
	    headerRow.createCell(OrderReportColumn.SERVICE_TAX.getValue()).setCellValue("Service Tax");
823
	    headerRow.createCell(OrderReportColumn.OTHER_CHARGES.getValue()).setCellValue("Other Charges");
824
	    headerRow.createCell(OrderReportColumn.NET_COLLECTION.getValue()).setCellValue("Net Collection");
825
 
826
	    sheet.createRow(serialNo ++);
827
 
828
		TransactionClient tsc;
829
    	PaymentClient psc;
830
    	LogisticsClient lsc;
831
 
832
		try {
833
			tsc = new TransactionClient();
834
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
835
 
836
			psc = new PaymentClient();
837
	    	in.shop2020.payments.PaymentService.Client paymentClient = psc.getClient();
838
 
839
	    	lsc = new LogisticsClient();
840
	    	in.shop2020.logistics.LogisticsService.Client logisticsClient = lsc.getClient();
841
 
842
	    	Map<Long, String> codProviders = new HashMap<Long, String>();
843
 
844
	    	for (Provider provider: logisticsClient.getAllProviders())	{
845
	    		codProviders.put(provider.getId(), provider.getName());
846
	    	}
847
 
848
	    	List<PaymentGateway> tPaymentGateways = paymentClient.getActivePaymentGateways();
849
	    	Map<Long, String> paymentGateways = new HashMap<Long, String>();
850
 
851
	    	for (PaymentGateway tPaymentGateway: tPaymentGateways)	{
852
	    		paymentGateways.put(tPaymentGateway.getId(), tPaymentGateway.getName());
853
	    	}
854
 
855
			int countMultipleOrderTxns = 0;
856
 
857
			for (Order order: orders)	{
858
			    logger.info("For order: " + order.getId());
859
 
860
			    LineItem lineItem = order.getLineitems().get(0);
861
			    double transferPrice = lineItem.getTransfer_price();
862
			    Payment payment = null;
863
 
864
			    try	{
865
			    	if(order.isCod())	{
866
			    		payment = paymentClient.getPaymentForTxnId(order.getTransactionId()).get(0);
867
			    	} else	{
868
			    		payment = paymentClient.getSuccessfulPaymentForTxnId(order.getTransactionId());
869
			    	}
870
				    logger.info("getSuccessfulPaymentForTxnId, " + order.getTransactionId() + ": " + payment);
871
 
872
			    } catch (TApplicationException e)	{
873
			    	orderIdsWithoutSuccess.add(order.getId());
874
			    	String errMsg = "Exception while getting successfull payment for transaction Id, " + order.getTransactionId(); 
875
					logger.error(errMsg, e);
876
					addActionError(errMsg);
877
				}
878
 
879
			    Transaction txn = transactionClient.getTransaction(order.getTransactionId());
880
			    PaymentSettlement paymentSettlement = null;
881
			    String paymentType = null;
882
 
883
			    if(payment != null)	{
884
			    	paymentSettlement = transactionClient.getSettlementForPaymentId(payment.getPaymentId());
885
			    	paymentType = paymentGateways.get(payment.getGatewayId());
886
			    }
887
 
888
	            double totalSellingPrice = lineItem.getTotal_price();
889
	            double serviceTax = 0.0;
890
	            double otherCollectionCharges = 0.0;
891
	            double netCollection = 0.0;
892
 
893
	            if(paymentSettlement != null)	{
894
		            serviceTax = paymentSettlement.getServiceTax();
895
		            otherCollectionCharges = paymentSettlement.getOtherCharges();
896
		            netCollection = paymentSettlement.getNetCollection();
897
	            }
898
 
899
	            if (netCollection < 0.0)	{
900
	            	paymentType = paymentType + "-REFUND";
901
	            }
902
 
903
		    	Row contentRow = sheet.createRow(serialNo++);
904
	            contentRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue(order.getId());
905
	            contentRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getCreated_timestamp())));
906
			    contentRow.createCell(OrderReportColumn.BILLING_NUMBER.getValue()).setCellValue(order.getInvoice_number());
907
			    contentRow.createCell(OrderReportColumn.BILLING_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getBilling_timestamp())));
908
			    contentRow.createCell(OrderReportColumn.DELIVERY_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getDelivery_timestamp())));
909
			    contentRow.createCell(OrderReportColumn.BRAND.getValue()).setCellValue(getValueForEmptyString(lineItem.getBrand()));
910
			    contentRow.createCell(OrderReportColumn.MODEL_NAME.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_name()));
911
			    contentRow.createCell(OrderReportColumn.MODEL_NUMBER.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_number()));
912
			    contentRow.createCell(OrderReportColumn.COLOR.getValue()).setCellValue(getValueForEmptyString(lineItem.getColor()));
913
			    contentRow.createCell(OrderReportColumn.QUANTITY.getValue()).setCellValue(lineItem.getQuantity());
914
			    contentRow.createCell(OrderReportColumn.UNIT_TRANSFER_PRICE.getValue()).setCellValue(transferPrice);
915
			    contentRow.createCell(OrderReportColumn.UNIT_SELLING_PRICE.getValue()).setCellValue(lineItem.getUnit_price());
916
			    contentRow.createCell(OrderReportColumn.TOTAL_TRANSFER_PRICE.getValue()).setCellValue(transferPrice * lineItem.getQuantity());
917
			    contentRow.createCell(OrderReportColumn.TOTAL_SELLING_PRICE.getValue()).setCellValue(totalSellingPrice);
918
			    contentRow.createCell(OrderReportColumn.CURRENT_STATUS.getValue()).setCellValue(order.getStatusDescription());
919
 
920
		    	double refund = 0.0;
921
 
922
		    	if(order.isCod())	{
923
		    		contentRow.createCell(OrderReportColumn.PAYMENT_TYPE.getValue()).setCellValue("COD - " + codProviders.get(order.getLogistics_provider_id()));
924
		    	} else	{
925
			    	contentRow.createCell(OrderReportColumn.PAYMENT_TYPE.getValue()).setCellValue(paymentType);
926
		    	}
927
 
928
			    if (payment != null)	{
929
				    contentRow.createCell(OrderReportColumn.SETTLEMENT_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(paymentSettlement.getSettlementDate())));
930
			    	contentRow.createCell(OrderReportColumn.PAYMENT_STATUS.getValue()).setCellValue(payment.getStatus().name());
931
			    	contentRow.createCell(OrderReportColumn.PAYMENT_ID.getValue()).setCellValue(payment.getPaymentId());
932
			    }
933
			    contentRow.createCell(OrderReportColumn.COUPON_CODE.getValue()).setCellValue(txn.getCoupon_code());
934
			    contentRow.createCell(OrderReportColumn.SERVICE_TAX.getValue()).setCellValue(serviceTax);
935
			    contentRow.createCell(OrderReportColumn.OTHER_CHARGES.getValue()).setCellValue(otherCollectionCharges);
936
			    contentRow.createCell(OrderReportColumn.NET_COLLECTION.getValue()).setCellValue(netCollection);
937
			}
938
 
939
		    logger.info("Order Ids where no successful payment was found: " + orderIdsWithoutSuccess.size());
940
		    logger.info(orderIdsWithoutSuccess.toString());
941
 
942
	    	sheet.createRow(serialNo++);
943
 
944
		} catch (TTransportException e) {
945
			logger.error("TTransportException " + e);
946
		} catch (PaymentException e) {
947
			logger.error("PaymentException " + e);
948
		} catch (TException e) {
949
			logger.error("TException " + e);
950
		} catch (TransactionServiceException e) {
951
			logger.error("Transaction Service Exception " + e);
952
		} catch (LogisticsServiceException e) {
953
			addActionError("Error loading list of COD providers");
954
			logger.error("Logistics Service Exception " + e);
955
		}
956
	}
957
 
5020 varun.gupt 958
	private void populateOrderSheet(List<PaymentSettlement> paymentSettlements, List<PaymentSettlement> refundSettlements, long vendorId, Sheet sheet, CellStyle style, CellStyle rightAlignStyle) {
959
 
960
	    // Create the title row and put all the titles in it. Rows are 0 based
961
	    Row titleRow = sheet.createRow(rowCount ++);
4600 varun.gupt 962
	    Cell titleCell = titleRow.createCell(0);
5020 varun.gupt 963
	    titleCell.setCellValue("Order Reconciliation Report");
4600 varun.gupt 964
	    titleCell.setCellStyle(style);
965
 
5020 varun.gupt 966
	    sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 4));
4600 varun.gupt 967
 
5020 varun.gupt 968
	    sheet.createRow(rowCount ++);
4600 varun.gupt 969
 
5020 varun.gupt 970
	    Row headerRow = sheet.createRow(rowCount ++);
4600 varun.gupt 971
	    headerRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue("Order Id");
972
	    headerRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue("Order Date");
973
	    headerRow.createCell(OrderReportColumn.BILLING_NUMBER.getValue()).setCellValue("Billing Number");
974
	    headerRow.createCell(OrderReportColumn.BILLING_DATE.getValue()).setCellValue("Billing Date");
975
	    headerRow.createCell(OrderReportColumn.DELIVERY_DATE.getValue()).setCellValue("Delivery Date");
976
	    headerRow.createCell(OrderReportColumn.SETTLEMENT_DATE.getValue()).setCellValue("Settlement Date");
977
	    headerRow.createCell(OrderReportColumn.BRAND.getValue()).setCellValue("Brand");
978
	    headerRow.createCell(OrderReportColumn.MODEL_NAME.getValue()).setCellValue("Model Name");
979
	    headerRow.createCell(OrderReportColumn.MODEL_NUMBER.getValue()).setCellValue("Model Number");
980
	    headerRow.createCell(OrderReportColumn.COLOR.getValue()).setCellValue("Color");
981
	    headerRow.createCell(OrderReportColumn.QUANTITY.getValue()).setCellValue("Quantity");
982
	    headerRow.createCell(OrderReportColumn.UNIT_TRANSFER_PRICE.getValue()).setCellValue("Unit Transfer Price");
983
	    headerRow.createCell(OrderReportColumn.UNIT_SELLING_PRICE.getValue()).setCellValue("Unit Selling Price");
984
	    headerRow.createCell(OrderReportColumn.TOTAL_TRANSFER_PRICE.getValue()).setCellValue("Total Transfer Price");
985
	    headerRow.createCell(OrderReportColumn.TOTAL_SELLING_PRICE.getValue()).setCellValue("Total Selling Price");
986
	    headerRow.createCell(OrderReportColumn.CURRENT_STATUS.getValue()).setCellValue("Current Status");
987
	    headerRow.createCell(OrderReportColumn.PAYMENT_TYPE.getValue()).setCellValue("Payment Type");
4745 varun.gupt 988
	    headerRow.createCell(OrderReportColumn.PAYMENT_STATUS.getValue()).setCellValue("Payment Status");
4600 varun.gupt 989
	    headerRow.createCell(OrderReportColumn.PAYMENT_ID.getValue()).setCellValue("Payment Id");
990
	    headerRow.createCell(OrderReportColumn.COUPON_CODE.getValue()).setCellValue("Coupon Code");
991
	    headerRow.createCell(OrderReportColumn.SERVICE_TAX.getValue()).setCellValue("Service Tax");
992
	    headerRow.createCell(OrderReportColumn.OTHER_CHARGES.getValue()).setCellValue("Other Charges");
993
	    headerRow.createCell(OrderReportColumn.NET_COLLECTION.getValue()).setCellValue("Net Collection");
994
 
5020 varun.gupt 995
	    sheet.createRow(rowCount ++);
4600 varun.gupt 996
 
997
		TransactionClient tsc;
998
    	PaymentClient psc;
4734 varun.gupt 999
    	LogisticsClient lsc;
4745 varun.gupt 1000
 
4600 varun.gupt 1001
		try {
1002
			tsc = new TransactionClient();
1003
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
5020 varun.gupt 1004
 
1005
	    	lsc = new LogisticsClient();
1006
	    	in.shop2020.logistics.LogisticsService.Client logisticsClient = lsc.getClient();
1007
 
4600 varun.gupt 1008
			psc = new PaymentClient();
1009
	    	in.shop2020.payments.PaymentService.Client paymentClient = psc.getClient();
1010
 
5020 varun.gupt 1011
	    	List<PaymentGateway> tPaymentGateways = paymentClient.getActivePaymentGateways();
4734 varun.gupt 1012
 
5020 varun.gupt 1013
	    	for (PaymentGateway tPaymentGateway: tPaymentGateways)	{
1014
	    		paymentGateways.put(tPaymentGateway.getId(), tPaymentGateway.getName());
1015
	    	}
4734 varun.gupt 1016
 
1017
	    	for (Provider provider: logisticsClient.getAllProviders())	{
1018
	    		codProviders.put(provider.getId(), provider.getName());
1019
	    	}
1020
 
5098 varun.gupt 1021
	    	class PaymentSettlementMap	{
1022
	    		public PaymentSettlement settlement;
1023
	    		public Payment payment;
1024
	    		public Transaction transaction;
1025
	    		public Order order;
1026
 
1027
	    		public PaymentSettlementMap(PaymentSettlement settlement, Payment pmt, Transaction txn, Order order)	{
1028
	    			this.settlement = settlement;
1029
	    			this.payment = pmt;
1030
	    			this.transaction = txn;
1031
	    			this.order = order;
1032
	    		}
1033
 
1034
	    		public PaymentSettlementMap(PaymentSettlement settlement, Payment pmt, Transaction txn)	{
1035
	    			this.settlement = settlement;
1036
	    			this.payment = pmt;
1037
	    			this.transaction = txn;
1038
	    		}
1039
	    	}
1040
 
1041
	    	List<Long> allOrderIds = new ArrayList<Long>();
1042
	    	Map<Long, PaymentSettlementMap> referenceMap = new HashMap<Long, PaymentSettlementMap>();
1043
 
5020 varun.gupt 1044
	    	for (PaymentSettlement paymentSettlement: paymentSettlements)	{
5098 varun.gupt 1045
	    		try {
1046
    				if(paymentSettlement.getPaymentGatewayId() == 4)	{	// If COD
1047
	    				Order order = transactionClient.getOrder(paymentSettlement.getReferenceId());
1048
	    				Transaction txn = transactionClient.getTransaction(order.getTransactionId());
1049
	    				Payment payment = paymentClient.getPaymentForTxnId(txn.getId()).get(0);
1050
 
1051
		    			if (order.getVendorId() == vendorId)	{
1052
		    				allOrderIds.add(order.getId());
1053
		    			}
1054
 
1055
    				} else	{	// If prepaid
1056
    					Payment payment = paymentClient.getPayment(paymentSettlement.getReferenceId());
1057
    					Transaction txn = transactionClient.getTransaction(payment.getMerchantTxnId());
1058
 
1059
    					for (Order order: txn.getOrders())	{
1060
    						allOrderIds.add(order.getId());
1061
    					}
1062
    				}
1063
    			} catch (TransactionServiceException e) {
1064
					logger.error("TransactionServiceException " + e);
1065
				} catch (TException e) {
1066
					logger.error("TException " + e);
1067
				} catch (PaymentException e) {
1068
					logger.error("PaymentException " + e);
1069
				}
1070
	    	}
1071
 
1072
	    	for (PaymentSettlement paymentSettlement: paymentSettlements)	{
5020 varun.gupt 1073
 
1074
    			try {
1075
    				if(paymentSettlement.getPaymentGatewayId() == 4)	{	// If COD
1076
	    				Order order = transactionClient.getOrder(paymentSettlement.getReferenceId());
1077
	    				Transaction txn = transactionClient.getTransaction(order.getTransactionId());
1078
	    				Payment payment = paymentClient.getPaymentForTxnId(txn.getId()).get(0);
1079
 
1080
		    			if (order.getVendorId() == vendorId)	{
1081
					    	Row contentRow = sheet.createRow(rowCount ++);
1082
					    	outputCODRow(contentRow, paymentSettlement, order, txn, payment);
1083
		    			}
1084
 
1085
    				} else	{	// If prepaid
1086
    					Payment payment = paymentClient.getPayment(paymentSettlement.getReferenceId());
1087
    					Transaction txn = transactionClient.getTransaction(payment.getMerchantTxnId());
1088
 
1089
    					outputPrepaidTransactionRows(sheet, vendorId, paymentSettlement, txn, payment);
1090
    				}
1091
    			} catch (TransactionServiceException e) {
1092
					logger.error("TransactionServiceException " + e);
1093
				} catch (TException e) {
1094
					logger.error("TException " + e);
1095
				} catch (PaymentException e) {
1096
					logger.error("PaymentException " + e);
1097
				}
4600 varun.gupt 1098
	    	}
1099
 
5020 varun.gupt 1100
	    	rowCount ++;
1101
 
1102
	    	for (PaymentSettlement paymentSettlement: refundSettlements)	{
1103
	    		try {
1104
	    			Payment payment = paymentClient.getPayment(paymentSettlement.getReferenceId());
1105
					Transaction txn = transactionClient.getTransaction(payment.getMerchantTxnId());
1106
 
1107
					outputRefundRows(sheet, vendorId, paymentSettlement, txn, payment);
1108
    			} catch (TransactionServiceException e) {
1109
					logger.error("TransactionServiceException " + e);
1110
				} catch (TException e) {
1111
					logger.error("TException " + e);
1112
				} catch (PaymentException e) {
1113
					logger.error("PaymentException " + e);
4875 varun.gupt 1114
				}
5020 varun.gupt 1115
	    	}
1116
		} catch (TTransportException e) {
1117
			logger.error("TTransportException", e);
1118
		} catch (LogisticsServiceException e) {
1119
			logger.error("LogisticsServiceException" + e);
1120
		} catch (TException e) {
1121
			logger.error("TException" + e);
1122
		} catch (PaymentException e) {
1123
			logger.error("PaymentException" + e);
1124
		}
1125
	}
1126
 
1127
	private void outputRefundRows(Sheet sheet, long vendorId, PaymentSettlement paymentSettlement, Transaction txn, Payment payment)	{
1128
		logger.info("Printing orders for pmt Id, " + payment.getPaymentId());
1129
 
1130
		boolean isFirstOrderForTransaction = true;
1131
 
1132
		for (Order order: txn.getOrders())	{
1133
			if(order.getVendorId() == vendorId && refundOrderStatuses.contains(order.getStatus()))	{
1134
		    	Row contentRow = sheet.createRow(rowCount ++);
1135
		    	LineItem lineItem = order.getLineitems().get(0);
4734 varun.gupt 1136
 
5020 varun.gupt 1137
		        contentRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue(order.getId());
1138
		        contentRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getCreated_timestamp())));
1139
			    contentRow.createCell(OrderReportColumn.BILLING_NUMBER.getValue()).setCellValue(order.getInvoice_number());
1140
			    contentRow.createCell(OrderReportColumn.BILLING_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getBilling_timestamp())));
1141
			    contentRow.createCell(OrderReportColumn.DELIVERY_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getDelivery_timestamp())));
1142
			    contentRow.createCell(OrderReportColumn.BRAND.getValue()).setCellValue(getValueForEmptyString(lineItem.getBrand()));
1143
			    contentRow.createCell(OrderReportColumn.MODEL_NAME.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_name()));
1144
			    contentRow.createCell(OrderReportColumn.MODEL_NUMBER.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_number()));
1145
			    contentRow.createCell(OrderReportColumn.COLOR.getValue()).setCellValue(getValueForEmptyString(lineItem.getColor()));
1146
			    contentRow.createCell(OrderReportColumn.QUANTITY.getValue()).setCellValue(lineItem.getQuantity());
1147
			    contentRow.createCell(OrderReportColumn.UNIT_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price());
1148
			    contentRow.createCell(OrderReportColumn.UNIT_SELLING_PRICE.getValue()).setCellValue(lineItem.getUnit_price());
1149
			    contentRow.createCell(OrderReportColumn.TOTAL_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price() * lineItem.getQuantity());
1150
			    contentRow.createCell(OrderReportColumn.TOTAL_SELLING_PRICE.getValue()).setCellValue(lineItem.getTotal_price());
1151
			    contentRow.createCell(OrderReportColumn.CURRENT_STATUS.getValue()).setCellValue(order.getStatusDescription());
1152
		    	contentRow.createCell(OrderReportColumn.PAYMENT_TYPE.getValue()).setCellValue(paymentGateways.get(payment.getGatewayId()));
1153
			    contentRow.createCell(OrderReportColumn.SETTLEMENT_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(paymentSettlement.getSettlementDate())));
1154
			    contentRow.createCell(OrderReportColumn.COUPON_CODE.getValue()).setCellValue(txn.getCoupon_code());
1155
		    	contentRow.createCell(OrderReportColumn.PAYMENT_STATUS.getValue()).setCellValue(payment.getStatus().name());
1156
		    	contentRow.createCell(OrderReportColumn.PAYMENT_ID.getValue()).setCellValue(payment.getPaymentId());
1157
 
1158
		    	if(isFirstOrderForTransaction)	{
1159
			    	contentRow.createCell(OrderReportColumn.SERVICE_TAX.getValue()).setCellValue(paymentSettlement.getServiceTax());
1160
				    contentRow.createCell(OrderReportColumn.OTHER_CHARGES.getValue()).setCellValue(paymentSettlement.getOtherCharges());
1161
				    contentRow.createCell(OrderReportColumn.NET_COLLECTION.getValue()).setCellValue(paymentSettlement.getNetCollection());
1162
				    isFirstOrderForTransaction = false;
1163
		    	}
4715 varun.gupt 1164
			}
5020 varun.gupt 1165
		}
1166
	}
5098 varun.gupt 1167
 
5020 varun.gupt 1168
	private void outputPrepaidTransactionRows(Sheet sheet, long vendorId, PaymentSettlement paymentSettlement, Transaction txn, Payment payment)	{
1169
		logger.info("Printing orders for pmt Id, " + payment.getPaymentId());
1170
 
1171
		boolean isFirstOrderForTransaction = true;
1172
 
1173
		for (Order order: txn.getOrders())	{
1174
			if(order.getVendorId() == vendorId)	{
1175
		    	Row contentRow = sheet.createRow(rowCount ++);
1176
		    	LineItem lineItem = order.getLineitems().get(0);
4734 varun.gupt 1177
 
5020 varun.gupt 1178
		        contentRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue(order.getId());
1179
		        contentRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getCreated_timestamp())));
1180
			    contentRow.createCell(OrderReportColumn.BILLING_NUMBER.getValue()).setCellValue(order.getInvoice_number());
1181
			    contentRow.createCell(OrderReportColumn.BILLING_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getBilling_timestamp())));
1182
			    contentRow.createCell(OrderReportColumn.DELIVERY_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getDelivery_timestamp())));
1183
			    contentRow.createCell(OrderReportColumn.BRAND.getValue()).setCellValue(getValueForEmptyString(lineItem.getBrand()));
1184
			    contentRow.createCell(OrderReportColumn.MODEL_NAME.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_name()));
1185
			    contentRow.createCell(OrderReportColumn.MODEL_NUMBER.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_number()));
1186
			    contentRow.createCell(OrderReportColumn.COLOR.getValue()).setCellValue(getValueForEmptyString(lineItem.getColor()));
1187
			    contentRow.createCell(OrderReportColumn.QUANTITY.getValue()).setCellValue(lineItem.getQuantity());
1188
			    contentRow.createCell(OrderReportColumn.UNIT_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price());
1189
			    contentRow.createCell(OrderReportColumn.UNIT_SELLING_PRICE.getValue()).setCellValue(lineItem.getUnit_price());
1190
			    contentRow.createCell(OrderReportColumn.TOTAL_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price() * lineItem.getQuantity());
1191
			    contentRow.createCell(OrderReportColumn.TOTAL_SELLING_PRICE.getValue()).setCellValue(lineItem.getTotal_price());
1192
			    contentRow.createCell(OrderReportColumn.CURRENT_STATUS.getValue()).setCellValue(order.getStatusDescription());
1193
		    	contentRow.createCell(OrderReportColumn.PAYMENT_TYPE.getValue()).setCellValue(paymentGateways.get(payment.getGatewayId()));
1194
			    contentRow.createCell(OrderReportColumn.SETTLEMENT_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(paymentSettlement.getSettlementDate())));
1195
			    contentRow.createCell(OrderReportColumn.COUPON_CODE.getValue()).setCellValue(txn.getCoupon_code());
1196
		    	contentRow.createCell(OrderReportColumn.PAYMENT_STATUS.getValue()).setCellValue(payment.getStatus().name());
1197
		    	contentRow.createCell(OrderReportColumn.PAYMENT_ID.getValue()).setCellValue(payment.getPaymentId());
4715 varun.gupt 1198
 
5020 varun.gupt 1199
		    	if(isFirstOrderForTransaction)	{
1200
			    	contentRow.createCell(OrderReportColumn.SERVICE_TAX.getValue()).setCellValue(paymentSettlement.getServiceTax());
1201
				    contentRow.createCell(OrderReportColumn.OTHER_CHARGES.getValue()).setCellValue(paymentSettlement.getOtherCharges());
4715 varun.gupt 1202
				    contentRow.createCell(OrderReportColumn.NET_COLLECTION.getValue()).setCellValue(paymentSettlement.getNetCollection());
5020 varun.gupt 1203
				    isFirstOrderForTransaction = false;
4715 varun.gupt 1204
		    	}
5020 varun.gupt 1205
			}
4600 varun.gupt 1206
		}
1207
	}
1208
 
5020 varun.gupt 1209
	private void outputCODRow(Row contentRow, PaymentSettlement paymentSettlement, Order order, Transaction txn, Payment payment)	{
1210
 
1211
		LineItem lineItem = order.getLineitems().get(0);
1212
 
1213
        contentRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue(order.getId());
1214
        contentRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getCreated_timestamp())));
1215
	    contentRow.createCell(OrderReportColumn.BILLING_NUMBER.getValue()).setCellValue(order.getInvoice_number());
1216
	    contentRow.createCell(OrderReportColumn.BILLING_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getBilling_timestamp())));
1217
	    contentRow.createCell(OrderReportColumn.DELIVERY_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getDelivery_timestamp())));
1218
	    contentRow.createCell(OrderReportColumn.BRAND.getValue()).setCellValue(getValueForEmptyString(lineItem.getBrand()));
1219
	    contentRow.createCell(OrderReportColumn.MODEL_NAME.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_name()));
1220
	    contentRow.createCell(OrderReportColumn.MODEL_NUMBER.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_number()));
1221
	    contentRow.createCell(OrderReportColumn.COLOR.getValue()).setCellValue(getValueForEmptyString(lineItem.getColor()));
1222
	    contentRow.createCell(OrderReportColumn.QUANTITY.getValue()).setCellValue(lineItem.getQuantity());
1223
	    contentRow.createCell(OrderReportColumn.UNIT_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price());
1224
	    contentRow.createCell(OrderReportColumn.UNIT_SELLING_PRICE.getValue()).setCellValue(lineItem.getUnit_price());
1225
	    contentRow.createCell(OrderReportColumn.TOTAL_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price() * lineItem.getQuantity());
1226
	    contentRow.createCell(OrderReportColumn.TOTAL_SELLING_PRICE.getValue()).setCellValue(lineItem.getTotal_price());
1227
	    contentRow.createCell(OrderReportColumn.CURRENT_STATUS.getValue()).setCellValue(order.getStatusDescription());
1228
    	contentRow.createCell(OrderReportColumn.PAYMENT_TYPE.getValue()).setCellValue("COD - " + codProviders.get(order.getLogistics_provider_id()));
1229
    	contentRow.createCell(OrderReportColumn.SERVICE_TAX.getValue()).setCellValue(paymentSettlement.getServiceTax());
1230
	    contentRow.createCell(OrderReportColumn.OTHER_CHARGES.getValue()).setCellValue(paymentSettlement.getOtherCharges());
1231
	    contentRow.createCell(OrderReportColumn.NET_COLLECTION.getValue()).setCellValue(paymentSettlement.getNetCollection());
1232
	    contentRow.createCell(OrderReportColumn.SETTLEMENT_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(paymentSettlement.getSettlementDate())));
1233
	    contentRow.createCell(OrderReportColumn.COUPON_CODE.getValue()).setCellValue(txn.getCoupon_code());
1234
    	contentRow.createCell(OrderReportColumn.PAYMENT_STATUS.getValue()).setCellValue(payment.getStatus().name());
1235
    	contentRow.createCell(OrderReportColumn.PAYMENT_ID.getValue()).setCellValue(payment.getPaymentId());
1236
	}
1237
 
5098 varun.gupt 1238
	private void initiatializeDashboard()	{
1239
		try	{
1240
			CatalogClient csc = new CatalogClient();
1241
			Client catalogClient = csc.getClient();
1242
			OrderStatusGroups orderStatusGroups = new OrderStatusGroups();
1243
			refundOrderStatuses = orderStatusGroups.getRefundedOrders();
1244
 
1245
			vendors = catalogClient.getAllVendors();
1246
			orderIdsWithoutSuccess = new ArrayList<Long>();
1247
 
1248
			TransactionClient tsc = new TransactionClient();
1249
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
1250
 
1251
			ebsSettlementSummaries = transactionClient.getEBSSettlementSummaries();
1252
			logger.info("", ebsSettlementSummaries);
1253
 
1254
		} catch (TException e) {
1255
			logger.error("TException", e);
1256
 
1257
		} catch (TransactionServiceException e) {
1258
			logger.error("TransactionServiceException", e);
1259
		}
1260
	}
1261
 
4600 varun.gupt 1262
	public List<Vendor> getAllVendors()	{
1263
		return this.vendors;
1264
	}
1265
 
1266
	private String getValueForEmptyString(String s){
1267
		if(s==null || s.equals(""))
1268
			return "-";
1269
		else
1270
			return s; 
1271
	}
1272
 
1273
	private String getVendorName(long vendorId)	{
1274
		for (Vendor vendor: vendors)	{
1275
			if (vendor.getId() == vendorId)	return vendor.getName();
1276
		}
1277
		return null;
1278
	}
1279
 
1280
	public String getReportSource()	{
1281
		return reportSource;
1282
	}
1283
 
1284
	public void setReportSource(String reportSource)	{
1285
		this.reportSource = reportSource;
1286
	}
1287
 
1288
    public File getHdfcSettlementReport() {
1289
        return hdfcSettlementReport;
1290
    }
1291
 
1292
    public void setHdfcSettlementReport(File hdfcSettlementReport) {
1293
        this.hdfcSettlementReport = hdfcSettlementReport;
1294
    }
1295
 
1296
    public File getEbsSettlementSummary()	{
1297
    	return ebsSettlementSummary;
1298
    }
1299
 
1300
    public void setEbsSettlementSummary(File ebsSettlementSummary)	{
1301
    	this.ebsSettlementSummary = ebsSettlementSummary;
1302
    }
1303
 
1304
    public File getEbsSettlementReport()	{
1305
    	return ebsSettlementReport;
1306
    }
1307
 
1308
    public void setEbsSettlementReport(File ebsSettlementReport)	{
1309
    	this.ebsSettlementReport = ebsSettlementReport;
1310
    }
1311
 
1312
    public String getBluedartSettlementDate()	{
1313
    	return bluedartSettlementDate;
1314
    }
1315
 
1316
    public void setBluedartSettlementDate(String bluedartSettlementDate)	{
1317
    	this.bluedartSettlementDate = bluedartSettlementDate;
1318
    }
1319
 
1320
    public File getBluedartSettlementReport()	{
1321
    	return bluedartSettlementReport;
1322
    }
1323
 
1324
    public void setBluedartSettlementReport(File bluedartSettlementReport)	{
1325
    	this.bluedartSettlementReport = bluedartSettlementReport;
1326
    }
1327
 
4715 varun.gupt 1328
    public String getAramexSettlementDate()	{
1329
    	return this.aramexSettlementDate;
1330
    }
1331
 
1332
    public void setAramexSettlementDate(String aramexSettlementDate)	{
1333
    	this.aramexSettlementDate = aramexSettlementDate;
1334
    }
1335
 
1336
    public void setAramexSettlementReport(File aramexSettlementReport) {
1337
		this.aramexSettlementReport = aramexSettlementReport;
1338
	}
1339
 
1340
	public File getAramexSettlementReport() {
1341
		return aramexSettlementReport;
1342
	}
1343
 
4600 varun.gupt 1344
	@Override
4715 varun.gupt 1345
     public void setServletContext(ServletContext context) {
4600 varun.gupt 1346
        this.context = context;
1347
    }
1348
 
1349
    public String getServletContextPath() {
1350
        return context.getContextPath();
1351
    }
1352
 
1353
	@Override
1354
	public void setServletResponse(HttpServletResponse response) {
1355
		this.response = response;
1356
	}
1357
 
1358
	@Override
1359
	public void setServletRequest(HttpServletRequest request) {
1360
		this.request = request;
1361
		this.session = request.getSession();
1362
	}
1363
 
1364
	public Map<Long, String> getEBSSettlementSummaries()	{
1365
		return ebsSettlementSummaries;
1366
	}
5098 varun.gupt 1367
 
1368
	public void setOrderIdsToBeMarkedPaid(File orderIdsToBeMarkedPaid) {
1369
		this.orderIdsToBeMarkedPaid = orderIdsToBeMarkedPaid;
1370
	}
1371
 
1372
	public File getOrderIdsToBeMarkedPaid() {
1373
		return orderIdsToBeMarkedPaid;
1374
	}
4600 varun.gupt 1375
}