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 */ span.acssf146f{color:#ff0000;}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 esta parte del Modulo Cartera de Clientes 4, llega una parte muy emocionante, ya que podemos ingresar los pagos de los clientes.
En la lección anterior listamos todas las facturas en mora del cliente seleccionado, ahora al seleccionar un cliente y darle clic al botón Ingresar Pago se guardara el pago y se actualizara el saldo del cliente.
Primero creamos el procedimiento que nos mostrara el saldo actual del cliente y se hace de la siguiente manera:
Sub Sumas_Totales()
Dim SaldoTotal, TotalAbonos, TotalDescuentos, TotalAPagar, SaldoFinal As Currency
For Fila = 1 To msGrid.Rows - 1
SaldoTotal = SaldoTotal + CCur(msGrid.TextMatrix(Fila, 6))
TotalAbonos = TotalAbonos + CCur(msGrid.TextMatrix(Fila, 7))
TotalDescuentos = TotalDescuentos + CCur(msGrid.TextMatrix(Fila, 8))
Next Fila
TotalAPagar = TotalAbonos - TotalDescuentos
SaldoFinal = SaldoTotal - TotalAPagar
txtSaldoActual = Format(SaldoTotal, "currency")
txtSubtotalPago = Format(TotalAbonos, "currency")
txtDescuento = Format(TotalDescuentos, "currency")
txtTotalaPagar = Format(TotalAPagar, "currency")
txtSaldoFinal = Format(SaldoFinal, "currency")
End Sub
En este procedimiento Sumamos columnas de las que tenemos en el grid (Columna Saldo, Columna Valor Factura, Columna Descuentos)
Esto valores los mostramos en cada uno de los campos correspondientes.
Luego ese procedimiento se agrega al Lista de Facturas
Sub Listado_Facturas()
Dim Sql As String
Dim Filtro As String
Dim Columnas As Integer
Tipo = cmbTipo.ListIndex
Filtro = ""
Select Case Tipo
Case 0: 'sin pagar
Filtro = " and SaldoFactura > 0 "
Case 1: 'facturas pagas
Filtro = " and SaldoFactura = 0 "
Case 2: 'vencidas
Filtro = " and now > DateAdd('d',Dias,FechaHora) and SaldoFactura > 0 "
End Select
Sql = "Select Num_Factura, FechaHora, Dias, DateAdd('d', Dias, FechaHora) AS Fechav, TotalFactura, SaldoFactura, '0' as abono, '0' as descuento From tblVentas Where EstadoFact = 1 and IdCliente = " & txtCodigoCli & Filtro
Columnas = 8
Call LlenarGrid(msGrid, Sql, Columnas)
msGrid.ColWidth(0) = 0
msGrid.ColWidth(1) = 1300
msGrid.ColWidth(2) = 1600
msGrid.ColWidth(3) = 1100
msGrid.ColWidth(4) = 1400
msGrid.ColWidth(5) = 1800
msGrid.ColWidth(6) = 1800
msGrid.ColWidth(7) = 1800
msGrid.TextMatrix(0, 1) = "No. Factura"
msGrid.TextMatrix(0, 2) = "Fecha"
msGrid.TextMatrix(0, 3) = "Dias"
msGrid.TextMatrix(0, 4) = "Fecha V."
msGrid.TextMatrix(0, 5) = "Valor Factura"
msGrid.TextMatrix(0, 6) = "Saldo"
msGrid.TextMatrix(0, 7) = "Abono"
msGrid.TextMatrix(0, 8) = "Descuento"
For I = 1 To msGrid.Rows - 1
msGrid.Col = 1
msGrid.CellAlignment = flexAlignCenterCenter
msGrid.Col = 3
msGrid.CellAlignment = flexAlignCenterCenter
msGrid.TextMatrix(I, 5) = Format(msGrid.TextMatrix(I, 5), "currency")
msGrid.TextMatrix(I, 6) = Format(msGrid.TextMatrix(I, 6), "currency")
msGrid.TextMatrix(I, 7) = Format(msGrid.TextMatrix(I, 7), "currency")
msGrid.TextMatrix(I, 8) = Format(msGrid.TextMatrix(I, 8), "currency")
msGrid.TextMatrix(I, 2) = Format(msGrid.TextMatrix(I, 2), "dd/mm/yyyy")
msGrid.TextMatrix(I, 4) = Format(msGrid.TextMatrix(I, 4), "dd/mm/yyyy")
Next I
Call Sumas_Totales
End Sub
Ahora Construimos un frame para ingresar los pagos debe quedar de la siguiente manera:
El Iframe tiene el nombre de Name = frmPagoFactura y el la propiedad Caption = “Ingresar Pago Factura” que lo pueden ver en la imagen y la Propiedad Visible = False
Luego en el Botón Ingresar Pago que lo pueden ver en la Imagen va el siguiente código:
Private Sub cmdPagar_Click()
NumFactura = msGrid.TextMatrix(msGrid.Row, 1)
Saldo = msGrid.TextMatrix(msGrid.Row, 6)
txtNumFactura.Text = NumFactura
txtSaldoActualFact = Saldo
txtValorAbono.Text = 0
txtValorDescuento.Text = 0
txtSaldoFactura.Text = Format(Saldo, "currency")
cmbTipoPago.ListIndex = 0
msGrid.Enabled = False
frmPagoFactura.Visible = True
End Sub El código anterior toma los datos de la factura y lo muestra en el frame que esta haciendo la labor de ventana de pagos, El frame se pone en visible y el grid se pone en Enabled = False para que no se vaya a mover la fila seleccionada.
Ahora viene la parte mas importante ingresar el pago:
Sub GuardarPagoCliente()
Dim RecordCliente As New ADODB.RecordSet
Dim RecordSaldoAc As New ADODB.RecordSet
Res = MsgBox("¿Esta seguro de guardar el pago?", vbYesNo, "Guardar Pago")
If Res <> vbYes Then
Exit Sub
End If
Num_Factura = txtNumFactura
Fecha = Date
ValorPago = CCur(txtValorAbono.Text)
SaldoFacturaA = CCur(txtSaldoActualFact.Text)
If ValorPago > SaldoFacturaA Then
MsgBox "El Pago no puede ser mayor al Saldo de la factura, verifique", vbExclamation, "Error"
Exit Sub
End If
TotalFactura = CCur(msGrid.TextMatrix(msGrid.Row, 5))
Descuento = txtValorDescuento
Id_FormaPago = cmbTipoPago.ListIndex
EstadoPago = "V"
FechaMod = Date & " " & Time
Sql = "Insert into tblPagos_Factura_Venta (Num_Factura, Fecha, ValorPago, Descuento, Id_FormaPago, EstadoPago, FechaMod) " _
& "Values (" & Num_Factura & ", '" & Fecha & "', '" & CCur(ValorPago) & "', '" & CCur(Descuento) & "', " & Id_FormaPago & ", '" & EstadoPago & "', '" & FechaMod & "') "
ConexionADO.Execute Sql
'Actualizamos el Saldo de la Factura
NuevoSaldo = CCur(TotalFactura) - ValorPago
'Se actualiza el saldo en la tabla
sqlSald = "Select SUM(ValorPago) as Saldo From tblPagos_Factura_Venta Where Num_Factura = " & Num_Factura & " and EstadoPago = 'V'"
Set RecordSaldoAc = ConexionADO.Execute(sqlSald)
SaldoFacturaSel = 0
If RecordSaldoAc.RecordCount > 0 Then
SaldoFacturaSel = CCur(TotalFactura) - RecordSaldoAc("Saldo")
End If
sqlUp = "Update tblVentas SET SaldoFactura = " & SaldoFacturaSel & " Where Num_Factura = " & Num_Factura
ConexionADO.Execute sqlUp
'Se actualiza el saldo de la factura en el grid
msGrid.TextMatrix(msGrid.Row, 6) = Format(NuevoSaldo, "currency")
For Fila = 1 To msGrid.Rows - 1
SaldoTotal = SaldoTotal + CCur(msGrid.TextMatrix(Fila, 6))
Next Fila
SaldoTotalCli = SaldoTotal
'Registramos el Saldo Total en la Tabla Saldos
IdCliente = txtCodigoCli.Text
consulta = "Select IdCliente from tblSaldos_Clientes Where IdCliente = " & IdCliente
Set RecordCliente = ConexionADO.Execute(consulta)
If RecordCliente.RecordCount = 0 Then
sqlSaldo = "Insert into tblSaldos_Clientes (IdCliente, Saldo, FechaMod) Values (" & IdCliente & ", '" & SaldoTotalCli & "', now()) "
Else
sqlSaldo = "Update tblSaldos_Clientes SET Saldo = '" & SaldoTotalCli & "', FechaMod = Now() Where IdCliente = " & IdCliente
End If
ConexionADO.Execute sqlSaldo
MsgBox "Pago Guardado", vbInformation, "Guardar"
Call Listado_Facturas
Call Sumas_Totales
End Sub El código va comentado para que lo puedan entender mejor este procedimiento lo llamamos desde el boton guardar del Frame.
Private Sub cmdGuardarPago_Click()
Call GuardarPagoCliente
frmPagoFactura.Visible = False
msGrid.Enabled = True
End Sub
Ahora el botón Cancelar del Frame debe ir esto:
Private Sub cmdCancelar_Click()
frmPagoFactura.Visible = False
msGrid.Enabled = True
End Sub Ahora hay que crear un procedimiento que me permita ver el saldo de la factura a medida que escribo el valor del pago, o del descuento seria de la siguiente manera:
Sub SaldoPagoFactura()
If txtValorAbono.Text = "" Then
Exit Sub
End If
If txtValorDescuento.Text = "" Then
Exit Sub
End If
AbonoPago = CCur(txtValorAbono.Text)
Descuento = CCur(txtValorDescuento.Text)
If CCur(AbonoPago) > 0 And CCur(AbonoPago) <= CCur(txtSaldoActualFact) Then
SaldoFact = CCur(txtSaldoActualFact) - CCur(AbonoPago) - CCur(Descuento)
txtSaldoFactura.Text = Format(SaldoFact, "currency")
End If
End Sub Este procedimiento lo colocamos en el evento KeyUp de ValorAbono y de Descuento:
Private Sub txtValorAbono_KeyUp(KeyCode As Integer, Shift As Integer)
Call SaldoPagoFactura
End Sub Private Sub txtValorDescuento_KeyUp(KeyCode As Integer, Shift As Integer) Call SaldoPagoFactura End Sub
Les voy a dejar el formulario (Si el formulario de pagos como esta actualmente) en un enlace acortado este medio lo uso para obtener algunos ingresos asi que tengas paciencia para descargar el formulario solo deben esperar el conteo, les dejo varias opciones de descarga.
No olviden Compartir y Seguir el canal pronto subir los vídeos faltantes.
No te olvides de Compartir
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