Skip to content

Commit 140b5b6

Browse files
authored
fix: amm-2132 duplicate stock entry issue fix (#123)
1 parent fbe3202 commit 140b5b6

2 files changed

Lines changed: 17 additions & 0 deletions

File tree

src/main/java/com/iemr/inventory/repo/stockEntry/ItemStockEntryRepo.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,5 +113,7 @@ List<ItemStockEntry> findByEntryTypeIDAndSyncFacilityIDAndEntryType(Long vanSeri
113113
@Query("update ItemStockEntry p set p.vanSerialNo=p.itemStockEntryID where p.vanSerialNo is null and p.itemStockEntryID>0")
114114
Integer updateItemStockEntryVanSerialNo();
115115

116+
boolean existsByFacilityIDAndItemIDAndBatchNoAndExpiryDateAndEntryTypeAndDeletedFalse(
117+
Integer facilityID, Integer itemID, String batchNo, Date expiryDate, String entryType);
116118

117119
}

src/main/java/com/iemr/inventory/service/stockEntry/StockEntryServiceImpl.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,21 @@ public PhysicalStockEntry savePhysicalStockEntry(PhysicalStockEntry physicalStoc
9090
stock.setSyncFacilityID(physicalStockEntry.getFacilityID());
9191
});
9292

93+
// Duplicate check: reject if an identical stock line already exists
94+
for (ItemStockEntry stock : physicalStockEntry.getItemStockEntry()) {
95+
Integer facilityID = stock.getFacilityID() != null
96+
? stock.getFacilityID()
97+
: physicalStockEntry.getFacilityID();
98+
if (itemStockEntryRepo.existsByFacilityIDAndItemIDAndBatchNoAndExpiryDateAndEntryTypeAndDeletedFalse(
99+
facilityID, stock.getItemID(), stock.getBatchNo(),
100+
stock.getExpiryDate(), "physicalStockEntry")) {
101+
throw new InventoryException(
102+
"Duplicate stock entry: Item ID " + stock.getItemID()
103+
+ " with batch '" + stock.getBatchNo()
104+
+ "' already exists for this facility.");
105+
}
106+
}
107+
93108
itemStockEntryRepo.saveAll(physicalStockEntry.getItemStockEntry());
94109

95110
physicalStockEntryRepo.updatePhysicalStockEntryVanSerialNo();

0 commit comments

Comments
 (0)