Caso práctico – Registro de ventas a crédito o al contado
Cuando vendemos en nuestro negocio, a veces el cliente no dispondrá de la liquidez al momento de la venta para pagar al contado, en esos casos va a solicitar un crédito para pagar en mensualidades.
Aquí en Excel2Win vamos a ayudarte brindando una solución rápida, automatizando todo el proceso del cálculo; vamos a presentarte un caso práctico moldeable para tus intereses.
CASO REGISTRO DE VENTAS AL CONTADO O CRÉDITO
Existe la necesidad de registrar las ventas de una tienda online que se dedica a la comercialización de zapatillas de marcas conocidas como Adidas, Nike, New Balance, Under Armour y Reebok en una hoja de manera dinámica.
Si sabemos que debemos mostrar un resumen de la venta en un formulario antes de mandar la información a la hoja de trabajo.
DESARROLLO
Para empezar, diseñamos el formulario:
Con el cuadro de herramientas insertamos 1 Userform, 8 Label, 1 Combobox, 7 CommandButton, 4 Frame, 3 TextBox, 3 OptionButton, 1 Checkbox y 4 listbox.
A continuación, vamos a mostrar las propiedades de los 32 objetos insertados en el formulario:
CÓDIGO TOTAL DEL FORMULARIO
Para empezar denominamos nuestras variables generales:
Dim montoSubtotal, Descuento, Neto, PagoMensual, Letras As Double
CÓDIGO USERFORM – EVENTO: ACTIVATE
‘Cargar la información al combobox
With cboProducto
.AddItem «Nike»
.AddItem «Adidas»
.AddItem «Under Armour»
.AddItem «New Balance»
.AddItem «Reebok»
End With
‘Impedir que escriban sobre los listbox
lstCantidad.Locked = True
lstSubtotal.Locked = True
‘Mostrar los optionbutton operativos
Opt6.Locked = True
Opt12.Locked = True
Opt24.Locked = True
Opt6.Locked = False
Opt12.Locked = False
Opt24.Locked = False
End Sub
CÓDIGO BOTÓN COMPRAR – EVENTO: CLICK
Private Sub btnComprar_Click()
‘Bucle para validar los campos Cliente, DNI o RUC, Producto y Cantidad
If Trim(txtCliente.Text) = Empty Then
MsgBox «Ingresar nombre del Cliente», vbCritical, «Sistema»
Exit Sub
ElseIf Trim(txtRuc.Text) = Empty Then
MsgBox «Ingresar DNI o RUC del cliente», vbCritical, «Sistema»
Exit Sub
ElseIf Not IsNumeric(txtRuc.Text) Then
MsgBox «El DNI o RUC debe ser un valor numérico», vbCritical, «Sistema»
Exit Sub
ElseIf cboProducto.ListIndex = -1 Then
MsgBox «Debe seleccionar un producto de la lista», vbCritical, «Sistema»
Exit Sub
ElseIf Trim(txtCantidad.Text) = Empty Then
MsgBox «Debe ingresar una cantidad», vbCritical, «Sistema»
Exit Sub
ElseIf Not IsNumeric(txtCantidad.Text) Then
MsgBox «La cantidad debe ser un valor numérico», vbCritical, «Sistema»
Exit Sub
End If
‘Capturar los datos necesarios del userform
Cantidad = Val(txtCantidad.Text)
‘Calcular el Subtotal
Precio = AsignaPrecio(cboProducto.ListIndex)
Subtotal = Precio * Cantidad
‘Enviar los datos a los listbox
lstProductos.AddItem cboProducto.Text
lstCantidad.AddItem txtCantidad.Text
lstSubtotal.AddItem Format(Subtotal, «0.00»)
End Sub
CÓDIGO FUNCIÓN ASIGNAPRECIO
Function AsignaPrecio()
‘Dar valor a los ítems del combobox en orden
Select Case Pos
Case 0: Precio = 429
Case 1: Precio = 249
Case 2: Precio = 349
Case 3: Precio = 269
Case 4: Precio = 229
End Select
AsignaPrecio = Precio
End Function
CÓDIGO ELIMINAR – EVENTO: CLICK
Private Sub btnEliminar_Click()
‘Verificar que se ha seleccionado el producto a eliminar
If lstProductos.ListIndex = -1 Then
MsgBox «Debe Seleccionar el producto a eliminar», vbCritical, «Sistema»
Else
‘Eliminar el producto seleccionado
MsgBox lstProductos.ListIndex
‘Capturar la posicion del elemento seleccionado
Pos = lstProductos.ListIndex
lstProductos.RemoveItem (Pos)
lstSubtotal.RemoveItem (Pos)
lstCantidad.RemoveItem (Pos)
MsgBox «Producto eliminado correctamente», vbInformation, «Sistema»
End If
End Sub
CÓDIGO BOTÓN BORRAR – EVENTO: CLICK
Private Sub btnBorrar_Click()
‘Limpiar los listbox
lstProductos.Clear
lstCantidad.Clear
lstSubtotal.Clear
End Sub
CÓDIGO BOTÓN RESUMEN – EVENTO: CLICK
Private Sub btnResumen_Click()
‘Bucle para validar los listbox de producto, cantidad y subtotal
If lstProductos.ListCount = 0 And lstCantidad.ListCount = 0 And lstSubtotal.ListCount = 0 Then
MsgBox «Llenar los campos anteriores», vbCritical, «Sistema»
Exit Sub
End If
‘Limpiar la lista de resumen
lstR.Clear
‘Recorrer la lista y determinar el monto total
S = 0
For i = 0 To lstSubtotal.ListCount – 1
S = S + lstSubtotal.List(i)
Next
‘Bucle para elegir el número de letras
If Opt6.Value = True Then
Letras = 6
ElseIf Opt12.Value = True Then
Letras = 12
ElseIf Opt24.Value = True Then
Letras = 24
Else
Letras = 1
End If
‘Determinar el monto acumulado de la venta
montoSubtotal = S
Descuento = montoSubtotal * 0.1
Neto = montoSubtotal – Descuento
‘Hallar el interés
If Letras = 6 Then
Interes = (0.05 * Neto) / Letras
ElseIf Letras = 12 Then
Interes = (0.1 * Neto) / Letras
ElseIf Letras = 24 Then
Interes = (0.15 * Neto) / Letras
Else
Interes = 0
End If
‘Calcular el pago mensual
PagoMensual = Neto / Letras + Interes
‘Enviar a la lista de resumen
lstR.AddItem «El Monto Acumulado es: » & Format(montoSubtotal, «$#,##0.00»)
lstR.AddItem «El Descuento es: » & Format(Descuento, «$#,##0.00»)
lstR.AddItem «El Neto a Pagar es: » & Format(Neto, «$#,##0.00»)
lstR.AddItem «————————«
lstR.AddItem «La Cantidad de Letras es: » & Letras
lstR.AddItem «El Pago Mensual es: » & Format(PagoMensual, «$#,##0.00»)
End Sub
CÓDIGO BOTÓN ENVIAR A EXCEL – EVENTO: CLICK
Private Sub btnEnviarExcel_Click()
‘Bucle para validar el listbox de Resumen
If lstR.ListCount = 0 Then
MsgBox «Mostrar resumen primero», vbCritical, «Sistema»
Exit Sub
End If
‘Encontrar la última fila de la hoja1
ultfila = Hoja1.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row
‘Copiar la información a la hoja1
Hoja1.Cells(ultfila, 2).Value = ultfila – 5
Hoja1.Cells(ultfila, 3).Value = txtCliente.Text
Hoja1.Cells(ultfila, 4).Value = txtRuc.Text
‘Cambiar de tamaño a la celda donde ira el producto
For i = 0 To lstProductos.ListCount – 1
Hoja1.Cells(ultfila, 5).Value = Hoja1.Cells(ultfila, 5).Value & _
(lstProductos.List(i) & Chr(10))
Next
´Copiar la información a la hoja1
Hoja1.Cells(ultfila, 6).Value = Format(montoSubtotal, «$#,##0.00»)
Hoja1.Cells(ultfila, 7).Value = Format(Descuento, «$#,##0.00»)
Hoja1.Cells(ultfila, 8).Value = Format(Neto, «$#,##0.00»)
Hoja1.Cells(ultfila, 9).Value = Letras
Hoja1.Cells(ultfila, 10).Value = Format(PagoMensual, «$#,##0.00»)
‘Alinear la información al centro
Hoja1.Cells(ultfila, 2).VerticalAlignment = xlTop
Hoja1.Cells(ultfila, 2).HorizontalAlignment = xlCenter
Hoja1.Cells(ultfila, 3).VerticalAlignment = xlTop
Hoja1.Cells(ultfila, 3).HorizontalAlignment = xlCenter
Hoja1.Cells(ultfila, 4).VerticalAlignment = xlTop
Hoja1.Cells(ultfila, 4).HorizontalAlignment = xlCenter
Hoja1.Cells(ultfila, 5).VerticalAlignment = xlTop
Hoja1.Cells(ultfila, 5).HorizontalAlignment = xlCenter
Hoja1.Cells(ultfila, 6).VerticalAlignment = xlTop
Hoja1.Cells(ultfila, 6).HorizontalAlignment = xlCenter
Hoja1.Cells(ultfila, 7).VerticalAlignment = xlTop
Hoja1.Cells(ultfila, 7).HorizontalAlignment = xlCenter
Hoja1.Cells(ultfila, 8).VerticalAlignment = xlTop
Hoja1.Cells(ultfila, 8).HorizontalAlignment = xlCenter
Hoja1.Cells(ultfila, 9).VerticalAlignment = xlTop
Hoja1.Cells(ultfila, 9).HorizontalAlignment = xlCenter
Hoja1.Cells(ultfila, 10).VerticalAlignment = xlTop
Hoja1.Cells(ultfila, 10).HorizontalAlignment = xlCenter
‘Colocar bordes a las celdas
Range(Cells(ultfila, 2), Cells(ultfila, 10)).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
End With
‘Limpiar los cuadros de texto
txtCliente.Text = Empty
txtRuc.Text = Empty
txtCantidad = Empty
‘Limpiar el cuadro combinado
cboProducto.ListIndex = -1
‘Deshabilitar a los botones de opción
Opt6.Value = False
Opt12.Value = False
Opt24.Value = False
chkCredito.Value = False
‘Limpiar el contenido de la lista
lstCantidad.Clear
lstProductos.Clear
lstSubtotal.Clear
lstR.Clear
End Sub
CÓDIGO BOTÓN ANULAR – EVENTO: CLICK
Private Sub btnAnular_Click()
‘Limpiar los cuadros de texto
txtCliente.Text = Empty
txtRuc.Text = Empty
txtCantidad = Empty
‘Limpiar el cuadro combinado
cboProducto.ListIndex = -1
‘Deshabilitar a los botones de opción
Opt6.Value = False
Opt12.Value = False
Opt24.Value = False
chkCredito.Value = False
‘Limpiar el contenido de la lista
lstCantidad.Clear
lstProductos.Clear
lstSubtotal.Clear
lstR.Clear
End Sub
CÓDIGO BOTÓN SALIR – EVENTO CLICK
Private Sub btnSalir_Click()
‘Quitar el formulario de pantalla
Unload Me
End Sub
MACRO PARA EJECUTAR EL FORMULARIO
Sub ABRIR_FORM()
‘Mostrar el formulario en pantalla
frmCapacitacion.Show
End Sub
Para ejecutar esta macro vamos a insertar un botón – Control de formulario como este:
Para aprender como insertar un botón – Control de Formulario te dejo aquí el enlace.
Hemos logrado crear una herramienta que logre facilitar la tarea de registrar y calcular el crédito con ayuda del userform.
Comment (1)
No puedo descargar los archivos.