Precios Multinivel — Sucursal y Doctor
Un mismo servicio de clínica puede tener distinto precio de referencia y distinta comisión según la sucursal y el doctor que lo prestan. Hola Doc resuelve esos valores con una cadena de prioridades sobre el catálogo base. Esta página describe esa resolución; la edición del catálogo y los overrides desde la pantalla está en Administración de clínicas.
Cadena de resolución
Sección titulada «Cadena de resolución»Para cada servicio se busca el valor más específico disponible, de mayor a menor prioridad:
graph LR
A[Doctor + Sucursal] --> B[Doctor]
B --> C[Sucursal]
C --> D[Clínica]
D --> E[Base del catálogo]
La clave es que la resolución es campo por campo: el precio y la comisión se resuelven de forma independiente. Una sucursal puede sobreescribir solo el precio mientras un doctor sobreescribe solo la comisión; el resultado efectivo combina ambos. En cuanto un campo se fija en algún nivel, deja de buscar hacia abajo para ese campo.
Almacenamiento de los overrides
Sección titulada «Almacenamiento de los overrides»Los overrides viven en una tabla de overrides de catálogo por clínica. El nivel se define por qué columnas de alcance están presentes:
branch_id | doctor_id | Nivel |
|---|---|---|
| vacío | vacío | Clínica |
| presente | vacío | Sucursal |
| vacío | presente | Doctor |
| presente | presente | Doctor + Sucursal |
Los campos que se pueden sobreescribir son: precio de referencia, tipo de comisión y valor de comisión.
Comisión: tipo y valor
Sección titulada «Comisión: tipo y valor»| Tipo | Cálculo al cerrar el ticket |
|---|---|
fixed | Toma el valor de comisión tal cual. |
percentage | importe cobrado × valor / 100, redondeado. |
Sucursal y doctor en el cierre
Sección titulada «Sucursal y doctor en el cierre»- La sucursal funciona como contexto ambiente de la sesión del portal de clínica: se valida que esté activa y pertenezca a la clínica, y se aplica a todas las líneas del ticket.
- El doctor es por línea: cada servicio del ticket puede indicar un doctor distinto (validado como activo y de la clínica). Es una dimensión independiente de la sucursal.
Foto (snapshot) al cerrar
Sección titulada «Foto (snapshot) al cerrar»Al cerrar el ticket, el tipo y valor de comisión resueltos, junto con el precio de referencia, se congelan en la línea de la visita. Así, si después se cambia el catálogo o un override, los registros históricos y sus reportes no se alteran.
Alerta por desviación de precio
Sección titulada «Alerta por desviación de precio»Cada servicio del catálogo base define un precio de referencia y un porcentaje de desviación permitido (alert_deviation_pct, por defecto 50 %; solo en el SKU base). Al cerrar una línea, si el importe cobrado se desvía del precio de referencia más allá del porcentaje permitido, se genera una alerta amount_deviation de forma sincrónica en ese momento (no por el detector periódico). La inserción de la alerta es de mejor esfuerzo: si falla, no impide cerrar el ticket.
Casos esperados en pruebas
Sección titulada «Casos esperados en pruebas»- Un override de sucursal sobre el precio y uno de doctor sobre la comisión se combinan campo por campo.
- Sin overrides, se usan el precio y la comisión del catálogo base.
- El nivel Doctor + Sucursal tiene prioridad sobre Doctor, Sucursal y Clínica.
- Cerrar un ticket congela la comisión; cambiar el catálogo después no altera el histórico.
- Un importe que se desvía más del porcentaje permitido genera una alerta de desviación.