package gastostarjetaServlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Locale;
import java.util.Map;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpSession;

import m05bBD.m05bGastosTarjeta;
import m05bClasses.m05bComun;
import m05bClasses.m05bConexion;
import m05bClasses.m05bConstantes;
import m05bClasses.m05bFileLog;



/**
 * Inserte aquí la descripción del tipo.
 * Fecha de creación: (17/06/05)
 */
public class m05bGastosTarjServlet extends javax.servlet.http.HttpServlet {m05bFileLog miLog = new m05bFileLog();
/**
 * Process incoming HTTP POST requests
 *
 * @param request Object that encapsulates the request to the servlet
 * @param response Object that encapsulates the response from the servlet
 */

	   

	
    String persona = "";
	m05bComun Comun = new m05bComun();
	String sMatricula ="";
	String sTotMatricula ="";
	String sTipo="";
	String sOrden ="";
	String sConceptos="";
	String sNumeroConceptos="";
	String sRango="";
    
public void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {

	performTask(request, response);

}

public void doGet (javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)throws javax.servlet.ServletException, java.io.IOException {
 
doPost (request, response);
}

/**
 * Returns the servlet info string.
 */
public String getServletInfo() {

	return super.getServletInfo();

}
/**
 * Initializes the servlet.
 */
public void init() {
	// insert code to initialize the servlet here
}


public void ejecutar(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response){

    sMatricula = request.getParameter("Matricula");
    //miLog.addTraza(persona, "Verificar Gastos Tarjeta", "MATRICULA: " + sMatricula, m05bConstantes.LOG_NIVEL_BAJO);

    String sLista = request.getParameter("listaBD");
    
    sTipo = request.getParameter("Tipo")== null?"T":request.getParameter("Tipo");
    //miLog.addTraza(m05bConstantes.LOG_NO_USER, m05bConstantes.LOG_NO_SRC, "LISTA: " + sLista, m05bConstantes.LOG_NIVEL_BAJO);
    //miLog.addTraza(m05bConstantes.LOG_NO_USER, m05bConstantes.LOG_NO_SRC, "TIPO: " + sTipo, m05bConstantes.LOG_NIVEL_BAJO);
    sOrden = request.getParameter("Orden")==null?"ASC":request.getParameter("Orden");
    sConceptos = request.getParameter("Conceptos")==null?"":request.getParameter("Conceptos");
    sTotMatricula=request.getParameter("CCMatricula")==null?"":request.getParameter("CCMatricula");
    sNumeroConceptos=request.getParameter("NConceptos")==null?"":request.getParameter("NConceptos");
    sRango = request.getParameter("Rango")== null?"":request.getParameter("Rango");

    String sURL="";
	response.setHeader("Cache-Control", "no-cache");
	response.setHeader("Expires", "-1");
	response.setContentType("text/xml");
	if(request.getParameter("accion")!=null && request.getParameter("accion").equals("ANADIR")){
    	recuperar(request, response);
	}else if(request.getParameter("accion")!=null && request.getParameter("accion").equals("GUARDAR")){
		String result = guardar(request,response);
 		if(result.equals("")){
 		    sURL = response.encodeRedirectURL("m05bVehGastosExtJsp.jsp?resultadoGuardar=OK&CCMatricula="+sTotMatricula+"&Tipo"+sTipo+"&Orden"+sOrden+"&Conceptos"+sConceptos+"&NConceptos"+sNumeroConceptos);
            RequestDispatcher rd;
            rd = request.getRequestDispatcher(sURL);
            try{
             rd.forward(request, response);
            }
            catch (ServletException e){
              System.err.println("Exception: OutletMaintenanceS.service: " + e);
              try {
				response.sendRedirect("m05bError.jsp");
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				miLog.addTraza(e1);
			}
            } catch (IOException e) {
				// TODO Auto-generated catch block
				miLog.addTraza(e);
			}
	   }else if (result.equals("ERROR")){
		    sURL = response.encodeRedirectURL("m05bVehGastosExtJsp.jsp?resultadoGuardar=ERROR&CCMatricula="+sTotMatricula+"&Tipo"+sTipo+"&Orden"+sOrden+"&Conceptos"+sConceptos+"&NConceptos"+sNumeroConceptos);
            RequestDispatcher rd;
           rd = request.getRequestDispatcher(sURL);
        try{
           try {
			rd.forward(request, response);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			miLog.addTraza(e);
		}
        }
        catch (ServletException e){
          System.err.println("Exception: OutletMaintenanceS.service: " + e);
          try {
			response.sendRedirect("m05bError.jsp");
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			miLog.addTraza(e1);
		}
        }

	}}   else if(request.getParameter("accion")!=null && request.getParameter("accion").equals("RECUPERAR")){
		obtener(request, response);

	}

}

/**
 * Actualiza la ubicacion del vehículo.
 */






private void recuperar(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response){
	java.sql.Connection conn=null;
	m05bConexion miConex = new m05bConexion();
	try {
		conn = miConex.getConnection();
	} catch (SQLException e1) {
		// TODO Auto-generated catch block
		miLog.addTraza(e1);
	}

	LinkedHashMap  listaGastos = (LinkedHashMap )request.getSession().getAttribute("listaGastos");
	if(listaGastos!=null)
		request.getSession().removeAttribute("listaGastos");
	    listaGastos = null;
	if(listaGastos==null)
		listaGastos = new LinkedHashMap ();
    String sql;
	PreparedStatement pstmt = null;	
	ResultSet rs = null;
	//Connection lconConexion = r76bCServidorConexionesBD.getConexionConsultas();
    //Statement lstm  = null;
    //ResultSet lrst  = null;
    //String sql = "";
	   HttpSession session = request.getSession(true);
	   	Locale idiomaLocal = (Locale)session.getAttribute("Local");
			String idiomaSes = ((idiomaLocal.getLanguage()==null)?"es":idiomaLocal.getLanguage());	
		
	
	      
	
    boolean existeExp = false;
    PrintWriter wr = null;
    //r76bCPerfilUsuario cPerfil = (r76bCPerfilUsuario) request.getSession().getAttribute(r76bCWebMessages.PERFIL);
    //String idioma = cPerfil.getIdIdioma();
    try {
    	wr = (PrintWriter)response.getWriter();
    	//if(salidaN!=null && !salidaN.trim().equals("")){
    		//Añado un expediente más a la lista
    		sql = this.queryObtenerExp(sMatricula,sTipo,sOrden,idiomaSes);
    	//}else{
    		//Añado un RANGO DE EXPEDIENTES a la lista
    	//	sql = this.queryObtenerExp();
    	//}
    		  //String formatoFecha="dd/mm/YYYY HH24:mi";
    		  String campoTexto="";
    		  
    	      if(!idiomaSes.equals("es")){
    		campoTexto="E";
    		//		formatoFecha="YYYY/mm/dd HH24:mi";
    	      }

		pstmt = conn.prepareStatement(sql);
		rs = pstmt.executeQuery();
		String Tarjeta="", TipoG="", Control="", Concepto="", Nombre="";
		String Fecha="", Hora="", Importe="", Km="", Litros="", Ver="", Cargabon="";
		m05bComun Comun = new m05bComun();
        while (rs.next()) {
        	existeExp = true;
            Tarjeta=rs.getString(m05bConstantes.COL_18_TARJETA);
            TipoG=rs.getString(m05bConstantes.COL_18_TIPO);
            Concepto=rs.getString(campoTexto+"DESCRIP_99");
            if (Concepto.equals("PEAJE AUTOPISTAS")) {
					Concepto = "PEAJE";
            }
            Nombre=rs.getString(m05bConstantes.COL_18_NCOMERCIO)==null?"":rs.getString(m05bConstantes.COL_18_NCOMERCIO);
            Fecha=rs.getString(5);
            Control=rs.getString(m05bConstantes.COL_18_CONTROL);

            if (Fecha==null || Fecha.equals("")){
                Fecha="";
                //Hora="";
            }
            //else{
                //Hora=Comun.Hora(Fecha);
                //Hora=Comun.formatearHora(Hora);
                //Fecha=Comun.Mes(Fecha);

            //}
            Importe=rs.getString(m05bConstantes.COL_18_IMPORTE);
            Km=rs.getString(m05bConstantes.COL_18_KM);
            Litros=rs.getString(m05bConstantes.COL_18_LITROS);
            if (Km==null || Km.equals(""))
                Km="";
            if (Litros==null || Litros.equals(""))
                Litros="";

            Ver=rs.getString(m05bConstantes.COL_18_VERIFIC);
            Cargabon=rs.getString(m05bConstantes.COL_18_CARGO);
            
         	String CLAVE = Control;
        	m05bGastosTarjeta gasto = new m05bGastosTarjeta();
        	

         	
        	gasto.setGastar_tarjeta(Tarjeta);
        	gasto.setGastar_cargo(Cargabon);
        	gasto.setGastar_concepto(Concepto);
        	gasto.setGastar_ncomercio(Nombre);
        	gasto.setGastar_fecha(Fecha);
        	gasto.getGastar_fecha();
        	gasto.setGastar_importe(Importe);
        	gasto.setGastar_km(Km);
        	gasto.setGastar_litros(Litros);
        	gasto.setGastar_tipo(TipoG);
        	gasto.setGastar_verifi(Ver);
        	gasto.setGastar_control(Control);
          	if(!listaGastos.containsKey(CLAVE))
        		listaGastos.put(CLAVE, gasto);
        }    
        if(!existeExp)
        	//forward(request, response, r76bCPaginas.LIST_ACUSE_RECIBO+"?error=noExp");
        	wr.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?><resultado><tipo>ERROR-noExp</tipo></resultado>");
        else{
        	//TODO OK
        	request.getSession().setAttribute("listaGastos",listaGastos);
        	//forward(request, response, r76bCPaginas.LIST_ACUSE_RECIBO);	
        	wr.println(obtenerXmlFromAcusesR(listaGastos));
        }
    } catch (SQLException e) {
    	//r76bCLog.send(2,this, "error: " +e.getMessage());
        //miLog.addTraza(m05bConstantes.LOG_NO_USER, m05bConstantes.LOG_NO_SRC, "LITROS: " , m05bConstantes.LOG_NIVEL_BAJO);
    	try {rs.close();}         catch (Exception rse) {}
        try {pstmt.close();}         catch (Exception sse) {}
        try {conn.close();} catch (Exception cse) {}
        //forward(request, response, r76bCPaginas.LIST_ACUSE_RECIBO+"?error="+e2.getMessage());
        wr.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?><resultado><tipo>ERROR-"+e.getMessage()+"</tipo></resultado>");
    }catch (Exception e2) {	
    	//r76bCLog.send(2,this, "error: " +e2.getMessage());
        //miLog.addTraza(m05bConstantes.LOG_NO_USER, m05bConstantes.LOG_NO_SRC, "LITROS: " , m05bConstantes.LOG_NIVEL_BAJO);
    	try {rs.close();}         catch (Exception rse) {}
        try {pstmt.close();}         catch (Exception sse) {}
        try {conn.close();} catch (Exception cse) {}
        //forward(request, response, r76bCPaginas.LIST_ACUSE_RECIBO+"?error="+e2.getMessage());
        wr.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?><resultado><tipo>ERROR-"+e2.getMessage()+"</tipo></resultado>");
    }finally {
    	try {rs.close();}         catch (Exception rse) {}
    	try {pstmt.close();}         catch (Exception sse) {}
    	try {conn.close();} catch (Exception cse) {}
    }
}

private String guardar(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response){
	String numReg = request.getParameter("numeroTotReg");
	//String sRango= request.getParameter("Rango");
	java.sql.Connection conn=null;
	m05bConexion miConex = new m05bConexion();
String control,chkgrabar,km,litros,verificado,fecha="";
	boolean resultado = true;
	boolean existeNotifAleg = false;
	HashMap errores = new HashMap();
	String erroresResult = "";
	try {
		conn = miConex.getConnection();
		conn.setAutoCommit(false);
    	for(int i=0;i<Integer.parseInt(numReg);i++){
    		control = request.getParameter("Codigo"+(i));
    		chkgrabar=request.getParameter("chGrabar"+(i));
    		//String anoExp = exp.substring(exp.length()-4,exp.length());
    		//String numeroExp = exp.substring(1,exp.length()-5);
    		km = request.getParameter("Km"+(i));
    		litros = request.getParameter("Litros"+(i));
    		verificado = request.getParameter("chVerif"+(i));
    		if (verificado!=null){
    			verificado="S";
    		}else{
    			verificado="N";    			
    		}
    		fecha = request.getParameter("Fecha"+(i));
    		if (chkgrabar!=null){
    		    //if (sRango.equals("D1")){
    		      //inserta(conn,request);
    		    //}
    		    actualiza(conn,control,km,litros,fecha,verificado,request);
    		}
    		//Lo de victor
    	}
	    	conn.commit();
    	//Creo el mensaje a visualizar en la pantalla de salidas no actualizadas
    	Iterator it = errores.entrySet().iterator();
    	while (it.hasNext()) {
    	    Map.Entry e = (Map.Entry)it.next();
    	    if(erroresResult.equals("")){
    	    	erroresResult=(String)e.getValue();;
    	    }else{
    	    	erroresResult= erroresResult+"#"+(String)e.getValue();
    	    }
    	}
    	return erroresResult;
	} catch (Exception e) {
		// TODO Auto-generated catch block
		miLog.addTraza(e);
		try {
			conn.rollback();
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			miLog.addTraza(e1);
		}
		return "ERROR";
	} finally{
		if(conn!=null){
			try {
				conn.close();
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				miLog.addTraza(e1);
			}
		}
	}
}

/*private void inserta(java.sql.Connection lconConexion,  javax.servlet.http.HttpServletRequest request) throws Exception{
   String sql = "";
   PreparedStatement pstmt = null;
   ResultSet rs = null;

   try {
            //miLog.addTraza(m05bConstantes.LOG_NO_USER, m05bConstantes.LOG_NO_SRC, "LITROS: " + Litros, m05bConstantes.LOG_NIVEL_BAJO);
	   long idOpeBancos = 0;
		m05bGenerarClave miId = new m05bGenerarClave();
		idOpeBancos = miId.getNextId(m05bConstantes.TAB_OPEBANCOS, m05bConstantes.COL_18_CONTROL);
       long control = 0;
	   String ueconomica="", centro="", mege="", tarjeta="", tipo="", sqlConcepto="",
		  cif="", comercio="", descrip="", hora="",fecha="",Control="",Km="",Lt="",
		  importe="", cargabon="", matricula="", verificado=m05bConstantes.VERIFICADO_NO;
	   
	   sql=" SELECT " + m05bConstantes.COL_14_TARJETA + ", '" + m05bConstantes.GASTO_PEAJE + "', 'PEAJE'" +
	 	   ", '" + "',TO_CHAR("+m05bConstantes.COL_34_FKMACT+",'YYYYmmdd HH24miss'), null " + 
	 	   ", '" + m05bConstantes.VERIFICADO_NO + "', 'C', '" + sMatricula +
	 	   "', " + idOpeBancos + ", '"+ "', " + m05bConstantes.COL_14_CTRO+ ", '" + "', '"+ "',"+m05bConstantes.COL_34_KMACTUALES+",null FROM " + 
	 	   m05bConstantes.TAB_HIST_TARJETAS +","+m05bConstantes.TAB_VEHICULOS+
	 	   " WHERE "+ m05bConstantes.COL_14_MATRICULA + " = '"+sMatricula+"'" +
	 	   " and  " + m05bConstantes.COL_14_FALTA+"<="+m05bConstantes.COL_34_FKMACT+" and (("+m05bConstantes.COL_34_FKMACT+ " IS NULL) OR ("+m05bConstantes.COL_34_FKMACT +">= "+m05bConstantes.COL_34_FKMACT+
	 	   ")) and "+
	 	   m05bConstantes.COL_34_MATRICULA+"="+m05bConstantes.COL_14_MATRICULA;
	   miLog.addTraza(m05bConstantes.LOG_NO_USER, m05bConstantes.LOG_NO_SRC, "sql " + sql, m05bConstantes.LOG_NIVEL_BAJO);		
	   pstmt = lconConexion.prepareStatement(sql);
	   rs = pstmt.executeQuery();
	   sTipo = request.getParameter("Tipo")== null?"T":request.getParameter("Tipo");
       if (rs.next()) {
       	tarjeta=rs.getString(m05bConstantes.COL_14_TARJETA);
       	tipo=rs.getString(2);
       	sqlConcepto=rs.getString(3);
       	descrip=rs.getString(4)== null?"":rs.getString(4);
       	fecha=rs.getString(5);
       	//importe=rs.getString(6);
       	cargabon=rs.getString(8);
       	matricula=rs.getString(9);
       	control=idOpeBancos;
       	cif=rs.getString(11)== null?"":rs.getString(11);
       	centro=rs.getString(12)== null?"":rs.getString(12);
       	ueconomica=rs.getString(13)== null?"":rs.getString(13);
       	comercio=rs.getString(14)== null?"":rs.getString(14);
        Km=rs.getString(15);
        Lt=rs.getString(16)== null?"":rs.getString(16);
       }
 

	   
        sql = " insert into " + m05bConstantes.TAB_OPEBANCOS  +
   	   	" ( " + m05bConstantes.COL_18_TARJETA + ",  " + m05bConstantes.COL_18_TIPO + ",  " + m05bConstantes.COL_18_CONCEPTO + 
   	    ",  " + m05bConstantes.COL_18_ESTAB + ",  " + m05bConstantes.COL_18_FECHA + ",  " + m05bConstantes.COL_18_IMPORTE + 
   	    ",  " + m05bConstantes.COL_18_VERIFIC + ",  " + m05bConstantes.COL_18_CARGO + ",  " + m05bConstantes.COL_18_MATRICULA + 
   	    ",  " + m05bConstantes.COL_18_CONTROL + ",  " + m05bConstantes.COL_18_ESTCIF + ",  " + m05bConstantes.COL_18_CENTRO +
   	    ",  " + m05bConstantes.COL_18_UECONO + ",  " + m05bConstantes.COL_18_NCOMERCIO +","+m05bConstantes.COL_18_KM+","+m05bConstantes.COL_18_LITROS+")" +
		" values ('" + tarjeta + "', '" + tipo + "', '" + sqlConcepto +
 		"', '', TO_DATE('" + fecha  + "','YYYYMMDD HH24miss'), null" +
 		", '" + verificado + "', '" + cargabon + "', '" + matricula +
 		"', " + control + ", '" + cif + "', '" + centro + "', '1', '" + comercio + "',TO_NUMBER("+Km+"),null)"; 
		miLog.addTraza(m05bConstantes.LOG_NO_USER, m05bConstantes.LOG_NO_SRC, "sql " + sql, m05bConstantes.LOG_NIVEL_BAJO);				
		pstmt = lconConexion.prepareStatement(sql);
		pstmt.executeUpdate();

			// Actualizar los km y la fecha actuales del vehiculo

	    Control=""+control;
		String CLAVE = Control;
		m05bGastosTarjeta gasto = new m05bGastosTarjeta();
		gasto.setGastar_tarjeta(tarjeta);
		gasto.setGastar_cargo(cargabon);
		gasto.setGastar_concepto(sqlConcepto);
		gasto.setGastar_ncomercio(descrip);
		gasto.setGastar_fecha(fecha);
		gasto.setGastar_importe(null);
		gasto.setGastar_km(Km);
		gasto.setGastar_litros(Lt);
		gasto.setGastar_tipo(tipo);
		gasto.setGastar_verifi(verificado);
		gasto.setGastar_control(Control);
		LinkedHashMap  listaGastos = (LinkedHashMap )request.getSession().getAttribute("listaGastos");
	  	if(!listaGastos.containsKey(CLAVE))
			listaGastos.put(CLAVE, gasto);
	  	request.getSession().setAttribute("listaGastos",listaGastos);
   } catch (Exception ex) {
   	   		//miLog.addTraza(m05bConstantes.LOG_NO_USER, m05bConstantes.LOG_NO_SRC, "fncVerificar - EXCEPTION: " + ex.toString(), m05bConstantes.LOG_NIVEL_BAJO);
  			throw new Exception(ex);
   } 	finally{
			if (pstmt != null)
				pstmt.close();
   }

 
	

 	

	
	
}
*/

private void actualiza(java.sql.Connection lconConexion, String control,String Km, String Litros,String Fecha,String Verificado, javax.servlet.http.HttpServletRequest request) throws Exception{

	PreparedStatement lstm  = null;
	String sql = "";
	PrintWriter wr = null;
	String Km2="",Litros2="",Km3="";
	

	//sql = this.queryModificarExp();
	//lstm = lconConexion.prepareStatement(sql);
	Km2=Km;
	if (!((Km2.equals("null"))||(Km2.equals(""))))
	 	 //Km2 = "0";
    Km2=Comun.ImportesABasedatos(Km2);
	Litros2=Litros; 
	//if (Litros2.equals("null"))
	if (!((Litros2.equals("null"))||(Litros2.equals(""))))		
	    //Litros2 = "0";
	Litros2=Comun.ImportesABasedatos(Litros2);


   PreparedStatement pstmt = null;

   try {
            //miLog.addTraza(m05bConstantes.LOG_NO_USER, m05bConstantes.LOG_NO_SRC, "LITROS: " + Litros, m05bConstantes.LOG_NIVEL_BAJO);

		if ((Litros2.equals("null"))||(Litros2.equals("")))		
			Litros2=null;
		if ((Km2.equals("null"))||(Km2.equals("")))		
			Km2=null;
			sql = "update " + m05bConstantes.TAB_OPEBANCOS +
					" set " + m05bConstantes.COL_18_KM + " = " + Km2 +
					" , " + m05bConstantes.COL_18_LITROS + " = " + Litros2 + 
					" , " + m05bConstantes.COL_18_VERIFIC + " = '" + Verificado + "'" +
					" where "+ m05bConstantes.COL_18_CONTROL +" = '" + control + "'" ;
			miLog.addTraza(m05bConstantes.LOG_NO_USER, m05bConstantes.LOG_NO_SRC, "sql " + sql, m05bConstantes.LOG_NIVEL_BAJO);				
			pstmt = lconConexion.prepareStatement(sql);
			pstmt.executeUpdate();
			// Actualizar los km y la fecha actuales del vehiculo

			if ((Km2==null)||(Km2.equals(""))){
			 	 Km3 = "0";
			     Km3=Comun.ImportesABasedatos(Km3);
	       }else{
	       	Km3=Km2;
	       }
		    sql="update	" + m05bConstantes.TAB_VEHICULOS +
					" set " + m05bConstantes.COL_34_KMACTUALES + " = " + Km3 + 
					" ,  " + m05bConstantes.COL_34_FKMACT + "= TO_DATE ('" + Fecha + "','dd/mm/yyyy') " +
					" where " + m05bConstantes.COL_34_MATRICULA + " = '" + sMatricula + "' AND TO_CHAR("+
		            m05bConstantes.COL_34_FKMACT+",'YYYY/mm/dd')<=TO_CHAR(TO_DATE('"+Fecha+"','dd/mm/yyyy'),'yyyy/mm/dd') AND  "+m05bConstantes.COL_34_KMACTUALES +
			        "<='"+Km3+"'";
            miLog.addTraza(m05bConstantes.LOG_NO_USER, m05bConstantes.LOG_NO_SRC , "sqlUpdate Vedhiculos: " + sql,m05bConstantes.LOG_NIVEL_BAJO);
			
			pstmt = lconConexion.prepareStatement(sql);
			pstmt.executeUpdate();
   } catch (Exception ex) {
   	   		//miLog.addTraza(m05bConstantes.LOG_NO_USER, m05bConstantes.LOG_NO_SRC, "fncVerificar - EXCEPTION: " + ex.toString(), m05bConstantes.LOG_NIVEL_BAJO);
  			throw new Exception(ex);
   } 	finally{
			if (pstmt != null)
				pstmt.close();
   }
// Fin funcion fncVerificar
	//lstm.setLong(arg0, arg1)
	//lstm.setNumber(1, Km2);
	//lstm.setString(2, Litros2);
	//lstm.setString(3, Verificado2);
	//lstm.setString(4, control);
	//lstm.executeUpdate();
	//Ahora lo cambiamos en sesión
	LinkedHashMap  listaGastos = (LinkedHashMap )request.getSession().getAttribute("listaGastos");
	if(listaGastos==null)
		listaGastos = new LinkedHashMap ();
	String CLAVE = control;
	if(listaGastos.containsKey(CLAVE)){
		m05bGastosTarjeta gasto = (m05bGastosTarjeta)listaGastos.get(CLAVE);
		gasto.setGastar_km(Km);
		gasto.setGastar_litros(Litros);
		gasto.setGastar_verifi(Verificado);
	}
	request.getSession().setAttribute("listaGastos",listaGastos);
}

private String queryModificarExp() throws Exception{
	String sql = "update " + m05bConstantes.TAB_OPEBANCOS +
	" set " + m05bConstantes.COL_18_KM + " = ? "+
	" , " + m05bConstantes.COL_18_LITROS + " = ? "+ 
	" , " + m05bConstantes.COL_18_VERIFIC + " = '?'" +
	" where "+ m05bConstantes.COL_18_CONTROL +" = ? " ;
	return sql;
}


private String queryObtenerExp(String matricula,String tipo,String orden,String idiomaSes) throws Exception{

	StringBuffer sql2= new StringBuffer();
	//String anoExp = expediente.substring(expediente.length()-4,expediente.length());
	//String numeroExp = expediente.substring(0,expediente.length()-5);
	//try{
		//long numExp = new Long(numeroExp).longValue();
	//}catch(Exception e){
		//throw new Exception("numExpNoNum");
	//}
	  String formatoFecha="dd/mm/YYYY HH24:mi";
	  String campoTexto="";
	  
      if(!idiomaSes.equals("es")){
	campoTexto="E";
			formatoFecha="YYYY/mm/dd HH24:mi";
      }
	sql2.append("SELECT ").append(m05bConstantes.COL_18_TARJETA).append(",");
	sql2.append(m05bConstantes.COL_18_TIPO).append(",");
	sql2.append("NVL(");
	sql2.append(campoTexto).append("DESCRIP_99");
	sql2.append(",DESCRIP_99) AS ");
	sql2.append(campoTexto).append("DESCRIP_99");
	sql2.append(",").append(m05bConstantes.COL_18_NCOMERCIO).append(",TO_CHAR(");
	sql2.append(m05bConstantes.COL_18_FECHA).append(",'"+formatoFecha+"'),").append(m05bConstantes.COL_18_IMPORTE);
	sql2.append(",").append(m05bConstantes.COL_18_KM).append(",").append(m05bConstantes.COL_18_LITROS);
	sql2.append(",").append(m05bConstantes.COL_18_VERIFIC).append(",").append(m05bConstantes.COL_18_CARGO);
	sql2.append(",").append(m05bConstantes.COL_18_CONTROL);
	sql2.append(",").append(m05bConstantes.COL_18_CARGO);
	sql2.append(" FROM ").append(m05bConstantes.TAB_OPEBANCOS).append(" inner join m0599t00 on tipo_18=COD_DESC_99 and COD_TAB_99=2");
	sql2.append(" WHERE ").append(m05bConstantes.COL_18_MATRICULA);
	sql2.append("='").append(matricula).append("'");
	if (tipo.equals("NV")) {
		sql2.append(" AND ").append(m05bConstantes.COL_18_VERIFIC).append("='N'");
	}
	if (!(sConceptos.equals(""))){
		sql2.append(" AND ").append(m05bConstantes.COL_18_TIPO).append(" in (").append(sConceptos).append(")");
	}
	//sql2.append(" AND ").append(m05bConstantes.COL_18_CONCEPTO).append(" in (").append(concepto).append(")");
	sql2.append(" 	ORDER BY  ").append(m05bConstantes.COL_18_FECHA).append(" ").append(orden).append(", ").append(m05bConstantes.COL_18_TARJETA);
    miLog.addTraza(persona , "m05bVehGastos" , "sql: " + sql2.toString(), m05bConstantes.LOG_NIVEL_BAJO);
	return sql2.toString();
}



private StringBuffer obtenerXmlFromAcuses(LinkedHashMap  lista){
	//String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
	String Hora="";
	String Fecha2="";
	StringBuffer str = new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
	str.append("<resultado>");
	str.append("<tipo>OK</tipo>");
	str.append("<datos>");
	Iterator it = lista.entrySet().iterator();


	while (it.hasNext()) {
	    Map.Entry e = (Map.Entry)it.next();
	    m05bGastosTarjeta gasto = (m05bGastosTarjeta)e.getValue();
	    if (!(sTipo.equals("T"))){
    	 if (gasto.getGastar_verifi().equals("N")){	
    		 str.append("<gasto>");
	    //xml += "<tarjeta>" + (String)e.getKey()+ "</tarjeta>";


    		 str.append("<tarjeta>" + gasto.getGastar_tarjeta()+ "</tarjeta>");
    		 str.append("<cargo>" + gasto.getGastar_cargo() + "</cargo>");
    		 str.append("<tipog>" + gasto.getGastar_tipo() + "</tipog>");
    		 str.append("<concepto>" + gasto.getGastar_concepto() + "</concepto>");
    		 str.append("<ncomercio>" + ((gasto.getGastar_ncomercio()==null||gasto.getGastar_ncomercio().trim().equals(""))?"-":gasto.getGastar_ncomercio()) + "</ncomercio>");
	    //xml += "<fecha>" + gasto.getGastar_fecha() + "</fecha>";
	    Fecha2=gasto.getGastar_fecha();
	    //if (!(Fecha2.equals(""))){
            //Hora=Comun.Hora(gasto.getGastar_fecha());
            //Hora=Comun.formatearHora(Hora);	   
            //Fecha2=Comun.Mes(Fecha2);
 
        //}
	    //}
	    str.append("<fecha>" + Comun.Fecha2(Fecha2) + "</fecha>");
	    str.append("<hora>" + Comun.Hora(Fecha2) + "</hora>");
	    str.append("<km>" + ((gasto.getGastar_km()==null||gasto.getGastar_km().trim().equals(""))?"-":gasto.getGastar_km()) + "</km>");
	    str.append( "<litros>" + ((gasto.getGastar_litros()==null||gasto.getGastar_litros().trim().equals(""))?"-":gasto.getGastar_litros()) + "</litros>");
	    str.append("<importe>" + ((gasto.getGastar_importe()==null||gasto.getGastar_importe().trim().equals(""))?"-":gasto.getGastar_importe()) + "</importe>");
	    str.append("<verifi>" + ((gasto.getGastar_verifi()==null||gasto.getGastar_verifi().trim().equals(""))?"nbsp;":gasto.getGastar_verifi()) + "</verifi>");
	    str.append("<control>" + ((gasto.getGastar_control()==null||gasto.getGastar_control().trim().equals(""))?"nbsp;":gasto.getGastar_control()) + "</control>");
	    str.append("</gasto>");
	    	}

	    }else{
	    	str.append("<gasto>");
			    //xml += "<tarjeta>" + (String)e.getKey()+ "</tarjeta>";


	    	str.append("<tarjeta>" + gasto.getGastar_tarjeta()+ "</tarjeta>");
	    	str.append("<cargo>" + gasto.getGastar_cargo() + "</cargo>");
	    	str.append("<tipog>" + gasto.getGastar_tipo() + "</tipog>");
	    	str.append( "<concepto>" + gasto.getGastar_concepto() + "</concepto>");
	    	str.append("<ncomercio>" + ((gasto.getGastar_ncomercio()==null||gasto.getGastar_ncomercio().trim().equals(""))?"-":gasto.getGastar_ncomercio()) + "</ncomercio>");
			    //xml += "<fecha>" + gasto.getGastar_fecha() + "</fecha>";
			    Fecha2=gasto.getGastar_fecha();
			    //if (!(Fecha2.equals(""))){
		            //Hora=Comun.Hora(gasto.getGastar_fecha());
		            //Hora=Comun.formatearHora(Hora);	   
		            //Fecha2=Comun.Mes(Fecha2);
		 
		        //}
			    //}
			    str.append("<fecha>" + Comun.Fecha2(Fecha2) + "</fecha>");
			    str.append("<hora>" + Comun.Hora(Fecha2) + "</hora>");
			    str.append("<km>" + ((gasto.getGastar_km()==null||gasto.getGastar_km().trim().equals(""))?"-":gasto.getGastar_km()) + "</km>");
			    str.append("<litros>" + ((gasto.getGastar_litros()==null||gasto.getGastar_litros().trim().equals(""))?"-":gasto.getGastar_litros()) + "</litros>");
			    str.append("<importe>" + ((gasto.getGastar_importe()==null||gasto.getGastar_importe().trim().equals(""))?"-":gasto.getGastar_importe())  + "</importe>");
			    str.append("<verifi>" + ((gasto.getGastar_verifi()==null||gasto.getGastar_verifi().trim().equals(""))?"nbsp;":gasto.getGastar_verifi()) + "</verifi>");
			    str.append("<control>" + ((gasto.getGastar_control()==null||gasto.getGastar_control().trim().equals(""))?"nbsp;":gasto.getGastar_control()) + "</control>)");
			    str.append("</gasto>");
	    }

	}
	str.append("</datos>");
	str.append("</resultado>");
	return str;
}


private StringBuffer obtenerXmlFromAcusesR(LinkedHashMap  lista){
	//String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
	StringBuffer str = new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
	String Fecha2="";
	str.append("<resultado>");
	str.append("<tipo>OK</tipo>");
	str.append("<datos>");
	Iterator it = lista.entrySet().iterator();


	while (it.hasNext()) {
	    Map.Entry e = (Map.Entry)it.next();
	    m05bGastosTarjeta gasto = (m05bGastosTarjeta)e.getValue();
	    str.append("<gasto>");
	    str.append("<tarjeta>" + gasto.getGastar_tarjeta()+ "</tarjeta>");
	    str.append("<cargo>" + gasto.getGastar_cargo() + "</cargo>");
	    str.append("<tipog>" + gasto.getGastar_tipo() + "</tipog>");
	    str.append("<concepto>" + gasto.getGastar_concepto() + "</concepto>");
	    str.append("<ncomercio>" + ((gasto.getGastar_ncomercio()==null||gasto.getGastar_ncomercio().trim().equals(""))?"-":gasto.getGastar_ncomercio()) + "</ncomercio>");
			    Fecha2=gasto.getGastar_fecha();

			    str.append("<fecha>" + Comun.Fecha2(Fecha2) + "</fecha>");
			    str.append("<hora>" + Comun.Hora(Fecha2) + "</hora>");
			    str.append("<km>" + ((gasto.getGastar_km()==null||gasto.getGastar_km().trim().equals(""))?"-":gasto.getGastar_km()) + "</km>");
			    str.append("<litros>" + ((gasto.getGastar_litros()==null||gasto.getGastar_litros().trim().equals(""))?"-":gasto.getGastar_litros()) + "</litros>");
			    str.append("<importe>" +((gasto.getGastar_importe()==null||gasto.getGastar_importe().trim().equals(""))?"-":gasto.getGastar_importe())+ "</importe>");
			    str.append("<verifi>" + ((gasto.getGastar_verifi()==null||gasto.getGastar_verifi().trim().equals(""))?"nbsp;":gasto.getGastar_verifi()) + "</verifi>");
			    str.append("<control>" + ((gasto.getGastar_control()==null||gasto.getGastar_control().trim().equals(""))?"nbsp;":gasto.getGastar_control()) + "</control>");
			    str.append("</gasto>");
	    }


	str.append("</datos>");
	str.append("</resultado>");
	return str;
}
private void obtener(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response){
	PrintWriter wr =null;
	try {
		wr = (PrintWriter)response.getWriter();
		LinkedHashMap  listaGastos = (LinkedHashMap )request.getSession().getAttribute("listaGastos");
		if(listaGastos==null)
			listaGastos = new LinkedHashMap ();
		
		wr.println(obtenerXmlFromAcuses(listaGastos));
	} catch (Exception e) {
		// TODO Auto-generated catch block
		miLog.addTraza(e);
		wr.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?><resultado><tipo>ERROR-"+e.getMessage()+"</tipo></resultado>");
	}
}



/**
 * Process incoming requests for information
 *
 * @param request Object that encapsulates the request to the servlet
 * @param response Object that encapsulates the response from the servlet
 */
public void performTask(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) {

    ejecutar(request,response);
    HttpSession session = request.getSession(true);

    //miLog.addTraza(persona , "m05bVehGastos" , "sql: " + "Perform Task", m05bConstantes.LOG_NIVEL_BAJO);
	
}  // Fin performTask
	
}// Fin m05bModificarGastosTarjetaServlet