public void adicionar() {
    if (!validaAdicionar()) {
      return;
    }

    Dao dao = new Dao();

    dao.openTransaction();

    declaracaoGrupo = new DeclaracaoGrupo();
    declaracaoGrupo.setDeclaracaoTipo(
        (DeclaracaoTipo)
            dao.find(
                new DeclaracaoTipo(),
                Integer.valueOf(listaDeclaracaoTipo.get(indexDeclaracaoTipo).getDescription())));
    declaracaoGrupo.setSubGrupoConvenio(
        (SubGrupoConvenio)
            dao.find(
                new SubGrupoConvenio(),
                Integer.valueOf(listaSubGrupo.get(indexSubGrupo).getDescription())));

    if (!dao.save(declaracaoGrupo)) {
      dao.rollback();
      GenericaMensagem.error("Atenção", "Erro ao Adicionar Grupo Declaração!");
      return;
    }

    dao.commit();

    declaracaoGrupo = new DeclaracaoGrupo();
    loadListaDeclaracaoGrupo();

    GenericaMensagem.info("Sucesso", "Grupo Declaração adicionada!");
  }
  public void excluir() {
    Dao dao = new Dao();

    dao.openTransaction();

    if (!dao.delete(declaracaoGrupo)) {
      dao.rollback();
      GenericaMensagem.error("Atenção", "Não foi possível excluir Declaração Grupo!");
      return;
    }

    dao.commit();
    loadListaDeclaracaoGrupo();
    GenericaMensagem.info("Sucesso", "Declaração Grupo excluída!");
  }
  public List<SelectItem> getListaTipoServico() {
    if (listaTipoServico.isEmpty()) {
      TipoServicoDB db = new TipoServicoDBToplink();
      List<TipoServico> select = db.pesquisaTodosPeloContaCobranca();

      if (select.isEmpty()) {
        GenericaMensagem.error("Atenção", "Serviço Conta Cobrança não encontrado!");
        return listaTipoServico;
      }

      for (int i = 0; i < select.size(); i++) {
        listaTipoServico.add(
            new SelectItem(
                i, select.get(i).getDescricao(), Integer.toString(select.get(i).getId())));
      }
    }
    return listaTipoServico;
  }
  public void voltarBoletos() {
    if (listaMovimentoBoleto.isEmpty()) {
      GenericaMensagem.warn("Atenção", "Lista de Movimentos vazia!");
      return;
    }

    for (LinhaBoleto lb : listaMovimentoBoleto) {
      if (!lb.getQuitacao().isEmpty()) {
        GenericaMensagem.warn("Atenção", "Existem Movimentos Baixados!");
        return;
      }
    }

    Dao dao = new Dao();

    // PEGA O PRIMEIRO BOLETO POIS SERÃO TODOS IGUAIS E NÃO TEM NECESSIDADE DE COLOCAR NO LOPPING
    Boleto b = (Boleto) dao.find(new Boleto(), listaMovimentoBoleto.get(0).getId_boleto());

    dao.openTransaction();
    for (LinhaBoleto lb : listaMovimentoBoleto) {
      Movimento m = (Movimento) dao.find(new Movimento(), lb.getId_movimento());

      m.setDocumento(b.getBoletoComposto());
      m.setNrCtrBoleto(b.getNrCtrBoleto());

      if (!dao.update(m)) {
        GenericaMensagem.error("Erro", "Não foi possível atualizar Boleto!");
        dao.rollback();
        return;
      }
    }

    dao.commit();
    GenericaMensagem.info("Sucesso", "Movimentos atualizados!");
    loadList();
  }
  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();
      }
    }
  }