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); } } }
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(); } }