public void limpiaPanelDetalleImpuestos() {
   patenteValoracionActal.setPatvalActivos(null);
   patenteValoracionActal.setPatvalPasivos(null);
   patenteValoracionActal.setPatvalPatrimonio(null);
   patenteValoracionActal.setPatvalImpuesto(null);
   patenteValoracionActal.setPatvalDeducciones(null);
   patenteValoracionActal.setPatvalTasaBomb(null);
   patenteValoracionActal.setPatvalSubtotal(null);
   patenteValoracionActal.setPatvalTasaProc(null);
   patenteValoracionActal.setPatvalTotal(null);
   detaleExoDedMul = null;
   verBotDetDeducciones = 0;
   verDetDeducciones = 0;
 }
  public void calculaValorDeduccion() {
    try {
      // ------Exoneraciones, deducciones y multas-------
      BigDecimal valAdDeductivo = BigDecimal.ZERO;
      BigDecimal valTasaProc = BigDecimal.ZERO;
      BigDecimal valEvaTributaria = BigDecimal.ZERO;
      BigDecimal valIncPlazoDeclaracion = BigDecimal.ZERO;
      BigDecimal valObtPatTardia = BigDecimal.ZERO;
      BigDecimal valIncumpleObligado = BigDecimal.ZERO;
      BigDecimal valIncumpleNoObligado = BigDecimal.ZERO;
      BigDecimal valIncumpleSujetosPasivos = BigDecimal.ZERO;
      BigDecimal valSueldoBasico = BigDecimal.ZERO;

      DatoGlobal objDatglobSueldoBasico = new DatoGlobal();
      objDatglobSueldoBasico = patenteServicio.cargarObjDatGloPorNombre("Val_sueldo_basico");
      valSueldoBasico =
          BigDecimal.valueOf(Double.parseDouble(objDatglobSueldoBasico.getDatgloValor()));

      // -----------------------------Variables----------------------------------------------
      BigDecimal valPerdidaMitad = BigDecimal.ZERO; // Valor Perdida mitad
      BigDecimal valPerdidaTerceraParte = BigDecimal.ZERO; // Valor Perdida Tercera parte
      BigDecimal valDatFalso = BigDecimal.ZERO; // Valor Falsedad Datos
      BigDecimal valBaseImponible = BigDecimal.ZERO;
      BigDecimal valMultaPlazoDeclaracion = BigDecimal.ZERO; // Valor multa plazo declaración
      PatenteValoracion objPatValoracionAux = new PatenteValoracion();
      objPatValoracionAux = patenteServicio.buscaPatValoracion(patenteActual.getPatCodigo());
      PatenteValoracionExtras objPatValorExtAux = new PatenteValoracionExtras();
      objPatValorExtAux =
          patenteServicio.buscaPatValExtraPorPatValoracion(objPatValoracionAux.getPatvalCodigo());
      // *************************Adicionales Deductivos*********************************
      // if (objPatValorExtAux.getAdidedCodigo().getAdidedCodigo() != 0) { //Suspendido No se ha
      // aclarado el uso de adicionales deductivos
      // AdicionalesDeductivos objAdiDed = new AdicionalesDeductivos();
      // objAdiDed =
      // adicionalesDeductivosServicio.buscarAdicionesDeductivosXCodigo(objPatValorExtAux.getAdidedCodigo().getAdidedCodigo());
      // valAdDeductivo = objAdiDed.getAdidedValorfijo();
      // System.out.println("Valor Adicional deductivo:" + valAdDeductivo);
      // }
      // ************************Exoneraciones******************************************
      if (objPatValorExtAux.getPatvalextReduccionMitad() == true) { // Reducción Perdidas a la mitad
        valPerdidaMitad = valImpPatente.divide(BigDecimal.valueOf(2), 2, RoundingMode.HALF_UP);
        valPerdidaMitad.setScale(verBuscaPatente, RoundingMode.HALF_UP);
        valImpPatente = valPerdidaMitad;
        detaleExoDedMul.add("Exoneración: Perdidad (mitad) valor Imp.:" + valImpPatente + "\n");
        System.out.println("Exoneración: Perdida mitad impuesto:valimp: " + valImpPatente);
      }
      if (objPatValorExtAux.getPatvalextReduccion3eraparte()
          == true) { // Reducción`Perdidad tercera parte
        valPerdidaTerceraParte = valImpPatente.divide(BigDecimal.valueOf(3), 2, RoundingMode.UP);
        valPerdidaTerceraParte.setScale(2, RoundingMode.HALF_UP);
        valImpPatente = valPerdidaTerceraParte;
        detaleExoDedMul.add(
            "Exoneración: Perdidad (tercera parte) valor Imp.:" + valImpPatente + "\n");
        System.out.println("Exoneración: Perdida tercera parte impuesto: valimp: " + valImpPatente);
      }
      // Exoneracion Artesano Calificado---------------------------
      if (objPatValorExtAux.getPatvalextExonArtCalificado() == true) {
        valImpPatente = BigDecimal.ZERO;
        detaleExoDedMul.add("Exoneración: Artesano Calificado: valor Imp." + valImpPatente + "\n");
        System.out.println("Exonera impuesto artesano:valimp: " + valImpPatente);
        patenteValoracionActal.setPatvalImpuesto(valImpPatente);
      }
      // *****************************Multas*******************************
      // Incumplimiento de plazo de declaracion de mulas articulo 9 -------------
      if (objPatValorExtAux.getPatvalextNumMesesIncum() != 0) {
        BigDecimal porcIncPlazoDeclara = BigDecimal.ZERO;
        DatoGlobal objDatglobAux = new DatoGlobal();
        objDatglobAux = patenteServicio.cargarObjDatGloPorNombre("Val_porc_inc_noti_obligado");
        porcIncPlazoDeclara =
            BigDecimal.valueOf(Double.parseDouble(objDatglobAux.getDatgloValor()));
        valIncPlazoDeclaracion =
            porcIncPlazoDeclara
                .multiply(valImpPatente)
                .multiply(
                    BigDecimal.valueOf(
                        objPatValorExtAux.getPatvalextNumMesesIncum())); // <--Valor a deducir-->
        detaleExoDedMul.add(
            "Multas: Incumple plazo declaración (Num meses): valor"
                + valIncPlazoDeclaracion
                + "\n");
        System.out.println(
            "Multas:Incumple plazo de declaración de patentes (Num meses):"
                + valIncPlazoDeclaracion);
      }
      // if (verificaPatentePrimeraVez() == true) {
      // int diasRetraso = evaluaPatenteTardia();
      // if (diasRetraso > 30) {
      //  BigDecimal porcValImpTardio = BigDecimal.ZERO;
      // DatoGlobal objDatglobAux = new DatoGlobal();
      // objDatglobAux = patenteServicio.cargarObjDatGloPorNombre("Val_obtiene_pat_tardiamente");
      // porcValImpTardio = BigDecimal.valueOf(Double.parseDouble(objDatglobAux.getDatgloValor()));
      // valObtPatTardia = porcValImpTardio.multiply(valSueldoBasico);
      // detaleExoDedMul.append("Multas:Incumple declaración patente tardia (primera vez):" +
      // valIncumpleObligado + "\n");
      // System.out.println("Multas:Incumple declaración patente tardia:" + valIncumpleObligado);
      // }
      // }
      // Incumplimiento de notificacion------------------------------
      if (objPatValorExtAux.getPatvalextObligado() == true) { // obligado
        BigDecimal porcIncObligado = BigDecimal.ZERO;
        DatoGlobal objDatglobAux = new DatoGlobal();
        objDatglobAux = patenteServicio.cargarObjDatGloPorNombre("Val_porc_inc_noti_obligado");
        porcIncObligado = BigDecimal.valueOf(Double.parseDouble(objDatglobAux.getDatgloValor()));
        valIncumpleObligado = porcIncObligado.multiply(valSueldoBasico);
        valIncumpleObligado.setScale(2, RoundingMode.HALF_UP); // <--Valor a deducir-->
        detaleExoDedMul.add(
            "Multas:Incumple notificacion (Obligado a llevar cont.) valor:"
                + valIncumpleObligado
                + "\n");
        System.out.println("Multas:Incumple notificacion obligado" + valIncumpleObligado);
      }
      if (objPatValorExtAux.getPatvalextNoObligado() == true) { // No obligado
        BigDecimal porcIncNoObligado = BigDecimal.ZERO;
        DatoGlobal objDatglobAux = new DatoGlobal();
        objDatglobAux = patenteServicio.cargarObjDatGloPorNombre("Val_porc_inc_noti_no_obligado");
        porcIncNoObligado = BigDecimal.valueOf(Double.parseDouble(objDatglobAux.getDatgloValor()));
        valIncumpleNoObligado = porcIncNoObligado.multiply(valSueldoBasico);
        valIncumpleNoObligado.setScale(2, RoundingMode.HALF_UP); // <--Valor a deducir-->
        detaleExoDedMul.add(
            "Multas:Incumple notificacion (No Obligado a llevar cont.) valor:"
                + valIncumpleNoObligado
                + "\n");
        System.out.println("Multas:Incumple notificacion no obligado" + valIncumpleNoObligado);
      }
      // Incumplimiento sujetos pasivos exentos de pago----------------
      if (objPatValorExtAux.getPatvalextIncumPlazoDecla() == true) { // No obligado
        BigDecimal porcIncSujetosPasivos = BigDecimal.ZERO;
        DatoGlobal objDatglobAux = new DatoGlobal();
        objDatglobAux = patenteServicio.cargarObjDatGloPorNombre("Val_porc_inc_sujetos_pasivos");
        porcIncSujetosPasivos =
            BigDecimal.valueOf(Double.parseDouble(objDatglobAux.getDatgloValor()));
        valIncumpleSujetosPasivos = porcIncSujetosPasivos.multiply(valSueldoBasico);
        valIncumpleSujetosPasivos.setScale(2, RoundingMode.HALF_UP); // <--Valor a deducir-->
        detaleExoDedMul.add(
            "Multas:Incumplimiento (Plazo de declaración de patentes sujetos pasivos extentos de pago) valor:"
                + valIncumpleSujetosPasivos
                + "\n");
        System.out.println(
            "Multas:Incumplimiento (Plazo de declaración de patentes sujetos pasivos extentos de pago) valor:"
                + valIncumpleSujetosPasivos);
      }

      // Incumplimiento plazo de declaración de patentes------------
      // if (objPatValorExtAux.getPatvalextNumMesesIncum() != 0) { //Duplicado
      // BigDecimal porcentajeImp = BigDecimal.ZERO;
      // DatoGlobal objDatglobAux = new DatoGlobal();
      // objDatglobAux = patenteServicio.cargarObjDatGloPorNombre("Val_porc_incumple_declaracion");
      // porcentajeImp = BigDecimal.valueOf(Double.parseDouble(objDatglobAux.getDatgloValor()));
      // valMultaPlazoDeclaracion =
      // (valImpPatente.multiply(porcentajeImp)).multiply(BigDecimal.valueOf(objPatValorExtAux.getPatvalextNumMesesIncum()));
      // valMultaPlazoDeclaracion.setScale(2, RoundingMode.HALF_UP);
      // System.out.println("Multas:Incumple plazo declaracion:valor" + valMultaPlazoDeclaracion);
      // }
      // Falsedad de datos------------------------------------------
      if (objPatValorExtAux.getPatentePorcDatosfalsos() != 0) {
        BigDecimal valPorcentajeDatosFalos =
            BigDecimal.valueOf(objPatValorExtAux.getPatentePorcDatosfalsos().doubleValue())
                .divide(BigDecimal.valueOf(100));
        valDatFalso = valSueldoBasico.multiply(valPorcentajeDatosFalos);
        valDatFalso.setScale(2, RoundingMode.HALF_UP); // <--Valor a deducir-->
        detaleExoDedMul.add("Multas:Falsedad de datos: valor: " + valDatFalso + "\n");
        System.out.println("Multas:Falsedad de datos: valor: " + valDatFalso);
      }
      // Evasion Tributaria------------------------------------------
      if (!objPatValorExtAux.getPatenteEvasionTributaria().equals("")) {
        switch (Integer.parseInt(objPatValorExtAux.getPatenteEvasionTributaria())) {
          case 1:
            valEvaTributaria = valImpPatente;
            break;
          case 2:
            valEvaTributaria = valImpPatente.multiply(BigDecimal.valueOf(2));
            break;
          case 3:
            valEvaTributaria = valImpPatente.multiply(BigDecimal.valueOf(3));
            break;
        }
        valEvaTributaria.setScale(2, RoundingMode.HALF_UP); // <--Valor a deducir-->
        detaleExoDedMul.add("Multas:Evación tributaria Tipo 1 : valor: " + valEvaTributaria + "\n");
        System.out.println("Multas:Evación tributaria Tipo 1 : valor: " + valEvaTributaria);
      }
      valDeduciones =
          valMultaPlazoDeclaracion
              .add(valDatFalso)
              .add(valTasaProc)
              .add(valEvaTributaria)
              .add(valIncumpleObligado)
              .add(valObtPatTardia)
              .add(valIncumpleNoObligado)
              .add(valIncumpleSujetosPasivos);
      System.out.println("Valor total deducciones:" + valDeduciones);
      patenteValoracionActal.setPatvalDeducciones(valDeduciones);
      objPatValorExtAux = new PatenteValoracionExtras();
      objPatValoracionAux = new PatenteValoracion();

    } catch (Exception e) {
      LOGGER.log(Level.SEVERE, null, e);
    }
  }
 public void calculaImpuestoPatente() {
   BigDecimal impFracBasica = BigDecimal.ZERO;
   BigDecimal impExcede = BigDecimal.ZERO;
   // ***************Validacion del impuesto de patente segun tabla 1 Art.18*************
   if (valPatrimonio.doubleValue() >= 0 && valPatrimonio.doubleValue() <= 50000) {
     impFracBasica = BigDecimal.valueOf(10);
     impExcede =
         BigDecimal.valueOf((0.25 / 100))
             .multiply(valPatrimonio.subtract(BigDecimal.valueOf(50000)));
     System.err.println("Opcion Rango 1");
   }
   if (valPatrimonio.doubleValue() >= 50000.01 && valPatrimonio.doubleValue() <= 100000) {
     impFracBasica = BigDecimal.valueOf(135);
     impExcede =
         BigDecimal.valueOf((0.50 / 100))
             .multiply(valPatrimonio.subtract(BigDecimal.valueOf(100000)));
     ;
     System.err.println("Opcion Rango 2");
   }
   if (valPatrimonio.doubleValue() >= 100000.01 && valPatrimonio.doubleValue() <= 250000) {
     impFracBasica = BigDecimal.valueOf(385);
     impExcede =
         BigDecimal.valueOf((double) 1 / 100)
             .multiply(valPatrimonio.subtract(BigDecimal.valueOf(250000)));
     System.err.println("Opcion Rango 3");
   }
   if (valPatrimonio.doubleValue() >= 250000.01) {
     impFracBasica = BigDecimal.valueOf(1885);
     impExcede =
         BigDecimal.valueOf((1.30 / 100))
             .multiply(valPatrimonio.subtract(BigDecimal.valueOf(250000)));
     ;
     System.err.println("Opcion Rango 4");
   }
   valImpPatente = impFracBasica.add(impExcede);
   valImpPatente = valImpPatente.setScale(2, RoundingMode.HALF_UP);
   System.out.println("Valor impuesto patente total: " + valImpPatente);
   // ***************Validacion de impuesto de patente segun tabla 2 Art.18 *************
   if (valPatrimonio.doubleValue() >= 250000.01 && valPatrimonio.doubleValue() <= 500000) {
     if (valImpPatente.doubleValue() >= 2500.00) {
       valImpPatente = BigDecimal.valueOf(2500.00);
       System.out.println("Valor impuesto tabla 2 opt1: " + valImpPatente);
     }
   }
   if (valPatrimonio.doubleValue() >= 500000.01 && valPatrimonio.doubleValue() <= 1000000) {
     if (valImpPatente.doubleValue() >= 5000.00) {
       valImpPatente = BigDecimal.valueOf(5000.00);
       System.out.println("Valor impuesto tabla 2 opt2: " + valImpPatente);
     }
   }
   if (valPatrimonio.doubleValue() >= 1000000.01 && valPatrimonio.doubleValue() <= 5000000) {
     if (valImpPatente.doubleValue() >= 7000.00) {
       valImpPatente = BigDecimal.valueOf(7000.00);
       System.out.println("Valor impuesto tabla 2 opt3: " + valImpPatente);
     }
   }
   if (valPatrimonio.doubleValue() >= 5000000.01 && valPatrimonio.doubleValue() <= 10000000) {
     if (valImpPatente.doubleValue() >= 8000.00) {
       valImpPatente = BigDecimal.valueOf(8000.00);
       System.out.println("Valor impuesto tabla 2 opt4: " + valImpPatente);
     }
   }
   if (valPatrimonio.doubleValue() >= 10000000.01) {
     if (valImpPatente.doubleValue() >= 10000.00) {
       valImpPatente = BigDecimal.valueOf(10000.00);
       System.out.println("Valor impuesto tabla 2 opt5: " + valImpPatente);
     }
   }
   patenteValoracionActal.setPatvalImpuesto(valImpPatente);
   calculaimpBomberos();
 }