Hola! Estamos teniendo algunos problemas con las ponderaciones de Tehuelche.
Les muestro dos reglas que tenemos armadas y funcionando correctamente.
Regla de salud:
INSERT INTO sbc_reglas_x_ejecuciones_x_solicitud
(solicitud,
ponderacion_ejecutada,
nro_regla_ponderacion,
valor_resultante_regla,
valor_ponderacion_regla)
VALUES
($solicitud,
$ponderacion_ejecutada,
$nro_regla,
(SELECT CASE WHEN (problemas_salud = ‘N’ AND cobertura_salud = ‘S’) THEN 1
WHEN (problemas_salud = ‘S’ AND cobertura_salud = ‘S’) THEN 2
WHEN (problemas_salud = ‘N’ AND cobertura_salud = ‘N’) THEN 3
WHEN (problemas_salud = ‘S’ AND cobertura_salud = ‘N’) THEN 4
END
FROM tehuelche.sbc_datos_salud
WHERE solicitud = $solicitud
),
(SELECT CASE WHEN (problemas_salud = ‘N’ AND cobertura_salud = ‘S’) THEN 0
WHEN (problemas_salud = ‘S’ AND cobertura_salud = ‘S’) THEN 2.5
WHEN (problemas_salud = ‘N’ AND cobertura_salud = ‘N’) THEN 3.75
WHEN (problemas_salud = ‘S’ AND cobertura_salud = ‘N’) THEN 6.25
END
FROM tehuelche.sbc_datos_salud
WHERE solicitud = $solicitud)
)
;
Regla de distancia:
INSERT INTO sbc_reglas_x_ejecuciones_x_solicitud
(solicitud,
ponderacion_ejecutada,
nro_regla_ponderacion,
valor_resultante_regla,
valor_ponderacion_regla)
VALUES
($solicitud,
$ponderacion_ejecutada,
$nro_regla,
(SELECT coalesce (distancia_sede,0) --se agrega el coalesce para los que tienen NULL el campo
FROM tehuelche.sbc_datos_personales_actuales
WHERE solicitud = $solicitud),
(SELECT CASE WHEN distancia_sede = 6 THEN 0
WHEN distancia_sede = 7 THEN 1.25
WHEN distancia_sede = 8 THEN 2.5
WHEN distancia_sede = 9 THEN 3.75
WHEN distancia_sede = 10 THEN 5
WHEN distancia_sede IS NULL THEN 0
ELSE 6.25
END
FROM tehuelche.sbc_datos_personales_actuales
WHERE solicitud = $solicitud))
;
UPDATE sbc_ejecuciones_x_solicitud
SET valor_segundo_ordenamiento =
(SELECT valor_resultante_regla FROM sbc_reglas_x_ejecuciones_x_solicitud
WHERE solicitud = $solicitud
AND ponderacion_ejecutada = $ponderacion_ejecutada
AND nro_regla_ponderacion = $nro_regla),
valor_ponderacion =
(SELECT valor_PONDERACION_regla FROM sbc_reglas_x_ejecuciones_x_solicitud
WHERE solicitud = $solicitud
AND ponderacion_ejecutada = $ponderacion_ejecutada
AND nro_regla_ponderacion = $nro_regla)
WHERE solicitud = $solicitud AND ponderacion_ejecutada = $ponderacion_ejecutada;
Creamos una ponderación que ejecuta primero la regla de salud y después la regla de distancia (la cual tiene el update porque es la última de la ponderación). El problema es que en la tabla sbc_reglas_x_ejecuciones_x_solicitud me aparecen los dos resultados de las reglas, ahora, en la tabla sbc_ejecuciones_x_solicitud (que según tengo entendido es de donde salen los datos para mostrarlos en el listado del sistema) sólo me aparece el resultado de la segunda regla ejecutada…
La pregunta es: cómo tendrían que aparecer los datos en pantalla? Se tendría que mostrar una suma de los resultados de todas las reglas ejecutadas en una ponderación?
Espero haberme explicado correctamente!
Gracias de antemano!