Subversion Repositories SmartDukaan

Rev

Rev 29539 | Rev 29551 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 29539 Rev 29548
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;