private AuditarVentaEL EjecutarPronostico(int idfranquicia, int idlocal, int idperiodo) { var lstventas = new VentaBL().GetVentasxLocal(idlocal, idperiodo); var lstventashistorico = new VentaBL().GetVentasHistorico(idlocal, idperiodo);; var valorObjetivo = db.tb_franquicia.Where(x => x.Id == idfranquicia).FirstOrDefault().QuotaObjetivo; List <float> pronosticomensual = new List <float>(); List <string> colorbarra = new List <string>(); float MAD = 0; float errAcumulado = 0; float pronosticoanual = 0; float promediomensualPronosticado = 0; float prono = 0; int j = 0; for (int i = 0; i < lstventashistorico.Count(); i = i + 3) { float dosanioatras = (lstventashistorico[i].Monto + lstventashistorico[i + 1].Monto) / 2; float unanioatras = (lstventashistorico[i + 1].Monto + lstventashistorico[i + 2].Monto) / 2; //si hay un valor de venta ya declarado, debe ser considerado como pronostico if (j < lstventas.Count) { prono = lstventas[j].Monto; colorbarra.Add("#305dea"); //cOLOR j++; } else { prono = (dosanioatras + unanioatras) / 2; colorbarra.Add("#abebc6"); j++; } float errPrdos = Math.Abs(lstventashistorico[i + 1].Monto - dosanioatras); float errPruno = Math.Abs(lstventashistorico[i + 2].Monto - unanioatras); pronosticomensual.Add(prono); pronosticoanual = pronosticoanual + prono; errAcumulado = errAcumulado + errPrdos + errPruno; } MAD = errAcumulado / 24; promediomensualPronosticado = pronosticoanual / 12; AuditarVentaEL data = new AuditarVentaEL(); List <Grafico> lista = new List <Grafico>(); Grafico g1 = new Grafico() { label = "Ene", value = pronosticomensual[0].ToString(), color = colorbarra[0] }; lista.Add(g1); Grafico g2 = new Grafico() { label = "Feb", value = pronosticomensual[1].ToString(), color = colorbarra[1] }; lista.Add(g2); Grafico g3 = new Grafico() { label = "Mar", value = pronosticomensual[2].ToString(), color = colorbarra[2] }; lista.Add(g3); Grafico g4 = new Grafico() { label = "Abr", value = pronosticomensual[3].ToString(), color = colorbarra[3] }; lista.Add(g4); Grafico g5 = new Grafico() { label = "May", value = pronosticomensual[4].ToString(), color = colorbarra[4] }; lista.Add(g5); Grafico g6 = new Grafico() { label = "Jun", value = pronosticomensual[5].ToString(), color = colorbarra[5] }; lista.Add(g6); Grafico g7 = new Grafico() { label = "Jul", value = pronosticomensual[6].ToString(), color = colorbarra[6] }; lista.Add(g7); Grafico g8 = new Grafico() { label = "Ago", value = pronosticomensual[7].ToString(), color = colorbarra[7] }; lista.Add(g8); Grafico g9 = new Grafico() { label = "Sep", value = pronosticomensual[8].ToString(), color = colorbarra[8] }; lista.Add(g9); Grafico g10 = new Grafico() { label = "Oct", value = pronosticomensual[9].ToString(), color = colorbarra[9] }; lista.Add(g10); Grafico g11 = new Grafico() { label = "Nov", value = pronosticomensual[10].ToString(), color = colorbarra[10] }; lista.Add(g11); Grafico g12 = new Grafico() { label = "Dic", value = pronosticomensual[11].ToString(), color = colorbarra[11] }; lista.Add(g12); data.Pronostico = pronosticoanual.ToString(); data.Quota = valorObjetivo.ToString(); data.MediaMensual = promediomensualPronosticado.ToString(); if (pronosticoanual < (float)valorObjetivo) { data.Mensaje = "NO LOGRARÁ EL OBJETIVO"; } else { data.Mensaje = "LOGRARÁ OBJETIVO"; } data.Mad = MAD.ToString(); data.ListaGrafico = lista; return(data); }