Skip to content

Lista de Precios - Automatico por Rango

DOCUMENTACION RETROSPECTIVA - Generada a partir de codigo implementado el 2026-02-09

Modulo: Ventas Tipo: Process Estado: Implementado Fecha: 2026-02-09


Descripcion

La funcionalidad "Lista de Precios - Automatico por Rango" permite generar automaticamente una nueva lista de precios a partir de una lista existente, aplicando un porcentaje de variacion sobre los precios de un rango de articulos.

Este proceso de negocio resuelve la necesidad de crear multiples listas de precios derivadas (por ejemplo, listas para mayoristas, minoristas, distribuidores) a partir de una lista base, sin tener que cargar manualmente el precio de cada articulo. El usuario define:

  1. Una lista de precios de origen (de donde se toman los precios base)
  2. Una lista de precios de destino (donde se generaran los nuevos precios)
  3. Un porcentaje de variacion a aplicar (incremento o decremento)
  4. Un rango de articulos a incluir (filtrado por agrupacion/rubro y opcionalmente por articulo especifico)

El sistema busca todos los articulos del rango especificado que tengan precio en la lista de origen, calcula el nuevo precio aplicando el porcentaje, y permite al usuario revisar y ajustar los precios antes de confirmar la generacion.

Adicionalmente, existe un segundo proceso relacionado: "Costo por Margen de Ganancia", que genera precios basados en el costo del producto y un porcentaje de ganancia, pudiendo calcular precio neto o precio final (incluyendo impuestos).


Frontend (Perspectiva de Usuario)

Vistas

  1. Formulario principal de generacion: Pantalla con los parametros de generacion (lista origen, lista destino, porcentaje de variacion, rangos de filtrado)
  2. Modal de vista previa y confirmacion: Tabla con los articulos y precios calculados, donde el usuario puede modificar precios individualmente antes de confirmar

Interacciones del usuario

  1. Ingresar lista de origen: El usuario introduce el numero de la lista de precios de donde se tomaran los precios base
  2. Ingresar lista de destino: El usuario introduce el numero de la lista de precios donde se generaran los nuevos precios
  3. Definir porcentaje de variacion: El usuario ingresa un porcentaje que se aplicara sobre los precios de origen
  4. Seleccionar rango de agrupacion (rubro): El usuario filtra por agrupacion/rubro desde-hasta para delimitar que articulos incluir
  5. Seleccionar rango de articulos: El sistema pre-carga el primer y ultimo articulo del rango; el usuario puede ajustarlos mediante busqueda con autocompletado
  6. Aceptar para vista previa: Se genera la tabla con los precios calculados en un modal
  7. Modificar precio individual: En el modal, el usuario puede hacer clic en la columna "Precio" de cualquier articulo para modificar el valor manualmente
  8. Confirmar generacion: Se envian los precios al servidor para insertar o actualizar en la lista destino
  9. Cancelar: Vuelve al menu principal de ventas

Permisos

  • VENTAS_BASES_LISTA-PRECIO_RANGO: Permiso requerido para acceder a la vista de generacion automatica por rango
  • VENTAS_BASES_LISTA-PRECIO_COSTO: Permiso requerido para acceder a la vista de generacion por margen de ganancia (vista separada)

Estados de UI

  • Cargando datos iniciales: Indicador de carga mientras se obtienen rubros y rango de productos al abrir la pantalla
  • Cargando vista previa: Indicador de carga mientras se obtienen los productos con precios de la lista origen
  • Generando lista: Indicador de carga mientras se envian los precios al servidor para su procesamiento
  • Exito: Mensaje de confirmacion "Lista de precio generada" al completar exitosamente
  • Error de datos faltantes: Mensaje de error cuando faltan datos requeridos (lista origen/destino invalidas)

Backend (Perspectiva de Datos de Negocio)

Entidades de negocio

  1. Precio de Lista: Registro que asocia un articulo con una lista de precios especifica, incluyendo el monto y el tipo de precio (neto o final)
  2. Articulo/Producto: Entidad existente que representa los articulos del catalogo de ventas
  3. Agrupacion/Rubro: Clasificacion de articulos que permite filtrar por categoria

Datos necesarios

Precio de Lista:

  • Identificador de lista (numero de lista)
  • Codigo de articulo (referencia al producto)
  • Monto del precio
  • Tipo de precio: Neto (N) o Final (F)

Producto (datos relevantes para el proceso):

  • Identificador del producto
  • Nombre/denominacion
  • Costo del producto (para metodo margen de ganancia)
  • Porcentaje de ganancia del producto (para metodo margen de ganancia)
  • Categoria de IVA con porcentaje asociado (para calculo de precio final)
  • Impuesto interno con tipo y valor (para calculo de precio final)

Relaciones de negocio

  • Un articulo puede tener precios en multiples listas de precios
  • Una lista de precios contiene precios para multiples articulos
  • Los articulos se organizan por agrupacion/rubro, lo que permite filtrar rangos
  • Los precios generados en la lista destino heredan el tipo de precio de la lista origen

Validaciones de negocio

  • La lista de origen y destino deben ser numeros validos y no negativos
  • Debe especificarse al menos un articulo en el rango (desde-hasta)
  • Los precios calculados deben ser numericos y validos
  • Para el metodo de margen de ganancia:
    • Si no se especifica porcentaje global, se usa el porcentaje de ganancia individual del producto
    • Los productos sin costo (costo <= 0) se omiten
    • Los productos sin porcentaje de ganancia definido se omiten (cuando no se usa porcentaje global)

Reglas de negocio

Metodo "Por Rango" (Porcentaje de Variacion)

  • Regla 1: Calculo del nuevo precio

    • Condicion: Para cada articulo en el rango que tenga precio en la lista de origen
    • Accion: precio_nuevo = precio_origen * (1 + porcentaje / 100)
    • El calculo se realiza previamente y se muestra al usuario antes de confirmar
  • Regla 2: Insercion o actualizacion

    • Condicion: Si el articulo ya existe en la lista destino
    • Accion: Se actualiza el precio existente
    • Condicion alternativa: Si el articulo no existe en la lista destino
    • Accion: Se inserta un nuevo registro de precio
  • Regla 3: Tipo de precio heredado

    • Condicion: Al copiar precios de lista origen a lista destino
    • Accion: El tipo de precio (Neto/Final) se hereda de la lista de origen
  • Regla 4: Modificacion manual permitida

    • Condicion: Antes de confirmar la generacion
    • Accion: El usuario puede modificar individualmente cualquier precio en la vista previa

Metodo "Costo por Margen de Ganancia"

  • Regla 5: Calculo del precio base

    • Condicion: Si se especifica un porcentaje global
    • Accion: precio_base = costo + costo * (porcentaje / 100)
    • Condicion alternativa: Si no se especifica porcentaje global
    • Accion: precio_base = costo + costo * (porcentaje_ganancia_producto / 100)
  • Regla 6: Calculo del precio final (opcional)

    • Condicion: Si el usuario indica que desea precio final
    • Accion: Se aplican IVA e impuestos internos sobre el precio base, y el tipo de precio se marca como "Final" (F)
    • Condicion alternativa: Si no se requiere precio final
    • Accion: El precio base se usa directamente como precio neto, tipo "Neto" (N)
  • Regla 7: Omision de productos sin datos suficientes

    • Condicion: Producto con costo <= 0 o sin porcentaje de ganancia (cuando no se usa porcentaje global)
    • Accion: El producto se omite y no se genera precio para el

Transaccionalidad

  • Regla 8: Atomicidad
    • Condicion: Durante la generacion por rango
    • Accion: Todas las inserciones/actualizaciones se ejecutan dentro de una transaccion; si alguna falla, se revierten todas

Casos de uso

Caso 1: Generar lista de precios minorista a partir de lista mayorista

Actor: Usuario vendedor / Administrador de precios

Precondiciones:

  • El usuario debe estar autenticado y tener el permiso VENTAS_BASES_LISTA-PRECIO_RANGO
  • Debe existir una lista de precios de origen (ej: lista 1 - mayorista) con precios cargados
  • Deben existir articulos clasificados por agrupacion/rubro

Flujo principal:

  1. El usuario accede a "Ventas > Bases > Lista Precios > Automatico por rango"
  2. El sistema carga automaticamente los rubros disponibles y el rango de articulos (primer y ultimo articulo)
  3. El usuario ingresa la lista de origen (ej: 1) y la lista de destino (ej: 2)
  4. El usuario define el porcentaje de variacion (ej: 30% de incremento)
  5. El usuario ajusta el rango de agrupacion si desea limitar los articulos
  6. El usuario presiona "Aceptar"
  7. El sistema busca todos los articulos del rango que tengan precio en la lista de origen
  8. Se muestra un modal con la tabla de articulos y precios calculados (precio_origen * 1.30)
  9. El usuario revisa los precios y opcionalmente modifica alguno haciendo clic en la celda
  10. El usuario presiona "Aceptar" en el modal
  11. El sistema genera la lista de precios en la lista destino
  12. Se muestra mensaje de exito "Lista de precio generada"

Postcondiciones:

  • Todos los articulos del rango tienen precio en la lista destino
  • Los precios son el resultado de aplicar el porcentaje sobre la lista origen (o los modificados manualmente)
  • Si ya existian precios en la lista destino, fueron actualizados

Flujos alternativos:

  • Error: Lista origen sin precios: Si no se encuentran articulos con precio en la lista de origen, no se muestra ninguna fila en el modal
  • Cancelacion: El usuario puede cerrar el modal sin confirmar, volviendo al formulario principal sin cambios

Caso 2: Generar lista de precios por margen de ganancia sobre costo

Actor: Administrador de precios

Precondiciones:

  • El usuario debe estar autenticado con permiso VENTAS_BASES_LISTA-PRECIO_COSTO
  • Los articulos deben tener costo cargado
  • Si se usa porcentaje individual, cada articulo debe tener su porcentaje de ganancia definido

Flujo principal:

  1. El usuario accede a "Ventas > Bases > Lista Precios > Costo por margen de ganancia"
  2. El usuario selecciona el rango de agrupacion (desde-hasta)
  3. El usuario define el porcentaje de ganancia (o deja vacio para usar el del producto)
  4. El usuario indica si desea calcular precio final (con impuestos) o neto
  5. El usuario selecciona la lista destino
  6. El sistema procesa todos los articulos del rango:
    • Calcula precio base desde costo + porcentaje de ganancia
    • Si se pidio precio final, aplica IVA e impuestos internos
    • Inserta o actualiza en la lista destino
  7. El sistema confirma la operacion

Postcondiciones:

  • Articulos con costo y ganancia definidos tienen precio en la lista destino
  • Articulos sin costo o sin ganancia fueron omitidos
  • El tipo de precio refleja si es neto (N) o final (F) segun la eleccion del usuario

Flujos alternativos:

  • Error: Sin productos afectados: Si ningun producto cumple las condiciones (todos sin costo o sin ganancia), se muestra error "Faltan datos para generar la lista de precios automatica"

Consideraciones

Seguridad

  • Solo usuarios con permisos especificos pueden generar listas de precios
  • Los precios son informacion sensible del negocio
  • [REQUIERE VALIDACION] No se detecta auditoria de las operaciones sobre precios

Auditoria

  • [REQUIERE VALIDACION] Las operaciones de generacion de listas de precios no tienen registro de auditoria implementado. Dado que los precios son datos criticos del negocio, seria recomendable registrar quien genero que lista, cuando y con que parametros

Rendimiento

  • El proceso opera sobre rangos de articulos que podrian ser extensos
  • La generacion por rango ejecuta multiples consultas individuales por producto dentro de una transaccion
  • El metodo de margen de ganancia utiliza la clase Item del dominio para calculo de precio final, lo cual agrega complejidad de calculo por producto

Dependencias

Funcionalidades relacionadas

  • Catalogo de Articulos/Productos: Los articulos deben existir previamente con sus datos de costo, IVA e impuestos internos
  • Agrupaciones/Rubros: Las agrupaciones deben estar configuradas para poder definir rangos
  • Listas de precios manuales: Se puede insertar, actualizar o eliminar precios individualmente en cualquier lista
  • Facturacion: Las listas de precios generadas se utilizan en el proceso de facturacion para obtener precios de articulos

Servicios externos

  • No se detectan integraciones con servicios externos

Criterios de aceptacion

  • [x] AC-001: El usuario puede generar una lista de precios destino a partir de una lista origen aplicando un porcentaje de variacion
  • [x] AC-002: Los precios calculados se muestran en una vista previa antes de confirmar la generacion
  • [x] AC-003: El usuario puede modificar precios individuales en la vista previa antes de confirmar
  • [x] AC-004: Si un articulo ya existe en la lista destino, su precio se actualiza en lugar de duplicarse
  • [x] AC-005: Si un articulo no existe en la lista destino, se crea un nuevo registro
  • [x] AC-006: El tipo de precio (neto/final) se hereda de la lista de origen
  • [x] AC-007: La operacion es atomica: si falla alguna insercion/actualizacion, se revierten todos los cambios
  • [x] AC-008: El rango de articulos puede filtrarse por agrupacion/rubro y por articulo especifico
  • [x] AC-009: Se requiere permiso especifico para acceder a la funcionalidad
  • [x] AC-010: El metodo de margen de ganancia calcula correctamente el precio incluyendo IVA e impuestos internos cuando se solicita precio final

Preguntas Pendientes

Informacion Faltante: Hay preguntas sobre esta funcionalidad que requieren validacion. Ver: Preguntas sobre Lista de Precios Rango


Referencias Tecnicas


NOTA IMPORTANTE: Esta documentacion fue generada automaticamente analizando el codigo implementado. Se recomienda validar con stakeholders de negocio para confirmar que refleja fielmente los requisitos originales.