Códigos Visual Basic 6

Curso de Software de Ventas Pt 48 Ventas Editar Producto, Facturas Temporales

En esta lección explico algo que nos faltaba poder modificar un producto ingresado en las ventas y como recuperar una factura que se ingreso pero que no se guardo.

Colabora y Suscribete a mi canal de

Para el primer punto que es modificar un producto ingresado debes seguir varios pasos para lograrlo:

1. Cuando de de doble clic sobre el producto en el grid debe ejecutarse la función de modificar.

Private Sub msGrid_DblClick()
    Call EditarProducto
End Sub

La función que se encarga de modificar el producto:

Sub EditarProducto()
    If msGrid.Row = 0 Then
       Exit Sub
    End If
    V_Editar_Producto = True
    Filas = msGrid.Row
    IdProducto = msGrid.TextMatrix(Filas, 1)
    Codigo = msGrid.TextMatrix(Filas, 3)
    Nombre = msGrid.TextMatrix(Filas, 4)
    Cantidad = msGrid.TextMatrix(Filas, 5)
    PrecioVp = CCur(msGrid.TextMatrix(Filas, 6))
    DescuentoP = CCur(msGrid.TextMatrix(Filas, 9))
    Subtotal = (Cantidad * PrecioVp) - DescuentoP
    
    txtCodigoPro = Codigo
    Call BuscarProductoCodigo
        
    txtCant_Pro = Cantidad
    txtPrecioV_Pro = PrecioVp
    txtValorTotalPro = Subtotal
    txtDesuentoVPro = DescuentoP
    txtCant_Pro.SetFocus
End Sub

En el código anterior notamos que primero verificamos que sea un producto el seleccionado validando que la fila seleccionada no sea cero.

Usamos una variable a nivel de formulario para notificar que se esta modificando un producto para eso declaramos la variable en la parte superior del codigo del formulario:

Dim V_Editar_Producto As Boolean

Con esto todas las variables superiores a nivel de formulario quedarían así:

Dim CodigoCliente As Long
Dim IdProducto As Long
Dim V_Editar_Producto As Boolean
Dim Precio2_Producto As Currency
Dim Precio3_Producto As Currency
Dim PrecioVentaGlob As Currency
Dim PrecioC_Pro As Currency
Dim RecordSet_Producto As New ADODB.RecordSet
Dim Direccion_Cliente As String
Dim ConsecutivoTemp

Siguiendo con el código de EditarProducto obtenemos todos los datos del producto del grid, luego se calcula el subtotal y se hace la consulta usando el procedimiento que ya tenemos BuscarProductoCodigo.

Luego de esto asignamos a los campos del formulario de productos los datos que ya obtuvimos y ponemos el foco en  txtCant_Pro.

2. Actualizar los datos modificados del producto en la base de datos para eso modificamos el procedimiento llamado IngresarProducto que quedaría de la siguiente manera:

Sub IngresarProducto()
    Dim PrecioMinimo As Currency
    Dim Num_Proc As Double
    Dim Valor_Impuesto As Currency
    Dim Imp_TotalPro, precioVpro As Currency
   
    
    
    If CCur(txtPrecioV_Pro) = 0 Then
        MsgBox "El precio venta del articulo no puede ser cero", vbExclamation, "Error"
       Exit Sub
    End If
    
    If txtCant_Pro.Text = 0 Then
       MsgBox "La cantidad del artículo no puede ser cero", vbExclamation, "Error"
       Exit Sub
    End If
   
    If CCur(txtValorTotalPro) <= 0 Then
       MsgBox "El total del producto no puede ser negativo ni igual a cero", vbCritical, "Error"
       txtCant_Pro = 0
       txtCant_Pro.SetFocus
    End If
    
    PrecioMinimo = CCur(txtPrecioMinimoPro.Text)
    
    If PrecioMinimo > 0 Then
       precioVpro = CCur(txtValorTotalPro) / txtCant_Pro.Text
       If CCur(txtPrecioV_Pro) < PrecioMinimo Then
          MsgBox "El precio digitado no puede ser menor al precio mínimo establecido", vbExclamation, "Precio mínimo"
          txtPrecioV_Pro.Text = PrecioVentaGlob
          txtValorTotalPro = txtCant_Pro * CCur(txtPrecioV_Pro)
          Exit Sub
       End If
    End If
    
    'Calcular Impuestos
    mp_TotalPro = 0
    If G_Empresa_Regimen = "Común" And PorImpuesto_Producto > 0 Then
       Num_Porc = (PorImpuesto_Producto / 100) + 1
       Valor_Impuesto = CCur(txtValorTotalPro) / Num_Porc
       mp_TotalPro = CCur(txtValorTotalPro) - Valor_Impuesto
    End If
    
    If msGrid.Rows <= 1 Then
       ConsecutivoTemp = UltimaVentaTemp
    End If
    
    If V_Editar_Producto = False Then
        Sqlinsert = "Insert Into tblDetalle_Venta (Num_VentaTemp, IdProducto, Cantidad_dv, P_Costo_dv, P_Venta_dv, Impuesto_dv, Descuento_dv) " _
                & "VALUES (" & ConsecutivoTemp & ", " & IdProducto & ", '" & txtCant_Pro & "', '" & PrecioC_Pro & "', '" & CCur(txtPrecioV_Pro.Text) & "', '" & mp_TotalPro & "', '" & txtDesuentoVPro & "' ) "
        
        ConexionADO.Execute Sqlinsert, , adExecuteNoRecords
    Else
            
        SqlUpdate = "Update tblDetalle_Venta SET Cantidad_dv = '" & txtCant_Pro & "' , P_Venta_dv = '" & CCur(txtPrecioV_Pro.Text) & "', Descuento_dv = '" & txtDesuentoVPro & "' Where IdProducto = " & IdProducto
        ConexionADO.Execute SqlUpdate, , adExecuteNoRecords
    End If
    
    Call LlenarGridProductos
    
    Call LimpiarDatosProducto
    
End Sub

Si notamos en el código se coloco un condicional que determina si se va a agregar un producto nuevo a se va a modificar: If V_Editar_Producto = False Then 

Si es true entonces se actualiza el producto usando el código SQL que esta en SqlUpdate .

para terminar debemos poner en false la variable V_Editar_Producto en varias partes del codigo:

Sub Inicial()
    V_Editar_Producto = False
    txtFechaApro.Text = Format(Date, "dd/mm/yyyy")
    cmdTipoFact.ListIndex = 0
    txtDias.Text = 0
    txtDesuentoVPro.Text = 0
    txtPorcDescuentoPro = 0
End Sub
Sub LimpiarDatosProducto()
    V_Editar_Producto = False
    txtCodigoPro.Text = ""
    txtNombrePro.Text = ""
    txtCant_Pro.Text = 0
    txtPrecioV_Pro.Text = 0
    txtValorTotalPro.Text = 0
    txtPorcDescuentoPro.Text = 0
    txtDesuentoVPro.Text = 0
    txtPrecioMinimoPro.Text = 0
    txtExistPro.Text = 0
    txtNombrePro.SetFocus
End Sub

Cargar Facturas Temporales

Se crea un formulario Llamado frmFacturaTemp que tiene una Propiedad MDIChild = false porque va a hacer un formulario modal el código del formulario completo es el siguiente:

Sub ListarTemporales()
    Dim Sql As String
    Dim Columnas As Integer
    
    Sql = "SELECT tblDetalle_Venta.Num_VentaTemp, Sum(tblDetalle_Venta.P_Venta_dv*tblDetalle_Venta.Cantidad_dv) AS Total From tblDetalle_Venta GROUP BY tblDetalle_Venta.Num_VentaTemp ORDER BY Count(tblDetalle_Venta.Id_detalle);"
    Columnas = 2
    Call LlenarGrid(msGrid, Sql, Columnas)
    
    
    msGrid.ColWidth(0) = 0
    msGrid.ColWidth(1) = 1300
    msGrid.ColWidth(2) = 1700
    
    msGrid.TextMatrix(0, 1) = "No. Factura"
    msGrid.TextMatrix(0, 2) = "Valor Total"
    
End Sub

Private Sub cmdBorrarPro_Click()
    If msGrid.Row > 0 Then
       Num_Factura = msGrid.TextMatrix(msGrid.Row, 1)
       If Num_Factura <> "" Then
          Res = MsgBox("¿Esta segúro de borrar la factura temporal No. " & Num_Factura & "? ", vbYesNo, "Borrar Producto")
          If Res = vbYes Then
             Sql = "Delete from tblDetalle_Venta Where Num_VentaTemp = " & Num_Factura
             ConexionADO.Execute Sql
             Call ListarTemporales
          End If
       End If
    End If
End Sub

Private Sub cmdCerrar_Click()
    Unload Me
End Sub

Private Sub cmdSeleccionar_Click()
    Num_Temp = msGrid.TextMatrix(msGrid.Row, 1)
    If Num_Temp <> "" Then
        Call frmVentas.CargarFactTemporal(Num_Temp)
        Unload Me
    End If
End Sub

Private Sub Form_Load()
    Call ListarTemporales
End Sub

Private Sub msGrid_DblClick()
    Call cmdSeleccionar_Click
End Sub

Luego en el formulario de Ventas debemos tener una función llamada CargarFactTemporal que recibo el numero de factura temporal.

Sub CargarFactTemporal(Cons_Temp)
    ConsecutivoTemp = Cons_Temp
    Call LlenarGridProductos
End Sub

En el vídeo explico todo paso a paso:

Total Page Visits: 4405 - Today Page Visits: 3
Luis F. Martinez

Deja un comentario
Compartir
Publicado por
Luis F. Martinez

Publicaciones Recientes

Calculadora Básica en Visual Basic 6, Aprende a usar variables

En este proyecto, vamos a desarrollar una calculadora sencilla usando Visual Basic 6, que permite…

2 meses hace

Lenguajes de Programación Más Demandados en 2024

6 de septiembre de 2024 - La demanda de desarrolladores de software sigue en aumento,…

3 meses hace

La Unión Europea Aprueba la Primera Ley de Inteligencia Artificial del Mundo

En un movimiento histórico, la Unión Europea ha aprobado la primera ley de inteligencia artificial…

3 meses hace

Sincronización de Datos en Línea VB6: Lleva tu Proyecto al Siguiente Nivel

¿Sigues trabajando con Visual Basic 6 y necesitas una forma eficiente de acceder a tus…

3 meses hace

OpenAI revoluciona la interacción con IA: ChatGPT ahora interpreta imágenes

OpenAI revoluciona la interacción con IA: ChatGPT ahora interpreta imágenes En un avance significativo para la…

7 meses hace

Curso de Programación Básica en Visual Basic 6.0

Bienvenido al Curso Básico de Visual Basic 6! Este curso está diseñado para llevarte a…

12 meses hace

Este sitio utiliza cookies desea activarlas