class AgendaProcedimentosON extends BaseBusiness {

	public void preCommit(CirurgiaTelaVO vo) throws BaseException {
		AelProjetoPesquisas projetoPesquisa = vo.getCirurgia().getProjetoPesquisa();

		if (projetoPesquisa != null) {
			Boolean valorIndVoucherEletronico = projetoPesquisa.getVoucherEletronico();

			Date dtInicio = DateUtil.truncaData(projetoPesquisa.getDtInicio());
			Date dataAtual = DateUtil.truncaData(new Date());
			Date dtFim = (Date) CoreUtil.nvl(DateUtil.truncaData(projetoPesquisa.getDtFim()), dataAtual);

			// O CURSOR C_PROJ foi migrado neste trecho
			Boolean isIntervaloDataAtual = DateUtil.entre(dataAtual, dtInicio, dtFim);

			if (isIntervaloDataAtual && Boolean.FALSE.equals(valorIndVoucherEletronico)) {
				// Esse projeto não está liberado para uso eletrônico. Entrar em contato com o GPPG.
				throw new ApplicationBusinessException(AgendaProcedimentosONExceptionCode.MBC_01380);
			}

			Integer eprPciSeq = vo.obterProcedimentoPrincipal().getId().getEprPciSeq();
			MbcProcedimentoCirurgicos procedimentoCirurgicos = this.getMbcProcedimentoCirurgicoDAO().obterPorChavePrimaria(eprPciSeq);
			AelProjetoProcedimento valorExiste = this.getExamesFacade().obterProjetoProcedimentoAtivoPorId(projetoPesquisa.getSeq(), procedimentoCirurgicos.getSeq());

			if (valorExiste == null) {

				throw new ApplicationBusinessException(AgendaProcedimentosONExceptionCode.MBC_01376, eprPciSeq);
			}
		}

		if (vo.getCirurgia().getPaciente() != null && vo.getCirurgia().getProjetoPesquisa() != null) {
			AelProjetoPacientes valorPacienteCad = this.getExamesFacade().obterProjetoPacienteCadastradoDataProjetoPesquisa(vo.getCirurgia().getPaciente().getCodigo(),
					projetoPesquisa.getSeq());

			if (valorPacienteCad == null) {
				// O Paciente não está cadastrado para esse projeto de pesquisa!
				throw new ApplicationBusinessException(AgendaProcedimentosONExceptionCode.MBC_01378);
			}
		}

	}

}