| Line 8... |
Line 8... |
| 8 |
import java.util.List;
|
8 |
import java.util.List;
|
| 9 |
import java.util.Map;
|
9 |
import java.util.Map;
|
| 10 |
import java.util.Set;
|
10 |
import java.util.Set;
|
| 11 |
import java.util.stream.Collectors;
|
11 |
import java.util.stream.Collectors;
|
| 12 |
|
12 |
|
| - |
|
13 |
import javax.persistence.criteria.CriteriaBuilder;
|
| - |
|
14 |
import javax.persistence.criteria.CriteriaQuery;
|
| - |
|
15 |
import javax.persistence.criteria.Predicate;
|
| - |
|
16 |
import javax.persistence.criteria.Root;
|
| - |
|
17 |
|
| 13 |
import org.apache.logging.log4j.LogManager;
|
18 |
import org.apache.logging.log4j.LogManager;
|
| 14 |
import org.apache.logging.log4j.Logger;
|
19 |
import org.apache.logging.log4j.Logger;
|
| - |
|
20 |
import org.hibernate.Session;
|
| - |
|
21 |
import org.hibernate.SessionFactory;
|
| - |
|
22 |
import org.hibernate.query.Query;
|
| 15 |
import org.springframework.beans.factory.annotation.Autowired;
|
23 |
import org.springframework.beans.factory.annotation.Autowired;
|
| 16 |
import org.springframework.beans.factory.annotation.Qualifier;
|
24 |
import org.springframework.beans.factory.annotation.Qualifier;
|
| 17 |
import org.springframework.stereotype.Component;
|
25 |
import org.springframework.stereotype.Component;
|
| 18 |
|
26 |
|
| 19 |
import com.spice.profitmandi.common.enumuration.ItemType;
|
27 |
import com.spice.profitmandi.common.enumuration.ItemType;
|
| Line 67... |
Line 75... |
| 67 |
|
75 |
|
| 68 |
@Autowired
|
76 |
@Autowired
|
| 69 |
private ScanRecordRepository scanRecordRepository;
|
77 |
private ScanRecordRepository scanRecordRepository;
|
| 70 |
|
78 |
|
| 71 |
@Autowired
|
79 |
@Autowired
|
| - |
|
80 |
private SessionFactory sessionFactory;
|
| - |
|
81 |
|
| - |
|
82 |
@Autowired
|
| 72 |
private SchemeRepository schemeRepository;
|
83 |
private SchemeRepository schemeRepository;
|
| 73 |
|
84 |
|
| 74 |
@Autowired
|
85 |
@Autowired
|
| 75 |
private RoleManager roleManager;
|
86 |
private RoleManager roleManager;
|
| 76 |
|
87 |
|
| Line 116... |
Line 127... |
| 116 |
throw new ProfitMandiBusinessException(
|
127 |
throw new ProfitMandiBusinessException(
|
| 117 |
ProfitMandiConstants.START_DATE + ", " + ProfitMandiConstants.END_DATE,
|
128 |
ProfitMandiConstants.START_DATE + ", " + ProfitMandiConstants.END_DATE,
|
| 118 |
scheme.getStartDateTime() + ", " + scheme.getEndDateTime(), "SCHM_VE_1005");
|
129 |
scheme.getStartDateTime() + ", " + scheme.getEndDateTime(), "SCHM_VE_1005");
|
| 119 |
}
|
130 |
}
|
| 120 |
|
131 |
|
| 121 |
//this.validateItemIds(createSchemeRequest);
|
132 |
// this.validateItemIds(createSchemeRequest);
|
| 122 |
schemeRepository.persist(scheme);
|
133 |
schemeRepository.persist(scheme);
|
| 123 |
for (int itemId : createSchemeRequest.getItemIds()) {
|
134 |
for (int itemId : createSchemeRequest.getItemIds()) {
|
| 124 |
SchemeItem schemeItem = new SchemeItem();
|
135 |
SchemeItem schemeItem = new SchemeItem();
|
| 125 |
schemeItem.setSchemeId(scheme.getId());
|
136 |
schemeItem.setSchemeId(scheme.getId());
|
| 126 |
schemeItem.setItemId(itemId);
|
137 |
schemeItem.setItemId(itemId);
|
| Line 383... |
Line 394... |
| 383 |
float totalCashback = 0;
|
394 |
float totalCashback = 0;
|
| 384 |
if (schemes.isEmpty()) {
|
395 |
if (schemes.isEmpty()) {
|
| 385 |
return;
|
396 |
return;
|
| 386 |
}
|
397 |
}
|
| 387 |
List<InventoryItem> inventoryItems = inventoryItemRepository.selectByPurchaseId(purchaseId);
|
398 |
List<InventoryItem> inventoryItems = inventoryItemRepository.selectByPurchaseId(purchaseId);
|
| 388 |
|
399 |
|
| 389 |
//Only consider inventory items that were not returned
|
400 |
// Only consider inventory items that were not returned
|
| 390 |
inventoryItems = inventoryItems.stream().filter(x -> !x.getLastScanType().equals(ScanType.PURCHASE_RET_BAD)
|
401 |
inventoryItems = inventoryItems.stream().filter(x -> !x.getLastScanType().equals(ScanType.PURCHASE_RET_BAD)
|
| 391 |
&& !x.getLastScanType().equals(ScanType.PURCHASE_RET)).collect(Collectors.toList());
|
402 |
&& !x.getLastScanType().equals(ScanType.PURCHASE_RET)).collect(Collectors.toList());
|
| 392 |
LOGGER.info(inventoryItems);
|
403 |
LOGGER.info(inventoryItems);
|
| 393 |
if (inventoryItems.size() == 0)
|
404 |
if (inventoryItems.size() == 0)
|
| 394 |
return;
|
405 |
return;
|
| Line 473... |
Line 484... |
| 473 |
}
|
484 |
}
|
| 474 |
taxableSellingPrice = dpForCalc / (1 + totalTaxRate / 100);
|
485 |
taxableSellingPrice = dpForCalc / (1 + totalTaxRate / 100);
|
| 475 |
amount = taxableSellingPrice * scheme.getAmount() / 100;
|
486 |
amount = taxableSellingPrice * scheme.getAmount() / 100;
|
| 476 |
System.out.println(String.format("%d\t%s\t%d\t%d\t%s\t%s\t%s\t%s\t%f\t%f\t%f\t%f", inventoryItem.getId(),
|
487 |
System.out.println(String.format("%d\t%s\t%d\t%d\t%s\t%s\t%s\t%s\t%f\t%f\t%f\t%f", inventoryItem.getId(),
|
| 477 |
inventoryItem.getSerialNumber(), inventoryItem.getItemId(), scheme.getId(), scheme.getName(),
|
488 |
inventoryItem.getSerialNumber(), inventoryItem.getItemId(), scheme.getId(), scheme.getName(),
|
| 478 |
scheme.getType(), scheme.getAmountType(), scheme.getPartnerType(), dpForCalc, taxableSellingPrice, scheme.getAmount(),
|
489 |
scheme.getType(), scheme.getAmountType(), scheme.getPartnerType(), dpForCalc, taxableSellingPrice,
|
| 479 |
amount));
|
490 |
scheme.getAmount(), amount));
|
| 480 |
} else {
|
491 |
} else {
|
| 481 |
amount = scheme.getAmount();
|
492 |
amount = scheme.getAmount();
|
| 482 |
System.out.println(String.format("%d\t%s\t%d\t%d\t%s\t%s\t%s\t%s\t%f\t%f\t%d\t%f", inventoryItem.getId(),
|
493 |
System.out.println(String.format("%d\t%s\t%d\t%d\t%s\t%s\t%s\t%s\t%f\t%f\t%d\t%f", inventoryItem.getId(),
|
| 483 |
inventoryItem.getSerialNumber(), inventoryItem.getItemId(), scheme.getId(), scheme.getName(),
|
494 |
inventoryItem.getSerialNumber(), inventoryItem.getItemId(), scheme.getId(), scheme.getName(),
|
| 484 |
scheme.getType(), scheme.getAmountType(), scheme.getPartnerType(), dpForCalc, taxableSellingPrice, 0, amount));
|
495 |
scheme.getType(), scheme.getAmountType(), scheme.getPartnerType(), dpForCalc, taxableSellingPrice,
|
| - |
|
496 |
0, amount));
|
| 485 |
}
|
497 |
}
|
| 486 |
|
498 |
|
| 487 |
return amount;
|
499 |
return amount;
|
| 488 |
}
|
500 |
}
|
| 489 |
|
501 |
|
| Line 516... |
Line 528... |
| 516 |
float itemCashback = 0;
|
528 |
float itemCashback = 0;
|
| 517 |
Purchase purchase = purchaseRepository.selectByIdAndFofoId(inventoryItem.getPurchaseId(), retailerId);
|
529 |
Purchase purchase = purchaseRepository.selectByIdAndFofoId(inventoryItem.getPurchaseId(), retailerId);
|
| 518 |
Set<Integer> schemeIds = new HashSet<>(
|
530 |
Set<Integer> schemeIds = new HashSet<>(
|
| 519 |
schemeItemRepository.selectSchemeIdByItemId(inventoryItem.getItemId()));
|
531 |
schemeItemRepository.selectSchemeIdByItemId(inventoryItem.getItemId()));
|
| 520 |
List<Scheme> schemes = null;
|
532 |
List<Scheme> schemes = null;
|
| 521 |
if(purchase.getCompleteTimestamp()==null) {
|
533 |
if (purchase.getCompleteTimestamp() == null) {
|
| 522 |
continue;
|
534 |
continue;
|
| 523 |
}
|
535 |
}
|
| 524 |
if (purchase.getCompleteTimestamp().isAfter(LocalDate.of(2019, 9, 1).atStartOfDay())) {
|
536 |
if (purchase.getCompleteTimestamp().isAfter(LocalDate.of(2019, 9, 1).atStartOfDay())) {
|
| 525 |
schemes = schemeRepository.selectActiveAll(SchemeType.OUT, partnerType, fofoOrder.getCreateTimestamp());
|
537 |
schemes = schemeRepository.selectActiveAll(SchemeType.OUT, partnerType, fofoOrder.getCreateTimestamp());
|
| 526 |
} else {
|
538 |
} else {
|
| Line 606... |
Line 618... |
| 606 |
return schemes;
|
618 |
return schemes;
|
| 607 |
}
|
619 |
}
|
| 608 |
|
620 |
|
| 609 |
@Override
|
621 |
@Override
|
| 610 |
public void reverseSchemes(List<InventoryItem> inventoryItems, int priceDropId, String reversalReason)
|
622 |
public void reverseSchemes(List<InventoryItem> inventoryItems, int priceDropId, String reversalReason)
|
| 611 |
throws Exception {
|
623 |
throws ProfitMandiBusinessException {
|
| 612 |
|
- |
|
| 613 |
Map<Integer, List<InventoryItem>> purchaseInventoryListMap = inventoryItems.stream()
|
624 |
Map<Integer, List<InventoryItem>> purchaseInventoryListMap = inventoryItems.stream()
|
| 614 |
.collect(Collectors.groupingBy(InventoryItem::getPurchaseId, Collectors.toList()));
|
625 |
.collect(Collectors.groupingBy(InventoryItem::getPurchaseId, Collectors.toList()));
|
| 615 |
|
626 |
|
| 616 |
for (Map.Entry<Integer, List<InventoryItem>> purchaseEntry : purchaseInventoryListMap.entrySet()) {
|
627 |
for (Map.Entry<Integer, List<InventoryItem>> purchaseEntry : purchaseInventoryListMap.entrySet()) {
|
| 617 |
float amountToCredit = 0;
|
628 |
float amountToCredit = 0;
|
| Line 689... |
Line 700... |
| 689 |
walletService.rollbackAmountFromWallet(fofoId, amount, reversalReference, walletReferenceType,
|
700 |
walletService.rollbackAmountFromWallet(fofoId, amount, reversalReference, walletReferenceType,
|
| 690 |
reversalReason);
|
701 |
reversalReason);
|
| 691 |
}
|
702 |
}
|
| 692 |
}
|
703 |
}
|
| 693 |
|
704 |
|
| - |
|
705 |
@Override
|
| - |
|
706 |
public double getTotalMargin(int itemId, PartnerType partnerType, LocalDateTime dateTime) {
|
| - |
|
707 |
Session session = sessionFactory.getCurrentSession();
|
| - |
|
708 |
CriteriaBuilder cb = session.getCriteriaBuilder();
|
| - |
|
709 |
CriteriaQuery<Double> criteriaQuery = cb.createQuery(Double.class);
|
| - |
|
710 |
Root<SchemeItem> schemeItem = criteriaQuery.from(SchemeItem.class);
|
| - |
|
711 |
Root<Scheme> scheme = criteriaQuery.from(Scheme.class);
|
| - |
|
712 |
Predicate schemePredicate = cb.equal(scheme.get(ProfitMandiConstants.AMOUNT_TYPE), AmountType.PERCENTAGE);
|
| - |
|
713 |
Predicate lessThanPredicate = cb.lessThanOrEqualTo(scheme.get(ProfitMandiConstants.END_DATE_TIME), dateTime);
|
| - |
|
714 |
Predicate greaterThanPredicate = cb.greaterThanOrEqualTo(scheme.get(ProfitMandiConstants.START_DATE_TIME),
|
| - |
|
715 |
dateTime);
|
| - |
|
716 |
Predicate joinPredicate = cb.equal(scheme.get("id"), schemeItem.get("schemeId"));
|
| - |
|
717 |
Predicate schemeItemPredicate = cb.equal(schemeItem.get(ProfitMandiConstants.ITEM_ID), itemId);
|
| - |
|
718 |
criteriaQuery.select(cb.sum(scheme.get(ProfitMandiConstants.AMOUNT))).where(schemePredicate, lessThanPredicate,
|
| - |
|
719 |
greaterThanPredicate, schemeItemPredicate, joinPredicate);
|
| - |
|
720 |
|
| - |
|
721 |
Query<Double> query = session.createQuery(criteriaQuery);
|
| - |
|
722 |
return query.getSingleResult() + ProfitMandiConstants.SCHEME_INVESTMENT_MARGIN;
|
| - |
|
723 |
|
| - |
|
724 |
}
|
| - |
|
725 |
|
| 694 |
/*
|
726 |
/*
|
| 695 |
* @Override public void updateSchmesForModel(int catalogId) throws
|
727 |
* @Override public void updateSchmesForModel(int catalogId) throws
|
| 696 |
* ProfitMandiBusinessException { List<Item> items =
|
728 |
* ProfitMandiBusinessException { List<Item> items =
|
| 697 |
* itemRepository.selectAllByCatalogItemId(catalogId); Map<Integer, Scheme>
|
729 |
* itemRepository.selectAllByCatalogItemId(catalogId); Map<Integer, Scheme>
|
| 698 |
* schemes = schemeRepository .selectAllByItemIds(items.stream().map(x ->
|
730 |
* schemes = schemeRepository .selectAllByItemIds(items.stream().map(x ->
|