Sistema de Gestión de Negocios "Hexa"
Base de datos de conocimiento.
| Doc. Ref. 29068 Título: Aplicar descuentos según condiciones en el TPV Autor: Soltec Última actualización: 13/03/2026#terminal #punto #venta #descuento #familia #cantidad |
Aplicar descuentos según condiciones en el TPV
Supongamos un terminal de punto de venta, en una tienda, en el que queremos que según ciertas condiciones complejas, se aplique cantidades, descuentos o precios concretos. Puede tratarse de campañas de venta, artículos a los que queremos forzar una cierta cantidad, etc.
Existe tres posibles eventos en el momento de escoger un artículo que permiten forzar precio, cantidad y descuento:
- EjeTPV.Articulo.Precio: Ejecuta un script que permite sobreescribir el precio con el valor devuelto.
- EjeTPV.Articulo.Descuento: Ejecuta un script que permite sobreescribir el descuento a aplicar con el valor devuelto.
- EjeTPV.Articulo.Cantidad: Ejecuta un script que permite sobreescribir la cantidad a vender con el valor devuelto.
A continuación se presenta tres ejemplos para cada uno de los tres eventos:
Precio
Function Main (Criterio, Orden, Opciones)
'Averiguar la código del artículo
Grupo = BD.Cmp ("Articulo", "Codigo", Criterio, false)
'Condiciones de grupos
If Grupo = "Accesorios" Then Precio = 0 'Los accesorios se entregan gratuitamente
'El formulario TPV propondrá por defecto este precio para los artículos
'que cumplen la condición
Main = Cantidad
End Function
Cantidad
Function Main (Criterio, Orden, Opciones)
'Averiguar la código del artículo
Codigo = BD.Cmp ("Articulo", "Codigo", Criterio, false)
'Condiciones de códigos
If Codigo = "M23X" Then Cantidad = 2 'Este artículo necesita dos unidades
If Codigo = "M23RT" Then Cantidad = 4 'Este artículo necesita cuatro unidades
'El formulario TPV propondrá por defecto esta cantidad al escoger
'alguno de los artículos que cumplen la condicion
Main = Cantidad
End Function
Descuento
Function Main (Criterio, Orden, Opciones)
'Comprobar si el descuento está activado para la fecha actual.
'Los parámetros DescuentoTPVDesde y DescuentoTPVHasta indican
' el rango de fechas en que está activado
Desde = fpc.cFecha(Bd.Cnf ("DescuentoTPVDesde", "", ""))
Hasta = fpc.cFecha(Bd.Cnf ("DescuentoTPVHasta", "", ""))
If Date() < Desde Or Date() > Hasta Then Main = "" : Exit Function
'Si llegamos aqui, entonces descuento del 20%
Main = 20
End Function
El siguiente script, configurado, por ejemplo, en una opción de menú, permitiría editar cómodamente el rango de fechas para los descuentos y que se almacenarían en los parámteros "DescuentoTPVDesde" y "DescuentoTPVHasta".
Sub Main (Criterio, Orden, Opciones)
'Valores configurados actualmente
Desde = Bd.Cnf ("DescuentoTPVDesde", "", "")
Hasta = Bd.Cnf ("DescuentoTPVHasta", "", "")
If Not Interact.Aceptado Then
'Preguntar los valores, ofreciendo por defecto los configurados actualmente
Interact.Reinicia "Datos", "Rango de fechas para el descuento" : Interact.Cancelable = False
Interact.NuevoValor "Desde", "Desde", "Fecha", 0, Desde,"",""
Interact.NuevoValor "Hasta", "Hasta", "Fecha", 0, Hasta,"",""
Else
'Guardar los valores introducidos por el usuario como parámetros
Desde = fpc.CFe (Interact.Valor("Desde"))
Hasta = fpc.CFe (Interact.Valor("Hasta"))
Bd.CnfS "DescuentoTPVDesde", Desde, "",""
Bd.CnfS "DescuentoTPVhasta", Hasta, "",""
Interact.Reinicia "MensajeFinal", "Configurado desde " & Desde & " y hasta " & Hasta
End If
End Sub
