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 cagarPatenteActual() {
   verBotDetDeducciones = 0;
   verDetDeducciones = 0;
   try {
     patenteActual = patenteServicio.cargarObjPatente(Integer.parseInt(buscNumPat));
     if (patenteActual == null) {
       numPatente = null;
       patenteValoracionActal = new PatenteValoracion();
       verPanelDetalleImp = 0;
     } else {
       if (cargarExistePatValoracion()) {
         patenteValoracionActal = patenteServicio.buscaPatValoracion(patenteActual.getPatCodigo());
         System.out.println("Si encontro el objeto");
         numPatente = generaNumPatente(); // "AE-MPM-" + patenteActual.getPatCodigo();
         CatalogoDetalle objCatDetAux = new CatalogoDetalle();
         objCatDetAux =
             catalogoDetalleServicio.buscarPoCatdetTexCatdetCod(
                 patenteValoracionActal.getPatvalAnio() + "",
                 "A" + patenteValoracionActal.getPatvalAnio());
         catDetAnio = objCatDetAux;
         verguarda = 0;
         verActualiza = 1;
       } else {
         System.out.println("No encontro el objeto");
         numPatente = generaNumPatente(); // "AE-MPM-" + patenteActual.getPatCodigo();
         patenteValoracionActal = new PatenteValoracion();
         verguarda = 1;
         verActualiza = 0;
       }
     }
   } catch (Exception e) {
     LOGGER.log(Level.SEVERE, null, e);
   }
 }
 public void guardaPatenteValoracion() {
   try {
     CatalogoDetalle objCatDetAux = new CatalogoDetalle();
     objCatDetAux = catalogoDetalleServicio.buscarPorCodigoCatDet(catDetAnio.getCatdetCodigo());
     patenteValoracionActal.setPatvalAnio(Integer.parseInt(objCatDetAux.getCatdetTexto()));
     patenteValoracionActal.setPatCodigo(patenteActual);
     patenteServicio.editarPatenteValoracion(patenteValoracionActal);
     addSuccessMessage("Guardado Exitosamente", "Patente Valoración Guardado");
     patenteValoracionActal = new PatenteValoracion();
     inicializar();
   } 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 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 calcularValorBaseImponible() {
   try {
     activaBaseImponible = 0;
     valPatrimonio = valBaseImpNegativa;
     valPatrimonio = valPatrimonio.setScale(2, RoundingMode.HALF_UP);
     patenteValoracionActal.setPatvalPatrimonio(valPatrimonio);
     calculaImpuestoPatente();
   } catch (Exception ex) {
     LOGGER.log(Level.SEVERE, null, ex);
   }
 }
  public void calcularValorPatrimonio() {
    try {
      detaleExoDedMul = new ArrayList<String>();
      valPatrimonio =
          patenteValoracionActal
              .getPatvalActivos()
              .subtract(patenteValoracionActal.getPatvalPasivos());
      valPatrimonio = valPatrimonio.setScale(2, RoundingMode.HALF_UP);
      patenteValoracionActal.setPatvalPatrimonio(valPatrimonio);
      if (valPatrimonio.compareTo(BigDecimal.ZERO) < 0) {
        activaBaseImponible = 1;
      } else {
        activaBaseImponible = 0;
        valBaseImpNegativa = BigDecimal.ZERO;
        calculaImpuestoPatente();
      }

    } catch (Exception ex) {
      LOGGER.log(Level.SEVERE, null, ex);
    }
  }
  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();
 }