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