diff --git a/src/main/java/com/ffii/tsms/modules/report/service/ReportService.kt b/src/main/java/com/ffii/tsms/modules/report/service/ReportService.kt index f49f190..51bacec 100644 --- a/src/main/java/com/ffii/tsms/modules/report/service/ReportService.kt +++ b/src/main/java/com/ffii/tsms/modules/report/service/ReportService.kt @@ -1488,27 +1488,31 @@ private fun createLateStartReport( lateStartData: List>, evaluator: FormulaEvaluator ) { - var dataRowIndex = 6 // Starting from row 7 + var dataRowIndex = 6 + + // Populate the rows with data from the database lateStartData.forEachIndexed { index, data -> val row = sheet.getRow(dataRowIndex) ?: sheet.createRow(dataRowIndex) populateDataRow(workbook, sheet, row, data, index) dataRowIndex++ } - // Update conditional formatting to apply to the new range of column J - val sheetCF = sheet.sheetConditionalFormatting - val rule1 = sheetCF.createConditionalFormattingRule("J7 < 60") - val pattern1 = rule1.createPatternFormatting().apply { - fillBackgroundColor = IndexedColors.RED.index - fillPattern = PatternFormatting.SOLID_FOREGROUND - } - val rule2 = sheetCF.createConditionalFormattingRule("J7 >= 60") - val pattern2 = rule2.createPatternFormatting().apply { - fillBackgroundColor = IndexedColors.YELLOW.index - fillPattern = PatternFormatting.SOLID_FOREGROUND - } - val region = CellRangeAddress(dataRowIndex - lateStartData.size, dataRowIndex - 1, 9, 9) // Column J - sheetCF.addConditionalFormatting(arrayOf(region), arrayOf(rule1, rule2)) + // Only apply conditional formatting if there is data + if (lateStartData.isNotEmpty()) { + val sheetCF = sheet.sheetConditionalFormatting + val rule1 = sheetCF.createConditionalFormattingRule("J7 < 60") + val pattern1 = rule1.createPatternFormatting().apply { + fillBackgroundColor = IndexedColors.RED.index + fillPattern = PatternFormatting.SOLID_FOREGROUND + } + val rule2 = sheetCF.createConditionalFormattingRule("J7 >= 60") + val pattern2 = rule2.createPatternFormatting().apply { + fillBackgroundColor = IndexedColors.YELLOW.index + fillPattern = PatternFormatting.SOLID_FOREGROUND + } + val region = CellRangeAddress(6, dataRowIndex - 1, 9, 9) // Column J + sheetCF.addConditionalFormatting(arrayOf(region), arrayOf(rule1, rule2)) + } } private fun setTeamAndClientIds(sheet: Sheet, team: List, teamId: Long, customer: List, clientId: Long) { // Set the 'teamId' value in cell C3