none
(AYUDA URGENTE) Registrar una venta RRS feed

  • Pregunta

  • Tengo dos stored procedures de agregar ventas y detalle_ventas, necesito ayuda para que al darle al boton agregar se agreguen los datos a un gridview para insertar varios productos y como calcular el subtotal y total al momento de dar al boton agregar. 

    Procedures:

    ALTER Proc [dbo].[spVentasInsertarNuevo]
    @fecha date,
    @descuento float,
    @iva float,
    @tipo_cambio float,
    @id_cliente int,
    @id_usuario int,
    @pid int output
    as
    Begin
    Insert into ventas(fecha, monto_dolares, descuento, iva,
    tipo_cambio, id_cliente, id_usuario)
    values(GETDATE(), @monto_dolares, @descuento, @iva,
    @tipo_cambio, @id_cliente, @id_usuario);
    select @pid = IDENT_CURRENT('ventas');
    return
    
    end

    ALTER Proc [dbo].[spInsertarDetalle_Venta]
    (
    @cantidad int,
    @precio_dolares float,
    @descuento float,
    @subtotal float,
    @id_venta int,
    @id_producto int
    )
    as 
    begin
    	insert into datalle_ventas(cantidad, precio_dolares, precio_cordobas, descuento,
    	subtotal, id_venta, id_producto)
    	values(@cantidad, @precio_dolares, @descuento,
    	@subtotal, @precio_dolares*@descuento, @id_venta, @id_producto)
    end

    Seria mejor que al  seleccionar un valor de un ddl se llenen los texbox con la informacion respectiva al valor seleccionado

    Tambien tengo aqui el codigo de llenado de ddl.

    private void InicialProductos()
            {
                ddlProducto.DataSource = Consultar("SELECT * FROM productos");
                ddlProducto.DataTextField = "descripcion";
                ddlProducto.DataValueField = "id";
                ddlProducto.DataBind();
                ddlProducto.Items.Insert(0, new ListItem("[Producto]", "0"));
    
    
            }
            private void InicialClientes()
            {
                ddlClientes.DataSource = Consultar("SELECT  c.id, c.nombre + ' ' + c.apellido as Nombres_Completos  FROM clientes c;");
                ddlClientes.DataTextField = "Nombres_Completos";
                ddlClientes.DataValueField = "id";
                ddlClientes.DataBind();
                ddlClientes.Items.Insert(0, new ListItem("[Cliente]", "0"));
    
    
          

    lunes, 10 de febrero de 2020 23:08

Todas las respuestas

  • hola

    Pero como invocas a los procedures ? lo has intentado

    no se que hace ese metodo Consultar(), pero deberia tener dentro algo como esto

    DataTabla dt = new DataTable(); 
    using (SqlConnection conn = new SqlConnection("connectionstring")) 
    { 
    
        SqlCommand cmd = new SqlCommand("<storedprocedure>", conn); 
        cmd.CommandType = SqlCommandType.StoredProcedure; 
    
        cmd.Parameters.AddWithValue("@param1", valor); 
        
        cmd.ExecuteNonQuery();
    }

    usa siempre parametros

    es mas programa una capa de datos y no ese tipo de metodo que le pasas la consulta

    [WinForms] Edición Empleados

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 11 de febrero de 2020 0:05
  • Esto tiene el metodo consultar

    public DataSet Consultar(string strSQL)
            {
                cn.Open();
                SqlCommand cmd = new SqlCommand(strSQL, cn);
                SqlDataAdapter das = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                das.Fill(ds);
                cn.Close();
                return ds;
            }

    Todavia no implemento los procedures porque no se por donde empezar en la parte de programacion, por ejemplo ir agregando los productos al gridview para ir haciendo los detalles de venta y agregarlos a la base de datos con el boton agregar y luego con el de guardar

    martes, 11 de febrero de 2020 0:29
  • hola

    lo que recomendaria es que no crees metodo como se Consultar en donde solo ejecuta un string que le porporciones

    sino que crea una entidad Venta que sea un class

    public class Venta {
    
       //otras propiedades
    
       public List<DetalleVenta> Detalles {get;set;}
    
    }
     
    
    public class DetalleVenta {
    
       //otras propiedades
    
    }


    y como veras usa una lista que es el detalle

    entonces puedes enviar a persistir la entidad usando los valores en los parametros

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 11 de febrero de 2020 2:27
  • Algún ejemplo que pueda guiarme en lo que me recomiendas??
    martes, 11 de febrero de 2020 2:38
  • hola

    Analizaste el articulo que sugeri en la anterior respuesta?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 11 de febrero de 2020 3:37