private void comboArea_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (comboArea.SelectedIndex != -1)
     {
         // cargar reorder
         try
         {
             DataSet ds = new dh_prioridad().GetDataSet((int)comboArea.SelectedValue);
             reorderPrioridad.DisplayMember = "despacho_herramienta";
             reorderPrioridad.ValueMember   = "despacho_herramienta";
             reorderPrioridad.DataSource    = ds.Tables[0];
         }
         catch (Exception ex)
         {
             Log.ShowAndLog(ex);
         }
     }
 }
Ejemplo n.º 2
0
        private void btnPrepararDespacho_Click(object sender, EventArgs e)
        {
            // obtener prioridades para este despacho
            DataSet prioridades =
                new dh_prioridad().GetDataSet((int)((DataRowView)comboExpedientes.SelectedItem)["id_area"]);

            // ordenar carros disponibles segun prioridades
            var carros_final = new Dictionary <z_carros, int>();
            // lista con los carros disponibles
            var carros_disp = new Dictionary <z_carros, int>();

            foreach (DataRow carro in listCarrosCantidad.DataSource.Rows)
            {
                carros_disp.Add(new z_carros().getObjectz_carros((int)carro["id_carro"]), (int)carro["cantidad"]);
            }

            foreach (DataRow prio in prioridades.Tables[0].Rows)
            {
                var todel = new List <z_carros>();
                foreach (KeyValuePair <z_carros, int> carro in carros_disp)
                {
                    if ((int)prio["despacho_herramienta"] == carro.Key.id_compania)
                    {
                        // añadir a orden y eliminar de la lista actual
                        carros_final.Add(carro.Key, carro.Value);
                        todel.Add(carro.Key);
                    }
                }
                // eliminar carros añadidos
                foreach (z_carros c in todel)
                {
                    carros_disp.Remove(c);
                }
            }

            // seleccionar carros necesarios
            int cantidad = int.Parse(textCantidad.Text);
            var despacho = new List <int>();

            foreach (KeyValuePair <z_carros, int> carro in carros_final)
            {
                // marcar como despachado y agregar
                Carro.Despachar(carro.Key);
                despacho.Add(carro.Key.id_carro);
                cantidad -= carro.Value;
                if (cantidad <= 0)
                {
                    break;
                }
            }

            if (cantidad <= 0 ||
                (cantidad > 0 &&
                 MessageBox.Show(
                     string.Format(
                         "No existe cantidad suficiente para satisfacer la solicitud. Han quedado {0} elementos pendientes. ¿Desea realizar el despacho de todas maneras?",
                         cantidad), "Elementos insuficientes", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) ==
                 DialogResult.Yes))
            {
                // preparar despacho
                var cd = new ConfirmarDespacho
                {
                    IdCarros     = despacho,
                    IdExpediente = ((int)comboExpedientes.SelectedValue),
                    IdArea       = ((int)((DataRowView)comboExpedientes.SelectedItem)["id_area"])
                };
                cd.ShowDialog();
            }
        }