private void updateDataAssociacao(AssociadoAssembler associado) throws SmartEnvException {
    HistoricoAssociadoVO historico = historicoAssociadoRN.findUltimoNaoCancelado(associado);

    historico.setData(associado.getDataAssociacao());

    historicoAssociadoRN.updateDate(historico);
  }
  public AssociadoVO insert(AssociadoAssembler associado)
      throws SmartEnvException, SmartAppException {

    this.validateFields(associado);

    // inserir pessoa
    associado = (AssociadoAssembler) pessoaRN.insert(associado);

    AssociadoFiltroAssembler filtro = new AssociadoFiltroAssembler();
    filtro.setMatriculaJustica(associado.getMatriculaJustica());
    Collection<AssociadoVO> associados = associadoDAO.findByFilter(filtro);
    if (associados != null && associados.size() > 0) {
      throw new SmartAppException(
          "Já existe um associado com o mesmo número de matricula cadastrado no sistema.");
    }

    // inserir associado
    associado = (AssociadoAssembler) associadoDAO.insert(associado);

    // inserir histórico
    HistoricoAssociadoVO historicoAssociadoVO = new HistoricoAssociadoVO();
    historicoAssociadoVO.setTipoEvento(new TipoEventoVO());
    historicoAssociadoVO
        .getTipoEvento()
        .setCodigo(
            new Short(
                parametroRN
                    .findByPrimaryKey(new ParametroVO("TP_EVT_CADASTRO"))
                    .getValorTextual()));
    historicoAssociadoVO.setData(associado.getDataAssociacao());
    historicoAssociadoVO.setAssociado(associado);

    historicoAssociadoRN.insert(historicoAssociadoVO);

    // inserir filhos
    insertFilhos(associado);

    // inserir dependentes
    insertDependentes(associado);

    // inserir conjuge
    insertConjuge(associado);

    // retornar
    return associado;
  }