public static ArrayList getProveedores(string dato)
        {
            //creo la conexion
            SqlConnection cnn = new SqlConnection(conexion);
            //abro la conexion
            cnn.Open();
            //creo la lista para almacenar las personas
            ArrayList listaproveedores = new ArrayList();
            //Creo el comando sql a utlizar
            SqlCommand cmd = new SqlCommand("select p.id_proveedor, p.nombre, p.telefono , p.email, p.direccion, p.ciudad, p.id_pais, p.comentario,   pa.id_pais, pa.nombre from proveedor p,  pais pa where  p.id_pais=pa.id_pais " + dato + " order by p.nombre");
            //asigno la conexion al comando
            cmd.Connection = cnn;
            //creo el datareader
            SqlDataReader obdr = cmd.ExecuteReader();
            //recorro el datareader
            while (obdr.Read())
            {
                //Creo los objetos persona y los agrego a la lista
                Pais pa = new Pais(obdr.GetInt64(8), obdr.GetString(9));

                Proveedor p = new Proveedor(obdr.GetString(1), obdr.GetString(2), obdr.GetString(3), obdr.GetString(4), obdr.GetString(5), obdr.GetInt64(6), obdr.GetInt64(0), obdr.GetString(7), pa);
                listaproveedores.Add(p);

            }
            //Cierro la conexion
            cnn.Close();
            //retorno la lsita
            return listaproveedores;
        }
        public static ArrayList getCompras_entre_fechas(DateTime desde, DateTime hasta)
        {
            //creo la conexion
            SqlConnection cnn = new SqlConnection(conexion);
            //abro la conexion
            cnn.Open();
            //creo la lista para almacenar las personas
            ArrayList listacompra = new ArrayList();
            //Creo el comando sql a utlizar
            SqlCommand cmd = new SqlCommand("select c.id_compra, c.id_proveedor, c.fecha, c.fecha_factura, c.fecha_vencimiento, c.tipo, c.numero_factura, c.estado, c.importe, p.nombre from compra c, proveedor p where p.id_proveedor = c.id_proveedor and c.fecha between @desde and @hasta   order by c.id_compra");
            cmd.Parameters.Add(new SqlParameter("@desde", desde));
            cmd.Parameters.Add(new SqlParameter("@hasta", hasta));
            //asigno la conexion al comando
            cmd.Connection = cnn;
            //creo el datareader
            SqlDataReader obdr = cmd.ExecuteReader();
            //recorro el datareader
            while (obdr.Read())
            {
                Proveedor p = new Proveedor();
                p.Nombre = obdr.GetString(9);
                Compra c = new Compra(obdr.GetInt64(0), obdr.GetInt64(1), obdr.GetDateTime(2), obdr.GetDateTime(3), obdr.GetDateTime(4), obdr.GetString(5), obdr.GetString(6), obdr.GetString(7), Convert.ToDecimal(Math.Round(obdr.GetDecimal(8), 2)));
                c.Proveedor = p;
                c.Dato = obdr.GetString(9);
                listacompra.Add(c);

            }
            //Cierro la conexion
            cnn.Close();
            //retorno la lsita
            return listacompra;
        }
 public Proveedor_Datos(bool alta, object p)
 {
     InitializeComponent();
     this.pro = (Proveedor)p;
     this.alta = false;
     CargarPaises();
     txt_nombre.Text = pro.Nombre;
     txt_calle.Text = pro.Direccion;
     txt_telefono_numero.Text = pro.Telefono;
     txt_email.Text = pro.Email;
     txt_ciudad.Text = pro.Ciudad;
     txt_comentario.Text = pro.Comentario;
     cbox_pais.Text = pro.Pais.Nombre;
     this.Text = "Modificar Proveedor";
 }
        public static void ModificaProveedor(Proveedor p)
        {
            //creo la conexion
            SqlConnection cnn = new SqlConnection(conexion);
            //abro la conexion
            cnn.Open();
            //Creo el comando sql a utlizar
            SqlCommand cmd = new SqlCommand("update proveedor set nombre=@nombre, telefono=@telefono, email=@email, direccion=@direccion, ciudad=@ciudad, id_pais=@id_pais,  comentario=@comentario  where id_proveedor = @id_proveedor");
            cmd.Parameters.Add(new SqlParameter("@nombre", p.Nombre));
            cmd.Parameters.Add(new SqlParameter("@telefono", p.Telefono));
            cmd.Parameters.Add(new SqlParameter("@email", p.Email));
            cmd.Parameters.Add(new SqlParameter("@direccion", p.Direccion));
            cmd.Parameters.Add(new SqlParameter("@ciudad", p.Ciudad));
            cmd.Parameters.Add(new SqlParameter("@id_pais", p.id_Pais));
            cmd.Parameters.Add(new SqlParameter("@comentario", p.Comentario));

            cmd.Parameters.Add(new SqlParameter("@id_proveedor", p.Id_proveedor));
            //asigno la conexion al comando
            cmd.Connection = cnn;

            cmd.ExecuteNonQuery();
        }
        public static void NuevoProveedor(Proveedor p)
        {
            //creo la conexion
            SqlConnection cnn = new SqlConnection(conexion);
            //abro la conexion
            cnn.Open();
            //Creo el comando sql a utlizar
            SqlCommand cmd = new SqlCommand("insert into proveedor (nombre, telefono, email, direccion, ciudad, id_pais,  comentario) Values (@nombre, @telefono, @email, @direccion, @ciudad, @id_pais, @comentario)");
            cmd.Parameters.Add(new SqlParameter("@nombre", p.Nombre));
            cmd.Parameters.Add(new SqlParameter("@telefono", p.Telefono));
            cmd.Parameters.Add(new SqlParameter("@email", p.Email));
            cmd.Parameters.Add(new SqlParameter("@direccion", p.Direccion));
            cmd.Parameters.Add(new SqlParameter("@ciudad", p.Ciudad));
            cmd.Parameters.Add(new SqlParameter("@id_pais", p.id_Pais));
            cmd.Parameters.Add(new SqlParameter("@comentario", p.Comentario));

            cmd.Parameters.Add(new SqlParameter("@id_proveedor", p.Id_proveedor));

            //asigno la conexion al comando
            cmd.Connection = cnn;

            cmd.ExecuteNonQuery();
        }
        //inicia cuando se aprenta el botón guardar
        private void btn_no_imprimir_Click(object sender, EventArgs e)
        {
            bool continuar = true;
            //verifica si la facura esta vacia
            if (txt_num_factura.Text == "" || txt_num_factura.Text == " ")
            {
                DialogResult dr = MessageBox.Show(this, "No se ha introducido un número de factura, ¿desea continuar?", "Atención", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (dr == DialogResult.Yes)
                {
                    continuar = true;
                }
                if (dr == DialogResult.No)
                {
                    continuar = false;

                }
            }
            //continua si se habilita por el usuarui
            if (continuar == true)
            {

                if (listacarrito.Count > 0 || listacarrito_nuevo.Count > 0)
                {

                    // verifico si el cliente es nuevo
                    if (cbox_proveedor.SelectedItem == null)
                    {
                        Pais pa = new Pais();

                        Proveedor pro = new Proveedor(cbox_proveedor.Text, " ", " ", " ", " ", DatosPais.obtener_id_pais_maximo(), 0, " ", pa);
                        DatosProveedor.NuevoProveedor(pro);
                        id_proveedor = DatosProveedor.obtener_id_proveedor_maximo();

                    }
                    //verifico si hay un cliente seleccionado en el cbox_cliente
                    else
                    {
                        id_proveedor = ((Proveedor)cbox_proveedor.SelectedItem).Id_proveedor;

                    }

                    Int64 id_compra;
                    string tipo;
                    string estado;
                    if (cbox_tipo_factura.SelectedIndex == 0)
                    {
                        tipo = "Contado";
                        estado = "Pago";

                    }
                    else
                    {
                        tipo = "Credito";
                        estado = "Debe";
                    }
                    Compra c = new Compra(0, id_proveedor, DateTime.Today, date_fecha.Value, date_vencimiento.Value, tipo, txt_num_factura.Text, estado, Convert.ToDecimal(txt_pesos.Text));
                    DatosCompra.NuevaCompra(c);

                    // obtengo el id max de venta
                    try
                    {
                        id_compra = DatosCompra.obtener_id_compra();
                    }
                    catch
                    {
                        id_compra = 0;

                    }

                    //recorre el array de carrito para registrar la compra en la base de datos, también modifica el stock del  producto
                    for (int i = 0; i < listacarrito.Count; i++)
                    {
                        Compra_Producto cp = new Compra_Producto(0, id_compra, ((Producto)listacarrito[i]).Id_producto, ((Producto)listacarrito[i]).Precio_unidad, ((Producto)listacarrito[i]).Stock);
                        DatosCompra_Producto.NuevaCompraProducto(cp);

                        for (Int32 h = 0; h < listaInicial.Count; h++)
                        {
                            if (((Producto)listacarrito[i]).Id_producto == ((Producto)listainicial2[h]).Id_producto)
                            {
                                ((Producto)listacarrito[i]).Stock = ((Producto)listainicial2[h]).Stock + ((Producto)listacarrito[i]).Stock;
                                DatosProducto.ModificarProducto((Producto)listacarrito[i]);

                            }
                        }
                    }
                    for (int i = 0; i < listacarrito_nuevo.Count; i++)
                    {

                        DatosProducto.NuevoProducto((Producto)listacarrito_nuevo[i]);
                        Int64 id_producto = DatosProducto.obtener_idMax_producto();
                        Compra_Producto cp = new Compra_Producto(0, id_compra, id_producto, ((Producto)listacarrito_nuevo[i]).Precio_unidad, ((Producto)listacarrito_nuevo[i]).Stock);
                        DatosCompra_Producto.NuevaCompraProducto(cp);

                    }
                    this.Close();
                }
                else
                {

                    MessageBox.Show(this, "No hay items para dar de alta", "¡Aviso!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    txt_codigo2.Focus();
                }
            }

            /*else {
                txt_num_factura.Focus();

            }*/
        }