public object Buscar(params object[] filters)
        {
            string where = "";
            int codProveedor;

            if (filters.Length != 0)
            {

                codProveedor = Convert.ToInt32(filters[0]);
                where += "and  idProveedor = " + codProveedor;

            }

            DBConexion DB = new DBConexion();

            SqlConnection conn = DB.conn;
            SqlCommand cmd = DB.cmd;
            SqlDataReader reader;

            cmd.CommandText = "SELECT * FROM ProveedorxProducto WHERE  estado = 1   " + where + " ORDER BY fechaReg DESC ";
            cmd.CommandType = CommandType.Text;
            cmd.Connection = conn;
            List<ProveedorxProducto> lstProductos = new List<ProveedorxProducto>();

            try
            {
                conn.Open();

                reader = cmd.ExecuteReader();

                while (reader.Read())
                {

                    ProveedorxProducto p = new ProveedorxProducto();
                    p.Estado = Convert.ToInt32(reader["estado"].ToString());
                    p.Producto = new ProductoSQL().Buscar_por_CodigoProducto(Convert.ToInt32(reader["idProducto"].ToString()));
                    p.Precio = Convert.ToDouble(reader["precio"].ToString());
                    p.IdProveedor = Convert.ToInt32(reader["idProveedor"].ToString());
                    p.FechaAct = (reader["fechaAct"].ToString());
                    p.FechaReg = (reader["fechaReg"].ToString());
                    p.CodComercial = reader["codComercial"].ToString();
                    p.Descripcion = reader["descripcion"].ToString();

                    lstProductos.Add(p);
                }

                conn.Close();

            }
            catch (Exception e)
            {
                MessageBox.Show(e.StackTrace.ToString());
            }

            return lstProductos;
        }
        public ProductoViewModel(ProveedorxProducto c,CatalogoProductoProveedorViewModel catalogo)
        {
            Pp = c;
            P = Pp.Producto;
            cp = catalogo;
            Descripcion = Pp.Descripcion;
            CodComercial = Pp.CodComercial;
            Precio = Pp.Precio.ToString();

            if (P!=null) {
                EsBuscar = false;
            }
        }
        public bool Validar(ProveedorxProducto p)
        {
            if(!existe(p) ){

                ProductoxOrdenCompra po = new ProductoxOrdenCompra();
                po.IdOrden = idOrden;
                po.PrecioUnitario = p.Precio;
                po.Producto = p.Producto;

                lst.Add(po);

                Lst = new List<ProductoxOrdenCompra>(lst);

                return true;

            }

            return false;
        }
        public bool existe(ProveedorxProducto p)
        {
            foreach (ProductoxOrdenCompra o in Lst) {

                if (p.Producto.IdProducto == o.Producto.IdProducto) {

                    return true;
                }

            }

            return false;
        }
        public int Insertar(ProveedorxProducto pp)
        {
            Producto p = new ProductoSQL().Buscar_por_CodigoProducto(pp.Producto.CodigoProd);
            int k = 0;

            if (p != null)
            {

                DBConexion DB = new DBConexion();

                SqlConnection conn = DB.conn;
                SqlCommand cmd = DB.cmd;
                SqlDataReader reader;

                cmd.CommandText = "IF NOT EXISTS(SELECT 1 from ProveedorxProducto where idProveedor = @idProveedor and idProducto = @idProducto  )" +
                                   "Insert into ProveedorxProducto(idProducto,idProveedor,codComercial,precio, estado,descripcion,fechaReg,fechaAct) " +
                                   "VALUES (@idProducto,@idProveedor,@codComercial,@precio,@estado,@descripcion,GETDATE(),GETDATE() )" +
                                    " else " +
                                    "UPDATE ProveedorxProducto set fechaAct = GETDATE() , precio = @precio , descripcion = @descripcion ,codComercial  = @codComercial " +
                                    " , estado = @estado where idProveedor = @idProveedor and idProducto = @idProducto ";

                cmd.Parameters.AddWithValue("@idProveedor", pp.IdProveedor);
                cmd.Parameters.AddWithValue("@idProducto", p.IdProducto);
                cmd.Parameters.AddWithValue("@codComercial", pp.CodComercial);
                cmd.Parameters.AddWithValue("@precio", pp.Precio);
                cmd.Parameters.AddWithValue("@estado", 1);
                cmd.Parameters.AddWithValue("@fechaReg", DateTime.Now);
                cmd.Parameters.AddWithValue("@fechaAct", DateTime.Now);
                cmd.Parameters.AddWithValue("@descripcion", pp.Descripcion);

                cmd.CommandType = CommandType.Text;
                cmd.Connection = conn;

                try
                {
                    conn.Open();

                    k = cmd.ExecuteNonQuery();

                    reader = cmd.ExecuteReader();

                    if (reader.Read())
                    {

                        p = new Producto();
                        p.IdProducto = Convert.ToInt32(reader["idProducto"].ToString());
                        p.Nombre = reader["nombre"].ToString();
                        p.CodigoProd = reader["codProducto"].ToString();
                    }

                    conn.Close();

                }
                catch (Exception e)
                {
                    MessageBox.Show(e.StackTrace.ToString());
                }

            }
            return k;
        }
        public void Cargar()
        {
            if (path != "")
            {

                List<ProveedorxProducto> lista = new List<ProveedorxProducto>();

                String name = "Catalogo";
                String constr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;Persist Security Info=False";
                OleDbConnection con = new OleDbConnection(constr);
                OleDbCommand oconn = new OleDbCommand("Select * From [" + name + "$]", con);

                try
                {
                    con.Open();

                    OleDbDataAdapter sda = new OleDbDataAdapter(oconn);
                    DataTable data = new DataTable();
                    sda.Fill(data);
                    DataTableReader ds = data.CreateDataReader();

                    while (ds.Read())
                    {
                        ProveedorxProducto cp = new ProveedorxProducto();
                        cp.IdProveedor = Prov.IdProveedor;
                        cp.Producto = new Producto();
                        cp.Producto.CodigoProd = ds["Codigo"].ToString();
                        cp.CodComercial = ds["Codigo Comercial"].ToString();
                        cp.Precio = Convert.ToDouble(ds["Precio"].ToString());
                        cp.Descripcion = ds["Descripcion"].ToString();
                        ProveedorxProductoSQL pp = new ProveedorxProductoSQL();
                        int k = pp.Insertar(cp);

                    }

                }

                catch (Exception e)
                {
                    MessageBox.Show("Revisar la plantilla utilizada, ocurrio un error.", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }

            }
        }
 public void NuevoProducto()
 {
     if (Prov != null)
     {
         MyWindowManager win = new MyWindowManager();
         ProveedorxProducto pp = new ProveedorxProducto();
         pp.IdProveedor = Prov.IdProveedor;
         win.ShowWindow(new Compras.ProductoViewModel(pp, this));
     }
 }