|
|
@@ -46,6 +46,22 @@ open class StockLotLedgerReportService( |
|
|
return LedgerPeriod(start = startParsed.withDayOfMonth(1), end = end) |
|
|
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<String, Any>(), |
|
|
|
|
|
).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( |
|
|
fun searchStockLotLedgerReport( |
|
|
itemCode: String?, |
|
|
itemCode: String?, |
|
|
reportPeriodStart: String?, |
|
|
reportPeriodStart: String?, |
|
|
|