En el código actual, los “tipos” están pensados así, pero todavía no están aplicándose automáticamente al calcular precios:

1) General
Aplica a todos los clientes (no requiere asignaciones). En el backend, la búsqueda de precios solo toma listas activas por prioridad y producto; no filtra por cliente/zona/canal. @/var/www/html/proyectos/smartfactvoice-backend/src/lista-precios/lista-precios.service.ts#10-39

2) Por cliente
La idea es asignar la lista a clientes específicos. Existe el endpoint para crear asignaciones (/lista-precios/:listaId/asignaciones) y el modelo guarda tipo_entidad + entidad_id (cliente). @/var/www/html/proyectos/smartfactvoice-backend/src/lista-precios/lista-precios.controller.ts#428-459 @/var/www/html/proyectos/smartfactvoice-backend/prisma/schema.prisma#3113-3124
En frontend ya hay store para asignar, pero no hay UI implementada en esta pantalla. @/var/www/html/proyectos/pos-ventas/src/store/ListasPreciosStore.jsx#302-316

3) Por zona
Se usaría tipo_entidad = "zona" y el campo zona_geografica de la asignación. Requiere que en el ABM de clientes el cliente tenga zona definida para luego cruzarlo. @/var/www/html/proyectos/smartfactvoice-backend/prisma/schema.prisma#3113-3124

4) Por canal
Se usaría tipo_entidad = "canal" y el campo canal_venta de la asignación. Igual que zona: requiere que el cliente tenga canal asignado en su ficha. @/var/www/html/proyectos/smartfactvoice-backend/prisma/schema.prisma#3113-3124

⚠️ Importante: hoy el cálculo de precios no usa esas asignaciones (cliente/zona/canal). Se reciben parámetros clienteId/zonaGeografica/canalVenta, pero aún no se filtra con ellos. @/var/www/html/proyectos/smartfactvoice-backend/src/lista-precios/lista-precios.service.ts#10-39