| Line 1206... |
Line 1206... |
| 1206 |
private void validateDpPrice(Map<Integer, PriceModel> itemIdMopPriceMap,
|
1206 |
private void validateDpPrice(Map<Integer, PriceModel> itemIdMopPriceMap,
|
| 1207 |
Map<Integer, CustomFofoOrderItem> itemIdCustomFofoLineItemMap) throws ProfitMandiBusinessException {
|
1207 |
Map<Integer, CustomFofoOrderItem> itemIdCustomFofoLineItemMap) throws ProfitMandiBusinessException {
|
| 1208 |
for (Map.Entry<Integer, CustomFofoOrderItem> entry : itemIdCustomFofoLineItemMap.entrySet()) {
|
1208 |
for (Map.Entry<Integer, CustomFofoOrderItem> entry : itemIdCustomFofoLineItemMap.entrySet()) {
|
| 1209 |
int itemId = entry.getKey();
|
1209 |
int itemId = entry.getKey();
|
| 1210 |
CustomFofoOrderItem customFofoOrderItem = entry.getValue();
|
1210 |
CustomFofoOrderItem customFofoOrderItem = entry.getValue();
|
| - |
|
1211 |
LOGGER.info("CustomFofoOrderItem -- {}", customFofoOrderItem);
|
| 1211 |
PriceModel priceModel = itemIdMopPriceMap.get(itemId);
|
1212 |
PriceModel priceModel = itemIdMopPriceMap.get(itemId);
|
| 1212 |
if (customFofoOrderItem.getSerialNumberDetails().stream()
|
1213 |
if (customFofoOrderItem.getSerialNumberDetails().stream()
|
| 1213 |
.filter(x -> org.apache.commons.lang.StringUtils.isNotEmpty(x.getSerialNumber()))
|
1214 |
.filter(x -> org.apache.commons.lang.StringUtils.isNotEmpty(x.getSerialNumber()))
|
| 1214 |
.collect(Collectors.toList()).size() > 0) {
|
1215 |
.collect(Collectors.toList()).size() > 0) {
|
| 1215 |
if (priceModel.getPrice() > customFofoOrderItem.getSellingPrice()
|
1216 |
if (priceModel.getPrice() > customFofoOrderItem.getSellingPrice()
|
| Line 1700... |
Line 1701... |
| 1700 |
for (CustomerReturnItem customerReturnItem : customerReturnItems) {
|
1701 |
for (CustomerReturnItem customerReturnItem : customerReturnItems) {
|
| 1701 |
purchaseReturnService.returnInventoryItem(fofoId, false, customerReturnItem.getInventoryItemId(),
|
1702 |
purchaseReturnService.returnInventoryItem(fofoId, false, customerReturnItem.getInventoryItemId(),
|
| 1702 |
ReturnType.BAD);
|
1703 |
ReturnType.BAD);
|
| 1703 |
}
|
1704 |
}
|
| 1704 |
// This should cancel the order
|
1705 |
// This should cancel the order
|
| - |
|
1706 |
this.reverseScheme(fofoOrder);
|
| 1705 |
fofoOrder.setCancelledTimestamp(LocalDateTime.now());
|
1707 |
fofoOrder.setCancelledTimestamp(LocalDateTime.now());
|
| 1706 |
return creditNote;
|
1708 |
return creditNote;
|
| 1707 |
}
|
1709 |
}
|
| 1708 |
|
1710 |
|
| 1709 |
private CustomerCreditNote generateCreditNote(FofoOrder fofoOrder, List<CustomerReturnItem> customerReturnItems)
|
1711 |
private CustomerCreditNote generateCreditNote(FofoOrder fofoOrder, List<CustomerReturnItem> customerReturnItems)
|
| Line 1806... |
Line 1808... |
| 1806 |
}
|
1808 |
}
|
| 1807 |
|
1809 |
|
| 1808 |
// This will remove the order and maintain order record and reverse inventory
|
1810 |
// This will remove the order and maintain order record and reverse inventory
|
| 1809 |
// and scheme
|
1811 |
// and scheme
|
| 1810 |
@Override
|
1812 |
@Override
|
| 1811 |
public void cancelOrder(List<String> invoiceNumbers) throws Exception {
|
1813 |
public void cancelOrder(List<String> invoiceNumbers) throws ProfitMandiBusinessException {
|
| 1812 |
for (String invoiceNumber : invoiceNumbers) {
|
1814 |
for (String invoiceNumber : invoiceNumbers) {
|
| 1813 |
// Cancel only when not cancelled
|
1815 |
// Cancel only when not cancelled
|
| 1814 |
FofoOrder fofoOrder = fofoOrderRepository.selectByInvoiceNumber(invoiceNumber);
|
1816 |
FofoOrder fofoOrder = fofoOrderRepository.selectByInvoiceNumber(invoiceNumber);
|
| 1815 |
if (fofoOrder.getCancelledTimestamp() == null) {
|
1817 |
if (fofoOrder.getCancelledTimestamp() == null) {
|
| 1816 |
fofoOrder.setCancelledTimestamp(LocalDateTime.now());
|
1818 |
fofoOrder.setCancelledTimestamp(LocalDateTime.now());
|
| 1817 |
List<PaymentOptionTransaction> paymentTransactions = paymentOptionTransactionRepository
|
1819 |
PaymentOptionTransaction paymentTransaction = new PaymentOptionTransaction();
|
| - |
|
1820 |
paymentTransaction.setAmount(-fofoOrder.getTotalAmount());
|
| - |
|
1821 |
paymentTransaction.setFofoId(fofoOrder.getFofoId());
|
| - |
|
1822 |
paymentTransaction.setReferenceId(fofoOrder.getId());
|
| 1818 |
.selectByReferenceIdAndType(fofoOrder.getId(), PaymentOptionReferenceType.ORDER);
|
1823 |
paymentTransaction.setReferenceType(PaymentOptionReferenceType.ORDER);
|
| 1819 |
for (PaymentOptionTransaction paymentOptionTransaction : paymentTransactions) {
|
1824 |
paymentTransaction.setPaymentOptionId(1);
|
| 1820 |
paymentOptionTransactionRepository.delete(paymentOptionTransaction);
|
1825 |
paymentOptionTransactionRepository.persist(paymentTransaction);
|
| 1821 |
}
|
1826 |
|
| 1822 |
List<FofoOrderItem> fois = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
|
1827 |
List<FofoOrderItem> fois = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
|
| 1823 |
List<InventoryItem> inventoryItems = new ArrayList<>();
|
1828 |
List<InventoryItem> inventoryItems = new ArrayList<>();
|
| 1824 |
fois.stream().forEach(x -> {
|
1829 |
fois.stream().forEach(x -> {
|
| 1825 |
x.getFofoLineItems().stream().forEach(y -> {
|
1830 |
x.getFofoLineItems().stream().forEach(y -> {
|
| 1826 |
inventoryService.rollbackInventory(y.getInventoryItemId(), y.getQuantity(),
|
1831 |
inventoryService.rollbackInventory(y.getInventoryItemId(), y.getQuantity(),
|
| 1827 |
fofoOrder.getFofoId());
|
1832 |
fofoOrder.getFofoId());
|
| 1828 |
inventoryItems.add(inventoryItemRepository.selectById(y.getInventoryItemId()));
|
1833 |
inventoryItems.add(inventoryItemRepository.selectById(y.getInventoryItemId()));
|
| 1829 |
});
|
1834 |
});
|
| 1830 |
});
|
1835 |
});
|
| 1831 |
String reversalReason = "Order Rolledback/Cancelled for Invoice Number " + invoiceNumber;
|
- |
|
| 1832 |
schemeService.reverseSchemes(inventoryItems, fofoOrder.getId(), reversalReason,
|
- |
|
| 1833 |
SchemeService.OUT_SCHEME_TYPES);
|
- |
|
| 1834 |
schemeService.reverseSchemes(inventoryItems, fofoOrder.getId(), reversalReason,
|
- |
|
| 1835 |
Arrays.asList(SchemeType.INVESTMENT));
|
- |
|
| 1836 |
schemeService.reverseSchemes(inventoryItems, fofoOrder.getId(), reversalReason,
|
- |
|
| 1837 |
Arrays.asList(SchemeType.ACTIVATION));
|
1836 |
this.reverseScheme(fofoOrder);
|
| 1838 |
}
|
1837 |
}
|
| 1839 |
}
|
1838 |
}
|
| 1840 |
}
|
1839 |
}
|
| - |
|
1840 |
|
| - |
|
1841 |
@Override
|
| - |
|
1842 |
public void reverseScheme(FofoOrder fofoOrder) throws ProfitMandiBusinessException {
|
| - |
|
1843 |
String reversalReason = "Order Rolledback/Cancelled/Returned for Invoice #" + fofoOrder.getInvoiceNumber();
|
| - |
|
1844 |
List<FofoOrderItem> fois = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
|
| - |
|
1845 |
Set<Integer> inventoryItemIds = fois.stream().flatMap(x->x.getFofoLineItems().stream().map(y->y.getInventoryItemId())).collect(Collectors.toSet());
|
| - |
|
1846 |
List<InventoryItem> inventoryItems = inventoryItemRepository.selectByIds(inventoryItemIds);
|
| - |
|
1847 |
schemeService.reverseSchemes(inventoryItems, fofoOrder.getId(), reversalReason,
|
| - |
|
1848 |
SchemeService.OUT_SCHEME_TYPES);
|
| - |
|
1849 |
schemeService.reverseSchemes(inventoryItems, fofoOrder.getId(), reversalReason,
|
| - |
|
1850 |
Arrays.asList(SchemeType.INVESTMENT));
|
| - |
|
1851 |
schemeService.reverseSchemes(inventoryItems, fofoOrder.getId(), reversalReason,
|
| - |
|
1852 |
Arrays.asList(SchemeType.ACTIVATION));
|
| - |
|
1853 |
|
| - |
|
1854 |
}
|
| 1841 |
|
1855 |
|
| 1842 |
@Override
|
1856 |
@Override
|
| 1843 |
public float getSales(int fofoId, LocalDateTime startDate, LocalDateTime endDate) {
|
1857 |
public float getSales(int fofoId, LocalDateTime startDate, LocalDateTime endDate) {
|
| 1844 |
Float sales = fofoOrderRepository.selectSaleSumGroupByFofoIds(startDate, endDate).get(fofoId);
|
1858 |
Float sales = fofoOrderRepository.selectSaleSumGroupByFofoIds(startDate, endDate).get(fofoId);
|
| 1845 |
return sales == null ? 0f : sales;
|
1859 |
return sales == null ? 0f : sales;
|