Hola a todos.
Estamos implementando Tehuelche en la universidad y estamos teniendo problemas con las ponderaciones.
Como primera medida nos pasa que cuando generamos una ponderación si le ponemos el tipo de beca y/o el tipo de evaluaciones la ponderación no es ejecutada.
Cuando no agregamos esos campos, la ponderación es ejecutada.
Les paso la ponderación:
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 distancia_sede
FROM tehuelche.sbc_datos_personales_actuales
WHERE solicitud = $solicitud),
(SELECT CASE WHEN distancia_sede = 30 THEN 30
WHEN distancia_sede = 1 THEN 1
WHEN distancia_sede = 2 THEN 2
WHEN distancia_sede = 45 THEN 45
ELSE 100
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;
y el error que trae es el siguiente:
SQLSTATE: db_23502
CODIGO: 7
MENSAJE: ERROR: null value in column “valor_ponderacion_regla” violates not-null constraint CONTEXT: SQL statement
“INSERT INTO sbc_reglas_x_ejecuciones_x_solicitud (solicitud, ponderacion_ejecutada, nro_regla_ponderacion, valor_resultante_regla, valor_ponderacion_regla)
VALUES (2, 2, 2, (SELECT distancia_sede FROM tehuelche.sbc_datos_personales_actuales WHERE solicitud = 2), (SELECT CASE WHEN distancia_sede = 30 THEN 30 WHEN distancia_sede = 1 THEN 1 WHEN distancia_sede = 2 THEN 2 WHEN distancia_sede = 45 THEN 45 ELSE 100 END FROM tehuelche.sbc_datos_personales_actuales WHERE solicitud = 2)) ; UPDATE sbc_ejecuciones_x_solicitud SET valor_segundo_ordenamiento = (SELECT valor_resultante_regla FROM sbc_reglas_x_ejecuciones_x_solicitud WHERE solicitud = 2 AND ponderacion_ejecutada = 2 AND nro_regla_ponderacion = 2), valor_ponderacion = (SELECT valor_PONDERACION_regla FROM sbc_reglas_x_ejecuciones_x_solicitud WHERE solicitud = 2 AND ponderacion_ejecutada = 2 AND nro_regla_ponderacion = 2) WHERE solicitud = 2 AND ponderacion_ejecutada = 2;”
PL/pgSQL function “sp_ponderar” line 32 at EXECUTE statement
SQL: SELECT * FROM sp_ponderar(21);
Lo que no podemos entender es porqué el sp_ponderar(21) reemplaza mal los valores cuando ejecuta el sql que está guardado en la regla. (Línea que dice VALUES (2,2,2 ( SELECT … ))