Siguiente con el Modulo Cartera de Clientes en esta parte vamos a ir organizando la venta para que reciba el saldo.
Colabora y Suscribete a mi canal de 
Lo primero que debemos hacer es modificar la ventana de Ventas y lo primero es que vamos a colocar cero en el cuadro de Abono txtAbonoFact.Text = 0.
Agregamos eso al procedimiento Inicial de la ventana de Ventas quedando de la siguiente manera.
Sub Inicial()
txtFechaApro.Text = Format(Date, "dd/mm/yyyy")
cmdTipoFact.ListIndex = 0
txtDias.Text = 0
txtDesuentoVPro.Text = 0
txtPorcDescuentoPro = 0
txtAbonoFact.Text = 0
End Sub
Ahora hay que agregar el campo nuevo que creamos en la tabla tblVentas el proceso es el siguiente para agregar el saldo.
- Primero si la venta es crédito y el Abono es mayor a cero entonces hay que restar eso del total de la factura
- Segundo Si la venta es Crédito y el abono es igual a cero el saldo seria el total de la factura
Modificamos el Procedimiento Finalizar_Guardado_Factura de la ventana de Ventas.
Agregamos el siguiente código que calcula el Saldo de la factura, este código va antes del la consulta Insert.
'calcular saldo
SaldoFactura = 0
If cmdTipoFact.ListIndex = 1 Then
If CCur(txtAbonoFact.Text) > 0 Then
SaldoFactura = CCur(txtTotalFactura) - CCur(txtAbonoFact.Text)
Else
SaldoFactura = CCur(txtTotalFactura)
End If
End If
Luego agreamos el campo SaldoFactura al Insert :
Sql = "Insert Into tblVentas (Num_Factura, FechaHora, TipoFact, Dias, TotalFactura, EstadoFact, Comentario, Efectivo, Cambio, IdCliente, IdUsuario, SaldoFactura) " _
& " VALUES (" & Num_Factura & ",'" & FechaHora & "'," & Me.cmdTipoFact.ListIndex & "," & txtDias.Text & ",'" & CCur(txtTotalFactura) & "',1,'" & Comentario & "','" & CCur(txtVECambio.Text) & "','" & CCur(txtCambio.Text) & "'," & CodigoCliente & "," & Glo_IdUsuario & ", " & SaldoFactura & ")"
ConexionADO.Execute Sql
Todo queda de la siguiente manera:
Sub Finalizar_Guardado_Factura()
Num_Factura = Ultima_Factura_Venta() 'Ultima venta
FechaHora = txtFechaApro.Text & " " & Time 'fecha y hora
Comentario = "-"
If txtObervacionesPro.Text <> "" Then 'comentario
Comentario = txtObervacionesPro.Text
End If
'calcular saldo
SaldoFactura = 0
If cmdTipoFact.ListIndex = 1 Then
If CCur(txtAbonoFact.Text) > 0 Then
SaldoFactura = CCur(txtTotalFactura) - CCur(txtAbonoFact.Text)
Else
SaldoFactura = CCur(txtTotalFactura)
End If
End If
'Se guarda en la tabla ventas
Sql = "Insert Into tblVentas (Num_Factura, FechaHora, TipoFact, Dias, TotalFactura, EstadoFact, Comentario, Efectivo, Cambio, IdCliente, IdUsuario, SaldoFactura) " _
& " VALUES (" & Num_Factura & ",'" & FechaHora & "'," & Me.cmdTipoFact.ListIndex & "," & txtDias.Text & ",'" & CCur(txtTotalFactura) & "',1,'" & Comentario & "','" & CCur(txtVECambio.Text) & "','" & CCur(txtCambio.Text) & "'," & CodigoCliente & "," & Glo_IdUsuario & ", " & SaldoFactura & ")"
ConexionADO.Execute Sql
'A los productos del detalle se les asigna el numero de factura
Sql = "Update tblDetalle_Venta set Num_Factura = '" & Num_Factura & "', Num_VentaTemp = '0' where Num_VentaTemp = " & ConsecutivoTemp
ConexionADO.Execute Sql
'*************** Consulta que resta todos los articulos de inventario
Sql = "UPDATE tblProductos as ar INNER JOIN tblDetalle_Venta as d ON ar.IdProducto = d.IdProducto SET ar.ExistPro = (ar.ExistPro - d.Cantidad_dv) where d.Num_Factura = " & Num_Factura
ConexionADO.Execute Sql
'/*//*********************** crear el historial de cada articulo en el kardex
Sql = "INSERT INTO tblKardex (Fecha, IdProducto, Detalle, D_C, Cantidad, Costo,Cant_Saldo) Select '" & FechaHora & "', dt.IdProducto, 'Venta de Mercancia según Fra. N° " & Num_Factura & " '," _
& Num_Factura & ", dt.Cantidad_dv * -1, dt.P_Costo_dv, (Select ExistPro from tblProductos where IdProducto = dt.IdProducto) from tblDetalle_Venta as dt Where dt.Num_Factura = " & Num_Factura
ConexionADO.Execute Sql
If glob_conf_ImpresoraTikets = 0 Then
Call ImprimirFactura_carta(Num_Factura)
Else
Call ImprimirFactura_Ticket(Num_Factura)
End If
ConsecutivoTemp = UltimaVentaTemp
Call LlenarGridProductos
MsgBox "Venta Guardada", vbInformation, "Guardar"
Call LimpiarVenta
End Sub
Debes construir el formulario donde se mostraran las facturas a crédito del cliente:

Nombres de los Controles:
Formulario: frmFacturasCliente
txtCodigoCli, txtNombre_Cli, txtFecha
cmbTipo en su propiedad list lleva lo siguiente:
- Sin Pagar
- Facturas Pagas
- Facturas Vencidas
cmbMeses en su propiedad list lleva:
- Todos
- Enero
- Febrero
- Marzo
- Abril
- Mayo
- Junio
- Julio
- Agosto
- Septiembre
- Octubre
- Noviembre
- Diciembre
cmdTipoPago en su propiedad list lleva:
- Efectivo
- Tarjeta
msGrid, txtCodigoRecibo, cmdGuardar, cmdVerPagos, cmdImprimir, cmdSalir
Ahora vamos al formulario frmBuscarClientes y debemos agregar un boton en la parte inferior que se llame Facturas con nombre: cmdFacturas, el cual va abrir la ventana que acabamos de crear:

Luego agregamos el código para que abra la ventana al dar clic en el botón facturas
Private Sub cmdFacturas_Click()
IdCliente = msGrid.TextMatrix(msGrid.Row, 1)
If IdCliente <> "" Then
frmFacturasCliente.Show
End If
End Sub
Por ahora ya tenemos la estructura que necesitamos para comenzar a crear el código para la consulta de saldos de Clientes.
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

