Curso de Software de Ventas Pt 46 Modulo Cartera de Clientes 5

En esta lección del Modulo Cartera de Clientes se creara el formulario de listado de pagos.

Colabora y Suscribete a mi canal de   

El formulario de listado de pagos permite ver los pagos de una factura o de todas las facturas de un cliente determinado.

El formulario se llama frmPagosClientes y se ve de la siguiente manera.

Lo primero que se programa es el evento load del formulario y se ve de la siguiente manera:

Private Sub Form_Load()
    cmbMeses.ListIndex = 0
    txtAnio.Text = Format(Date, "yyyy")
    Num_Factura_Sel = frmFacturasCliente.msGrid.TextMatrix(frmFacturasCliente.msGrid.Row, 1)
    If Num_Factura_Sel = "" Then
       Num_Factura_Sel = 0
    End If
    Call Listado_PagosCliente
End Sub

Lo siguiente es el Listado_PagosCliente

Sub Listado_PagosCliente()
    Dim Sql As String
    Dim Filtro As String
    Dim Columnas As Integer
    
    Anio = txtAnio.Text
    Mes = cmbMeses.ListIndex
    If cmbMeses.ListIndex > 0 Then
       Filtro = " Month(Fecha) = " & Mes & " and Year(Fecha) = " & Anio
    Else
       Filtro = " Year(Fecha) = " & Anio
    End If
    If chkFacturaActual.Value = 1 Then
       Filtro = Filtro & " and Num_Factura = " & Num_Factura_Sel
    End If
    Sql = "Select IdSaldoFactVen, Num_Rec_Pago, Fecha, Num_Factura, ValorPago, Id_FormaPago, EstadoPago  From tblPagos_Factura_Venta Where " & Filtro
    
    Columnas = 7
    Call LlenarGrid(msGrid, Sql, Columnas)
    
    
    msGrid.ColWidth(0) = 0
    msGrid.ColWidth(1) = 0
    msGrid.ColWidth(2) = 1000
    msGrid.ColWidth(3) = 1400
    msGrid.ColWidth(4) = 1200
    msGrid.ColWidth(5) = 1400
    msGrid.ColWidth(6) = 1400
    msGrid.ColWidth(7) = 1400


    
    msGrid.TextMatrix(0, 2) = "No. Rec"
    msGrid.TextMatrix(0, 3) = "Fecha"
    msGrid.TextMatrix(0, 4) = "No. Fact"
    msGrid.TextMatrix(0, 5) = "Valor"
    msGrid.TextMatrix(0, 6) = "Tipo"
    msGrid.TextMatrix(0, 7) = "Estado"

 
    For I = 1 To msGrid.Rows - 1
        msGrid.Row = I
        msGrid.Col = 1
        msGrid.CellAlignment = flexAlignCenterCenter
        msGrid.Col = 4
        msGrid.CellAlignment = flexAlignCenterCenter
        
        msGrid.TextMatrix(I, 3) = Format(msGrid.TextMatrix(I, 3), "dd/mm/yyyy")
        
        msGrid.TextMatrix(I, 5) = Format(msGrid.TextMatrix(I, 5), "currency")
        
        If msGrid.TextMatrix(I, 6) = 0 Then
           msGrid.TextMatrix(I, 6) = "Efectivo"
        Else
           msGrid.TextMatrix(I, 6) = "Tarjeta"
        End If
        If msGrid.TextMatrix(I, 7) = "V" Then
           msGrid.TextMatrix(I, 7) = "Valida"
        Else
           msGrid.Col = 7
           msGrid.Row = I
           msGrid.TextMatrix(I, 7) = "Anulada"
           msGrid.CellBackColor = &HC0&   'color de fondo
           msGrid.CellForeColor = &H80000005  'color de la letra
        End If
    Next I
    
    
    
End Sub

El botón buscar Pagos llama al listado de pagos:

Private Sub cmdBuscarPagos_Click()
    Call Listado_PagosCliente
End Sub

El Botón Salir:

Private Sub cmdSalir_Click()
    Unload Me
End Sub

Botón Anular pago:

Private Sub cmdAnular_Click()
    Call AnularPago
End Sub

Y este boton llama a un procedimiento AnularPago que es el siguiente:

Sub AnularPago()
    Res = MsgBox("¿Esta seguro de anular el pago?", vbYesNo, "Anular Pago")
    If Res = vbYes Then
       Id_Pago = msGrid.TextMatrix(msGrid.Row, 1)
       Num_Factura = msGrid.TextMatrix(msGrid.Row, 4)
       If Id_Pago <> "" Then
          Sql = "Update tblPagos_Factura_Venta SET EstadoPago = 'A' Where IdSaldoFactVen = " & Id_Pago
          ConexionADO.Execute Sql
          Call CalcularSaldoFactura(Num_Factura)
          Call Listado_PagosCliente
       End If
    End If
    
End Sub

Nos faltaría una variable a nivel de formulario que es la primera linea en la parte superior:

Dim Num_Factura_Sel

Que es la que guarda el numero de la factura actual.

Como se van a estar anulando y creando pagos cree un procedimiento que se puede llamar desde cualquier lugar del proyecto por eso lo coloque en el Modulo md_Consultas que se encarga de actualizar el saldo de la factura de venta y  el saldo en la tabla Saldos Clientes, entonces cada ves que se haga un cambio se llama a esta función para ahorrar código.

Sub CalcularSaldoFactura(Num_Factura)
    Dim RecordSaldoAct As New ADODB.RecordSet
    Dim RecordFactura As New ADODB.RecordSet
    Dim RecordFacturas As New ADODB.RecordSet
     
    'Sumas los pagos actuales de la factura
    Sql = "Select TotalFactura, IdCliente From  tblVentas Where Num_Factura = " & Num_Factura & " and EstadoFact = 1"
    Set RecordFactura = ConexionADO.Execute(Sql)
    TotalFactura = 0
    IdCliente = 0
    If RecordFactura.RecordCount > 0 Then
       TotalFactura = RecordFactura("TotalFactura")
       IdCliente = RecordFactura("IdCliente")
    Else
       MsgBox "No se pudo calcular el saldo total la factura no existe", vbCritical, "Error"
       Exit Sub
    End If
    
    'Sumas los pagos actuales de la factura
    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
       If IsNull(RecordSaldoAc("Saldo")) = False Then
          SaldoFacturaSel = CCur(TotalFactura) - RecordSaldoAc("Saldo")
       Else
          SaldoFacturaSel = CCur(TotalFactura)
       End If
    End If
    
    sqlUp = "Update tblVentas SET SaldoFactura = " & SaldoFacturaSel & " Where Num_Factura = " & Num_Factura
    ConexionADO.Execute sqlUp
    
    'TotalSaldoCliente
    Sql = "Select Sum(SaldoFactura) as Saldo From tblVentas Where SaldoFactura > 0 and IdCliente = " & IdCliente & " and EstadoFact = 1 "
    Set RecordFacturas = ConexionADO.Execute(Sql)
    SaldoTotal = 0
    If RecordFacturas.RecordCount > 0 Then
       SaldoTotal = RecordFacturas("Saldo")
    End If
    
    Sql = "Update tblSaldos_Clientes SET Saldo = " & SaldoTotal & ", FechaMod = now() Where IdCliente = " & IdCliente
    ConexionADO.Execute Sql
    
End Sub

Solo falta abrir el formulario desde el botón Ver Pagos de la ventana de Facturas cliente:

Private Sub cmdVerPagos_Click()
    frmPagosClientes.Show
End Sub

En el vídeo explico en detalle todo el código anterior.

 

Puedes el listado de las lecciones del curso en Curso de Creación de Software de Ventas en Visual Basic 6

No te olvides de Compartir 

Comentarios de Facebook
Total Page Visits: 57 - Today Page Visits: 1

Deja un comentario