Subversion Repositories SmartDukaan

Rev

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

Rev 24706 Rev 24709
Line 197... Line 197...
197
	public void migratePurchase() {
197
	public void migratePurchase() {
198
		List<Purchase> purchases = purchaseRepository.selectPurchaseAllPurchasesLessThanZero();
198
		List<Purchase> purchases = purchaseRepository.selectPurchaseAllPurchasesLessThanZero();
199
		System.out.printf("Total Purchases count is %s", purchases.size());
199
		System.out.printf("Total Purchases count is %s", purchases.size());
200
		for(Purchase purchase : purchases) {
200
		for(Purchase purchase : purchases) {
201
			List<InventoryItem> inventoryItems =  inventoryItemRepository.selectByPurchaseId(purchase.getId());
201
			List<InventoryItem> inventoryItems =  inventoryItemRepository.selectByPurchaseId(purchase.getId());
-
 
202
			Map<Integer, List<InventoryItem>> itemIdInventoryMap = inventoryItems.stream().collect(
-
 
203
					Collectors.groupingBy(InventoryItem::getItemId));
202
			List<Order> orders = orderRepository.selectByAirwayBillOrInvoiceNumber(purchase.getPurchaseReference(), purchase.getFofoId());
204
			List<Order> orders = orderRepository.selectByAirwayBillOrInvoiceNumber(purchase.getPurchaseReference(), purchase.getFofoId());
203
			Map<Integer, Integer> ourSaleItemQtyMap = orders.stream().collect(Collectors.groupingBy(x->x.getLineItem().getItemId(), 
205
			Map<Integer, Integer> ourSaleItemQtyMap = orders.stream().collect(Collectors.groupingBy(x->x.getLineItem().getItemId(), 
204
					Collectors.summingInt(x->x.getLineItem().getQuantity())));
206
					Collectors.summingInt(x->x.getLineItem().getQuantity())));
205
			Map<Integer, Integer> theirPurchaseItemQtyMap = inventoryItems.stream().collect(Collectors.groupingBy(InventoryItem::getItemId, 
207
			Map<Integer, Integer> theirPurchaseItemQtyMap = inventoryItems.stream().collect(Collectors.groupingBy(InventoryItem::getItemId, 
206
					Collectors.summingInt(InventoryItem::getInitialQuantity)));
208
					Collectors.summingInt(InventoryItem::getInitialQuantity)));
207
			for (Map.Entry<Integer, Integer> partnerPurchaseEntry : theirPurchaseItemQtyMap.entrySet()) {
209
			for (Map.Entry<Integer, Integer> itemQtyEntry : theirPurchaseItemQtyMap.entrySet()) {
208
				if(!ourSaleItemQtyMap.containsKey(partnerPurchaseEntry.getKey())) {
210
				if(!ourSaleItemQtyMap.containsKey(itemQtyEntry.getKey())) {
209
					LOGGER.info("Cannot find in Invoice {} item {}", purchase.getPurchaseReference(), partnerPurchaseEntry.getKey());
211
					LOGGER.info("Cannot find in Invoice {} item {}", purchase.getPurchaseReference(), itemQtyEntry.getKey());
210
					continue;
212
					continue;
211
				}
213
				}
212
				int ourSale = ourSaleItemQtyMap.get(partnerPurchaseEntry.getKey());
214
				int ourSale = ourSaleItemQtyMap.get(itemQtyEntry.getKey());
213
				if(partnerPurchaseEntry.getValue() - ourSale > 0) {
215
				if(itemQtyEntry.getValue() - ourSale > 0) {
214
					int quantityToReduce = partnerPurchaseEntry.getValue() - ourSale;
216
					int quantityToReduce = itemQtyEntry.getValue() - ourSale;
-
 
217
					List<InventoryItem> itemIis = itemIdInventoryMap.get(itemQtyEntry);
215
					for(InventoryItem ii : inventoryItems) {
218
					for(InventoryItem ii : itemIis) {
216
						if(ii.getGoodQuantity() >= quantityToReduce && ii.getInitialQuantity() > quantityToReduce) {
219
						if(ii.getGoodQuantity() >= quantityToReduce && ii.getInitialQuantity() > quantityToReduce) {
217
							LOGGER.info("Invoice {} item {} can be reduced to {}", purchase.getPurchaseReference(), ii.getItemId(), ii.getGoodQuantity() - quantityToReduce);
220
							LOGGER.info("Invoice {} item {} can be reduced to {}", purchase.getPurchaseReference(), ii.getItemId(), ii.getGoodQuantity() - quantityToReduce);
218
						}
221
						}
219
					}
222
					}
220
				}
223
				}