Corregido un problema existente con la generacion de informes, fallaba con febrero y probablemente con todos los meses que no tuvieran 31 dias XD

This commit is contained in:
Daniel Cortes
2019-02-05 18:34:06 -03:00
parent ae5fd8e5bf
commit d84f07a6c9
3 changed files with 66 additions and 64 deletions

View File

@@ -111,6 +111,7 @@ public class InformeEgresos {
dataRow.createCell(cellCounter++).setCellValue(data.getDescripcion());
dataRow.createCell(cellCounter).setCellValue(data.getValor());
// Comprueba si es que el siguiente elemento en la lista de informe es del siguiente dia, si es asi, agrega una linea con los totales diarios.
if (informeID + 1 >= informe.size() || !data.getFecha().equals(informe.get(informeID + 1).getFecha())) {
totalRows.add(sheet.createRow(rowCounter + 1));

View File

@@ -66,9 +66,12 @@ public class InformeLibroDeVentas {
private final String[] dias = {"Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado"};
private ArrayList<InformeLibroDeVentasContent> informe;
private int informeSize;
private Path saveFile;
private ArrayList<Row> dataRows;
private Row footerRow;
private ArrayList<Row> headerRows;
private Workbook wb;
private Sheet sheet;
private CreationHelper createHelper;
@@ -78,9 +81,11 @@ public class InformeLibroDeVentas {
new SQLiteCajaDAO().createCajasForMonth(date);
this.informe = new ArrayList<>(DAOManager.getLibroDeVentasContentDAO().getInformeMensual(date));
this.informeSize = this.informe.size();
this.saveFile = saveFile;
this.dataRows = new ArrayList<>();
this.headerRows = new ArrayList<>();
this.wb = new HSSFWorkbook();
this.sheet = wb.createSheet();
this.createHelper = wb.getCreationHelper();
@@ -96,6 +101,9 @@ public class InformeLibroDeVentas {
Row titles = sheet.createRow(0);
Row subtitles = sheet.createRow(1);
headerRows.add(titles);
headerRows.add(subtitles);
for (int x = 0; x < this.titles.length; x++) {
titles.createCell(x).setCellValue(this.titles[x]);
}
@@ -106,63 +114,62 @@ public class InformeLibroDeVentas {
}
private void fillData() {
int x = 2;
int rowCounter = 2;
for (InformeLibroDeVentasContent data : this.informe) {
int y = 0;
Row dataRow = sheet.createRow(x);
int cellCounter = 0;
Row dataRow = sheet.createRow(rowCounter);
dataRows.add(dataRow);
Date fecha = Date.from(data.getFecha().atStartOfDay(ZoneId.systemDefault()).toInstant());
dataRow.createCell(y++).setCellValue(this.dias[data.getDia()]);
dataRow.createCell(y++).setCellValue(fecha);
dataRow.createCell(cellCounter++).setCellValue(this.dias[data.getDia()]);
dataRow.createCell(cellCounter++).setCellValue(fecha);
dataRow.createCell(y++).setCellValue(data.getManualesInicial() == null ? "0" : data.getManualesInicial());
dataRow.createCell(y++).setCellValue(data.getManualesFinal() == null ? "0" : data.getManualesFinal());
dataRow.createCell(y++).setCellValue(data.getManuales());
dataRow.createCell(cellCounter++).setCellValue(data.getManualesInicial() == null ? "0" : data.getManualesInicial());
dataRow.createCell(cellCounter++).setCellValue(data.getManualesFinal() == null ? "0" : data.getManualesFinal());
dataRow.createCell(cellCounter++).setCellValue(data.getManuales());
dataRow.createCell(y++).setCellValue(data.getFiscalesZInicial() == null ? "0" : data.getFiscalesZInicial());
dataRow.createCell(y++).setCellValue(data.getFiscalesZFinal() == null ? "0" : data.getFiscalesZFinal());
dataRow.createCell(y++).setCellValue(data.getFiscalesInicial() == null ? "0" : data.getFiscalesInicial());
dataRow.createCell(y++).setCellValue(data.getFiscalesFinal() == null ? "0" : data.getFiscalesFinal());
dataRow.createCell(y++).setCellValue(data.getFiscales());
dataRow.createCell(cellCounter++).setCellValue(data.getFiscalesZInicial() == null ? "0" : data.getFiscalesZInicial());
dataRow.createCell(cellCounter++).setCellValue(data.getFiscalesZFinal() == null ? "0" : data.getFiscalesZFinal());
dataRow.createCell(cellCounter++).setCellValue(data.getFiscalesInicial() == null ? "0" : data.getFiscalesInicial());
dataRow.createCell(cellCounter++).setCellValue(data.getFiscalesFinal() == null ? "0" : data.getFiscalesFinal());
dataRow.createCell(cellCounter++).setCellValue(data.getFiscales());
dataRow.createCell(y++).setCellValue(data.getExentasInicial() == null ? "0" : data.getExentasInicial());
dataRow.createCell(y++).setCellValue(data.getExentasFinal() == null ? "0" : data.getExentasFinal());
dataRow.createCell(y++).setCellValue(data.getExentas());
dataRow.createCell(cellCounter++).setCellValue(data.getExentasInicial() == null ? "0" : data.getExentasInicial());
dataRow.createCell(cellCounter++).setCellValue(data.getExentasFinal() == null ? "0" : data.getExentasFinal());
dataRow.createCell(cellCounter++).setCellValue(data.getExentas());
dataRow.createCell(y++).setCellValue(data.getSubTotal());
dataRow.createCell(cellCounter++).setCellValue(data.getSubTotal());
dataRow.createCell(y++).setCellValue(data.getFacturasInicial() == null ? "0" : data.getFacturasInicial());
dataRow.createCell(y++).setCellValue(data.getFacturasFinal() == null ? "0" : data.getFacturasFinal());
dataRow.createCell(y++).setCellValue(data.getFacturas());
dataRow.createCell(cellCounter++).setCellValue(data.getFacturasInicial() == null ? "0" : data.getFacturasInicial());
dataRow.createCell(cellCounter++).setCellValue(data.getFacturasFinal() == null ? "0" : data.getFacturasFinal());
dataRow.createCell(cellCounter++).setCellValue(data.getFacturas());
dataRow.createCell(y++).setCellValue(data.getGuiasInicial() == null ? "0" : data.getGuiasInicial());
dataRow.createCell(y++).setCellValue(data.getGuiasFinal() == null ? "0" : data.getGuiasFinal());
dataRow.createCell(y++).setCellValue(data.getGuias());
dataRow.createCell(cellCounter++).setCellValue(data.getGuiasInicial() == null ? "0" : data.getGuiasInicial());
dataRow.createCell(cellCounter++).setCellValue(data.getGuiasFinal() == null ? "0" : data.getGuiasFinal());
dataRow.createCell(cellCounter++).setCellValue(data.getGuias());
dataRow.createCell(y++).setCellValue(data.getTotal());
dataRow.createCell(cellCounter++).setCellValue(data.getTotal());
if (x == 2) {
dataRow.createCell(y).setCellFormula(("U" + (x + 1)));
if (rowCounter == 2) {
dataRow.createCell(cellCounter).setCellFormula(("U" + (rowCounter + 1)));
} else {
dataRow.createCell(y).setCellFormula(("U" + (x + 1)) + ("+") + ("V" + (x)));
dataRow.createCell(cellCounter).setCellFormula(("U" + (rowCounter + 1)) + ("+") + ("V" + (rowCounter)));
}
x++;
rowCounter++;
}
}
private void fillTotales() {
int row = 2 + this.informeSize;
Row totalesRow = sheet.createRow(row);
int row = 2 + this.informe.size();
this.footerRow = sheet.createRow(row);
totalesRow.createCell(0).setCellValue("TOTALES");
totalesRow.createCell(4).setCellFormula("SUM(E" + 3 + ":E" + row + ")");
totalesRow.createCell(9).setCellFormula("SUM(J" + 3 + ":J" + row + ")");
totalesRow.createCell(12).setCellFormula("SUM(M" + 3 + ":M" + row + ")");
totalesRow.createCell(16).setCellFormula("SUM(Q" + 3 + ":Q" + row + ")");
totalesRow.createCell(19).setCellFormula("SUM(T" + 3 + ":T" + row + ")");
this.footerRow.createCell(0).setCellValue("TOTALES");
this.footerRow.createCell(4).setCellFormula("SUM(E" + 3 + ":E" + row + ")");
this.footerRow.createCell(9).setCellFormula("SUM(J" + 3 + ":J" + row + ")");
this.footerRow.createCell(12).setCellFormula("SUM(M" + 3 + ":M" + row + ")");
this.footerRow.createCell(16).setCellFormula("SUM(Q" + 3 + ":Q" + row + ")");
this.footerRow.createCell(19).setCellFormula("SUM(T" + 3 + ":T" + row + ")");
}
private void joinCells() {
@@ -215,21 +222,16 @@ public class InformeLibroDeVentas {
private void setStyles() {
//Estilos para los 2 filas de titulos
Iterator<Cell> cellIterator = this.sheet.getRow(0).cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
cell.setCellStyle(this.styles.get("header"));
}
cellIterator = this.sheet.getRow(1).cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
cell.setCellStyle(this.styles.get("header"));
for(Row header: headerRows){
Iterator<Cell> cellIterator = header.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
cell.setCellStyle(this.styles.get("header"));
}
}
//Estilos para las celdas de los datos
for (int x = 2; x < this.informeSize + 2; x++) {
Row row = this.sheet.getRow(x);
for (Row row: dataRows) {
int y = 0;
//Primeras Celdas
@@ -273,23 +275,22 @@ public class InformeLibroDeVentas {
//Estilos para los totales del footer
Row footerRow = this.sheet.getRow(33);
for (int x = 0; x < 23; x++) {
footerRow.getCell(x, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellStyle(this.styles.get("footer"));
this.footerRow.getCell(x, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellStyle(this.styles.get("footer"));
}
footerRow.getCell(4).setCellStyle(this.styles.get("footer_money"));
footerRow.getCell(9).setCellStyle(this.styles.get("footer_money"));
footerRow.getCell(12).setCellStyle(this.styles.get("footer_money"));
footerRow.getCell(16).setCellStyle(this.styles.get("footer_money"));
footerRow.getCell(19).setCellStyle(this.styles.get("footer_money"));
this.footerRow.getCell(4).setCellStyle(this.styles.get("footer_money"));
this.footerRow.getCell(9).setCellStyle(this.styles.get("footer_money"));
this.footerRow.getCell(12).setCellStyle(this.styles.get("footer_money"));
this.footerRow.getCell(16).setCellStyle(this.styles.get("footer_money"));
this.footerRow.getCell(19).setCellStyle(this.styles.get("footer_money"));
//Setea la altura para todas las filas
this.sheet.getRow(0).setHeightInPoints(20);
this.sheet.getRow(1).setHeightInPoints(30);
this.sheet.getRow(33).setHeightInPoints(20);
this.headerRows.get(0).setHeightInPoints(20);
this.headerRows.get(1).setHeightInPoints(30);
this.footerRow.setHeightInPoints(20);
for (int x = 2; x < 32; x++) {
this.sheet.getRow(x).setHeightInPoints(15);
for (Row row: dataRows) {
row.setHeightInPoints(15);
}
//Coloca el ancho como automatico en todas las columnas