public List<SelectItem> getTipoMaterial() {
    if (tipoMaterial == null) {
      tipoMaterial = new ArrayList<>();
      Catalogo catalogoTipoMaterial = catalogoServicio.findByNemonico("MATEXP");
      List<CatalogoDetalle> tipMatCat =
          catalogoDetalleServicio.obtenerPorCatalogo(catalogoTipoMaterial.getCodigoCatalogo());

      for (CatalogoDetalle tipMat : tipMatCat) {
        tipoMaterial.add(
            new SelectItem(tipMat.getCodigoCatalogoDetalle(), tipMat.getNombre().toUpperCase()));
      }
    }
    return tipoMaterial;
  }
  public List<SelectItem> getTipoMaterialDetalle() {
    if (tipoMaterialDetalle == null) {
      /*CatalogoDetalle cd = catalogoDetalleServicio.obtenerPorNemonico("MATCONS").get(0);
      tipoMaterialDetalle = new ArrayList<>();
      System.out.println("licenciaComercializacion.getCodigoTipoMineral().getCodigoCatalogoDetalle(): " + licenciaComercializacion.getCodigoTipoMineral().getCodigoCatalogoDetalle());
      if (licenciaComercializacion.getCodigoTipoMineral().getCodigoCatalogoDetalle() != null) {
      if (licenciaComercializacion.getCodigoTipoMineral().getCodigoCatalogoDetalle().equals(cd.getCodigoCatalogoDetalle())) {
      return tipoMaterialDetalle;
      }
      } else {
      return tipoMaterialDetalle;
      }*/
      if (licenciaComercializacion.getCodigoTipoMineral().getCodigoCatalogoDetalle() != null) {
        tipoMaterialDetalle = new ArrayList<>();
        System.out.println(
            "licenciaComercializacion.getCodigoTipoMineral().getCodigoCatalogoDetalle(): "
                + licenciaComercializacion.getCodigoTipoMineral().getCodigoCatalogoDetalle());
        CatalogoDetalle catalogoDetalleTipoMaterial =
            catalogoDetalleServicio.findByPk(
                licenciaComercializacion.getCodigoTipoMineral().getCodigoCatalogoDetalle());
        System.out.println(
            "catalogoDetalleTipoMaterial.getNombre(): " + catalogoDetalleTipoMaterial.getNombre());
        Catalogo catalogo = catalogoServicio.findByNombre(catalogoDetalleTipoMaterial.getNombre());
        // System.out.println("catalogo.getCodigoCatalogo(): " + catalogo.getCodigoCatalogo());
        if (catalogo != null) {
          List<CatalogoDetalle> tipMatCatDet =
              catalogoDetalleServicio.obtenerPorCatalogo(catalogo.getCodigoCatalogo());

          for (CatalogoDetalle tipMat : tipMatCatDet) {
            tipoMaterialDetalle.add(
                new SelectItem(
                    tipMat.getCodigoCatalogoDetalle(), tipMat.getNombre().toUpperCase()));
          }
        }
      }
    }
    return tipoMaterialDetalle;
  }
  @Override
  public void guardarLicenciaComercializacion(LicenciaComercializacion licenciaComercializacion)
      throws Exception {
    PersonaNatural pn =
        personaNaturalServicio.findByNumeroDocumento(licenciaComercializacion.getNumeroDocumento());
    PersonaJuridica pj =
        personaJuridicaServicio.findByRuc(licenciaComercializacion.getNumeroDocumento());
    if (pn != null) {
      if (licenciaComercializacion.getNumeroDocumento().length() == 10) {
        CatalogoDetalle cd = catalogoDetalleServicio.obtenerPorNemonico("CED").get(0);
        pn.setTipoDocumento(cd.getCodigoCatalogoDetalle());
      } else if (licenciaComercializacion.getNumeroDocumento().length() == 13) {
        CatalogoDetalle cd = catalogoDetalleServicio.obtenerPorNemonico("RUC").get(0);
        pn.setTipoDocumento(cd.getCodigoCatalogoDetalle());
      }
      pn.setNombre(licenciaComercializacion.getNombre());
      pn.setApellido(licenciaComercializacion.getApellido());
      pn.setEmail(licenciaComercializacion.getCorreoElectronico());
      pn.setTelefono(licenciaComercializacion.getTelefono());
      pn.setCelular(licenciaComercializacion.getTelefono());
      pn.setDireccion(licenciaComercializacion.getDireccion());
      Localidad localidad = new Localidad();
      localidad.setCodigoLocalidad(
          Long.valueOf(licenciaComercializacion.getCodigoParroquida().toString()));
      pn.setCodigoLocalidad(localidad);
      pn.setCodigoProvincia(licenciaComercializacion.getCodigoProvincia());
      pn.setCodigoCanton(licenciaComercializacion.getCodigoCanton());
      pn.setCodigoParroquia(licenciaComercializacion.getCodigoParroquida());
      pn.setEstadoRegistro(true);
      pn.setUsuarioCreacion(BigInteger.valueOf(-1));
      pn.setUsuarioModificacion(licenciaComercializacion.getUsuarioModificacion());
      pn.setFechaModificacion(new Date());
      pn.setCasilleroJudicial(licenciaComercializacion.getCasilleroJudicial());
      personaNaturalServicio.actualizarPersonaNatural(pn);
    } else {
      PersonaNatural pnNuevo = new PersonaNatural();
      if (licenciaComercializacion.getNumeroDocumento().length() == 10) {
        CatalogoDetalle cd = catalogoDetalleServicio.obtenerPorNemonico("CED").get(0);
        pnNuevo.setTipoDocumento(cd.getCodigoCatalogoDetalle());
      } else if (licenciaComercializacion.getNumeroDocumento().length() == 13) {
        CatalogoDetalle cd = catalogoDetalleServicio.obtenerPorNemonico("RUC").get(0);
        pnNuevo.setTipoDocumento(cd.getCodigoCatalogoDetalle());
      }
      pnNuevo.setNombre(licenciaComercializacion.getNombre());
      pnNuevo.setApellido(licenciaComercializacion.getApellido());
      pnNuevo.setEmail(licenciaComercializacion.getCorreoElectronico());
      pnNuevo.setTelefono(licenciaComercializacion.getTelefono());
      pnNuevo.setCelular(licenciaComercializacion.getTelefono());
      pnNuevo.setDireccion(licenciaComercializacion.getDireccion());
      Localidad localidad = new Localidad();
      localidad.setCodigoLocalidad(
          Long.valueOf(licenciaComercializacion.getCodigoParroquida().toString()));
      pnNuevo.setCodigoLocalidad(localidad);
      pnNuevo.setCodigoProvincia(licenciaComercializacion.getCodigoProvincia());
      pnNuevo.setCodigoCanton(licenciaComercializacion.getCodigoCanton());
      pnNuevo.setCodigoParroquia(licenciaComercializacion.getCodigoParroquida());
      pnNuevo.setEstadoRegistro(true);
      pnNuevo.setUsuarioCreacion(BigInteger.valueOf(-1));
      pnNuevo.setUsuarioModificacion(licenciaComercializacion.getUsuarioModificacion());
      pnNuevo.setFechaModificacion(new Date());
      pnNuevo.setCasilleroJudicial(licenciaComercializacion.getCasilleroJudicial());
      personaNaturalServicio.create(pnNuevo);
    }

    if (pj != null) {
      pj.setRuc(licenciaComercializacion.getNumeroDocumento());
      pj.setNombreLegal("");
      pj.setDocumentoRepresentanteLegal("");
      pj.setNombreRepresentanteLegal(licenciaComercializacion.getNombre());
      pj.setApellidoRepresentanteLegal(licenciaComercializacion.getApellido());
      pj.setEmail(licenciaComercializacion.getCorreoElectronico());
      pj.setTelefono(licenciaComercializacion.getTelefono());
      pj.setCelular(licenciaComercializacion.getTelefono());
      pj.setDireccion(licenciaComercializacion.getDireccion());
      Localidad localidad = new Localidad();
      localidad.setCodigoLocalidad(
          Long.valueOf(licenciaComercializacion.getCodigoParroquida().toString()));
      pj.setCodigoLocalidad(localidad);
      pj.setCodigoProvincia(licenciaComercializacion.getCodigoProvincia());
      pj.setCodigoCanton(licenciaComercializacion.getCodigoCanton());
      pj.setCodigoParroquia(licenciaComercializacion.getCodigoParroquida());
      pj.setEstadoRegistro(true);
      pj.setUsuarioCreacion(BigInteger.valueOf(-1));
      pj.setUsuarioModificacion(licenciaComercializacion.getUsuarioModificacion());
      pj.setFechaModificacion(new Date());
      pj.setCasilleroJudicial(licenciaComercializacion.getCasilleroJudicial());
      personaJuridicaServicio.actualizarPersonaJuridica(pj);
    } else {
      PersonaJuridica pjNuevo = new PersonaJuridica();
      pjNuevo.setRuc(licenciaComercializacion.getNumeroDocumento());
      pjNuevo.setNombreLegal("");
      pjNuevo.setDocumentoRepresentanteLegal("");
      pjNuevo.setNombreRepresentanteLegal(licenciaComercializacion.getNombre());
      pjNuevo.setApellidoRepresentanteLegal(licenciaComercializacion.getApellido());
      pjNuevo.setEmail(licenciaComercializacion.getCorreoElectronico());
      pjNuevo.setTelefono(licenciaComercializacion.getTelefono());
      pjNuevo.setCelular(licenciaComercializacion.getTelefono());
      pjNuevo.setDireccion(licenciaComercializacion.getDireccion());
      Localidad localidad = new Localidad();
      localidad.setCodigoLocalidad(
          Long.valueOf(licenciaComercializacion.getCodigoParroquida().toString()));
      pjNuevo.setCodigoLocalidad(localidad);
      pjNuevo.setCodigoProvincia(licenciaComercializacion.getCodigoProvincia());
      pjNuevo.setCodigoCanton(licenciaComercializacion.getCodigoCanton());
      pjNuevo.setCodigoParroquia(licenciaComercializacion.getCodigoParroquida());
      pjNuevo.setEstadoRegistro(true);
      pjNuevo.setUsuarioCreacion(BigInteger.valueOf(-1));
      pjNuevo.setUsuarioModificacion(licenciaComercializacion.getUsuarioModificacion());
      pjNuevo.setFechaModificacion(new Date());
      pjNuevo.setCasilleroJudicial(licenciaComercializacion.getCasilleroJudicial());
    }
    this.create(licenciaComercializacion);
  }
  public void guardarPersonaJuridica() {
    Usuario us = usuarioDao.obtenerPorLogin(login.getUserName());

    licenciaComercializacion.setNumeroDocumento(personaJuridica.getRuc());
    licenciaComercializacion.setNombre(personaJuridica.getNombreLegal());
    licenciaComercializacion.setApellido(personaJuridica.getNombreComercial());
    licenciaComercializacion.setDireccion(personaJuridica.getDireccion());
    licenciaComercializacion.setTelefono(personaJuridica.getCelular());
    licenciaComercializacion.setCorreoElectronico(personaJuridica.getEmail());
    licenciaComercializacion.setCasilleroJudicial(personaJuridica.getCasilleroJudicial());
    PersonaJuridica pj = personaJuridicaServicio.findByRuc(personaJuridica.getRuc());
    try {
      if (pj == null) {
        personaJuridica.setFechaCreacion(new Date());
        personaJuridica.setUsuarioCreacion(BigInteger.valueOf(us.getCodigoUsuario()));
        Localidad localidad = new Localidad();
        localidad.setCodigoLocalidad(Long.valueOf("5"));
        personaJuridica.setCodigoLocalidad(null);
        CatalogoDetalle catalogoDetalle = new CatalogoDetalle();
        catalogoDetalle.setCodigoCatalogoDetalle(132L);
        personaJuridica.setClasePersona(catalogoDetalle);
        personaJuridicaServicio.create(personaJuridica);
        Auditoria auditoria = new Auditoria();
        auditoria.setAccion("INSERT");
        auditoria.setFecha(getCurrentTimeStamp());
        auditoria.setUsuario(BigInteger.valueOf(us.getCodigoUsuario()));
        auditoria.setDetalleAnterior(personaJuridica.toString());
        auditoriaServicio.create(auditoria);
        FacesContext.getCurrentInstance()
            .addMessage(
                null,
                new FacesMessage(FacesMessage.SEVERITY_INFO, "Se ha guardado la persona", null));
        RequestContext.getCurrentInstance().execute("PF('dlgPerJur').hide()");
      } else {
        personaJuridica.setFechaModificacion(new Date());
        personaJuridica.setUsuarioModificacion(BigInteger.valueOf(us.getCodigoUsuario()));
        Localidad localidad = new Localidad();
        localidad.setCodigoLocalidad(Long.valueOf("5"));
        personaJuridica.setCodigoLocalidad(null);
        CatalogoDetalle catalogoDetalle = new CatalogoDetalle();
        catalogoDetalle.setCodigoCatalogoDetalle(132L);
        personaJuridica.setClasePersona(catalogoDetalle);
        personaJuridicaServicio.actualizarPersonaJuridica(personaJuridica);
        Auditoria auditoria = new Auditoria();
        auditoria.setAccion("UPDATE");
        auditoria.setFecha(getCurrentTimeStamp());
        auditoria.setUsuario(BigInteger.valueOf(us.getCodigoUsuario()));
        auditoria.setDetalleAnterior(pj.toString());
        auditoria.setDetalleCambios(personaJuridica.toString());
        auditoriaServicio.create(auditoria);
        FacesContext.getCurrentInstance()
            .addMessage(
                null,
                new FacesMessage(FacesMessage.SEVERITY_INFO, "Se ha actualizado la persona", null));
        RequestContext.getCurrentInstance().execute("PF('dlgPerJur').hide()");
      }
    } catch (Exception ex) {
      FacesContext.getCurrentInstance()
          .addMessage(
              null,
              new FacesMessage(
                  FacesMessage.SEVERITY_ERROR, "No se pudo guardar la persona", ex.getMessage()));
      System.out.println("ex.getMessage()" + ex.getMessage());
      ex.printStackTrace();
    }
  }