/**
 * XXXX
 * Inserte aquí la descripción del tipo.
 * Fecha de creación: (26/05/08)
 */   
package com.ejie.p06b.excel;

import java.util.ArrayList;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import javax.servlet.http.HttpServletRequest;

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFDataFormat;
//import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
//import org.apache.poi.xssf.usermodel.XSSFColor;

import com.ejie.p06b.log.P06BLog;
import com.ejie.p06b.manager.P06BCorredoresManager;
import com.ejie.p06b.util.P06BParametros;
import com.ejie.p06b.util.P06BResources;
import com.ejie.p06b.datatype.logic.P06BInformeOtroDECDet;
import com.ejie.p06b.general.P06BConstantes;



/**
 * Clase que gestiona la generación del pdf
 */
public class P06BInformeDetalleNegocio implements P06BIExcel {
    private static long numeroEXCEL = 0;
	
	//Todo bien --> Devuelve la ruta donde dejaremos el excel
	//Error --> 1 Error al generar el EXCEL
    public String getEXCEL(HttpServletRequest request) throws Exception {
		P06BLog.send(2,"P06BListadoExcel", "getEXCEL(...)");
		
    	P06BResources res = (P06BResources)request.getSession().getAttribute(P06BConstantes.P06B_RES_SES_ETIQUETAS);

    	String idioma = (String)request.getAttribute(P06BConstantes.P06B_VAR_PERFIL_USUARIO);	
		if (idioma == null || idioma.equals("") ){
			idioma = P06BConstantes.P06B_IDIOMA_ES; //"es"
		}
		
		int lineaDetalle = 0;
		
		numeroEXCEL=numeroEXCEL+1;
		String error="1";
		
		//TODO COMPROBAR SI ESTA LINEA ES CORRECTA !!!!!!!
		String excelFichero = P06BParametros.get("excel.informeDetalleNegocio")+numeroEXCEL+".excel";
		
//		String where = (String)request.getSession().getAttribute(P06BConstantes.P06B_VAR_TEMP+"Corredor"+P06BConstantes.P06B_VAR_TEMP_FILTRO);
//		P06BLog.send(2,"P06BListadoExcel - getEXCEL", "WHERE para el listado EXCEL: " + where);
//		
//		//Obtener el listado de corredores que cumplen los criterios de búsqueda
//		ArrayList corredoresListadoExcel = P06BCorredoresManager.getInstance().selectCorredoresListadoBusqueda(where);
		String ejerDEC = (request.getParameter("EjercicioResumenDEC")==null)?"":request.getParameter("EjercicioResumenDEC");
		
		ArrayList<P06BInformeOtroDECDet> p06BInformeOtroDECDet = P06BCorredoresManager.getInstance().selectInformeOtroResumenDECDet(ejerDEC);
		try {			
			//create a new file
			FileOutputStream out = new FileOutputStream(excelFichero);
			//create a new workbook
			FileInputStream inputStream = new FileInputStream(new File(P06BParametros.get("excel.informeDetalleNegocio")));
			XSSFWorkbook wb = new XSSFWorkbook(inputStream);
			XSSFSheet s = null;
			XSSFRow r = null;
			XSSFCell c = null;
			XSSFCellStyle cs = null;
			XSSFDataFormat format = wb.createDataFormat();
			short formatNumber = format.getFormat("#,###,###,##0.00");
			short formatNumberRed = format.getFormat("[Red]#,###,###,##0.00");
//			short formatNumberRed = format.getFormat("[Rojo]#,###,###,##0.00");
			
//			XSSFFont fontRed = wb.createFont();
//			fontRed.setColor(XSSFColor.RED.index);
			
			for(int i=0;i<4;i++){
				s = wb.getSheetAt(i);
				wb.setSheetName(i, res.get("listados.excel01.p_"+(i+1)));
				for(int j=0;j<3;j++){
					r = s.getRow(j);
		            int dato = ((i+1) * 10)+j+1;
					switch(dato){
						case 41:
						case 31:
						case 21:
						case 11: {
							c = r.getCell(0);				
							c.setCellValue(ejerDEC);
							c = r.getCell(1);				
							c.setCellValue(res.get("listados.excel01.t1f1_01"));
							c = r.getCell(7);				
							c.setCellValue(res.get("listados.excel01.t1f1_07"));
							c = r.getCell(14);				
							if (dato==31||dato==41){
								c.setCellValue(res.get("listados.excel01.t3f1_13"));
								c = r.getCell(16);				
								c.setCellValue(res.get("listados.excel01.t1f1_15"));
								c = r.getCell(18);				
								c.setCellValue(res.get("listados.excel01.t3f1_15"));
								c = r.getCell(20);				
								c.setCellValue(res.get("listados.excel01.t3f1_15"));
							}
							else if (dato==11){
								c.setCellValue(res.get("listados.excel01.t1f1_13"));
								c = r.getCell(17);				
								c.setCellValue(res.get("listados.excel01.t1f1_15"));
							}
							else{
								c.setCellValue(res.get("listados.excel01.t2f1_13"));
								c = r.getCell(17);				
								c.setCellValue(res.get("listados.excel01.t2f1_15"));
							}
							break;
						}
						case 42:
						case 32:
						case 22:
						case 12: {
							c = r.getCell(1);				
							c.setCellValue(res.get("listados.excel01.t1f2_01"));
							c = r.getCell(4);				
							c.setCellValue(res.get("listados.excel01.t1f2_04"));
							c = r.getCell(7);				
							c.setCellValue(res.get("listados.excel01.t1f2_01"));
							c = r.getCell(10);				
							c.setCellValue(res.get("listados.excel01.t1f2_04"));
							c = r.getCell(14);				
							if (dato==32||dato==42){
								c.setCellValue(res.get("listados.excel01.t3f2_13"));
								c = r.getCell(16);				
								c.setCellValue(res.get("listados.excel01.t1f2_15"));
								c = r.getCell(18);				
								c.setCellValue(res.get("listados.excel01.t3f2_15"));
								c = r.getCell(20);				
								c.setCellValue(res.get("listados.excel01.t3f2_17"));
							}
							else if (dato==12){
								c.setCellValue(res.get("listados.excel01.t1f2_13"));
								c = r.getCell(15);				
								c.setCellValue(res.get("listados.excel01.t1f2_14"));
								c = r.getCell(17);				
								c.setCellValue(res.get("listados.excel01.t1f2_15"));
							}
							else{
								c.setCellValue(res.get("listados.excel01.t2f2_13"));
								c = r.getCell(15);				
								c.setCellValue(res.get("listados.excel01.t2f2_14"));
								c = r.getCell(17);				
								c.setCellValue(res.get("listados.excel01.t2f2_15"));
							}
							break;
						}
						case 43:
						case 33:
						case 23:
						case 13: {
							c = r.getCell(0);
							if (dato==43){
								c.setCellValue(res.get("listados.excel01.t4f3_00"));								
							}
							else if (dato==33){
								c.setCellValue(res.get("listados.excel01.t3f3_00"));
							}
							else if (dato==13){
								c.setCellValue(res.get("listados.excel01.t1f3_00"));
							}
							else{
								c.setCellValue(res.get("listados.excel01.t2f3_00"));
							}
							c = r.getCell(1);				
							c.setCellValue(res.get("listados.excel01.t1f3_01"));
							c = r.getCell(2);				
							c.setCellValue(res.get("listados.excel01.t1f3_02"));
							c = r.getCell(3);				
							c.setCellValue(res.get("listados.excel01.t1f3_03"));
							c = r.getCell(4);				
							c.setCellValue(res.get("listados.excel01.t1f3_01"));
							c = r.getCell(5);				
							c.setCellValue(res.get("listados.excel01.t1f3_02"));
							c = r.getCell(6);				
							c.setCellValue(res.get("listados.excel01.t1f3_03"));
							c = r.getCell(7);				
							c.setCellValue(res.get("listados.excel01.t1f3_01"));
							c = r.getCell(8);				
							c.setCellValue(res.get("listados.excel01.t1f3_02"));
							c = r.getCell(9);				
							c.setCellValue(res.get("listados.excel01.t1f3_03"));
							c = r.getCell(10);				
							c.setCellValue(res.get("listados.excel01.t1f3_01"));
							c = r.getCell(11);				
							c.setCellValue(res.get("listados.excel01.t1f3_02"));
							c = r.getCell(12);				
							c.setCellValue(res.get("listados.excel01.t1f3_03"));
							c = r.getCell(13);				
							c.setCellValue(res.get("listados.excel01.t1f3_02"));
							c = r.getCell(14);				
							if (dato==33||dato==43){
								c.setCellValue(res.get("listados.excel01.t3f3_13"));
								c = r.getCell(15);				
								c.setCellValue(res.get("listados.excel01.txDiferencia1"));
								c = r.getCell(16);				
								c.setCellValue(res.get("listados.excel01.t1f3_15"));
								c = r.getCell(17);				
								c.setCellValue(res.get("listados.excel01.txDiferencia2"));
								c = r.getCell(18);				
								c.setCellValue(res.get("listados.excel01.t3f3_15"));
								c = r.getCell(19);				
								c.setCellValue(res.get("listados.excel01.t3f3_16"));
								c = r.getCell(20);				
								c.setCellValue(res.get("listados.excel01.t3f3_17"));
								c = r.getCell(21);				
								c.setCellValue(res.get("listados.excel01.t3f3_18"));
							}
							else if (dato==13){
								c.setCellValue(res.get("listados.excel01.t1f3_13"));
								c = r.getCell(15);				
								c.setCellValue(res.get("listados.excel01.t1f3_03"));
								c = r.getCell(16);				
								c.setCellValue(res.get("listados.excel01.txDiferencia1"));
								c = r.getCell(17);				
								c.setCellValue(res.get("listados.excel01.t1f3_15"));
								c = r.getCell(18);				
								c.setCellValue(res.get("listados.excel01.txDiferencia2"));
							}
							else{
								c.setCellValue(res.get("listados.excel01.t2f3_13"));
								c = r.getCell(15);				
								c.setCellValue(res.get("listados.excel01.t2f3_03"));
								c = r.getCell(16);				
								c.setCellValue(res.get("listados.excel01.txDiferencia1"));
								c = r.getCell(17);				
								c.setCellValue(res.get("listados.excel01.t2f3_15"));
								c = r.getCell(18);				
								c.setCellValue(res.get("listados.excel01.txDiferencia2"));
							}
							break;
						}
					}
				}
			}


			lineaDetalle = 3;
            
			
			P06BInformeOtroDECDet p06BLineaOtroDECDet = null;

			int sheet_Old = -1;
			int lineaDetalle_Old = -1;
			String sTE = "";
			String sTE_Old = "";
			
			int[] nMaxLinea = new int[4];

			for(int i=0;i<p06BInformeOtroDECDet.size();i++){
				p06BLineaOtroDECDet = p06BInformeOtroDECDet.get(i);
				
				int sheet = 0;
				
				sTE = p06BLineaOtroDECDet.getTipoExpediente();
	        	if(sTE.equals(P06BConstantes.P06B_CORREDORES_CTEEXP_FISICA)){
	        		sheet = 0;
	        	}else if(sTE.equals(P06BConstantes.P06B_CORREDORES_CTEEXP_JURIDICA)){
	        		sheet = 1;
	        	}else if(sTE.equals(P06BConstantes.P06B_AGENTEVINCULADO_CTEEXP_FISICA)){
	        		sheet = 2;
	        	}else if(sTE.equals(P06BConstantes.P06B_AGENTEVINCULADO_CTEEXP_JURIDICA)){
	        		sheet = 3;
	        	}else{
	        		continue;
	        	}
				if (!sTE_Old.equals("") && !sTE.equals(sTE_Old)){
					nMaxLinea[sheet_Old]=lineaDetalle_Old;
	    			lineaDetalle = 3;
				}
				sheet_Old = sheet;
				lineaDetalle_Old = lineaDetalle;
				sTE_Old = sTE;
				lineaDetalle++;
			}				
			if (!sTE_Old.equals("")){
				nMaxLinea[sheet_Old]=lineaDetalle_Old;
    			lineaDetalle = 3;
			}

				
			sTE = "";
			sTE_Old = "";
			for(int i=0;i<p06BInformeOtroDECDet.size();i++){
				p06BLineaOtroDECDet = p06BInformeOtroDECDet.get(i);
				
				int sheet = 0;
				byte columns = 0;
				
				sTE = p06BLineaOtroDECDet.getTipoExpediente();
	        	if(sTE.equals(P06BConstantes.P06B_CORREDORES_CTEEXP_FISICA)){
	        		sheet = 0;
	        		columns = 19;
	        	}else if(sTE.equals(P06BConstantes.P06B_CORREDORES_CTEEXP_JURIDICA)){
	        		sheet = 1;
	        		columns = 19;
	        	}else if(sTE.equals(P06BConstantes.P06B_AGENTEVINCULADO_CTEEXP_FISICA)){
	        		sheet = 2;
	        		columns = 22;
	        	}else if(sTE.equals(P06BConstantes.P06B_AGENTEVINCULADO_CTEEXP_JURIDICA)){
	        		sheet = 3;
	        		columns = 22;
	        	}else{
	        		continue;
	        	}
				if (!sTE.equals(sTE_Old)){
					s = wb.getSheetAt(sheet);
	    			lineaDetalle = 3;
				}
				r = s.getRow(lineaDetalle);
				if (r==null){
					r=s.createRow(lineaDetalle);						
				}
				for(int columnaAVolcar = 0;columnaAVolcar<columns;columnaAVolcar++){
					c = r.getCell(columnaAVolcar);
		            if (c==null){
		            	c = r.createCell(columnaAVolcar);
		            	cs = wb.createCellStyle();
		            }
		            else{
			            cs = c.getCellStyle();
		            }
		            if (lineaDetalle==3){
						cs.setBorderTop(XSSFCellStyle.BORDER_MEDIUM);
						cs.setBorderBottom(XSSFCellStyle.BORDER_THIN);
		            }
		            else if (lineaDetalle==nMaxLinea[sheet]){
						cs.setBorderTop(XSSFCellStyle.BORDER_THIN);
						cs.setBorderBottom(XSSFCellStyle.BORDER_MEDIUM);
		            }
		            else{
						cs.setBorderTop(XSSFCellStyle.BORDER_THIN);
						cs.setBorderBottom(XSSFCellStyle.BORDER_THIN);
		            }
		            
		            c.setCellStyle(cs);		        					            	

		            int dato = ((sheet+1) * 100)+columnaAVolcar;
					switch(columnaAVolcar){
						case 0: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
				            c.setCellValue(p06BLineaOtroDECDet.getNumeroExpediente());
							break;
						}
						case 1: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_THIN);
							cs.setDataFormat(formatNumber);
				            c.setCellValue(p06BLineaOtroDECDet.getD38_F1());
							break;
						}
						case 2: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_THIN);
							cs.setBorderRight(XSSFCellStyle.BORDER_THIN);
							cs.setDataFormat(formatNumber);
				            c.setCellValue(p06BLineaOtroDECDet.getD38_F2());
							break;
						}
						case 3: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_THIN);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
							cs.setDataFormat(formatNumber);
				            c.setCellValue(p06BLineaOtroDECDet.getD38_F3());
							break;
						}
						case 4: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_THIN);
							cs.setDataFormat(formatNumber);
				            c.setCellValue(p06BLineaOtroDECDet.getD38_F4());
							break;
						}
						case 5: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_THIN);
							cs.setBorderRight(XSSFCellStyle.BORDER_THIN);
							cs.setDataFormat(formatNumber);
				            c.setCellValue(p06BLineaOtroDECDet.getD38_F5());
							break;
						}
						case 6: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_THIN);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
							cs.setDataFormat(formatNumber);
				            c.setCellValue(p06BLineaOtroDECDet.getD38_F6());
							break;
						}
						case 7: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_THIN);
							cs.setDataFormat(formatNumber);
				            c.setCellValue(p06BLineaOtroDECDet.getD39_F1());
							break;
						}
						case 8: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_THIN);
							cs.setBorderRight(XSSFCellStyle.BORDER_THIN);
							cs.setDataFormat(formatNumber);
				            c.setCellValue(p06BLineaOtroDECDet.getD39_F2());
							break;
						}
						case 9: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_THIN);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
							cs.setDataFormat(formatNumber);
				            c.setCellValue(p06BLineaOtroDECDet.getD39_F3());
							break;
						}
						case 10: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_THIN);
							cs.setDataFormat(formatNumber);
				            c.setCellValue(p06BLineaOtroDECDet.getD39_F4());
							break;
						}
						case 11: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_THIN);
							cs.setBorderRight(XSSFCellStyle.BORDER_THIN);
							cs.setDataFormat(formatNumber);
				            c.setCellValue(p06BLineaOtroDECDet.getD39_F5());
							break;
						}
						case 12: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_THIN);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
							cs.setDataFormat(formatNumber);
				            c.setCellValue(p06BLineaOtroDECDet.getD39_F6());
							break;
						}
						case 13: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
							cs.setDataFormat(formatNumber);
//				            c.setCellValue(p06BLineaOtroDECDet.getD38_F2()+p06BLineaOtroDECDet.getD39_F2());
				            c.setCellFormula("C" + (lineaDetalle + 1) + "+I" + (lineaDetalle + 1));
							break;
						}
						default: {
							cs.setDataFormat(formatNumber);
							break;
						}
					}
					switch(dato){
						case 114: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_THIN);
				            c.setCellValue(p06BLineaOtroDECDet.getD49_F1());								
							break;
						}
						case 115: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_THIN);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
				            c.setCellValue(p06BLineaOtroDECDet.getD49_F2());								
							break;
						}
						case 116: {
							cs.setDataFormat(formatNumberRed);
//							cs.setFont(fontRed);
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
//				            c.setCellValue(p06BLineaOtroDECDet.getD38_F2()+p06BLineaOtroDECDet.getD39_F2()-p06BLineaOtroDECDet.getD49_F1());
				            c.setCellFormula("N" + (lineaDetalle + 1) + "-O" + (lineaDetalle + 1));
							break;
						}
						case 117: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
				            c.setCellValue(p06BLineaOtroDECDet.getD48_F1());								
							break;
						} 				
						case 118: {
							cs.setDataFormat(formatNumberRed);
//							cs.setFont(fontRed);
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
//				            c.setCellValue(p06BLineaOtroDECDet.getD38_F2()+p06BLineaOtroDECDet.getD39_F2()-p06BLineaOtroDECDet.getD48_F1());								
				            c.setCellFormula("N" + (lineaDetalle + 1) + "-R" + (lineaDetalle + 1));
							break;
						}
						case 214: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
				            c.setCellValue(p06BLineaOtroDECDet.getD50_F1());								
							break;
						} 				
						case 215: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
				            c.setCellValue(p06BLineaOtroDECDet.getD50_F2());								
							break;
						} 				
						case 216: {
							cs.setDataFormat(formatNumberRed);
//							cs.setFont(fontRed);
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
//				            c.setCellValue(p06BLineaOtroDECDet.getD38_F2()+p06BLineaOtroDECDet.getD39_F2()-p06BLineaOtroDECDet.getD50_F1());								
				            c.setCellFormula("N" + (lineaDetalle + 1) + "-O" + (lineaDetalle + 1));
							break;
						}
						case 217: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
				            c.setCellValue(p06BLineaOtroDECDet.getD48_F1());								
							break;
						} 				
						case 218: {
							cs.setDataFormat(formatNumberRed);
//							cs.setFont(fontRed);
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
//				            c.setCellValue(p06BLineaOtroDECDet.getD38_F2()+p06BLineaOtroDECDet.getD39_F2()-p06BLineaOtroDECDet.getD48_F1());								
				            c.setCellFormula("N" + (lineaDetalle + 1) + "-R" + (lineaDetalle + 1));
							break;
						}
						case 314: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
				            c.setCellValue(p06BLineaOtroDECDet.getD53_F1());								
							break;
						} 				
						case 315: {
							cs.setDataFormat(formatNumberRed);
//							cs.setFont(fontRed);
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
//				            c.setCellValue(p06BLineaOtroDECDet.getD38_F2()+p06BLineaOtroDECDet.getD39_F2()-p06BLineaOtroDECDet.getD53_F1());								
				            c.setCellFormula("N" + (lineaDetalle + 1) + "-O" + (lineaDetalle + 1));
							break;
						} 				
						case 316: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
				            c.setCellValue(p06BLineaOtroDECDet.getD48_F1());								
							break;
						} 				
						case 317: {
							cs.setDataFormat(formatNumberRed);
//							cs.setFont(fontRed);
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
//				            c.setCellValue(p06BLineaOtroDECDet.getD38_F2()+p06BLineaOtroDECDet.getD39_F2()-p06BLineaOtroDECDet.getD48_F1());								
				            c.setCellFormula("N" + (lineaDetalle + 1) + "-Q" + (lineaDetalle + 1));
							break;
						} 				
						case 318: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_THIN);
				            c.setCellValue(p06BLineaOtroDECDet.getD53_F2());								
							break;
						} 				
						case 319: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_THIN);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
				            c.setCellValue(p06BLineaOtroDECDet.getD53_F3());								
							break;
						} 				
						case 320: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_THIN);
				            c.setCellValue(p06BLineaOtroDECDet.getD53_F4());								
							break;
						} 				
						case 321: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_THIN);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
				            c.setCellValue(p06BLineaOtroDECDet.getD53_F5());								
							break;
						} 				
						case 414: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
				            c.setCellValue(p06BLineaOtroDECDet.getD53_F1());								
							break;
						}
						case 415: {
							cs.setDataFormat(formatNumberRed);
//							cs.setFont(fontRed);
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
//				            c.setCellValue(p06BLineaOtroDECDet.getD38_F2()+p06BLineaOtroDECDet.getD39_F2()-p06BLineaOtroDECDet.getD53_F1());								
				            c.setCellFormula("N" + (lineaDetalle + 1) + "-O" + (lineaDetalle + 1));
							break;
						} 				
						case 416: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
				            c.setCellValue(p06BLineaOtroDECDet.getD48_F1());								
							break;
						}
						case 417: {
							cs.setDataFormat(formatNumberRed);
//							cs.setFont(fontRed);
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
//				            c.setCellValue(p06BLineaOtroDECDet.getD38_F2()+p06BLineaOtroDECDet.getD39_F2()-p06BLineaOtroDECDet.getD48_F1());								
				            c.setCellFormula("N" + (lineaDetalle + 1) + "-Q" + (lineaDetalle + 1));
							break;
						} 				
						case 418: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_THIN);
				            c.setCellValue(p06BLineaOtroDECDet.getD53_F2());								
							break;
						}
						case 419: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_THIN);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
				            c.setCellValue(p06BLineaOtroDECDet.getD53_F3());								
							break;
						}
						case 420: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);
							cs.setBorderRight(XSSFCellStyle.BORDER_THIN);
				            c.setCellValue(p06BLineaOtroDECDet.getD53_F4());								
							break;
						}
						case 421: {
							cs.setBorderLeft(XSSFCellStyle.BORDER_THIN);
							cs.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
				            c.setCellValue(p06BLineaOtroDECDet.getD53_F5());								
							break;
						}
					}

				}
	            
				lineaDetalle_Old = lineaDetalle;
				sTE_Old = sTE;
				lineaDetalle++;
			}				
			
			wb.write(out);
			out.close();
			
		}catch(Exception e) {
			P06BLog.send(2,"P06BListadoExcel", "Error al generar excel:"+e.getMessage());
			return error;
		}
		return excelFichero;
	}
}