Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
23755 amit.gupta 1
package com.smartdukaan.cron.migrations;
2
 
23824 amit.gupta 3
import java.time.LocalDate;
23755 amit.gupta 4
import java.time.LocalDateTime;
23824 amit.gupta 5
import java.time.LocalTime;
23755 amit.gupta 6
import java.util.Arrays;
23827 amit.gupta 7
import java.util.Collections;
24002 amit.gupta 8
import java.util.HashMap;
24005 amit.gupta 9
import java.util.HashSet;
23755 amit.gupta 10
import java.util.List;
24002 amit.gupta 11
import java.util.Map;
23755 amit.gupta 12
 
13
import org.apache.commons.lang.StringUtils;
14
import org.apache.logging.log4j.LogManager;
15
import org.apache.logging.log4j.Logger;
16
import org.springframework.beans.factory.annotation.Autowired;
17
import org.springframework.stereotype.Component;
18
import org.springframework.transaction.annotation.Transactional;
19
 
24005 amit.gupta 20
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
23898 amit.gupta 21
import com.spice.profitmandi.dao.entity.fofo.Purchase;
23824 amit.gupta 22
import com.spice.profitmandi.dao.entity.transaction.LineItem;
23755 amit.gupta 23
import com.spice.profitmandi.dao.entity.transaction.LineItemImei;
24
import com.spice.profitmandi.dao.entity.transaction.Order;
23899 amit.gupta 25
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
24002 amit.gupta 26
import com.spice.profitmandi.dao.repository.fofo.DebitNoteRepository;
27
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
23898 amit.gupta 28
import com.spice.profitmandi.dao.repository.fofo.PurchaseRepository;
24002 amit.gupta 29
import com.spice.profitmandi.dao.repository.fofo.SchemeInOutRepository;
23755 amit.gupta 30
import com.spice.profitmandi.dao.repository.transaction.LineItemImeisRepository;
23824 amit.gupta 31
import com.spice.profitmandi.dao.repository.transaction.LineItemRepository;
23755 amit.gupta 32
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
24002 amit.gupta 33
import com.spice.profitmandi.dao.repository.user.UserRepository;
23899 amit.gupta 34
import com.spice.profitmandi.service.inventory.InventoryService;
24005 amit.gupta 35
import com.spice.profitmandi.service.pricing.PriceDropService;
36
import com.spice.profitmandi.service.scheme.SchemeService;
23899 amit.gupta 37
import com.spice.profitmandi.service.transaction.TransactionService;
38
import com.spice.profitmandi.service.user.RetailerService;
39
import com.spice.profitmandi.service.wallet.WalletService;
23755 amit.gupta 40
 
24002 amit.gupta 41
import in.shop2020.model.v1.order.WalletReferenceType;
42
 
23755 amit.gupta 43
@Component
44
@Transactional(rollbackFor = Throwable.class)
45
public class RunOnceTasks {
46
 
47
	private static final Logger LOGGER = LogManager.getLogger(RunOnceTasks.class);
48
 
49
	@Autowired
23824 amit.gupta 50
	private LineItemRepository lineItemRepository;
23905 amit.gupta 51
 
52
	@Autowired
24002 amit.gupta 53
	private UserRepository userRepository;
54
 
55
	@Autowired
23899 amit.gupta 56
	private WalletService walletService;
57
 
58
	@Autowired
59
	private InventoryService inventoryService;
60
 
61
	@Autowired
62
	private TransactionService transactionService;
63
 
64
	@Autowired
23755 amit.gupta 65
	private OrderRepository orderRepository;
23767 amit.gupta 66
 
23755 amit.gupta 67
	@Autowired
23899 amit.gupta 68
	private FofoStoreRepository fofoStoreRepository;
69
 
70
	@Autowired
23755 amit.gupta 71
	private LineItemImeisRepository lineItemImeisRepository;
24002 amit.gupta 72
 
73
	@Autowired
74
	private InventoryItemRepository inventoryItemRepository;
23901 amit.gupta 75
 
23898 amit.gupta 76
	@Autowired
23899 amit.gupta 77
	private RetailerService retailerService;
24002 amit.gupta 78
 
79
	@Autowired
80
	private SchemeInOutRepository schemeInOutRepository;
81
 
82
	@Autowired
83
	private DebitNoteRepository debitNoteRepository;
23899 amit.gupta 84
 
85
	@Autowired
23898 amit.gupta 86
	private PurchaseRepository purchaseRepository;
24002 amit.gupta 87
 
24005 amit.gupta 88
 
89
	@Autowired
90
	private PriceDropService priceDropService;
91
 
92
	@Autowired
93
	private SchemeService schemeService;
94
 
95
 
96
	public void dropCorrection() throws Exception {
97
 
98
		walletService.rollbackAmountFromWallet(175128034, 274, 4, WalletReferenceType.PRICE_DROP, "Scheme  differential for Price Drop of Rs.712 on Samsung J6 J600GG, on 01-08-2018 for missing 1pc");
99
		walletService.rollbackAmountFromWallet(175128034, -259, 4, WalletReferenceType.PRICE_DROP, "Scheme  differential for Price Drop of Rs.712 on Samsung J6 J600GG, on 01-08-2018 for missing 1pc");
100
		List<InventoryItem> iis =  inventoryItemRepository.selectByIds(new HashSet<>(Arrays.asList(3518, 3516)));
101
		schemeService.reverseSchemes(iis, 8, "Scheme  differential for Price Drop of Rs.712 on Samsung J6 J600GG, on 01-08-2018. Total 2 item(s)");
102
		List<InventoryItem> iis1 =  inventoryItemRepository.selectByIds(new HashSet<>(Arrays.asList(3502, 3334,3503)));
103
		schemeService.reverseSchemes(iis1, 13, "Scheme  differential for Price Drop of Rs.485 on Samsung Galaxy J4 J400FD, on 18-07-2018. Total 3 item(s)");
104
 
105
		List<InventoryItem> iis2 =  inventoryItemRepository.selectByIds(new HashSet<>(Arrays.asList(3319)));
106
		schemeService.reverseSchemes(iis2, 13, "Scheme  differential for Price Drop of Rs.485 on Samsung Galaxy J4 J400FD, on 18-07-2018. Total 1 item(s)");
107
	}
108
 
24002 amit.gupta 109
	public void schemeRollback() {
110
		Map<Integer, Float> fofoIdAmount = new HashMap<>();
24003 amit.gupta 111
		fofoIdAmount.put(175135218, 1942f);
112
		String description = "Price drop/differential rolled out as, they were already returned, Total 2pcs.";
24002 amit.gupta 113
		for(Map.Entry<Integer, Float> fofoIdAmountEntry: fofoIdAmount.entrySet()) {
114
			Integer fofoId=fofoIdAmountEntry.getKey();
115
			Float amount = fofoIdAmountEntry.getValue();
24003 amit.gupta 116
			walletService.rollbackAmountFromWallet(fofoId, amount, 4, WalletReferenceType.PRICE_DROP, description);
24002 amit.gupta 117
		}
24004 amit.gupta 118
		fofoIdAmount.put(175135218, 438f);
119
		for(Map.Entry<Integer, Float> fofoIdAmountEntry: fofoIdAmount.entrySet()) {
120
			Integer fofoId=fofoIdAmountEntry.getKey();
121
			Float amount = fofoIdAmountEntry.getValue();
122
			walletService.rollbackAmountFromWallet(fofoId, amount, 4, WalletReferenceType.PRICE_DROP, description);
123
		}
24002 amit.gupta 124
	}
23755 amit.gupta 125
 
23898 amit.gupta 126
	public void populateGrnTimestamp() {
127
		List<Purchase> allPurchases = purchaseRepository.selectAll();
23899 amit.gupta 128
		for (Purchase p : allPurchases) {
23898 amit.gupta 129
			String invoiceNumber = p.getPurchaseReference();
23899 amit.gupta 130
			if (p.getCompleteTimestamp() == null) {
23898 amit.gupta 131
				LOGGER.info("GRN for invoice {} is delivered but partially Completed.", p.getPurchaseReference());
132
			} else {
133
				List<Order> orders = orderRepository.selectByAirwayBillOrInvoiceNumber(invoiceNumber, p.getFofoId());
23899 amit.gupta 134
				for (Order order : orders) {
23902 amit.gupta 135
					if (order.getPartnerGrnTimestamp() == null) {
136
						order.setPartnerGrnTimestamp(p.getCompleteTimestamp());
23898 amit.gupta 137
						orderRepository.persist(order);
138
					}
139
				}
140
			}
141
		}
23899 amit.gupta 142
 
23898 amit.gupta 143
	}
23899 amit.gupta 144
 
23755 amit.gupta 145
	public void migarateLineItemsToNewTable() {
146
		LOGGER.info("Before Migrated LineItems Successfully");
23824 amit.gupta 147
		int lineItemImeiId = 0;
148
		LocalDateTime startDate = null;
149
		try {
150
			lineItemImeiId = lineItemImeisRepository.selectMaxId();
23899 amit.gupta 151
			LineItem lineItem = lineItemRepository
152
					.selectById(lineItemImeisRepository.selectById(lineItemImeiId).getLineItemId());
23824 amit.gupta 153
			Order order = orderRepository.selectById(lineItem.getOrderId());
154
			startDate = order.getBillingTimestamp();
155
		} catch (Exception e) {
156
			LOGGER.info("Running before first time");
23826 amit.gupta 157
			startDate = LocalDateTime.of(LocalDate.of(2017, 7, 1), LocalTime.MIDNIGHT);
23824 amit.gupta 158
		}
159
		List<Order> orders = orderRepository.selectAllByBillingDatesBetween(startDate, LocalDateTime.now());
23827 amit.gupta 160
		Collections.reverse(orders);
23899 amit.gupta 161
 
23755 amit.gupta 162
		for (Order order : orders) {
23824 amit.gupta 163
			try {
23767 amit.gupta 164
				String serialNumbers = order.getLineItem().getSerialNumber();
165
				if (!StringUtils.isEmpty(serialNumbers)) {
166
					List<String> serialNumberList = Arrays.asList(serialNumbers.split(","));
167
					for (String serialNumber : serialNumberList) {
168
						int lineItemId = order.getLineItem().getId();
169
						LineItemImei lineItemImei = new LineItemImei();
170
						lineItemImei.setSerialNumber(serialNumber);
171
						lineItemImei.setLineItemId(lineItemId);
172
						lineItemImeisRepository.persist(lineItemImei);
173
					}
174
				} else {
175
					LOGGER.info("Serial Numbers dont exist for Order {}", order.getId());
23755 amit.gupta 176
				}
23824 amit.gupta 177
			} catch (Exception e) {
23899 amit.gupta 178
				LOGGER.info("Error occurred while creating lineitem imei {}, because of {}", order.getId(),
179
						e.getMessage());
23755 amit.gupta 180
			}
181
		}
182
		LOGGER.info("Migrated LineItems Successfully");
183
	}
184
}