Subversion Repositories SmartDukaan

Rev

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

Rev 25299 Rev 25503
Line 1... Line 1...
1
package com.smartdukaan.cron.scheduled;
1
package com.smartdukaan.cron.scheduled;
2
 
2
 
3
import java.io.Serializable;
3
import java.io.Serializable;
4
import java.time.LocalDate;
4
import java.time.LocalDate;
-
 
5
import java.time.LocalDateTime;
5
import java.util.ArrayList;
6
import java.util.ArrayList;
6
import java.util.Arrays;
7
import java.util.Arrays;
7
import java.util.HashSet;
8
import java.util.HashSet;
8
import java.util.List;
9
import java.util.List;
9
import java.util.Map;
10
import java.util.Map;
Line 57... Line 58...
57
import in.shop2020.model.v1.order.WalletReferenceType;
58
import in.shop2020.model.v1.order.WalletReferenceType;
58
 
59
 
59
@Component
60
@Component
60
@Transactional(rollbackFor = Throwable.class)
61
@Transactional(rollbackFor = Throwable.class)
61
public class Reconciliation {
62
public class Reconciliation {
62
	
63
 
63
	private static final Logger LOGGER = LogManager.getLogger(Application.class);
64
	private static final Logger LOGGER = LogManager.getLogger(Application.class);
64
	
65
 
65
	@Autowired
66
	@Autowired
66
	private FofoStoreRepository fofoStoreRepository;
67
	private FofoStoreRepository fofoStoreRepository;
67
 
68
 
68
	@Autowired
69
	@Autowired
69
	private PurchaseRepository purchaseRepository;
70
	private PurchaseRepository purchaseRepository;
70
	
71
 
71
	@Autowired
72
	@Autowired
72
	private OrderService orderService;
73
	private OrderService orderService;
73
	
74
 
74
	@Autowired
75
	@Autowired
75
	private FofoOrderItemRepository fofoOrderItemRepository;
76
	private FofoOrderItemRepository fofoOrderItemRepository;
76
	@Autowired
77
	@Autowired
77
	private FofoLineItemRepository fofoLineItemRepository;
78
	private FofoLineItemRepository fofoLineItemRepository;
78
	@Autowired
79
	@Autowired
Line 225... Line 226...
225
		float schemeInAmountRolledBack = 0;
226
		float schemeInAmountRolledBack = 0;
226
		for (int transactionId : transactionsOnThatDate.keySet()) {
227
		for (int transactionId : transactionsOnThatDate.keySet()) {
227
			List<InventoryItem> inventoryItems = inventoryRepository.selectByPurchaseId(transactionId).stream()
228
			List<InventoryItem> inventoryItems = inventoryRepository.selectByPurchaseId(transactionId).stream()
228
					.filter(x -> x.getSerialNumber() != null).collect(Collectors.toList());
229
					.filter(x -> x.getSerialNumber() != null).collect(Collectors.toList());
229
			Set<Integer> inventoryItemIds = inventoryItems.stream().map(x -> x.getId()).collect(Collectors.toSet());
230
			Set<Integer> inventoryItemIds = inventoryItems.stream().map(x -> x.getId()).collect(Collectors.toSet());
230
			if(inventoryItemIds.size() == 0) {
231
			if (inventoryItemIds.size() == 0) {
231
				continue;
232
				continue;
232
			}
233
			}
233
			List<SchemeInOut> sios = schemeInOutRepository.selectByInventoryItemIds(new HashSet<>(inventoryItemIds))
234
			List<SchemeInOut> sios = schemeInOutRepository.selectByInventoryItemIds(new HashSet<>(inventoryItemIds))
234
					.stream().filter(x -> schemeIds.contains(x.getSchemeId())).collect(Collectors.toList());
235
					.stream().filter(x -> schemeIds.contains(x.getSchemeId())).collect(Collectors.toList());
235
			totalSchemeInWalletCredited += transactionsOnThatDate.get(transactionId);
236
			totalSchemeInWalletCredited += transactionsOnThatDate.get(transactionId);
Line 284... Line 285...
284
 
285
 
285
	public void reconcileExpiredFixedSchemes() throws Exception {
286
	public void reconcileExpiredFixedSchemes() throws Exception {
286
		List<Scheme> allSchemes = schemeRepository.selectAll();
287
		List<Scheme> allSchemes = schemeRepository.selectAll();
287
		// .stream().filter(x ->
288
		// .stream().filter(x ->
288
		// x.getAmountType().equals(AmountType.FIXED)).collect(Collectors.toList());
289
		// x.getAmountType().equals(AmountType.FIXED)).collect(Collectors.toList());
-
 
290
		allSchemes = allSchemes.stream()
289
		allSchemes = allSchemes.stream().filter(x->x.getEndDateTime().isAfter(LocalDate.of(2019, 3, 31).atStartOfDay())).collect(Collectors.toList());
291
				.filter(x -> x.getEndDateTime().isAfter(LocalDate.of(2019, 3, 31).atStartOfDay()))
-
 
292
				.collect(Collectors.toList());
-
 
293
		System.out.println(
290
		System.out.println("InventoryId\tSerialNumber\tItem Id\tScheme Id\tScheme Name\tScheme Type\tAmount Type\tScheme Amount\tAmount Paid\tReference\tTransaction Time\tScheme Start\tScheme End\tScheme Expiry");
294
				"InventoryId\tSerialNumber\tItem Id\tScheme Id\tScheme Name\tScheme Type\tAmount Type\tScheme Amount\tAmount Paid\tReference\tTransaction Time\tScheme Start\tScheme End\tScheme Expiry");
291
		for (Scheme scheme : allSchemes) {
295
		for (Scheme scheme : allSchemes) {
292
			if (scheme.getExpireTimestamp() != null) {
296
			if (scheme.getExpireTimestamp() != null) {
293
				if (scheme.getExpireTimestamp().isBefore(scheme.getEndDateTime())) {
297
				if (scheme.getExpireTimestamp().isBefore(scheme.getEndDateTime())) {
294
					List<SchemeInOut> inOuts = schemeInOutRepository
-
 
295
							.selectBySchemeIds(Sets.newHashSet(scheme.getId()));
298
					List<SchemeInOut> inOuts = schemeInOutRepository.selectBySchemeIds(Sets.newHashSet(scheme.getId()));
296
					if (scheme.getType().equals(SchemeType.IN)) {
299
					if (scheme.getType().equals(SchemeType.IN)) {
297
						for (SchemeInOut schemeInOut : inOuts) {
300
						for (SchemeInOut schemeInOut : inOuts) {
298
							ScanRecord inRecord = scanRecordRepository
301
							ScanRecord inRecord = scanRecordRepository
299
									.selectByInventoryItemId(schemeInOut.getInventoryItemId()).stream()
302
									.selectByInventoryItemId(schemeInOut.getInventoryItemId()).stream()
300
									.filter(x -> x.getType().equals(ScanType.PURCHASE)).collect(Collectors.toList())
303
									.filter(x -> x.getType().equals(ScanType.PURCHASE)).collect(Collectors.toList())
301
									.get(0);
304
									.get(0);
302
							if (inRecord.getCreateTimestamp().isAfter(scheme.getExpireTimestamp())) {
305
							if (inRecord.getCreateTimestamp().isAfter(scheme.getExpireTimestamp())) {
303
								InventoryItem ii = inventoryItemRepository.selectById(inRecord.getInventoryItemId());
306
								InventoryItem ii = inventoryItemRepository.selectById(inRecord.getInventoryItemId());
304
								Purchase purchase = purchaseRepository.selectByIdAndFofoId(ii.getPurchaseId(), ii.getFofoId());
307
								Purchase purchase = purchaseRepository.selectByIdAndFofoId(ii.getPurchaseId(),
-
 
308
										ii.getFofoId());
305
								System.out.println(String.format("%d\t%s\t%d\t%d\t%s\t%s\t%f\t%f\t%d\t%s\t%s\t%s\t%s",
309
								System.out.println(String.format("%d\t%s\t%d\t%d\t%s\t%s\t%f\t%f\t%d\t%s\t%s\t%s\t%s",
306
										ii.getId(), ii.getSerialNumber(), ii.getItemId(), schemeInOut.getSchemeId(), scheme.getName(), scheme.getType(),
310
										ii.getId(), ii.getSerialNumber(), ii.getItemId(), schemeInOut.getSchemeId(),
-
 
311
										scheme.getName(), scheme.getType(), scheme.getAmount(), schemeInOut.getAmount(),
307
										scheme.getAmount(), schemeInOut.getAmount(), purchase.getId(), inRecord.getCreateTimestamp(), scheme.getStartDateTime(), scheme.getEndDateTime(), scheme.getExpireTimestamp()));
312
										purchase.getId(), inRecord.getCreateTimestamp(), scheme.getStartDateTime(),
-
 
313
										scheme.getEndDateTime(), scheme.getExpireTimestamp()));
308
							}
314
							}
309
 
315
 
310
						}
316
						}
311
					}
317
					}
312
					if (scheme.getType().equals(SchemeType.OUT)) {
318
					if (scheme.getType().equals(SchemeType.OUT)) {
313
						for (SchemeInOut schemeInOut : inOuts) {
319
						for (SchemeInOut schemeInOut : inOuts) {
314
							ScanRecord outRecord = scanRecordRepository
320
							ScanRecord outRecord = scanRecordRepository
315
									.selectByInventoryItemId(schemeInOut.getInventoryItemId()).stream()
321
									.selectByInventoryItemId(schemeInOut.getInventoryItemId()).stream()
-
 
322
									.filter(x -> x.getType().equals(ScanType.SALE))
316
									.filter(x -> x.getType().equals(ScanType.SALE)).sorted((x1,x2)->x1.getId() - x2.getId()).collect(Collectors.toList()).get(0);
323
									.sorted((x1, x2) -> x1.getId() - x2.getId()).collect(Collectors.toList()).get(0);
317
							if (outRecord.getCreateTimestamp().isAfter(scheme.getExpireTimestamp())) {
324
							if (outRecord.getCreateTimestamp().isAfter(scheme.getExpireTimestamp())) {
318
								InventoryItem ii = inventoryItemRepository.selectById(outRecord.getInventoryItemId());
325
								InventoryItem ii = inventoryItemRepository.selectById(outRecord.getInventoryItemId());
319
								FofoOrder fofoOrder;
326
								FofoOrder fofoOrder;
320
								if(outRecord.getOrderId()==0) {
327
								if (outRecord.getOrderId() == 0) {
321
									fofoOrder = orderService.getOrderByInventoryItemId(ii.getId());
328
									fofoOrder = orderService.getOrderByInventoryItemId(ii.getId());
322
								} else {
329
								} else {
323
									fofoOrder = fofoOrderRepository.selectByOrderId(outRecord.getOrderId());
330
									fofoOrder = fofoOrderRepository.selectByOrderId(outRecord.getOrderId());
324
									if(fofoOrder==null) {
331
									if (fofoOrder == null) {
325
										LOGGER.info("Order id does not exits - {}", outRecord.getOrderId());
332
										LOGGER.info("Order id does not exits - {}", outRecord.getOrderId());
326
										continue;
333
										continue;
327
									}
334
									}
328
								}
335
								}
329
								System.out.println(String.format("%d\t%s\t%d\t%d\t%s\t%s\t%f\t%f\t%d\t%s\t%s\t%s\t%s",
336
								System.out.println(String.format("%d\t%s\t%d\t%d\t%s\t%s\t%f\t%f\t%d\t%s\t%s\t%s\t%s",
330
										ii.getId(), ii.getSerialNumber(), ii.getItemId(), schemeInOut.getSchemeId(), scheme.getName(), scheme.getType(),
337
										ii.getId(), ii.getSerialNumber(), ii.getItemId(), schemeInOut.getSchemeId(),
-
 
338
										scheme.getName(), scheme.getType(), scheme.getAmount(), schemeInOut.getAmount(),
331
										scheme.getAmount(), schemeInOut.getAmount(), fofoOrder.getId(), outRecord.getCreateTimestamp(), scheme.getStartDateTime(), scheme.getEndDateTime(), scheme.getExpireTimestamp()));
339
										fofoOrder.getId(), outRecord.getCreateTimestamp(), scheme.getStartDateTime(),
-
 
340
										scheme.getEndDateTime(), scheme.getExpireTimestamp()));
332
								
341
 
333
							}
342
							}
334
 
343
 
335
						}
344
						}
336
					}
345
					}
337
				}
346
				}
338
			}
347
			}
339
		}
348
		}
340
 
349
 
341
	}
350
	}
-
 
351
 
-
 
352
	private void checkForDblClickIssues() {
-
 
353
		// For all schmes from April onwards
-
 
354
	}
-
 
355
 
-
 
356
	private void dbClickPurchase() {
-
 
357
		List<Purchase> purchases = purchaseRepository.selectAllBetweenPurchaseDate(LocalDate.of(2019, 4, 1).atStartOfDay(),
-
 
358
				LocalDateTime.now());
-
 
359
	}
-
 
360
 
-
 
361
	private void dbClickSale() {
-
 
362
		List<FofoOrder> sales = fofoOrderRepository.selectBetweenSaleDate(LocalDate.of(2019, 4, 1).atStartOfDay(),
-
 
363
				LocalDateTime.now());
-
 
364
 
-
 
365
	}
342
}
366
}