Subversion Repositories SmartDukaan

Rev

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

Rev 29707 Rev 30148
Line 1... Line 1...
1
package com.spice.profitmandi.web.controller;
1
package com.spice.profitmandi.web.controller;
2
 
2
 
3
import java.io.ByteArrayInputStream;
-
 
4
import java.io.ByteArrayOutputStream;
-
 
5
import java.io.InputStream;
-
 
6
import java.time.LocalDate;
-
 
7
import java.time.LocalDateTime;
-
 
8
import java.time.format.DateTimeFormatter;
-
 
9
import java.time.temporal.ChronoUnit;
-
 
10
import java.util.ArrayList;
-
 
11
import java.util.Arrays;
-
 
12
import java.util.HashMap;
-
 
13
import java.util.HashSet;
-
 
14
import java.util.List;
-
 
15
import java.util.Map;
-
 
16
import java.util.Set;
-
 
17
import java.util.stream.Collectors;
-
 
18
 
-
 
19
import javax.servlet.http.HttpServletRequest;
-
 
20
import javax.servlet.http.HttpServletResponse;
-
 
21
 
-
 
22
import org.apache.logging.log4j.LogManager;
-
 
23
import org.apache.logging.log4j.Logger;
-
 
24
import org.json.JSONObject;
-
 
25
import org.springframework.beans.factory.annotation.Autowired;
-
 
26
import org.springframework.core.io.InputStreamResource;
-
 
27
import org.springframework.http.HttpHeaders;
-
 
28
import org.springframework.http.HttpStatus;
-
 
29
import org.springframework.http.MediaType;
-
 
30
import org.springframework.http.ResponseEntity;
-
 
31
import org.springframework.stereotype.Controller;
-
 
32
import org.springframework.transaction.annotation.Transactional;
-
 
33
import org.springframework.ui.Model;
-
 
34
import org.springframework.web.bind.annotation.GetMapping;
-
 
35
import org.springframework.web.bind.annotation.PathVariable;
-
 
36
import org.springframework.web.bind.annotation.PutMapping;
-
 
37
import org.springframework.web.bind.annotation.RequestBody;
-
 
38
import org.springframework.web.bind.annotation.RequestMapping;
-
 
39
import org.springframework.web.bind.annotation.RequestMethod;
-
 
40
import org.springframework.web.bind.annotation.RequestParam;
-
 
41
 
-
 
42
import com.google.gson.Gson;
3
import com.google.gson.Gson;
43
import com.spice.profitmandi.common.enumuration.SearchType;
4
import com.spice.profitmandi.common.enumuration.SearchType;
44
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
5
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
45
import com.spice.profitmandi.common.model.CartFofo;
6
import com.spice.profitmandi.common.model.*;
46
import com.spice.profitmandi.common.model.CreateOrderRequest;
-
 
47
import com.spice.profitmandi.common.model.CreditNotePdfModel;
-
 
48
import com.spice.profitmandi.common.model.CustomCustomer;
-
 
49
import com.spice.profitmandi.common.model.CustomRetailer;
-
 
50
import com.spice.profitmandi.common.model.FofoItemIdAmountModel;
-
 
51
import com.spice.profitmandi.common.model.FoiBadReturnRequest;
-
 
52
import com.spice.profitmandi.common.model.PartnerOptionsAndItemAmountModel;
-
 
53
import com.spice.profitmandi.common.model.PaymentOptionTransactionModel;
-
 
54
import com.spice.profitmandi.common.model.PdfModel;
-
 
55
import com.spice.profitmandi.common.model.PriceModel;
-
 
56
import com.spice.profitmandi.common.model.ProfitMandiConstants;
-
 
57
import com.spice.profitmandi.common.solr.SolrService;
7
import com.spice.profitmandi.common.solr.SolrService;
58
import com.spice.profitmandi.common.util.PdfUtils;
8
import com.spice.profitmandi.common.util.PdfUtils;
59
import com.spice.profitmandi.common.util.StringUtils;
9
import com.spice.profitmandi.common.util.StringUtils;
60
import com.spice.profitmandi.common.web.util.ResponseSender;
10
import com.spice.profitmandi.common.web.util.ResponseSender;
61
import com.spice.profitmandi.dao.entity.catalog.Item;
11
import com.spice.profitmandi.dao.entity.catalog.Item;
62
import com.spice.profitmandi.dao.entity.catalog.TagListing;
12
import com.spice.profitmandi.dao.entity.catalog.TagListing;
63
import com.spice.profitmandi.dao.entity.dtr.InsurancePolicy;
13
import com.spice.profitmandi.dao.entity.dtr.InsurancePolicy;
64
import com.spice.profitmandi.dao.entity.dtr.InsuranceProvider;
14
import com.spice.profitmandi.dao.entity.dtr.InsuranceProvider;
65
import com.spice.profitmandi.dao.entity.dtr.PaymentOptionTransaction;
15
import com.spice.profitmandi.dao.entity.dtr.PaymentOptionTransaction;
66
import com.spice.profitmandi.dao.entity.fofo.CurrentInventorySnapshot;
-
 
67
import com.spice.profitmandi.dao.entity.fofo.Customer;
-
 
68
import com.spice.profitmandi.dao.entity.fofo.CustomerAddress;
-
 
69
import com.spice.profitmandi.dao.entity.fofo.CustomerCreditNote;
-
 
70
import com.spice.profitmandi.dao.entity.fofo.CustomerReturnItem;
-
 
71
import com.spice.profitmandi.dao.entity.fofo.FofoLineItem;
-
 
72
import com.spice.profitmandi.dao.entity.fofo.FofoOrder;
-
 
73
import com.spice.profitmandi.dao.entity.fofo.FofoOrderItem;
-
 
74
import com.spice.profitmandi.dao.entity.fofo.Mou;
16
import com.spice.profitmandi.dao.entity.fofo.*;
75
import com.spice.profitmandi.dao.entity.fofo.PaymentOption;
-
 
76
import com.spice.profitmandi.dao.entity.fofo.PendingOrder;
-
 
77
import com.spice.profitmandi.dao.entity.fofo.PendingOrderItem;
-
 
78
import com.spice.profitmandi.dao.entity.user.Address;
17
import com.spice.profitmandi.dao.entity.user.Address;
79
import com.spice.profitmandi.dao.enumuration.dtr.PaymentOptionReferenceType;
18
import com.spice.profitmandi.dao.enumuration.dtr.PaymentOptionReferenceType;
80
import com.spice.profitmandi.dao.enumuration.transaction.OrderStatus;
19
import com.spice.profitmandi.dao.enumuration.transaction.OrderStatus;
81
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
20
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
82
import com.spice.profitmandi.dao.repository.catalog.TagListingRepository;
21
import com.spice.profitmandi.dao.repository.catalog.TagListingRepository;
83
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
22
import com.spice.profitmandi.dao.repository.dtr.*;
84
import com.spice.profitmandi.dao.repository.dtr.InsurancePolicyRepository;
-
 
85
import com.spice.profitmandi.dao.repository.dtr.InsuranceProviderRepository;
-
 
86
import com.spice.profitmandi.dao.repository.dtr.PaymentOptionTransactionRepository;
-
 
87
import com.spice.profitmandi.dao.repository.dtr.RetailerRegisteredAddressRepository;
-
 
88
import com.spice.profitmandi.dao.repository.fofo.CurrentInventorySnapshotRepository;
-
 
89
import com.spice.profitmandi.dao.repository.fofo.CustomerAddressRepository;
-
 
90
import com.spice.profitmandi.dao.repository.fofo.CustomerRepository;
-
 
91
import com.spice.profitmandi.dao.repository.fofo.CustomerReturnItemRepository;
-
 
92
import com.spice.profitmandi.dao.repository.fofo.FofoOrderItemRepository;
-
 
93
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
-
 
94
import com.spice.profitmandi.dao.repository.fofo.FofoPartnerPaymentOptionRepository;
-
 
95
import com.spice.profitmandi.dao.repository.fofo.MouRepository;
23
import com.spice.profitmandi.dao.repository.fofo.*;
96
import com.spice.profitmandi.dao.repository.fofo.PaymentOptionRepository;
-
 
97
import com.spice.profitmandi.dao.repository.fofo.PendingOrderItemRepository;
-
 
98
import com.spice.profitmandi.dao.repository.fofo.PendingOrderRepository;
-
 
99
import com.spice.profitmandi.dao.repository.fofo.PendingOrderService;
-
 
100
import com.spice.profitmandi.dao.repository.inventory.StateRepository;
24
import com.spice.profitmandi.dao.repository.inventory.StateRepository;
101
import com.spice.profitmandi.dao.repository.user.AddressRepository;
25
import com.spice.profitmandi.dao.repository.user.AddressRepository;
102
import com.spice.profitmandi.service.EmailService;
26
import com.spice.profitmandi.service.EmailService;
103
import com.spice.profitmandi.service.authentication.RoleManager;
27
import com.spice.profitmandi.service.authentication.RoleManager;
104
import com.spice.profitmandi.service.integrations.zest.InsuranceService;
28
import com.spice.profitmandi.service.integrations.zest.InsuranceService;
Line 107... Line 31...
107
import com.spice.profitmandi.service.pricing.PricingService;
31
import com.spice.profitmandi.service.pricing.PricingService;
108
import com.spice.profitmandi.service.user.RetailerService;
32
import com.spice.profitmandi.service.user.RetailerService;
109
import com.spice.profitmandi.web.model.LoginDetails;
33
import com.spice.profitmandi.web.model.LoginDetails;
110
import com.spice.profitmandi.web.util.CookiesProcessor;
34
import com.spice.profitmandi.web.util.CookiesProcessor;
111
import com.spice.profitmandi.web.util.MVCResponseSender;
35
import com.spice.profitmandi.web.util.MVCResponseSender;
-
 
36
import org.apache.logging.log4j.LogManager;
-
 
37
import org.apache.logging.log4j.Logger;
-
 
38
import org.json.JSONObject;
-
 
39
import org.springframework.beans.factory.annotation.Autowired;
-
 
40
import org.springframework.core.io.InputStreamResource;
-
 
41
import org.springframework.http.HttpHeaders;
-
 
42
import org.springframework.http.HttpStatus;
-
 
43
import org.springframework.http.MediaType;
-
 
44
import org.springframework.http.ResponseEntity;
-
 
45
import org.springframework.stereotype.Controller;
-
 
46
import org.springframework.transaction.annotation.Transactional;
-
 
47
import org.springframework.ui.Model;
-
 
48
import org.springframework.web.bind.annotation.*;
-
 
49
 
-
 
50
import javax.servlet.http.HttpServletRequest;
-
 
51
import javax.servlet.http.HttpServletResponse;
-
 
52
import java.io.ByteArrayInputStream;
-
 
53
import java.io.ByteArrayOutputStream;
-
 
54
import java.io.InputStream;
-
 
55
import java.time.LocalDate;
-
 
56
import java.time.LocalDateTime;
-
 
57
import java.time.format.DateTimeFormatter;
-
 
58
import java.time.temporal.ChronoUnit;
-
 
59
import java.util.*;
-
 
60
import java.util.stream.Collectors;
112
 
61
 
113
@Controller
62
@Controller
114
@Transactional(rollbackFor = Throwable.class)
63
@Transactional(rollbackFor = Throwable.class)
115
public class OrderController {
64
public class OrderController {
116
 
65
 
Line 178... Line 127...
178
 
127
 
179
	@Autowired
128
	@Autowired
180
	private AddressRepository addressRepository;
129
	private AddressRepository addressRepository;
181
 
130
 
182
	@Autowired
131
	@Autowired
183
	private PaymentOptionTransactionRepository fofoOrderPaymentOptionRepository;
132
	private PaymentOptionTransactionRepository paymentOptionTransactionRepository;
184
 
133
 
185
	@Autowired
134
	@Autowired
186
	private FofoPartnerPaymentOptionRepository fofoPartnerPaymentOptionRepository;
135
	private FofoPartnerPaymentOptionRepository fofoPartnerPaymentOptionRepository;
187
 
136
 
188
	@Autowired
137
	@Autowired
Line 304... Line 253...
304
		FofoOrder fofoOrder = fofoOrderRepository.selectByFofoIdAndOrderId(fofoDetails.getFofoId(), orderId);
253
		FofoOrder fofoOrder = fofoOrderRepository.selectByFofoIdAndOrderId(fofoDetails.getFofoId(), orderId);
305
		List<FofoOrderItem> fofoLineItems = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
254
		List<FofoOrderItem> fofoLineItems = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
306
		CustomerAddress customerAddress = customerAddressRepository.selectById(fofoOrder.getCustomerAddressId());
255
		CustomerAddress customerAddress = customerAddressRepository.selectById(fofoOrder.getCustomerAddressId());
307
		Customer customer = customerRepository.selectById(fofoOrder.getCustomerId());
256
		Customer customer = customerRepository.selectById(fofoOrder.getCustomerId());
308
		customerAddress.setPhoneNumber(customer.getMobileNumber());
257
		customerAddress.setPhoneNumber(customer.getMobileNumber());
309
		List<PaymentOptionTransaction> paymentOptionTransactions = fofoOrderPaymentOptionRepository
258
		List<PaymentOptionTransaction> paymentOptionTransactions = paymentOptionTransactionRepository
310
				.selectByReferenceIdAndType(fofoOrder.getId(), PaymentOptionReferenceType.ORDER);
259
				.selectByReferenceIdAndType(fofoOrder.getId(), PaymentOptionReferenceType.ORDER);
311
		Map<Integer, PaymentOption> paymentOptionIdPaymentOptionMap = this
260
		Map<Integer, PaymentOption> paymentOptionIdPaymentOptionMap = this
312
				.paymentOptionIdPaymentOptionMap(paymentOptionTransactions);
261
				.paymentOptionIdPaymentOptionMap(paymentOptionTransactions);
313
		List<InsurancePolicy> insurancePolicies = insurancePolicyRepository
262
		List<InsurancePolicy> insurancePolicies = insurancePolicyRepository
314
				.selectByRetailerIdInvoiceNumber(fofoOrder.getFofoId(), fofoOrder.getInvoiceNumber());
263
				.selectByRetailerIdInvoiceNumber(fofoOrder.getFofoId(), fofoOrder.getInvoiceNumber());
Line 357... Line 306...
357
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
306
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
358
		boolean isAdmin = roleManager.isAdmin(fofoDetails.getRoleIds());
307
		boolean isAdmin = roleManager.isAdmin(fofoDetails.getRoleIds());
359
		FofoOrder fofoOrder = fofoOrderRepository.selectByFofoIdAndOrderId(fofoDetails.getFofoId(), orderId);
308
		FofoOrder fofoOrder = fofoOrderRepository.selectByFofoIdAndOrderId(fofoDetails.getFofoId(), orderId);
360
		List<FofoOrderItem> fofoOrderItems = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
309
		List<FofoOrderItem> fofoOrderItems = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
361
		CustomerAddress customerAddress = customerAddressRepository.selectById(fofoOrder.getCustomerAddressId());
310
		CustomerAddress customerAddress = customerAddressRepository.selectById(fofoOrder.getCustomerAddressId());
362
		List<PaymentOptionTransaction> paymentOptionTransactions = fofoOrderPaymentOptionRepository
311
		List<PaymentOptionTransaction> paymentOptionTransactions = paymentOptionTransactionRepository
363
				.selectByReferenceIdAndType(fofoOrder.getId(), PaymentOptionReferenceType.ORDER);
312
				.selectByReferenceIdAndType(fofoOrder.getId(), PaymentOptionReferenceType.ORDER);
364
 
313
 
365
		// Added Migration info as we lost it.
314
		// Added Migration info as we lost it.
366
		if (paymentOptionTransactions == null || paymentOptionTransactions.size() == 0) {
315
		if (paymentOptionTransactions == null || paymentOptionTransactions.size() == 0) {
367
			PaymentOptionTransaction pot = new PaymentOptionTransaction();
316
			PaymentOptionTransaction pot = new PaymentOptionTransaction();
368
			pot.setAmount(fofoOrder.getTotalAmount());
317
			pot.setAmount(fofoOrder.getTotalAmount());
369
			pot.setCreateTimestamp(fofoOrder.getCreateTimestamp());
318
			pot.setCreateTimestamp(fofoOrder.getCreateTimestamp());
370
			// Mark it paid through cash
319
			// Mark it paid through cash
371
			pot.setPaymentOptionId(1);
320
			pot.setPaymentOptionId(1);
372
			pot.setReferenceType(PaymentOptionReferenceType.ORDER);
321
			pot.setReferenceType(PaymentOptionReferenceType.ORDER);
373
			fofoOrderPaymentOptionRepository.persist(pot);
322
			paymentOptionTransactionRepository.persist(pot);
374
			paymentOptionTransactions.add(pot);
323
			paymentOptionTransactions.add(pot);
375
			LOGGER.info("Added to get invoice");
324
			LOGGER.info("Added to get invoice");
376
		}
325
		}
377
		Map<Integer, PaymentOption> paymentOptionIdPaymentOptionMap = this
326
		Map<Integer, PaymentOption> paymentOptionIdPaymentOptionMap = this
378
				.paymentOptionIdPaymentOptionMap(paymentOptionTransactions);
327
				.paymentOptionIdPaymentOptionMap(paymentOptionTransactions);
Line 488... Line 437...
488
				// TODO Auto-generated catch block
437
				// TODO Auto-generated catch block
489
				return null;
438
				return null;
490
			}
439
			}
491
		}));
440
		}));
492
		LOGGER.info("fofoPartnerPaymentOptions" + fofoPartnerPaymentOptions);
441
		LOGGER.info("fofoPartnerPaymentOptions" + fofoPartnerPaymentOptions);
493
		List<PaymentOptionTransaction> paymentOptionTransactions = fofoOrderPaymentOptionRepository
442
		List<PaymentOptionTransaction> paymentOptionTransactions = paymentOptionTransactionRepository
494
				.selectByReferenceIdAndType(fofoOrder.getId(), PaymentOptionReferenceType.ORDER);
443
				.selectByReferenceIdAndType(fofoOrder.getId(), PaymentOptionReferenceType.ORDER);
495
		LOGGER.info("paymentOptionTransactions" + paymentOptionTransactions);
444
		LOGGER.info("paymentOptionTransactions" + paymentOptionTransactions);
496
		Map<Integer, PaymentOption> paymentOptionIdPaymentOptionMap = this
445
		Map<Integer, PaymentOption> paymentOptionIdPaymentOptionMap = this
497
				.paymentOptionIdPaymentOptionMapUsingPaymentOptions(fofoPartnerPaymentOptions);
446
				.paymentOptionIdPaymentOptionMapUsingPaymentOptions(fofoPartnerPaymentOptions);
498
		Map<Integer, PaymentOptionTransaction> paymentOptionIdPaymentOptionTransactionMap = this
447
		Map<Integer, PaymentOptionTransaction> paymentOptionIdPaymentOptionTransactionMap = this
Line 804... Line 753...
804
		 * paymentOptionTransactionModel.getAmount(); } LOGGER.info("FofoOrder amount" +
753
		 * paymentOptionTransactionModel.getAmount(); } LOGGER.info("FofoOrder amount" +
805
		 * fofoOrder.getTotalAmount() + "amount" + amount); if (amount ==
754
		 * fofoOrder.getTotalAmount() + "amount" + amount); if (amount ==
806
		 * fofoOrder.getTotalAmount()) {
755
		 * fofoOrder.getTotalAmount()) {
807
		 */
756
		 */
808
		if (paymentOptionTransactionModels.size() > 0) {
757
		if (paymentOptionTransactionModels.size() > 0) {
809
			List<PaymentOptionTransaction> paymentOptionTransactions = fofoOrderPaymentOptionRepository
758
			List<PaymentOptionTransaction> paymentOptionTransactions = paymentOptionTransactionRepository
810
					.selectByReferenceIdAndType(referenceId, PaymentOptionReferenceType.ORDER);
759
					.selectByReferenceIdAndType(referenceId, PaymentOptionReferenceType.ORDER);
811
			Map<Integer, PaymentOptionTransaction> paymentOptionIdPaymentOptionTransactionMap = this
760
			Map<Integer, PaymentOptionTransaction> paymentOptionIdPaymentOptionTransactionMap = this
812
					.paymentOptionIdPaymentOptionTransactionMap(paymentOptionTransactions);
761
					.paymentOptionIdPaymentOptionTransactionMap(paymentOptionTransactions);
813
			LOGGER.info(
762
			LOGGER.info(
814
					"paymentOptionIdPaymentOptionTransactionMap" + paymentOptionIdPaymentOptionTransactionMap.keySet());
763
					"paymentOptionIdPaymentOptionTransactionMap" + paymentOptionIdPaymentOptionTransactionMap.keySet());
Line 818... Line 767...
818
 
767
 
819
					PaymentOptionTransaction paymentOptionTransaction = paymentOptionIdPaymentOptionTransactionMap
768
					PaymentOptionTransaction paymentOptionTransaction = paymentOptionIdPaymentOptionTransactionMap
820
							.get(paymentOptionTransactionModel.getPaymentOptionId());
769
							.get(paymentOptionTransactionModel.getPaymentOptionId());
821
 
770
 
822
					if (paymentOptionTransactionModel.getAmount() == 0) {
771
					if (paymentOptionTransactionModel.getAmount() == 0) {
823
						fofoOrderPaymentOptionRepository.delete(paymentOptionTransaction);
772
						paymentOptionTransactionRepository.delete(paymentOptionTransaction);
824
						LOGGER.info("deleted successfully");
773
						LOGGER.info("deleted successfully");
825
					} else {
774
					} else {
826
 
775
 
827
						paymentOptionTransaction.setAmount(paymentOptionTransactionModel.getAmount());
776
						paymentOptionTransaction.setAmount(paymentOptionTransactionModel.getAmount());
828
						fofoOrderPaymentOptionRepository.persist(paymentOptionTransaction);
777
						paymentOptionTransactionRepository.persist(paymentOptionTransaction);
829
						LOGGER.info("updated successfully");
778
						LOGGER.info("updated successfully");
830
 
779
 
831
					}
780
					}
832
				} else {
781
				} else {
833
					if (paymentOptionTransactionModel.getAmount() > 0) {
782
					if (paymentOptionTransactionModel.getAmount() > 0) {
Line 836... Line 785...
836
						paymentOptionTransaction.setReferenceType(PaymentOptionReferenceType.ORDER);
785
						paymentOptionTransaction.setReferenceType(PaymentOptionReferenceType.ORDER);
837
						paymentOptionTransaction.setPaymentOptionId(paymentOptionTransactionModel.getPaymentOptionId());
786
						paymentOptionTransaction.setPaymentOptionId(paymentOptionTransactionModel.getPaymentOptionId());
838
						paymentOptionTransaction.setAmount(paymentOptionTransactionModel.getAmount());
787
						paymentOptionTransaction.setAmount(paymentOptionTransactionModel.getAmount());
839
						paymentOptionTransaction.setFofoId(fofoId);
788
						paymentOptionTransaction.setFofoId(fofoId);
840
						paymentOptionTransaction.setCreateTimestamp(fofoOrder.getCreateTimestamp());
789
						paymentOptionTransaction.setCreateTimestamp(fofoOrder.getCreateTimestamp());
841
						fofoOrderPaymentOptionRepository.persist(paymentOptionTransaction);
790
						paymentOptionTransactionRepository.persist(paymentOptionTransaction);
842
						LOGGER.info("inserted successfully");
791
						LOGGER.info("inserted successfully");
843
					}
792
					}
844
				}
793
				}
845
 
794
 
846
			}
795
			}