Subversion Repositories SmartDukaan

Rev

Rev 5108 | Rev 5198 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5108 Rev 5189
Line 28... Line 28...
28
import java.text.ParseException;
28
import java.text.ParseException;
29
import java.text.SimpleDateFormat;
29
import java.text.SimpleDateFormat;
30
import java.util.ArrayList;
30
import java.util.ArrayList;
31
import java.util.Date;
31
import java.util.Date;
32
import java.util.HashMap;
32
import java.util.HashMap;
-
 
33
import java.util.LinkedList;
33
import java.util.List;
34
import java.util.List;
34
import java.util.Map;
35
import java.util.Map;
35
 
36
 
36
import javax.servlet.ServletContext;
37
import javax.servlet.ServletContext;
37
import javax.servlet.ServletOutputStream;
38
import javax.servlet.ServletOutputStream;
38
import javax.servlet.http.HttpServletRequest;
39
import javax.servlet.http.HttpServletRequest;
39
import javax.servlet.http.HttpServletResponse;
40
import javax.servlet.http.HttpServletResponse;
40
import javax.servlet.http.HttpSession;
41
import javax.servlet.http.HttpSession;
41
 
42
 
-
 
43
import org.apache.commons.io.IOUtils;
42
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
44
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
43
import org.apache.poi.ss.usermodel.Cell;
45
import org.apache.poi.ss.usermodel.Cell;
44
import org.apache.poi.ss.usermodel.CellStyle;
46
import org.apache.poi.ss.usermodel.CellStyle;
45
import org.apache.poi.ss.usermodel.Font;
47
import org.apache.poi.ss.usermodel.Font;
46
import org.apache.poi.ss.usermodel.Row;
48
import org.apache.poi.ss.usermodel.Row;
Line 158... Line 160...
158
	
160
	
159
	private Map<Long, Map<String, Double>> misMatches = new HashMap<Long, Map<String, Double>>();
161
	private Map<Long, Map<String, Double>> misMatches = new HashMap<Long, Map<String, Double>>();
160
	private Map<Long, String> ebsSettlementSummaries;
162
	private Map<Long, String> ebsSettlementSummaries;
161
	
163
	
162
	private List<OrderStatus> refundOrderStatuses;
164
	private List<OrderStatus> refundOrderStatuses;
163
	
165
 
164
	private List<Order> refundedOrdersBilledinDateRange = new ArrayList<Order>();
-
 
165
	private List<Order> reshippedOrders = new ArrayList<Order>();
166
	private List<Order> reshippedOrders = new ArrayList<Order>();
-
 
167
	private List<Order> refundedOrders = new ArrayList<Order>();
-
 
168
	private List<Order> unsettledOrders = new ArrayList<Order>();
166
	
169
	
167
	private Map<Long, PaymentSettlement> paymentSettlementsMap;
170
	private Map<Long, PaymentSettlement> paymentSettlementsMap = new HashMap<Long, PaymentSettlement>();
168
	
171
	
169
	private final DateFormat DATE_FORMAT = new SimpleDateFormat("dd/MM/yyyy");
172
	private final DateFormat DATE_FORMAT = new SimpleDateFormat("dd/MM/yyyy");
170
	
173
	
171
	private int rowCount = 0;
174
	private int rowCount = 0;
172
	
175
	
Line 194... Line 197...
194
			
197
			
195
		} else if (formType.equals("uploadAramexSettlements")) {
198
		} else if (formType.equals("uploadAramexSettlements")) {
196
			uploadAramexSettlements();
199
			uploadAramexSettlements();
197
			
200
			
198
		} else if (formType.equals("markOrdersAsPaid"))	{
201
		} else if (formType.equals("markOrdersAsPaid"))	{
199
//			uploadOrderIdsToBeMarkedPaid();
202
			uploadOrderIdsToBeMarkedPaid();
200
		}
203
		}
201
	    logger.info("Order Ids where no successful payment was found", orderIdsWithoutSuccess);
204
	    logger.info("Order Ids where no successful payment was found", orderIdsWithoutSuccess);
202
 
205
 
203
		initiatializeDashboard();
206
		initiatializeDashboard();
204
		return new DefaultHttpHeaders("report");
207
		return new DefaultHttpHeaders("report");
205
	}
208
	}
206
	
209
	
207
	public HttpHeaders generateReconciliationReport()	{
210
	public HttpHeaders generateReconciliationReport()	{
208
		DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
211
		DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
209
		
212
		initiatializeDashboard();
210
		try	{
213
		try	{
211
			//Formatting Form input parameters
214
			//Formatting Form input parameters
212
			
215
			
213
//		    Date startDate = dateFormat.parse(request.getParameter("start"));
216
//		    Date startDate = dateFormat.parse(request.getParameter("start"));
214
//			Date endDate = dateFormat.parse(request.getParameter("end"));
217
//			Date endDate = dateFormat.parse(request.getParameter("end"));
Line 651... Line 654...
651
        addActionMessage("Successfully added Aramex settlement details for " + countSuccessfulSaves + " orders");
654
        addActionMessage("Successfully added Aramex settlement details for " + countSuccessfulSaves + " orders");
652
	}
655
	}
653
	
656
	
654
	public void uploadOrderIdsToBeMarkedPaid()	{
657
	public void uploadOrderIdsToBeMarkedPaid()	{
655
		logger.info("Uploading Order Ids to be marked as paid");
658
		logger.info("Uploading Order Ids to be marked as paid");
-
 
659
		List<Long> orderIds = new ArrayList<Long>();
656
 
660
		
657
		Workbook wb = null;
-
 
658
        try {
661
		try {
659
        	wb = new XSSFWorkbook(new FileInputStream(this.orderIdsToBeMarkedPaid));
662
			FileInputStream uploadedFile = new FileInputStream(this.orderIdsToBeMarkedPaid);
660
        } catch (FileNotFoundException e) {
663
			String uploadedContent = IOUtils.toString(uploadedFile);
-
 
664
			
661
        	addActionError(e.getMessage());
665
			for(String s: uploadedContent.trim().split("\n"))	{
-
 
666
				
662
            logger.error("Unable to open the sheet containing orders for which vendor is paid", e);
667
				if(! s.trim().isEmpty())	orderIds.add(Long.parseLong(s));
663
        	return;
668
			}
664
        } catch (IOException e) {
669
		} catch (FileNotFoundException e) {
665
        	addActionError(e.getMessage());
670
			addActionError(e.getMessage());
666
            logger.error("Unable to open the sheet containing orders for which vendor is paid", e);
671
            logger.error("Unable to open the sheet containing orders for which vendor is paid", e);
667
        	return;
-
 
668
        } catch (NullPointerException e) {
672
		} catch (IOException e) {
669
        	addActionError(e.getMessage());
673
			addActionError(e.getMessage());
670
        	logger.error("Unable to open the sheet containing orders for which vendor is paid", e);
674
            logger.error("IOException occured while reading the file containing orders for which vendor is paid", e);
671
        	return;
-
 
672
		}
675
		}
673
        
-
 
674
        Sheet sheet = wb.getSheetAt(0);
-
 
675
        int indexOrderId = 0;
-
 
676
        
676
		
677
        TransactionClient tsc;
677
        TransactionClient tsc;
678
        int countSuccessfulSaves = 0;
678
        int countSuccessfulSaves = 0;
679
        
679
        
680
//        try	{
680
        try	{
681
//        	tsc = new TransactionClient();
681
        	tsc = new TransactionClient();
682
//        	in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
682
        	in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
683
//        	
683
        	
684
//	    	for (Row row: sheet)	{
684
	    	for (long orderId: orderIds)	{
685
//	    		
-
 
686
//	    		if(row.getCell(indexOrderId).getStringCellValue().equals(""))	break;
-
 
687
//	    		
685
	    		
688
//	    		long orderId = Long.parseLong(row.getCell(indexOrderId).getStringCellValue());
-
 
689
//	    		logger.info("Aramex Settlement, Order Id: " + orderId);
686
	    		logger.info("Aramex Settlement, Order Id: " + orderId);
690
//	    		try {
687
	    		try {
691
//	    			transactionClient.updateOrderAsPaidToVendor(orderId);
688
	    			transactionClient.updateOrderAsPaidToVendor(orderId);
692
//					countSuccessfulSaves += 1;
689
					countSuccessfulSaves += 1;
693
//					
690
					
694
//				} catch (TransactionServiceException e) {
691
				} catch (TransactionServiceException e) {
695
//					logger.error("Transaction Service Exception while getting order for id, " + orderId, e);
692
					logger.error("Transaction Service Exception while getting order for id, " + orderId, e);
696
//					addActionError("Transaction Service Exception while getting order for id, " + orderId);	
693
					addActionError("Transaction Service Exception while getting order for id, " + orderId);	
697
//				}
694
				}
698
//	    	}
695
	    	}
699
//        } catch (TTransportException e) {
696
        } catch (TTransportException e) {
700
//        	addActionError(e.getMessage());
697
        	addActionError(e.getMessage());
701
//        	logger.error("" + e);
698
        	logger.error("" + e);
702
//        	
699
        	
703
//        } catch (TException e) {
700
        } catch (TException e) {
704
//        	addActionError(e.getMessage());
701
        	addActionError(e.getMessage());
705
//        	logger.error("" + e);
702
        	logger.error("" + e);
706
//        }
703
        }
707
        addActionMessage("Successfully marked " + countSuccessfulSaves + " orders as paid to vendor");
704
        addActionMessage("Successfully marked " + countSuccessfulSaves + " orders as paid to vendor");
708
	}
705
	}
709
	
706
	
710
	// Prepares the XLS worksheet object and fills in the data with proper formatting
-
 
711
	private ByteArrayOutputStream getReconciliationReport(long vendorId)	{
707
	private ByteArrayOutputStream getReconciliationReport(long vendorId)	{
712
		
708
		
713
		List<PaymentSettlement> paymentSettlements = new ArrayList<PaymentSettlement>();
-
 
714
		List<PaymentSettlement> refundPaymentSettlements = new ArrayList<PaymentSettlement>();
-
 
715
		
-
 
716
		try	{
709
		try	{
717
			TransactionClient tsc = new TransactionClient();
710
			TransactionClient tsc = new TransactionClient();
718
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
711
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
719
 
712
 
-
 
713
	    	PaymentClient psc = new PaymentClient();
-
 
714
	    	in.shop2020.payments.PaymentService.Client paymentClient = psc.getClient();
-
 
715
	    	
720
			paymentSettlements = transactionClient.getSettlementsByDate(0, (new Date()).getTime(), false);
716
			List<Order> unpaidOrders = transactionClient.getOrdersWhereVendorNotPaid(vendorId);
721
			logger.info("Settlement Count: " + paymentSettlements.size());
717
			logger.info("Unpaid Order count: " + unpaidOrders.size());
-
 
718
			
-
 
719
			Map<Long, List<Order>> mapAllOrders = new HashMap<Long, List<Order>>();
-
 
720
			
-
 
721
			for(Order order: unpaidOrders)	{
-
 
722
				
-
 
723
				if(order.getOriginalOrderId() == 0)	{
-
 
724
					List<Order> l = new LinkedList<Order>();
-
 
725
					l.add(order);
-
 
726
					mapAllOrders.put(order.getId(), l);
-
 
727
					
-
 
728
				} else if(mapAllOrders.containsKey(order.getOriginalOrderId()))	{
-
 
729
					
-
 
730
					List<Order> l = mapAllOrders.get(order.getOriginalOrderId());
-
 
731
					l.add(order);
-
 
732
					mapAllOrders.put(order.getOriginalOrderId(), l);
-
 
733
					
-
 
734
				} else	{
-
 
735
					List<Order> l = new LinkedList<Order>();
-
 
736
					l.add(order);
-
 
737
					mapAllOrders.put(order.getOriginalOrderId(), l);
-
 
738
				}
-
 
739
			}
-
 
740
			logger.info("Unpaid Order count in Map: " + mapAllOrders.size());
722
			
741
			
-
 
742
	    	int pmtSettlementFoundNull = 0;
-
 
743
	    	int pmtSettlementFound = 0;
-
 
744
	    	
-
 
745
			for (long originalOrderId: mapAllOrders.keySet())	{
-
 
746
				List <Order> orders = mapAllOrders.get(originalOrderId);
-
 
747
				
-
 
748
				try {
-
 
749
					PaymentSettlement pmtSettlement = null;
-
 
750
					
-
 
751
					if(orders.get(0).isCod())	{	// COD Order(s)
-
 
752
						long settledOrderId = 0;
-
 
753
						
-
 
754
						for (Order order: orders)	{
723
			refundPaymentSettlements = transactionClient.getSettlementsByDate(0, (new Date()).getTime(), true);
755
							pmtSettlement = transactionClient.getSettlementForReferenceId(order.getId(), false);
-
 
756
							
-
 
757
							if(pmtSettlement.getReferenceId() > 0)	{
-
 
758
								settledOrderId = order.getId();
-
 
759
								paymentSettlementsMap.put(order.getId(), pmtSettlement);
-
 
760
							} else	{
-
 
761
								pmtSettlementFoundNull ++;
-
 
762
							}
-
 
763
						}
-
 
764
						
-
 
765
						if(settledOrderId > 0)	{	// Adding unsettled clone orders to re-shipped orders
-
 
766
							for (Order order: orders)	{
-
 
767
								if (order.getId() != settledOrderId)	{
-
 
768
									reshippedOrders.add(order);
-
 
769
								}
-
 
770
							}
-
 
771
						} else	{
-
 
772
							unsettledOrders.addAll(orders);
-
 
773
						}
-
 
774
					} else	{						// Prepaid Order(s)
-
 
775
						Payment payment = paymentClient.getSuccessfulPaymentForTxnId(orders.get(0).getTransactionId());
-
 
776
						
-
 
777
						// Checking if this payment settlement has already been fetched
-
 
778
						if(! paymentSettlementsMap.containsKey(payment.getPaymentId()))	{
-
 
779
							
-
 
780
							pmtSettlement = transactionClient.getSettlementForReferenceId(payment.getPaymentId(), false);
-
 
781
							
-
 
782
							if(pmtSettlement.getReferenceId() > 0)	{
-
 
783
								paymentSettlementsMap.put(payment.getPaymentId(), pmtSettlement);
-
 
784
							} else	{
-
 
785
								unsettledOrders.addAll(orders);
-
 
786
								pmtSettlementFoundNull ++;
-
 
787
							}
-
 
788
						}
-
 
789
						
-
 
790
						if(orders.size() > 1)	{
-
 
791
							reshippedOrders.addAll(orders.subList(1, orders.size()));
-
 
792
						}
-
 
793
					}
-
 
794
				} catch (PaymentException e) {
-
 
795
					logger.error("" + e);
-
 
796
				}
-
 
797
			}
-
 
798
			logger.info("pmtSettlementFoundNull: " + pmtSettlementFoundNull);
724
			logger.info("Refund Settlement Count: " + refundPaymentSettlements.size());
799
			logger.info("Reshipped Orders count: " + reshippedOrders.size());
725
			
800
			
726
		} catch	(TransactionServiceException e)	{
801
		} catch	(TransactionServiceException e)	{
727
			String errMsg = "Transaction Service Exception occured";
802
			String errMsg = "Transaction Service Exception occured";
728
			logger.error(errMsg, e);
803
			logger.error(errMsg, e);
729
			addActionError(errMsg);
804
			addActionError(errMsg);
Line 735... Line 810...
735
			// TODO Auto-generated 
810
			// TODO Auto-generated 
736
			String errMsg = "Transaction Service Exception occured";
811
			String errMsg = "Transaction Service Exception occured";
737
			logger.error(errMsg, e);
812
			logger.error(errMsg, e);
738
			addActionError(errMsg);
813
			addActionError(errMsg);
739
		}
814
		}
-
 
815
		logger.info("Payment Settlement Count: " + paymentSettlementsMap.keySet().size());
-
 
816
		logger.info("Unsettled Orders Count: " + unsettledOrders.size());
740
		
817
		
741
		ByteArrayOutputStream baosXLS = new ByteArrayOutputStream();
818
		ByteArrayOutputStream baosXLS = new ByteArrayOutputStream();
742
		
819
		
743
	    Workbook wb = new HSSFWorkbook();
820
	    Workbook wb = new HSSFWorkbook();
744
		
821
		
Line 749... Line 826...
749
	    boldStyle.setFont(font);
826
	    boldStyle.setFont(font);
750
	    
827
	    
751
	    CellStyle rightAlignStyle = wb.createCellStyle();
828
	    CellStyle rightAlignStyle = wb.createCellStyle();
752
	    rightAlignStyle.setAlignment(CellStyle.ALIGN_RIGHT);
829
	    rightAlignStyle.setAlignment(CellStyle.ALIGN_RIGHT);
753
 
830
 
754
		Sheet orderSheet = wb.createSheet("Orders");
831
		Sheet orderSheet = wb.createSheet("Settled Orders");
-
 
832
		Sheet unsettledOrderSheet = wb.createSheet("Unsettled Orders");
755
		Sheet reshippedOrderSheet = wb.createSheet("Reshipped");
833
		Sheet reshippedOrderSheet = wb.createSheet("Reshipped");
756
		Sheet mismatchSheet = wb.createSheet("Mismatches");
834
//		Sheet mismatchSheet = wb.createSheet("Mismatches");
757
		
835
		
758
	    populateOrderSheet(paymentSettlements, refundPaymentSettlements, vendorId, orderSheet, boldStyle, rightAlignStyle);
836
	    populateOrderSheet(vendorId, orderSheet, boldStyle, rightAlignStyle);
-
 
837
		populateUnsettledOrderSheet(unsettledOrderSheet);
759
//	    populateReshippedOrderSheet(reshippedOrders, reshippedOrderSheet);
838
	    populateReshippedOrderSheet(reshippedOrders, reshippedOrderSheet);
760
//	    populateMismatchSheet(mismatchSheet);
839
//	    populateMismatchSheet(mismatchSheet);
761
    	
840
    	
762
		// Write the workbook to the output stream
841
		// Write the workbook to the output stream
763
		try {
842
		try {
764
			wb.write(baosXLS);
843
			wb.write(baosXLS);
765
			baosXLS.close();
844
			baosXLS.close();
766
		} catch (IOException e) {
845
		} catch (IOException e) {
767
			logger.error("Unable to write the hotspot reconciliation report to the byte array", e);
846
			logger.error("Unable to write the hotspot reconciliation report to the byte array", e);
768
		}		
847
		}
769
		return baosXLS;
848
		return baosXLS;
770
	}
849
	}
771
	
850
	
772
	private void populateMismatchSheet(Sheet sheet)	{
851
	private void populateMismatchSheet(Sheet sheet)	{
773
	    int serialNo = 0;
852
	    int serialNo = 0;
Line 824... Line 903...
824
	    headerRow.createCell(OrderReportColumn.PAYMENT_STATUS.getValue()).setCellValue("Payment Status");
903
	    headerRow.createCell(OrderReportColumn.PAYMENT_STATUS.getValue()).setCellValue("Payment Status");
825
	    headerRow.createCell(OrderReportColumn.PAYMENT_ID.getValue()).setCellValue("Payment Id");
904
	    headerRow.createCell(OrderReportColumn.PAYMENT_ID.getValue()).setCellValue("Payment Id");
826
	    headerRow.createCell(OrderReportColumn.COUPON_CODE.getValue()).setCellValue("Coupon Code");
905
	    headerRow.createCell(OrderReportColumn.COUPON_CODE.getValue()).setCellValue("Coupon Code");
827
//	    headerRow.createCell(OrderReportColumn.COUPON_CATEGORY.getValue()).setCellValue("Coupon Category");
906
//	    headerRow.createCell(OrderReportColumn.COUPON_CATEGORY.getValue()).setCellValue("Coupon Category");
828
//	    headerRow.createCell(OrderReportColumn.DISCOUNT.getValue()).setCellValue("Discount");
907
//	    headerRow.createCell(OrderReportColumn.DISCOUNT.getValue()).setCellValue("Discount");
829
	    headerRow.createCell(OrderReportColumn.SERVICE_TAX.getValue()).setCellValue("Service Tax");
-
 
830
	    headerRow.createCell(OrderReportColumn.OTHER_CHARGES.getValue()).setCellValue("Other Charges");
-
 
831
	    headerRow.createCell(OrderReportColumn.NET_COLLECTION.getValue()).setCellValue("Net Collection");
-
 
832
	    
908
	    
833
	    sheet.createRow(serialNo ++);
909
	    sheet.createRow(serialNo ++);
834
	    
910
	    
835
		TransactionClient tsc;
911
		TransactionClient tsc;
836
    	PaymentClient psc;
912
    	PaymentClient psc;
Line 886... Line 962...
886
			    Transaction txn = transactionClient.getTransaction(order.getTransactionId());
962
			    Transaction txn = transactionClient.getTransaction(order.getTransactionId());
887
			    PaymentSettlement paymentSettlement = null;
963
			    PaymentSettlement paymentSettlement = null;
888
			    String paymentType = null;
964
			    String paymentType = null;
889
			    
965
			    
890
			    if(payment != null)	{
966
			    if(payment != null)	{
891
			    	paymentSettlement = transactionClient.getSettlementForPaymentId(payment.getPaymentId());
967
//			    	paymentSettlement = transactionClient.getSettlementForPaymentId(payment.getPaymentId());
892
			    	paymentType = paymentGateways.get(payment.getGatewayId());
968
//			    	paymentType = paymentGateways.get(payment.getGatewayId());
893
			    }
969
			    }
894
			    
970
			    
895
	            double totalSellingPrice = lineItem.getTotal_price();
971
	            double totalSellingPrice = lineItem.getTotal_price();
896
	            double serviceTax = 0.0;
972
	            double serviceTax = 0.0;
897
	            double otherCollectionCharges = 0.0;
973
	            double otherCollectionCharges = 0.0;
Line 931... Line 1007...
931
		    	} else	{
1007
		    	} else	{
932
			    	contentRow.createCell(OrderReportColumn.PAYMENT_TYPE.getValue()).setCellValue(paymentType);
1008
			    	contentRow.createCell(OrderReportColumn.PAYMENT_TYPE.getValue()).setCellValue(paymentType);
933
		    	}
1009
		    	}
934
		    	
1010
		    	
935
			    if (payment != null)	{
1011
			    if (payment != null)	{
936
				    contentRow.createCell(OrderReportColumn.SETTLEMENT_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(paymentSettlement.getSettlementDate())));
1012
//				    contentRow.createCell(OrderReportColumn.SETTLEMENT_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(paymentSettlement.getSettlementDate())));
937
			    	contentRow.createCell(OrderReportColumn.PAYMENT_STATUS.getValue()).setCellValue(payment.getStatus().name());
1013
//			    	contentRow.createCell(OrderReportColumn.PAYMENT_STATUS.getValue()).setCellValue(payment.getStatus().name());
938
			    	contentRow.createCell(OrderReportColumn.PAYMENT_ID.getValue()).setCellValue(payment.getPaymentId());
1014
//			    	contentRow.createCell(OrderReportColumn.PAYMENT_ID.getValue()).setCellValue(payment.getPaymentId());
939
			    }
1015
			    }
940
			    contentRow.createCell(OrderReportColumn.COUPON_CODE.getValue()).setCellValue(txn.getCoupon_code());
1016
			    contentRow.createCell(OrderReportColumn.COUPON_CODE.getValue()).setCellValue(txn.getCoupon_code());
941
			    contentRow.createCell(OrderReportColumn.SERVICE_TAX.getValue()).setCellValue(serviceTax);
-
 
942
			    contentRow.createCell(OrderReportColumn.OTHER_CHARGES.getValue()).setCellValue(otherCollectionCharges);
-
 
943
			    contentRow.createCell(OrderReportColumn.NET_COLLECTION.getValue()).setCellValue(netCollection);
-
 
944
			}
1017
			}
945
			
1018
			
946
		    logger.info("Order Ids where no successful payment was found: " + orderIdsWithoutSuccess.size());
1019
		    logger.info("Order Ids where no successful payment was found: " + orderIdsWithoutSuccess.size());
947
		    logger.info(orderIdsWithoutSuccess.toString());
1020
		    logger.info(orderIdsWithoutSuccess.toString());
948
		    
1021
		    
Line 960... Line 1033...
960
			addActionError("Error loading list of COD providers");
1033
			addActionError("Error loading list of COD providers");
961
			logger.error("Logistics Service Exception " + e);
1034
			logger.error("Logistics Service Exception " + e);
962
		}
1035
		}
963
	}
1036
	}
964
	
1037
	
-
 
1038
	private void populateUnsettledOrderSheet(Sheet sheet)	{
-
 
1039
		rowCount = 0;
-
 
1040
		
-
 
1041
	    Row headerRow = sheet.createRow(rowCount ++);
-
 
1042
	    headerRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue("Order Id");
-
 
1043
	    headerRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue("Order Date");
-
 
1044
	    headerRow.createCell(OrderReportColumn.BILLING_NUMBER.getValue()).setCellValue("Billing Number");
-
 
1045
	    headerRow.createCell(OrderReportColumn.BILLING_DATE.getValue()).setCellValue("Billing Date");
-
 
1046
	    headerRow.createCell(OrderReportColumn.DELIVERY_DATE.getValue()).setCellValue("Delivery Date");
-
 
1047
	    headerRow.createCell(OrderReportColumn.SETTLEMENT_DATE.getValue()).setCellValue("Settlement Date");
-
 
1048
	    headerRow.createCell(OrderReportColumn.BRAND.getValue()).setCellValue("Brand");
-
 
1049
	    headerRow.createCell(OrderReportColumn.MODEL_NAME.getValue()).setCellValue("Model Name");
-
 
1050
	    headerRow.createCell(OrderReportColumn.MODEL_NUMBER.getValue()).setCellValue("Model Number");
-
 
1051
	    headerRow.createCell(OrderReportColumn.COLOR.getValue()).setCellValue("Color");
-
 
1052
	    headerRow.createCell(OrderReportColumn.QUANTITY.getValue()).setCellValue("Quantity");
-
 
1053
	    headerRow.createCell(OrderReportColumn.UNIT_TRANSFER_PRICE.getValue()).setCellValue("Unit Transfer Price");
-
 
1054
	    headerRow.createCell(OrderReportColumn.UNIT_SELLING_PRICE.getValue()).setCellValue("Unit Selling Price");
-
 
1055
	    headerRow.createCell(OrderReportColumn.TOTAL_TRANSFER_PRICE.getValue()).setCellValue("Total Transfer Price");
-
 
1056
	    headerRow.createCell(OrderReportColumn.TOTAL_SELLING_PRICE.getValue()).setCellValue("Total Selling Price");
-
 
1057
	    headerRow.createCell(OrderReportColumn.CURRENT_STATUS.getValue()).setCellValue("Current Status");
-
 
1058
	    headerRow.createCell(OrderReportColumn.PAYMENT_TYPE.getValue()).setCellValue("Payment Type");
-
 
1059
	    headerRow.createCell(OrderReportColumn.PAYMENT_STATUS.getValue()).setCellValue("Payment Status");
-
 
1060
	    headerRow.createCell(OrderReportColumn.PAYMENT_ID.getValue()).setCellValue("Payment Id");
-
 
1061
	    headerRow.createCell(OrderReportColumn.COUPON_CODE.getValue()).setCellValue("Coupon Code");
-
 
1062
	    
-
 
1063
	    sheet.createRow(rowCount ++);
-
 
1064
 
-
 
1065
    	PaymentClient psc;
-
 
1066
    	logger.info("unsettledOrders count: " + unsettledOrders.size());
-
 
1067
    	
-
 
1068
    	try	{
-
 
1069
			psc = new PaymentClient();
-
 
1070
	    	in.shop2020.payments.PaymentService.Client paymentClient = psc.getClient();
-
 
1071
			
-
 
1072
			for (Order order: unsettledOrders)	{
-
 
1073
				Row contentRow = sheet.createRow(rowCount ++);
-
 
1074
				LineItem lineItem = order.getLineitems().get(0);
-
 
1075
				Payment pmt = null;
-
 
1076
				
-
 
1077
				if(order.isCod())	{
-
 
1078
					pmt = paymentClient.getPaymentForTxnId(order.getTransactionId()).get(0);
-
 
1079
				} else	{
-
 
1080
					pmt = paymentClient.getSuccessfulPaymentForTxnId(order.getTransactionId());
-
 
1081
				}
-
 
1082
		    	
-
 
1083
		        contentRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue(order.getId());
-
 
1084
		        contentRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getCreated_timestamp())));
-
 
1085
			    contentRow.createCell(OrderReportColumn.BILLING_NUMBER.getValue()).setCellValue(order.getInvoice_number());
-
 
1086
			    contentRow.createCell(OrderReportColumn.BILLING_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getBilling_timestamp())));
-
 
1087
			    contentRow.createCell(OrderReportColumn.DELIVERY_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getDelivery_timestamp())));
-
 
1088
			    contentRow.createCell(OrderReportColumn.BRAND.getValue()).setCellValue(getValueForEmptyString(lineItem.getBrand()));
-
 
1089
			    contentRow.createCell(OrderReportColumn.MODEL_NAME.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_name()));
-
 
1090
			    contentRow.createCell(OrderReportColumn.MODEL_NUMBER.getValue()).setCellValue(getValueForEmptyString(lineItem.getModel_number()));
-
 
1091
			    contentRow.createCell(OrderReportColumn.COLOR.getValue()).setCellValue(getValueForEmptyString(lineItem.getColor()));
-
 
1092
			    contentRow.createCell(OrderReportColumn.QUANTITY.getValue()).setCellValue(lineItem.getQuantity());
-
 
1093
			    contentRow.createCell(OrderReportColumn.UNIT_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price());
-
 
1094
			    contentRow.createCell(OrderReportColumn.UNIT_SELLING_PRICE.getValue()).setCellValue(lineItem.getUnit_price());
-
 
1095
			    contentRow.createCell(OrderReportColumn.TOTAL_TRANSFER_PRICE.getValue()).setCellValue(lineItem.getTransfer_price() * lineItem.getQuantity());
-
 
1096
			    contentRow.createCell(OrderReportColumn.TOTAL_SELLING_PRICE.getValue()).setCellValue(lineItem.getTotal_price());
-
 
1097
			    contentRow.createCell(OrderReportColumn.CURRENT_STATUS.getValue()).setCellValue(order.getStatusDescription());
-
 
1098
			    
-
 
1099
			    if(pmt.getGatewayId() == 4)	{
-
 
1100
			    	contentRow.createCell(OrderReportColumn.PAYMENT_TYPE.getValue()).setCellValue("COD-" + codProviders.get(order.getLogistics_provider_id()));
-
 
1101
			    } else	{
-
 
1102
			    	contentRow.createCell(OrderReportColumn.PAYMENT_TYPE.getValue()).setCellValue(paymentGateways.get(pmt.getGatewayId()));
-
 
1103
			    }
-
 
1104
		    	contentRow.createCell(OrderReportColumn.PAYMENT_STATUS.getValue()).setCellValue(pmt.getStatus().name());
-
 
1105
		    	contentRow.createCell(OrderReportColumn.PAYMENT_ID.getValue()).setCellValue(pmt.getPaymentId());
-
 
1106
	    	}
-
 
1107
	    } catch (Exception e) {
-
 
1108
			e.printStackTrace();
-
 
1109
		}
-
 
1110
	}
-
 
1111
	
965
	private void populateOrderSheet(List<PaymentSettlement> paymentSettlements, List<PaymentSettlement> refundSettlements, long vendorId, Sheet sheet, CellStyle style, CellStyle rightAlignStyle) {
1112
	private void populateOrderSheet(long vendorId, Sheet sheet, CellStyle style, CellStyle rightAlignStyle) {
966
		
1113
		
967
	    // Create the title row and put all the titles in it. Rows are 0 based
1114
	    // Create the title row and put all the titles in it. Rows are 0 based
968
	    Row titleRow = sheet.createRow(rowCount ++);
1115
	    Row titleRow = sheet.createRow(rowCount ++);
969
	    Cell titleCell = titleRow.createCell(0);
1116
	    Cell titleCell = titleRow.createCell(0);
970
	    titleCell.setCellValue("Order Reconciliation Report");
1117
	    titleCell.setCellValue("Order Reconciliation Report");
Line 1006... Line 1153...
1006
    	LogisticsClient lsc;
1153
    	LogisticsClient lsc;
1007
    	
1154
    	
1008
		try {
1155
		try {
1009
			tsc = new TransactionClient();
1156
			tsc = new TransactionClient();
1010
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
1157
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();
1011
 
1158
			
1012
	    	lsc = new LogisticsClient();
1159
	    	lsc = new LogisticsClient();
1013
	    	in.shop2020.logistics.LogisticsService.Client logisticsClient = lsc.getClient();
1160
	    	in.shop2020.logistics.LogisticsService.Client logisticsClient = lsc.getClient();
1014
 
1161
	    	
1015
			psc = new PaymentClient();
1162
			psc = new PaymentClient();
1016
	    	in.shop2020.payments.PaymentService.Client paymentClient = psc.getClient();
1163
	    	in.shop2020.payments.PaymentService.Client paymentClient = psc.getClient();
1017
	    	
1164
	    	
1018
	    	List<PaymentGateway> tPaymentGateways = paymentClient.getActivePaymentGateways();
1165
	    	List<PaymentGateway> tPaymentGateways = paymentClient.getActivePaymentGateways();
1019
	    	
1166
	    	
Line 1042... Line 1189...
1042
	    			this.settlement = settlement;
1189
	    			this.settlement = settlement;
1043
	    			this.payment = pmt;
1190
	    			this.payment = pmt;
1044
	    			this.transaction = txn;
1191
	    			this.transaction = txn;
1045
	    		}
1192
	    		}
1046
	    	}
1193
	    	}
1047
 
-
 
1048
	    	List<Long> allOrderIds = new ArrayList<Long>();
-
 
1049
	    	Map<Long, PaymentSettlementMap> referenceMap = new HashMap<Long, PaymentSettlementMap>();
-
 
1050
	    	
-
 
1051
	    	for (PaymentSettlement paymentSettlement: paymentSettlements)	{
-
 
1052
	    		try {
-
 
1053
    				if(paymentSettlement.getPaymentGatewayId() == 4)	{	// If COD
-
 
1054
	    				Order order = transactionClient.getOrder(paymentSettlement.getReferenceId());
-
 
1055
	    				Transaction txn = transactionClient.getTransaction(order.getTransactionId());
-
 
1056
	    				Payment payment = paymentClient.getPaymentForTxnId(txn.getId()).get(0);
-
 
1057
	    				
-
 
1058
		    			if (order.getVendorId() == vendorId)	{
-
 
1059
		    				allOrderIds.add(order.getId());
-
 
1060
		    			}
-
 
1061
					
-
 
1062
    				} else	{	// If prepaid
-
 
1063
    					Payment payment = paymentClient.getPayment(paymentSettlement.getReferenceId());
-
 
1064
    					Transaction txn = transactionClient.getTransaction(payment.getMerchantTxnId());
-
 
1065
    					
-
 
1066
    					for (Order order: txn.getOrders())	{
-
 
1067
    						allOrderIds.add(order.getId());
-
 
1068
    					}
-
 
1069
    				}
-
 
1070
    			} catch (TransactionServiceException e) {
-
 
1071
					logger.error("TransactionServiceException " + e);
-
 
1072
				} catch (TException e) {
-
 
1073
					logger.error("TException " + e);
-
 
1074
				} catch (PaymentException e) {
-
 
1075
					logger.error("PaymentException " + e);
-
 
1076
				}
-
 
1077
	    	}
-
 
1078
	    	
1194
	    	
1079
	    	for (PaymentSettlement paymentSettlement: paymentSettlements)	{
1195
	    	for (PaymentSettlement paymentSettlement: paymentSettlementsMap.values())	{
1080
 
1196
 
1081
    			try {
1197
    			try {
1082
    				if(paymentSettlement.getPaymentGatewayId() == 4)	{	// If COD
1198
    				if(paymentSettlement.getPaymentGatewayId() == 4)	{	// If COD
1083
	    				Order order = transactionClient.getOrder(paymentSettlement.getReferenceId());
1199
	    				Order order = transactionClient.getOrder(paymentSettlement.getReferenceId());
1084
	    				Transaction txn = transactionClient.getTransaction(order.getTransactionId());
1200
	    				Transaction txn = transactionClient.getTransaction(order.getTransactionId());
Line 1086... Line 1202...
1086
	    				
1202
	    				
1087
		    			if (order.getVendorId() == vendorId)	{
1203
		    			if (order.getVendorId() == vendorId)	{
1088
					    	Row contentRow = sheet.createRow(rowCount ++);
1204
					    	Row contentRow = sheet.createRow(rowCount ++);
1089
					    	outputCODRow(contentRow, paymentSettlement, order, txn, payment);
1205
					    	outputCODRow(contentRow, paymentSettlement, order, txn, payment);
1090
		    			}
1206
		    			}
1091
					
-
 
1092
    				} else	{	// If prepaid
1207
    				} else	{	// If prepaid
-
 
1208
    					logger.info("ReferenceId: " + paymentSettlement.getReferenceId());
1093
    					Payment payment = paymentClient.getPayment(paymentSettlement.getReferenceId());
1209
    					Payment payment = paymentClient.getPayment(paymentSettlement.getReferenceId());
1094
    					Transaction txn = transactionClient.getTransaction(payment.getMerchantTxnId());
1210
    					Transaction txn = transactionClient.getTransaction(payment.getMerchantTxnId());
1095
    					
1211
    					
1096
    					outputPrepaidTransactionRows(sheet, vendorId, paymentSettlement, txn, payment);
1212
    					outputPrepaidTransactionRows(sheet, vendorId, paymentSettlement, txn, payment);
1097
    				}
1213
    				}
1098
    			} catch (TransactionServiceException e) {
1214
    			} catch (TransactionServiceException e) {
1099
					logger.error("TransactionServiceException " + e);
1215
					logger.error("TransactionServiceException " + e);
1100
				} catch (TException e) {
1216
				} catch (TException e) {
1101
					logger.error("TException " + e);
1217
					e.printStackTrace();
1102
				} catch (PaymentException e) {
1218
				} catch (PaymentException e) {
1103
					logger.error("PaymentException " + e);
1219
					logger.error("PaymentException " + e);
1104
				}
1220
				}
1105
	    	}
1221
	    	}
1106
	    	
-
 
1107
	    	rowCount ++;
1222
	    	rowCount ++;
1108
	    	
1223
	    	
-
 
1224
	    	logger.info("Refunded Order Count: " + refundedOrders.size());
-
 
1225
	    	
1109
	    	for (PaymentSettlement paymentSettlement: refundSettlements)	{
1226
	    	for (Order order: refundedOrders)	{
1110
	    		try {
1227
	    		try {
-
 
1228
					Transaction txn = transactionClient.getTransaction(order.getTransactionId());
1111
	    			Payment payment = paymentClient.getPayment(paymentSettlement.getReferenceId());
1229
	    			Payment payment = paymentClient.getSuccessfulPaymentForTxnId(txn.getId());
1112
					Transaction txn = transactionClient.getTransaction(payment.getMerchantTxnId());
1230
	    			PaymentSettlement paymentSettlement = transactionClient.getSettlementForReferenceId(payment.getPaymentId(), true);
1113
					
1231
					
1114
					outputRefundRows(sheet, vendorId, paymentSettlement, txn, payment);
1232
					outputRefundRows(sheet, vendorId, paymentSettlement, txn, payment);
1115
    			} catch (TransactionServiceException e) {
1233
    			} catch (TransactionServiceException e) {
1116
					logger.error("TransactionServiceException " + e);
1234
					logger.error("TransactionServiceException " + e);
1117
				} catch (TException e) {
1235
				} catch (TException e) {
1118
					logger.error("TException " + e);
1236
					logger.error("TException " + e);
1119
				} catch (PaymentException e) {
1237
				} catch (PaymentException e) {
1120
					logger.error("PaymentException " + e);
1238
					logger.error("PaymentException " + e);
1121
				}
1239
				}
1122
	    	}
1240
	    	}
-
 
1241
//	    	for (PaymentSettlement paymentSettlement: refundSettlements)	{
-
 
1242
//	    		try {
-
 
1243
//	    			Payment payment = paymentClient.getPayment(paymentSettlement.getReferenceId());
-
 
1244
//					Transaction txn = transactionClient.getTransaction(payment.getMerchantTxnId());
-
 
1245
//					
-
 
1246
//					outputRefundRows(sheet, vendorId, paymentSettlement, txn, payment);
-
 
1247
//    			} catch (TransactionServiceException e) {
-
 
1248
//					logger.error("TransactionServiceException " + e);
-
 
1249
//				} catch (TException e) {
-
 
1250
//					logger.error("TException " + e);
-
 
1251
//				} catch (PaymentException e) {
-
 
1252
//					logger.error("PaymentException " + e);
-
 
1253
//				}
-
 
1254
//	    	}
1123
		} catch (TTransportException e) {
1255
		} catch (TTransportException e) {
1124
			logger.error("TTransportException", e);
1256
			logger.error("TTransportException", e);
1125
		} catch (LogisticsServiceException e) {
1257
		} catch (LogisticsServiceException e) {
1126
			logger.error("LogisticsServiceException" + e);
1258
			logger.error("LogisticsServiceException" + e);
1127
		} catch (TException e) {
1259
		} catch (TException e) {
Line 1130... Line 1262...
1130
			logger.error("PaymentException" + e);
1262
			logger.error("PaymentException" + e);
1131
		}
1263
		}
1132
	}
1264
	}
1133
	
1265
	
1134
	private void outputRefundRows(Sheet sheet, long vendorId, PaymentSettlement paymentSettlement, Transaction txn, Payment payment)	{
1266
	private void outputRefundRows(Sheet sheet, long vendorId, PaymentSettlement paymentSettlement, Transaction txn, Payment payment)	{
1135
		logger.info("Printing orders for pmt Id, " + payment.getPaymentId());
1267
		logger.info("Printing Refunded orders for pmt Id, " + payment.getPaymentId());
1136
		
1268
		
1137
		boolean isFirstOrderForTransaction = true;
1269
		boolean isFirstOrderForTransaction = true;
1138
		
1270
		
1139
		for (Order order: txn.getOrders())	{
1271
		for (Order order: txn.getOrders())	{
1140
			if(order.getVendorId() == vendorId && refundOrderStatuses.contains(order.getStatus()))	{
1272
			if(order.getVendorId() == vendorId && refundOrderStatuses.contains(order.getStatus()))	{
Line 1176... Line 1308...
1176
		logger.info("Printing orders for pmt Id, " + payment.getPaymentId());
1308
		logger.info("Printing orders for pmt Id, " + payment.getPaymentId());
1177
		
1309
		
1178
		boolean isFirstOrderForTransaction = true;
1310
		boolean isFirstOrderForTransaction = true;
1179
		
1311
		
1180
		for (Order order: txn.getOrders())	{
1312
		for (Order order: txn.getOrders())	{
1181
			if(order.getVendorId() == vendorId)	{
1313
			if(order.getVendorId() == vendorId && ! order.isVendorPaid())	{
-
 
1314
				
-
 
1315
				if(refundOrderStatuses.contains(order.getStatus()))	{
-
 
1316
					
-
 
1317
					refundedOrders.add(order);
-
 
1318
				}
1182
		    	Row contentRow = sheet.createRow(rowCount ++);
1319
		    	Row contentRow = sheet.createRow(rowCount ++);
1183
		    	LineItem lineItem = order.getLineitems().get(0);
1320
		    	LineItem lineItem = order.getLineitems().get(0);
1184
				
1321
				
1185
		        contentRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue(order.getId());
1322
		        contentRow.createCell(OrderReportColumn.ORDER_ID.getValue()).setCellValue(order.getId());
1186
		        contentRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getCreated_timestamp())));
1323
		        contentRow.createCell(OrderReportColumn.ORDER_DATE.getValue()).setCellValue(DATE_FORMAT.format(new Date(order.getCreated_timestamp())));