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