El comportamiento que reportas sobre que las evaluaciones en estado Finalizado se comportan diferente que las evaluaciones en estado Registrado, se debe a que la vista HTML que se muestra es diferente y por eso no da errores.
Cuando actualice los datos de la base de DEMO que usan los comerciales aca en El Salvador, tuve que hacer un script de migración de los datos y tuve que recrear las listas de valores del módulo, ya que se presentaban errores como este.
Te adjunto como muestra el script que use para migrar los datos, quizá te pueda servir para revisar que datos tendrían que estar llenos.
/*
Este script es una muestra (que medio funciona) de la migración de los objetivos de evaluación de desempeño
del esquema de base de datos de la versión 1.7.3 a la versión 1.8.0
TOMESE COMO UN EJEMPLO --- no se espera que funcione al 100%
*/
-- Descripcion del periodo a migrar
-- Sirve para enlazar los objetivos ya existentes con los periodos de evaluación.
declare @descPeriodoAMigrar varchar(max)
set @descPeriodoAMigrar = 'Evaluaciones 2010'
begin transaction
-- select * from eva.bak_oev_objetivos_eval
-- select * from eva.rco_rangos_logro_objs
delete from eva.evo_evals_objetivos
delete from eva.pob_plan_objs_anuales
delete from eva.poa_params_objs_anuales
delete from eva.rco_rangos_logro_objs
SET IDENTITY_INSERT eva.rco_rangos_logro_objs ON;
insert into eva.rco_rangos_logro_objs (rco_codigo, rco_nombre, rco_descripcion, rco_codpev, rco_rango_inicial, rco_rango_final, rco_valor)
select rco_codigo,
case when rco_rango_inicial = rco_rango_final then cast(rco_rango_final as varchar)
else cast(rco_rango_inicial as varchar) + ' a ' + cast(rco_rango_final as varchar)
end rco_nombre, null rco_descripcion, rco_codpev, rco_rango_inicial, rco_rango_final, rco_valor
from eva.bak_rco_rangos_logro_objs
SET IDENTITY_INSERT eva.rco_rangos_logro_objs OFF;
update eva.pev_periodos
set pev_anio = year(pev_fecha_al),
pev_usar_sel_rango = 0,
pev_fd_calc_de_rubros = 0
SET IDENTITY_INSERT eva.poa_params_objs_anuales ON;
insert into eva.poa_params_objs_anuales (poa_codigo, poa_codgrc, poa_anio, poa_fecha_ini_def_obj, poa_fecha_fin_def_obj, poa_permite_reg_obj)
select ROW_NUMBER() over (order by pev_anio), v1.*
from (
select distinct pev_codgrc, pev_anio, pev_fecha_del, dateadd(month, 2, pev_fecha_del) - 1 pev_fecha_al, 1 uno from eva.pev_periodos
) v1
SET IDENTITY_INSERT eva.poa_params_objs_anuales OFF;
--- Objetivos anuales
insert into eva.pob_plan_objs_anuales
(pob_codemp_evaluado, pob_codplz_evaluado, pob_codemp_evaluador, pob_codplz_evaluador, pob_codpoa, pob_estado, pob_fecha_cambio_estado, pob_property_bag_data, pob_codigo_workflow, pob_estado_workflow, pob_ingresado_portal, pob_comentario_anulacion)
select distinct obe_codemp, evaluado.emp_codplz, obe_codemp_evaluador, evaluador.emp_codplz, 1, 'Autorizado', getdate(), null, null, 'Autorizado', 1, null
from eva.bak_obe_objetivos_eval_empleo
join exp.emp_empleos evaluado on evaluado.emp_codigo = obe_codemp
join exp.emp_empleos evaluador on evaluador.emp_codigo = obe_codemp_evaluador
insert into eva.oan_objetivos_anuales
(oan_peso, oan_objetivo, oan_indicador, oan_metrica, oan_actividades_acordadas, oan_resultados_esperados, oan_fecha_estimada_cumpl, oan_codpob)
select 0, obe_objetivo, cast(obe_codigo as varchar), null, null, null, obe_fecha, pob_codigo
from eva.pob_plan_objs_anuales
join eva.bak_obe_objetivos_eval_empleo on pob_codemp_evaluado = obe_codemp and pob_codemp_evaluador = obe_codemp_evaluador and pob_codpoa = 1
update eva.oan_objetivos_anuales
set oan_peso = peso
from eva.oan_objetivos_anuales
join (
select oan_codpob codpob, num, case when num > 0 then round(100.0 / num, 2) else 0 end peso
from (
select oan_codpob, count(*) num
from eva.oan_objetivos_anuales
group by oan_codpob
) vl
) v2 on oan_codpob = codpob
update eva.oan_objetivos_anuales
set oan_peso = oan_peso + (100 - suma)
from eva.oan_objetivos_anuales
join (
select oan_codpob codpob, sum(oan_peso) suma, min(oan_codigo) min_codigo
from eva.oan_objetivos_anuales
group by oan_codpob
having sum(oan_peso) != 100.0
) v1 on oan_codpob = codpob and oan_codigo = min_codigo
-- Objetivos de períodos
insert into eva.evo_evals_objetivos
(evo_codemp_evaluado, evo_codplz_evaluado, evo_codemp_evaluador, evo_codplz_evaluador, evo_codpev, evo_estado, evo_fecha_cambio_estado, evo_property_bag_data, evo_codigo_workflow, evo_estado_workflow, evo_ingresado_portal, evo_comentario_anulacion)
select pob_codemp_evaluado, pob_codplz_evaluado, pob_codemp_evaluador, pob_codplz_evaluador, pev_codigo, 'Autorizado', getdate(), null, null, 'Autorizado', 1, null
from eva.pob_plan_objs_anuales
join eva.pev_periodos on pev_descripcion = @descPeriodoAMigrar
insert into eva.obj_objetivos
(obj_codevo, obj_orden, obj_peso, obj_objetivo, obj_indicador, obj_metrica, obj_actividades_acordadas, obj_resultados_esperados, obj_fecha_estimada_cumpl,
obj_fecha_cumplimiento, obj_codrco, obj_valor, obj_codoan, obj_resultados_alcanzados)
select evo_codigo, 1, oan_peso, oan_objetivo, null, oan_metrica, oan_actividades_acordadas, oan_resultados_esperados, oan_fecha_estimada_cumpl,
oan_fecha_estimada_cumpl, oev_codrco, oev_porc_logro, oan_codigo, null
from eva.bak_obe_objetivos_eval_empleo
left join eva.bak_oev_objetivos_eval on oev_codobe = obe_codigo
join eva.pob_plan_objs_anuales on pob_codemp_evaluado = obe_codemp and pob_codemp_evaluador = obe_codemp_evaluador
join eva.oan_objetivos_anuales on oan_codpob = pob_codigo
join eva.pev_periodos on pev_descripcion = @descPeriodoAMigrar
join eva.poa_params_objs_anuales on poa_anio = pev_anio
join eva.evo_evals_objetivos on pob_codemp_evaluado = evo_codemp_evaluado and pob_codemp_evaluador = evo_codemp_evaluador and pob_codpoa = poa_codigo
where oan_indicador = cast(obe_codigo as varchar)
update eva.oan_objetivos_anuales set oan_indicador = null
--select * from eva.obj_objetivos
--select * from eva.oan_objetivos_anuales order by oan_codpob
--select * from eva.rco_rangos_logro_objs
--select * from eva.poa_params_objs_anuales
--select * from eva.pob_plan_objs_anuales
-- select * from eva.pev_periodos
commit transaction