package vehiculosServlet;

import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;

import javax.servlet.http.HttpSession;

import m05bBD.m05bVehiculos;
import m05bClasses.m05bComun;
import m05bClasses.m05bConexion;
import m05bClasses.m05bConstantes;
import m05bClasses.m05bFileLog;
import m05bClasses.m05bGenerarClave;


/**
 * Inserte aquí la descripción del tipo.
 * Fecha de creación: (09/02/05)
 */
public class m05bBajaVehiculosServlet extends javax.servlet.http.HttpServlet {m05bFileLog miLog = new m05bFileLog();
   
String sMatricula, sql;
   String fBaja;
   String fAsignacion;
   String fOrdenTrabajo;
   String destino;
   String impbaja;
   String motivbaja;
   String vidautil;
   String regadquis;
   String fadquis;
   String sPrecio;
   String fIncicioRango="",sImporteTransferencia="",sAmorAcumulada="",RangoOld="";;
   String ImporteBaja="0";
   String amoanual="";
   String amoacum="";
   String matricant="";
   String poliza="";
   String persona="";
   
   String sSituacion=m05bConstantes.VEH_BAJA;
   
   String sCodigo="";  
   String Auxiliar="", Auxiliar1="";     
   int id=0;
   String sEstado="";
   String sCodigoInterno="";
   
   java.sql.Connection conn=null;
   PreparedStatement  pstmt = null, 
                      pstmtInsert = null, 
                      pstmtComprobacion = null,
                      pstmtAux1 = null;
   ResultSet rs = null,
             rsComprobacion = null,
             rsAux1 = null;
   SimpleDateFormat formatterDate = new SimpleDateFormat ("dd/MM/yyyy");

   m05bGenerarClave miID = new m05bGenerarClave();
   m05bComun miComun = new m05bComun();
   
	
public void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {

	performTask(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

}
/**
 * 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
 */
 
private void recogerParametros(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response){
   	 HttpSession session = request.getSession(false);  
		
		m05bVehiculos vehiculos = (m05bVehiculos)session.getAttribute("m05bVehiculos");
		sMatricula = request.getParameter("Matricula");
        miLog.addTraza("BEGO" , "Grabar VehEco:  " , "sMatricula: " + sMatricula,m05bConstantes.LOG_NIVEL_BAJO);
		
		if (sMatricula != null)
			sMatricula = sMatricula.toUpperCase();
		fBaja = request.getParameter("FechaBaja").toUpperCase();
         if (fBaja == null)
		     fBaja = "";		
        miLog.addTraza("BEGO" , "Grabar VehEco:  " , "sFechaBaja: " + fBaja,m05bConstantes.LOG_NIVEL_BAJO);
		 
		destino=request.getParameter("DesBaj");
         if (destino == null)
		     destino = "";		
        miLog.addTraza("BEGO" , "Grabar VehEco:  " , "destino: " + destino,m05bConstantes.LOG_NIVEL_BAJO);
		
		ImporteBaja=request.getParameter("ImpBaja");
         if (ImporteBaja == null)
		     ImporteBaja = "0";	
		 else {
          ImporteBaja=miComun.ImportesABasedatos(ImporteBaja);
		 }	
        miLog.addTraza("BEGO" , "Grabar VehEco:  " , "ImporteBaja: " + ImporteBaja,m05bConstantes.LOG_NIVEL_BAJO);
		
		motivbaja=request.getParameter("MovBaj").toUpperCase();
         if (motivbaja == null)
		     motivbaja = "";		
        miLog.addTraza("BEGO" , "Grabar VehEco:  " , "motivbaja: " + motivbaja,m05bConstantes.LOG_NIVEL_BAJO);
		sPrecio=request.getParameter("Precio").toUpperCase();
         if (sPrecio == null)
		     sPrecio = "0";		
		 else {
          sPrecio=miComun.ImportesABasedatos(sPrecio);
		 }	
        miLog.addTraza("BEGO" , "Grabar VehEco:  " , "sPrecio: " + sPrecio,m05bConstantes.LOG_NIVEL_BAJO);
		 
		vidautil=request.getParameter("ViUtil").toUpperCase();
		 if (vidautil == null)
		     vidautil = "";		
		 else {
          vidautil=miComun.ImportesABasedatos(vidautil);
		 }
		miLog.addTraza("BEGO" , "Grabar VehEco:  " , "vidautil: " + vidautil,m05bConstantes.LOG_NIVEL_BAJO);

		regadquis=request.getParameter("RegAdq");
		if (regadquis == null)
			regadquis= "";
		else
			regadquis = regadquis.toUpperCase();
		miLog.addTraza("BEGO" , "Grabar VehEco:  " , "regadquis: " + regadquis,m05bConstantes.LOG_NIVEL_BAJO);
		
		fadquis=request.getParameter("FecAdq").toUpperCase();
        sImporteTransferencia=request.getParameter("ImpTransferencia");
        if (sImporteTransferencia==null)
        		sImporteTransferencia="";
                else {
          sImporteTransferencia=miComun.ImportesABasedatos(sImporteTransferencia);
        }
        
		fAsignacion = request.getParameter("FAsignacion").toUpperCase();
        if (fAsignacion == null)
        	fAsignacion = "";		
        
		fOrdenTrabajo = request.getParameter("FOrdenTrabajo").toUpperCase();
        if (fOrdenTrabajo == null)
        	fOrdenTrabajo = "";		        
		
		vehiculos.setVeh_vidautil(vidautil);
		vehiculos.setVeh_impbaja(ImporteBaja);
		vehiculos.setVeh_destino(destino);
		vehiculos.setVeh_motbaja(motivbaja);
		vehiculos.setVeh_fbaja(fBaja);
		vehiculos.setVeh_precio(sPrecio);
		vehiculos.setVeh_regadq(regadquis);
		vehiculos.setVeh_fadquis(fadquis);
  	    session.setAttribute("m05bVehiculos",vehiculos);

}        


private String Seguro13Cancelado() throws java.lang.Exception{
	String  verified = "0";
    try{  
     sql = "select " + m05bConstantes.COL_13_ESTADO + "," + m05bConstantes.COL_13_CODIGO + 
		  " from " + m05bConstantes.TAB_HIST_SEGUROS  +
          " where	" + m05bConstantes.COL_13_MATRICULA + " = '" + sMatricula + "' order by TO_NUMBER(" +
          m05bConstantes.COL_13_CODIGO + ") desc " ;
		  pstmt = conn.prepareStatement(sql);
		  rs = pstmt.executeQuery();
		  if (rs.next()){  
	          sEstado = rs.getString(1);
		      sEstado = sEstado == null ? "":sEstado;
   			  sCodigoInterno = rs.getString(2);
		      sCodigoInterno = sCodigoInterno == null ? "":sCodigoInterno;
		      if (!(sEstado.equals(m05bConstantes.SEG_CANCELADA))){
		      	  verified = "1";
		      }
		  }
	   } catch (Exception ex) {
			try {
	  			verified="2";
	  			conn.rollback();  // Ha habido problemas, se deshacen todos los cambios
	  			//throw new Exception(ex);
	  			return verified;
	  		} catch (SQLException e1){
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "¿Tarjeta Cancelada?:Exception: sql: " + e1, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
     			miLog.addTraza(ex);
   	  	        return verified;		  			
	  		}
	   } finally{
	   	    try {
				if (rs != null)
					rs.close();
				if (pstmt != null)
					pstmt.close();
			} catch (SQLException e2) {
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "¿Tarjeta Cancelada?:Exception: sql: " + e2, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
   	  	        return verified;		  			
                
				
	  		}
	   }
  miLog.addTraza(persona , "m05b - Grabar Vehiculos:  " , "Ejecutar Existe Vehículo: verified: " + verified, m05bConstantes.LOG_NIVEL_BAJO);
  return verified;
}
        
private String CancelarSeguro13() throws java.lang.Exception{
	String  verified = "0";
    try{  
   	   Auxiliar="to_number(" + m05bConstantes.COL_13_CODIGO + ")";
       id = miID.getNextId(m05bConstantes.TAB_HIST_SEGUROS, Auxiliar);
       sCodigo = "" + id;
       sql = " insert into " + m05bConstantes.TAB_HIST_SEGUROS  + " (" +
   	         m05bConstantes.COL_13_CODIGO+","+m05bConstantes.COL_13_MATRICULA+","+
             m05bConstantes.COL_13_CIA+","+m05bConstantes.COL_13_FALTA+","+
             m05bConstantes.COL_13_FBAJA+","+m05bConstantes.COL_13_FCADUC+", "+
             m05bConstantes.COL_13_FSOLIC+","+m05bConstantes.COL_13_ESTADO+","+
             m05bConstantes.COL_13_IMPORTE+","+m05bConstantes.COL_13_POLIZAV+", "+
             m05bConstantes.COL_13_POLIZA+","+m05bConstantes.COL_13_MODAL+", "+                	
	         m05bConstantes.COL_13_IMPRESO + " )" +	
             " SELECT "	+ id + "," +m05bConstantes.COL_13_MATRICULA+","+
             m05bConstantes.COL_13_CIA+","+m05bConstantes.COL_13_FALTA+","+
             "to_date(TO_CHAR( sysdate,'ddmmyyyy'),'dd/mm/yyyy'),"+m05bConstantes.COL_13_FCADUC+", "+
             m05bConstantes.COL_13_FSOLIC+",'"+m05bConstantes.SEG_CANCELADA+"',"+
             m05bConstantes.COL_13_IMPORTE+","+m05bConstantes.COL_13_POLIZAV+", "+
             m05bConstantes.COL_13_POLIZA+","+m05bConstantes.COL_13_MODAL+", "+                	
		     m05bConstantes.COL_13_IMPRESO +					
		     "  FROM " + m05bConstantes.TAB_HIST_SEGUROS +
			 " where	" + m05bConstantes.COL_13_CODIGO + " = '" + sCodigoInterno + "'" ;
             miLog.addTraza(persona , "m05b - Baja Vehiculo:  " , " Cancela registro póliza: " + sql, m05bConstantes.LOG_NIVEL_BAJO);
			 pstmt = conn.prepareStatement(sql);
			 pstmt.executeUpdate();
	         if (pstmt != null)
	             pstmt.close();
	   } catch (Exception ex) {
			try {
	  			verified="2";
	  			conn.rollback();  // Ha habido problemas, se deshacen todos los cambios
	  			//throw new Exception(ex);
	  			return verified;
	  		} catch (SQLException e1){
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "Cancela registro póliza:Exception: sql: " + e1, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
     			miLog.addTraza(ex);
   	  	        return verified;		  			
	  		}
	   } finally{
	   	    try {
				if (rs != null)
					rs.close();
				if (pstmt != null)
					pstmt.close();
			} catch (SQLException e2) {
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "Cancela registro póliza:Exception: sql: " + e2, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
   	  	        return verified;		  			
	  		}
	   }
  miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "Cancela registro póliza: verified: " + verified, m05bConstantes.LOG_NIVEL_BAJO);
  return verified;
}
private String Tarjeta13Cancelada(String sTipo) throws java.lang.Exception{
	String  verified = "0";
    try{  
		sql =  "select " + m05bConstantes.COL_31_TARJHIST  + "," + m05bConstantes.COL_31_SITUACION +
 		       " from " + m05bConstantes.TAB_TARJETAS +
		       " where " +  m05bConstantes.COL_31_MATRICULA + " ='" + sMatricula+"'";
		if (sTipo.equals("1")){
			sql=sql+ " AND " + m05bConstantes.COL_31_TIPO + "='" +m05bConstantes.TAR_GASTO+"'";
		}else{
			sql=sql+ " AND " + m05bConstantes.COL_31_TIPO + "='" +m05bConstantes.TAR_VIAT+"'";
		}
        pstmt = conn.prepareStatement(sql);
  	    rs = pstmt.executeQuery();
  	    if (rs.next()){  
           sEstado = rs.getString(2);
           sEstado = sEstado == null ? "":sEstado;
 		   sCodigoInterno = rs.getString(1);
		   sCodigoInterno = sCodigoInterno == null ? "":sCodigoInterno;
		   if (!(sEstado.equals(m05bConstantes.TAR_CANCELADA))){
		      	  verified = "1";
		   }
		 }  
	   } catch (Exception ex) {
			try {
	  			verified="2";
	  			conn.rollback();  // Ha habido problemas, se deshacen todos los cambios
	  			//throw new Exception(ex);
	  			return verified;
	  		} catch (SQLException e1){
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "¿Tarjeta Cancelada?:Exception: sql: " + e1, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
     			miLog.addTraza(ex);
   	  	        return verified;		  			
	  		}
	   } finally{
	   	    try {
				if (rs != null)
					rs.close();
				if (pstmt != null)
					pstmt.close();
			} catch (SQLException e2) {
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "¿Tarjeta Cancelada?:Exception: sql: " + e2, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
   	  	        return verified;		  			
	  		}
	   }
  miLog.addTraza(persona , "m05b - Grabar Vehiculos:  " , "Ejecutar Tarjeta Cancelada: verified: " + verified, m05bConstantes.LOG_NIVEL_BAJO);
  return verified;
}
private String CancelarTarjeta14(int viat) throws java.lang.Exception{
	String  verified = "0";
    try{  
   	  Auxiliar="to_number(" + m05bConstantes.COL_14_TARJHIST + ")";
      id = miID.getNextId(m05bConstantes.TAB_HIST_TARJETAS, Auxiliar);
      //id = id + viat;
      sCodigo = "" + id;
      miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "Cancela Tarjeta historico:Exception: sCodigo: " + sCodigo, m05bConstantes.LOG_NIVEL_BAJO);      
      sql = " insert into " + m05bConstantes.TAB_HIST_TARJETAS  + " (" +
            m05bConstantes.COL_14_TARJHIST+", "+m05bConstantes.COL_14_TARJETA+
            ","+m05bConstantes.COL_14_MATRICULA+","+m05bConstantes.COL_14_LIMITE+
            ","+m05bConstantes.COL_14_FALTA+","+m05bConstantes.COL_14_FBAJA+
            ","+m05bConstantes.COL_14_FSOLIC+","+m05bConstantes.COL_14_FEXPED+
            ","+m05bConstantes.COL_14_FCADUC+","+m05bConstantes.COL_14_LITERAL+
            ","+m05bConstantes.COL_14_BANCO+","+m05bConstantes.COL_14_PLASTIC+
            ","+m05bConstantes.COL_14_SITUACION+","+m05bConstantes.COL_14_INCIDENCIA+
            ","+m05bConstantes.COL_14_CTRO+","+m05bConstantes.COL_14_TIPO+
            " )" +	
      	    " SELECT "	+ id + 
       	    ","+m05bConstantes.COL_14_TARJETA+
            ","+m05bConstantes.COL_14_MATRICULA+","+m05bConstantes.COL_14_LIMITE+
            ","+m05bConstantes.COL_14_FALTA+","+" to_date(TO_CHAR( sysdate,'ddmmyyyy'),'dd/mm/yyyy')" +
            ","+m05bConstantes.COL_14_FSOLIC+","+m05bConstantes.COL_14_FEXPED+
            ","+m05bConstantes.COL_14_FCADUC+","+m05bConstantes.COL_14_LITERAL+
            ","+m05bConstantes.COL_14_BANCO+","+m05bConstantes.COL_14_PLASTIC+
            ",'"+m05bConstantes.TAR_CANCELADA+"',"+m05bConstantes.COL_14_INCIDENCIA+
            ","+m05bConstantes.COL_14_CTRO+","+m05bConstantes.COL_14_TIPO +
		    "  FROM " + m05bConstantes.TAB_HIST_TARJETAS +
			" where	" + m05bConstantes.COL_14_TARJHIST + " = " + sCodigoInterno  ;
            miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "Cancela Tarjeta historico:Exception: sql: " + sql, m05bConstantes.LOG_NIVEL_BAJO);          
			pstmt = conn.prepareStatement(sql);
			pstmt.executeUpdate();
            conn.commit();
            if (pstmt != null)
                pstmt.close();
	   } catch (Exception ex) {
			try {
	  			verified="2";
	  			conn.rollback();  // Ha habido problemas, se deshacen todos los cambios
	  			//throw new Exception(ex);
	  			return verified;
	  		} catch (SQLException e1){
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "Cancela Tarjeta historico:Exception: sql: " + e1, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
     			miLog.addTraza(ex);
   	  	        return verified;		  			
	  		}
	   } finally{
	   	    try {
				if (rs != null)
					rs.close();
				if (pstmt != null)
					pstmt.close();
			} catch (SQLException e2) {
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "Cancela Tarjeta histórico:Exception: sql: " + e2, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
   	  	        return verified;		  			
	  		}
	   }
  miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "Cancela Tarjeta histórico: verified: " + verified, m05bConstantes.LOG_NIVEL_BAJO);
  return verified;
}
        
private String CancelarTarjeta31(String sTipo) throws java.lang.Exception{
	String  verified = "0";
    try{  
	  sql = "Update "+m05bConstantes.TAB_TARJETAS+ " set " +m05bConstantes.COL_31_TARJHIST +
	        " = " + id + "," + m05bConstantes.COL_31_SITUACION + 
		    " = '" + m05bConstantes.TAR_CANCELADA +
            "'," + m05bConstantes.COL_31_IMPRESO + " = 'N'" +					
		    " where " + m05bConstantes.COL_31_MATRICULA + " ='" + sMatricula+"'";
		if (sTipo.equals("1")){
			sql=sql+ " AND " + m05bConstantes.COL_31_TIPO + "='" +m05bConstantes.TAR_GASTO+"'";
		}else{
			sql=sql+ " AND " + m05bConstantes.COL_31_TIPO + "='" +m05bConstantes.TAR_VIAT +"'";
		}
      pstmt = conn.prepareStatement(sql);
	  pstmt.executeUpdate();			
      if (pstmt != null)
          pstmt.close();
	   } catch (Exception ex) {
			try {
	  			verified="2";
	  			conn.rollback();  // Ha habido problemas, se deshacen todos los cambios
	  			//throw new Exception(ex);
	  			return verified;
	  		} catch (SQLException e1){
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "Cancela Tarjeta Actual:Exception: sql: " + e1, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
     			miLog.addTraza(ex);
   	  	        return verified;		  			
	  		}
	   } finally{
	   	    try {
				if (rs != null)
					rs.close();
				if (pstmt != null)
					pstmt.close();
			} catch (SQLException e2) {
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "Cancela Tarjeta Actual:Exception: sql: " + e2, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
   	  	        return verified;		  			
	  		}
	   }
  miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "Cancela Tarjeta Actual: verified: " + verified, m05bConstantes.LOG_NIVEL_BAJO);
  return verified;
}
private String EjecutarAmortizacion() throws java.lang.Exception{
 String verified="0";
 String sTabla="";
 try{
	//1.2 Obtenemos el antiguo rango del vehículo
	
   sql = "SELECT " +m05bConstantes.COL_34_RANGO  + " FROM  " + m05bConstantes.TAB_VEHICULOS +
         " WHERE " + m05bConstantes.COL_34_MATRICULA +"='" + sMatricula+"'" ;
   miLog.addTraza(persona , "m05b - Grabar Vehiculos:  " , "Grabar Cambio calculo amortizacion acumulada: " + sql, m05bConstantes.LOG_NIVEL_BAJO);
   
   pstmt = conn.prepareStatement(sql);
   rs = pstmt.executeQuery();
   if (rs.next()){  
	       RangoOld = rs.getString(1);
           RangoOld = RangoOld == null ? "":RangoOld;
   }
 
   //1.3Calculo de la amortización acumulada.
   sql = "SELECT SUM(" +m05bConstantes.COL_39_IMPORTE + ") FROM  " + m05bConstantes.TAB_AMORTIZACION +
         " WHERE " + m05bConstantes.COL_39_MATRICULA +"='" + sMatricula+"'";
   miLog.addTraza(persona , "m05b - Grabar Vehiculos:  " , "Grabar Cambio calculo amortizacion acumulada: " + sql, m05bConstantes.LOG_NIVEL_BAJO);
   
   pstmt = conn.prepareStatement(sql);
   rs = pstmt.executeQuery();
   if (rs.next()){  
      sAmorAcumulada = rs.getString(1);
      if (sAmorAcumulada == null)
          sAmorAcumulada= "0";}
   else {
          sAmorAcumulada= "0";}
   miLog.addTraza(persona , "m05b - Grabar Vehiculos:  " , "Grabar Cambio rango amortizacion acumulada: " + sAmorAcumulada, m05bConstantes.LOG_NIVEL_BAJO);
   
  //1.4Cálculo del importe a amortizar
  double iPrecio = Double.valueOf(sPrecio).doubleValue();
  double iAmorAculumado=Double.valueOf(sAmorAcumulada).doubleValue();
  double ImporteAAmortizar= iPrecio - iAmorAculumado;
  String sImporteAAmortizar=""+ImporteAAmortizar;	 
  double iImporteBaja=Double.valueOf(sImporteTransferencia).doubleValue();
  ImporteAAmortizar=ImporteAAmortizar - iImporteBaja;	
  sImporteAAmortizar=""+ImporteAAmortizar;	 
  double ImporteAAmortizarAcum = ImporteAAmortizar + iAmorAculumado;
  if (pstmt != null)
       pstmt.close();
  if (rs != null)
       rs.close();
//1.5Damos de alta la amortizacion
 String sImporteAAmortizarAcum=""+ImporteAAmortizarAcum;
           miLog.addTraza(persona , "m05b - Grabar Vehiculos:  " ,  "Ejecutar ImporteAAmortizar:  " + ImporteAAmortizar, m05bConstantes.LOG_NIVEL_BAJO);   
  if (ImporteAAmortizar >0) {
     Auxiliar1="to_number(" + m05bConstantes.COL_39_CODIGO + ")";
     id = miID.getNextId( m05bConstantes.TAB_AMORTIZACION,  Auxiliar1  );
     sql = "INSERT INTO " + m05bConstantes.TAB_AMORTIZACION + "(" +
           m05bConstantes.COL_39_CODIGO + "," +                                       	   
           m05bConstantes.COL_39_MATRICULA + "," +m05bConstantes.COL_39_RANGO+ "," +
           m05bConstantes.COL_39_FECHA+ "," +m05bConstantes.COL_39_IMPORTE+ "," +
           m05bConstantes.COL_39_AMORTIZA+ ")" +
           " VALUES (" + id +",'" + sMatricula +"','" + RangoOld + "',to_date(TO_CHAR( sysdate,'ddmmyyyy'),'dd/mm/yyyy'),"+ 
           sImporteAAmortizar+","+sImporteAAmortizarAcum+")";
           miLog.addTraza(persona , "m05b - Grabar Vehiculos:  " ,  "Ejecutar Tranferencia:  " + sql, m05bConstantes.LOG_NIVEL_BAJO);   

           pstmt = conn.prepareStatement(sql);
           rs = pstmt.executeQuery();
           if (pstmt != null)
           pstmt.close();
           if (rs != null)
           rs.close();
   }
	   } catch (Exception ex) {
			try {
	  			verified="2";
                miLog.addTraza(persona , "m05b - Grabar Vehiculos:  " ,  "Ejecutar Tranferencia Verified:  " + verified, m05bConstantes.LOG_NIVEL_BAJO);   
	  			conn.rollback();  // Ha habido problemas, se deshacen todos los cambios
	  			//throw new Exception(ex);
	  			return verified;
	  		} catch (SQLException e1){
                miLog.addTraza(persona , "m05b - Grabar Vehiculos:  " , "Ejecutar Transferencia:Exception: sql: " + e1, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
     			miLog.addTraza(ex);
   	  	        return verified;		  			
	  		}
	   } finally{
	   	    try {
	   	    	if (rs != null)
	   	    		rs.close();
				if (pstmt != null)
					pstmt.close();
			} catch (SQLException e2) {
                miLog.addTraza(persona , "m05b - Grabar Vehiculos:  " , "Ejecutar Transferencia:Exception: sql: " + e2, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
   	  	        return verified;		  			
	  		}
	   }
           miLog.addTraza(persona , "m05b - Grabar Vehiculos:  " , " Tranferencia:  " + verified, m05bConstantes.LOG_NIVEL_BAJO);   
  return verified;
}

private String ActualizarVehiculoBaja() throws java.lang.Exception{
	String  verified = "0";
    try{  
       sql = "update " + m05bConstantes.TAB_VEHICULOS +
	         " set " + m05bConstantes.COL_34_SITUACION + " = '" + sSituacion + 
	         "'," + m05bConstantes.COL_34_FBAJA + " = to_date('" + fBaja + "','dd/mm/yyyy')" +
	         "," + m05bConstantes.COL_34_IMPBAJA + " = " + ImporteBaja + 
	    	 " ,"+m05bConstantes.COL_34_DESTINO+ " = '" + destino + "'" +	
			 " ,"+m05bConstantes.COL_34_MOTIVBAJA+ " = '" + motivbaja + "'" +
	         " where "+m05bConstantes.COL_34_MATRICULA +" = '" + sMatricula + "'" ;
      pstmt = conn.prepareStatement(sql);
	  pstmt.executeUpdate();				
      if (pstmt != null)
          pstmt.close();
	   } catch (Exception ex) {
			try {
	  			verified="2";
	  			conn.rollback();  // Ha habido problemas, se deshacen todos los cambios
	  			//throw new Exception(ex);
	  			return verified;
	  		} catch (SQLException e1){
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "ActualizarVehiculo 34:Exception: sql: " + e1, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
     			miLog.addTraza(ex);
   	  	        return verified;		  			
       		}
	   } finally{
	   	    try {
				if (rs != null)
					rs.close();
				if (pstmt != null)
					pstmt.close();
			} catch (SQLException e2) {
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "ActualizarVehiculo 34:Exception: sql: " + e2, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
   	  	        return verified;		  			
	  		}
	   }
  miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "Cancela Tarjeta Actual: verified: " + verified, m05bConstantes.LOG_NIVEL_BAJO);
  return verified;
}

private String ActualizarAsignacionBaja(String fAsignacion) throws java.lang.Exception{
	String  verified = "0";
    try{  
        
       sql = "update " + m05bConstantes.TAB_ASIGNACION +
             " set " + m05bConstantes.COL_01_FDEVOL+ " = to_date('" +fAsignacion+ "'||TO_CHAR("+
             m05bConstantes.COL_01_FDEVOL+",'hh24:mi:ss'),'dd/mm/yyyy hh24:mi:ss') where "+
             m05bConstantes.COL_01_CODASIG +" = (select max("+
             m05bConstantes.COL_01_CODASIG+") from "+ m05bConstantes.TAB_ASIGNACION +
             " where " + m05bConstantes.COL_01_MATRICULA+"='"+sMatricula+"')";       
      pstmt = conn.prepareStatement(sql);
	  pstmt.executeUpdate();				
      if (pstmt != null)
          pstmt.close();
	   } catch (Exception ex) {
			try {
	  			verified="2";
	  			conn.rollback();  // Ha habido problemas, se deshacen todos los cambios
	  			//throw new Exception(ex);
	  			return verified;
	  		} catch (SQLException e1){
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "ActualizarAsignacion 01:Exception: sql: " + e1, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
     			miLog.addTraza(ex);
   	  	        return verified;		  			
       		}
	   } finally{
	   	    try {
				if (rs != null)
					rs.close();
				if (pstmt != null)
					pstmt.close();
			} catch (SQLException e2) {
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "ActualizarAsignacion 01:Exception: sql: " + e2, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
   	  	        return verified;		  			
	  		}
	   }
  miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "Actualizar Asignacion: verified: " + verified, m05bConstantes.LOG_NIVEL_BAJO);
  return verified;
}

private String ActualizarOrdenTrabajoBaja(String fOrdenTrabajo) throws java.lang.Exception{
	String  verified = "0";
    try{  
        
       sql = "update " + m05bConstantes.TAB_ORDENESTRAB +
             " set " + m05bConstantes.COL_20_FSALIDA+ " = to_date('" +fOrdenTrabajo+ "'||TO_CHAR("+
             m05bConstantes.COL_20_FSALIDA+",'hh24:mi:ss'),'dd/mm/yyyy hh24:mi:ss') where "+
             m05bConstantes.COL_20_CODIGO +" = (select max("+
             m05bConstantes.COL_20_CODIGO+") from "+ m05bConstantes.TAB_ORDENESTRAB +
             " where " + m05bConstantes.COL_20_MATRICULA+"='"+sMatricula+"')";       
      pstmt = conn.prepareStatement(sql);
	  pstmt.executeUpdate();				
      if (pstmt != null)
          pstmt.close();
	   } catch (Exception ex) {
			try {
	  			verified="2";
	  			conn.rollback();  // Ha habido problemas, se deshacen todos los cambios
	  			//throw new Exception(ex);
	  			return verified;
	  		} catch (SQLException e1){
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "ActualizarOrdenTrabajo 20:Exception: sql: " + e1, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
     			miLog.addTraza(ex);
   	  	        return verified;		  			
       		}
	   } finally{
	   	    try {
				if (rs != null)
					rs.close();
				if (pstmt != null)
					pstmt.close();
			} catch (SQLException e2) {
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "ActualizarOrdenTrabajo 20:Exception: sql: " + e2, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
   	  	        return verified;		  			
	  		}
	   }
  miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "Actualizar Orden de Trabajo: verified: " + verified, m05bConstantes.LOG_NIVEL_BAJO);
  return verified;
}

private String ActualizarFecKmActVehiculoBaja() throws java.lang.Exception{
	String  verified = "0";
    try{  
       sql = "update " + m05bConstantes.TAB_VEHICULOS +
	         " set " + m05bConstantes.COL_34_FKMACT + " = to_date('" + fBaja + "','dd/mm/yyyy')" +
	         " where "+m05bConstantes.COL_34_MATRICULA +" = '" + sMatricula + "'" ;
      pstmt = conn.prepareStatement(sql);
	  pstmt.executeUpdate();				
      if (pstmt != null)
          pstmt.close();
	   } catch (Exception ex) {
			try {
	  			verified="2";
	  			conn.rollback();  // Ha habido problemas, se deshacen todos los cambios
	  			//throw new Exception(ex);
	  			return verified;
	  		} catch (SQLException e1){
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "ActualizarVehiculo 34:Exception: sql: " + e1, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
     			miLog.addTraza(ex);
   	  	        return verified;		  			
       		}
	   } finally{
	   	    try {
				if (rs != null)
					rs.close();
				if (pstmt != null)
					pstmt.close();
			} catch (SQLException e2) {
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "ActualizarVehiculo 34:Exception: sql: " + e2, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
   	  	        return verified;		  			
	  		}
	   }
  miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "Cancela Tarjeta Actual: verified: " + verified, m05bConstantes.LOG_NIVEL_BAJO);
  return verified;
}
private String ActualizarHistVehiculo() throws java.lang.Exception{
	String  verified = "0";
	String sId="";
    try{  
       sql= " SELECT "+ m05bConstantes.COL_44_ID +
            " FROM "+ m05bConstantes.TAB_HIST_VEHICULOS +
            " WHERE " + m05bConstantes.COL_44_MATRICULA +" ='"+sMatricula+"' AND " +  
            m05bConstantes.COL_44_FFIN + " IS NULL ORDER BY 1 DESC ";
      pstmtComprobacion = conn.prepareStatement(sql);
      rsComprobacion = pstmtComprobacion.executeQuery();
      if (rsComprobacion.next()) {
  	   sId=rsComprobacion.getString(1);
       sql = "update " + m05bConstantes.TAB_HIST_VEHICULOS +
			 " set " + m05bConstantes.COL_44_SITUACION + " = '" + sSituacion + 
			 "'," + m05bConstantes.COL_44_FBAJA + " = to_date(TO_CHAR( sysdate,'ddmmyyyy'),'dd/mm/yyyy')" +
			 "," + m05bConstantes.COL_44_IMPBAJA + " = " + ImporteBaja + 		
			 " ,"+m05bConstantes.COL_44_DESTINO+ " = '" + destino + "'" +	
			 " ,"+m05bConstantes.COL_44_MOTIVBAJA+ " = '" + motivbaja + "'" +
	         " where "+m05bConstantes.COL_44_MATRICULA +" = '" + sMatricula + "' AND " +
	         m05bConstantes.COL_44_ID +" ='"+sId+"' ";
      pstmt = conn.prepareStatement(sql);
	  pstmt.executeUpdate();}				
      if (pstmt != null)
          pstmt.close();
      if (pstmtComprobacion != null)
          pstmtComprobacion.close();
      if (rsComprobacion != null)
          rsComprobacion.close();
	   } catch (Exception ex) {
			try {
	  			verified="2";
	  			conn.rollback();  // Ha habido problemas, se deshacen todos los cambios
	  			//throw new Exception(ex);
	  			return verified;
	  		} catch (SQLException e1){
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "ActualizarHistVehiculo 44:Exception: sql: " + e1, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
     			miLog.addTraza(ex);
   	  	        return verified;		  			
	  		}
	   } finally{
	   	    try {
				if (rsComprobacion != null)
					rsComprobacion.close();
				if (pstmt != null)
					pstmt.close();
                if (pstmtComprobacion != null)
                    pstmtComprobacion.close();
			} catch (SQLException e2) {
                miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "ActualizarHistVehiculo 44:Exception: sql: " + e2, m05bConstantes.LOG_NIVEL_BAJO);
  	  			verified="2";
   	  	        return verified;		  			
	  		}
	   }
  miLog.addTraza(persona , "m05b - Baja Vehiculos:  " , "Cancela Tarjeta Actual: verified: " + verified, m05bConstantes.LOG_NIVEL_BAJO);
  return verified;
}

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

        
		try{
            recogerParametros(request,response);
			m05bConexion miConex = new m05bConexion();
			conn = miConex.getConnection();
			int viat=0;
			conn.setAutoCommit(false);  // Al final si todo ha ido bien se hace commit
			//Cancelamos el Seguro
		    if ((Seguro13Cancelado()!="0")) {
		    	 CancelarSeguro13();
		    }
			//Cancelamos la tarjeta
		    if ((Tarjeta13Cancelada("1")!="0")) {
                CancelarTarjeta14(viat);
                CancelarTarjeta31("1");
                viat =1;
            }
		    if ((Tarjeta13Cancelada("2")!="0")) {
                CancelarTarjeta14(viat);
                CancelarTarjeta31("2");
            }
            //GENERAR AMORTIZACION POR BAJA.
            if (EjecutarAmortizacion() == "2"){
	            response.sendRedirect("m05bVehiculosJsp.jsp?Matricula=" + sMatricula + "&Mensaje="+ m05bConstantes.MSG_EXISTEAMOR);}
            else {
		       	ActualizarVehiculoBaja();
		       	ActualizarHistVehiculo();
                //Actualiza la tabla de vehículos y el historico de vehiculos 
                //poniendo el estado a Baja y la fecha de baja		
			}
            if ((!(fAsignacion.equals("")))){
            	  ActualizarAsignacionBaja(fBaja);
            }
            if ((!(fOrdenTrabajo.equals("")))){
    			  ActualizarOrdenTrabajoBaja(fBaja);
            }
            if (((!(fAsignacion.equals("")))) || ((!(fOrdenTrabajo.equals(""))))){
                ActualizarFecKmActVehiculoBaja();
            }
 
			//Si todo ha ido bien se actualizan los cambios en la BD
		    conn.commit();
			response.sendRedirect("m05bVehiculosJsp.jsp?Matricula="+sMatricula);
			
	   }	catch(java.io.IOException ioex) {
	   		try {
				response.sendRedirect("m05bError.jsp");
			} catch (IOException e) {
				// TODO Auto-generated catch block
				miLog.addTraza(e);
			}
	   }	catch (Exception SQLException) {
				try {
		  			conn.rollback();  // Ha habido problemas, se deshacen todos los cambios
		  		} catch (SQLException e2){
                    miLog.addTraza(persona , "m05b - Grabar Vehiculos:  " , "Actualizar/Insertar Vehiculo: EXCEPTION-2:" + e2, m05bConstantes.LOG_NIVEL_BAJO);
		  		}
				miLog.addTraza(SQLException);
				try {
					response.sendRedirect("m05bError.jsp");
				} catch (IOException e) {
					// TODO Auto-generated catch block
					miLog.addTraza(e);
				}
	   }	catch(Throwable theException)	{
				miLog.addTraza(theException);
				try {
					response.sendRedirect("m05bError.jsp");
				} catch (IOException e) {
					// TODO Auto-generated catch block
					miLog.addTraza(e);
				}
	  } 	finally{
  	  			try {
					if (conn != null)
						conn.close();
		  		} catch (SQLException e){
                    miLog.addTraza(persona , "m05b - Grabar Vehiculos:  " , "Actualizar/Insertar Vehiculo: EXCEPTION-2:" + e, m05bConstantes.LOG_NIVEL_BAJO);
                    try {
						response.sendRedirect("m05bError.jsp");
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						miLog.addTraza(e1);
					}
		  		}
	   }
}
}