Skip to main content

Límites de descuento de productos

Descripción

Permite especificar un límite de descuento por porcentaje o por monto (por unidad vendida). Sirve para controlar los descuentos que los usuarios aplican al vender, pero permitiendo que tengan un margen de decisión sobre cuánto dar de descuento.  La idea es que un vendedor gana más comisión mientras menos descuento ofrezca.

Funciona por medio de excepciones: El límite para el catálogo aplica para todos los códigos, luego se pueden agregar excepciones por categoría y/o producto. Cuando el usuario aplica un descuento, el sistema lo compara primero con el límite del producto, si no tiene, con el de la categoría y, si ésta no tiene, con el del catálogo.

Implementación

Los límites de descuento se guardan en las siguientes columnas:

Límite para
Columna Límite
(numeric >= -1, not null, default -1)

Columna Tipo
(text, not null default 'porcentaje')
Catálogo
parametros.limite_descuento_porcentaje_ catalogo no tiene
Categoría
categorias.limite_descuento
categorias.limite_descuento_tipo
Productos

productos.limite_descuento

productos.limite_descuento_tipo

Los límites de descuento se consideran desactivados si el valor es -1, si tienen valor 0 significa que no se permiten descuentos, el default en las columnas es -1. Todo esto es validado en CHECK CONSTRAINTS en las columnas de arriba.

-1 es la constante: Sesion.LIMITE_DESCUENTO_DESACTIVADO

Valor
Efecto cuando es tipo porcentaje
Efecto cuando es tipo monto
<-1
No permitido
No permitido
-1
No hay límite de descuento
No hay límite de descuento
>-1 y <0
No permitido
No permitido
0
No se permiten descuentos
No se permiten descuentos
>0 y <1
Descuento ordinario, se multiplica por 100 para obtener el porcentaje
Descuento ordinario en quetzales
1
Descuento del 100%
Descuento ordinario en quetzales
>1
No permitido
Descuento ordinario en quetzales

El orden para identificar el límite es:

COALESCE(
NULLIF(producto.limite_descuento, -1),
NULLIF(categoria.limite_descuento, -1),
NULLIF(parametros.limite_descuento, -1)
)

La columna de tipo puede ser 'porcentaje' o 'monto'
Para el catálogo solo se puede especificar descuento en porcentaje

Permisos
id
Nombre
Descripción
Tipo
77
Límites de descuento productos
Definir límites de descuento por categoría y producto.
Administración
78
Ignorar límite de descuento
Ignora el límite de descuento especificado para el producto.
Operación

El usuario debe tener permiso para hacer descuentos
Si el usuario tiene ambos permisos, gana el permiso de Ignorar límite de descuento

Clases .NET

En LimitesDescuentoProductos están todas las funciones utilizadas para:

  • Especificar límites válidos del catálogo, categoría y producto
  • Validar que un descuento está dentro del límite
  • Listar límites por categoría y producto
Objetos DB

Para validar el límite hay un trigger trg_lineas_ventas_limite_descuento con before insert y update que ejecuta validar_limite_descuento_trigger

Para listar los límites está la vista: limites_descuento_productos

Errores DB
Código
Descripción
Q3001
Error de límite de descuento de productos
Pantallas

La idea es que desde la pantalla LimitesDescuentosProductos se trabajen los límites para poder ver en un solo lugar cómo está la situación. Cada vez que se cambia algo desde LimitesDescuentosProductos se están actualizando ParametrosGenerales, EditarCategoria y EditarProducto; en éstos también se puede ver y editar el límite específico para cada uno.

Form
Accesible desde
Descripción
LimitesDescuentosProductos.vb
Catalogo.vb
Menú Catálogo
ParametrosGenerales.vb
MenuInicial.vb
Pestaña Ventas
EditarCategoria.vb
Catalogo.vb
Editar el límite de una categoría
EditarProducto.vb
Catalogo.vb
Editar el límite de un producto
EditarProductoConsignacion.vb
Catalogo.vb Editar el límite de un producto
EditarProductoLibro.vb
Catalogo.vb Editar el límite de un producto
EditarProductoLibroConsignacion.vb
Catalogo.vb Editar el límite de un producto