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 *******/
Siguiendo con el curso toca la parte de ver el listado de las ventas que se han realizado hasta este momento, esta parte es muy importante porque desde esta ventana podemos Re-Imprimir una factura, Anular (Devuelve los productos al inventario, y no la cuenta el el cierre de caja), Devoluciones, Exportar a Excel.
Lo primero es crear los controles que va a contener la ventana, les doy una ayudita es casi igual a la ventana de kardex asi que puedes copiar y pegar de allá.
cmdMeses = es el combobox para los meses del año
txtAnio = es un TexBox para el año
chkPorFecha = es un CheckBox, al dar clic se activan la búsqueda por rango de fecha
DTFecha1 = es un DTPicker para la fecha 1
DTFecha2 = es un DTPicker para la fecha 2
cmdBuscar = el botón de Buscar
txtNombreCli = TextBox para la búsqueda por nombre del cliente
msGrid = MSHFlexGrid par el listado de facturas
cmdImprimir = Botón de Imprimir
cmdAnular = Botón de Anular
cmdDevolucion = Botón para las Devoluciones
cmdExportar = Botón para Exportar a Excel
cmdCerrar = Botón Cerrar ventana
txtTotalLista = TextBox para mostrar el Total de las facturas listadas en el Grid
Ya que tenemos los nombres de los controles si vamos al código que es muy sencillo:
Lo primero es el Evento Load del Formulario.
Private Sub Form_Load()
Call CentrarFormulario(Me, frmPrincipal)
cmdMeses.ListIndex = Format(Date, "mm") - 1
txtAnio.Text = Format(Date, "yyyy")
DTFecha1.Enabled = False
DTFecha2.Enabled = False
Call ListarFacturasVenta
End Sub En el código anterior centramos el formulario, luego asignamos el mes actual al Combobox de Mes y Extraemos el año de la fecha actual y lo mostramos en el control.
Lo siguiente es colocar el codigo del CheckBox PorFecha para que al dar clic habilito o deshabilite los controles de Pick de Fecha
Private Sub chkPorFecha_Click()
If chkPorFecha.Value = 1 Then
DTFecha1.Enabled = True
DTFecha2.Enabled = True
Else
DTFecha1.Enabled = False
DTFecha2.Enabled = False
End If
End Sub En el código anterior si activamos el Checkbox el valor cambia a 1 por lo que se activan los controles de fecha y damos clic y lo desactivamos entonces se desactivan los controles.
Continuamos con el botón de buscar que llama al procedimiento ListarFacturasVenta:
Private Sub cmdBuscar_Click()
Call ListarFacturasVenta
End Sub Sub ListarFacturasVenta()
Dim Filtro
Dim Sql As String
Dim Columnas As Integer
Filtro = ""
'Buscar por mes
If chkPorFecha.Value = 0 Then
Mes = cmdMeses.ListIndex + 1
Anio = txtAnio.Text
Filtro = " Month(v.FechaHora) = " & Mes & " and Year(v.FechaHora) = " & Anio
Else
'buscar por rango de fecha
Fecha1 = Format(DTFecha1.Value, "mm/dd/yyyy")
Fecha2 = Format(DTFecha2.Value, "mm/dd/yyyy")
Filtro = " Format(v.FechaHora,'dd/mm/yyyy') Between #" & Fecha1 & "# and #" & Fecha2 & "#"
End If
If txtNombreCli.Text <> "" Then
NombreCliente = txtNombreCli.Text
Else
NombreCliente = "%"
End If
Sql = "Select v.Num_Factura, v.FechaHora, tblClientes.NombreApellidos_cli, v.TipoFact, v.TotalFactura, v.EstadoFact From tblVentas as v, tblClientes Where v.IdCliente = tblClientes.IdCliente and tblClientes.NombreApellidos_cli like '" & NombreCliente & "%' and " & Filtro & " Order by v.Num_Factura ASC "
Columnas = 6
Call LlenarGrid(msGrid, Sql, Columnas)
msGrid.ColWidth(0) = 0
msGrid.ColWidth(1) = 1000
msGrid.ColWidth(2) = 1400
msGrid.ColWidth(3) = 4700
msGrid.ColWidth(4) = 1200
msGrid.ColWidth(5) = 1600
msGrid.ColWidth(6) = 1000
msGrid.TextMatrix(0, 1) = "No. Fact"
msGrid.TextMatrix(0, 2) = "Fecha"
msGrid.TextMatrix(0, 3) = "Cliente"
msGrid.TextMatrix(0, 4) = "Tipo"
msGrid.TextMatrix(0, 5) = "Total"
msGrid.TextMatrix(0, 6) = "Estado"
msGrid.Redraw = False
SumaT = 0
For I = 1 To msGrid.Rows - 1
msGrid.Row = I
msGrid.Col = 4
msGrid.CellAlignment = flexAlignCenterCenter
msGrid.Col = 6
msGrid.CellAlignment = flexAlignCenterCenter
msGrid.TextMatrix(I, 5) = Format(msGrid.TextMatrix(I, 5), "currency")
msGrid.TextMatrix(I, 2) = Format(msGrid.TextMatrix(I, 2), "dd/mm/yyyy")
If msGrid.TextMatrix(I, 4) = "1" Then
msGrid.TextMatrix(I, 4) = "Crédito"
Else
msGrid.TextMatrix(I, 4) = "Contado"
End If
If msGrid.TextMatrix(I, 6) = "1" Then
msGrid.TextMatrix(I, 6) = "Valida"
Else
msGrid.TextMatrix(I, 6) = "Anulada"
End If
SumaT = SumaT + msGrid.TextMatrix(I, 5)
Next I
msGrid.Redraw = True
txtTotalLista.Text = Format(SumaT, "currency")
End Sub En el código anterior lo primero es validar si la búsqueda es por rango fechas o por Mes y Año eso lo validamos con el CheckBox, si la propiedad Value es 1 se busca por rango de fecha de lo contrario por Mes y año.
Lo siguiente es validar si el control txtNombreCli esta vació para filtrar también por el nombre del cliente.
Nos quedaría faltando el Botón Imprimir, para poder implementar este botón hubo que mover el procedimiento ImprimirFactura que estaba en el formulario de ventas a un modulo nuevo llamado Mod_Impresiones. Y se le hicieron unas modificaciones para que fuera mas global a la hora de imprimir.
Cambie el nombre de este procedimiento de imprimir al siguiente ImprimirFactura_carta:
Sub ImprimirFactura_carta(N_factura)
Dim RecorsetFactura As New ADODB.RecordSet
Dim RecosetEncaFact As New ADODB.RecordSet
Sql = "SELECT tblProductos.CodigoPro, tblProductos.NombrePro, tblDetalle_Venta.Cantidad_dv, tblDetalle_Venta.P_Venta_dv, tblProductos.Impuesto, tblDetalle_Venta.Descuento_dv, ((tblDetalle_Venta.Cantidad_dv * tblDetalle_Venta.P_Venta_dv) - tblDetalle_Venta.Descuento_dv) as Subtotal" _
& " FROM tblProductos INNER JOIN tblDetalle_Venta ON tblProductos.IdProducto = tblDetalle_Venta.IdProducto WHERE tblDetalle_Venta.Num_Factura = " & N_factura
Set RecorsetFactura = ConexionADO.Execute(Sql)
SumaSubTotal = 0
SumaImpuesto = 0
SumaDescuento = 0
Do While Not RecorsetFactura.EOF
SumaSubTotal = SumaSubTotal + RecorsetFactura("Subtotal")
SumaImpuesto = SumaImpuesto + RecorsetFactura("Impuesto")
SumaDescuento = SumaDescuento + RecorsetFactura("Descuento_dv")
RecorsetFactura.MoveNext
Loop
Sql = "Select * From tblVentas as v, tblClientes Where v.IdCliente = tblClientes.IdCliente and v.Num_Factura = " & N_factura
Set RecosetEncaFact = ConexionADO.Execute(Sql)
If RecosetEncaFact.RecordCount > 0 Then
TipoFactura = "Contado"
If RecosetEncaFact("TipoFact") <> 0 Then
TipoFactura = "Crédito"
End If
NombreApellidos_cli = RecosetEncaFact("NombreApellidos_cli")
Identificacion_cli = RecosetEncaFact("Identificacion_cli")
Telefonos_cli = RecosetEncaFact("Telefonos_cli")
Direccion_cli = RecosetEncaFact("Direccion_cli")
FechaHora = RecosetEncaFact("FechaHora")
SubTotal = (SumaSubTotal - SumaImpuesto - SumaDescuento)
Descuento = SumaDescuento
Impuesto = SumaImpuesto
TotalFactura = SumaSubTotal
End If
NProductos = RecorsetFactura.RecordCount - 1
Set DtrFacturaVenta.DataSource = RecorsetFactura
With DtrFacturaVenta
.Sections("Sección2").Controls("Etq_Empresa").Caption = Glo_NombreEmpresa
.Sections("Sección2").Controls("Etq_NumFactura").Caption = N_factura
.Sections("Sección2").Controls("Etq_Termino").Caption = RecosetEncaFact("TipoFact")
.Sections("Sección2").Controls("Etq_Regimen").Caption = G_Empresa_Regimen
.Sections("Sección2").Controls("Etq_Nit").Caption = Glo_NitEmpresa
.Sections("Sección2").Controls("Etq_Telefono").Caption = Glo_TelefonoEmpresa
.Sections("Sección2").Controls("Etq_Direccion").Caption = Glo_DireccionEmpresa
.Sections("Sección2").Controls("Etq_Descripcion").Caption = Glo_DescripcionEmpresa
If Dir(Glo_LogoEmpresa) <> "" Then
Set .Sections("Sección2").Controls("imgLogo").Picture = LoadPicture(Glo_LogoEmpresa)
End If
.Sections("Sección2").Controls("Etq_FechaFact").Caption = FechaHora
.Sections("Sección2").Controls("Etq_NomCliente").Caption = NombreApellidos_cli
.Sections("Sección2").Controls("Etq_ClienNit").Caption = Identificacion_cli
.Sections("Sección2").Controls("Etq_ClienDireccion").Caption = Direccion_cli
.Sections("Sección2").Controls("Etq_ClienTelefono").Caption = Telefonos_cli
.Sections("Sección5").Controls("Etq_Subtotal").Caption = Format(SubTotal, "currency")
.Sections("Sección5").Controls("Etq_Impuesto").Caption = Format(Impuesto, "currency")
.Sections("Sección5").Controls("Etq_Descuento").Caption = Format(Descuento, "currency")
.Sections("Sección5").Controls("Etq_TotalFactura").Caption = Format(TotalFactura, "currency")
.Sections("Sección5").Controls("Etq_NumArt").Caption = NProductos
End With
End Sub De esta manera podemos llamar desde cualquier parte del proyecto este procedimiento pasarle el numero de factura para que nos de la vista previa de la misma.
El código del botón imprimir quedo de la siguiente manera:
Private Sub cmdImprimir_Click()
Nfactura = msGrid.TextMatrix(msGrid.Row, 1)
If Nfactura <> "" Then
Call ImprimirFactura_carta(Nfactura)
End If
End Sub Se toma el numero de la factura que se selecciono en el Grid y se le envía al procedimiento para que nos muestre la factura para impresión.
Como se quito el procedimiento ImprimirFactura de el formulario Venta hay que cambiarle el nombre al llamado que se le hace desde esa ventana para que no salga error cuando se creen las facturas quedaría de la siguiente manera:
En el procedimiento Sub Finalizar_Guardado_Factura() renombramos el procedimiento call ImprimirFactura(Num_Factura) por:
Call ImprimirFactura_carta(Num_Factura)
Nos vemos en la siguiente lección.
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