Skip to content

Preguntas sobre Vendedores

Informacion Requerida - Preguntas generadas durante analisis retrospectivo el 2026-02-09


Preguntas Criticas (Afectan la documentacion de negocio)

1. Tabla compartida entre modulos (ordven)

Observacion: La tabla ordven se crea condicionalmente cuando esta habilitado el modulo de Ventas, CtaCte O CRM (isVentasEnabled() || isCtaCteEnabled() || isCRMEnabled()). Esto indica que el recurso Vendedor es compartido entre multiples modulos del sistema.

Pregunta: Cual es el rol exacto del vendedor en los modulos CtaCte y CRM? Se usa solo como referencia (ej: vendedor asignado a un cliente) o tiene funcionalidad propia en esos modulos?

Impacto: Afecta la seccion de dependencias y alcance del recurso. Si es cross-module, la documentacion debe reflejarlo claramente.


2. Nivel de tenancy configurable (EMPRESA vs SUCURSAL)

Observacion: La migracion define getDefaultLevels() como [LEVEL_EMPRESA, LEVEL_SUCURSAL]. Esto significa que la tabla puede existir a nivel empresa (compartida entre sucursales) o a nivel sucursal (cada sucursal tiene sus propios vendedores), segun la configuracion de cada empresa.

Pregunta: Cual es el escenario de negocio mas comun? Los vendedores se comparten entre todas las sucursales o cada sucursal gestiona sus propios vendedores? Que criterio usa la empresa para elegir uno u otro nivel?

Impacto: Afecta la documentacion de reglas de negocio sobre visibilidad y alcance de los datos de vendedores.


3. Relacion vendedor-localidad

Observacion: El campo vloc fue migrado de un campo de texto (nombre de localidad) a un entero (ID de localidad). El formulario frontend usa un autocomplete que busca localidades por codigo postal, nombre o provincia.

Pregunta: La localidad del vendedor es obligatoria o simplemente opcional para informacion de contacto? Tiene algun impacto en la asignacion de vendedores a zonas o rutas de venta?

Impacto: Si la localidad tiene impacto en logica de asignacion de zonas, debe documentarse como regla de negocio.


4. Vendedor por defecto "CASA CENTRAL"

Observacion: El seed crea un vendedor con codigo 1 y nombre "CASA CENTRAL". Este parece ser un vendedor generico/por defecto del sistema.

Pregunta: El vendedor "CASA CENTRAL" tiene un rol especial? Se usa como vendedor por defecto cuando no se asigna uno especifico? Puede ser eliminado o modificado?

Impacto: Afecta las reglas de negocio sobre eliminacion y datos por defecto del sistema.


5. Campos sin uso en la tabla (vpos, vfoto, password, usuario)

Observacion: La migracion documenta explicitamente que los campos vpos, vfoto, password y usuario estan "Sin uso". Sin embargo, se mantienen en la tabla.

Pregunta: Estos campos son remanentes de un sistema anterior? Hay planes de utilizarlos en el futuro (ej: foto del vendedor, acceso al sistema como usuario)? Se pueden considerar deprecados?

Impacto: Afecta la documentacion de la entidad y si deben mencionarse o no en la especificacion.


Preguntas Tecnicas (Afectan la documentacion tecnica)

6. Generacion de codigo con MAX(CVEN) + 1 sin transaccion

Observacion: El metodo insert() del modelo genera el proximo codigo de vendedor usando SELECT MAX(CVEN) AS CVEN FROM ordven, y luego lo incrementa en 1. Esta operacion no esta envuelta en una transaccion ni usa locks.

Pregunta: Se han observado problemas de duplicacion de codigos en entornos con multiples usuarios concurrentes? Se deberia usar una secuencia de PostgreSQL o un lock FOR UPDATE para garantizar unicidad?

Respuesta: No hemos tenido inconvenientes aunque sería conveniente cambiarlo en algún momento

Impacto: Potencial race condition documentable como riesgo tecnico.


7. Eliminacion sin verificacion de integridad referencial

Observacion: El metodo delete() del modelo realiza un soft delete (UPDATE SET DELETED_AT = NOW()) sin verificar si el vendedor esta asociado a facturas, notas de credito, notas de debito, pedidos, clientes u otros registros (las tablas de facturacion usan el campo vend que referencia al codigo del vendedor).

Pregunta: Se permite eliminar un vendedor que tiene comprobantes asociados? Deberia mostrarse una advertencia o impedirse la eliminacion en ese caso?

Respuesta: No posee FK de momento, sólo FK lógica como muchas de las FK del sistema

Impacto: Riesgo de inconsistencia de datos si se elimina un vendedor referenciado en documentos comerciales.


8. Hook useVendedorData con useState en lugar de TanStack Query

Observacion: El hook useVendedorData.ts en el frontend React usa useState + useEffect + api.get() para obtener vendedores, en lugar de usar TanStack Query (useQuery). Sin embargo, existen query keys definidas para vendedores en queryKeys.ts.

Pregunta: El hook esta pendiente de migracion a TanStack Query? Es el patron legacy de integracion parcial?

Respuesta: Se refactorizará en un futuro como todo recurso pero de momento quedan así

Impacto: Afecta la documentacion frontend sobre el patron de state management utilizado.


9. Endpoint registrado fuera del grupo de modulo ventas

Observacion: La ruta /vendedor esta registrada directamente en el grupo raiz del backend (junto a external-error-log y fast-view), no dentro del grupo /mod-ventas. Esto significa que la URL es /vendedor en lugar de /mod-ventas/vendedor.

Pregunta: Es intencional esta ubicacion fuera del grupo de modulo? Hay otros recursos que usan el vendedor desde fuera del modulo ventas que requieren esta ruta mas corta?

Impacto: Afecta la documentacion de endpoints y la organizacion del API.


Como Usar Este Documento

Este documento contiene preguntas que surgieron durante el analisis del codigo. Cada pregunta incluye espacio para agregar la respuesta:

Formato de respuesta:

**Respuesta**: {Texto de la respuesta aqui}

Una vez respondidas, estas respuestas se incorporaran a la documentacion final.


Estado de Validacion

  • [ ] Preguntas criticas respondidas (5)
  • [ ] Preguntas tecnicas respondidas (4)
  • [ ] Respuestas validadas con stakeholders
  • [ ] Documentacion actualizada con respuestas