class RecebeMaterialServicoON extends BaseBusiness {

 	private void criticarValorNotaFiscal(List<RecebimentoMaterialServicoVO> listaItemAF, SceDocumentoFiscalEntrada documentoFiscalEntrada, ScoFornecedor fornecedor) throws ApplicationBusinessException{
 		if (documentoFiscalEntrada != null){
 			
 			if (documentoFiscalEntrada.getValorTotalNf() == null || documentoFiscalEntrada.getValorTotalNf() == 0){
 				throw new ApplicationBusinessException(RecebimentoItemAFONExceptionCode.MENSAGEM_CRITICA_NF_SEM_VALOR);	
 			}

 			AghParametros parametro = getParametroFacade().buscarAghParametro(AghuParametrosEnum.P_CRITICA_VLR_NF);		
 			
			if (parametro != null){				
				String parametroCriticaValoNotaFiscal = parametro.getVlrTexto();
				if (parametroCriticaValoNotaFiscal.equalsIgnoreCase("R") || parametroCriticaValoNotaFiscal.equalsIgnoreCase("NF")){

					Double valorJaRecebido = getEstoqueFacade().obterValorTotalItemNotaFiscal(documentoFiscalEntrada.getSeq());					
					if (valorJaRecebido == null){
						valorJaRecebido = Double.valueOf(0);				 											
					}
					
					BigDecimal valorEntrega = BigDecimal.ZERO;
					for (RecebimentoMaterialServicoVO itemAF : listaItemAF){
						if (itemAF.getTipoSolicitacao().equals(DominioTipoFaseSolicitacao.C) && itemAF.getQtdEntregue() != null && itemAF.getQtdEntregue() > 0){
							valorEntrega = valorEntrega.add(itemAF.getValorTotal());
						}
						
						if ((itemAF.getTipoSolicitacao().equals(DominioTipoFaseSolicitacao.S) && itemAF.getValorEntregue() != null && itemAF.getValorEntregue().compareTo(BigDecimal.ZERO) > 0)){
							valorEntrega = valorEntrega.add(itemAF.getValorEntregue());
						}
					}	

					Double valorTotal = valorJaRecebido + valorEntrega.doubleValue();
					if (valorTotal > documentoFiscalEntrada.getValorTotalNf()){
						Double diferenca = valorTotal - documentoFiscalEntrada.getValorTotalNf();
	 					throw new ApplicationBusinessException(
	 							RecebimentoItemAFONExceptionCode.MENSAGEM_CRITICA_SOMA_RECEBIMENTOS, valorTotal, diferenca, documentoFiscalEntrada.getValorTotalNf());				 											
					}
			    }				
			}
			
            

            // Verificação da relação entre o fornecedor da AF e o emissor da nota fiscal
            // Somente pode ser aceito o recebimento com fornedor da AF diferente do emissor da nota fiscal se estes possuirem a mesma raiz de CNPJ
            String cnpjRaizFornecedor, cnpjRaizNF;           
            cnpjRaizFornecedor = fornecedor.getCnpjCpf().toString().substring(0, 7); 			                     
            cnpjRaizNF = documentoFiscalEntrada.getFornecedor().getCnpjCpf().toString().substring(0, 7);

            if (!documentoFiscalEntrada.getFornecedor().equals(fornecedor) && !cnpjRaizFornecedor.equals(cnpjRaizNF)){
                    throw new ApplicationBusinessException(RecebimentoItemAFONExceptionCode.MENSAGEM_CRITICA_FORNECEDOR_DIF_NF);

            }                        
			
 			
 		} 		
 	}

}