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:

  1. EjeTPV.Articulo.Precio: Ejecuta un script que permite sobreescribir el precio con el valor devuelto.
  2. EjeTPV.Articulo.Descuento: Ejecuta un script que permite sobreescribir el descuento a aplicar con el valor devuelto.
  3. 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

Volver a la búsqueda anterior