Subversion Repositories SmartDukaan

Rev

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

Rev 24533 Rev 24542
Line 13... Line 13...
13
import java.util.HashMap;
13
import java.util.HashMap;
14
import java.util.HashSet;
14
import java.util.HashSet;
15
import java.util.List;
15
import java.util.List;
16
import java.util.Map;
16
import java.util.Map;
17
import java.util.Optional;
17
import java.util.Optional;
-
 
18
import java.util.Set;
18
import java.util.stream.Collectors;
19
import java.util.stream.Collectors;
19
 
20
 
20
import javax.mail.MessagingException;
21
import javax.mail.MessagingException;
21
import javax.mail.internet.InternetAddress;
22
import javax.mail.internet.InternetAddress;
22
import javax.mail.internet.MimeMessage;
23
import javax.mail.internet.MimeMessage;
Line 35... Line 36...
35
import org.springframework.mail.javamail.JavaMailSender;
36
import org.springframework.mail.javamail.JavaMailSender;
36
import org.springframework.mail.javamail.MimeMessageHelper;
37
import org.springframework.mail.javamail.MimeMessageHelper;
37
import org.springframework.stereotype.Component;
38
import org.springframework.stereotype.Component;
38
import org.springframework.transaction.annotation.Transactional;
39
import org.springframework.transaction.annotation.Transactional;
39
 
40
 
-
 
41
import com.google.common.collect.Lists;
40
import com.spice.profitmandi.common.enumuration.RechargeStatus;
42
import com.spice.profitmandi.common.enumuration.RechargeStatus;
41
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
43
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
42
import com.spice.profitmandi.common.model.CustomRetailer;
44
import com.spice.profitmandi.common.model.CustomRetailer;
-
 
45
import com.spice.profitmandi.common.model.GstRate;
43
import com.spice.profitmandi.common.model.RechargeCredential;
46
import com.spice.profitmandi.common.model.RechargeCredential;
44
import com.spice.profitmandi.common.util.FileUtil;
47
import com.spice.profitmandi.common.util.FileUtil;
45
import com.spice.profitmandi.common.util.FormattingUtils;
48
import com.spice.profitmandi.common.util.FormattingUtils;
46
import com.spice.profitmandi.common.util.Utils;
49
import com.spice.profitmandi.common.util.Utils;
47
import com.spice.profitmandi.dao.entity.cs.Ticket;
50
import com.spice.profitmandi.dao.entity.cs.Ticket;
48
import com.spice.profitmandi.dao.entity.cs.TicketAssigned;
51
import com.spice.profitmandi.dao.entity.cs.TicketAssigned;
49
import com.spice.profitmandi.dao.entity.dtr.DailyRecharge;
52
import com.spice.profitmandi.dao.entity.dtr.DailyRecharge;
50
import com.spice.profitmandi.dao.entity.dtr.RechargeProvider;
53
import com.spice.profitmandi.dao.entity.dtr.RechargeProvider;
51
import com.spice.profitmandi.dao.entity.dtr.RechargeProviderCreditWalletHistory;
54
import com.spice.profitmandi.dao.entity.dtr.RechargeProviderCreditWalletHistory;
52
import com.spice.profitmandi.dao.entity.dtr.RechargeTransaction;
55
import com.spice.profitmandi.dao.entity.dtr.RechargeTransaction;
-
 
56
import com.spice.profitmandi.dao.entity.fofo.CustomerAddress;
53
import com.spice.profitmandi.dao.entity.fofo.FofoOrder;
57
import com.spice.profitmandi.dao.entity.fofo.FofoOrder;
-
 
58
import com.spice.profitmandi.dao.entity.fofo.FofoOrderItem;
54
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
59
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
55
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
60
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
56
import com.spice.profitmandi.dao.entity.fofo.PartnerDailyInvestment;
61
import com.spice.profitmandi.dao.entity.fofo.PartnerDailyInvestment;
57
import com.spice.profitmandi.dao.entity.fofo.PartnerTargetDetails;
62
import com.spice.profitmandi.dao.entity.fofo.PartnerTargetDetails;
58
import com.spice.profitmandi.dao.entity.fofo.Purchase;
63
import com.spice.profitmandi.dao.entity.fofo.Purchase;
59
import com.spice.profitmandi.dao.entity.fofo.SaleHeadDetails;
64
import com.spice.profitmandi.dao.entity.fofo.SaleHeadDetails;
60
import com.spice.profitmandi.dao.entity.fofo.ScanRecord;
65
import com.spice.profitmandi.dao.entity.fofo.ScanRecord;
61
import com.spice.profitmandi.dao.entity.fofo.SchemeInOut;
66
import com.spice.profitmandi.dao.entity.fofo.SchemeInOut;
62
import com.spice.profitmandi.dao.entity.transaction.PriceDrop;
67
import com.spice.profitmandi.dao.entity.transaction.PriceDrop;
-
 
68
import com.spice.profitmandi.dao.entity.user.Address;
63
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
69
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
64
import com.spice.profitmandi.dao.enumuration.fofo.ScanType;
70
import com.spice.profitmandi.dao.enumuration.fofo.ScanType;
65
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
71
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
66
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
72
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
67
import com.spice.profitmandi.dao.repository.catalog.SchemeRepository;
73
import com.spice.profitmandi.dao.repository.catalog.SchemeRepository;
Line 70... Line 76...
70
import com.spice.profitmandi.dao.repository.dtr.DailyRechargeRepository;
76
import com.spice.profitmandi.dao.repository.dtr.DailyRechargeRepository;
71
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
77
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
72
import com.spice.profitmandi.dao.repository.dtr.RechargeProviderCreditWalletHistoryRepository;
78
import com.spice.profitmandi.dao.repository.dtr.RechargeProviderCreditWalletHistoryRepository;
73
import com.spice.profitmandi.dao.repository.dtr.RechargeProviderRepository;
79
import com.spice.profitmandi.dao.repository.dtr.RechargeProviderRepository;
74
import com.spice.profitmandi.dao.repository.dtr.RechargeTransactionRepository;
80
import com.spice.profitmandi.dao.repository.dtr.RechargeTransactionRepository;
-
 
81
import com.spice.profitmandi.dao.repository.dtr.RetailerRegisteredAddressRepository;
-
 
82
import com.spice.profitmandi.dao.repository.fofo.CustomerAddressRepository;
-
 
83
import com.spice.profitmandi.dao.repository.fofo.FofoOrderItemRepository;
75
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
84
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
76
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
85
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
77
import com.spice.profitmandi.dao.repository.fofo.PartnerDailyInvestmentRepository;
86
import com.spice.profitmandi.dao.repository.fofo.PartnerDailyInvestmentRepository;
78
import com.spice.profitmandi.dao.repository.fofo.PartnerTargetRepository;
87
import com.spice.profitmandi.dao.repository.fofo.PartnerTargetRepository;
79
import com.spice.profitmandi.dao.repository.fofo.PurchaseRepository;
88
import com.spice.profitmandi.dao.repository.fofo.PurchaseRepository;
80
import com.spice.profitmandi.dao.repository.fofo.ScanRecordRepository;
89
import com.spice.profitmandi.dao.repository.fofo.ScanRecordRepository;
81
import com.spice.profitmandi.dao.repository.fofo.SchemeInOutRepository;
90
import com.spice.profitmandi.dao.repository.fofo.SchemeInOutRepository;
82
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
91
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
83
import com.spice.profitmandi.dao.repository.transaction.PriceDropRepository;
92
import com.spice.profitmandi.dao.repository.transaction.PriceDropRepository;
-
 
93
import com.spice.profitmandi.dao.repository.user.AddressRepository;
84
import com.spice.profitmandi.service.PartnerInvestmentService;
94
import com.spice.profitmandi.service.PartnerInvestmentService;
85
import com.spice.profitmandi.service.inventory.InventoryService;
95
import com.spice.profitmandi.service.inventory.InventoryService;
86
import com.spice.profitmandi.service.order.OrderService;
96
import com.spice.profitmandi.service.order.OrderService;
87
import com.spice.profitmandi.service.pricing.PriceDropService;
97
import com.spice.profitmandi.service.pricing.PriceDropService;
88
import com.spice.profitmandi.service.recharge.provider.OxigenRechargeProviderService;
98
import com.spice.profitmandi.service.recharge.provider.OxigenRechargeProviderService;
Line 151... Line 161...
151
 
161
 
152
	@Autowired
162
	@Autowired
153
	private PartnerInvestmentService partnerInvestmentService;
163
	private PartnerInvestmentService partnerInvestmentService;
154
 
164
 
155
	@Autowired
165
	@Autowired
-
 
166
	private FofoOrderItemRepository fofoOrderItemRepository;
-
 
167
 
-
 
168
	@Autowired
156
	private PartnerDailyInvestmentRepository partnerDailyInvestmentRepository;
169
	private PartnerDailyInvestmentRepository partnerDailyInvestmentRepository;
157
 
170
 
158
	@Autowired
171
	@Autowired
159
	private SchemeInOutRepository schemeInOutRepository;
172
	private SchemeInOutRepository schemeInOutRepository;
160
 
173
 
161
	@Autowired
174
	@Autowired
162
	private RechargeTransactionRepository rechargeTransactionRepository;
175
	private RechargeTransactionRepository rechargeTransactionRepository;
163
 
176
 
164
	@Autowired
177
	@Autowired
-
 
178
	private CustomerAddressRepository customerAddressRepository;
-
 
179
 
-
 
180
	@Autowired
165
	private RechargeProviderCreditWalletHistoryRepository rechargeProviderCreditWalletHistoryRepository;
181
	private RechargeProviderCreditWalletHistoryRepository rechargeProviderCreditWalletHistoryRepository;
166
 
182
 
167
	@Autowired
183
	@Autowired
168
	private FofoOrderRepository fofoOrderRepository;
184
	private FofoOrderRepository fofoOrderRepository;
169
 
185
 
Line 235... Line 251...
235
	private TicketAssignedRepository ticketAssignedRepository;
251
	private TicketAssignedRepository ticketAssignedRepository;
236
 
252
 
237
	@Autowired
253
	@Autowired
238
	private AuthRepository authRepository;
254
	private AuthRepository authRepository;
239
 
255
 
-
 
256
	@Autowired
-
 
257
	private AddressRepository addressRepository;
-
 
258
 
-
 
259
	@Autowired
-
 
260
	private RetailerRegisteredAddressRepository retailerRegisteredAddressRepository;
-
 
261
 
240
	private static final Logger LOGGER = LogManager.getLogger(ScheduledTasks.class);
262
	private static final Logger LOGGER = LogManager.getLogger(ScheduledTasks.class);
241
 
263
 
242
	public void generateDailyRecharge() {
264
	public void generateDailyRecharge() {
243
		List<RechargeProviderCreditWalletHistory> allCreditHistory = rechargeProviderCreditWalletHistoryRepository
265
		List<RechargeProviderCreditWalletHistory> allCreditHistory = rechargeProviderCreditWalletHistoryRepository
244
				.selectAll(0, 2000);
266
				.selectAll(0, 2000);
Line 646... Line 668...
646
		for (PriceDrop priceDrop : priceDrops) {
668
		for (PriceDrop priceDrop : priceDrops) {
647
			priceDropService.priceDropStatus(priceDrop.getId());
669
			priceDropService.priceDropStatus(priceDrop.getId());
648
		}
670
		}
649
	}
671
	}
650
 
672
 
-
 
673
	public void walletmismatch() throws Exception {
-
 
674
		LocalDate curDate = LocalDate.now();
-
 
675
		List<Integer> mismatched = new ArrayList<>();
-
 
676
		List<PartnerDailyInvestment> pdis = partnerDailyInvestmentRepository.selectAll(curDate);
-
 
677
		for (PartnerDailyInvestment pdi : pdis) {
-
 
678
			if (pdi.getWalletAmount() != walletService.getOpeningTill(pdi.getFofoId(), curDate.atStartOfDay())) {
-
 
679
				mismatched.add(pdi.getFofoId());
-
 
680
			}
-
 
681
		}
-
 
682
 
-
 
683
		for (Integer fofoId : mismatched) {
-
 
684
			for (PartnerDailyInvestment investment : Lists
-
 
685
					.reverse(partnerDailyInvestmentRepository.selectAll(fofoId, null, null))) {
-
 
686
				float statementAmount = walletService.getOpeningTill(fofoId, investment.getDate().atStartOfDay());
-
 
687
				if (investment.getWalletAmount() != statementAmount) {
-
 
688
					LOGGER.info("{}\t{}\t{}\t{}", fofoId, investment.getDate(), investment.getWalletAmount(),
-
 
689
							statementAmount);
-
 
690
				}
-
 
691
			}
-
 
692
 
-
 
693
		}
-
 
694
	}
-
 
695
 
651
	public void escalateTicket() throws ProfitMandiBusinessException {
696
	public void escalateTicket() throws ProfitMandiBusinessException {
652
		List<Ticket> tickets = ticketRepository.selectAllNotClosedTickets();
697
		List<Ticket> tickets = ticketRepository.selectAllNotClosedTickets();
653
		for (Ticket ticket : tickets) {
698
		for (Ticket ticket : tickets) {
654
			if ((ticket.getL2EscalationTimestamp().isBefore(LocalDateTime.now())
699
			if ((ticket.getL2EscalationTimestamp().isBefore(LocalDateTime.now())
655
					|| ticket.getL2EscalationTimestamp().isEqual(LocalDateTime.now()))
700
					|| ticket.getL2EscalationTimestamp().isEqual(LocalDateTime.now()))
Line 717... Line 762...
717
		} catch (Exception e) {
762
		} catch (Exception e) {
718
			throw new ProfitMandiBusinessException("Escalated Ticket", to, "Could not send Escalated ticket mail");
763
			throw new ProfitMandiBusinessException("Escalated Ticket", to, "Could not send Escalated ticket mail");
719
		}
764
		}
720
	}
765
	}
721
 
766
 
-
 
767
	public void gst() throws Exception {
-
 
768
		List<FofoOrder> fofoOrders = fofoOrderRepository.selectBetweenSaleDate(LocalDate.of(2019, 26, 1).atStartOfDay(), LocalDate.of(2019, 27, 1).atTime(LocalTime.MAX));
-
 
769
		for(FofoOrder fofoOrder : fofoOrders) {
-
 
770
			int retailerAddressId = retailerRegisteredAddressRepository.selectAddressIdByRetailerId(fofoOrder.getFofoId());
-
 
771
 
-
 
772
			Address retailerAddress = addressRepository.selectById(retailerAddressId);
-
 
773
			CustomerAddress customerAddress = customerAddressRepository.selectById(fofoOrder.getCustomerAddressId());
-
 
774
			Integer stateId = null;
-
 
775
			if (customerAddress.getState().equals(retailerAddress.getState())) {
-
 
776
				try {
-
 
777
					stateId = Long.valueOf(Utils.getStateInfo(customerAddress.getState()).getId()).intValue();
-
 
778
				} catch (Exception e) {
-
 
779
					LOGGER.error("Unable to get state rates");
-
 
780
				}
-
 
781
			}
-
 
782
			Map<Integer, GstRate> itemIdStateTaxRateMap = null;
-
 
783
			Map<Integer, Float> itemIdIgstTaxRateMap = null;
-
 
784
			
-
 
785
			List<FofoOrderItem> fofoOrderItems  = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
-
 
786
			Set<Integer> itemIds = fofoOrderItems.stream().map(x->x.getItemId()).collect(Collectors.toSet());
-
 
787
			if (stateId != null) {
-
 
788
				itemIdStateTaxRateMap = Utils.getStateTaxRate(new ArrayList<>(itemIds), stateId);
-
 
789
			} else {
-
 
790
				itemIdIgstTaxRateMap = Utils.getIgstTaxRate(new ArrayList<>(itemIds));
-
 
791
			}
-
 
792
 
-
 
793
			for(FofoOrderItem foi : fofoOrderItems) {
-
 
794
				if (stateId == null) {
-
 
795
					foi.setIgstRate(itemIdIgstTaxRateMap.get(foi.getItemId()));
-
 
796
				} else {
-
 
797
					foi.setCgstRate(itemIdStateTaxRateMap.get(foi.getItemId()).getCgstRate());
-
 
798
					foi.setSgstRate(itemIdStateTaxRateMap.get(foi.getItemId()).getSgstRate());
-
 
799
				}
-
 
800
				fofoOrderItemRepository.persist(foi);
-
 
801
			}
-
 
802
		}
-
 
803
		
-
 
804
		
-
 
805
	}
-
 
806
 
722
}
807
}