Ejemplo n.º 1
0
        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);
        }