class SceItemRmsRN extends BaseBusiness {

	public void validarSceItemRmsMaterialTipoDespesaCentroCusto(SceItemRms sceItemRms) throws BaseException{

		// Pesquisa SceItemRms relacionada a um centro de custo
		final SceItemRms sceItemRmsCentroCusto = this.getSceItemRmsDAO().buscarSceItemRmsPorMaterialCompativelTipoDespesaCentroCusto(sceItemRms);	

		if(sceItemRmsCentroCusto != null){

			final DominioTipoDespesa indTipoDespesa = sceItemRmsCentroCusto.getSceReqMateriais().getCentroCusto().getIndTipoDespesa();

			// Verifica se o tipo de despesa é serviço. Centro de Custo de Serviço não aceita  requisição de material
			if(DominioTipoDespesa.S.equals(indTipoDespesa)){
				throw new ApplicationBusinessException(SceItemRmsRNExceptionCode.SCO_00756);
			}

			if(sceItemRmsCentroCusto.getSceReqMateriais()!=null && sceItemRmsCentroCusto.getSceReqMateriais().getGrupoMaterial()!=null){ //ScoGrupoMaterial pode ser null
				final Boolean indEngenharia = sceItemRmsCentroCusto.getSceReqMateriais().getGrupoMaterial().getEngenhari();

				// Verifica se o tipo de despesa é obra e se o material do grupo difere do tipo engenharia
				if(DominioTipoDespesa.O.equals(indTipoDespesa) && !indEngenharia){
					throw new ApplicationBusinessException(SceItemRmsRNExceptionCode.SCO_00755);
				}

			}

		} else{
			throw new ApplicationBusinessException(SceItemRmsRNExceptionCode.CENTRO_DE_CUSTO_NAO_ENCONTRADO);
		}

	}

}