| Line 1... |
Line 1... |
| 1 |
package com.spice.profitmandi.service.order;
|
1 |
package com.spice.profitmandi.service.order;
|
| 2 |
|
2 |
|
| 3 |
import java.time.DateTimeException;
|
- |
|
| 4 |
import java.time.LocalDate;
|
3 |
import java.time.LocalDate;
|
| 5 |
import java.time.LocalDateTime;
|
4 |
import java.time.LocalDateTime;
|
| 6 |
import java.util.ArrayList;
|
5 |
import java.util.ArrayList;
|
| 7 |
import java.util.Arrays;
|
6 |
import java.util.Arrays;
|
| 8 |
import java.util.HashMap;
|
7 |
import java.util.HashMap;
|
| Line 19... |
Line 18... |
| 19 |
import org.json.JSONObject;
|
18 |
import org.json.JSONObject;
|
| 20 |
import org.springframework.beans.factory.annotation.Autowired;
|
19 |
import org.springframework.beans.factory.annotation.Autowired;
|
| 21 |
import org.springframework.beans.factory.annotation.Qualifier;
|
20 |
import org.springframework.beans.factory.annotation.Qualifier;
|
| 22 |
import org.springframework.stereotype.Component;
|
21 |
import org.springframework.stereotype.Component;
|
| 23 |
|
22 |
|
| - |
|
23 |
import com.spice.profitmandi.common.enumuration.ItemType;
|
| 24 |
import com.spice.profitmandi.common.enumuration.SearchType;
|
24 |
import com.spice.profitmandi.common.enumuration.SearchType;
|
| 25 |
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
|
25 |
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
|
| 26 |
import com.spice.profitmandi.common.model.BadReturnRequest;
|
26 |
import com.spice.profitmandi.common.model.BadReturnRequest;
|
| 27 |
import com.spice.profitmandi.common.model.CartFofo;
|
27 |
import com.spice.profitmandi.common.model.CartFofo;
|
| 28 |
import com.spice.profitmandi.common.model.CreateOrderRequest;
|
28 |
import com.spice.profitmandi.common.model.CreateOrderRequest;
|
| Line 68... |
Line 68... |
| 68 |
import com.spice.profitmandi.dao.entity.fofo.InvoiceNumberGenerationSequence;
|
68 |
import com.spice.profitmandi.dao.entity.fofo.InvoiceNumberGenerationSequence;
|
| 69 |
import com.spice.profitmandi.dao.entity.fofo.ScanRecord;
|
69 |
import com.spice.profitmandi.dao.entity.fofo.ScanRecord;
|
| 70 |
import com.spice.profitmandi.dao.entity.user.Address;
|
70 |
import com.spice.profitmandi.dao.entity.user.Address;
|
| 71 |
import com.spice.profitmandi.dao.entity.user.Counter;
|
71 |
import com.spice.profitmandi.dao.entity.user.Counter;
|
| 72 |
import com.spice.profitmandi.dao.entity.user.PrivateDealUser;
|
72 |
import com.spice.profitmandi.dao.entity.user.PrivateDealUser;
|
| - |
|
73 |
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
|
| 73 |
import com.spice.profitmandi.dao.enumuration.dtr.PaymentOptionReferenceType;
|
74 |
import com.spice.profitmandi.dao.enumuration.dtr.PaymentOptionReferenceType;
|
| 74 |
import com.spice.profitmandi.dao.enumuration.fofo.ReturnType;
|
75 |
import com.spice.profitmandi.dao.enumuration.fofo.ReturnType;
|
| 75 |
import com.spice.profitmandi.dao.enumuration.fofo.ScanType;
|
76 |
import com.spice.profitmandi.dao.enumuration.fofo.ScanType;
|
| 76 |
import com.spice.profitmandi.dao.enumuration.fofo.SettlementType;
|
77 |
import com.spice.profitmandi.dao.enumuration.fofo.SettlementType;
|
| 77 |
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
|
78 |
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
|
| Line 105... |
Line 106... |
| 105 |
import com.spice.profitmandi.service.pricing.PricingService;
|
106 |
import com.spice.profitmandi.service.pricing.PricingService;
|
| 106 |
import com.spice.profitmandi.service.scheme.SchemeService;
|
107 |
import com.spice.profitmandi.service.scheme.SchemeService;
|
| 107 |
import com.spice.profitmandi.service.user.RetailerService;
|
108 |
import com.spice.profitmandi.service.user.RetailerService;
|
| 108 |
import com.spice.profitmandi.service.wallet.WalletService;
|
109 |
import com.spice.profitmandi.service.wallet.WalletService;
|
| 109 |
|
110 |
|
| 110 |
import in.shop2020.model.v1.catalog.ItemType;
|
- |
|
| 111 |
import in.shop2020.model.v1.order.WalletReferenceType;
|
111 |
import in.shop2020.model.v1.order.WalletReferenceType;
|
| 112 |
|
112 |
|
| 113 |
@Component
|
113 |
@Component
|
| 114 |
public class OrderServiceImpl implements OrderService {
|
114 |
public class OrderServiceImpl implements OrderService {
|
| 115 |
|
115 |
|
| Line 476... |
Line 476... |
| 476 |
this.createFofoLineItem(fofoOrderItem.getId(), inventoryItems, inventoryItemIdQuantityUsed);
|
476 |
this.createFofoLineItem(fofoOrderItem.getId(), inventoryItems, inventoryItemIdQuantityUsed);
|
| 477 |
|
477 |
|
| 478 |
this.updateCurrentInventorySnapshot(currentInventorySnapshots, fofoId, customFofoOrderItem.getItemId(),
|
478 |
this.updateCurrentInventorySnapshot(currentInventorySnapshots, fofoId, customFofoOrderItem.getItemId(),
|
| 479 |
customFofoOrderItem.getQuantity());
|
479 |
customFofoOrderItem.getQuantity());
|
| 480 |
|
480 |
|
| 481 |
this.updateInventoryItemsAndScanRecord(inventoryItems, fofoId, inventoryItemIdQuantityUsed);
|
481 |
this.updateInventoryItemsAndScanRecord(inventoryItems, fofoId, inventoryItemIdQuantityUsed, fofoOrder.getId());
|
| 482 |
}
|
482 |
}
|
| 483 |
|
483 |
|
| 484 |
// insurance calculation is insurance flag is enabled
|
484 |
// insurance calculation is insurance flag is enabled
|
| 485 |
if (!insuranceSerialNumberItemPrice.isEmpty()) {
|
485 |
if (!insuranceSerialNumberItemPrice.isEmpty()) {
|
| 486 |
LOGGER.info("Processing for insurence for serialNumbers");
|
486 |
LOGGER.info("Processing for insurence for serialNumbers");
|
| Line 1101... |
Line 1101... |
| 1101 |
throw new ProfitMandiBusinessException("invalidMopItemIdPrice", invalidDiscountAmountMap, "FFORDR_1011");
|
1101 |
throw new ProfitMandiBusinessException("invalidMopItemIdPrice", invalidDiscountAmountMap, "FFORDR_1011");
|
| 1102 |
}
|
1102 |
}
|
| 1103 |
}
|
1103 |
}
|
| 1104 |
|
1104 |
|
| 1105 |
private void updateInventoryItemsAndScanRecord(Set<InventoryItem> inventoryItems, int fofoId,
|
1105 |
private void updateInventoryItemsAndScanRecord(Set<InventoryItem> inventoryItems, int fofoId,
|
| 1106 |
Map<Integer, Integer> inventoryItemQuantityUsed) {
|
1106 |
Map<Integer, Integer> inventoryItemQuantityUsed, int fofoOrderId) {
|
| 1107 |
for (InventoryItem inventoryItem : inventoryItems) {
|
1107 |
for (InventoryItem inventoryItem : inventoryItems) {
|
| 1108 |
inventoryItem.setLastScanType(ScanType.SALE);
|
1108 |
inventoryItem.setLastScanType(ScanType.SALE);
|
| 1109 |
inventoryItemRepository.persist(inventoryItem);
|
1109 |
inventoryItemRepository.persist(inventoryItem);
|
| 1110 |
ScanRecord scanRecord = new ScanRecord();
|
1110 |
ScanRecord scanRecord = new ScanRecord();
|
| 1111 |
scanRecord.setInventoryItemId(inventoryItem.getId());
|
1111 |
scanRecord.setInventoryItemId(inventoryItem.getId());
|
| 1112 |
scanRecord.setFofoId(fofoId);
|
1112 |
scanRecord.setFofoId(fofoId);
|
| - |
|
1113 |
scanRecord.setOrderId(fofoOrderId);
|
| 1113 |
// correct this
|
1114 |
// correct this
|
| 1114 |
scanRecord.setQuantity(inventoryItemQuantityUsed.get(inventoryItem.getId()));
|
1115 |
scanRecord.setQuantity(inventoryItemQuantityUsed.get(inventoryItem.getId()));
|
| 1115 |
scanRecord.setType(ScanType.SALE);
|
1116 |
scanRecord.setType(ScanType.SALE);
|
| 1116 |
scanRecordRepository.persist(scanRecord);
|
1117 |
scanRecordRepository.persist(scanRecord);
|
| 1117 |
purchaseReturnItemRepository.deleteById(inventoryItem.getId());
|
1118 |
purchaseReturnItemRepository.deleteById(inventoryItem.getId());
|
| Line 1468... |
Line 1469... |
| 1468 |
List<CustomerReturnItem> customerReturnItems = new ArrayList<>();
|
1469 |
List<CustomerReturnItem> customerReturnItems = new ArrayList<>();
|
| 1469 |
for (BadReturnRequest badReturnRequest : foiBadReturnRequest.getMarkedBadArr()) {
|
1470 |
for (BadReturnRequest badReturnRequest : foiBadReturnRequest.getMarkedBadArr()) {
|
| 1470 |
CustomerReturnItem customerReturnItem = new CustomerReturnItem();
|
1471 |
CustomerReturnItem customerReturnItem = new CustomerReturnItem();
|
| 1471 |
customerReturnItem.setFofoId(fofoId);
|
1472 |
customerReturnItem.setFofoId(fofoId);
|
| 1472 |
customerReturnItem.setFofoOrderItemId(foiBadReturnRequest.getFofoOrderItemId());
|
1473 |
customerReturnItem.setFofoOrderItemId(foiBadReturnRequest.getFofoOrderItemId());
|
| - |
|
1474 |
customerReturnItem.setFofoOrderId(fofoOrder.getId());
|
| 1473 |
customerReturnItem.setRemarks(badReturnRequest.getRemarks());
|
1475 |
customerReturnItem.setRemarks(badReturnRequest.getRemarks());
|
| 1474 |
customerReturnItem.setInventoryItemId(badReturnRequest.getInventoryItemId());
|
1476 |
customerReturnItem.setInventoryItemId(badReturnRequest.getInventoryItemId());
|
| 1475 |
customerReturnItem.setQuantity(1);
|
1477 |
customerReturnItem.setQuantity(1);
|
| 1476 |
customerReturnItem.setType(ReturnType.BAD);
|
1478 |
customerReturnItem.setType(ReturnType.BAD);
|
| 1477 |
//customerReturnItemRepository.persist(customerReturnItem);
|
1479 |
//customerReturnItemRepository.persist(customerReturnItem);
|
| Line 1577... |
Line 1579... |
| 1577 |
creditNotePdfModel.setCreditNoteNumber(creditNote.getCreditNoteNumber());
|
1579 |
creditNotePdfModel.setCreditNoteNumber(creditNote.getCreditNoteNumber());
|
| 1578 |
creditNotePdfModel.setPdfModel(pdfModel);
|
1580 |
creditNotePdfModel.setPdfModel(pdfModel);
|
| 1579 |
return creditNotePdfModel;
|
1581 |
return creditNotePdfModel;
|
| 1580 |
}
|
1582 |
}
|
| 1581 |
|
1583 |
|
| - |
|
1584 |
|
| - |
|
1585 |
//This will remove the order and maintain order record and reverse inventory and scheme
|
| - |
|
1586 |
@Override
|
| - |
|
1587 |
public void cancelOrder(List<String> invoiceNumbers) throws Exception {
|
| - |
|
1588 |
for(String invoiceNumber : invoiceNumbers) {
|
| - |
|
1589 |
FofoOrder fofoOrder = fofoOrderRepository.selectByInvoiceNumber(invoiceNumber);
|
| - |
|
1590 |
fofoOrder.setCancelledTimestamp(LocalDateTime.now());
|
| - |
|
1591 |
fofoOrderRepository.persist(fofoOrder);
|
| - |
|
1592 |
List<PaymentOptionTransaction> paymentTransactions = paymentOptionTransactionRepository.selectByReferenceIdAndType(fofoOrder.getId(), PaymentOptionReferenceType.ORDER);
|
| - |
|
1593 |
for (PaymentOptionTransaction paymentOptionTransaction : paymentTransactions) {
|
| - |
|
1594 |
paymentOptionTransactionRepository.delete(paymentOptionTransaction);
|
| - |
|
1595 |
}
|
| - |
|
1596 |
List<FofoOrderItem> fois = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
|
| - |
|
1597 |
List<InventoryItem> inventoryItems = new ArrayList<>();
|
| - |
|
1598 |
fois.stream().forEach(x->{
|
| - |
|
1599 |
x.getFofoLineItems().stream().forEach(y->{
|
| - |
|
1600 |
inventoryService.rollbackInventory(y.getInventoryItemId(), y.getQuantity(), fofoOrder.getFofoId());
|
| - |
|
1601 |
inventoryItems.add(inventoryItemRepository.selectById(y.getInventoryItemId()));
|
| - |
|
1602 |
});
|
| - |
|
1603 |
});
|
| - |
|
1604 |
String reversalReason = "Order Rolledback/Cancelled for Invoice Number " + invoiceNumber;
|
| - |
|
1605 |
schemeService.reverseSchemes(inventoryItems, fofoOrder.getId(), reversalReason, SchemeType.OUT);
|
| - |
|
1606 |
}
|
| - |
|
1607 |
}
|
| - |
|
1608 |
|
| 1582 |
}
|
1609 |
}
|