public static DivergenciaKm Processar(Rota rota, IEnumerable <Infra.Ocorrencia> ocorrencias, IEnumerable <Deslocamento> deslocamentosAlmoco, IEnumerable <Deslocamento> deslocamentosAbastecimento, IEnumerable <Deslocamento> deslocamentosPernoite, ParadaTratadaAnalitico parada, decimal vlMetaAderencia) { List <bool> subIndicadoresDivergenciaKm = new List <bool>(); _divergenciaKm = new DivergenciaKm(); subIndicadoresDivergenciaKm.Add(AderenciaRaioKPI(rota.Entregas, vlMetaAderencia)); subIndicadoresDivergenciaKm.Add(InicioOuFimNoRaio(ocorrencias)); subIndicadoresDivergenciaKm.Add(MotoristaOuSistemaFinalizouRota(rota)); subIndicadoresDivergenciaKm.Add(DeslocamentosAlmocoPernoiteAbastecimento(rota, deslocamentosAlmoco, deslocamentosAbastecimento, deslocamentosPernoite)); subIndicadoresDivergenciaKm.Add(AvaliarSombraCelularOuCelularDesligado(ocorrencias.ToList())); subIndicadoresDivergenciaKm.Add(AvaliarPNPRota(parada)); _divergenciaKm.KMPrevisto = rota.VlDistanciaTotalPrevista; _divergenciaKm.KMRealizado = rota.VlDistanciaTotalRealizada; // Se todas os sub indicadores forem verdadeiros significa que houve divergência no Km bool houveDivergencia = subIndicadoresDivergenciaKm.Count(indicador => indicador) == subIndicadoresDivergenciaKm.Count; _divergenciaKm.HouveDivergencia = houveDivergencia; if (!houveDivergencia) { _divergenciaKm.SetExibirOcorrenciaNoXml(false); } return(_divergenciaKm); }
private static void DivergenciaKmOcorrenciaWS(Entities.Ocorrencia ocorrencia, DT_CUSTO_ADICIONAL_FRETE_HBSIS_RequestIntegracaoOcorrencia ocorrenciaWS) { DivergenciaKm divergenciaKM = (DivergenciaKm)ocorrencia; ocorrenciaWS.Codigo = divergenciaKM.Codigo; ocorrenciaWS.Nome = divergenciaKM.Nome; ocorrenciaWS.KMPrevisto = divergenciaKM.KMPrevisto.ToString("0.0000", System.Globalization.CultureInfo.InvariantCulture); ocorrenciaWS.KMRealizado = divergenciaKM.KMRealizado.ToString("0.0000", System.Globalization.CultureInfo.InvariantCulture); }