Ejemplo n.º 1
0
        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 :;
        }
Ejemplo n.º 2
0
        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);
            }
        }