// MÉTODO EM DESUSO APAGAR DEPOIS DE 30/04/2016
  public void reImprimirCarteirinha() {
    Dao dao = new Dao();

    if (!listaSelecionado.isEmpty()) {
      CategoriaDao dbCat = new CategoriaDao();
      DataHoje dh = new DataHoje();
      SociosDao dbs = new SociosDao();

      dao.openTransaction();

      for (int i = 0; i < listaSelecionado.size(); i++) {
        Pessoa pessoa =
            (Pessoa) dao.find(new Pessoa(), (Integer) ((List) listaSelecionado.get(i)).get(0));
        Socios socios = dbs.pesquisaSocioPorPessoa(pessoa.getId());
        SocioCarteirinha carteirinha =
            (SocioCarteirinha)
                dao.find(
                    new SocioCarteirinha(), (Integer) ((List) listaSelecionado.get(i)).get(19));
        ValidadeCartao validadeCartao =
            new ValidadeCartaoDao()
                .findByCategoriaParentesco(
                    socios.getMatriculaSocios().getCategoria().getId(),
                    socios.getParentesco().getId());
        if (validadeCartao == null) {
          GenericaMensagem.warn("Validação", "Nenhuma validade de cartão encontrada!");
          dao.rollback();
          return;
        }
        if (socios.getId() != -1 && socios.getMatriculaSocios().getId() != -1) {
          GrupoCategoria gpCat =
              dbCat.pesquisaGrupoPorCategoria(
                  Integer.valueOf(socios.getMatriculaSocios().getCategoria().getId()));
          Date validadeCarteirinha;
          if (validadeCartao.getDtValidadeFixa() == null) {
            validadeCarteirinha =
                DataHoje.converte(
                    dh.incrementarMeses(validadeCartao.getNrValidadeMeses(), DataHoje.data()));
          } else {
            validadeCarteirinha = validadeCartao.getDtValidadeFixa();
          }
          carteirinha.setDtValidadeCarteirinha(validadeCarteirinha);
        } else {
          carteirinha.setDtValidadeCarteirinha(null);
        }

        carteirinha.setVia(carteirinha.getVia() + 1);
        listaSelecionado.get(i).set(6, carteirinha.getValidadeCarteirinha());

        if (carteirinha.getDtEmissao() == null) {
          carteirinha.setEmissao(DataHoje.data());

          if (!dao.update(carteirinha)) {
            dao.rollback();
            GenericaMensagem.warn("Erro", "AO ATUALIZAR CARTEIRINHA!");
            return;
          }

          HistoricoCarteirinha hc = new HistoricoCarteirinha();

          hc.setCarteirinha(carteirinha);
          hc.setDescricao("Primeira ReImpressão de Carteirinha 2º Via");

          if (listaSelecionado.get(i).get(17) != null) {
            Movimento m =
                (Movimento)
                    dao.find(
                        new Movimento(),
                        Integer.valueOf(listaSelecionado.get(i).get(17).toString()));
            if (m != null) {
              hc.setMovimento(m);
            }
          }

          if (!dao.save(hc)) {
            dao.rollback();
            return;
          }
        } else {
          HistoricoCarteirinha hc = new HistoricoCarteirinha();

          carteirinha.setVia(carteirinha.getVia() + 1);

          if (!dao.update(carteirinha)) {
            dao.rollback();
            GenericaMensagem.warn("Erro", "AO ATUALIZAR CARTEIRINHA!");
            return;
          }

          hc.setCarteirinha(carteirinha);
          hc.setDescricao("ReImpressão de Carteirinha 2º Via");

          if (listaSelecionado.get(i).get(17) != null) {
            Movimento m =
                (Movimento)
                    dao.find(
                        new Movimento(),
                        Integer.valueOf(listaSelecionado.get(i).get(17).toString()));
            if (m != null) {
              hc.setMovimento(m);
            }
          }

          if (!dao.save(hc)) {
            dao.rollback();
            GenericaMensagem.warn("Erro", "AO ATUALIZAR HISTÓRICO DA CARTEIRINHA!");
            return;
          }
        }
      }

      if (ImpressaoParaSocios.imprimirCarteirinha(listaSelecionado)) {
        dao.commit();
      } else {
        dao.rollback();
        GenericaMensagem.warn("Erro", "AO ATUALIZAR CARTEIRINHA!");
      }
    }
  }
  public void imprimirCarteirinhaComDependente() {
    Fisica fisica = new Fisica();
    Juridica sindicato = new Juridica();
    FisicaDao db = new FisicaDao();
    PessoaEndereco pesEndereco,
        pesDestinatario,
        pesEndEmpresa,
        pesEndSindicato = new PessoaEndereco();
    PessoaEnderecoDao dbEnd = new PessoaEnderecoDao();
    PessoaEmpresa pesEmpresa = new PessoaEmpresa();
    PessoaEmpresaDao dbEmp = new PessoaEmpresaDao();
    SociosDao dbSoc = new SociosDao();
    String dados[] = new String[34];
    try {
      FacesContext faces = FacesContext.getCurrentInstance();
      HttpServletResponse response = (HttpServletResponse) faces.getExternalContext().getResponse();
      Collection listaSocios = new ArrayList();

      File fl =
          new File(
              ((ServletContext) faces.getExternalContext().getContext())
                  .getRealPath(
                      "/Cliente/"
                          + ControleUsuarioBean.getCliente()
                          + "/Relatorios/FICHACADASTRO.jasper"));
      JasperReport jasper = (JasperReport) JRLoader.loadObject(fl);

      sindicato = (Juridica) new Dao().find(new Juridica(), 1);
      pesEndSindicato = dbEnd.pesquisaEndPorPessoaTipo(sindicato.getPessoa().getId(), 2);

      for (int i = 0; i < listaSoc.size(); i++) {
        if ((Boolean) ((DataObject) listaSoc.get(i)).getArgumento0()) {
          fisica =
              db.pesquisaFisicaPorPessoa(
                  ((Socios) ((DataObject) listaSoc.get(i)).getArgumento1())
                      .getServicoPessoa()
                      .getPessoa()
                      .getId());
          pesEndereco = dbEnd.pesquisaEndPorPessoaTipo(fisica.getPessoa().getId(), 1);
          pesEmpresa = dbEmp.pesquisaPessoaEmpresaPorFisica(fisica.getId());
          if (pesEmpresa.getId() != -1) {
            pesEndEmpresa =
                dbEnd.pesquisaEndPorPessoaTipo(pesEmpresa.getJuridica().getPessoa().getId(), 2);
          } else {
            pesEndEmpresa = new PessoaEndereco();
          }

          pesDestinatario = dbEnd.pesquisaEndPorPessoaTipo(fisica.getPessoa().getId(), 1);

          try {
            dados[0] = pesEndereco.getEndereco().getLogradouro().getDescricao();
            dados[1] = pesEndereco.getEndereco().getDescricaoEndereco().getDescricao();
            dados[2] = pesEndereco.getNumero();
            dados[3] = pesEndereco.getComplemento();
            dados[4] = pesEndereco.getEndereco().getBairro().getDescricao();
            dados[5] = pesEndereco.getEndereco().getCidade().getCidade();
            dados[6] = pesEndereco.getEndereco().getCidade().getUf();
            dados[7] = pesEndereco.getEndereco().getCep();
          } catch (Exception e) {
            dados[0] = "";
            dados[1] = "";
            dados[2] = "";
            dados[3] = "";
            dados[4] = "";
            dados[5] = "";
            dados[6] = "";
            dados[7] = "";
          }
          try {
            dados[8] = pesDestinatario.getEndereco().getLogradouro().getDescricao();
            dados[9] = pesDestinatario.getEndereco().getDescricaoEndereco().getDescricao();
            dados[10] = pesDestinatario.getNumero();
            dados[11] = pesDestinatario.getComplemento();
            dados[12] = pesDestinatario.getEndereco().getBairro().getDescricao();
            dados[13] = pesDestinatario.getEndereco().getCidade().getCidade();
            dados[14] = pesDestinatario.getEndereco().getCidade().getUf();
            dados[15] = pesDestinatario.getEndereco().getCep();
            dados[26] = pesDestinatario.getPessoa().getDocumento();
            dados[27] = pesDestinatario.getPessoa().getNome();
          } catch (Exception e) {
            dados[8] = "";
            dados[9] = "";
            dados[10] = "";
            dados[11] = "";
            dados[12] = "";
            dados[13] = "";
            dados[14] = "";
            dados[15] = "";
            dados[26] = "";
            dados[27] = "";
          }
          try {
            dados[16] = pesEmpresa.getJuridica().getPessoa().getNome();
            dados[17] = pesEmpresa.getJuridica().getPessoa().getTelefone1();
            dados[18] = pesEmpresa.getFuncao().getProfissao();
            dados[19] = pesEndEmpresa.getEndereco().getDescricaoEndereco().getDescricao();
            dados[20] = pesEndEmpresa.getNumero();
            dados[21] = pesEndEmpresa.getComplemento();
            dados[22] = pesEndEmpresa.getEndereco().getBairro().getDescricao();
            dados[23] = pesEndEmpresa.getEndereco().getCidade().getCidade();
            dados[24] = pesEndEmpresa.getEndereco().getCidade().getUf();
            dados[25] = pesEndEmpresa.getEndereco().getCep();
            dados[28] = pesEmpresa.getAdmissao();
            dados[29] = pesEmpresa.getJuridica().getPessoa().getDocumento();
            dados[30] = pesEmpresa.getJuridica().getFantasia();
            dados[31] = pesEndEmpresa.getEndereco().getLogradouro().getDescricao();
            dados[32] = pesEmpresa.getCodigo();
          } catch (Exception e) {
            dados[16] = "";
            dados[17] = "";
            dados[18] = "";
            dados[19] = "";
            dados[20] = "";
            dados[21] = "";
            dados[22] = "";
            dados[23] = "";
            dados[24] = "";
            dados[25] = "";
            dados[28] = "";
            dados[29] = "";
            dados[30] = "";
            dados[31] = "";
            dados[32] = "";
          }

          try {
            listaSocios.add(
                new FichaSocial(
                    0,
                    ((Socios) ((DataObject) listaSoc.get(i)).getArgumento1()).getId(),
                    ((Socios) ((DataObject) listaSoc.get(i)).getArgumento1())
                        .getMatriculaSocios()
                        .getNrMatricula(),
                    ((Socios) ((DataObject) listaSoc.get(i)).getArgumento1())
                        .getServicoPessoa()
                        .getEmissao(),
                    null,
                    ((Socios) ((DataObject) listaSoc.get(i)).getArgumento1())
                        .getMatriculaSocios()
                        .getCategoria()
                        .getGrupoCategoria()
                        .getGrupoCategoria(),
                    ((Socios) ((DataObject) listaSoc.get(i)).getArgumento1())
                        .getMatriculaSocios()
                        .getCategoria()
                        .getCategoria(),
                    fisica.getPessoa().getNome(),
                    fisica.getSexo(),
                    fisica.getNascimento(),
                    fisica.getNaturalidade(),
                    fisica.getNacionalidade(),
                    fisica.getRg(),
                    fisica.getPessoa().getDocumento(),
                    fisica.getCarteira(),
                    fisica.getSerie(),
                    fisica.getEstadoCivil(),
                    fisica.getPai(),
                    fisica.getMae(),
                    fisica.getPessoa().getTelefone1(),
                    fisica.getPessoa().getTelefone3(),
                    fisica.getPessoa().getEmail1(),
                    dados[0],
                    dados[1],
                    dados[2],
                    dados[3],
                    dados[4],
                    dados[5],
                    dados[6],
                    dados[7],
                    false,
                    dados[26],
                    dados[27],
                    dados[8],
                    dados[9],
                    dados[10],
                    dados[11],
                    dados[12],
                    dados[13],
                    dados[14],
                    dados[15],
                    dados[16],
                    dados[17],
                    null, // fax
                    dados[28],
                    dados[18],
                    dados[19],
                    dados[20],
                    dados[21],
                    dados[22],
                    dados[23],
                    dados[24],
                    dados[25],
                    ((ServletContext) faces.getExternalContext().getContext())
                        .getRealPath("/Imagens/LogoCliente.png"),
                    "", // obs
                    ((Socios) ((DataObject) listaSoc.get(i)).getArgumento1())
                        .getParentesco()
                        .getParentesco(),
                    sindicato.getPessoa().getNome(),
                    pesEndSindicato.getEndereco().getDescricaoEndereco().getDescricao(),
                    pesEndSindicato.getNumero(),
                    pesEndSindicato.getComplemento(),
                    pesEndSindicato.getEndereco().getBairro().getDescricao(),
                    pesEndSindicato.getEndereco().getCidade().getCidade(),
                    pesEndSindicato.getEndereco().getCidade().getUf(),
                    pesEndSindicato.getEndereco().getCep(),
                    sindicato.getPessoa().getDocumento(),
                    "",
                    ((ServletContext) faces.getExternalContext().getContext())
                        .getRealPath("/Imagens/LogoCliente.png"),
                    getFotoSocio(((Socios) ((DataObject) listaSoc.get(i)).getArgumento1())),
                    sindicato.getPessoa().getEmail1(),
                    sindicato.getPessoa().getSite(),
                    sindicato.getPessoa().getTelefone1(),
                    ((ServletContext) faces.getExternalContext().getContext())
                        .getRealPath(
                            "/Cliente/"
                                + ControleUsuarioBean.getCliente()
                                + "/Relatorios/FICHACADASTRO.jasper"),
                    dados[29],
                    fisica.getPessoa().getRecadastroString(),
                    dados[30],
                    pesEndSindicato.getEndereco().getLogradouro().getDescricao(),
                    dados[31],
                    "",
                    dados[32],
                    fisica.getPis()));

            // List<Socios> deps = dbSoc.pesquisaDependentesOrdenado(fisica.getPessoa().getId());
            List<Socios> deps =
                dbSoc.pesquisaDependentesOrdenado(0); // ID DA MATRICULA NAO DA PESSOA
            for (int n = 0; n < deps.size(); n++) {
              listaSocios.add(
                  new FichaSocial(
                      0,
                      deps.get(n).getId(),
                      ((Socios) ((DataObject) listaSoc.get(i)).getArgumento1())
                          .getMatriculaSocios()
                          .getNrMatricula(),
                      null,
                      null,
                      "",
                      ((Socios) ((DataObject) listaSoc.get(i)).getArgumento1())
                          .getMatriculaSocios()
                          .getCategoria()
                          .getCategoria(),
                      deps.get(n).getServicoPessoa().getPessoa().getNome(),
                      db.pesquisaFisicaPorPessoa(deps.get(n).getServicoPessoa().getPessoa().getId())
                          .getSexo(),
                      db.pesquisaFisicaPorPessoa(deps.get(n).getServicoPessoa().getPessoa().getId())
                          .getNascimento(),
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      false,
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      null,
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      ((ServletContext) faces.getExternalContext().getContext())
                          .getRealPath("/Imagens/LogoCliente.png"),
                      "",
                      deps.get(n).getParentesco().getParentesco(),
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      "",
                      ((ServletContext) faces.getExternalContext().getContext())
                          .getRealPath("/Imagens/LogoCliente.png"),
                      ((ServletContext) faces.getExternalContext().getContext())
                          .getRealPath("/Imagens/Fotos/semFoto.jpg"),
                      "",
                      "",
                      "",
                      ((ServletContext) faces.getExternalContext().getContext())
                          .getRealPath(
                              "/Cliente/"
                                  + ControleUsuarioBean.getCliente()
                                  + "/Relatorios/FICHACADASTRO.jasper"),
                      "",
                      null,
                      "",
                      "",
                      "",
                      "",
                      "",
                      ""));
            }
          } catch (Exception erro) {
            System.err.println("O arquivo não foi gerado corretamente! Erro: " + erro.getMessage());
            continue;
          }
        }
      }
      JRBeanCollectionDataSource dtSource = new JRBeanCollectionDataSource(listaSocios);
      JasperPrint print = JasperFillManager.fillReport(jasper, null, dtSource);
      byte[] arquivo = JasperExportManager.exportReportToPdf(print);
      response.setContentType("application/pdf");
      response.setContentLength(arquivo.length);
      ServletOutputStream saida = response.getOutputStream();
      saida.write(arquivo, 0, arquivo.length);
      saida.flush();
      saida.close();

      FacesContext.getCurrentInstance().responseComplete();
      Download download =
          new Download(
              "Ficha Social " + fisica.getPessoa().getId() + ".pdf",
              ((ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext())
                  .getRealPath("/socios.jsf"),
              "application/pdf",
              FacesContext.getCurrentInstance());
      download.baixar();
    } catch (Exception erro) {
      System.err.println("O arquivo não foi gerado corretamente! Erro: " + erro.getMessage());
    }
  }
  public void print(List vector) {
    printed = false;
    Dao dao = new Dao();
    List<List> list = new ArrayList();
    if (!listaSelecionado.isEmpty() && vector == null) {
      list = listaSelecionado;
    } else if (vector != null) {
      list.add(vector);
    }
    String printLog = "";
    NovoLog novoLog = new NovoLog();
    novoLog.startList();
    if (!list.isEmpty()) {
      dao.openTransaction();
      SocioCarteirinhaDao dbc = new SocioCarteirinhaDao();
      DataHoje dh = new DataHoje();
      SociosDao dbs = new SociosDao();
      for (int i = 0; i < list.size(); i++) {
        Integer nrValidadeMeses = 0;
        Integer titular_id = (Integer) ((List) list.get(i)).get(40);
        Pessoa pessoa = (Pessoa) dao.find(new Pessoa(), (Integer) ((List) list.get(i)).get(0));
        Socios socios = dbs.pesquisaSocioPorPessoa(pessoa.getId());
        ValidadeCartao validadeCartao = new ValidadeCartao();
        SocioCarteirinha carteirinha =
            (SocioCarteirinha)
                dao.find(new SocioCarteirinha(), (Integer) ((List) list.get(i)).get(19));
        if (socios.getId() != -1) {
          validadeCartao =
              new ValidadeCartaoDao()
                  .findByCategoriaParentesco(
                      socios.getMatriculaSocios().getCategoria().getId(),
                      socios.getParentesco().getId());
          if (validadeCartao == null) {
            GenericaMensagem.warn("Validação", "Nenhuma validade de cartão encontrada!");
            dao.rollback();
            return;
          }
          nrValidadeMeses = validadeCartao.getNrValidadeMeses();
        } else {
          nrValidadeMeses = configuracaoSocial.getValidadeMesesCartaoAcademia();
        }
        if (socios.getId() != -1 && socios.getMatriculaSocios().getId() != -1) {
          Date validadeCarteirinha;
          if (validadeCartao.getDtValidadeFixa() == null) {
            validadeCarteirinha =
                DataHoje.converte(dh.incrementarMeses(nrValidadeMeses, DataHoje.data()));
          } else {
            validadeCarteirinha = validadeCartao.getDtValidadeFixa();
          }
          carteirinha.setDtValidadeCarteirinha(validadeCarteirinha);
        } else {
          carteirinha.setDtValidadeCarteirinha(
              DataHoje.converte(dh.incrementarMeses(nrValidadeMeses, DataHoje.data())));
        }
        boolean validacao = false;
        if (pessoa.getSocios().getId() != -1) {
          Fisica f = new FisicaDao().pesquisaFisicaPorPessoa(pessoa.getId());
          if (pessoa.getSocios().getMatriculaSocios().getCategoria().isEmpresaObrigatoria()
              && f.getDtAposentadoria() == null
              && titular_id == pessoa.getId()) {
            PessoaEmpresaDao db = new PessoaEmpresaDao();
            PessoaEmpresa pe = db.pesquisaPessoaEmpresaPorPessoa(pessoa.getId());
            // PessoaEmpresa pe = db.pesquisaPessoaEmpresaPorPessoa(titular_id);
            if (pe.getId() == -1) {
              GenericaMensagem.error(
                  "Atenção", "Empresa Não Vinculada a pessoa " + pessoa.getNome());
              validacao = true;
              listaSelecionado = new ArrayList();
            }
          }
          listaSelecionado.remove(vector);
        }

        if (validacao) {
          dao.rollback();
          return;
        }

        String descricao_historico = "Impressão de Carteirinha";
        if (configuracaoSocial.getAtualizaViaCarteirinha()) {
          carteirinha.setVia(carteirinha.getVia() + 1);
          descricao_historico = "Impressão de " + carteirinha.getVia() + "° via do cartão";
          list.get(i).set(11, carteirinha.getVia());
        }

        carteirinha.setEmissao(DataHoje.data());
        if (!dao.update(carteirinha)) {
          dao.rollback();
          return;
        }

        list.get(i).set(6, carteirinha.getValidadeCarteirinha());
        HistoricoCarteirinha hc = new HistoricoCarteirinha();

        hc.setCarteirinha(carteirinha);
        hc.setDescricao(descricao_historico);

        if (list.get(i).get(17) != null) {
          Movimento m =
              (Movimento)
                  dao.find(new Movimento(), Integer.valueOf(list.get(i).get(17).toString()));
          if (m != null) {
            hc.setMovimento(m);
          }
        }

        if (!dao.save(hc)) {
          dao.rollback();
          return;
        }

        // AutorizaImpressaoCartao ai = dbc.pesquisaAutorizaSemHistorico(pessoa.getId(),
        // modeloc.getId());
        AutorizaImpressaoCartao ai =
            dbc.pesquisaAutorizaSemHistorico(
                pessoa.getId(), carteirinha.getModeloCarteirinha().getId());

        if (ai != null) {
          ai.setHistoricoCarteirinha(hc);
          if (!dao.update(ai)) {
            dao.rollback();
            return;
          }
        }
        printLog =
            "ID"
                + hc.getId()
                + " - Pessoa {ID: "
                + pessoa.getId()
                + " - Nome: "
                + pessoa.getNome()
                + " }"
                + " - Impresso por {ID: "
                + hc.getCarteirinha().getModeloCarteirinha().getId()
                + " - Nome: "
                + hc.getCarteirinha().getModeloCarteirinha().getDescricao()
                + " }";
        novoLog.setTabela("soc_historico_carteirinha");
        novoLog.setCodigo(hc.getId());
      }

      if (ImpressaoParaSocios.imprimirCarteirinha(list)) {
        dao.commit();
        if (status.equals("nao_impressos")) {
          printed = false;
        }
        if (disabledImpressaoExterna) {
          disabledImpressaoExterna = false;
          GenericaSessao.put("status", "hoje");
        }
        listaCarteirinha = new ArrayList();
        listaSelecionado = new ArrayList();
        listaSelecionadoMemoria = new ArrayList();
        novoLog.print(printLog);
        novoLog.saveList();
      } else {
        novoLog.cancelList();
        dao.rollback();
      }
    }
  }