| 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 |
}
|