amp-web-push-widget button.amp-subscribe { display: inline-flex; align-items: center; border-radius: 5px; border: 0; box-sizing: border-box; margin: 0; padding: 10px 15px; cursor: pointer; outline: none; font-size: 15px; font-weight: 500; background: #4A90E2; margin-top: 7px; color: white; box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.5); -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } .amp-logo amp-img{width:190px} .amp-menu input{display:none;}.amp-menu li.menu-item-has-children ul{display:none;}.amp-menu li{position:relative;display:block;}.amp-menu > li a{display:block;} /* Inline styles */ div.acss138d7{clear:both;}div.acssf5b84{--relposth-columns:3;--relposth-columns_m:2;--relposth-columns_t:2;}div.acssa8a3d{aspect-ratio:1/1;background:transparent no-repeat scroll 0% 0%;height:300px;max-width:300px;}div.acss13836{color:#333333;font-family:Arial;font-size:14px;height:75px;}span.acss47fcd{background:#FFFFFF;color:#000000;}div.acss0f1bf{display:none;}a.acssf23c5{font-size:8pt;}a.acss24ea4{font-size:16.4pt;}a.acss066f0{font-size:22pt;} .ampforwp_wc_shortcode{margin-top: 0;padding:0;display:inline-block;width: 100%;} .ampforwp_wc_shortcode li{position: relative;width:29%; font-size:12px; line-height: 1; float: left;list-style-type: none;margin:2%;} .ampforwp_wc_shortcode .onsale{position: absolute;top: 0;right: 0;background: #ddd;padding: 7px;font-size: 12px;} .single-post .ampforwp_wc_shortcode li amp-img{margin:0} .ampforwp-wc-title{margin: 8px 0px 10px 0px;font-size: 13px;} .ampforwp-wc-price{color:#444} .wc_widgettitle{text-align:center;margin-bottom: 0px;} .ampforwp-wc-price, .ampforwp_wc_star_rating{float:left;margin-right: 10px;} .icon-widgets:before {content: "\e1bd";}.icon-search:before {content: "\e8b6";}.icon-shopping-cart:after {content: "\e8cc";} /******* Paste your Custom CSS in this Editor *******/
En esta sección vemos como se ingresan productos en el detalle de la factura, para eso se crea un procedimiento que toma los datos esenciales del producto para agregarlos a la tabla detalle de venta, en el botón Ingresar va el siguiente código:
Private Sub cmdIngresarPro_Click()
Call IngresarProducto
End Sub El sub procedimiento IngresarProducto, lo primero es validar los campos del producto seleccionado antes de ingresarlo a la base de datos, un validación importante es el precio minimo que debe tener el cuenta el descuento que se le hizo al producto.
Después de esto se verifica si el producto que se agrega es el primero de la lista, si sí es el primero entonces se genera un numero temporal con el que se guardara en el detalle el producto agregado.
Luego de las validación se hacer el sql que ingresa el producto en la tabla detalle el código siguiente:
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
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
Call LlenarGridProductos
Call LimpiarDatosProducto
End Sub Función para generar el numero temporal con que se guarda el detalle de la factura actual. Este numero se genera con el día actual y hora, minutos y segundos quedando de la siguiente manera:
Function UltimaVentaTemp()
UltimaVentaTemp = Format(Now, "dd") & Format(Now, "hhmmss")
End Function
La tabla Detalle de venta es la siguiente:
Se actualizo el sub procedimiento BuscarProductoNombre de la siguiente manera:
Sub BuscarProductoNombre()
Dim Sql As String
Dim Index As Long
Sql = "Select Top 20 * From tblProductos Where NombrePro Like '" & txtNombrePro.Text & "%'"
Set RecordSet_Producto = ConexionADO.Execute(Sql)
If RecordSet_Producto.RecordCount > 0 Then
lstListaRapida.Clear
Index = 0
Do While Not RecordSet_Producto.EOF
lstListaRapida.AddItem RecordSet_Producto("NombrePro")
lstListaRapida.ItemData(Index) = RecordSet_Producto("IdProducto")
Index = Index + 1
RecordSet_Producto.MoveNext
Loop
lstListaRapida.Visible = True
lstListaRapida.ListIndex = 0
Else
lstListaRapida.Visible = False
End If
End Sub También se actualizo el evento KeyUp del control lstListaRapida se corrigió la variable IdProducto
Private Sub lstListaRapida_KeyUp(KeyCode As Integer, Shift As Integer)
Dim IdPro As Long
If KeyCode = 40 Or KeyCode = 38 Then
IdProducto = lstListaRapida.ItemData(lstListaRapida.ListIndex)
Call DatosProducto(IdProducto)
End If
If KeyCode = 27 Then
lstListaRapida.Visible = False
End If
If KeyCode = 13 Then
txtCant_Pro.SetFocus
lstListaRapida.Visible = False
End If
End Sub Otro procedimiento que se modifico fue DatosProducto donde se cambio la variable que recibe el parámetro llamada IdProducto por Id_Producto
Sub DatosProducto(Id_Producto)
RecordSet_Producto.Filter = " IdProducto = " & Id_Producto
If RecordSet_Producto.RecordCount > 0 Then
With RecordSet_Producto
txtCodigoPro.Text = !CodigoPro
txtNombrePro.Text = !NombrePro
txtPrecioV_Pro.Text = !PVenta1Pro
If cmbPrecios.ListIndex = 0 Then
txtPrecioV_Pro.Text = !PVenta1Pro
ElseIf cmbPrecios.ListIndex = 1 Then
txtPrecioV_Pro.Text = Format(!PVenta2Pro, "currency")
Else
txtPrecioV_Pro.Text = Format(!PVenta3Pro, "currency")
End If
PrecioVentaGlob = txtPrecioV_Pro.Text
txtPrecioMinimoPro.Text = Format(!PMinimoPro, "currency")
txtExistPro.Text = !ExistPro
Precio2_Producto = !PVenta2Pro
Precio3_Producto = !PVenta3Pro
PrecioC_Pro = !PCostoPro
End With
End If
End Sub Se creo el procedimiento para inicializar el control grid de productos:
Sub InicializarGrip()
msGrid.Cols = 9
msGrid.Rows = 1
msGrid.ColWidth(0) = 0
msGrid.ColWidth(1) = 0
msGrid.ColWidth(2) = 900 'codigo
msGrid.ColWidth(3) = 4300 'nombre
msGrid.ColWidth(4) = 800 'cantidad
msGrid.ColWidth(5) = 1300 'preciov
msGrid.ColWidth(6) = 1300 'imp
msGrid.ColWidth(7) = 1300 'subtotal
msGrid.ColWidth(8) = 1300 'Desc
msGrid.TextMatrix(0, 0) = "ID"
msGrid.TextMatrix(0, 1) = "IdPro"
msGrid.TextMatrix(0, 2) = "Código"
msGrid.TextMatrix(0, 3) = "Nombre Producto"
msGrid.TextMatrix(0, 4) = "Cant"
msGrid.TextMatrix(0, 5) = "Precio V"
msGrid.TextMatrix(0, 6) = "Impuesto"
msGrid.TextMatrix(0, 7) = "Subtotal"
msGrid.TextMatrix(0, 8) = "Descuento"
End Sub Y por último el evento Load del formulario se agrega el procedimiento de inicializar grid:
Private Sub Form_Load()
Call Inicial
lstListaRapida.Top = 2605
lstListaRapida.Left = 1920
cmbPrecios.ListIndex = 0
Call InicializarGrip
End Sub
Suscribete a Youtube
Siguenos en Twitter
Siguenos en Facebook
Saludos, en este tutorial aprenderás a integrar tu aplicación de Visual Basic 6 con un…
Recientemente, muchos usuarios de Hotmail (ahora Outlook.com) han reportado un error al intentar iniciar sesión…
En este proyecto, vamos a desarrollar una calculadora sencilla usando Visual Basic 6, que permite…
6 de septiembre de 2024 - La demanda de desarrolladores de software sigue en aumento,…
En un movimiento histórico, la Unión Europea ha aprobado la primera ley de inteligencia artificial…
¿Sigues trabajando con Visual Basic 6 y necesitas una forma eficiente de acceder a tus…
Este sitio utiliza cookies desea activarlas
Leave a Comment