public void calculaimpBomberos() {
   try {
     BigDecimal valCuantia = BigDecimal.ZERO;
     DatoGlobal objDatglobAux = new DatoGlobal();
     objDatglobAux = patenteServicio.cargarObjDatGloPorNombre("Val_cuantia_bomberos");
     valCuantia = BigDecimal.valueOf(Double.parseDouble(objDatglobAux.getDatgloValor()));
     DatoGlobal objDatglobSueldoBasico = new DatoGlobal();
     objDatglobSueldoBasico = patenteServicio.cargarObjDatGloPorNombre("Val_sueldo_basico");
     BigDecimal valSueldoBasico =
         BigDecimal.valueOf(Double.parseDouble(objDatglobSueldoBasico.getDatgloValor()));
     valImpBomberos = valImpPatente.multiply(valCuantia);
     valImpBomberos = valImpBomberos.setScale(2, RoundingMode.HALF_UP);
     BigDecimal valExedeValSalarioBasico = BigDecimal.valueOf(0.3).multiply(valSueldoBasico);
     System.out.println("Valor imp bomberos: " + valImpBomberos);
     if (valImpBomberos.doubleValue() > valExedeValSalarioBasico.doubleValue()) {
       valImpBomberos = valExedeValSalarioBasico;
     }
     System.out.println("Valor imp bomberos validado: " + valImpBomberos);
     patenteValoracionActal.setPatvalTasaBomb(valImpBomberos);
     valSubTotal = valImpPatente.add(valImpBomberos);
     valSubTotal = valSubTotal.setScale(2, RoundingMode.HALF_UP);
     System.out.println("Valor subtotal: " + valSubTotal);
     patenteValoracionActal.setPatvalSubtotal(valSubTotal);
     calculaValorDeduccion();
     calculaTotal();
   } catch (Exception e) {
     LOGGER.log(Level.SEVERE, null, e);
   }
 }
 public void calculaTotal() {
   try {
     // Tasa de procesamiento-------------------------------
     DatoGlobal objDatglobAuxTp = new DatoGlobal();
     objDatglobAuxTp = patenteServicio.cargarObjDatGloPorNombre("Val_tasa_procesamiento");
     valTasaProc = BigDecimal.valueOf(Double.parseDouble(objDatglobAuxTp.getDatgloValor()));
     patenteValoracionActal.setPatvalTasaProc(valTasaProc);
     // ----------------------------------------------------
     valTotal = valSubTotal.subtract(valDeduciones).add(valTasaProc);
     valTotal.setScale(2, RoundingMode.HALF_UP);
     patenteValoracionActal.setPatvalTotal(valTotal);
     verBotDetDeducciones = 1;
   } catch (Exception e) {
     LOGGER.log(Level.SEVERE, null, e);
   }
 }
  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);
    }
  }