Subversion Repositories SmartDukaan

Rev

Rev 5386 | Rev 5481 | 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.Provider;
4600 varun.gupt 4
import in.shop2020.model.v1.catalog.Vendor;
5
import in.shop2020.model.v1.order.LineItem;
6
import in.shop2020.model.v1.order.Order;
4734 varun.gupt 7
import in.shop2020.model.v1.order.OrderStatus;
5020 varun.gupt 8
import in.shop2020.model.v1.order.OrderStatusGroups;
4600 varun.gupt 9
import in.shop2020.model.v1.order.PaymentSettlement;
5386 phani.kuma 10
import in.shop2020.model.v1.order.ReturnOrder;
4600 varun.gupt 11
import in.shop2020.model.v1.order.Transaction;
12
import in.shop2020.model.v1.order.TransactionServiceException;
13
import in.shop2020.payments.Payment;
14
import in.shop2020.payments.PaymentGateway;
15
import in.shop2020.thrift.clients.CatalogClient;
4734 varun.gupt 16
import in.shop2020.thrift.clients.LogisticsClient;
4600 varun.gupt 17
import in.shop2020.thrift.clients.PaymentClient;
18
import in.shop2020.thrift.clients.TransactionClient;
19
 
5020 varun.gupt 20
import java.io.ByteArrayOutputStream;
21
import java.io.File;
22
import java.io.FileInputStream;
23
import java.io.FileNotFoundException;
24
import java.io.IOException;
25
import java.text.DateFormat;
26
import java.text.ParseException;
27
import java.text.SimpleDateFormat;
28
import java.util.ArrayList;
29
import java.util.Date;
30
import java.util.HashMap;
5386 phani.kuma 31
import java.util.HashSet;
5020 varun.gupt 32
import java.util.List;
33
import java.util.Map;
5386 phani.kuma 34
import java.util.Set;
35
import java.util.Map.Entry;
5020 varun.gupt 36
 
4600 varun.gupt 37
import javax.servlet.ServletContext;
38
import javax.servlet.ServletOutputStream;
39
import javax.servlet.http.HttpServletRequest;
40
import javax.servlet.http.HttpServletResponse;
5189 varun.gupt 41
import org.apache.commons.io.IOUtils;
4600 varun.gupt 42
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
43
import org.apache.poi.ss.usermodel.Row;
44
import org.apache.poi.ss.usermodel.Sheet;
45
import org.apache.poi.ss.usermodel.Workbook;
5020 varun.gupt 46
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
4600 varun.gupt 47
import org.apache.struts2.interceptor.ServletRequestAware;
48
import org.apache.struts2.interceptor.ServletResponseAware;
49
import org.apache.struts2.rest.DefaultHttpHeaders;
50
import org.apache.struts2.rest.HttpHeaders;
51
import org.apache.struts2.util.ServletContextAware;
52
import org.apache.thrift.transport.TTransportException;
53
import org.slf4j.Logger;
54
import org.slf4j.LoggerFactory;
55
 
4715 varun.gupt 56
import com.opensymphony.xwork2.ValidationAwareSupport;
57
 
4600 varun.gupt 58
/**
59
 * @author Varun Gupta
60
 * @description: This class handles web requests to generate vendor specific reconciliation reports
61
 *               for given vendor for a given date range
62
 */
5386 phani.kuma 63
 
4715 varun.gupt 64
public class VendorReconciliationController extends ValidationAwareSupport implements ServletRequestAware, ServletResponseAware, ServletContextAware {
4600 varun.gupt 65
 
5386 phani.kuma 66
    private static final long serialVersionUID = 1L;
67
	private static Logger logger = LoggerFactory.getLogger(VendorReconciliationController.class);
4600 varun.gupt 68
 
69
	private enum OrderReportColumn {
70
	    ORDER_ID(0),
5386 phani.kuma 71
	    ORIGINAL_ORDER_ID(1),
72
	    VENDOR_ID(2),
73
	    ORDER_DATE(3),
74
		BILLING_NUMBER(4),
75
		BILLING_DATE(5),
76
		DELIVERY_DATE(6),
4600 varun.gupt 77
		BRAND(7),
78
		MODEL_NAME(8),
79
		MODEL_NUMBER(9),
80
		COLOR(10),
81
		QUANTITY(11),
82
		UNIT_TRANSFER_PRICE(12),
83
		UNIT_SELLING_PRICE(13),
84
		TOTAL_TRANSFER_PRICE(14),
85
		TOTAL_SELLING_PRICE(15),
5386 phani.kuma 86
		CURRENT_STATUS(16),
87
		PAYMENT_STATUS(17),
88
		PAYMENT_TYPE(18),
89
		PAYMENT_ID(19),
90
		COUPON_CODE(20),
91
		SETTLEMENT_DATE(21),
92
		SERVICE_TAX(22),
93
		OTHER_CHARGES(23),
94
		NET_COLLECTION(24),
95
		USER_PAYABLE_AMOUNT(25);
4600 varun.gupt 96
 
97
		private int value;
98
 
99
		OrderReportColumn(int value) {
100
			this.value = value;
101
		}
102
		public int getValue(){
103
			return this.value;
104
		}
105
	}
106
 
107
	private HttpServletRequest request;
108
	private HttpServletResponse response;
109
	private ServletContext context;
110
	private List<Vendor> vendors;
5020 varun.gupt 111
	private Map<Long, String> codProviders = new HashMap<Long, String>();
112
	private Map<Long, String> paymentGateways = new HashMap<Long, String>();
113
 
5386 phani.kuma 114
	private File orderIdsToBeMarked;
4600 varun.gupt 115
	private File hdfcSettlementReport;
116
 
117
	private File ebsSettlementReport;
118
	private File ebsSettlementSummary;
119
 
120
	private String bluedartSettlementDate;
121
	private File bluedartSettlementReport;
122
 
4715 varun.gupt 123
	private String aramexSettlementDate;
124
	private File aramexSettlementReport;
125
 
4600 varun.gupt 126
	private Map<Long, String> ebsSettlementSummaries;
127
 
5020 varun.gupt 128
	private List<OrderStatus> refundOrderStatuses;
5189 varun.gupt 129
 
5386 phani.kuma 130
	private List<Order> reshippedNonPayableOrders = new ArrayList<Order>();
131
	private List<Order> returnedOrders = new ArrayList<Order>();
5189 varun.gupt 132
	private List<Order> unsettledOrders = new ArrayList<Order>();
5386 phani.kuma 133
	private List<Order> userPaymentNotRequiredOrders = new ArrayList<Order>();
134
	private Map<Order, PaymentSettlement> paymentSettledOrdersMap = new HashMap<Order, PaymentSettlement>();
135
	private List<Order> ordersWithErrors = new ArrayList<Order>();
4745 varun.gupt 136
 
4600 varun.gupt 137
	private final DateFormat DATE_FORMAT = new SimpleDateFormat("dd/MM/yyyy");
138
 
139
	public String index()	{
5098 varun.gupt 140
		initiatializeDashboard();
4600 varun.gupt 141
		return "report";
142
	}
143
 
144
	public HttpHeaders create()	{
145
 
146
		String formType = request.getParameter("formtype");
4715 varun.gupt 147
		logger.info("Form Type: " + formType);
4600 varun.gupt 148
 
149
		if (formType.equals("uploadEBSSettlementSummary")) {
150
			uploadEBSSettlementSummary();
151
 
152
		} else if (formType.equals("uploadEBSSettlements")) {
153
			uploadEBSSettlements();
154
 
155
		} else if (formType.equals("uploadHDFCSettlements")) {
156
			uploadHDFCSettlements();
157
 
158
		} else if (formType.equals("uploadBluedartSettlements")) {
159
			uploadBluedartSettlements();
4715 varun.gupt 160
 
161
		} else if (formType.equals("uploadAramexSettlements")) {
162
			uploadAramexSettlements();
5098 varun.gupt 163
 
164
		} else if (formType.equals("markOrdersAsPaid"))	{
5189 varun.gupt 165
			uploadOrderIdsToBeMarkedPaid();
5386 phani.kuma 166
 
167
		} else if (formType.equals("markOrdersAsReturned"))	{
168
			uploadOrderIdsToBeMarkedReturned();
169
 
4600 varun.gupt 170
		}
5386 phani.kuma 171
 
5098 varun.gupt 172
		initiatializeDashboard();
4600 varun.gupt 173
		return new DefaultHttpHeaders("report");
174
	}
175
 
176
	public HttpHeaders generateReconciliationReport()	{
5189 varun.gupt 177
		initiatializeDashboard();
5386 phani.kuma 178
 
179
		try {
180
			LogisticsClient lsc = new LogisticsClient();
181
	    	in.shop2020.logistics.LogisticsService.Client logisticsClient = lsc.getClient();
182
 
183
	    	PaymentClient psc = new PaymentClient();
184
	    	in.shop2020.payments.PaymentService.Client paymentClient = psc.getClient();
185
 
186
			List<PaymentGateway> tPaymentGateways = paymentClient.getActivePaymentGateways();
187
 
188
	    	for (PaymentGateway tPaymentGateway: tPaymentGateways)	{
189
	    		paymentGateways.put(tPaymentGateway.getId(), tPaymentGateway.getName());
190
	    	}
191
 
192
	    	for (Provider provider: logisticsClient.getAllProviders())	{
193
	    		codProviders.put(provider.getId(), provider.getName());
194
	    	}
195
 
196
			try	{
197
			    long vendorId = Long.parseLong(request.getParameter("vendor"));
198
			    String vendorName = "";
199
			    logger.info("Vendor ID: " + vendorId);
200
 
201
			    if(vendorId == -1) {
202
			    	vendorName = "ALL-Vendors";
203
			    }
204
			    else {
205
			    	vendorName = getVendorName(vendorId);
206
			    	if(vendorName != null) {
207
			    		vendorName = vendorName.replaceAll("\\s", "-");
208
			    	}
209
			    }
210
 
211
				response.setContentType("application/vnd.ms-excel");
212
				response.setHeader("Content-disposition", "inline; filename=" + vendorName + "-reconciliation.xls");
213
 
214
				ServletOutputStream sos;
215
				try {
216
					ByteArrayOutputStream baos = getReconciliationReport(vendorId);
217
					sos = response.getOutputStream();
218
					baos.writeTo(sos);
219
					sos.flush();
220
				} catch (IOException e)	{
221
					String errMsg = "Error while streaming the reconciliation report";
222
					logger.error(errMsg, e);
223
					addActionError(errMsg);
224
				}
225
			} catch (NullPointerException e) {
226
	            String errMsg = "NullPointerException";
227
				logger.error(errMsg, e);
228
				addActionError(errMsg);
229
			}
4600 varun.gupt 230
 
5386 phani.kuma 231
		} catch (Exception e) {
232
			String errMsg = "Exception Occured in generateReconciliationReport";
233
			logger.error(errMsg, e);
234
			addActionError(errMsg);
4745 varun.gupt 235
		}
5386 phani.kuma 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) {
5386 phani.kuma 249
        	String errMsg = "Unable to open the EBS Settlement Summary report";
250
			logger.error(errMsg, e);
251
			addActionError(errMsg);
252
			return;
4600 varun.gupt 253
        } catch (IOException e) {
5386 phani.kuma 254
        	String errMsg = "Unable to open the EBS Settlement Summary report";
255
			logger.error(errMsg, e);
256
			addActionError(errMsg);
257
			return;
4600 varun.gupt 258
        }
259
        Sheet sheet = wb.getSheetAt(0);
260
 
261
        int indexSettlementId = 0;
262
        int indexSettlementDate = 1;
263
        int indexTransactionDateFrom = 2;
264
        int indexTransactionDateTo = 3;
265
        int indexAmount = 4;
266
 
267
        Row firstRow = sheet.getRow(0);
268
        Row secondRow = sheet.getRow(1);
269
        Row thirdRow = sheet.getRow(2);
270
        Row fourthRow = sheet.getRow(3);
271
        Row fifthRow = sheet.getRow(4);
5020 varun.gupt 272
 
4600 varun.gupt 273
		TransactionClient tsc;
5386 phani.kuma 274
		long settlementId = 0;
4600 varun.gupt 275
 
276
		try {
277
			tsc = new TransactionClient();
278
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
279
 
280
			for(Row row: sheet)	{
281
				if(row.equals(firstRow) || row.equals(secondRow) || row.equals(thirdRow) || row.equals(fourthRow) || row.equals(fifthRow))	{
282
					continue;
283
				}
5386 phani.kuma 284
				settlementId = (long) row.getCell(indexSettlementId).getNumericCellValue();
4600 varun.gupt 285
				String settlementDateStr = row.getCell(indexSettlementDate).getStringCellValue();
286
				String transactionDateFromStr = row.getCell(indexTransactionDateFrom).getStringCellValue();
287
				String transactionDateToStr = row.getCell(indexTransactionDateTo).getStringCellValue();
288
				Double amount = row.getCell(indexAmount).getNumericCellValue();
289
 
290
				Date settlementDate = settlementDateFormat.parse(settlementDateStr);
291
				Date transactionDateFrom = transactionDateFormat.parse(transactionDateFromStr);
292
				Date transactionDateTo = transactionDateFormat.parse(transactionDateToStr);
293
 
294
				try	{
295
					transactionClient.saveEBSSettlementSummary(settlementId, settlementDate.getTime(), transactionDateFrom.getTime(), transactionDateTo.getTime(), amount);
296
 
5386 phani.kuma 297
				} catch (TransactionServiceException e) {
298
                	String errMsg = "TransactionServiceException recieved for settlement Id, " + Long.toString(settlementId);
299
        			logger.error(errMsg, e);
300
        			addActionError(errMsg);
301
        		}
4600 varun.gupt 302
			}
303
        } catch (Exception e) {
5386 phani.kuma 304
			String errMsg = "Exception recieved for payment Id," + Long.toString(settlementId);
305
			logger.error(errMsg, e);
306
			addActionError(errMsg);
4600 varun.gupt 307
		}
308
	}
309
 
310
	public void uploadHDFCSettlements()	{
311
		logger.info("Uploading HDFC settlements");
312
 
313
		Workbook wb = null;
314
		try {
315
			wb = new HSSFWorkbook(new FileInputStream(this.hdfcSettlementReport));
316
		} catch (FileNotFoundException e) {
4734 varun.gupt 317
			String errMsg = "Unable to open the HDFC Payout report";
318
			logger.error(errMsg, e);
319
			addActionError(errMsg);
320
			return;
4600 varun.gupt 321
		} catch (IOException e) {
4734 varun.gupt 322
			String errMsg = "Unable to open the HDFC Payout report";
323
			logger.error(errMsg, e);
324
			addActionError(errMsg);
325
			return;
4600 varun.gupt 326
		}
327
		Sheet sheet = wb.getSheetAt(0);
328
 
329
		Row firstRow = sheet.getRow(0);
330
 
331
		int indexRECFMT = 2;
332
		int indexSettlementDate = 7;
333
		int indexPaymentId = 13;
334
		int indexMSF = 14;
335
		int indexServiceTax = 15;
336
		int indexEduCess = 16;
337
		int indexNetCollection = 17;
338
 
339
		TransactionClient tsc;
340
		String paymentIdStr = "";
341
		long paymentId = 0;
5020 varun.gupt 342
 
4734 varun.gupt 343
		int countSuccessfulInserts = 0;
344
		int countRefunds = 0;
4600 varun.gupt 345
 
346
		try {
347
			tsc = new TransactionClient();
348
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
349
 
350
			for (Row row: sheet)	{
351
                if(row.equals(firstRow))	continue;
352
 
5020 varun.gupt 353
                if(row.getCell(0).getStringCellValue().equals("Total"))	break;
354
 
4600 varun.gupt 355
                try	{
356
                    String recfmt = row.getCell(indexRECFMT).getStringCellValue();
357
                    Date settlementDate = row.getCell(indexSettlementDate).getDateCellValue();
358
                	double netCollection = row.getCell(indexNetCollection).getNumericCellValue();
5020 varun.gupt 359
                	paymentIdStr = row.getCell(indexPaymentId).getStringCellValue().replace("'", "").trim();
4600 varun.gupt 360
                	paymentId = Long.parseLong(paymentIdStr);
361
 
362
                	logger.info("paymentId: " + paymentId + ", recfmt: " + recfmt + ", settlementDate: " + settlementDate + ", netCollection: " + netCollection);
363
 
4715 varun.gupt 364
                    if (recfmt.trim().equalsIgnoreCase("CVD"))	{
365
                    	if (netCollection > 0.0)	netCollection *= -1.0;
366
                    	transactionClient.savePaymentSettlements(settlementDate.getTime(), 1, paymentId, 0.0, 0.0, netCollection);
4734 varun.gupt 367
                    	countRefunds += 1;
5020 varun.gupt 368
 
4600 varun.gupt 369
                    } else	{
370
                    	double msf = row.getCell(indexMSF).getNumericCellValue();
371
                    	double serviceTax = row.getCell(indexServiceTax).getNumericCellValue();
372
                    	double eduCess = row.getCell(indexEduCess).getNumericCellValue();
373
                    	logger.info("msf: " + msf + ", serviceTax: " + serviceTax + ", eduCess: " + eduCess);
374
 
375
                    	transactionClient.savePaymentSettlements(settlementDate.getTime(), 1, paymentId, serviceTax, (eduCess + msf), netCollection);
4734 varun.gupt 376
                    	countSuccessfulInserts += 1;
4600 varun.gupt 377
                 	}
378
                } catch (NumberFormatException e) {
4734 varun.gupt 379
                	String errMsg = "NumberFormatException recieved for payment Id, " + paymentIdStr;
5386 phani.kuma 380
        			logger.error(errMsg, e);
4734 varun.gupt 381
        			addActionError(errMsg);
4600 varun.gupt 382
 
383
        		} catch (TransactionServiceException e) {
5386 phani.kuma 384
                	String errMsg = "TransactionServiceException recieved for payment Id, " + Long.toString(paymentId);
385
        			logger.error(errMsg, e);
4734 varun.gupt 386
        			addActionError(errMsg);
4600 varun.gupt 387
        		}
388
			}
5386 phani.kuma 389
		} catch (Exception e) {
390
			String errMsg = "Exception recieved for payment Id," + Long.toString(paymentId);
391
			logger.error(errMsg, e);
392
			addActionError(errMsg);
393
		}
4600 varun.gupt 394
 
4734 varun.gupt 395
		addActionMessage("Added settlements for " + countSuccessfulInserts + " payments");
396
		addActionMessage("Added settlements for " + countRefunds + " refund payments");
4600 varun.gupt 397
	}
398
 
399
	public void uploadEBSSettlements()	{
400
		Workbook wb = null;
401
        try {
402
            wb = new HSSFWorkbook(new FileInputStream(this.ebsSettlementReport));
403
        } catch (FileNotFoundException e) {
5386 phani.kuma 404
        	String errMsg = "Unable to open the EBS Settlement detail report";
405
			logger.error(errMsg, e);
406
			addActionError(errMsg);
407
			return;
4600 varun.gupt 408
        } catch (IOException e) {
5386 phani.kuma 409
        	String errMsg = "Unable to open the EBS Settlement detail report";
410
			logger.error(errMsg, e);
411
			addActionError(errMsg);
412
			return;
4600 varun.gupt 413
        }
414
 
415
        Sheet sheet = wb.getSheetAt(0);
416
 
417
		Row firstRow = sheet.getRow(0);
418
		Row secondRow = sheet.getRow(1);
419
 
420
        int indexPaymentId = 2;
421
        int indexTxnType = 5;
422
        int indexAmount = 6;
423
 
424
        Map<Long, Map<String, Double>> map = new HashMap<Long, Map<String,Double>>();
425
        Map <String, Double> record;
4734 varun.gupt 426
        int countPaymentIds = 0;
4600 varun.gupt 427
 
428
        try	{
429
        	for (Row row: sheet)	{
430
                if(row.equals(firstRow) || row.equals(secondRow))	continue;
431
 
432
                long paymentId = Long.parseLong(row.getCell(indexPaymentId).getStringCellValue());
433
                String transactionType = row.getCell(indexTxnType).getStringCellValue();
434
                double amount = row.getCell(indexAmount).getNumericCellValue();
435
 
436
                if(map.containsKey(paymentId))	{
437
                	map.get(paymentId).put(transactionType, amount);
438
 
439
                } else	{
440
                	record = new HashMap<String, Double>();
441
                	record.put(transactionType, amount);
442
                	map.put(paymentId, record);
4734 varun.gupt 443
                	countPaymentIds += 1;
4600 varun.gupt 444
                }
445
        	}
446
        } catch	(NullPointerException e)	{
447
        	logger.error("" + e);
448
        }
4734 varun.gupt 449
        addActionMessage("Total Payment Ids added: " + countPaymentIds);
4600 varun.gupt 450
 
451
		TransactionClient tsc;
452
        long settlementId = Long.parseLong(request.getParameter("settlementId"));
453
 
4734 varun.gupt 454
        int countPaymentsRecieved = 0;
455
        int countPaymentsRefunded = 0;
456
 
4600 varun.gupt 457
        try	{
458
			tsc = new TransactionClient();
459
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
4734 varun.gupt 460
			long settlementDate;
4600 varun.gupt 461
 
4734 varun.gupt 462
			try	{
463
				settlementDate = transactionClient.getEBSSettlementDate(settlementId);
464
			} catch (TransactionServiceException e) {
465
				String errMsg = "Could not retrieve EBS Settlement date for settlementId, " + settlementId;
5386 phani.kuma 466
	        	logger.error(errMsg, e);
4734 varun.gupt 467
	        	addActionError(errMsg);
468
	        	return;
469
			}
470
 
4600 varun.gupt 471
        	for (long paymentId: map.keySet())	{
472
            	record = map.get(paymentId);
473
 
474
            	if(record.containsKey("Captured"))	{
475
            		double capturedAmount = record.get("Captured");
476
            		double tdr = record.get("TDR");
477
            		double serviceTax = record.get("ServiceTax");
478
 
479
            		if(tdr < 0)	tdr *= -1;
480
            		if(serviceTax < 0)	serviceTax *= -1;
481
 
482
            		double amount = capturedAmount - tdr - serviceTax;
4734 varun.gupt 483
 
484
            		try	{
485
            			transactionClient.savePaymentSettlements(settlementDate, 2, paymentId, serviceTax, tdr, amount);
486
        			} catch (TransactionServiceException e) {
487
        				String errMsg = "Could not save settlement for paymentId, " + paymentId;
488
        	        	logger.error(errMsg + e);
489
        	        	addActionError(errMsg);
490
        			}
491
            		countPaymentsRecieved += 1;
492
            	}
493
 
494
            	if(record.containsKey("Refunded"))	{
4600 varun.gupt 495
            		double refundedAmount = record.get("Refunded");
496
 
497
            		if (refundedAmount > 0)	refundedAmount *= -1;
498
 
4734 varun.gupt 499
            		try	{
500
            			transactionClient.savePaymentSettlements(settlementDate, 2, paymentId, 0.0, 0.0, refundedAmount);
501
        			} catch (TransactionServiceException e) {
502
        				String errMsg = "Could not save refund settlement for paymentId, " + paymentId;
5386 phani.kuma 503
        	        	logger.error(errMsg, e);
4734 varun.gupt 504
        	        	addActionError(errMsg);
505
        			}
506
            		countPaymentsRefunded += 1;
4600 varun.gupt 507
            	}
508
            }
4734 varun.gupt 509
        	addActionMessage("Total count of payments recieved: " + countPaymentsRecieved);
510
        	addActionMessage("Total count of payments refunded: " + countPaymentsRefunded);
4600 varun.gupt 511
 
4734 varun.gupt 512
        	try	{
513
        		transactionClient.markEBSSettlementUploaded(settlementId);
514
			} catch (TransactionServiceException e) {
515
				String errMsg = "Could not mark settlement for details Uploaded. Settlement ID: " + settlementId;
5386 phani.kuma 516
	        	logger.error(errMsg, e);
4734 varun.gupt 517
	        	addActionError(errMsg);
518
			}
5386 phani.kuma 519
        } catch (Exception e) {
520
			String errMsg = e.getMessage();
521
			logger.error(errMsg, e);
522
			addActionError(errMsg);
4600 varun.gupt 523
		}
524
	}
525
 
526
	public void uploadBluedartSettlements()	{
527
 
528
		Workbook wb = null;
529
        try {
530
            wb = new HSSFWorkbook(new FileInputStream(this.bluedartSettlementReport));
531
        } catch (FileNotFoundException e) {
5386 phani.kuma 532
        	String errMsg = "Unable to open the Bluedart Settlement report";
533
			logger.error(errMsg, e);
534
			addActionError(errMsg);
535
			return;
4600 varun.gupt 536
        } catch (IOException e) {
5386 phani.kuma 537
        	String errMsg = "Unable to open the Bluedart Settlement report";
538
			logger.error(errMsg, e);
539
			addActionError(errMsg);
540
			return;
4600 varun.gupt 541
        }
542
 
543
        Sheet sheet = wb.getSheetAt(0);
544
 
545
        Row firstRow = sheet.getRow(0);
546
        logger.info("Cell count:" + firstRow.getPhysicalNumberOfCells());
547
 
5098 varun.gupt 548
        int indexOrderId = 15;
549
        int indexAmount = 14;
4600 varun.gupt 550
 
551
        TransactionClient tsc;
4734 varun.gupt 552
    	int countSuccessfulSaves = 0;
4600 varun.gupt 553
 
554
        try	{
555
			long settlementDate = DATE_FORMAT.parse(bluedartSettlementDate).getTime();
556
        	tsc = new TransactionClient();
557
        	in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
558
 
5386 phani.kuma 559
        	long orderId = 0;
560
 
4600 varun.gupt 561
        	for (Row row : sheet) {
5098 varun.gupt 562
    			String orderIdString = "";
4600 varun.gupt 563
        		try	{
5098 varun.gupt 564
        			orderIdString = row.getCell(indexOrderId).getStringCellValue(); 
565
        			orderId = Long.parseLong(orderIdString);
4715 varun.gupt 566
 
4600 varun.gupt 567
        			double amount = row.getCell(indexAmount).getNumericCellValue();
5020 varun.gupt 568
        			logger.info("Bluedart SettlementDate: " + settlementDate + ", OrderId: " + orderId + ", Amount: " + amount);
4905 varun.gupt 569
        			transactionClient.savePaymentSettlements(settlementDate, 4, orderId, 0.0, 0.0, amount);
4875 varun.gupt 570
        			countSuccessfulSaves += 1;
4600 varun.gupt 571
 
5098 varun.gupt 572
        		} catch (IllegalStateException e) {
5386 phani.kuma 573
        			String errMsg = "IllegalStateException Near OrderId: " + orderId;
574
                	logger.error(errMsg, e);
575
        			addActionError(errMsg);
5098 varun.gupt 576
 
5386 phani.kuma 577
        		} catch(NumberFormatException e) {
578
        			String errMsg = "NumberFormatException for Extracted String: " + orderIdString;
579
                	logger.error(errMsg, e);
580
        			addActionError(errMsg);
5098 varun.gupt 581
 
4600 varun.gupt 582
        		} catch (NullPointerException e) {
5386 phani.kuma 583
        			String errMsg = "NullPointerException For OrderId: " + orderId;
584
                	logger.error(errMsg, e);
585
        			addActionError(errMsg);
4600 varun.gupt 586
 
4875 varun.gupt 587
        		} catch (TransactionServiceException e) {
5386 phani.kuma 588
        			String errMsg = "TransactionServiceException For OrderId: " + orderId;
589
                	logger.error(errMsg, e);
590
        			addActionError(errMsg);
4600 varun.gupt 591
				}
592
        	}
593
        } catch (ParseException e) {
5386 phani.kuma 594
        	String errMsg = "Could not parse " + bluedartSettlementDate;
595
			logger.error(errMsg, e);
596
			addActionError(errMsg);
597
		} catch (Exception e) {
598
			String errMsg = e.getMessage();
599
			logger.error(errMsg, e);
600
			addActionError(errMsg);
4600 varun.gupt 601
        }
4734 varun.gupt 602
        addActionMessage("Successfully added Bluedart settlement details for " + countSuccessfulSaves + " orders");
4600 varun.gupt 603
	}
604
 
5386 phani.kuma 605
	public void uploadAramexSettlements() {
4715 varun.gupt 606
		logger.info("Uploading Aramex Settlements" + this.aramexSettlementDate);
607
 
5386 phani.kuma 608
		if(this.aramexSettlementDate.equals("")) {
4715 varun.gupt 609
			addActionError("Settlement date cannot be left blank");
610
			return;
611
		}
612
 
613
		Workbook wb = null;
614
        try {
5020 varun.gupt 615
        	wb = new XSSFWorkbook(new FileInputStream(this.aramexSettlementReport));
4715 varun.gupt 616
        } catch (FileNotFoundException e) {
5386 phani.kuma 617
        	String errMsg = "Unable to open the Aramex Settlement report";
618
			logger.error(errMsg, e);
619
			addActionError(errMsg);
620
			return;
4715 varun.gupt 621
        } catch (IOException e) {
5386 phani.kuma 622
        	String errMsg = "Unable to open the Aramex Settlement report";
623
			logger.error(errMsg, e);
624
			addActionError(errMsg);
625
			return;
626
        }
4715 varun.gupt 627
 
628
        Sheet sheet = wb.getSheetAt(0);
629
 
5343 phani.kuma 630
        int indexAWB = 0;
4734 varun.gupt 631
        int indexAmount = 1;
5343 phani.kuma 632
        int indexComment = 2;
4715 varun.gupt 633
        Row firstRow = sheet.getRow(0);
634
        logger.info("Cell count:" + firstRow.getPhysicalNumberOfCells());
635
 
636
        TransactionClient tsc;
4734 varun.gupt 637
        int countSuccessfulSaves = 0;
4715 varun.gupt 638
        try	{
639
			long settlementDate = DATE_FORMAT.parse(aramexSettlementDate).getTime();
640
 
641
        	tsc = new TransactionClient();
642
        	in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
643
 
644
	    	for (Row row: sheet)	{
5343 phani.kuma 645
	    		if(row.equals(firstRow)) {
646
	    			continue;
647
	    		}
4715 varun.gupt 648
 
5441 phani.kuma 649
	    		if(row.getCell(indexAWB) == null) {
650
	    			continue;
651
	    		}
652
 
5343 phani.kuma 653
				long awb = -1;
654
 
655
				if(row.getCell(indexAWB).getCellType() == 0) {
656
					awb = (long) row.getCell(indexAWB).getNumericCellValue();
5108 varun.gupt 657
				}
5343 phani.kuma 658
			    else if(row.getCell(indexAWB).getCellType() == 1) {
659
			    	awb = Long.parseLong(row.getCell(indexAWB).getStringCellValue());
660
			    }
661
 
662
				if(awb == -1) {
663
					continue;
664
				}
665
	    		else if(row.getCell(indexComment).getStringCellValue().equals("LOST SHIPMENT")) {
666
	    			logger.info("LOST SHIPMENT");
667
	    			continue;
668
	    		}
669
 
4715 varun.gupt 670
	    		try {
5108 varun.gupt 671
		    		long orderId = transactionClient.getOrderForAwb(Long.toString(awb)).getId();
672
		    		double amount = row.getCell(indexAmount).getNumericCellValue();
673
		    		logger.info("Aramex Settlement, Order Id: " + orderId + " Amount: " + amount);
674
 
4907 varun.gupt 675
					transactionClient.savePaymentSettlements(settlementDate, 4, orderId, 0.0, 0.0, amount);
4734 varun.gupt 676
					countSuccessfulSaves += 1;
4715 varun.gupt 677
 
678
				} catch (TransactionServiceException e) {
5108 varun.gupt 679
					logger.error("Transaction Service Exception while getting order for AWB, " + awb, e);
680
					addActionError("Transaction Service Exception while getting order for AWB, " + awb);	
4715 varun.gupt 681
				}
682
	    	}
683
        } catch (ParseException e) {
5386 phani.kuma 684
        	String errMsg = "Could not parse " + aramexSettlementDate;
685
        	logger.error(errMsg, e);
686
			addActionError(errMsg);
687
        } catch (Exception e) {
688
        	String errMsg = e.getMessage();
689
			logger.error(errMsg, e);
690
			addActionError(errMsg);
4715 varun.gupt 691
        }
4734 varun.gupt 692
        addActionMessage("Successfully added Aramex settlement details for " + countSuccessfulSaves + " orders");
4715 varun.gupt 693
	}
694
 
5098 varun.gupt 695
	public void uploadOrderIdsToBeMarkedPaid()	{
696
		logger.info("Uploading Order Ids to be marked as paid");
5189 varun.gupt 697
		List<Long> orderIds = new ArrayList<Long>();
698
 
699
		try {
5386 phani.kuma 700
			FileInputStream uploadedFile = new FileInputStream(this.orderIdsToBeMarked);
5189 varun.gupt 701
			String uploadedContent = IOUtils.toString(uploadedFile);
702
 
703
			for(String s: uploadedContent.trim().split("\n"))	{
704
 
5386 phani.kuma 705
				if(! s.trim().isEmpty()) {
706
					orderIds.add(Long.parseLong(s));
707
				}
5189 varun.gupt 708
			}
709
		} catch (FileNotFoundException e) {
5386 phani.kuma 710
			String errMsg = "Unable to open the sheet containing orders for which vendor is paid";
711
			logger.error(errMsg, e);
712
			addActionError(errMsg);
713
			return;
5189 varun.gupt 714
		} catch (IOException e) {
5386 phani.kuma 715
			String errMsg = "IOException occured while reading the file containing orders for which vendor is paid";
716
			logger.error(errMsg, e);
717
			addActionError(errMsg);
718
			return;
5098 varun.gupt 719
		}
5189 varun.gupt 720
 
5098 varun.gupt 721
        TransactionClient tsc;
722
        int countSuccessfulSaves = 0;
723
 
5189 varun.gupt 724
        try	{
725
        	tsc = new TransactionClient();
726
        	in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
727
 
728
	    	for (long orderId: orderIds)	{
729
 
5198 varun.gupt 730
	    		logger.info("Marking as paid, Order Id: " + orderId);
5189 varun.gupt 731
	    		try {
5386 phani.kuma 732
	    			transactionClient.updateOrderOnlyAsPaidToVendor(orderId);
5189 varun.gupt 733
					countSuccessfulSaves += 1;
734
 
735
				} catch (TransactionServiceException e) {
736
					logger.error("Transaction Service Exception while getting order for id, " + orderId, e);
737
					addActionError("Transaction Service Exception while getting order for id, " + orderId);	
738
				}
739
	    	}
5386 phani.kuma 740
        } catch (Exception e) {
741
			String errMsg = e.getMessage();
742
			logger.error(errMsg, e);
743
			addActionError(errMsg);
744
		}
5098 varun.gupt 745
        addActionMessage("Successfully marked " + countSuccessfulSaves + " orders as paid to vendor");
746
	}
747
 
5386 phani.kuma 748
	public void uploadOrderIdsToBeMarkedReturned()	{
749
		logger.info("Uploading Order Ids to be marked as Returned");
750
		List<Long> orderIds = new ArrayList<Long>();
4875 varun.gupt 751
 
5386 phani.kuma 752
		try {
753
			FileInputStream uploadedFile = new FileInputStream(this.orderIdsToBeMarked);
754
			String uploadedContent = IOUtils.toString(uploadedFile);
755
 
756
			for(String s: uploadedContent.trim().split("\n"))	{
757
 
758
				if(! s.trim().isEmpty()) {
759
					orderIds.add(Long.parseLong(s));
760
				}
761
			}
762
		} catch (FileNotFoundException e) {
763
			String errMsg = "Unable to open the sheet containing returned orders to be marked";
764
			logger.error(errMsg, e);
765
			addActionError(errMsg);
766
			return;
767
		} catch (IOException e) {
768
			String errMsg = "IOException occured while reading the file containing returned orders to be marked";
769
			logger.error(errMsg, e);
770
			addActionError(errMsg);
771
			return;
772
		}
773
 
774
        TransactionClient tsc;
775
        int countSuccessfulSaves = 0;
776
 
777
        try	{
778
        	tsc = new TransactionClient();
779
        	in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
780
 
781
        	for (long orderId: orderIds)	{
782
 
783
	    		logger.info("Marking as Returned, Order Id: " + orderId);
784
	    		try {
785
	    			transactionClient.processReturn(orderId);
786
					countSuccessfulSaves += 1;
787
 
788
				} catch (TransactionServiceException e) {
789
					String errMsg = "Transaction Service Exception while getting order for id, " + orderId;
790
					logger.error(errMsg, e);
791
					addActionError(errMsg);
792
				}
793
	    	}
794
		} catch (Exception e) {
795
			String errMsg = e.getMessage();
796
			logger.error(errMsg, e);
797
			addActionError(errMsg);
798
		}
799
        addActionMessage("Successfully marked " + countSuccessfulSaves + " orders as returned to vendor");
800
	}
801
 
802
	private ByteArrayOutputStream getReconciliationReport(long vendorId) {
803
		ByteArrayOutputStream baosXLS = new ByteArrayOutputStream();
804
 
805
		try {
4745 varun.gupt 806
			TransactionClient tsc = new TransactionClient();
807
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
5386 phani.kuma 808
 
5189 varun.gupt 809
			List<Order> unpaidOrders = transactionClient.getOrdersWhereVendorNotPaid(vendorId);
810
			logger.info("Unpaid Order count: " + unpaidOrders.size());
4905 varun.gupt 811
 
5386 phani.kuma 812
			List<ReturnOrder> returns = new ArrayList<ReturnOrder>();
4745 varun.gupt 813
 
5386 phani.kuma 814
			try {
815
				returns = transactionClient.getReturnOrders(-1, 0L, 0L);
816
			} catch (TTransportException e) {
817
				tsc = new TransactionClient();
818
				transactionClient = tsc.getClient();
819
				returns = transactionClient.getReturnOrders(-1, 0L, 0L);
820
			}
821
 
822
			Map<Long, ReturnOrder> mapReturnOrderIds = new HashMap<Long, ReturnOrder>();
823
 
824
			for (ReturnOrder returnOrder: returns)
825
			{
826
				mapReturnOrderIds.put(returnOrder.getOrderId(), returnOrder);
827
			}
828
 
829
			List<Long> ReturnOrderIds = new ArrayList<Long>(mapReturnOrderIds.keySet());
830
 
831
			List<Order> listofreturnedOrders = new ArrayList<Order>();
832
 
833
			try {
834
				listofreturnedOrders = transactionClient.getOrderListForVendor(ReturnOrderIds, vendorId);
835
			} catch (TTransportException e) {
836
				tsc = new TransactionClient();
837
				transactionClient = tsc.getClient();
838
				listofreturnedOrders = transactionClient.getOrderListForVendor(ReturnOrderIds, vendorId);
839
			}
840
 
841
			for (Order order: listofreturnedOrders)
842
			{
843
				order.setDelivery_timestamp(mapReturnOrderIds.get(order.getId()).getCreatedAt());
844
				returnedOrders.add(order);
845
			}
846
 
847
			Set<Long> OriginalOrderIds = new HashSet<Long>();
848
			Map<Long, Order> mapUnpaidOrders = new HashMap<Long, Order>();
849
 
850
			for (Order order: unpaidOrders)
851
			{
852
				if(order.getOriginalOrderId() == 0)	{
853
					OriginalOrderIds.add(order.getId());
854
				}
855
				else {
856
					OriginalOrderIds.add(order.getOriginalOrderId());
857
				}
858
				mapUnpaidOrders.put(order.getId(), order);
859
			}
860
 
861
	    	List<Order> reshippedPayableOrders = new ArrayList<Order>();
862
	    	List<Order> originalPayableOrders_user = new ArrayList<Order>();
863
	    	List<Order> originalPayableOrders_nouser = new ArrayList<Order>();
864
 
865
	    	Order originalOrder = null;
866
			boolean originalOrderUnpaid = false;
867
			Order tempOrder = null;
868
			boolean tempOrderUnpaid = false;
869
			long nextOrderId = 0;
870
			String previous_invoice_number = "";
871
 
872
			for (long originalOrderId: OriginalOrderIds)
873
			{
874
				originalOrder = null;
875
				originalOrderUnpaid = false;
876
				tempOrder = null;
877
				tempOrderUnpaid = false;
878
				nextOrderId = originalOrderId;
879
				previous_invoice_number = "";
5189 varun.gupt 880
 
5386 phani.kuma 881
				while (true)
882
				{
883
					if(mapUnpaidOrders.containsKey(nextOrderId)) {
884
						tempOrder = mapUnpaidOrders.get(nextOrderId);
885
						tempOrderUnpaid = true;
886
					}
887
					else {
888
						try {
889
							tempOrder = transactionClient.getOrder(nextOrderId);
890
						} catch (TTransportException e) {
891
							tsc = new TransactionClient();
892
							transactionClient = tsc.getClient();
893
							tempOrder = transactionClient.getOrder(nextOrderId);
894
						}
895
						tempOrderUnpaid = false;
896
					}
5189 varun.gupt 897
 
5386 phani.kuma 898
					if(tempOrderUnpaid && nextOrderId != originalOrderId) {
899
						if(previous_invoice_number.equals(tempOrder.getInvoice_number())) {
900
							reshippedNonPayableOrders.add(tempOrder);
901
						}
902
						else {
903
							reshippedPayableOrders.add(tempOrder);
904
						}
905
					}
5189 varun.gupt 906
 
5386 phani.kuma 907
					if(tempOrderUnpaid && nextOrderId == originalOrderId) {
908
						originalOrder = tempOrder;
909
						originalOrderUnpaid = true;
910
					}
5189 varun.gupt 911
 
5386 phani.kuma 912
					nextOrderId = tempOrder.getNew_order_id();
913
					previous_invoice_number = tempOrder.getInvoice_number();
914
					if(nextOrderId == 0) {
915
						if(originalOrderUnpaid) {
916
							if(refundOrderStatuses.contains(tempOrder.getStatus())) {
917
								originalPayableOrders_nouser.add(originalOrder);
918
							}
919
							else {
920
								originalPayableOrders_user.add(originalOrder);
921
							}
922
						}
923
						break;
924
					}
5189 varun.gupt 925
				}
926
			}
927
 
5386 phani.kuma 928
	    	PaymentClient psc = new PaymentClient();
929
	    	in.shop2020.payments.PaymentService.Client paymentClient = psc.getClient();
930
 
931
	    	PaymentSettlement pmtSettlement = null;
932
	    	Payment payment = null;
933
 
934
			for (Order UserpayRequiredOrder: originalPayableOrders_user)
935
			{
5189 varun.gupt 936
				try {
5386 phani.kuma 937
					pmtSettlement = null;
5189 varun.gupt 938
 
5386 phani.kuma 939
					if(UserpayRequiredOrder.isCod()) {
940
						try {
941
							pmtSettlement = transactionClient.getSettlementForCod(UserpayRequiredOrder.getId(), false);
942
						} catch (TTransportException e) {
943
							tsc = new TransactionClient();
944
							transactionClient = tsc.getClient();
945
							pmtSettlement = transactionClient.getSettlementForCod(UserpayRequiredOrder.getId(), false);
946
						}
5189 varun.gupt 947
 
5386 phani.kuma 948
						if(pmtSettlement.getReferenceId() > 0) {
949
							paymentSettledOrdersMap.put(UserpayRequiredOrder, pmtSettlement);
5189 varun.gupt 950
						}
5386 phani.kuma 951
						else {
952
							unsettledOrders.add(UserpayRequiredOrder);
953
						}
954
					}
955
					else {
956
						payment = null;
5189 varun.gupt 957
 
5386 phani.kuma 958
						try {
959
							payment = paymentClient.getSuccessfulPaymentForTxnId(UserpayRequiredOrder.getTransactionId());
960
						} catch (TTransportException e) {
961
							psc = new PaymentClient();
962
					    	paymentClient = psc.getClient();
963
					    	payment = paymentClient.getSuccessfulPaymentForTxnId(UserpayRequiredOrder.getTransactionId());
5189 varun.gupt 964
						}
965
 
5386 phani.kuma 966
						try {
967
							pmtSettlement = transactionClient.getSettlementForPrepaid(payment.getPaymentId(), false);
968
						} catch (TTransportException e) {
969
							tsc = new TransactionClient();
970
							transactionClient = tsc.getClient();
971
							pmtSettlement = transactionClient.getSettlementForPrepaid(payment.getPaymentId(), false);
5189 varun.gupt 972
						}
973
 
5386 phani.kuma 974
						if(pmtSettlement.getReferenceId() > 0) {
975
							paymentSettledOrdersMap.put(UserpayRequiredOrder, pmtSettlement);
5189 varun.gupt 976
						}
5386 phani.kuma 977
						else {
978
							unsettledOrders.add(UserpayRequiredOrder);
979
						}
5189 varun.gupt 980
					}
5386 phani.kuma 981
				} catch (Exception e) {
982
					ordersWithErrors.add(UserpayRequiredOrder);
983
					String errMsg = "error occured in getReconciliationReport during " + UserpayRequiredOrder.getId();
984
					logger.error(errMsg, e);
985
					addActionError(errMsg);
5189 varun.gupt 986
				}
987
			}
988
 
5386 phani.kuma 989
			userPaymentNotRequiredOrders.addAll(originalPayableOrders_nouser);
990
			logger.info("No User Payment Required Original Orders Count: " + originalPayableOrders_nouser.size());
991
			userPaymentNotRequiredOrders.addAll(reshippedPayableOrders);
992
			logger.info("Reshipped Payable Orders Count: " + reshippedPayableOrders.size());
993
			logger.info("Payment Settlement Count: " + paymentSettledOrdersMap.keySet().size());
994
			logger.info("Unsettled Orders Count: " + unsettledOrders.size());
995
			logger.info("User Payment Not Required Orders Count: " + userPaymentNotRequiredOrders.size());
996
			logger.info("Reshipped Orders Count: " + reshippedNonPayableOrders.size());
997
			logger.info("Returned Orders Count: " + returnedOrders.size());
998
 
999
		    Workbook wb = new HSSFWorkbook();
1000
 
1001
		    Sheet totalPayableOrderSheet = wb.createSheet("Total Payable Orders");
1002
			Sheet settledOrderSheet = wb.createSheet("Settled Payable Orders");
1003
			Sheet unsettledOrderSheet = wb.createSheet("Unsettled Payable Orders");
1004
			Sheet returnedOrderSheet = wb.createSheet("Receivable Orders");
1005
			Sheet reshippedOrderSheet = wb.createSheet("Reshipped Non Payable Orders");
1006
			Sheet errorOrderSheet = wb.createSheet("Orders With Errors");
1007
 
1008
			populateSettledOrderSheet(totalPayableOrderSheet, true);
1009
		    populateSettledOrderSheet(settledOrderSheet, false);
1010
			populateUnsettledOrderSheet(unsettledOrderSheet);
1011
			populateReturnedOrderSheet(returnedOrderSheet);
1012
		    populateReshippedOrderSheet(reshippedOrderSheet);
1013
		    populateErrorOrderSheet(errorOrderSheet);
1014
 
1015
			wb.write(baosXLS);
1016
			baosXLS.close();
1017
 
1018
		} catch (Exception e) {
1019
			String errMsg = e.getMessage();
4745 varun.gupt 1020
			logger.error(errMsg, e);
1021
			addActionError(errMsg);
1022
		}
1023
 
4600 varun.gupt 1024
		return baosXLS;
1025
	}
1026
 
5386 phani.kuma 1027
	private void populateErrorOrderSheet(Sheet sheet) {
1028
		int rowCount = 0;
1029
 
1030
		Row headerRow = sheet.createRow(rowCount ++);
1031
	    headerRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue("Order Id");
1032
	    headerRow.createCell(OrderReportColumn.ORIGINAL_ORDER_ID.getValue()).setCellValue("Original Order Id");
1033
	    headerRow.createCell(OrderReportColumn.VENDOR_ID.getValue()).setCellValue("Vendor Id");
1034
	    headerRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue("Order Date");
1035
	    headerRow.createCell(OrderReportColumn.BILLING_NUMBER.getValue()).setCellValue("Billing Number");
1036
	    headerRow.createCell(OrderReportColumn.BILLING_DATE.getValue()).setCellValue("Billing Date");
1037
	    headerRow.createCell(OrderReportColumn.DELIVERY_DATE.getValue()).setCellValue("Returned Date");
1038
	    headerRow.createCell(OrderReportColumn.BRAND.getValue()).setCellValue("Brand");
1039
	    headerRow.createCell(OrderReportColumn.MODEL_NAME.getValue()).setCellValue("Model Name");
1040
	    headerRow.createCell(OrderReportColumn.MODEL_NUMBER.getValue()).setCellValue("Model Number");
1041
	    headerRow.createCell(OrderReportColumn.COLOR.getValue()).setCellValue("Color");
1042
	    headerRow.createCell(OrderReportColumn.QUANTITY.getValue()).setCellValue("Quantity");
1043
	    headerRow.createCell(OrderReportColumn.UNIT_TRANSFER_PRICE.getValue()).setCellValue("Unit Transfer Price");
1044
	    headerRow.createCell(OrderReportColumn.UNIT_SELLING_PRICE.getValue()).setCellValue("Unit Selling Price");
1045
	    headerRow.createCell(OrderReportColumn.TOTAL_TRANSFER_PRICE.getValue()).setCellValue("Total Transfer Price");
1046
	    headerRow.createCell(OrderReportColumn.TOTAL_SELLING_PRICE.getValue()).setCellValue("Total Selling Price");
1047
	    headerRow.createCell(OrderReportColumn.CURRENT_STATUS.getValue()).setCellValue("Current Status");
4600 varun.gupt 1048
 
5386 phani.kuma 1049
    	try	{
1050
 
1051
    		Row contentRow = null;
1052
			LineItem lineItem = null;
1053
 
1054
			for (Order order: ordersWithErrors) 
1055
			{
1056
				contentRow = sheet.createRow(rowCount ++);
1057
				lineItem = order.getLineitems().get(0);
1058
 
1059
		        contentRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue(order.getId());
1060
		        if(order.getOriginalOrderId() == 0)	{
1061
		        	contentRow.createCell(OrderReportColumn.ORIGINAL_ORDER_ID.getValue()).setCellValue(order.getId());
1062
				}
1063
				else {
1064
					contentRow.createCell(OrderReportColumn.ORIGINAL_ORDER_ID.getValue()).setCellValue(order.getOriginalOrderId());
1065
				}
1066
		        contentRow.createCell(OrderReportColumn.VENDOR_ID.getValue()).setCellValue(order.getVendorId());
1067
		        contentRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getCreated_timestamp())));
1068
			    contentRow.createCell(OrderReportColumn.BILLING_NUMBER.getValue()).setCellValue(order.getInvoice_number());
1069
			    contentRow.createCell(OrderReportColumn.BILLING_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getBilling_timestamp())));
1070
			    contentRow.createCell(OrderReportColumn.DELIVERY_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getDelivery_timestamp())));
1071
			    contentRow.createCell(OrderReportColumn.BRAND.getValue()).setCellValue(getValueForEmptyString(lineItem.getBrand()));
1072
			    contentRow.createCell(OrderReportColumn.MODEL_NAME.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_name()));
1073
			    contentRow.createCell(OrderReportColumn.MODEL_NUMBER.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_number()));
1074
			    contentRow.createCell(OrderReportColumn.COLOR.getValue()).setCellValue(getValueForEmptyString(lineItem.getColor()));
1075
			    contentRow.createCell(OrderReportColumn.QUANTITY.getValue()).setCellValue(lineItem.getQuantity());
1076
			    contentRow.createCell(OrderReportColumn.UNIT_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price());
1077
			    contentRow.createCell(OrderReportColumn.UNIT_SELLING_PRICE.getValue()).setCellValue(lineItem.getUnit_price());
1078
			    contentRow.createCell(OrderReportColumn.TOTAL_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price() * lineItem.getQuantity());
1079
			    contentRow.createCell(OrderReportColumn.TOTAL_SELLING_PRICE.getValue()).setCellValue(lineItem.getTotal_price());
1080
			    contentRow.createCell(OrderReportColumn.CURRENT_STATUS.getValue()).setCellValue(order.getStatus().name());
1081
	    	}
1082
	    } catch (Exception e) {
1083
	    	String errMsg = e.getMessage();
1084
			logger.error(errMsg, e);
1085
			addActionError(errMsg);
1086
		}
4600 varun.gupt 1087
	}
1088
 
5386 phani.kuma 1089
	private void populateReturnedOrderSheet(Sheet sheet) {
1090
		int rowCount = 0;
1091
 
1092
		Row headerRow = sheet.createRow(rowCount ++);
4875 varun.gupt 1093
	    headerRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue("Order Id");
5386 phani.kuma 1094
	    headerRow.createCell(OrderReportColumn.ORIGINAL_ORDER_ID.getValue()).setCellValue("Original Order Id");
1095
	    headerRow.createCell(OrderReportColumn.VENDOR_ID.getValue()).setCellValue("Vendor Id");
4875 varun.gupt 1096
	    headerRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue("Order Date");
1097
	    headerRow.createCell(OrderReportColumn.BILLING_NUMBER.getValue()).setCellValue("Billing Number");
1098
	    headerRow.createCell(OrderReportColumn.BILLING_DATE.getValue()).setCellValue("Billing Date");
5386 phani.kuma 1099
	    headerRow.createCell(OrderReportColumn.DELIVERY_DATE.getValue()).setCellValue("Returned Date");
4875 varun.gupt 1100
	    headerRow.createCell(OrderReportColumn.BRAND.getValue()).setCellValue("Brand");
1101
	    headerRow.createCell(OrderReportColumn.MODEL_NAME.getValue()).setCellValue("Model Name");
1102
	    headerRow.createCell(OrderReportColumn.MODEL_NUMBER.getValue()).setCellValue("Model Number");
1103
	    headerRow.createCell(OrderReportColumn.COLOR.getValue()).setCellValue("Color");
1104
	    headerRow.createCell(OrderReportColumn.QUANTITY.getValue()).setCellValue("Quantity");
1105
	    headerRow.createCell(OrderReportColumn.UNIT_TRANSFER_PRICE.getValue()).setCellValue("Unit Transfer Price");
1106
	    headerRow.createCell(OrderReportColumn.UNIT_SELLING_PRICE.getValue()).setCellValue("Unit Selling Price");
1107
	    headerRow.createCell(OrderReportColumn.TOTAL_TRANSFER_PRICE.getValue()).setCellValue("Total Transfer Price");
1108
	    headerRow.createCell(OrderReportColumn.TOTAL_SELLING_PRICE.getValue()).setCellValue("Total Selling Price");
1109
	    headerRow.createCell(OrderReportColumn.CURRENT_STATUS.getValue()).setCellValue("Current Status");
1110
 
5386 phani.kuma 1111
    	try	{
1112
 
1113
    		Row contentRow = null;
1114
			LineItem lineItem = null;
1115
 
1116
			for (Order order: returnedOrders) 
1117
			{
1118
				contentRow = sheet.createRow(rowCount ++);
1119
				lineItem = order.getLineitems().get(0);
1120
 
1121
		        contentRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue(order.getId());
1122
		        if(order.getOriginalOrderId() == 0)	{
1123
		        	contentRow.createCell(OrderReportColumn.ORIGINAL_ORDER_ID.getValue()).setCellValue(order.getId());
4875 varun.gupt 1124
				}
5386 phani.kuma 1125
				else {
1126
					contentRow.createCell(OrderReportColumn.ORIGINAL_ORDER_ID.getValue()).setCellValue(order.getOriginalOrderId());
1127
				}
1128
		        contentRow.createCell(OrderReportColumn.VENDOR_ID.getValue()).setCellValue(order.getVendorId());
1129
		        contentRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getCreated_timestamp())));
4875 varun.gupt 1130
			    contentRow.createCell(OrderReportColumn.BILLING_NUMBER.getValue()).setCellValue(order.getInvoice_number());
1131
			    contentRow.createCell(OrderReportColumn.BILLING_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getBilling_timestamp())));
1132
			    contentRow.createCell(OrderReportColumn.DELIVERY_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getDelivery_timestamp())));
1133
			    contentRow.createCell(OrderReportColumn.BRAND.getValue()).setCellValue(getValueForEmptyString(lineItem.getBrand()));
1134
			    contentRow.createCell(OrderReportColumn.MODEL_NAME.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_name()));
1135
			    contentRow.createCell(OrderReportColumn.MODEL_NUMBER.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_number()));
1136
			    contentRow.createCell(OrderReportColumn.COLOR.getValue()).setCellValue(getValueForEmptyString(lineItem.getColor()));
1137
			    contentRow.createCell(OrderReportColumn.QUANTITY.getValue()).setCellValue(lineItem.getQuantity());
5386 phani.kuma 1138
			    contentRow.createCell(OrderReportColumn.UNIT_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price());
4875 varun.gupt 1139
			    contentRow.createCell(OrderReportColumn.UNIT_SELLING_PRICE.getValue()).setCellValue(lineItem.getUnit_price());
5386 phani.kuma 1140
			    contentRow.createCell(OrderReportColumn.TOTAL_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price() * lineItem.getQuantity());
1141
			    contentRow.createCell(OrderReportColumn.TOTAL_SELLING_PRICE.getValue()).setCellValue(lineItem.getTotal_price());
1142
			    contentRow.createCell(OrderReportColumn.CURRENT_STATUS.getValue()).setCellValue(order.getStatus().name());
1143
	    	}
1144
	    } catch (Exception e) {
1145
	    	String errMsg = e.getMessage();
1146
			logger.error(errMsg, e);
1147
			addActionError(errMsg);
4875 varun.gupt 1148
		}
1149
	}
1150
 
5386 phani.kuma 1151
	private void populateReshippedOrderSheet(Sheet sheet) {
1152
		int rowCount = 0;
5020 varun.gupt 1153
 
5189 varun.gupt 1154
	    Row headerRow = sheet.createRow(rowCount ++);
1155
	    headerRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue("Order Id");
5386 phani.kuma 1156
	    headerRow.createCell(OrderReportColumn.ORIGINAL_ORDER_ID.getValue()).setCellValue("Original Order Id");
1157
	    headerRow.createCell(OrderReportColumn.VENDOR_ID.getValue()).setCellValue("Vendor Id");
5189 varun.gupt 1158
	    headerRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue("Order Date");
1159
	    headerRow.createCell(OrderReportColumn.BILLING_NUMBER.getValue()).setCellValue("Billing Number");
1160
	    headerRow.createCell(OrderReportColumn.BILLING_DATE.getValue()).setCellValue("Billing Date");
1161
	    headerRow.createCell(OrderReportColumn.DELIVERY_DATE.getValue()).setCellValue("Delivery Date");
1162
	    headerRow.createCell(OrderReportColumn.BRAND.getValue()).setCellValue("Brand");
1163
	    headerRow.createCell(OrderReportColumn.MODEL_NAME.getValue()).setCellValue("Model Name");
1164
	    headerRow.createCell(OrderReportColumn.MODEL_NUMBER.getValue()).setCellValue("Model Number");
1165
	    headerRow.createCell(OrderReportColumn.COLOR.getValue()).setCellValue("Color");
1166
	    headerRow.createCell(OrderReportColumn.QUANTITY.getValue()).setCellValue("Quantity");
1167
	    headerRow.createCell(OrderReportColumn.UNIT_TRANSFER_PRICE.getValue()).setCellValue("Unit Transfer Price");
1168
	    headerRow.createCell(OrderReportColumn.UNIT_SELLING_PRICE.getValue()).setCellValue("Unit Selling Price");
1169
	    headerRow.createCell(OrderReportColumn.TOTAL_TRANSFER_PRICE.getValue()).setCellValue("Total Transfer Price");
1170
	    headerRow.createCell(OrderReportColumn.TOTAL_SELLING_PRICE.getValue()).setCellValue("Total Selling Price");
1171
	    headerRow.createCell(OrderReportColumn.CURRENT_STATUS.getValue()).setCellValue("Current Status");
1172
 
1173
    	try	{
5386 phani.kuma 1174
 
1175
    		Row contentRow = null;
1176
			LineItem lineItem = null;
1177
 
1178
			for (Order order: reshippedNonPayableOrders) 
1179
			{
1180
				contentRow = sheet.createRow(rowCount ++);
1181
				lineItem = order.getLineitems().get(0);
5189 varun.gupt 1182
 
5386 phani.kuma 1183
		        contentRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue(order.getId());
1184
		        if(order.getOriginalOrderId() == 0)	{
1185
		        	contentRow.createCell(OrderReportColumn.ORIGINAL_ORDER_ID.getValue()).setCellValue(order.getId());
5189 varun.gupt 1186
				}
5386 phani.kuma 1187
				else {
1188
					contentRow.createCell(OrderReportColumn.ORIGINAL_ORDER_ID.getValue()).setCellValue(order.getOriginalOrderId());
1189
				}
1190
		        contentRow.createCell(OrderReportColumn.VENDOR_ID.getValue()).setCellValue(order.getVendorId());
5189 varun.gupt 1191
		        contentRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getCreated_timestamp())));
1192
			    contentRow.createCell(OrderReportColumn.BILLING_NUMBER.getValue()).setCellValue(order.getInvoice_number());
1193
			    contentRow.createCell(OrderReportColumn.BILLING_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getBilling_timestamp())));
5386 phani.kuma 1194
			    if(order.getDelivery_timestamp() != 0)	{
1195
			    	contentRow.createCell(OrderReportColumn.DELIVERY_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getDelivery_timestamp())));
1196
				}
5189 varun.gupt 1197
			    contentRow.createCell(OrderReportColumn.BRAND.getValue()).setCellValue(getValueForEmptyString(lineItem.getBrand()));
1198
			    contentRow.createCell(OrderReportColumn.MODEL_NAME.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_name()));
1199
			    contentRow.createCell(OrderReportColumn.MODEL_NUMBER.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_number()));
1200
			    contentRow.createCell(OrderReportColumn.COLOR.getValue()).setCellValue(getValueForEmptyString(lineItem.getColor()));
1201
			    contentRow.createCell(OrderReportColumn.QUANTITY.getValue()).setCellValue(lineItem.getQuantity());
1202
			    contentRow.createCell(OrderReportColumn.UNIT_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price());
1203
			    contentRow.createCell(OrderReportColumn.UNIT_SELLING_PRICE.getValue()).setCellValue(lineItem.getUnit_price());
1204
			    contentRow.createCell(OrderReportColumn.TOTAL_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price() * lineItem.getQuantity());
1205
			    contentRow.createCell(OrderReportColumn.TOTAL_SELLING_PRICE.getValue()).setCellValue(lineItem.getTotal_price());
1206
			    contentRow.createCell(OrderReportColumn.CURRENT_STATUS.getValue()).setCellValue(order.getStatusDescription());
1207
	    	}
1208
	    } catch (Exception e) {
5386 phani.kuma 1209
	    	String errMsg = e.getMessage();
1210
			logger.error(errMsg, e);
1211
			addActionError(errMsg);
5189 varun.gupt 1212
		}
1213
	}
1214
 
5386 phani.kuma 1215
	private void populateUnsettledOrderSheet(Sheet sheet) {
1216
		int rowCount = 0;
5189 varun.gupt 1217
 
5020 varun.gupt 1218
	    Row headerRow = sheet.createRow(rowCount ++);
4600 varun.gupt 1219
	    headerRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue("Order Id");
5386 phani.kuma 1220
	    headerRow.createCell(OrderReportColumn.ORIGINAL_ORDER_ID.getValue()).setCellValue("Original Order Id");
1221
	    headerRow.createCell(OrderReportColumn.VENDOR_ID.getValue()).setCellValue("Vendor Id");
4600 varun.gupt 1222
	    headerRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue("Order Date");
1223
	    headerRow.createCell(OrderReportColumn.BILLING_NUMBER.getValue()).setCellValue("Billing Number");
1224
	    headerRow.createCell(OrderReportColumn.BILLING_DATE.getValue()).setCellValue("Billing Date");
1225
	    headerRow.createCell(OrderReportColumn.DELIVERY_DATE.getValue()).setCellValue("Delivery Date");
1226
	    headerRow.createCell(OrderReportColumn.BRAND.getValue()).setCellValue("Brand");
1227
	    headerRow.createCell(OrderReportColumn.MODEL_NAME.getValue()).setCellValue("Model Name");
1228
	    headerRow.createCell(OrderReportColumn.MODEL_NUMBER.getValue()).setCellValue("Model Number");
1229
	    headerRow.createCell(OrderReportColumn.COLOR.getValue()).setCellValue("Color");
1230
	    headerRow.createCell(OrderReportColumn.QUANTITY.getValue()).setCellValue("Quantity");
1231
	    headerRow.createCell(OrderReportColumn.UNIT_TRANSFER_PRICE.getValue()).setCellValue("Unit Transfer Price");
1232
	    headerRow.createCell(OrderReportColumn.UNIT_SELLING_PRICE.getValue()).setCellValue("Unit Selling Price");
1233
	    headerRow.createCell(OrderReportColumn.TOTAL_TRANSFER_PRICE.getValue()).setCellValue("Total Transfer Price");
1234
	    headerRow.createCell(OrderReportColumn.TOTAL_SELLING_PRICE.getValue()).setCellValue("Total Selling Price");
1235
	    headerRow.createCell(OrderReportColumn.CURRENT_STATUS.getValue()).setCellValue("Current Status");
1236
	    headerRow.createCell(OrderReportColumn.PAYMENT_TYPE.getValue()).setCellValue("Payment Type");
4745 varun.gupt 1237
	    headerRow.createCell(OrderReportColumn.PAYMENT_STATUS.getValue()).setCellValue("Payment Status");
4600 varun.gupt 1238
	    headerRow.createCell(OrderReportColumn.PAYMENT_ID.getValue()).setCellValue("Payment Id");
1239
	    headerRow.createCell(OrderReportColumn.COUPON_CODE.getValue()).setCellValue("Coupon Code");
1240
 
5386 phani.kuma 1241
    	outputPaymentUnsettledOrdersRows(sheet, rowCount);
1242
	}
1243
 
1244
	private int outputPaymentUnsettledOrdersRows(Sheet sheet, int rowCount) {
1245
 
1246
    	try	{
1247
    		PaymentClient psc = new PaymentClient();
1248
	    	in.shop2020.payments.PaymentService.Client paymentClient = psc.getClient();
1249
 
1250
	    	TransactionClient tsc = new TransactionClient();
4600 varun.gupt 1251
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
5189 varun.gupt 1252
 
5386 phani.kuma 1253
			Row contentRow = null;
1254
			LineItem lineItem = null;
1255
			Payment pmt = null;
1256
			Transaction txn = null;
1257
 
1258
			for (Order order: unsettledOrders)
1259
			{
1260
				contentRow = sheet.createRow(rowCount ++);
1261
				lineItem = order.getLineitems().get(0);
1262
				pmt = null;
1263
				txn = null;
1264
 
1265
				try	{
1266
					if(order.isCod()) {
1267
						try {
1268
							pmt = paymentClient.getPaymentForTxnId(order.getTransactionId()).get(0);
1269
						} catch (TTransportException e) {
1270
							psc = new PaymentClient();
1271
					    	paymentClient = psc.getClient();
1272
					    	pmt = paymentClient.getPaymentForTxnId(order.getTransactionId()).get(0);
1273
						}
1274
 
1275
						try {
1276
							txn = transactionClient.getTransaction(order.getTransactionId());
1277
						} catch (TTransportException e) {
1278
							tsc = new TransactionClient();
1279
							transactionClient = tsc.getClient();
1280
							txn = transactionClient.getTransaction(order.getTransactionId());
1281
						}
1282
					}
1283
					else {
1284
						try {
1285
							pmt = paymentClient.getSuccessfulPaymentForTxnId(order.getTransactionId());
1286
						} catch (TTransportException e) {
1287
							psc = new PaymentClient();
1288
					    	paymentClient = psc.getClient();
1289
					    	pmt = paymentClient.getSuccessfulPaymentForTxnId(order.getTransactionId());
1290
						}
1291
 
1292
						try {
1293
							txn = transactionClient.getTransaction(pmt.getMerchantTxnId());
1294
						} catch (TTransportException e) {
1295
							tsc = new TransactionClient();
1296
							transactionClient = tsc.getClient();
1297
							txn = transactionClient.getTransaction(pmt.getMerchantTxnId());
1298
						}
1299
					}
1300
 
1301
			        contentRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue(order.getId());
1302
			        if(order.getOriginalOrderId() == 0)	{
1303
			        	contentRow.createCell(OrderReportColumn.ORIGINAL_ORDER_ID.getValue()).setCellValue(order.getId());
1304
					}
1305
					else {
1306
						contentRow.createCell(OrderReportColumn.ORIGINAL_ORDER_ID.getValue()).setCellValue(order.getOriginalOrderId());
1307
					}
1308
			        contentRow.createCell(OrderReportColumn.VENDOR_ID.getValue()).setCellValue(order.getVendorId());
1309
			        contentRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getCreated_timestamp())));
1310
				    contentRow.createCell(OrderReportColumn.BILLING_NUMBER.getValue()).setCellValue(order.getInvoice_number());
1311
				    contentRow.createCell(OrderReportColumn.BILLING_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getBilling_timestamp())));
1312
				    if(order.getDelivery_timestamp() != 0)	{
1313
				    	contentRow.createCell(OrderReportColumn.DELIVERY_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getDelivery_timestamp())));
1314
					}
1315
				    contentRow.createCell(OrderReportColumn.BRAND.getValue()).setCellValue(getValueForEmptyString(lineItem.getBrand()));
1316
				    contentRow.createCell(OrderReportColumn.MODEL_NAME.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_name()));
1317
				    contentRow.createCell(OrderReportColumn.MODEL_NUMBER.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_number()));
1318
				    contentRow.createCell(OrderReportColumn.COLOR.getValue()).setCellValue(getValueForEmptyString(lineItem.getColor()));
1319
				    contentRow.createCell(OrderReportColumn.QUANTITY.getValue()).setCellValue(lineItem.getQuantity());
1320
				    contentRow.createCell(OrderReportColumn.UNIT_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price());
1321
				    contentRow.createCell(OrderReportColumn.UNIT_SELLING_PRICE.getValue()).setCellValue(lineItem.getUnit_price());
1322
				    contentRow.createCell(OrderReportColumn.TOTAL_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price() * lineItem.getQuantity());
1323
				    contentRow.createCell(OrderReportColumn.TOTAL_SELLING_PRICE.getValue()).setCellValue(lineItem.getTotal_price());
1324
				    contentRow.createCell(OrderReportColumn.CURRENT_STATUS.getValue()).setCellValue(order.getStatus().name());
1325
 
1326
				    if(pmt.getGatewayId() == 4)	{
1327
				    	contentRow.createCell(OrderReportColumn.PAYMENT_TYPE.getValue()).setCellValue("COD-" + codProviders.get(order.getLogistics_provider_id()));
1328
				    }
1329
				    else {
1330
				    	contentRow.createCell(OrderReportColumn.PAYMENT_TYPE.getValue()).setCellValue(paymentGateways.get(pmt.getGatewayId()));
1331
				    }
1332
			    	contentRow.createCell(OrderReportColumn.PAYMENT_STATUS.getValue()).setCellValue(pmt.getStatus().name());
1333
			    	contentRow.createCell(OrderReportColumn.PAYMENT_ID.getValue()).setCellValue(pmt.getPaymentId());
1334
			    	contentRow.createCell(OrderReportColumn.COUPON_CODE.getValue()).setCellValue(txn.getCoupon_code());
1335
 
1336
				} catch (Exception e) {
1337
					contentRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue(order.getId());
1338
					String errMsg = "error occured in outputPaymentUnsettledOrdersRows during " + order.getId();
1339
					logger.error(errMsg, e);
1340
					addActionError(errMsg);
5020 varun.gupt 1341
				}
4600 varun.gupt 1342
	    	}
5386 phani.kuma 1343
	    } catch (Exception e) {
1344
	    	String errMsg = e.getMessage();
1345
			logger.error(errMsg, e);
1346
			addActionError(errMsg);
5020 varun.gupt 1347
		}
5386 phani.kuma 1348
 
1349
	    return rowCount;
5020 varun.gupt 1350
	}
1351
 
5386 phani.kuma 1352
	private void populateSettledOrderSheet(Sheet sheet, boolean total) {
1353
		int rowCount = 0;
5020 varun.gupt 1354
 
5386 phani.kuma 1355
	    Row headerRow = sheet.createRow(rowCount ++);
1356
	    headerRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue("Order Id");
1357
	    headerRow.createCell(OrderReportColumn.ORIGINAL_ORDER_ID.getValue()).setCellValue("Original Order Id");
1358
	    headerRow.createCell(OrderReportColumn.VENDOR_ID.getValue()).setCellValue("Vendor Id");
1359
	    headerRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue("Order Date");
1360
	    headerRow.createCell(OrderReportColumn.BILLING_NUMBER.getValue()).setCellValue("Billing Number");
1361
	    headerRow.createCell(OrderReportColumn.BILLING_DATE.getValue()).setCellValue("Billing Date");
1362
	    headerRow.createCell(OrderReportColumn.DELIVERY_DATE.getValue()).setCellValue("Delivery Date");
1363
	    headerRow.createCell(OrderReportColumn.BRAND.getValue()).setCellValue("Brand");
1364
	    headerRow.createCell(OrderReportColumn.MODEL_NAME.getValue()).setCellValue("Model Name");
1365
	    headerRow.createCell(OrderReportColumn.MODEL_NUMBER.getValue()).setCellValue("Model Number");
1366
	    headerRow.createCell(OrderReportColumn.COLOR.getValue()).setCellValue("Color");
1367
	    headerRow.createCell(OrderReportColumn.QUANTITY.getValue()).setCellValue("Quantity");
1368
	    headerRow.createCell(OrderReportColumn.UNIT_TRANSFER_PRICE.getValue()).setCellValue("Unit Transfer Price");
1369
	    headerRow.createCell(OrderReportColumn.UNIT_SELLING_PRICE.getValue()).setCellValue("Unit Selling Price");
1370
	    headerRow.createCell(OrderReportColumn.TOTAL_TRANSFER_PRICE.getValue()).setCellValue("Total Transfer Price");
1371
	    headerRow.createCell(OrderReportColumn.TOTAL_SELLING_PRICE.getValue()).setCellValue("Total Selling Price");
1372
	    headerRow.createCell(OrderReportColumn.CURRENT_STATUS.getValue()).setCellValue("Current Status");
1373
	    headerRow.createCell(OrderReportColumn.PAYMENT_TYPE.getValue()).setCellValue("Payment Type");
1374
	    headerRow.createCell(OrderReportColumn.PAYMENT_STATUS.getValue()).setCellValue("Payment Status");
1375
	    headerRow.createCell(OrderReportColumn.PAYMENT_ID.getValue()).setCellValue("Payment Reference");
1376
	    headerRow.createCell(OrderReportColumn.COUPON_CODE.getValue()).setCellValue("Coupon Code");
1377
	    headerRow.createCell(OrderReportColumn.SETTLEMENT_DATE.getValue()).setCellValue("Settlement Date");
1378
	    headerRow.createCell(OrderReportColumn.SERVICE_TAX.getValue()).setCellValue("Service Tax");
1379
	    headerRow.createCell(OrderReportColumn.OTHER_CHARGES.getValue()).setCellValue("Other Charges");
1380
	    headerRow.createCell(OrderReportColumn.NET_COLLECTION.getValue()).setCellValue("Net Collection");
1381
	    headerRow.createCell(OrderReportColumn.USER_PAYABLE_AMOUNT.getValue()).setCellValue("User Payable Amount");
1382
 
1383
	    rowCount = outputPaymentSettledOrdersRows(sheet, rowCount);
1384
	    rowCount = outputPaymentNotRequiredOrdersRows(sheet, rowCount);
1385
 
1386
	    if(total) {
1387
	    	rowCount = outputPaymentUnsettledOrdersRows(sheet, rowCount);
1388
	    }
1389
	}
1390
 
1391
	private int outputPaymentSettledOrdersRows(Sheet sheet, int rowCount) {
5020 varun.gupt 1392
 
5386 phani.kuma 1393
		try	{
1394
			PaymentClient psc = new PaymentClient();
1395
	    	in.shop2020.payments.PaymentService.Client paymentClient = psc.getClient();
1396
 
1397
	    	TransactionClient tsc = new TransactionClient();
1398
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
1399
 
1400
			Row contentRow = null;
1401
			Order order = null;
1402
			PaymentSettlement paymentSettlement = null;
1403
			Payment pmt = null;
1404
			Transaction txn = null;
1405
			LineItem lineItem = null;
1406
 
1407
	    	for (Entry<Order, PaymentSettlement> entry : paymentSettledOrdersMap.entrySet())
1408
	    	{
1409
		    	contentRow = sheet.createRow(rowCount ++);
1410
		    	order = entry.getKey();
1411
		    	paymentSettlement = entry.getValue();
1412
		    	pmt = null;
1413
		    	txn = null;
5020 varun.gupt 1414
 
5386 phani.kuma 1415
				try {
1416
					if(order.isCod()) {
1417
						try {
1418
							pmt = paymentClient.getPaymentForTxnId(order.getTransactionId()).get(0);
1419
						} catch (TTransportException e) {
1420
							psc = new PaymentClient();
1421
					    	paymentClient = psc.getClient();
1422
					    	pmt = paymentClient.getPaymentForTxnId(order.getTransactionId()).get(0);
1423
						}
1424
 
1425
						try {
1426
							txn = transactionClient.getTransaction(order.getTransactionId());
1427
						} catch (TTransportException e) {
1428
							tsc = new TransactionClient();
1429
							transactionClient = tsc.getClient();
1430
							txn = transactionClient.getTransaction(order.getTransactionId());
1431
						}
1432
					}
1433
					else {
1434
						try {
1435
							pmt = paymentClient.getSuccessfulPaymentForTxnId(order.getTransactionId());
1436
						} catch (TTransportException e) {
1437
							psc = new PaymentClient();
1438
					    	paymentClient = psc.getClient();
1439
					    	pmt = paymentClient.getSuccessfulPaymentForTxnId(order.getTransactionId());
1440
						}
1441
 
1442
						try {
1443
							txn = transactionClient.getTransaction(pmt.getMerchantTxnId());
1444
						} catch (TTransportException e) {
1445
							tsc = new TransactionClient();
1446
							transactionClient = tsc.getClient();
1447
							txn = transactionClient.getTransaction(pmt.getMerchantTxnId());
1448
						}
1449
					}
1450
			    	lineItem = order.getLineitems().get(0);
1451
 
1452
			        contentRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue(order.getId());
1453
			        if(order.getOriginalOrderId() == 0)	{
1454
			        	contentRow.createCell(OrderReportColumn.ORIGINAL_ORDER_ID.getValue()).setCellValue(order.getId());
1455
					}
1456
					else {
1457
						contentRow.createCell(OrderReportColumn.ORIGINAL_ORDER_ID.getValue()).setCellValue(order.getOriginalOrderId());
1458
					}
1459
			        contentRow.createCell(OrderReportColumn.VENDOR_ID.getValue()).setCellValue(order.getVendorId());
1460
			        contentRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getCreated_timestamp())));
1461
				    contentRow.createCell(OrderReportColumn.BILLING_NUMBER.getValue()).setCellValue(order.getInvoice_number());
1462
				    contentRow.createCell(OrderReportColumn.BILLING_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getBilling_timestamp())));
1463
				    if(order.getDelivery_timestamp() != 0)	{
1464
				    	contentRow.createCell(OrderReportColumn.DELIVERY_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getDelivery_timestamp())));
1465
					}
1466
				    contentRow.createCell(OrderReportColumn.BRAND.getValue()).setCellValue(getValueForEmptyString(lineItem.getBrand()));
1467
				    contentRow.createCell(OrderReportColumn.MODEL_NAME.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_name()));
1468
				    contentRow.createCell(OrderReportColumn.MODEL_NUMBER.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_number()));
1469
				    contentRow.createCell(OrderReportColumn.COLOR.getValue()).setCellValue(getValueForEmptyString(lineItem.getColor()));
1470
				    contentRow.createCell(OrderReportColumn.QUANTITY.getValue()).setCellValue(lineItem.getQuantity());
1471
				    contentRow.createCell(OrderReportColumn.UNIT_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price());
1472
				    contentRow.createCell(OrderReportColumn.UNIT_SELLING_PRICE.getValue()).setCellValue(lineItem.getUnit_price());
1473
				    contentRow.createCell(OrderReportColumn.TOTAL_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price() * lineItem.getQuantity());
1474
				    contentRow.createCell(OrderReportColumn.TOTAL_SELLING_PRICE.getValue()).setCellValue(lineItem.getTotal_price());
1475
				    contentRow.createCell(OrderReportColumn.CURRENT_STATUS.getValue()).setCellValue(order.getStatus().name());
1476
 
1477
					if(pmt.getGatewayId() == 4)	{
1478
				    	contentRow.createCell(OrderReportColumn.PAYMENT_TYPE.getValue()).setCellValue("COD-" + codProviders.get(order.getLogistics_provider_id()));
1479
				    	contentRow.createCell(OrderReportColumn.SERVICE_TAX.getValue()).setCellValue(paymentSettlement.getServiceTax());
1480
					    contentRow.createCell(OrderReportColumn.OTHER_CHARGES.getValue()).setCellValue(paymentSettlement.getOtherCharges());
1481
					    contentRow.createCell(OrderReportColumn.NET_COLLECTION.getValue()).setCellValue(paymentSettlement.getNetCollection());
1482
					    contentRow.createCell(OrderReportColumn.PAYMENT_ID.getValue()).setCellValue(paymentSettlement.getReferenceId());
1483
				    }
1484
				    else {
1485
				    	contentRow.createCell(OrderReportColumn.PAYMENT_TYPE.getValue()).setCellValue(paymentGateways.get(pmt.getGatewayId()));
1486
				    	contentRow.createCell(OrderReportColumn.SERVICE_TAX.getValue()).setCellValue((paymentSettlement.getServiceTax() * order.getTotal_amount()) / pmt.getAmount());
1487
					    contentRow.createCell(OrderReportColumn.OTHER_CHARGES.getValue()).setCellValue((paymentSettlement.getOtherCharges() * order.getTotal_amount()) / pmt.getAmount());
1488
					    contentRow.createCell(OrderReportColumn.NET_COLLECTION.getValue()).setCellValue((paymentSettlement.getNetCollection() * order.getTotal_amount()) / pmt.getAmount());
1489
					    contentRow.createCell(OrderReportColumn.PAYMENT_ID.getValue()).setCellValue(pmt.getPaymentId());
1490
				    }
1491
			    	contentRow.createCell(OrderReportColumn.PAYMENT_STATUS.getValue()).setCellValue(pmt.getStatus().name());
1492
			    	contentRow.createCell(OrderReportColumn.SETTLEMENT_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(paymentSettlement.getSettlementDate())));
1493
				    contentRow.createCell(OrderReportColumn.USER_PAYABLE_AMOUNT.getValue()).setCellValue(order.getTotal_amount());
1494
				    contentRow.createCell(OrderReportColumn.COUPON_CODE.getValue()).setCellValue(txn.getCoupon_code());
1495
 
1496
		    	} catch (Exception e) {
1497
					contentRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue(order.getId());
1498
					String errMsg = "error occured in outputPaymentSettledOrdersRows during " + order.getId();
1499
					logger.error(errMsg, e);
1500
					addActionError(errMsg);
1501
				}
4715 varun.gupt 1502
			}
5386 phani.kuma 1503
		} catch (Exception e) {
1504
			String errMsg = e.getMessage();
1505
			logger.error(errMsg, e);
1506
			addActionError(errMsg);
5020 varun.gupt 1507
		}
5386 phani.kuma 1508
 
1509
		return rowCount;
5020 varun.gupt 1510
	}
5098 varun.gupt 1511
 
5386 phani.kuma 1512
	private int outputPaymentNotRequiredOrdersRows(Sheet sheet, int rowCount) {
5020 varun.gupt 1513
 
5386 phani.kuma 1514
		try	{
1515
 
1516
			Row contentRow = null;
1517
			LineItem lineItem = null;
1518
 
1519
			for (Order order: userPaymentNotRequiredOrders)
1520
			{
1521
				contentRow = sheet.createRow(rowCount ++);
1522
				lineItem = order.getLineitems().get(0);
5189 varun.gupt 1523
 
5386 phani.kuma 1524
		        contentRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue(order.getId());
1525
		        if(order.getOriginalOrderId() == 0)	{
1526
		        	contentRow.createCell(OrderReportColumn.ORIGINAL_ORDER_ID.getValue()).setCellValue(order.getId());
5189 varun.gupt 1527
				}
5386 phani.kuma 1528
				else {
1529
					contentRow.createCell(OrderReportColumn.ORIGINAL_ORDER_ID.getValue()).setCellValue(order.getOriginalOrderId());
1530
				}
1531
		        contentRow.createCell(OrderReportColumn.VENDOR_ID.getValue()).setCellValue(order.getVendorId());
5020 varun.gupt 1532
		        contentRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getCreated_timestamp())));
1533
			    contentRow.createCell(OrderReportColumn.BILLING_NUMBER.getValue()).setCellValue(order.getInvoice_number());
1534
			    contentRow.createCell(OrderReportColumn.BILLING_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getBilling_timestamp())));
5386 phani.kuma 1535
			    if(order.getDelivery_timestamp() != 0)	{
1536
			    	contentRow.createCell(OrderReportColumn.DELIVERY_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getDelivery_timestamp())));
1537
				}
5020 varun.gupt 1538
			    contentRow.createCell(OrderReportColumn.BRAND.getValue()).setCellValue(getValueForEmptyString(lineItem.getBrand()));
1539
			    contentRow.createCell(OrderReportColumn.MODEL_NAME.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_name()));
1540
			    contentRow.createCell(OrderReportColumn.MODEL_NUMBER.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_number()));
1541
			    contentRow.createCell(OrderReportColumn.COLOR.getValue()).setCellValue(getValueForEmptyString(lineItem.getColor()));
1542
			    contentRow.createCell(OrderReportColumn.QUANTITY.getValue()).setCellValue(lineItem.getQuantity());
1543
			    contentRow.createCell(OrderReportColumn.UNIT_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price());
1544
			    contentRow.createCell(OrderReportColumn.UNIT_SELLING_PRICE.getValue()).setCellValue(lineItem.getUnit_price());
1545
			    contentRow.createCell(OrderReportColumn.TOTAL_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price() * lineItem.getQuantity());
1546
			    contentRow.createCell(OrderReportColumn.TOTAL_SELLING_PRICE.getValue()).setCellValue(lineItem.getTotal_price());
5386 phani.kuma 1547
			    contentRow.createCell(OrderReportColumn.CURRENT_STATUS.getValue()).setCellValue(order.getStatus().name());
1548
			    contentRow.createCell(OrderReportColumn.USER_PAYABLE_AMOUNT.getValue()).setCellValue(0);
5020 varun.gupt 1549
			}
5386 phani.kuma 1550
		} catch (Exception e) {
1551
			String errMsg = e.getMessage();
1552
			logger.error(errMsg, e);
1553
			addActionError(errMsg);
4600 varun.gupt 1554
		}
5020 varun.gupt 1555
 
5386 phani.kuma 1556
		return rowCount;
5020 varun.gupt 1557
	}
1558
 
5098 varun.gupt 1559
	private void initiatializeDashboard()	{
1560
		try	{
1561
			OrderStatusGroups orderStatusGroups = new OrderStatusGroups();
1562
			refundOrderStatuses = orderStatusGroups.getRefundedOrders();
1563
 
5386 phani.kuma 1564
			CatalogClient csc = new CatalogClient();
1565
			in.shop2020.model.v1.catalog.InventoryService.Client catalogClient = csc.getClient();
5098 varun.gupt 1566
			vendors = catalogClient.getAllVendors();
1567
 
1568
			TransactionClient tsc = new TransactionClient();
1569
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
1570
			ebsSettlementSummaries = transactionClient.getEBSSettlementSummaries();
1571
 
5386 phani.kuma 1572
		} catch (Exception e) {
1573
			String errMsg = e.getMessage();
1574
			logger.error(errMsg, e);
1575
			addActionError(errMsg);
5098 varun.gupt 1576
		}
1577
	}
1578
 
4600 varun.gupt 1579
	public List<Vendor> getAllVendors()	{
1580
		return this.vendors;
1581
	}
1582
 
1583
	private String getValueForEmptyString(String s){
1584
		if(s==null || s.equals(""))
1585
			return "-";
1586
		else
1587
			return s; 
1588
	}
1589
 
1590
	private String getVendorName(long vendorId)	{
1591
		for (Vendor vendor: vendors)	{
1592
			if (vendor.getId() == vendorId)	return vendor.getName();
1593
		}
1594
		return null;
1595
	}
1596
 
5386 phani.kuma 1597
	public File getHdfcSettlementReport() {
4600 varun.gupt 1598
        return hdfcSettlementReport;
1599
    }
1600
 
1601
    public void setHdfcSettlementReport(File hdfcSettlementReport) {
1602
        this.hdfcSettlementReport = hdfcSettlementReport;
1603
    }
1604
 
1605
    public File getEbsSettlementSummary()	{
1606
    	return ebsSettlementSummary;
1607
    }
1608
 
1609
    public void setEbsSettlementSummary(File ebsSettlementSummary)	{
1610
    	this.ebsSettlementSummary = ebsSettlementSummary;
1611
    }
1612
 
1613
    public File getEbsSettlementReport()	{
1614
    	return ebsSettlementReport;
1615
    }
1616
 
1617
    public void setEbsSettlementReport(File ebsSettlementReport)	{
1618
    	this.ebsSettlementReport = ebsSettlementReport;
1619
    }
1620
 
1621
    public String getBluedartSettlementDate()	{
1622
    	return bluedartSettlementDate;
1623
    }
1624
 
1625
    public void setBluedartSettlementDate(String bluedartSettlementDate)	{
1626
    	this.bluedartSettlementDate = bluedartSettlementDate;
1627
    }
1628
 
1629
    public File getBluedartSettlementReport()	{
1630
    	return bluedartSettlementReport;
1631
    }
1632
 
1633
    public void setBluedartSettlementReport(File bluedartSettlementReport)	{
1634
    	this.bluedartSettlementReport = bluedartSettlementReport;
1635
    }
1636
 
4715 varun.gupt 1637
    public String getAramexSettlementDate()	{
1638
    	return this.aramexSettlementDate;
1639
    }
1640
 
1641
    public void setAramexSettlementDate(String aramexSettlementDate)	{
1642
    	this.aramexSettlementDate = aramexSettlementDate;
1643
    }
1644
 
1645
    public void setAramexSettlementReport(File aramexSettlementReport) {
1646
		this.aramexSettlementReport = aramexSettlementReport;
1647
	}
1648
 
1649
	public File getAramexSettlementReport() {
1650
		return aramexSettlementReport;
1651
	}
1652
 
4600 varun.gupt 1653
	@Override
5386 phani.kuma 1654
    public void setServletContext(ServletContext context) {
4600 varun.gupt 1655
        this.context = context;
1656
    }
1657
 
1658
    public String getServletContextPath() {
1659
        return context.getContextPath();
1660
    }
1661
 
1662
	@Override
1663
	public void setServletResponse(HttpServletResponse response) {
1664
		this.response = response;
1665
	}
1666
 
1667
	@Override
1668
	public void setServletRequest(HttpServletRequest request) {
1669
		this.request = request;
1670
	}
1671
 
5386 phani.kuma 1672
	public Map<Long, String> getEBSSettlementSummaries() {
4600 varun.gupt 1673
		return ebsSettlementSummaries;
1674
	}
5386 phani.kuma 1675
 
1676
	public void setOrderIdsToBeMarked(File orderIdsToBeMarked) {
1677
		this.orderIdsToBeMarked = orderIdsToBeMarked;
5098 varun.gupt 1678
	}
1679
 
5386 phani.kuma 1680
	public File getOrderIdsToBeMarked() {
1681
		return orderIdsToBeMarked;
5098 varun.gupt 1682
	}
4600 varun.gupt 1683
}