From cab72c3250406e204706c63307580a929fcc1159 Mon Sep 17 00:00:00 2001 From: Amoghavarsh <93114621+5Amogh@users.noreply.github.com> Date: Mon, 21 Jul 2025 11:57:11 +0530 Subject: [PATCH 01/11] Update version in pom.xml to 3.4.0 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index c82df79..886f3a3 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.iemr.inventory inventory-api - 3.1.0 + 3.4.0 war Inventory-API Inventory Page @@ -321,7 +321,7 @@ org.apache.maven.plugins maven-antrun-plugin - 3.1.0 + 3.4.0 process-resources From 4bdeb9ad2ffc13c2b3938ff6fe1f836b3c8c294a Mon Sep 17 00:00:00 2001 From: Amoghavarsh <93114621+5Amogh@users.noreply.github.com> Date: Mon, 21 Jul 2025 14:26:44 +0530 Subject: [PATCH 02/11] Update pom.xml --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 886f3a3..f23f68a 100644 --- a/pom.xml +++ b/pom.xml @@ -321,7 +321,7 @@ org.apache.maven.plugins maven-antrun-plugin - 3.4.0 + 3.1.0 process-resources From f4b84eae3530eec429a9cc6b9fa90bab87fc43d4 Mon Sep 17 00:00:00 2001 From: Vishwanath Balkur <118195001+vishwab1@users.noreply.github.com> Date: Sun, 10 Aug 2025 18:44:18 +0530 Subject: [PATCH 03/11] fix: removed db iemr (#97) --- .../com/iemr/inventory/repo/stockExit/PatientIssueRepo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/iemr/inventory/repo/stockExit/PatientIssueRepo.java b/src/main/java/com/iemr/inventory/repo/stockExit/PatientIssueRepo.java index 6d6f82f..63a48a4 100644 --- a/src/main/java/com/iemr/inventory/repo/stockExit/PatientIssueRepo.java +++ b/src/main/java/com/iemr/inventory/repo/stockExit/PatientIssueRepo.java @@ -41,7 +41,7 @@ List findByFacilityIDAndCreatedDateBetweenOrderByCreatedDateDesc @Transactional @Modifying - @Query(value = " UPDATE db_iemr.i_ben_flow_outreach SET pharmacist_flag = 9, Processed = 'U' " + @Query(value = " UPDATE i_ben_flow_outreach SET pharmacist_flag = 9, Processed = 'U' " + " WHERE beneficiary_reg_id = :benRegID AND beneficiary_visit_code = :benVisitCode ", nativeQuery = true) public int updateBenStatusFlowAfterPharma(@Param("benRegID") Long benRegID, @Param("benVisitCode") Long benVisitCode); From 2dbe8f22ea2d736bee791950a65e3fe32182cb08 Mon Sep 17 00:00:00 2001 From: Vanitha S <116701245+vanitha1822@users.noreply.github.com> Date: Wed, 20 Aug 2025 15:34:50 +0530 Subject: [PATCH 04/11] fix: add logs (#100) --- .../service/stockEntry/StockEntryServiceImpl.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/com/iemr/inventory/service/stockEntry/StockEntryServiceImpl.java b/src/main/java/com/iemr/inventory/service/stockEntry/StockEntryServiceImpl.java index 4f1992b..5e13dc9 100644 --- a/src/main/java/com/iemr/inventory/service/stockEntry/StockEntryServiceImpl.java +++ b/src/main/java/com/iemr/inventory/service/stockEntry/StockEntryServiceImpl.java @@ -155,6 +155,15 @@ public List getItemStockFromItemID(Integer facilityID, List Date: Wed, 29 Oct 2025 11:40:16 +0530 Subject: [PATCH 05/11] Add "Strength" field in Short Expiry report (#103) * Update version in pom.xml to 3.4.0 * Update pom.xml * fix: removed db iemr (#97) * fix: add logs (#100) * fix: add strength in shortexpiry report * fix: update pom.xml --------- Co-authored-by: Amoghavarsh <93114621+5Amogh@users.noreply.github.com> Co-authored-by: Vishwanath Balkur <118195001+vishwab1@users.noreply.github.com> Co-authored-by: vishwab1 Co-authored-by: Mithun James --- pom.xml | 2 +- .../iemr/inventory/repo/report/ItemStockReportRepo.java | 4 ++-- .../service/stockEntry/StockEntryServiceImpl.java | 8 -------- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index f23f68a..ef49ffb 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.iemr.inventory inventory-api - 3.4.0 + 3.5.0 war Inventory-API Inventory Page diff --git a/src/main/java/com/iemr/inventory/repo/report/ItemStockReportRepo.java b/src/main/java/com/iemr/inventory/repo/report/ItemStockReportRepo.java index af2885b..bb13624 100644 --- a/src/main/java/com/iemr/inventory/repo/report/ItemStockReportRepo.java +++ b/src/main/java/com/iemr/inventory/repo/report/ItemStockReportRepo.java @@ -99,11 +99,11 @@ List getDailyStockDetailReportByFacilityID(@Param("startDate") Date st List getDailyStockSummaryReportByFacilityID(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("facilityID") Integer facilityID); - @Query(value="Select distinct FacilityName, ItemName, ItemCategoryName, BatchNo, UnitCostPrice, ExpiryDate, QuantityInHand from db_reporting.fact_itemstockentry " + @Query(value="Select distinct FacilityName, ItemName, ItemCategoryName, Strength, BatchNo, UnitCostPrice, ExpiryDate, QuantityInHand from db_reporting.fact_itemstockentry " + "where ExpiryDate >= :startDate and ExpiryDate <= adddate(:startDate,AlertBeforeDays) and Deleted=false order by ExpiryDate asc",nativeQuery=true) List getShortExpiryReport(@Param("startDate") Date startDate); - @Query(value="Select distinct FacilityName, ItemName, ItemCategoryName, BatchNo, UnitCostPrice, ExpiryDate, QuantityInHand from db_reporting.fact_itemstockentry " + @Query(value="Select distinct FacilityName, ItemName, ItemCategoryName, Strength, BatchNo, UnitCostPrice, ExpiryDate, QuantityInHand from db_reporting.fact_itemstockentry " + "where ExpiryDate >= :startDate and ExpiryDate <= adddate(:startDate,AlertBeforeDays) and FacilityID = :facilityID and Deleted=false order by ExpiryDate asc",nativeQuery=true) List getShortExpiryReportByFacilityID(@Param("startDate") Date startDate, @Param("facilityID") Integer facilityID); diff --git a/src/main/java/com/iemr/inventory/service/stockEntry/StockEntryServiceImpl.java b/src/main/java/com/iemr/inventory/service/stockEntry/StockEntryServiceImpl.java index 5e13dc9..1cc756b 100644 --- a/src/main/java/com/iemr/inventory/service/stockEntry/StockEntryServiceImpl.java +++ b/src/main/java/com/iemr/inventory/service/stockEntry/StockEntryServiceImpl.java @@ -155,14 +155,6 @@ public List getItemStockFromItemID(Integer facilityID, List Date: Wed, 29 Oct 2025 12:09:18 +0530 Subject: [PATCH 06/11] fix: add log --- .../inventory/service/stockEntry/StockEntryServiceImpl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/iemr/inventory/service/stockEntry/StockEntryServiceImpl.java b/src/main/java/com/iemr/inventory/service/stockEntry/StockEntryServiceImpl.java index 1cc756b..ae5247a 100644 --- a/src/main/java/com/iemr/inventory/service/stockEntry/StockEntryServiceImpl.java +++ b/src/main/java/com/iemr/inventory/service/stockEntry/StockEntryServiceImpl.java @@ -148,14 +148,13 @@ public List getItemStockFromItemID(Integer facilityID, List allocateItemMapList = new ArrayList(); - + logger.info("ItemStockExitList Size:" + itemStockExitList.size()); for (ItemStockExit itemStockExit : itemStockExitList) { AllocateItemMap allocateItemMap = new AllocateItemMap(); List itemStockList = new ArrayList(); ItemMaster item = itemService.getItemMasterCatByID(itemStockExit.getItemID()); - allocateItemMap.setFacilityID(item.getFacilityID()); allocateItemMap.setItemID(item.getItemID()); allocateItemMap.setItemName(item.getItemName()); From 4b49c9b426139a1b4c7ae0b5fe7d2fe401c81cd9 Mon Sep 17 00:00:00 2001 From: Vanitha S <116701245+vanitha1822@users.noreply.github.com> Date: Thu, 30 Oct 2025 16:06:06 +0530 Subject: [PATCH 07/11] fix: add strength field in the report (#104) --- pom.xml | 20 +++++++++++++---- .../mapper/report/InventoryReportMapper.java | 1 + .../inventory/model/report/ExpiryReport.java | 5 ++++- .../service/report/CRMReportServiceImpl.java | 22 ++++++++++++++----- 4 files changed, 37 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index ef49ffb..b8dcce9 100644 --- a/pom.xml +++ b/pom.xml @@ -111,11 +111,11 @@ jersey-media-multipart 2.0-m11 - + org.springframework.boot spring-boot-starter-test @@ -215,14 +215,26 @@ org.springframework.boot spring-boot-starter - + + + org.slf4j + slf4j-api + ${slf4j.version} + + + org.slf4j + slf4j-simple + ${slf4j.version} + + + org.springframework.plugin spring-plugin-core diff --git a/src/main/java/com/iemr/inventory/mapper/report/InventoryReportMapper.java b/src/main/java/com/iemr/inventory/mapper/report/InventoryReportMapper.java index 712dd83..5347151 100644 --- a/src/main/java/com/iemr/inventory/mapper/report/InventoryReportMapper.java +++ b/src/main/java/com/iemr/inventory/mapper/report/InventoryReportMapper.java @@ -53,6 +53,7 @@ public interface InventoryReportMapper { @Mappings({ @Mapping(target = "facilityName", expression = "java(entryReport.getFacilityName())"), @Mapping(target = "itemName", expression = "java(entryReport.getItemName())"), @Mapping(target = "itemCategory", expression = "java(entryReport.getItemCategoryName())"), + @Mapping(target = "strength", expression = "java(entryReport.getStrength())"), @Mapping(target = "batchNo", expression = "java(entryReport.getBatchNo())"), @Mapping(target = "unitCostPrice", expression = "java(entryReport.getUnitCostPrice())"), @Mapping(target = "expiryDate", expression = "java(entryReport.getExpiryDate())"), diff --git a/src/main/java/com/iemr/inventory/model/report/ExpiryReport.java b/src/main/java/com/iemr/inventory/model/report/ExpiryReport.java index addf157..b1abd40 100644 --- a/src/main/java/com/iemr/inventory/model/report/ExpiryReport.java +++ b/src/main/java/com/iemr/inventory/model/report/ExpiryReport.java @@ -40,6 +40,8 @@ public class ExpiryReport { private String itemCategory; + private String strength; + private String batchNo; private Double unitCostPrice; @@ -52,12 +54,13 @@ public ExpiryReport() { } - public ExpiryReport(String facilityName, String itemName, String itemCategory, String batchNo, Double unitCostPrice, + public ExpiryReport(String facilityName, String itemName, String itemCategory, String Strength, String batchNo, Double unitCostPrice, Date expiryDate, Integer quantityInHand) { this.facilityName = facilityName; this.itemName = itemName; this.itemCategory = itemCategory; + this.strength = Strength; this.batchNo = batchNo; this.unitCostPrice = unitCostPrice; this.expiryDate = expiryDate; diff --git a/src/main/java/com/iemr/inventory/service/report/CRMReportServiceImpl.java b/src/main/java/com/iemr/inventory/service/report/CRMReportServiceImpl.java index 714043b..209ce57 100644 --- a/src/main/java/com/iemr/inventory/service/report/CRMReportServiceImpl.java +++ b/src/main/java/com/iemr/inventory/service/report/CRMReportServiceImpl.java @@ -27,6 +27,8 @@ import java.util.Calendar; import java.util.List; import java.util.Objects; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -57,6 +59,8 @@ public class CRMReportServiceImpl implements CRMReportService { @Autowired(required=false) InventoryReportMapper mapper; + private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); + @Override public String getInwardStockReport(ItemStockEntryReport entryReport) { @@ -98,9 +102,10 @@ public String getExpiryReport(ItemStockEntryReport entryReport) { object[1] != null ? object[1].toString() : null, object[2] != null ? object[2].toString() : null, object[3] != null ? object[3].toString() : null, - object[4] != null ? Double.valueOf(object[4].toString()) : null, - (Date) (object[5] != null ? object[5] : null), - (Integer) (object[6] != null ? object[6] : null)); + object[4] != null ? object[4].toString() : null, + object[5] != null ? Double.valueOf(object[5].toString()) : null, + (Date) (object[6] != null ? object[6] : null), + (Integer) (object[7] != null ? object[7] : null)); report.setSlNo(slNo++); reportList.add(report); @@ -618,6 +623,10 @@ public String getShortExpiryReport(ItemStockEntryReport entryReport) { list = itemStockReportRepo.getShortExpiryReport(startExpiry); } + logger.info("Short Expiry Report Start Date: " + startExpiry + " End Date: " + endExpiry); + + logger.info("Short Expiry Report List Size: " + list.size()); + Long slNo = 1L; for (Object[] object : list) { @@ -627,9 +636,10 @@ public String getShortExpiryReport(ItemStockEntryReport entryReport) { object[1] != null ? object[1].toString() : null, object[2] != null ? object[2].toString() : null, object[3] != null ? object[3].toString() : null, - object[4] != null ? ((BigDecimal) object[4]).doubleValue() : null, - (Date) (object[5] != null ? object[5] : null), - (Integer) (object[6] != null ? object[6] : null)); + object[4] != null ? object[4].toString() : null, + object[5] != null ? ((BigDecimal) object[5]).doubleValue() : null, + (Date) (object[6] != null ? object[6] : null), + (Integer) (object[7] != null ? object[7] : null)); report.setSlNo(slNo++); reportList.add(report); From a4a0782c3be4a491416e34aa8c1ba867b2d30704 Mon Sep 17 00:00:00 2001 From: Vanitha Date: Thu, 30 Oct 2025 16:38:58 +0530 Subject: [PATCH 08/11] fix: check by add logs --- .../iemr/inventory/controller/report/CRMReportController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/iemr/inventory/controller/report/CRMReportController.java b/src/main/java/com/iemr/inventory/controller/report/CRMReportController.java index 39c891d..3627768 100644 --- a/src/main/java/com/iemr/inventory/controller/report/CRMReportController.java +++ b/src/main/java/com/iemr/inventory/controller/report/CRMReportController.java @@ -211,7 +211,7 @@ public String getShortExpiryReport(@RequestBody String request) { ItemStockEntryReport report = InputMapper.gson().fromJson(request, ItemStockEntryReport.class); String res = crmReportService.getShortExpiryReport(report); response.setResponse(res); - logger.info("getShortExpiryReport response " + response.toString()); + logger.info("Short Expiry Report response:" + response.toString()); } catch (Exception e) { logger.error(e.getMessage()); response.setError(e); From 9047c223ca8319cbd89020349190c523d69f5278 Mon Sep 17 00:00:00 2001 From: 5Amogh Date: Tue, 18 Nov 2025 09:38:49 +0530 Subject: [PATCH 09/11] fix: amm-1927 res headers based on cors config for security --- .../utils/JwtUserIdValidationFilter.java | 67 ++++++++++++++----- .../utils/http/HTTPRequestInterceptor.java | 29 +++++++- 2 files changed, 80 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/iemr/inventory/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/inventory/utils/JwtUserIdValidationFilter.java index 9e0dfca..6f37aa8 100644 --- a/src/main/java/com/iemr/inventory/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/inventory/utils/JwtUserIdValidationFilter.java @@ -38,27 +38,56 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo String origin = request.getHeader("Origin"); + String method = request.getMethod(); + String uri = request.getRequestURI(); + logger.debug("Incoming Origin: {}", origin); + logger.debug("Request Method: {}", method); + logger.debug("Request URI: {}", uri); logger.debug("Allowed Origins Configured: {}", allowedOrigins); - if (origin != null && isOriginAllowed(origin)) { - response.setHeader("Access-Control-Allow-Origin", origin); - response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"); - response.setHeader("Access-Control-Allow-Headers", "Authorization, Content-Type, Accept, Jwttoken"); - response.setHeader("Vary", "Origin"); - response.setHeader("Access-Control-Allow-Credentials", "true"); + if ("OPTIONS".equalsIgnoreCase(method)) { + if (origin == null) { + logger.warn("BLOCKED - OPTIONS request without Origin header | Method: {} | URI: {}", method, uri); + response.sendError(HttpServletResponse.SC_FORBIDDEN, "OPTIONS request requires Origin header"); + return; + } + if (!isOriginAllowed(origin)) { + logger.warn("BLOCKED - Unauthorized Origin | Origin: {} | Method: {} | URI: {}", origin, method, uri); + response.sendError(HttpServletResponse.SC_FORBIDDEN, "Origin not allowed"); + return; + } } else { - logger.warn("Origin [{}] is NOT allowed. CORS headers NOT added.", origin); - } - - if ("OPTIONS".equalsIgnoreCase(request.getMethod())) { - logger.info("OPTIONS request - skipping JWT validation"); - response.setStatus(HttpServletResponse.SC_OK); - return; + // For non-OPTIONS requests, validate origin if present + if (origin != null && !isOriginAllowed(origin)) { + logger.warn("BLOCKED - Unauthorized Origin | Origin: {} | Method: {} | URI: {}", origin, method, uri); + response.sendError(HttpServletResponse.SC_FORBIDDEN, "Origin not allowed"); + return; + } } String path = request.getRequestURI(); String contextPath = request.getContextPath(); + + // Set CORS headers and handle OPTIONS request only if origin is valid and + // allowed + if (origin != null && isOriginAllowed(origin)) { + addCorsHeaders(response, origin); + logger.info("Origin Validated | Origin: {} | Method: {} | URI: {}", origin, method, uri); + + if ("OPTIONS".equalsIgnoreCase(method)) { + // OPTIONS (preflight) - respond with full allowed methods + response.setStatus(HttpServletResponse.SC_OK); + return; + } + } else { + logger.warn("Origin [{}] is NOT allowed. CORS headers NOT added.", origin); + + if ("OPTIONS".equalsIgnoreCase(method)) { + response.sendError(HttpServletResponse.SC_FORBIDDEN, "Origin not allowed for OPTIONS request"); + return; + } + } logger.info("JwtUserIdValidationFilter invoked for path: " + path); // Log cookies for debugging @@ -145,8 +174,7 @@ private boolean isOriginAllowed(String origin) { .anyMatch(pattern -> { String regex = pattern .replace(".", "\\.") - .replace("*", ".*") - .replace("http://localhost:.*", "http://localhost:\\d+"); // special case for wildcard port + .replace("*", ".*"); boolean matched = origin.matches(regex); return matched; @@ -180,4 +208,13 @@ private void clearUserIdCookie(HttpServletResponse response) { cookie.setMaxAge(0); // Invalidate the cookie response.addCookie(cookie); } + + private void addCorsHeaders(HttpServletResponse response, String origin) { + response.setHeader("Access-Control-Allow-Origin", origin); // Never use wildcard + response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, PATCH, DELETE, OPTIONS"); + response.setHeader("Access-Control-Allow-Headers", + "Authorization, Content-Type, Accept, Jwttoken, serverAuthorization, ServerAuthorization, serverauthorization, Serverauthorization"); + response.setHeader("Access-Control-Allow-Credentials", "true"); + response.setHeader("Access-Control-Max-Age", "3600"); + } } diff --git a/src/main/java/com/iemr/inventory/utils/http/HTTPRequestInterceptor.java b/src/main/java/com/iemr/inventory/utils/http/HTTPRequestInterceptor.java index 52e93ee..042539e 100644 --- a/src/main/java/com/iemr/inventory/utils/http/HTTPRequestInterceptor.java +++ b/src/main/java/com/iemr/inventory/utils/http/HTTPRequestInterceptor.java @@ -24,6 +24,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; @@ -36,11 +37,16 @@ import jakarta.ws.rs.core.MediaType; import java.io.OutputStream; import java.io.PrintStream; +import java.util.Arrays; @Component public class HTTPRequestInterceptor implements HandlerInterceptor { Logger logger = LoggerFactory.getLogger(this.getClass().getName()); + + @Value("${cors.allowed-origins}") + private String allowedOrigins; + @Autowired private RedisStorage redisStorage; @@ -105,7 +111,13 @@ public boolean preHandle(HttpServletRequest request, HttpServletResponse respons response.setContentType(MediaType.APPLICATION_JSON); - response.setHeader("Access-Control-Allow-Origin", "*"); + String origin = request.getHeader("Origin"); + if (origin != null && isOriginAllowed(origin)) { + response.setHeader("Access-Control-Allow-Origin", origin); + response.setHeader("Access-Control-Allow-Credentials", "true"); + } else if (origin != null) { + logger.warn("CORS headers NOT added for error response | Unauthorized origin: {}", origin); + } status = false; } } @@ -144,4 +156,19 @@ public void afterCompletion(HttpServletRequest request, HttpServletResponse resp } + private boolean isOriginAllowed(String origin) { + if (origin == null || allowedOrigins == null || allowedOrigins.trim().isEmpty()) { + return false; + } + + return Arrays.stream(allowedOrigins.split(",")) + .map(String::trim) + .anyMatch(pattern -> { + String regex = pattern + .replace(".", "\\.") + .replace("*", ".*"); + return origin.matches(regex); + }); + } + } From e280c860e6bae1310a95ad726ba3309b1336c754 Mon Sep 17 00:00:00 2001 From: Amoghavarsh <93114621+5Amogh@users.noreply.github.com> Date: Thu, 4 Dec 2025 17:04:08 +0530 Subject: [PATCH 10/11] Bump version from 3.5.0 to 3.6.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b8dcce9..8b238e1 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.iemr.inventory inventory-api - 3.5.0 + 3.6.0 war Inventory-API Inventory Page From 7ce8ac13e9ead554ee453d84b24d4ba23051d2c2 Mon Sep 17 00:00:00 2001 From: 5Amogh Date: Tue, 30 Dec 2025 15:46:21 +0530 Subject: [PATCH 11/11] fix: amm-1937 NumberFormatException in getExpiryReport API fixed --- .../com/iemr/inventory/repo/report/ItemStockReportRepo.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/iemr/inventory/repo/report/ItemStockReportRepo.java b/src/main/java/com/iemr/inventory/repo/report/ItemStockReportRepo.java index bb13624..99a9ca6 100644 --- a/src/main/java/com/iemr/inventory/repo/report/ItemStockReportRepo.java +++ b/src/main/java/com/iemr/inventory/repo/report/ItemStockReportRepo.java @@ -48,11 +48,11 @@ List getItemStockEntryReport(@Param("startDate") Timestamp List getItemStockEntryReportByFacilityID(@Param("startDate") Timestamp startDate, @Param("endDate") Timestamp endDate, @Param("facilityID") Integer facilityID); - @Query(value = "Select distinct FacilityName, ItemName, ItemCategoryName, BatchNo, UnitCostPrice, ExpiryDate, QuantityInHand from db_reporting.fact_itemstockentry " + @Query(value = "Select distinct FacilityName, ItemName, ItemCategoryName, Strength, BatchNo, UnitCostPrice, ExpiryDate, QuantityInHand from db_reporting.fact_itemstockentry " + "where ExpiryDate >= :startDate and ExpiryDate <= :endDate order by ExpiryDate asc",nativeQuery = true) List getExpiryReport(@Param("startDate") Date startDate, @Param("endDate") Date endDate); - @Query(value = "Select distinct FacilityName, ItemName, ItemCategoryName, BatchNo, UnitCostPrice, ExpiryDate, QuantityInHand from db_reporting.fact_itemstockentry " + @Query(value = "Select distinct FacilityName, ItemName, ItemCategoryName, Strength, BatchNo, UnitCostPrice, ExpiryDate, QuantityInHand from db_reporting.fact_itemstockentry " + "where ExpiryDate >= :startDate and ExpiryDate <= :endDate and FacilityID = :facilityID order by ExpiryDate asc",nativeQuery = true) List getExpiryReportByFacilityID(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("facilityID") Integer facilityID);