| Line 1... |
Line 1... |
| 1 |
package com.spice.profitmandi.service.scheme;
|
1 |
package com.spice.profitmandi.service.scheme;
|
| 2 |
|
2 |
|
| - |
|
3 |
import java.time.LocalDate;
|
| 3 |
import java.time.LocalDateTime;
|
4 |
import java.time.LocalDateTime;
|
| 4 |
import java.util.ArrayList;
|
5 |
import java.util.ArrayList;
|
| 5 |
import java.util.HashMap;
|
6 |
import java.util.HashMap;
|
| 6 |
import java.util.HashSet;
|
7 |
import java.util.HashSet;
|
| 7 |
import java.util.List;
|
8 |
import java.util.List;
|
| Line 375... |
Line 376... |
| 375 |
Purchase purchase = purchaseRepository.selectByIdAndFofoId(purchaseId, retailerId);
|
376 |
Purchase purchase = purchaseRepository.selectByIdAndFofoId(purchaseId, retailerId);
|
| 376 |
PartnerType partnerType = partnerTypeChangeService.getTypeOnDate(retailerId,
|
377 |
PartnerType partnerType = partnerTypeChangeService.getTypeOnDate(retailerId,
|
| 377 |
purchase.getCreateTimestamp().toLocalDate());
|
378 |
purchase.getCreateTimestamp().toLocalDate());
|
| 378 |
LOGGER.info("purchase is completed = {}", (purchase.getCompleteTimestamp() != null));
|
379 |
LOGGER.info("purchase is completed = {}", (purchase.getCompleteTimestamp() != null));
|
| 379 |
if (purchase.getCompleteTimestamp() != null) {
|
380 |
if (purchase.getCompleteTimestamp() != null) {
|
| 380 |
List<Scheme> schemes = schemeRepository.selectActiveAll(SchemeType.IN, purchase.getCompleteTimestamp());
|
381 |
List<Scheme> schemes = schemeRepository.selectActiveAll(SchemeType.IN, partnerType,
|
| - |
|
382 |
purchase.getCompleteTimestamp());
|
| 381 |
float totalCashback = 0;
|
383 |
float totalCashback = 0;
|
| 382 |
if (schemes.isEmpty()) {
|
384 |
if (schemes.isEmpty()) {
|
| 383 |
return;
|
385 |
return;
|
| 384 |
}
|
386 |
}
|
| 385 |
List<InventoryItem> inventoryItems = inventoryItemRepository.selectByPurchaseId(purchaseId);
|
387 |
List<InventoryItem> inventoryItems = inventoryItemRepository.selectByPurchaseId(purchaseId);
|
| Line 485... |
Line 487... |
| 485 |
|
487 |
|
| 486 |
@Override
|
488 |
@Override
|
| 487 |
public void processSchemeOut(int fofoOrderId, int retailerId) throws ProfitMandiBusinessException {
|
489 |
public void processSchemeOut(int fofoOrderId, int retailerId) throws ProfitMandiBusinessException {
|
| 488 |
FofoOrder fofoOrder = fofoOrderRepository.selectByFofoIdAndOrderId(retailerId, fofoOrderId);
|
490 |
FofoOrder fofoOrder = fofoOrderRepository.selectByFofoIdAndOrderId(retailerId, fofoOrderId);
|
| 489 |
|
491 |
|
| - |
|
492 |
PartnerType partnerType = partnerTypeChangeService.getTypeOnDate(retailerId,
|
| - |
|
493 |
fofoOrder.getCreateTimestamp().toLocalDate());
|
| - |
|
494 |
|
| 490 |
List<ScanRecord> scanRecords = scanRecordRepository.selectAllByOrderId(fofoOrderId);
|
495 |
List<ScanRecord> scanRecords = scanRecordRepository.selectAllByOrderId(fofoOrderId);
|
| 491 |
Set<Integer> inventoryItemIds = scanRecords.stream().map(x -> x.getInventoryItemId())
|
496 |
Set<Integer> inventoryItemIds = scanRecords.stream().map(x -> x.getInventoryItemId())
|
| 492 |
.collect(Collectors.toSet());
|
497 |
.collect(Collectors.toSet());
|
| 493 |
Set<InventoryItem> inventoryItems = inventoryItemRepository.selectByIds(inventoryItemIds).stream()
|
498 |
Set<InventoryItem> inventoryItems = inventoryItemRepository.selectByIds(inventoryItemIds).stream()
|
| 494 |
.filter(x -> x.getSerialNumber() != null && !x.getSerialNumber().equals(""))
|
499 |
.filter(x -> x.getSerialNumber() != null && !x.getSerialNumber().equals(""))
|
| Line 499... |
Line 504... |
| 499 |
}
|
504 |
}
|
| 500 |
|
505 |
|
| 501 |
float totalCashback = 0;
|
506 |
float totalCashback = 0;
|
| 502 |
int count = 0;
|
507 |
int count = 0;
|
| 503 |
|
508 |
|
| - |
|
509 |
Set<Scheme> allFixedSchemes = schemeRepository
|
| 504 |
Set<Scheme> allFixedSchemes = schemeRepository.selectActiveAll(SchemeType.OUT, fofoOrder.getCreateTimestamp())
|
510 |
.selectActiveAll(SchemeType.OUT, partnerType, fofoOrder.getCreateTimestamp()).stream()
|
| 505 |
.stream().filter(scheme -> scheme.getAmountType().equals(AmountType.FIXED)).collect(Collectors.toSet());
|
511 |
.filter(scheme -> scheme.getAmountType().equals(AmountType.FIXED)).collect(Collectors.toSet());
|
| 506 |
|
512 |
|
| 507 |
for (InventoryItem inventoryItem : inventoryItems) {
|
513 |
for (InventoryItem inventoryItem : inventoryItems) {
|
| 508 |
int itemCashback = 0;
|
514 |
int itemCashback = 0;
|
| 509 |
Purchase purchase = purchaseRepository.selectByIdAndFofoId(inventoryItem.getPurchaseId(), retailerId);
|
515 |
Purchase purchase = purchaseRepository.selectByIdAndFofoId(inventoryItem.getPurchaseId(), retailerId);
|
| 510 |
Set<Integer> schemeIds = new HashSet<>(
|
516 |
Set<Integer> schemeIds = new HashSet<>(
|
| 511 |
schemeItemRepository.selectSchemeIdByItemId(inventoryItem.getItemId()));
|
517 |
schemeItemRepository.selectSchemeIdByItemId(inventoryItem.getItemId()));
|
| - |
|
518 |
List<Scheme> schemes = null;
|
| - |
|
519 |
if (purchase.getCompleteTimestamp().isAfter(LocalDate.of(2019, 9, 1).atStartOfDay())) {
|
| 512 |
Set<Scheme> schemes = schemeRepository.selectActiveAll(SchemeType.OUT, purchase.getCompleteTimestamp())
|
520 |
schemes = schemeRepository.selectActiveAll(SchemeType.OUT, partnerType, fofoOrder.getCreateTimestamp());
|
| - |
|
521 |
} else {
|
| - |
|
522 |
schemes = schemeRepository.selectActiveAll(SchemeType.OUT, partnerType,
|
| - |
|
523 |
purchase.getCompleteTimestamp());
|
| - |
|
524 |
}
|
| 513 |
.stream().filter(x -> x.getAmountType().equals(AmountType.PERCENTAGE)).collect(Collectors.toSet());
|
525 |
Set<Scheme> schemesSet = schemes.stream().filter(x -> x.getAmountType().equals(AmountType.PERCENTAGE))
|
| - |
|
526 |
.collect(Collectors.toSet());
|
| 514 |
schemes.addAll(allFixedSchemes);
|
527 |
schemesSet.addAll(allFixedSchemes);
|
| 515 |
schemes = schemes.stream().filter(x -> schemeIds.contains(x.getId())).collect(Collectors.toSet());
|
528 |
schemesSet = schemesSet.stream().filter(x -> schemeIds.contains(x.getId())).collect(Collectors.toSet());
|
| 516 |
for (Scheme scheme : schemes) {
|
529 |
for (Scheme scheme : schemesSet) {
|
| 517 |
itemCashback += this.createSchemeInOut(scheme, inventoryItem);
|
530 |
itemCashback += this.createSchemeInOut(scheme, inventoryItem);
|
| 518 |
}
|
531 |
}
|
| 519 |
if (itemCashback > 0) {
|
532 |
if (itemCashback > 0) {
|
| 520 |
count++;
|
533 |
count++;
|
| 521 |
totalCashback += itemCashback;
|
534 |
totalCashback += itemCashback;
|