Esempio n. 1
0
        private ViajeDistribucion GetDistribucion(DateTime date)
        {
            var distribuciones = Distribuciones.Where(d => d.InicioReal.HasValue).ToList();

            if (!distribuciones.Any())
            {
                return(null);
            }

            while (distribuciones.Any())
            {
                var distribucion = distribuciones[0];
                var inicio       = distribucion.InicioReal.Value;
                var fin          = distribucion.Fin;

                if (distribucion.Fin < date)
                {
                    distribuciones.RemoveAt(0);
                }
                else if (date >= inicio && date < fin)
                {
                    return(distribucion);
                }
                else
                {
                    break;
                }
            }
            return(null);
        }
Esempio n. 2
0
        private void generarDistribucionTipoAuto()
        {
            List <Probabilidades <TipoAuto> > ListaTiposAutos = new List <Probabilidades <TipoAuto> >();
            Probabilidades <TipoAuto>         p;

            foreach (DataGridViewRow r in dgwTipoAuto.Rows)
            {
                var nombre = r.Cells[0].Value.ToString();
                var prob   = r.Cells[1].Value;
                var tipo   = new TipoAuto();
                tipo.Nombre = nombre;
                if (nombre == "Compacto(C)")
                {
                    tipo.DistribucionComision = ComisionComp;
                    tipo.Numero = 1;
                }
                else if (nombre == "Auto Mediano (AM)")
                {
                    tipo.DistribucionComision = ComisionAM;
                    tipo.Numero = 2;
                }
                else
                {
                    tipo.DistribucionComision = ComisionAL;
                    tipo.Numero = 3;
                }

                p = new Probabilidades <TipoAuto>(tipo, Convert.ToDouble(prob));
                ListaTiposAutos.Add(p);
            }
            this.TipoAuto = new Distribuciones <TipoAuto>(ListaTiposAutos);
        }
Esempio n. 3
0
        private void generarDistribucionesTipos()
        {
            List <Probabilidades <double> > ListaComisionAL   = new List <Probabilidades <double> >();
            List <Probabilidades <double> > ListaComisionAM   = new List <Probabilidades <double> >();
            List <Probabilidades <double> > ListaComisionComp = new List <Probabilidades <double> >();

            foreach (DataGridViewRow r in dgwcomisionAL.Rows)
            {
                var valor        = r.Cells[0].Value;
                var probabilidad = r.Cells[1].Value;
                ListaComisionAL.Add(new Probabilidades <double>(Convert.ToDouble(valor), Convert.ToDouble(probabilidad)));
            }
            this.ComisionAL = new Distribuciones <double>(ListaComisionAL);
            foreach (DataGridViewRow r in dgwcomisionAM.Rows)
            {
                var valor        = r.Cells[0].Value;
                var probabilidad = r.Cells[1].Value;
                ListaComisionAM.Add(new Probabilidades <double>(Convert.ToDouble(valor), Convert.ToDouble(probabilidad)));
            }
            this.ComisionAM = new Distribuciones <double>(ListaComisionAM);

            var comison_comp = txtComisionAC.Text;

            ListaComisionComp.Add(new Probabilidades <double>(Convert.ToDouble(comison_comp), 100));
            this.ComisionComp = new Distribuciones <double>(ListaComisionComp);
        }
 /// <summary>
 /// Genera AOG de manera aleatoria entre dos fechas.
 /// </summary>
 /// <param name="fechaIni">Fecha inicio</param>
 /// <param name="fechaFin">Fecha término</param>
 /// <param name="infoAOG">Información de AOG</param>
 internal void GenerarAOGs(DateTime fechaIni, DateTime fechaFin, SerializableDictionary <string, DataDisrupcion> infoAOG)
 {
     ClasificarBackups(fechaIni, fechaFin);
     foreach (string flota in _backups_clasificados.Keys)
     {
         _AOGs.Add(flota, new Dictionary <string, Dictionary <DateTime, double> >());
         foreach (string origen in _backups_clasificados[flota].Keys)
         {
             _AOGs[flota].Add(origen, new Dictionary <DateTime, double>());
             foreach (DateTime fecha in _backups_clasificados[flota][origen].Keys)
             {
                 _AOGs[flota][origen].Add(fecha, 0);
                 string key = flota + "_" + origen + "_" + fecha.Month.ToString();
                 if (infoAOG.ContainsKey(key))
                 {
                     DataDisrupcion data     = infoAOG[key];
                     double         dias_AOG = Distribuciones.GenerarAleatorio(_rdm, DistribucionesEnum.Normal, data.Prob, data.Media, data.Desvest, 0, 1);
                     _AOGs[flota][origen][fecha] = dias_AOG * 24;
                 }
                 else
                 {
                     //No hay info de AOG para cierta flota - origen y mes. No se hace nada.
                 }
                 UsarBackupsPorAOG(_backups_clasificados[flota][origen][fecha], _AOGs[flota][origen][fecha]);
             }
         }
     }
 }
        private void BTNAgregarDistribucion_Click(object sender, EventArgs e)
        {
            var seleccionadas = DvgDistribuidores.SelectedRows;

            if (seleccionadas.Count == 0 || seleccionadas.Count > 1)
            {
                MessageBox.Show("Debe seleccionar una fila");
                return;
            }
            foreach (DataGridViewRow fila in seleccionadas)
            {
                var nombre   = fila.Cells[1].Value;
                var apellido = fila.Cells[2].Value;
                var cuit     = fila.Cells[0].Value;
                var fecha    = fila.Cells[4].Value;



                if (cuit != null)
                {
                    var distribuir = new Distribuciones(cuit.ToString());
                    distribuir.ShowDialog();
                    ActualizarDistribuidores();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una fila no vacia para poder editar");
                }
            }
        }
Esempio n. 6
0
        private void generarDistribucionCantidad()
        {
            List <Probabilidades <int> > ListaCantAutos = new List <Probabilidades <int> >();

            foreach (DataGridViewRow r in dgwcantautos.Rows)
            {
                var valor        = r.Cells[0].Value;
                var probabilidad = r.Cells[1].Value;
                ListaCantAutos.Add(new Probabilidades <int>(Convert.ToInt32(valor), Convert.ToDouble(probabilidad)));
            }
            this.CantAutosVendidos = new Distribuciones <int>(ListaCantAutos);
        }
Esempio n. 7
0
        private void GenerarDistribucionPresupuesto()
        {
            var distribucionInversion = new List <Probabilidades <double> >();
            var presupuesto           = Convert.ToDecimal(this.txtPresupuesto.Text, new CultureInfo("en-US")) / dgvPresupuesto.RowCount;

            foreach (DataGridViewRow r in dgvPresupuesto.Rows)
            {
                var valor        = r.Cells[0].Value;
                var probabilidad = r.Cells[1].Value;
                distribucionInversion.Add(new Probabilidades <double>(Convert.ToDouble(valor), Convert.ToDouble(probabilidad)));
            }

            this.Inversion = new Distribuciones <double>(distribucionInversion);
        }
Esempio n. 8
0
        public void LoadFechasDeCorte()
        {
            var horas  = new List <DateTime>();
            var inicio = Inicio;

            while (inicio < Fin)
            {
                foreach (var turno in Turnos)
                {
                    if (turno.AppliesToDate(inicio, Feriados))
                    {
                        horas.Add(inicio.Date.AddHours(turno.Inicio - GmtModifier));
                        horas.Add(inicio.Date.AddHours(turno.Fin - GmtModifier));
                    }
                }
                for (var i = inicio.Date; i < inicio.Date.AddDays(1); i = i.AddHours(1))
                {
                    if (i < inicio)
                    {
                        continue;
                    }
                    horas.Add(i);
                }
                inicio = inicio.Date.AddDays(1);
            }

            FechasDeCorte = Tickets.Select(t => t.FechaTicket.Value)
                            .Union(Tickets.Where(t => t.FechaFin.HasValue).Select(t => t.FechaFin.Value))
                            .Union(Distribuciones.Where(d => d.InicioReal.HasValue).Select(d => d.InicioReal.Value))
                            .Union(Distribuciones.Where(d => d.InicioReal.HasValue).Select(d => d.Fin))
                            .Union(EventosRfid.Select(e => e.Key))
                            .Union(EventosGeocerca.Select(e => e.Key))
                            //.Union(EventosTimeTracking.Select(e => e.Key))
                            .Union(horas)
                            .Where(h => h >= Inicio && h <= Fin)
                            .Distinct()
                            .OrderBy(h => h)
                            .ToList();

            if (FechasDeCorte.Last() != Fin)
            {
                FechasDeCorte.Add(Fin);
            }
        }
Esempio n. 9
0
        private void CreateDistribucionPresupuesto()
        {
            var distribucionInversion = new List <Probabilidades <double> >();
            var labels      = panelPresupuesto.Controls.OfType <Label>().Where(x => x.Name.Contains("lblCantPres"));
            var presupuesto = Convert.ToDecimal(this.txtPresupuesto.Text, new CultureInfo("en-US")) / labels.Count();
            var i           = 4;
            var prob        = (double)((decimal)1 / labels.Count());

            foreach (Control fi in labels)
            {
                var name = string.Format("lblCantPres{0}", i);
                if (fi.Name == name)
                {
                    var value = Convert.ToDouble(fi.Text.ToString());
                    distribucionInversion.Add(new Probabilidades <double>(Convert.ToDouble(value), prob));
                }
                i--;
            }
            this.Inversion = new Distribuciones <double>(distribucionInversion);
        }
        private void distribucionesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var distrib = new Distribuciones();

            distrib.ShowDialog();
        }