Appearance
Lista de Precios - Costo por Margen de Ganancia
DOCUMENTACION RETROSPECTIVA - Generada a partir de codigo implementado el 2026-02-09
Modulo: Ventas Tipo: Process Estado: Implementado Fecha: 2026-02-09
Descripcion General
Este proceso permite generar automaticamente precios de venta para una lista de precios determinada, calculando el precio a partir del costo del articulo mas un margen de ganancia (porcentaje). El usuario puede elegir entre aplicar el porcentaje de ganancia registrado individualmente en cada articulo, o aplicar un porcentaje fijo uniforme a todos los articulos dentro de un rango de agrupaciones (rubros).
Adicionalmente, el proceso ofrece la opcion de calcular el precio final incluyendo impuestos (IVA e impuestos internos), o mantener el precio como neto (sin impuestos).
Este proceso forma parte del submodulo "Lista de precios" dentro de las Bases del modulo de Ventas, y es complementario al proceso "Automatico por rango" que genera listas basadas en listas de precios existentes.
Frontend (Perspectiva de Usuario)
Vistas
- Formulario de generacion: Pantalla unica con formulario para configurar los parametros de generacion de la lista de precios por margen de ganancia.
- Ubicacion en menu: Ventas > Bases > Lista de precios > Costo por margen de ganancia
Interacciones del usuario
Seleccionar modo de porcentaje:
- Opcion A (por defecto): "Aplicar % Ganancia registrado en el articulo" - usa el porcentaje individual de cada producto
- Opcion B: "Aplicar % Fijo" - habilita un campo de texto para ingresar un porcentaje uniforme
Indicar numero de lista destino: Ingresar el numero de la lista de precios donde se generaran los precios
Opcion de precio final: Marcar/desmarcar checkbox "Obtener Precio Final (Costo + Impuestos)" para incluir IVA e impuestos internos en el precio calculado
Seleccionar rango de agrupaciones (rubros):
- Campo "Desde agrupacion" con autocompletado de rubros
- Campo "Hasta agrupacion" con autocompletado de rubros
- Se inicializan automaticamente con el primer y ultimo rubro existentes
Ejecutar generacion: Boton "Aceptar" que inicia el proceso
Cancelar: Boton "Cancelar" que retorna al menu de ventas
Permisos
VENTAS_BASES- Acceso al submenu de Bases de ventasVENTAS_BASES_LISTA-PRECIO- Acceso al submenu de Lista de preciosVENTAS_BASES_LISTA-PRECIO_COSTO- Acceso especifico a "Costo por margen de ganancia"
Estados de UI
- Carga inicial: Se muestra indicador de carga mientras se obtienen los rubros por defecto
- Procesando: Se muestra indicador "Generando lista de precios" durante la ejecucion
- Exito: Se muestra mensaje "Lista de precio generada"
- Error: Se muestra mensaje de error si no se pudieron procesar productos (ej: ningun producto tiene costo o porcentaje de ganancia)
Backend (Perspectiva de Datos de Negocio)
Entidades de negocio
Lista de Precios: Registro que asocia un producto con un precio en una lista determinada
- Numero de lista
- Precio
- Tipo de precio (Neto o Final)
- Referencia al articulo
Articulo (Producto): Entidad existente que contiene los datos base necesarios
- Costo del articulo
- Porcentaje de ganancia individual
- Categoria de IVA (con porcentaje)
- Impuesto interno (valor y tipo: porcentaje o fijo)
- Rubro (agrupacion)
Datos necesarios para el proceso
Parametros de entrada:
- Numero de lista destino (requerido)
- Rango de agrupaciones: desde y hasta (requerido)
- Modo de porcentaje: por articulo o fijo (requerido)
- Porcentaje fijo (requerido solo si el modo es fijo)
- Obtener precio final: si/no (requerido)
Datos consultados del articulo:
- Costo
- Porcentaje de ganancia (si el modo es por articulo)
- Categoria de IVA y su porcentaje (si se calcula precio final)
- Impuesto interno y su tipo (si se calcula precio final)
Relaciones de negocio
- Cada registro de lista de precios esta asociado a un unico articulo
- Un articulo puede tener precios en multiples listas
- Los articulos se filtran por rango de agrupaciones (rubros)
- El calculo de precio final utiliza la categoria de IVA e impuestos internos del articulo
Validaciones de negocio
- El numero de lista es requerido
- Las agrupaciones desde/hasta son requeridas
- Si el modo es porcentaje fijo, el porcentaje debe ser un valor numerico
- Los articulos sin costo definido (costo <= 0) se omiten del proceso
- Los articulos sin porcentaje de ganancia definido se omiten (solo en modo "por articulo")
Reglas de negocio
Regla 1: Calculo del precio base
- Condicion: Para cada articulo dentro del rango de agrupaciones con costo > 0
- Accion:
- Si modo "porcentaje por articulo":
precio_base = costo + (costo * porc_ganancia / 100) - Si modo "porcentaje fijo":
precio_base = costo + (costo * porcentaje_fijo / 100)
- Si modo "porcentaje por articulo":
Regla 2: Calculo del precio final (opcional)
- Condicion: Si el usuario marca "Obtener Precio Final"
- Accion: Al precio base se le suman los impuestos:
- IVA: Se aplica el porcentaje de la categoria de IVA del articulo sobre el precio base
- Impuesto interno: Se aplica segun su tipo:
- Si es porcentaje:
imp_interno = precio_base * valor / 100 - Si es fijo:
imp_interno = valor
- Si es porcentaje:
- El tipo de precio resultante se marca como "Final" (F)
Regla 3: Tipo de precio segun calculo
- Condicion: Segun la opcion de precio final
- Accion:
- Con precio final activado: tipo de precio = "Final" (F)
- Sin precio final: tipo de precio = "Neto" (N)
Regla 4: Insercion o actualizacion
- Condicion: Para cada articulo procesado
- Accion:
- Si el articulo NO existe en la lista destino: se crea un nuevo registro
- Si el articulo YA existe en la lista destino: se actualiza el precio y tipo de precio
Regla 5: Exclusion de articulos sin datos
- Condicion: Articulo sin costo, o sin porcentaje de ganancia (en modo "por articulo")
- Accion: Se omite silenciosamente sin generar registro ni error
Regla 6: Resultado del proceso
- Condicion: Si al menos un articulo fue procesado exitosamente
- Accion: Se considera el proceso exitoso
- Condicion alternativa: Si ningun articulo fue procesado
- Accion: Se retorna error indicando que faltan datos
Casos de uso
Caso 1: Generar lista de precios con porcentaje fijo
Actor: Usuario con permiso de ventas
Precondiciones:
- El usuario tiene los permisos necesarios (VENTAS_BASES_LISTA-PRECIO_COSTO)
- Existen articulos con costo definido en las agrupaciones seleccionadas
- El usuario esta autenticado
Flujo principal:
- El usuario accede a Ventas > Bases > Lista de precios > Costo por margen de ganancia
- El sistema carga automaticamente el primer y ultimo rubro como rango por defecto
- El usuario selecciona "Aplicar % Fijo"
- El usuario ingresa el porcentaje deseado (ej: 30)
- El usuario ingresa el numero de lista destino (ej: 2)
- El usuario opcionalmente ajusta el rango de agrupaciones
- El usuario presiona "Aceptar"
- El sistema calcula los precios para todos los articulos del rango
- El sistema muestra mensaje de exito
Postcondiciones:
- Todos los articulos del rango con costo definido tienen un precio en la lista indicada
- El precio es: costo + 30% del costo
- El tipo de precio es Neto (N)
Flujos alternativos:
- Sin costo: Articulos con costo 0 o negativo son omitidos
- Lista existente: Si ya existian precios en la lista, se actualizan
Caso 2: Generar lista con porcentaje individual y precio final
Actor: Usuario con permiso de ventas
Precondiciones:
- El usuario tiene los permisos necesarios
- Existen articulos con costo Y porcentaje de ganancia definidos
- Los articulos tienen categoria de IVA asignada
Flujo principal:
- El usuario accede a la funcionalidad
- Mantiene seleccionado "Aplicar % Ganancia registrado en el articulo" (opcion por defecto)
- Marca el checkbox "Obtener Precio Final (Costo + Impuestos)"
- Ingresa el numero de lista destino
- Ajusta las agrupaciones si es necesario
- Presiona "Aceptar"
- El sistema calcula: precio_base = costo + (costo * porc_ganancia_articulo / 100)
- El sistema agrega IVA e impuestos internos al precio base
- El sistema muestra mensaje de exito
Postcondiciones:
- Los articulos tienen precio final (con impuestos incluidos) en la lista
- El tipo de precio es Final (F)
- Articulos sin porcentaje de ganancia definido fueron omitidos
Flujos alternativos:
- Sin porcentaje: Articulos sin
porc_gananciason omitidos - Sin IVA: Si el articulo no tiene categoria de IVA, el impuesto IVA no se agrega
- Sin impuesto interno: Si el articulo no tiene impuesto interno definido, no se agrega
Caso 3: Ningun producto procesable
Actor: Usuario con permiso de ventas
Precondiciones:
- El rango de agrupaciones seleccionado no contiene articulos con costo definido
Flujo principal:
- El usuario configura los parametros y presiona "Aceptar"
- El sistema recorre todos los articulos del rango
- Todos los articulos se omiten (sin costo o sin porcentaje)
- El sistema detecta que ningun producto fue procesado
- El sistema muestra error: "Faltan datos para generar la lista de precios automatica"
Postcondiciones:
- No se modifico ninguna lista de precios
- El usuario es informado del problema
Consideraciones
Seguridad
- Solo usuarios con permiso especifico
VENTAS_BASES_LISTA-PRECIO_COSTOpueden acceder a esta funcionalidad - La operacion es masiva y puede modificar precios de muchos articulos a la vez
- No existe confirmacion previa antes de la ejecucion (se ejecuta directamente al presionar Aceptar)
Auditoria
- [REQUIERE VALIDACION] No se detecto registro de auditoria explicito en el metodo
generarListaMargenGanancia. Las operaciones individuales de INSERT/UPDATE en la tabla de precios no registran auditoria.
Rendimiento
- El proceso puede involucrar un gran numero de articulos dependiendo del rango de agrupaciones
- Cada articulo genera consultas individuales a la base de datos para verificar existencia y luego insertar o actualizar
- No se observa paginacion ni limite de articulos a procesar
Dependencias
Funcionalidades relacionadas
- Articulos (Productos): Los articulos deben existir con costo y (opcionalmente) porcentaje de ganancia definidos
- Agrupaciones (Rubros): Se utilizan como filtro para delimitar que articulos procesar
- Categorias de IVA: Necesarias para el calculo de precio final
- Lista de precios por rango: Proceso hermano que genera listas basadas en listas existentes (no en costo)
- Formulario de Producto: Donde se definen costo, porcentaje de ganancia y listas de precios individuales
Servicios externos
- No se identificaron dependencias con servicios externos
Criterios de aceptacion
- [x] AC-001: El sistema calcula correctamente el precio base como costo + (costo * porcentaje / 100)
- [x] AC-002: El sistema permite elegir entre porcentaje del articulo o porcentaje fijo
- [x] AC-003: El sistema calcula precio final incluyendo IVA e impuestos internos cuando se activa la opcion
- [x] AC-004: Los articulos sin costo son excluidos del proceso
- [x] AC-005: Los articulos sin porcentaje de ganancia son excluidos (en modo por articulo)
- [x] AC-006: Si el articulo ya existe en la lista, se actualiza; si no existe, se crea
- [x] AC-007: El tipo de precio se marca como "F" (Final) o "N" (Neto) segun la opcion elegida
- [x] AC-008: Si ningun producto fue procesado, se muestra un error informativo
- [x] AC-009: El rango de agrupaciones se inicializa automaticamente con el primer y ultimo rubro
- [x] AC-010: Solo usuarios con permiso
VENTAS_BASES_LISTA-PRECIO_COSTOpueden acceder
Preguntas Pendientes
Informacion Faltante: Hay preguntas sobre esta funcionalidad que requieren validacion. Ver: Preguntas sobre Lista de Precios Costo Ganancia
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.