| Line 17... |
Line 17... |
| 17 |
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
|
17 |
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
|
| 18 |
import com.spice.profitmandi.common.model.CreateSchemeRequest;
|
18 |
import com.spice.profitmandi.common.model.CreateSchemeRequest;
|
| 19 |
import com.spice.profitmandi.common.model.ProfitMandiConstants;
|
19 |
import com.spice.profitmandi.common.model.ProfitMandiConstants;
|
| 20 |
import com.spice.profitmandi.common.model.SchemeModel;
|
20 |
import com.spice.profitmandi.common.model.SchemeModel;
|
| 21 |
import com.spice.profitmandi.common.util.StringUtils;
|
21 |
import com.spice.profitmandi.common.util.StringUtils;
|
| - |
|
22 |
import com.spice.profitmandi.dao.entity.catalog.Item;
|
| 22 |
import com.spice.profitmandi.dao.entity.catalog.RetailerScheme;
|
23 |
import com.spice.profitmandi.dao.entity.catalog.RetailerScheme;
|
| 23 |
import com.spice.profitmandi.dao.entity.catalog.Scheme;
|
24 |
import com.spice.profitmandi.dao.entity.catalog.Scheme;
|
| 24 |
import com.spice.profitmandi.dao.entity.fofo.FofoLineItem;
|
25 |
import com.spice.profitmandi.dao.entity.fofo.FofoLineItem;
|
| 25 |
import com.spice.profitmandi.dao.entity.fofo.FofoOrderItem;
|
26 |
import com.spice.profitmandi.dao.entity.fofo.FofoOrderItem;
|
| 26 |
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
|
27 |
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
|
| - |
|
28 |
import com.spice.profitmandi.dao.entity.fofo.Purchase;
|
| 27 |
import com.spice.profitmandi.dao.entity.fofo.SchemeInOut;
|
29 |
import com.spice.profitmandi.dao.entity.fofo.SchemeInOut;
|
| 28 |
import com.spice.profitmandi.dao.entity.fofo.SchemeItem;
|
30 |
import com.spice.profitmandi.dao.entity.fofo.SchemeItem;
|
| 29 |
import com.spice.profitmandi.dao.enumuration.catalog.SchemeAmountType;
|
31 |
import com.spice.profitmandi.dao.enumuration.catalog.SchemeAmountType;
|
| 30 |
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
|
32 |
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
|
| 31 |
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
|
33 |
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
|
| Line 33... |
Line 35... |
| 33 |
import com.spice.profitmandi.dao.repository.catalog.SchemeRepository;
|
35 |
import com.spice.profitmandi.dao.repository.catalog.SchemeRepository;
|
| 34 |
import com.spice.profitmandi.dao.repository.dtr.RetailerRepository;
|
36 |
import com.spice.profitmandi.dao.repository.dtr.RetailerRepository;
|
| 35 |
import com.spice.profitmandi.dao.repository.fofo.FofoLineItemRepository;
|
37 |
import com.spice.profitmandi.dao.repository.fofo.FofoLineItemRepository;
|
| 36 |
import com.spice.profitmandi.dao.repository.fofo.FofoOrderItemRepository;
|
38 |
import com.spice.profitmandi.dao.repository.fofo.FofoOrderItemRepository;
|
| 37 |
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
|
39 |
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
|
| - |
|
40 |
import com.spice.profitmandi.dao.repository.fofo.PurchaseRepository;
|
| 38 |
import com.spice.profitmandi.dao.repository.fofo.SchemeInOutRepository;
|
41 |
import com.spice.profitmandi.dao.repository.fofo.SchemeInOutRepository;
|
| 39 |
import com.spice.profitmandi.dao.repository.fofo.SchemeItemRepository;
|
42 |
import com.spice.profitmandi.dao.repository.fofo.SchemeItemRepository;
|
| 40 |
import com.spice.profitmandi.service.inventory.OrderService;
|
43 |
import com.spice.profitmandi.service.inventory.OrderService;
|
| 41 |
import com.spice.profitmandi.service.wallet.WalletService;
|
44 |
import com.spice.profitmandi.service.wallet.WalletService;
|
| 42 |
|
45 |
|
| Line 79... |
Line 82... |
| 79 |
private FofoOrderItemRepository fofoOrderItemRepository;
|
82 |
private FofoOrderItemRepository fofoOrderItemRepository;
|
| 80 |
|
83 |
|
| 81 |
@Autowired
|
84 |
@Autowired
|
| 82 |
private FofoLineItemRepository fofoLineItemRepository;
|
85 |
private FofoLineItemRepository fofoLineItemRepository;
|
| 83 |
|
86 |
|
| - |
|
87 |
@Autowired
|
| - |
|
88 |
private PurchaseRepository purchaseRepository;
|
| - |
|
89 |
|
| 84 |
@Override
|
90 |
@Override
|
| 85 |
public void saveScheme(int creatorId, CreateSchemeRequest createSchemeRequest) throws ProfitMandiBusinessException {
|
91 |
public void saveScheme(int creatorId, CreateSchemeRequest createSchemeRequest) throws ProfitMandiBusinessException {
|
| 86 |
|
92 |
|
| 87 |
this.validateCreateSchemeRequest(createSchemeRequest);
|
93 |
this.validateCreateSchemeRequest(createSchemeRequest);
|
| 88 |
|
94 |
|
| Line 175... |
Line 181... |
| 175 |
if(!scheme.isRetailerAll()){
|
181 |
if(!scheme.isRetailerAll()){
|
| 176 |
List<Integer> retailerIds = retailerSchemeRepository.selectRetailerIdsBySchemeId(scheme.getId());
|
182 |
List<Integer> retailerIds = retailerSchemeRepository.selectRetailerIdsBySchemeId(scheme.getId());
|
| 177 |
scheme.getRetailerIds().addAll(retailerIds);
|
183 |
scheme.getRetailerIds().addAll(retailerIds);
|
| 178 |
}
|
184 |
}
|
| 179 |
List<Integer> itemIds = schemeItemRepository.selectItemIdsBySchemeId(scheme.getId());
|
185 |
List<Integer> itemIds = schemeItemRepository.selectItemIdsBySchemeId(scheme.getId());
|
| - |
|
186 |
List<Item> items = itemRepository.selectByIds(new HashSet<>(itemIds));
|
| 180 |
scheme.setItemIds(new HashSet<>(itemIds));
|
187 |
scheme.setItemStringMap(this.toItemStringMap(items));
|
| 181 |
return scheme;
|
188 |
return scheme;
|
| 182 |
}
|
189 |
}
|
| 183 |
|
190 |
|
| - |
|
191 |
public Map<Integer, String> toItemStringMap(List<Item> items){
|
| - |
|
192 |
Map<Integer, String> itemMap = new HashMap<>();
|
| - |
|
193 |
for(Item item : items){
|
| - |
|
194 |
itemMap.put(item.getId(), this.getItemString(item));
|
| - |
|
195 |
}
|
| - |
|
196 |
return itemMap;
|
| - |
|
197 |
}
|
| - |
|
198 |
|
| - |
|
199 |
public String getItemString(Item item){
|
| - |
|
200 |
StringBuilder itemString = new StringBuilder();
|
| - |
|
201 |
if(item.getBrand() != null && !item.getBrand().isEmpty()){
|
| - |
|
202 |
itemString.append(item.getBrand().trim());
|
| - |
|
203 |
}
|
| - |
|
204 |
itemString.append(" ");
|
| - |
|
205 |
if(item.getModelName() != null && !item.getModelName().isEmpty()){
|
| - |
|
206 |
itemString.append(item.getModelName().trim());
|
| - |
|
207 |
}
|
| - |
|
208 |
itemString.append(" ");
|
| - |
|
209 |
if(item.getModelNumber() != null && !item.getModelNumber().isEmpty()){
|
| - |
|
210 |
itemString.append(item.getModelNumber().trim());
|
| - |
|
211 |
}
|
| - |
|
212 |
itemString.append(" ");
|
| - |
|
213 |
if(item.getColor() != null && !item.getColor().isEmpty()){
|
| - |
|
214 |
itemString.append(item.getColor().trim());
|
| - |
|
215 |
}
|
| - |
|
216 |
return itemString.toString();
|
| - |
|
217 |
}
|
| - |
|
218 |
|
| - |
|
219 |
private Set<Integer> schemeItemsToItemIds(List<SchemeItem> schemeItems){
|
| - |
|
220 |
Set<Integer> itemIds = new HashSet<>();
|
| - |
|
221 |
for(SchemeItem schemeItem : schemeItems){
|
| - |
|
222 |
itemIds.add(schemeItem.getItemId());
|
| - |
|
223 |
}
|
| - |
|
224 |
return itemIds;
|
| - |
|
225 |
}
|
| - |
|
226 |
|
| 184 |
@Override
|
227 |
@Override
|
| 185 |
public List<SchemeModel> getAllSchemeModels(LocalDateTime startDateTime, LocalDateTime endDateTime) {
|
228 |
public List<SchemeModel> getAllSchemeModels(LocalDateTime startDateTime, LocalDateTime endDateTime) {
|
| 186 |
List<Scheme> schemes = schemeRepository.selectAllBetweenCreateTimestamp(startDateTime, endDateTime);
|
229 |
List<Scheme> schemes = schemeRepository.selectAllBetweenCreateTimestamp(startDateTime, endDateTime);
|
| 187 |
Map<Integer, Scheme> schemeIdSchemeMap = this.toSchemeIdSchemeMap(schemes);
|
230 |
Map<Integer, Scheme> schemeIdSchemeMap = this.toSchemeIdSchemeMap(schemes);
|
| 188 |
List<SchemeItem> schemeItems = schemeItemRepository.selectBySchemeIds(schemeIdSchemeMap.keySet());
|
231 |
List<SchemeItem> schemeItems = schemeItemRepository.selectBySchemeIds(schemeIdSchemeMap.keySet());
|
| - |
|
232 |
Set<Integer> itemIds = this.schemeItemsToItemIds(schemeItems);
|
| - |
|
233 |
List<Item> items = itemRepository.selectByIds(itemIds);
|
| - |
|
234 |
Map<Integer, String> itemStringMap = this.toItemStringMap(items);
|
| 189 |
this.addItemIdsToSchemes(schemeItems, schemeIdSchemeMap);
|
235 |
this.addItemIdsToSchemes(schemeItems, schemeIdSchemeMap, itemStringMap);
|
| 190 |
List<RetailerScheme> retailerSchemes = retailerSchemeRepository.selectBySchemeIds(schemeIdSchemeMap.keySet());
|
236 |
List<RetailerScheme> retailerSchemes = retailerSchemeRepository.selectBySchemeIds(schemeIdSchemeMap.keySet());
|
| 191 |
this.addRetailerIdsToSchemes(retailerSchemes, schemeIdSchemeMap);
|
237 |
this.addRetailerIdsToSchemes(retailerSchemes, schemeIdSchemeMap);
|
| 192 |
return this.toSchemeModels(schemeIdSchemeMap);
|
238 |
return this.toSchemeModels(schemeIdSchemeMap);
|
| 193 |
}
|
239 |
}
|
| 194 |
|
240 |
|
| 195 |
private void addItemIdsToSchemes(List<SchemeItem> schemeItems, Map<Integer, Scheme> schemeIdSchemeMap){
|
241 |
private void addItemIdsToSchemes(List<SchemeItem> schemeItems, Map<Integer, Scheme> schemeIdSchemeMap, Map<Integer, String> itemStringMap){
|
| 196 |
for(SchemeItem schemeItem : schemeItems){
|
242 |
for(SchemeItem schemeItem : schemeItems){
|
| 197 |
schemeIdSchemeMap.get(schemeItem.getSchemeId())
|
243 |
schemeIdSchemeMap.get(schemeItem.getSchemeId())
|
| 198 |
.getItemIds()
|
244 |
.getItemStringMap()
|
| 199 |
.add(schemeItem.getItemId());
|
245 |
.put(schemeItem.getItemId(), itemStringMap.get(schemeItem.getItemId()));
|
| 200 |
}
|
246 |
}
|
| 201 |
}
|
247 |
}
|
| 202 |
|
248 |
|
| 203 |
private void addRetailerIdsToSchemes(List<RetailerScheme> retailerSchemes, Map<Integer, Scheme> schemeIdSchemeMap){
|
249 |
private void addRetailerIdsToSchemes(List<RetailerScheme> retailerSchemes, Map<Integer, Scheme> schemeIdSchemeMap){
|
| 204 |
for(RetailerScheme retailerScheme : retailerSchemes){
|
250 |
for(RetailerScheme retailerScheme : retailerSchemes){
|
| Line 228... |
Line 274... |
| 228 |
schemeModel.setEndDateTime(StringUtils.toString(scheme.getEndDateTime()));
|
274 |
schemeModel.setEndDateTime(StringUtils.toString(scheme.getEndDateTime()));
|
| 229 |
schemeModel.setCreateTimestamp(StringUtils.toString(scheme.getCreateTimestamp()));
|
275 |
schemeModel.setCreateTimestamp(StringUtils.toString(scheme.getCreateTimestamp()));
|
| 230 |
schemeModel.setActiveTimestamp(StringUtils.toString(scheme.getActiveTimestamp()));
|
276 |
schemeModel.setActiveTimestamp(StringUtils.toString(scheme.getActiveTimestamp()));
|
| 231 |
schemeModel.setExpireTimestamp(StringUtils.toString(scheme.getExpireTimestamp()));
|
277 |
schemeModel.setExpireTimestamp(StringUtils.toString(scheme.getExpireTimestamp()));
|
| 232 |
schemeModel.setCreatedBy(scheme.getCreatedBy());
|
278 |
schemeModel.setCreatedBy(scheme.getCreatedBy());
|
| 233 |
schemeModel.setItemIds(scheme.getItemIds());
|
279 |
schemeModel.setItemStringMap(scheme.getItemStringMap());
|
| 234 |
schemeModel.setRetailerIds(scheme.getRetailerIds());
|
280 |
schemeModel.setRetailerIds(scheme.getRetailerIds());
|
| 235 |
return schemeModel;
|
281 |
return schemeModel;
|
| 236 |
}
|
282 |
}
|
| 237 |
|
283 |
|
| 238 |
@Override
|
284 |
@Override
|
| Line 254... |
Line 300... |
| 254 |
}
|
300 |
}
|
| 255 |
|
301 |
|
| 256 |
private void processPreviousPurchases(Scheme scheme) throws ProfitMandiBusinessException{
|
302 |
private void processPreviousPurchases(Scheme scheme) throws ProfitMandiBusinessException{
|
| 257 |
List<InventoryItem> inventoryItems = inventoryItemRepository.selectBetweenDates(scheme.getStartDateTime(), LocalDateTime.now());
|
303 |
List<InventoryItem> inventoryItems = inventoryItemRepository.selectBetweenDates(scheme.getStartDateTime(), LocalDateTime.now());
|
| 258 |
List<Integer> itemIds = schemeItemRepository.selectItemIdsBySchemeId(scheme.getId());
|
304 |
List<Integer> itemIds = schemeItemRepository.selectItemIdsBySchemeId(scheme.getId());
|
| - |
|
305 |
List<Item> items = itemRepository.selectByIds(new HashSet<>(itemIds));
|
| - |
|
306 |
Map<Integer, String> itemStringMap = this.toItemStringMap(items);
|
| 259 |
List<InventoryItem> completedInventoryItems = this.toFilteredPurchaseCompletedInventoryItems(inventoryItems, itemIds, true);
|
307 |
List<InventoryItem> completedInventoryItems = this.toFilteredPurchaseCompletedInventoryItems(inventoryItems, itemIds, true);
|
| 260 |
|
308 |
|
| 261 |
if(scheme.isRetailerAll()){
|
309 |
if(scheme.isRetailerAll()){
|
| 262 |
for(InventoryItem inventoryItem : completedInventoryItems){
|
310 |
for(InventoryItem inventoryItem : completedInventoryItems){
|
| 263 |
float cashback = this.createSchemeInOut(scheme, inventoryItem);
|
311 |
float cashback = this.createSchemeInOut(scheme, inventoryItem);
|
| 264 |
walletService.addAmountToWallet(inventoryItem.getFofoId(), inventoryItem.getPurchaseId(), WalletReferenceType.SCHEME_IN, "Added for SCHEME_IN", cashback);
|
312 |
walletService.addAmountToWallet(inventoryItem.getFofoId(), inventoryItem.getPurchaseId(), WalletReferenceType.SCHEME_IN, "Added SCHEME_IN for item "+itemStringMap.get(inventoryItem.getItemId())+" against invoiceNumber ["+inventoryItem.getPurchase().getPurchaseReference() +"]", cashback);
|
| 265 |
}
|
313 |
}
|
| 266 |
}else{
|
314 |
}else{
|
| 267 |
List<Integer> retailerIds = retailerSchemeRepository.selectRetailerIdsBySchemeId(scheme.getId());
|
315 |
List<Integer> retailerIds = retailerSchemeRepository.selectRetailerIdsBySchemeId(scheme.getId());
|
| 268 |
for(InventoryItem inventoryItem : completedInventoryItems){
|
316 |
for(InventoryItem inventoryItem : completedInventoryItems){
|
| 269 |
if(retailerIds.contains(inventoryItem.getFofoId())){
|
317 |
if(retailerIds.contains(inventoryItem.getFofoId())){
|
| 270 |
float cashback = this.createSchemeInOut(scheme, inventoryItem);
|
318 |
float cashback = this.createSchemeInOut(scheme, inventoryItem);
|
| 271 |
walletService.addAmountToWallet(inventoryItem.getFofoId(), inventoryItem.getPurchaseId(), WalletReferenceType.SCHEME_IN, "Added for SCHEME_IN", cashback);
|
319 |
walletService.addAmountToWallet(inventoryItem.getFofoId(), inventoryItem.getPurchaseId(), WalletReferenceType.SCHEME_IN, "Added SCHEME_IN for item "+itemStringMap.get(inventoryItem.getItemId())+" against invoiceNumber ["+inventoryItem.getPurchase().getPurchaseReference() +"]", cashback);
|
| 272 |
}
|
320 |
}
|
| 273 |
}
|
321 |
}
|
| 274 |
}
|
322 |
}
|
| 275 |
|
323 |
|
| 276 |
}
|
324 |
}
|
| Line 459... |
Line 507... |
| 459 |
return 0;
|
507 |
return 0;
|
| 460 |
}
|
508 |
}
|
| 461 |
List<InventoryItem> inventoryItems = inventoryItemRepository.selectByPurchaseId(purchaseId);
|
509 |
List<InventoryItem> inventoryItems = inventoryItemRepository.selectByPurchaseId(purchaseId);
|
| 462 |
LOGGER.info("SchemeIn filter inventoryItems {}", inventoryItems);
|
510 |
LOGGER.info("SchemeIn filter inventoryItems {}", inventoryItems);
|
| 463 |
|
511 |
|
| - |
|
512 |
Purchase purchase = purchaseRepository.selectByIdAndFofoId(purchaseId, retailerId);
|
| - |
|
513 |
|
| 464 |
Map<InventoryItem, Set<Scheme>> inventoryItemSchemesMap = this.toInventoryItemSchemesMap(schemes, inventoryItems);
|
514 |
Map<InventoryItem, Set<Scheme>> inventoryItemSchemesMap = this.toInventoryItemSchemesMap(schemes, inventoryItems);
|
| 465 |
|
515 |
|
| 466 |
if(inventoryItemSchemesMap.isEmpty()){
|
516 |
if(inventoryItemSchemesMap.isEmpty()){
|
| 467 |
return 0;
|
517 |
return 0;
|
| 468 |
}
|
518 |
}
|
| 469 |
Map<InventoryItem, Set<Scheme>> notAllInventoryItemSchemesMap = new HashMap<>();
|
519 |
Map<InventoryItem, Set<Scheme>> notAllInventoryItemSchemesMap = new HashMap<>();
|
| 470 |
Map<InventoryItem, Set<Scheme>> allInventoryItemSchemesMap = new HashMap<>();
|
520 |
Map<InventoryItem, Set<Scheme>> allInventoryItemSchemesMap = new HashMap<>();
|
| - |
|
521 |
Set<Integer> itemIds = new HashSet<>();
|
| 471 |
|
522 |
|
| 472 |
for(Map.Entry<InventoryItem, Set<Scheme>> inventoryItemSchemesEntry : inventoryItemSchemesMap.entrySet()){
|
523 |
for(Map.Entry<InventoryItem, Set<Scheme>> inventoryItemSchemesEntry : inventoryItemSchemesMap.entrySet()){
|
| 473 |
Set<Scheme> notAllSchemes = new HashSet<>();
|
524 |
Set<Scheme> notAllSchemes = new HashSet<>();
|
| 474 |
Set<Scheme> allSchemes = new HashSet<>();
|
525 |
Set<Scheme> allSchemes = new HashSet<>();
|
| 475 |
for(Scheme scheme : inventoryItemSchemesEntry.getValue()){
|
526 |
for(Scheme scheme : inventoryItemSchemesEntry.getValue()){
|
| Line 479... |
Line 530... |
| 479 |
allSchemes.add(scheme);
|
530 |
allSchemes.add(scheme);
|
| 480 |
}
|
531 |
}
|
| 481 |
}
|
532 |
}
|
| 482 |
notAllInventoryItemSchemesMap.put(inventoryItemSchemesEntry.getKey(), notAllSchemes);
|
533 |
notAllInventoryItemSchemesMap.put(inventoryItemSchemesEntry.getKey(), notAllSchemes);
|
| 483 |
allInventoryItemSchemesMap.put(inventoryItemSchemesEntry.getKey(), allSchemes);
|
534 |
allInventoryItemSchemesMap.put(inventoryItemSchemesEntry.getKey(), allSchemes);
|
| - |
|
535 |
itemIds.add(inventoryItemSchemesEntry.getKey().getItemId());
|
| 484 |
}
|
536 |
}
|
| - |
|
537 |
|
| - |
|
538 |
List<Item> items = itemRepository.selectByIds(itemIds);
|
| - |
|
539 |
Map<Integer, String> itemStringMap = this.toItemStringMap(items);
|
| 485 |
|
540 |
|
| - |
|
541 |
Map<Integer, Float> itemIdCashbackMap = new HashMap<>();
|
| - |
|
542 |
Map<Integer, Integer> itemIdCashbackCountMap = new HashMap<>();
|
| - |
|
543 |
|
| 486 |
for(Map.Entry<InventoryItem, Set<Scheme>> allInventoryItemSchemesEntry : allInventoryItemSchemesMap.entrySet()){
|
544 |
for(Map.Entry<InventoryItem, Set<Scheme>> allInventoryItemSchemesEntry : allInventoryItemSchemesMap.entrySet()){
|
| 487 |
for(Scheme scheme : allInventoryItemSchemesEntry.getValue()){
|
545 |
for(Scheme scheme : allInventoryItemSchemesEntry.getValue()){
|
| - |
|
546 |
InventoryItem inventoryItem = allInventoryItemSchemesEntry.getKey();
|
| 488 |
float cashback = this.createSchemeInOut(scheme, allInventoryItemSchemesEntry.getKey());
|
547 |
float cashback = this.createSchemeInOut(scheme, inventoryItem);
|
| - |
|
548 |
if(!itemIdCashbackMap.containsKey(inventoryItem.getItemId())){
|
| - |
|
549 |
itemIdCashbackMap.put(inventoryItem.getItemId(), cashback);
|
| - |
|
550 |
itemIdCashbackCountMap.put(inventoryItem.getItemId(), 1);
|
| - |
|
551 |
}else{
|
| - |
|
552 |
itemIdCashbackMap.put(inventoryItem.getItemId(), itemIdCashbackMap.get(inventoryItem.getItemId()) + cashback);
|
| - |
|
553 |
itemIdCashbackCountMap.put(inventoryItem.getItemId(), itemIdCashbackCountMap.get(inventoryItem.getItemId()) + 1);
|
| - |
|
554 |
}
|
| 489 |
totalCashback = totalCashback + cashback;
|
555 |
totalCashback = totalCashback + cashback;
|
| 490 |
}
|
556 |
}
|
| 491 |
}
|
557 |
}
|
| - |
|
558 |
|
| - |
|
559 |
//Map<Integer, Float> itemIdCashbackMap = new HashMap<>();
|
| - |
|
560 |
|
| 492 |
|
561 |
|
| 493 |
Set<Integer> schemeIds = this.inventoryItemSchemesMapToSchemeIds(notAllInventoryItemSchemesMap);
|
562 |
Set<Integer> schemeIds = this.inventoryItemSchemesMapToSchemeIds(notAllInventoryItemSchemesMap);
|
| 494 |
if(!schemeIds.isEmpty()){
|
563 |
if(!schemeIds.isEmpty()){
|
| 495 |
List<Integer> foundSchemeIds = retailerSchemeRepository.selectSchemeIds(schemeIds, retailerId);
|
564 |
List<Integer> foundSchemeIds = retailerSchemeRepository.selectSchemeIds(schemeIds, retailerId);
|
| 496 |
|
- |
|
| 497 |
for(Map.Entry<InventoryItem, Set<Scheme>> notAllInventoryItemSchemesEntry : notAllInventoryItemSchemesMap.entrySet()){
|
565 |
for(Map.Entry<InventoryItem, Set<Scheme>> notAllInventoryItemSchemesEntry : notAllInventoryItemSchemesMap.entrySet()){
|
| 498 |
for(Scheme scheme : notAllInventoryItemSchemesEntry.getValue()){
|
566 |
for(Scheme scheme : notAllInventoryItemSchemesEntry.getValue()){
|
| 499 |
if(foundSchemeIds.contains(scheme.getId())){
|
567 |
if(foundSchemeIds.contains(scheme.getId())){
|
| - |
|
568 |
InventoryItem inventoryItem = notAllInventoryItemSchemesEntry.getKey();
|
| 500 |
float cashback = this.createSchemeInOut(scheme, notAllInventoryItemSchemesEntry.getKey());
|
569 |
float cashback = this.createSchemeInOut(scheme, inventoryItem);
|
| - |
|
570 |
if(!itemIdCashbackMap.containsKey(inventoryItem.getItemId())){
|
| - |
|
571 |
itemIdCashbackMap.put(inventoryItem.getItemId(), cashback);
|
| - |
|
572 |
itemIdCashbackCountMap.put(inventoryItem.getItemId(), 1);
|
| - |
|
573 |
}else{
|
| - |
|
574 |
itemIdCashbackMap.put(inventoryItem.getItemId(), itemIdCashbackMap.get(inventoryItem.getItemId()) + cashback);
|
| - |
|
575 |
itemIdCashbackCountMap.put(inventoryItem.getItemId(), itemIdCashbackCountMap.get(inventoryItem.getItemId()) + 1);
|
| - |
|
576 |
}
|
| 501 |
totalCashback = totalCashback + cashback;
|
577 |
totalCashback = totalCashback + cashback;
|
| 502 |
}
|
578 |
}
|
| 503 |
}
|
579 |
}
|
| 504 |
}
|
580 |
}
|
| 505 |
}
|
581 |
}
|
| 506 |
if(totalCashback > 0){
|
582 |
for(Map.Entry<Integer, Float> itemIdCashbackEntry : itemIdCashbackMap.entrySet()){
|
| 507 |
walletService.addAmountToWallet(retailerId, purchaseId, WalletReferenceType.SCHEME_IN, "Added for SCHEME_IN", totalCashback);
|
583 |
walletService.addAmountToWallet(retailerId, purchaseId, WalletReferenceType.SCHEME_IN,
|
| - |
|
584 |
itemIdCashbackCountMap.get(itemIdCashbackEntry.getKey())+"pcs of item "+
|
| - |
|
585 |
itemStringMap.get(itemIdCashbackEntry.getKey()) +
|
| - |
|
586 |
" Added for SCHEME_IN against invoiceNumber ["+purchase.getPurchaseReference()+"]", totalCashback);
|
| 508 |
}
|
587 |
}
|
| 509 |
return totalCashback;
|
588 |
return totalCashback;
|
| 510 |
}
|
589 |
}
|
| 511 |
|
590 |
|
| 512 |
private float createSchemeInOut(Scheme scheme, InventoryItem inventoryItem){
|
591 |
private float createSchemeInOut(Scheme scheme, InventoryItem inventoryItem){
|