| Line 1... |
Line 1... |
| 1 |
package com.spice.profitmandi.service.scheme;
|
1 |
package com.spice.profitmandi.service.scheme;
|
| 2 |
|
2 |
|
| 3 |
import java.time.LocalDateTime;
|
3 |
import java.time.LocalDateTime;
|
| 4 |
import java.util.ArrayList;
|
4 |
import java.util.ArrayList;
|
| 5 |
import java.util.Arrays;
|
- |
|
| 6 |
import java.util.HashMap;
|
5 |
import java.util.HashMap;
|
| 7 |
import java.util.HashSet;
|
6 |
import java.util.HashSet;
|
| 8 |
import java.util.List;
|
7 |
import java.util.List;
|
| 9 |
import java.util.Map;
|
8 |
import java.util.Map;
|
| 10 |
import java.util.Set;
|
9 |
import java.util.Set;
|
| Line 28... |
Line 27... |
| 28 |
import com.spice.profitmandi.dao.entity.fofo.FofoLineItem;
|
27 |
import com.spice.profitmandi.dao.entity.fofo.FofoLineItem;
|
| 29 |
import com.spice.profitmandi.dao.entity.fofo.FofoOrder;
|
28 |
import com.spice.profitmandi.dao.entity.fofo.FofoOrder;
|
| 30 |
import com.spice.profitmandi.dao.entity.fofo.FofoOrderItem;
|
29 |
import com.spice.profitmandi.dao.entity.fofo.FofoOrderItem;
|
| 31 |
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
|
30 |
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
|
| 32 |
import com.spice.profitmandi.dao.entity.fofo.Purchase;
|
31 |
import com.spice.profitmandi.dao.entity.fofo.Purchase;
|
| - |
|
32 |
import com.spice.profitmandi.dao.entity.fofo.ScanRecord;
|
| 33 |
import com.spice.profitmandi.dao.entity.fofo.SchemeInOut;
|
33 |
import com.spice.profitmandi.dao.entity.fofo.SchemeInOut;
|
| 34 |
import com.spice.profitmandi.dao.entity.fofo.SchemeItem;
|
34 |
import com.spice.profitmandi.dao.entity.fofo.SchemeItem;
|
| 35 |
import com.spice.profitmandi.dao.entity.transaction.Order;
|
- |
|
| 36 |
import com.spice.profitmandi.dao.enumuration.catalog.AmountType;
|
35 |
import com.spice.profitmandi.dao.enumuration.catalog.AmountType;
|
| 37 |
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
|
36 |
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
|
| 38 |
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
|
37 |
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
|
| 39 |
import com.spice.profitmandi.dao.repository.catalog.RetailerSchemeRepository;
|
38 |
import com.spice.profitmandi.dao.repository.catalog.RetailerSchemeRepository;
|
| 40 |
import com.spice.profitmandi.dao.repository.catalog.SchemeRepository;
|
39 |
import com.spice.profitmandi.dao.repository.catalog.SchemeRepository;
|
| Line 43... |
Line 42... |
| 43 |
import com.spice.profitmandi.dao.repository.fofo.FofoLineItemRepository;
|
42 |
import com.spice.profitmandi.dao.repository.fofo.FofoLineItemRepository;
|
| 44 |
import com.spice.profitmandi.dao.repository.fofo.FofoOrderItemRepository;
|
43 |
import com.spice.profitmandi.dao.repository.fofo.FofoOrderItemRepository;
|
| 45 |
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
|
44 |
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
|
| 46 |
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
|
45 |
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
|
| 47 |
import com.spice.profitmandi.dao.repository.fofo.PurchaseRepository;
|
46 |
import com.spice.profitmandi.dao.repository.fofo.PurchaseRepository;
|
| - |
|
47 |
import com.spice.profitmandi.dao.repository.fofo.ScanRecordRepository;
|
| 48 |
import com.spice.profitmandi.dao.repository.fofo.SchemeInOutRepository;
|
48 |
import com.spice.profitmandi.dao.repository.fofo.SchemeInOutRepository;
|
| 49 |
import com.spice.profitmandi.dao.repository.fofo.SchemeItemRepository;
|
49 |
import com.spice.profitmandi.dao.repository.fofo.SchemeItemRepository;
|
| 50 |
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
|
- |
|
| 51 |
import com.spice.profitmandi.service.authentication.RoleManager;
|
50 |
import com.spice.profitmandi.service.authentication.RoleManager;
|
| 52 |
import com.spice.profitmandi.service.order.OrderService;
|
- |
|
| 53 |
import com.spice.profitmandi.service.wallet.WalletService;
|
51 |
import com.spice.profitmandi.service.wallet.WalletService;
|
| 54 |
|
52 |
|
| 55 |
import in.shop2020.model.v1.order.WalletReferenceType;
|
53 |
import in.shop2020.model.v1.order.WalletReferenceType;
|
| 56 |
|
54 |
|
| 57 |
@Component
|
55 |
@Component
|
| Line 62... |
Line 60... |
| 62 |
@Autowired
|
60 |
@Autowired
|
| 63 |
@Qualifier("fofoInventoryItemRepository")
|
61 |
@Qualifier("fofoInventoryItemRepository")
|
| 64 |
private InventoryItemRepository inventoryItemRepository;
|
62 |
private InventoryItemRepository inventoryItemRepository;
|
| 65 |
|
63 |
|
| 66 |
@Autowired
|
64 |
@Autowired
|
| 67 |
private OrderService orderService;
|
65 |
private ScanRecordRepository scanRecordRepository;
|
| 68 |
|
66 |
|
| 69 |
@Autowired
|
67 |
@Autowired
|
| 70 |
private SchemeRepository schemeRepository;
|
68 |
private SchemeRepository schemeRepository;
|
| 71 |
|
69 |
|
| 72 |
@Autowired
|
70 |
@Autowired
|
| Line 102... |
Line 100... |
| 102 |
|
100 |
|
| 103 |
@Autowired
|
101 |
@Autowired
|
| 104 |
private PurchaseRepository purchaseRepository;
|
102 |
private PurchaseRepository purchaseRepository;
|
| 105 |
|
103 |
|
| 106 |
@Autowired
|
104 |
@Autowired
|
| 107 |
private OrderRepository orderRepository;
|
- |
|
| 108 |
|
- |
|
| 109 |
@Autowired
|
- |
|
| 110 |
private FofoOrderRepository fofoOrderRepository;
|
105 |
private FofoOrderRepository fofoOrderRepository;
|
| 111 |
|
106 |
|
| 112 |
@Override
|
107 |
@Override
|
| 113 |
public void saveScheme(int creatorId, CreateSchemeRequest createSchemeRequest) throws ProfitMandiBusinessException {
|
108 |
public void saveScheme(int creatorId, CreateSchemeRequest createSchemeRequest) throws ProfitMandiBusinessException {
|
| 114 |
|
109 |
|
| Line 507... |
Line 502... |
| 507 |
}
|
502 |
}
|
| 508 |
}
|
503 |
}
|
| 509 |
return schemeIds;
|
504 |
return schemeIds;
|
| 510 |
}
|
505 |
}
|
| 511 |
|
506 |
|
| 512 |
private Set<Integer> fofoLineItemSchemesMapToSchemeIds(Map<FofoOrderItem, Set<Scheme>> fofoLineItemSchemesMap) {
|
- |
|
| 513 |
Set<Integer> schemeIds = new HashSet<>();
|
- |
|
| 514 |
for (Map.Entry<FofoOrderItem, Set<Scheme>> inventoryItemSchemesEntry : fofoLineItemSchemesMap.entrySet()) {
|
- |
|
| 515 |
for (Scheme scheme : inventoryItemSchemesEntry.getValue()) {
|
- |
|
| 516 |
schemeIds.add(scheme.getId());
|
- |
|
| 517 |
}
|
- |
|
| 518 |
}
|
- |
|
| 519 |
return schemeIds;
|
- |
|
| 520 |
}
|
- |
|
| 521 |
|
- |
|
| 522 |
private Set<Integer> inventoryItemsToItemIds(List<InventoryItem> inventoryItems) {
|
507 |
private Set<Integer> inventoryItemsToItemIds(List<InventoryItem> inventoryItems) {
|
| 523 |
Set<Integer> itemIds = new HashSet<>();
|
508 |
Set<Integer> itemIds = new HashSet<>();
|
| 524 |
for (InventoryItem inventoryItem : inventoryItems) {
|
509 |
for (InventoryItem inventoryItem : inventoryItems) {
|
| 525 |
itemIds.add(inventoryItem.getItemId());
|
510 |
itemIds.add(inventoryItem.getItemId());
|
| 526 |
}
|
511 |
}
|
| 527 |
return itemIds;
|
512 |
return itemIds;
|
| 528 |
}
|
513 |
}
|
| 529 |
|
514 |
|
| 530 |
private Set<Integer> fofoOrderItemsToItemIds(List<FofoOrderItem> fofoOrderItems) {
|
- |
|
| 531 |
Set<Integer> itemIds = new HashSet<>();
|
- |
|
| 532 |
for (FofoOrderItem fofoOrderItem : fofoOrderItems) {
|
- |
|
| 533 |
itemIds.add(fofoOrderItem.getItemId());
|
- |
|
| 534 |
}
|
- |
|
| 535 |
return itemIds;
|
- |
|
| 536 |
}
|
- |
|
| 537 |
|
- |
|
| 538 |
private Map<Integer, Set<Scheme>> toItemIdSchemesMap(List<SchemeItem> schemeItems, List<Scheme> schemes) {
|
515 |
private Map<Integer, Set<Scheme>> toItemIdSchemesMap(List<SchemeItem> schemeItems, List<Scheme> schemes) {
|
| 539 |
Map<Integer, Scheme> schemeIdSchemesMap = this.toSchemeIdSchemeMap(schemes);
|
516 |
Map<Integer, Scheme> schemeIdSchemesMap = this.toSchemeIdSchemeMap(schemes);
|
| 540 |
Map<Integer, Set<Scheme>> itemIdSchemesMap = new HashMap<>();
|
517 |
Map<Integer, Set<Scheme>> itemIdSchemesMap = new HashMap<>();
|
| 541 |
for (SchemeItem schemeItem : schemeItems) {
|
518 |
for (SchemeItem schemeItem : schemeItems) {
|
| 542 |
if (!itemIdSchemesMap.containsKey(schemeItem.getItemId())) {
|
519 |
if (!itemIdSchemesMap.containsKey(schemeItem.getItemId())) {
|
| Line 567... |
Line 544... |
| 567 |
}
|
544 |
}
|
| 568 |
}
|
545 |
}
|
| 569 |
return inventoryItemSchemsMap;
|
546 |
return inventoryItemSchemsMap;
|
| 570 |
}
|
547 |
}
|
| 571 |
|
548 |
|
| 572 |
private Map<FofoOrderItem, Set<Scheme>> toFofoOrderItemSchemesMap(List<Scheme> schemes,
|
- |
|
| 573 |
List<FofoOrderItem> fofoOrderItems) {
|
- |
|
| 574 |
Set<Integer> schemeIds = new HashSet<>();
|
- |
|
| 575 |
for (Scheme scheme : schemes) {
|
- |
|
| 576 |
schemeIds.add(scheme.getId());
|
- |
|
| 577 |
}
|
- |
|
| 578 |
Set<Integer> itemIds = this.fofoOrderItemsToItemIds(fofoOrderItems);
|
- |
|
| 579 |
List<SchemeItem> schemeItems = schemeItemRepository.selectBySchemeIdsAndItemIds(schemeIds, itemIds);
|
- |
|
| 580 |
|
- |
|
| 581 |
Map<FofoOrderItem, Set<Scheme>> fofoOrderItemSchemsMap = new HashMap<>();
|
- |
|
| 582 |
|
- |
|
| 583 |
if (!schemeItems.isEmpty()) {
|
- |
|
| 584 |
Map<Integer, Set<Scheme>> itemIdSchemesMap = this.toItemIdSchemesMap(schemeItems, schemes);
|
- |
|
| 585 |
for (FofoOrderItem fofoOrderItem : fofoOrderItems) {
|
- |
|
| 586 |
if (itemIdSchemesMap.containsKey(fofoOrderItem.getItemId())) {
|
- |
|
| 587 |
fofoOrderItemSchemsMap.put(fofoOrderItem, itemIdSchemesMap.get(fofoOrderItem.getItemId()));
|
- |
|
| 588 |
}
|
- |
|
| 589 |
}
|
- |
|
| 590 |
}
|
- |
|
| 591 |
return fofoOrderItemSchemsMap;
|
- |
|
| 592 |
}
|
- |
|
| 593 |
|
- |
|
| 594 |
@Override
|
549 |
@Override
|
| 595 |
public void processSchemeIn(int purchaseId, int retailerId) throws ProfitMandiBusinessException {
|
550 |
public void processSchemeIn(int purchaseId, int retailerId) throws ProfitMandiBusinessException {
|
| 596 |
LOGGER.info("Trying to process SchemeIn with purchaseId [{}] and retailerId [{}]", purchaseId, retailerId);
|
551 |
LOGGER.info("Trying to process SchemeIn with purchaseId [{}] and retailerId [{}]", purchaseId, retailerId);
|
| 597 |
Purchase purchase = purchaseRepository.selectByIdAndFofoId(purchaseId, retailerId);
|
552 |
Purchase purchase = purchaseRepository.selectByIdAndFofoId(purchaseId, retailerId);
|
| 598 |
LOGGER.info("purchase is completed = {}", (purchase.getCompleteTimestamp() != null));
|
553 |
LOGGER.info("purchase is completed = {}", (purchase.getCompleteTimestamp() != null));
|
| 599 |
if (purchase.getCompleteTimestamp() != null) {
|
554 |
if (purchase.getCompleteTimestamp() != null) {
|
| - |
|
555 |
/*
|
| - |
|
556 |
* List<Order> orders =
|
| 600 |
List<Order> orders = orderRepository.selectByAirwayBillOrInvoiceNumber(purchase.getPurchaseReference(),
|
557 |
* orderRepository.selectByAirwayBillOrInvoiceNumber(purchase.
|
| 601 |
retailerId);
|
- |
|
| 602 |
LocalDateTime billingTimestamp = purchase.getCreateTimestamp();
|
558 |
* getPurchaseReference(), retailerId);
|
| - |
|
559 |
*/
|
| - |
|
560 |
/*
|
| 603 |
if (!orders.isEmpty()) {
|
561 |
* if (!orders.isEmpty()) { billingTimestamp =
|
| 604 |
billingTimestamp = orders.get(0).getBillingTimestamp();
|
562 |
* orders.get(0).getBillingTimestamp(); }
|
| 605 |
}
|
563 |
*/
|
| 606 |
List<Scheme> schemes = schemeRepository.selectActiveAll(SchemeType.IN, billingTimestamp);
|
564 |
List<Scheme> schemes = schemeRepository.selectActiveAll(SchemeType.IN, purchase.getCompleteTimestamp());
|
| 607 |
float totalCashback = 0;
|
565 |
float totalCashback = 0;
|
| 608 |
if (schemes.isEmpty()) {
|
566 |
if (schemes.isEmpty()) {
|
| 609 |
return;
|
567 |
return;
|
| 610 |
}
|
568 |
}
|
| 611 |
List<InventoryItem> inventoryItems = inventoryItemRepository.selectByPurchaseId(purchaseId);
|
569 |
List<InventoryItem> inventoryItems = inventoryItemRepository.selectByPurchaseId(purchaseId);
|
| Line 713... |
Line 671... |
| 713 |
}
|
671 |
}
|
| 714 |
}
|
672 |
}
|
| 715 |
float taxableSellingPrice = amount / (1 + totalTaxRate / 100);
|
673 |
float taxableSellingPrice = amount / (1 + totalTaxRate / 100);
|
| 716 |
amount = taxableSellingPrice * scheme.getAmount() / 100;
|
674 |
amount = taxableSellingPrice * scheme.getAmount() / 100;
|
| 717 |
} else {
|
675 |
} else {
|
| - |
|
676 |
/*
|
| 718 |
/*List<SchemeInOut> sios = schemeInOutRepository.selectByInventoryItemIds(new HashSet<>(Arrays.asList(inventoryItem.getId())));
|
677 |
* List<SchemeInOut> sios = schemeInOutRepository.selectByInventoryItemIds(new
|
| - |
|
678 |
* HashSet<>(Arrays.asList(inventoryItem.getId()))); List<Integer> schemeIds =
|
| 719 |
List<Integer> schemeIds = sios.stream().filter(x->x.getSchemeType().equals(SchemeType.IN)).map(x->x.getSchemeId()).collect(Collectors.toList());
|
679 |
* sios.stream().filter(x->x.getSchemeType().equals(SchemeType.IN)).map(x->x.
|
| - |
|
680 |
* getSchemeId()).collect(Collectors.toList()); List<Scheme> schemes =
|
| 720 |
List<Scheme> schemes = schemeRepository.selectBySchemeIds(schemeIds, 0, 0);
|
681 |
* schemeRepository.selectBySchemeIds(schemeIds, 0, 0); if(schemes.
|
| 721 |
if(schemes.*/
|
682 |
*/
|
| 722 |
amount = scheme.getAmount();
|
683 |
amount = scheme.getAmount();
|
| 723 |
}
|
684 |
}
|
| 724 |
return amount;
|
685 |
return amount;
|
| 725 |
}
|
686 |
}
|
| 726 |
|
687 |
|
| 727 |
private Map<Integer, InventoryItem> toInventoryItemIdInventoryItemMap(List<InventoryItem> inventoryItems) {
|
- |
|
| 728 |
Map<Integer, InventoryItem> itemIdInventoryItemMap = new HashMap<>();
|
- |
|
| 729 |
for (InventoryItem inventoryItem : inventoryItems) {
|
- |
|
| 730 |
itemIdInventoryItemMap.put(inventoryItem.getId(), inventoryItem);
|
- |
|
| 731 |
}
|
- |
|
| 732 |
return itemIdInventoryItemMap;
|
- |
|
| 733 |
}
|
- |
|
| 734 |
|
- |
|
| 735 |
private Set<Integer> toInventoryItemIds(Set<FofoOrderItem> fofoOrderItems) {
|
- |
|
| 736 |
Set<Integer> inventoryItemIds = new HashSet<>();
|
- |
|
| 737 |
// Map<Integer, Set<FofoLineItem>> fofoOrderItemIdFofoLineItemsMap =
|
- |
|
| 738 |
// this.toFofoOrderItemIdFofoLineItems(fofoOrderItems);
|
- |
|
| 739 |
for (FofoOrderItem fofoOrderItem : fofoOrderItems) {
|
- |
|
| 740 |
for (FofoLineItem fofoLineItem : fofoOrderItem.getFofoLineItems()) {
|
- |
|
| 741 |
inventoryItemIds.add(fofoLineItem.getInventoryItemId());
|
- |
|
| 742 |
}
|
- |
|
| 743 |
}
|
- |
|
| 744 |
return inventoryItemIds;
|
- |
|
| 745 |
}
|
- |
|
| 746 |
|
- |
|
| 747 |
@Override
|
688 |
@Override
|
| 748 |
public void processSchemeOut(int fofoOrderId, int retailerId) throws ProfitMandiBusinessException {
|
689 |
public void processSchemeOut(int fofoOrderId, int retailerId) throws ProfitMandiBusinessException {
|
| 749 |
FofoOrder fofoOrder = fofoOrderRepository.selectByFofoIdAndOrderId(retailerId, fofoOrderId);
|
690 |
FofoOrder fofoOrder = fofoOrderRepository.selectByFofoIdAndOrderId(retailerId, fofoOrderId);
|
| 750 |
List<Scheme> schemes = schemeRepository.selectActiveAll(SchemeType.OUT, fofoOrder.getCreateTimestamp());
|
- |
|
| 751 |
LOGGER.info("Active Schemes {}", schemes);
|
- |
|
| 752 |
float totalCashback = 0;
|
- |
|
| 753 |
int count = 0;
|
- |
|
| 754 |
if (schemes.isEmpty()) {
|
- |
|
| 755 |
return;
|
- |
|
| 756 |
}
|
- |
|
| 757 |
|
691 |
|
| 758 |
List<FofoOrderItem> fofoOrderItems = orderService.getByOrderId(fofoOrderId);
|
692 |
List<ScanRecord> scanRecords = scanRecordRepository.selectAllByOrderId(fofoOrderId);
|
| - |
|
693 |
Set<Integer> inventoryItemIds = scanRecords.stream().map(x -> x.getInventoryItemId())
|
| 759 |
// LOGGER.info("fofoOrderItems {}", fofoOrderItems);
|
694 |
.collect(Collectors.toSet());
|
| - |
|
695 |
Set<InventoryItem> inventoryItems = inventoryItemRepository.selectByIds(inventoryItemIds).stream()
|
| - |
|
696 |
.filter(x -> x.getSerialNumber() != null && !x.getSerialNumber().equals(""))
|
| - |
|
697 |
.collect(Collectors.toSet());
|
| 760 |
|
698 |
|
| 761 |
Map<FofoOrderItem, Set<Scheme>> fofoOrderItemSchemesMap = this.toFofoOrderItemSchemesMap(schemes,
|
- |
|
| 762 |
fofoOrderItems);
|
- |
|
| 763 |
|
- |
|
| 764 |
LOGGER.info("fofoOrderItemSchemesMap {}", fofoOrderItemSchemesMap);
|
- |
|
| 765 |
|
- |
|
| 766 |
if (fofoOrderItemSchemesMap.isEmpty()) {
|
699 |
if (inventoryItems.size() == 0) {
|
| 767 |
return;
|
700 |
return;
|
| 768 |
}
|
701 |
}
|
| 769 |
|
702 |
|
| 770 |
Set<Integer> inventoryItemIds = this.toInventoryItemIds(fofoOrderItemSchemesMap.keySet());
|
- |
|
| 771 |
|
- |
|
| 772 |
List<InventoryItem> inventoryItems = inventoryItemRepository.selectByIds(inventoryItemIds);
|
- |
|
| 773 |
|
- |
|
| 774 |
Map<Integer, InventoryItem> inventoryItemIdInventoryItemMap = this
|
- |
|
| 775 |
.toInventoryItemIdInventoryItemMap(inventoryItems);
|
- |
|
| 776 |
|
- |
|
| 777 |
Map<FofoOrderItem, Set<Scheme>> notAllFofoOrderItemSchemesMap = new HashMap<>();
|
- |
|
| 778 |
Map<FofoOrderItem, Set<Scheme>> allFofoOrderItemSchemesMap = new HashMap<>();
|
- |
|
| 779 |
|
- |
|
| 780 |
for (Map.Entry<FofoOrderItem, Set<Scheme>> fofoOrderItemSchemesEntry : fofoOrderItemSchemesMap.entrySet()) {
|
- |
|
| 781 |
Set<Scheme> notAllSchemes = new HashSet<>();
|
- |
|
| 782 |
Set<Scheme> allSchemes = new HashSet<>();
|
- |
|
| 783 |
for (Scheme scheme : fofoOrderItemSchemesEntry.getValue()) {
|
- |
|
| 784 |
if (!scheme.isRetailerAll()) {
|
- |
|
| 785 |
notAllSchemes.add(scheme);
|
- |
|
| 786 |
} else {
|
- |
|
| 787 |
allSchemes.add(scheme);
|
- |
|
| 788 |
}
|
- |
|
| 789 |
}
|
- |
|
| 790 |
notAllFofoOrderItemSchemesMap.put(fofoOrderItemSchemesEntry.getKey(), notAllSchemes);
|
- |
|
| 791 |
allFofoOrderItemSchemesMap.put(fofoOrderItemSchemesEntry.getKey(), allSchemes);
|
- |
|
| 792 |
}
|
- |
|
| 793 |
|
- |
|
| 794 |
for (Map.Entry<FofoOrderItem, Set<Scheme>> allFofoOrderItemSchemesEntry : allFofoOrderItemSchemesMap
|
- |
|
| 795 |
.entrySet()) {
|
- |
|
| 796 |
for (FofoLineItem fofoLineItem : allFofoOrderItemSchemesEntry.getKey().getFofoLineItems()) {
|
- |
|
| 797 |
float itemCashback = 0;
|
703 |
float totalCashback = 0;
|
| 798 |
for (Scheme scheme : allFofoOrderItemSchemesEntry.getValue()) {
|
- |
|
| 799 |
itemCashback += this.createSchemeInOut(scheme,
|
- |
|
| 800 |
inventoryItemIdInventoryItemMap.get(fofoLineItem.getInventoryItemId()));
|
- |
|
| 801 |
}
|
- |
|
| 802 |
if (itemCashback > 0) {
|
- |
|
| 803 |
totalCashback += itemCashback;
|
- |
|
| 804 |
count += 1;
|
704 |
int count = 0;
|
| 805 |
}
|
- |
|
| 806 |
}
|
- |
|
| 807 |
}
|
- |
|
| 808 |
|
- |
|
| 809 |
Set<Integer> schemeIds = this.fofoLineItemSchemesMapToSchemeIds(notAllFofoOrderItemSchemesMap);
|
- |
|
| 810 |
|
- |
|
| 811 |
if (!schemeIds.isEmpty()) {
|
- |
|
| 812 |
List<Integer> foundSchemeIds = retailerSchemeRepository.selectSchemeIds(schemeIds, retailerId);
|
- |
|
| 813 |
|
705 |
|
| 814 |
for (Map.Entry<FofoOrderItem, Set<Scheme>> notAllFofoOrderItemSchemesEntry : notAllFofoOrderItemSchemesMap
|
706 |
for (InventoryItem inventoryItem : inventoryItems) {
|
| 815 |
.entrySet()) {
|
707 |
int itemCashback = 0;
|
| 816 |
for (FofoLineItem fofoLineItem : notAllFofoOrderItemSchemesEntry.getKey().getFofoLineItems()) {
|
708 |
Purchase purchase = purchaseRepository.selectByIdAndFofoId(inventoryItem.getPurchaseId(), retailerId);
|
| 817 |
float itemCashback = 0;
|
709 |
Set<Integer> schemeIds = new HashSet<>(
|
| 818 |
for (Scheme scheme : notAllFofoOrderItemSchemesEntry.getValue()) {
|
710 |
schemeItemRepository.selectSchemeIdByItemId(inventoryItem.getItemId()));
|
| - |
|
711 |
List<Scheme> schemes = schemeRepository.selectActiveAll(SchemeType.OUT, purchase.getCompleteTimestamp())
|
| 819 |
if (foundSchemeIds.contains(scheme.getId())) {
|
712 |
.stream().filter(x -> schemeIds.contains(x.getId())).collect(Collectors.toList());
|
| 820 |
itemCashback += this.createSchemeInOut(scheme,
|
713 |
for (Scheme scheme : schemes) {
|
| 821 |
inventoryItemIdInventoryItemMap.get(fofoLineItem.getInventoryItemId()));
|
714 |
itemCashback += this.createSchemeInOut(scheme, inventoryItem);
|
| 822 |
}
|
- |
|
| 823 |
}
|
715 |
}
|
| 824 |
if (itemCashback > 0) {
|
716 |
if (itemCashback > 0) {
|
| - |
|
717 |
count++;
|
| 825 |
totalCashback += itemCashback;
|
718 |
totalCashback += itemCashback;
|
| 826 |
count += 1;
|
- |
|
| 827 |
}
|
- |
|
| 828 |
}
|
- |
|
| 829 |
}
|
719 |
}
|
| 830 |
}
|
720 |
}
|
| 831 |
if (totalCashback > 0) {
|
721 |
if (count > 0) {
|
| 832 |
walletService.addAmountToWallet(retailerId, fofoOrderId, WalletReferenceType.SCHEME_OUT,
|
722 |
walletService.addAmountToWallet(retailerId, fofoOrderId, WalletReferenceType.SCHEME_OUT,
|
| 833 |
"Sales margin for invoice number " + fofoOrder.getInvoiceNumber() + ". Total " + count + " pc(s)",
|
723 |
"Sales margin for invoice number " + fofoOrder.getInvoiceNumber() + ". Total " + count + " pc(s)",
|
| 834 |
totalCashback);
|
724 |
totalCashback);
|
| 835 |
fofoOrder.setCashback(totalCashback);
|
725 |
fofoOrder.setCashback(totalCashback);
|
| 836 |
fofoOrderRepository.persist(fofoOrder);
|
726 |
fofoOrderRepository.persist(fofoOrder);
|