diff --git a/src/main/java/com/ffii/fpsms/modules/report/service/StockLotLedgerReportService.kt b/src/main/java/com/ffii/fpsms/modules/report/service/StockLotLedgerReportService.kt index 16547fce..1166a127 100644 --- a/src/main/java/com/ffii/fpsms/modules/report/service/StockLotLedgerReportService.kt +++ b/src/main/java/com/ffii/fpsms/modules/report/service/StockLotLedgerReportService.kt @@ -46,6 +46,22 @@ open class StockLotLedgerReportService( return LedgerPeriod(start = startParsed.withDayOfMonth(1), end = end) } + /** First day of the earliest month that has a stock_ledger row. */ + fun earliestLedgerMonth(): LocalDate { + val row = jdbcDao.queryForList( + """ + SELECT DATE_FORMAT(MIN(sl.date), '%Y-%m-%d') AS firstDate + FROM stock_ledger sl + WHERE sl.deleted = 0 + """.trimIndent(), + emptyMap(), + ).firstOrNull() + val raw = row?.get("firstDate")?.toString()?.trim().orEmpty() + val parsed = raw.takeIf { it.isNotEmpty() && !it.equals("null", ignoreCase = true) } + ?.let { runCatching { LocalDate.parse(it.take(10)) }.getOrNull() } + return (parsed ?: LocalDate.now()).withDayOfMonth(1) + } + fun searchStockLotLedgerReport( itemCode: String?, reportPeriodStart: String?, diff --git a/src/main/java/com/ffii/fpsms/modules/report/web/StockLotLedgerReportController.kt b/src/main/java/com/ffii/fpsms/modules/report/web/StockLotLedgerReportController.kt index d8ac95da..cea09dc4 100644 --- a/src/main/java/com/ffii/fpsms/modules/report/web/StockLotLedgerReportController.kt +++ b/src/main/java/com/ffii/fpsms/modules/report/web/StockLotLedgerReportController.kt @@ -47,6 +47,12 @@ class StockLotLedgerReportController( val dash: CellStyle, ) + @GetMapping("/stock-lot-ledger-earliest") + fun earliestLedgerMonth(): Map { + val earliest = stockLotLedgerReportService.earliestLedgerMonth() + return mapOf("earliest" to earliest.format(DateTimeFormatter.ISO_LOCAL_DATE)) + } + @GetMapping("/print-stock-lot-ledger-excel") fun exportStockLotLedgerReportExcel( @RequestParam(required = false) itemCode: String?,