private void BtRemito_Click(object sender, EventArgs e) { if (!WAutorizado) { WProceso = 1; Clave frm = new Clave(); frm.Show(this); return; } WAutorizado = false; try { // En caso de que no se hayan seleccionado las filas completas y solo una celda o fila de manera parcial. if (DGV_Muestra.SelectedCells.Count > 0) { foreach (DataGridViewCell celda in DGV_Muestra.SelectedCells) { DGV_Muestra.Rows[celda.RowIndex].Selected = true; } } DataTable _dt = new DataTable(); List <string> sinEnsayo = new List <string>(); List <string> errorLote = new List <string>(); int cantidad = (DGV_Muestra.SelectedRows.Count - 1); string cliente = DGV_Muestra.SelectedRows[cantidad].Cells[7].Value.ToString(); //Cliente string _CodCliente = DGV_Muestra.SelectedRows[cantidad].Cells[8].Value.ToString(); //Filtro para clientes identicos for (int i = 0; i < DGV_Muestra.SelectedRows.Count; i++) { if (DGV_Muestra.SelectedRows[i].Cells[7].Value.ToString() != cliente) { throw new Exception("Los clientes son distintos"); } } //Verifico que se ML y valor medio mayor a 100 (Verifico que se haya hecho actualizar laboratiori) for (int i = 0; i < DGV_Muestra.SelectedRows.Count; i++) { int valor = int.Parse(DGV_Muestra.SelectedRows[i].Cells[3].Value.ToString().Substring(3, 3)); if (DGV_Muestra.SelectedRows[i].Cells[3].Value.ToString().StartsWith("ML") && valor >= 100) { string _id = DGV_Muestra.SelectedRows[i].Cells[0].Value.ToString(); if (!CS.VerificarEnsayo2(_id)) { throw new Exception("La muestra " + DGV_Muestra.SelectedRows[i].Cells[3].Value.ToString().Trim() + " no posee ensayo"); } //sinEnsayo.Add(DGV_Muestra.SelectedRows[i].Cells[3].Value.ToString()); } } //Verifico que no tengan número de remito string numero_remito = DGV_Muestra.SelectedRows[0].Cells[12].Value.ToString(); string[,] HojasDeSeguridad = new string[DGV_Muestra.SelectedRows.Count, 2]; for (int i = 0; i < DGV_Muestra.SelectedRows.Count; i++) { if (DGV_Muestra.SelectedRows[i].Cells[12].Value.ToString() != numero_remito) { throw new Exception("El numero de remito es diferente"); } HojasDeSeguridad[i, 0] = DGV_Muestra.SelectedRows[i].Cells["DescriCliente"].Value.ToString().Trim(); HojasDeSeguridad[i, 1] = DGV_Muestra.SelectedRows[i].Cells["Codigo"].Value.ToString().Trim(); } if (numero_remito != "" && numero_remito != "0") { _dt = CS.BuscarListaRemito(numero_remito, _CodCliente); foreach (DataRow row in _dt.Rows) { if (row["Producto"].ToString().Replace("-", "").Trim() != "") { DataRow datarow = CS.TraerPeligroso(row["Producto"].ToString()); //CS.ListarPeligroso(_id); string WPeligrosoI = "", WPeligrosoII = ""; if (datarow != null) { if (datarow["DescriOnu"].ToString().Trim() != "") { WPeligrosoI = datarow["DescriOnu"].ToString().Trim(); } if (datarow["Clase"].ToString().Trim() != "") { WPeligrosoII = "Clase: " + datarow["Clase"].ToString().Trim() + " "; } if (datarow["Naciones"].ToString().Trim() != "") { WPeligrosoII += "N.ONU: " + datarow["Naciones"].ToString().Trim() + " "; } if (datarow["Embalaje"].ToString().Trim() != "") { WPeligrosoII += "Grupo de Embalaje: " + datarow["Embalaje"].ToString().Trim() + " "; } if (datarow["Intervencion"].ToString().Trim() != "") { WPeligrosoII += "N. Intervención: " + datarow["Intervencion"].ToString().Trim() + " "; } } row["Peligroso"] = WPeligrosoI.Trim(); row["PeligrosoII"] = WPeligrosoII.Trim(); } } DataRow datacliente1 = CS.BuscarCliente(cliente); string WPedido = DGV_Muestra.SelectedRows[0].Cells["Pedido"].Value.ToString(); string WDirEntrega = _TraerDireccionEntregaPorPedido(WPedido, _CodCliente); if (WDirEntrega.Trim() == "") { throw new Exception("No se encuentra dirección de Entrega de Cliente"); } string CodClient1 = datacliente1[0].ToString(); string DirClient1 = datacliente1[1].ToString(); string LocalidadClient1 = datacliente1[2].ToString(); string Cuit1 = datacliente1[3].ToString(); string DirEntrega1 = WDirEntrega; //datacliente1[4].ToString(); string[] WDatosRemito = _BuscarDatosRemito(WPedido, numero_remito); ImpreRemito impre_1 = new ImpreRemito(_dt, DirEntrega1, CodClient1, DirClient1, LocalidadClient1, Cuit1, cliente, HojasDeSeguridad, WDatosRemito); impre_1.ShowDialog(); goto finalizado; //goto Error; } //Se valido la totalidad de las variables, ahora se va a modificar la/s base/s int[] Lotes = new int[DGV_Muestra.SelectedRows.Count]; string[,] Peligroso = new string[DGV_Muestra.SelectedRows.Count, 2]; string[] Codigos = new string[DGV_Muestra.SelectedRows.Count]; for (int i = 0; i < DGV_Muestra.SelectedRows.Count; i++) { string cod = DGV_Muestra.SelectedRows[i].Cells[3].Value.ToString(); if (DGV_Muestra.SelectedRows[i].Cells[3].Value.ToString().Length < 12) { string codigo = cod.Substring(0, 2) + "-00" + cod.Substring(3, 7); cod = codigo; } Codigos[i] = cod; int _id = int.Parse(DGV_Muestra.SelectedRows[i].Cells[0].Value.ToString()); string pedido = DGV_Muestra.SelectedRows[i].Cells[1].Value.ToString(); // Se busca lote para el Codigo solicitado en caso de que no sea un ML. // Falta definir el if (cod.StartsWith("DY")) { cod = Conexion._FormatearCodigoProducto(cod); } string cant = DGV_Muestra.SelectedRows[i].Cells[5].Value.ToString().Trim(); cant = cant.Replace(",", "."); cant = cant.StartsWith(".") ? "0" + cant : cant; if (DGV_Muestra.SelectedRows[i].Cells[3].Value.ToString().StartsWith("YQ") || DGV_Muestra.SelectedRows[i].Cells[3].Value.ToString().StartsWith("YF")) { if (Double.Parse(cant.Replace(".", ",")) >= 20) { int _lote1 = int.Parse(CS.BuscarLote1(cod, pedido)); if (_lote1 == 0) { throw new Exception("La Muestra para " + DGV_Muestra.SelectedRows[i].Cells[3].Value.ToString().Trim() + " no posee lote"); } Lotes[i] = _lote1; } } else { if (!DGV_Muestra.SelectedRows[i].Cells[3].Value.ToString().StartsWith("ML") && !DGV_Muestra.SelectedRows[i].Cells[3].Value.ToString().StartsWith("YP")) { int _lote1 = int.Parse(CS.BuscarLote1(cod, pedido)); if (_lote1 == 0) { throw new Exception("La Muestra para " + DGV_Muestra.SelectedRows[i].Cells[3].Value.ToString().Trim() + " no posee lote"); } Lotes[i] = _lote1; } } DataRow datarow = CS.TraerPeligroso(cod); //CS.ListarPeligroso(_id); string WPeligrosoI = "", WPeligrosoII = ""; if (datarow != null) { if (datarow["DescriOnu"].ToString().Trim() != "") { WPeligrosoI = datarow["DescriOnu"].ToString().Trim(); } if (datarow["Clase"].ToString().Trim() != "") { WPeligrosoII = "Clase: " + datarow["Clase"].ToString().Trim() + " "; } if (datarow["Naciones"].ToString().Trim() != "") { WPeligrosoII += "N.ONU: " + datarow["Naciones"].ToString().Trim() + " "; } if (datarow["Embalaje"].ToString().Trim() != "") { WPeligrosoII += "Grupo de Embalaje: " + datarow["Embalaje"].ToString().Trim() + " "; } if (datarow["Intervencion"].ToString().Trim() != "") { WPeligrosoII += "N. Intervención: " + datarow["Intervencion"].ToString().Trim() + " "; } } Peligroso[i, 0] = WPeligrosoI.Trim(); //datarow[0].ToString(); Peligroso[i, 1] = WPeligrosoII.Trim(); //datarow[1].ToString(); } //cargo el nombre cliente DataRow datacliente = CS.BuscarCliente(cliente); string _Pedido = DGV_Muestra.SelectedRows[0].Cells["Pedido"].Value.ToString(); string _DirEntrega = _TraerDireccionEntregaPorPedido(_Pedido, _CodCliente); if (_DirEntrega.Trim() == "") { throw new Exception("No se encuentra dirección de Entrega de Cliente"); } string CodClient = datacliente[0].ToString(); string DirClient = datacliente[1].ToString(); string LocalidadClient = datacliente[2].ToString(); string Cuit = datacliente[3].ToString(); string DirEntrega = _DirEntrega; //datacliente[4].ToString(); string datos = numero_remito + ";" + cliente; AgregarColumnasRemito(_dt); for (int i = 0; i < DGV_Muestra.SelectedRows.Count; i++) { if (Lotes[i] == 0) { Lotes[i] = int.Parse(DGV_Muestra.SelectedRows[i].Cells["Lote2"].Value.ToString()); if (Lotes[i] == 0) { Lotes[i] = int.Parse(DGV_Muestra.SelectedRows[i].Cells["Lote1"].Value.ToString()); } } DataRow newRow = _dt.NewRow(); newRow["Descripcion"] = DGV_Muestra.SelectedRows[i].Cells["DescriCliente"].Value.ToString(); newRow["Cantidad"] = DGV_Muestra.SelectedRows[i].Cells["Cantidad"].Value.ToString(); newRow["Muestra"] = DGV_Muestra.SelectedRows[i].Cells["Id"].Value.ToString(); newRow["Partida"] = Lotes[i]; newRow["Pedido"] = DGV_Muestra.SelectedRows[i].Cells["Pedido"].Value.ToString(); newRow["Codigo"] = Codigos[i]; newRow["Codigo_Original"] = DGV_Muestra.SelectedRows[i].Cells["Codigo"].Value.ToString(); newRow["Peligroso"] = Peligroso[i, 0]; newRow["PeligrosoII"] = Peligroso[i, 1]; HojasDeSeguridad[i, 0] = DGV_Muestra.SelectedRows[i].Cells["DescriCliente"].Value.ToString().Trim(); HojasDeSeguridad[i, 1] = DGV_Muestra.SelectedRows[i].Cells["Codigo"].Value.ToString().Trim(); _dt.Rows.Add(newRow); } Remito remito = new Remito(datos, _dt, errorLote, sinEnsayo, DirEntrega, CodClient, DirClient, LocalidadClient, Cuit, cliente, HojasDeSeguridad); remito.ShowDialog(); } catch (Exception err) { MessageBox.Show(err.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } finalizado :; }
private void BTAceptar_Click(object sender, EventArgs e) { string _Clave, _Codigo, _Renglon, _Fecha, _CLiente, _Articulo, _Terminado, _Cantidad, _Fechaord, _Movi, _Tipo, _Tipomov, _Observaciones, _WDate, _Marca, _Lote; // Verificamos que el numero de remito no haya sido cargado con anterioridad. TBNumRemito.Text = _TraerProximoNumeroRemitoPorEstacionDeTrabajo().ToString(); int WIntentos = 0; while (Cs.RemitoExistente(TBNumRemito.Text.Trim()) && WIntentos <= 10) { WIntentos++; TBNumRemito.Text = _TraerProximoNumeroRemitoPorEstacionDeTrabajo().ToString(); } if (Cs.RemitoExistente(TBNumRemito.Text.Trim())) { TBNumRemito.Text = _TraerProximoNumeroRemitoPorEstacionDeTrabajo().ToString(); //MessageBox.Show("El Número de remito ya fue utilizado con anterioridad y no puede volver a utilizarse. Por favor, avise a Sistemas para que actualice la numeración de los Remitos.", "", MessageBoxButtons.OK, MessageBoxIcon.Information); //TBNumRemito.Focus(); //return; } try { if (TBNumRemito.Text == "") { throw new Exception("Se debe ingresar el numero de remito"); } if (reimprimir) { ImpreRemito impre = new ImpreRemito(dt, DirEntrega, CodClient, DirClient, LocalidadClient, Cuit, cliente, HojasDeSeguridad, WDatosRemito); impre.ShowDialog(); } else { if (WEmpresaRemito < 0 || WCodigoRemito < 0) { throw new Exception("No se encuentra bien definido las referencias a la numeraciónn del Remito o el Puesto de Trabajo correspondiente."); } for (int i = 0; i < DGV_Remito.Rows.Count; i++) { string codigo = DGV_Remito.Rows[i].Cells[5].Value.ToString(); string aux = DGV_Remito.Rows[i].Cells[1].Value.ToString(); aux = aux.Trim(); aux = aux.StartsWith(".") ? "0" + aux : aux;// Hay casos en lo que se cargo como por ejemplo ".1" en vez de "0.1" double Cantidad = Convert.ToDouble(aux.Replace(".", ",")); //if (codigo.StartsWith("PT") || codigo.StartsWith("DY") || codigo.StartsWith("YQ") || codigo.StartsWith("YF")) //{ // Cs.ActualizarPedidoI(DGV_Remito.Rows[i]); //} Cs.ActualizarPedidoI(DGV_Remito.Rows[i]); Cs.ActualizarMuestraRemito(DGV_Remito.Rows[i], TBNumRemito.Text); Cs.BuscarTipoPedido(DGV_Remito.Rows[i]); // buscar ultimo numero de movvlab MovLabNumero = Cs.TraerMovlabMax(); //la siguiente linea no hace falta porque ya suma uno en la consulta SQL //int NumMov = int.Parse(MovLabNumero) + 1; //string MovLab = NumMov.ToString(); //Reviso que cantidad de caracteres tiene el codigo devuelto int CantCar = MovLabNumero.Length; //Con la variable i del modulo saco el orden del movimiento, como empieza por 0 //le sumo 1 string orden = "1"; // (i + 1).ToString(); //Consulto si el orden es de un solo digito, si es asi le pongo un 0 adelante if (orden.Length == 1) { orden = "0" + orden; } //Sumo el string del movimiento mas el orden string Clave = MovLabNumero + orden; int max = Clave.Length; //realizo el for para saber cuantos ceros van a anteceder a la clave obtenida for (int u = 0; u < (8 - max); u++) { Clave = "0" + Clave; } _Clave = Clave; _Codigo = MovLabNumero; _Fecha = TBFecha.Text.Trim(); _Cantidad = Cantidad.ToString(); //DGV_Remito.Rows[i].Cells[3].Value.ToString(); _Fechaord = String.Join("", TBFecha.Text.Split("/".ToCharArray()).Reverse()); _WDate = DateTime.Now.ToString("MM-dd-yyyy"); _Lote = DGV_Remito.Rows[i].Cells[3].Value.ToString(); // Verificamos para ver si realizar o no el movimiento. bool _GrabarMovLab = true; if (codigo.StartsWith("YQ")) { if (Cantidad < 20) { _GrabarMovLab = false; } } if (_GrabarMovLab) { //SE MODIFICA A CONTINUACION PORQUE AL SER ML NO SE ACTUALIZA NADA if (codigo.StartsWith("DY")) //|| codigo.StartsWith("ML")) { Cs.ActualizarArticulo(DGV_Remito.Rows[i]); _Tipo = "M"; _Terminado = " - - "; _Articulo = codigo; //No se en que parte se tiene la fecha //Fila["OrdenFecha"] = Fila[2].ToString().Substring(6,4) + Fila[2].ToString().Substring(2, 4) + Fila[2].ToString().Substring(0, 2); // Grabar registro Cs.AltaMovlab(_Clave, _Codigo, _Articulo, _Terminado, _Tipo, orden, _Fecha, _Fechaord, _Lote, TBCliente.Text, Cantidad); if (Cs.BuscarEnLaudo(DGV_Remito.Rows[i])) { Cs.RestarSaldoALaudo(DGV_Remito.Rows[i]); } else if (Cs.BuscarEnGuia_Art(DGV_Remito.Rows[i])) { Cs.RestarSaldoAGuia_Art(DGV_Remito.Rows[i]); } else { throw new Exception("No se encontro la Muestra en las tablas Laudo ni Guia"); } } //SE MODIFICO A ELSE IF PARA QUE ENTRE EN CASO QUE NO SEA DY NI ML ENTRE Y SI ES YF O YQ LA CANTIDAD DEBE SER MAYOR A 1 //SINO NO SE ACTUALIZA LOTE else if ((codigo.StartsWith("YQ") && Cantidad > 1) || (codigo.StartsWith("YF") && Cantidad > 1) || codigo.StartsWith("PT")) { Cs.ActualizarTerminado(DGV_Remito.Rows[i]); _Tipo = "T"; _Terminado = codigo; _Articulo = " - - "; //// Grabar registro Cs.AltaMovlab(_Clave, _Codigo, _Articulo, _Terminado, _Tipo, orden, _Fecha, _Fechaord, _Lote, TBCliente.Text, Cantidad); if (Cs.BuscarEnHoja(DGV_Remito.Rows[i])) { Cs.RestarSaldoAHoja(DGV_Remito.Rows[i]); } else if (Cs.BuscarEnGuia_Ter(DGV_Remito.Rows[i])) { Cs.RestarSaldoAGuia_Ter(DGV_Remito.Rows[i]); } else { throw new Exception("No se encontro la Muestra en las tablas Hoja ni Guia"); } } } } } if (cmbTipoRemito.SelectedIndex == 0 && WEmpresaRemito != -1) { _ActualizarUltimaNumeracionRemito(); } ImpreRemito impre_1 = new ImpreRemito(dt, DirEntrega, CodClient, DirClient, LocalidadClient, Cuit, cliente, WDatosRemito); impre_1.ShowDialog(this); // Verifico que se haya cargado algun articulo para comenzar a imprimir. if (HojasDeSeguridad[0, 0].Trim() != "") { ImprimirHojasDSeguridad(HojasDeSeguridad); } Close(); } catch (Exception err) { MessageBox.Show(err.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }