/**
   * Método do 1º step-method
   *
   * @param comp
   * @param prest
   * @throws ValidateException
   */
  public AbstractFaturamento informarDados(String comp, Prestador prest, Integer tipoFaturamento)
      throws ValidateException {

    SearchAgent sa = new SearchAgent();
    sa.addParameter(new Equals("competencia", Utils.gerarCompetencia(comp)));
    List<AbstractFaturamento> faturamentos = sa.list(getKlass(tipoFaturamento));

    if (faturamentos.isEmpty()) {
      throw new ValidateException("O faturamento desta competência ainda não foi processado");
    }

    sa.addParameter(new Equals("status", Constantes.FATURAMENTO_ABERTO));
    faturamentos = sa.list(Faturamento.class);
    if (faturamentos.isEmpty()) {
      throw new ValidateException("O faturamento desta competência não está na situação Aberto");
    }

    AbstractFaturamento faturamento = null;
    if (tipoFaturamento == FATURAMENTO_NORMAL)
      faturamento = prest.getFaturamento(Utils.gerarCompetencia(comp));
    if (tipoFaturamento == FATURAMENTO_PASSIVO)
      faturamento = prest.getFaturamentoPassivo(Utils.gerarCompetencia(comp));

    boolean isPrestadorTemFaturamento = faturamento == null ? false : true;
    if (isPrestadorTemFaturamento) {
      if (faturamento.getStatus() == Constantes.FATURAMENTO_FECHADO) {
        throw new ValidateException(
            "O faturamento do Prestador desta competência não está na situação Aberto");
      }
    }

    competencia = comp;
    prestador = prest;
    tipo = tipoFaturamento;

    return faturamento;
  }