public BindableCollection<SubLineaProducto> ObtenerSubLineas(int id)
        {
            db.cmd.CommandText = "SELECT * FROM SubLineaProducto WHERE idLinea=@idLinea";
            db.cmd.Parameters.AddWithValue("idLinea", id);
            SqlDataReader reader;
            BindableCollection<SubLineaProducto> lstSubLinea = new BindableCollection<SubLineaProducto>();
            try
            {
                db.conn.Open();
                reader=db.cmd.ExecuteReader();
                while (reader.Read())
                {
                    SubLineaProducto slp = new SubLineaProducto();
                    slp.IdLinea = id;
                    slp.Nombre=reader["Nombre"].ToString();
                    slp.IdSubLinea = Int32.Parse(reader["IdSubLinea"].ToString());
                    slp.Abreviatura = reader["Abreviatura"].ToString();
                    lstSubLinea.Add(slp);
                }
                db.cmd.Parameters.Clear();
                reader.Close();
                db.conn.Close();

            }
            catch (SqlException e)
            {
                Console.WriteLine(e);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace.ToString());
            }

            return lstSubLinea;
        }
        public void AgregarSubLineaProducto(SubLineaProducto slp,int idLinea)
        {
            db.cmd.CommandText = "INSERT INTO SubLineaProducto (nombre,idLinea,abreviatura) values (@nombre,@idLinea,@abreviatura)";
            db.cmd.Parameters.AddWithValue("@nombre", slp.Nombre);
            db.cmd.Parameters.AddWithValue("@idLinea", idLinea);
            db.cmd.Parameters.AddWithValue("@Abreviatura", slp.Abreviatura);

            try
            {

                db.conn.Open();
                db.cmd.ExecuteNonQuery();
                db.conn.Close();
                db.cmd.Parameters.Clear();

            }
            catch (SqlException e)
            {
                Console.WriteLine(e);

            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace.ToString());
            }
        }
        public void GuardarSubLinea()
        {
            if (string.IsNullOrWhiteSpace(TxtAbrv) || string.IsNullOrWhiteSpace(TxtNombre)) {
                _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Ingrese valores validos en los campos"));
                return;
            }

            SubLineaProducto slp = new SubLineaProducto();
            slp.Nombre=txtNombre;
            slp.Abreviatura = txtAbrv;

            lpVM.ActualizaTablaSubLineas(slp);
        }
 public void SelectedItemChanged(object sender)
 {
     selectedSubLinea = ((sender as DataGrid).SelectedItem as SubLineaProducto);
 }
        public void ActualizaTablaSubLineas(SubLineaProducto slp)
        {
            if (LstSubLinea != null)
            {

                List<SubLineaProducto> lstAux = new List<SubLineaProducto>();
                foreach (SubLineaProducto s in LstSubLinea)
                {
                    lstAux.Add(s);
                }
                lstAux.Add(slp);
                LstSubLinea.Clear();
                LstSubLinea = lstAux;
            }
            else
            {
                LstSubLinea = new List<SubLineaProducto>();
                LstSubLinea.Add(slp);
            }
        }
        public List<DetalleProductoVenta> BuscarProducto(String codigo = null, int idLinea = -1, int idSubLinea = -1, int idTienda = -1)
        {
            List<DetalleProductoVenta> listaProductos = null;

            string where = "WHERE 1=1 ";
            string from = "SELECT p.* , L.nombre linea, S.nombre sublinea pt.precioVenta precioVenta FROM Producto p" +
                        " JOIN LineaProducto L " +
                        " ON (P.idLinea=L.idLinea) " +
                        " JOIN SubLineaProducto S " +
                        " ON (P.idSubLinea=S.idSubLinea) " +
                        " JOIN ProductoxTienda pt " +
                        " ON (P.idProducto=PT.idProducto) ";

            if (!String.IsNullOrEmpty(codigo))
            {
                where = where + " AND codProducto = @codigo ";
                db.cmd.Parameters.AddWithValue("@codigo", codigo);
            }

            if (idLinea > 0)
            {
                where = where + " AND p.idLinea=@idLinea ";
                db.cmd.Parameters.AddWithValue("@idLinea", idLinea);
            }
            if (idSubLinea > 0)
            {
                where = where + " AND p.idSubLinea=@idSubLinea ";
                db.cmd.Parameters.AddWithValue("@idSubLinea", idSubLinea);
            }
            if (idTienda > 0)
            {
                from = "SELECT p.*, pt.precioVenta , L.nombre linea, S.nombre sublinea" +
                        " FROM Producto p " +
                        " JOIN LineaProducto L " +
                        " ON (P.idLinea=L.idLinea) " +
                        " JOIN SubLineaProducto S " +
                        " ON (P.idSubLinea=S.idSubLinea) " +
                        " JOIN ProductoxTienda pt ON ( p.idProducto = pt.idProducto) ";
                where += " AND  pt.idTienda = @idTienda AND vigente=1 ";
                db.cmd.Parameters.AddWithValue("@idTienda", idTienda);
            }

            db.cmd.CommandText = from + where;
            try
            {
                db.conn.Open();
                SqlDataReader reader = db.cmd.ExecuteReader();

                while (reader.Read())
                {
                    if (listaProductos == null) listaProductos = new List<DetalleProductoVenta>();
                    DetalleProductoVenta p = new DetalleProductoVenta();
                    p.IdProducto = Int32.Parse(reader["idProducto"].ToString());
                    p.CodigoProd = reader.IsDBNull(reader.GetOrdinal("codProducto")) ? null : reader["codProducto"].ToString();
                    p.Nombre = reader.IsDBNull(reader.GetOrdinal("nombre")) ? null : reader["nombre"].ToString();

                    LineaProducto lp = new LineaProducto();
                    lp.IdLinea = reader.IsDBNull(reader.GetOrdinal("idLinea")) ? -1 : (int)reader["idLinea"];
                    lp.Nombre = reader.IsDBNull(reader.GetOrdinal("linea")) ? null : reader["linea"].ToString();
                    p.Linea = lp;

                    SubLineaProducto slp = new SubLineaProducto();
                    slp.IdSubLinea = reader.IsDBNull(reader.GetOrdinal("idSubLinea")) ? -1 : (int)reader["idSubLinea"];
                    slp.Nombre = reader.IsDBNull(reader.GetOrdinal("sublinea")) ? null : reader["sublinea"].ToString();
                    p.Sublinea = slp;

                    if (idTienda > 0)
                    {
                        p.PrecioVenta = reader.IsDBNull(reader.GetOrdinal("precioVenta")) ? -1 : float.Parse(reader["precioVenta"].ToString());
                    }

                    listaProductos.Add(p);
                }
                db.cmd.Parameters.Clear();
                reader.Close();
                db.conn.Close();
            }
            catch (SqlException e)
            {
                Console.WriteLine(e);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace.ToString());
            }

            return listaProductos;
        }