Diseño algoritmo global
para cada ítem_evaluable en elemento_producción hacer por cada elemento en ítem_evaluable hacer puntos = Evaluar(elemento) //posibilidad de almacenar registro(id_elemento,puntuación) para posibles auditorias n_autores = Contar(número de autores de la UMU) puntos_investigador = puntos/n_autores para cada autor en autores_UM hacer puntos_elto_investigador = puntos_investigador*índice_experimentalidad1 Almacenar el registro (id_investigador,id_elemento,puntos) fin para fin para fin para para cada grupo en grupos_de_investigación hacer puntos_grupo = 0 para cada investigador en grupo hacer puntos_producción_investigador = suma de todos elementos de producción puntos_grupo += puntos_producción_investigador*porcentaje_participación. fin para almacenar el registro con los puntos del grupo fin para
Diseño algoritmo por cada ítem baremable y cálculo puntuación de cada investigador
Calcular años a beremar: anio inicio , anio fin CopiarDatosProyecto (anio inicio , anio fin) CopiarDatosInvenciones (anio inicio , anio fin) ObtenerCopiarSexenios (anio inicio , anio fin) //integración UNIVERSIDAD ObtenerCopiarTesis (anio inicio , anio fin) //integración UNIVERSIDAD para cada año baremable hacer EvaluarSexenios (anio) EvaluarCostesIndirectos (anio) EvaluarPublicaciones (anio) EvaluarCongresos (anio) EvaluarObrasArtisticas (anio) EvaluarDireccionTesis (anio) EvaluarComitesEditoriales (anio) EvaluarOrganizacionActividades (anio) EvaluarProyectos (anio) //ojo los proyectos pueden tener una puntuación en cada año, se tendrán que ir sumando para el item la de los años distintos EvaluarContratos (anio) //ojo los proyectos pueden tener una puntuación en cada año, se tendrán que ir sumando para el item la de los años distintos EvaluarInvenciones (anio) fin para
CopiarDatosProyectos
Buscar los proyectos del SGI que cumplan las siguientes condiciones: - activo - estado Concedido - que no sea externo (el modelo de ejecución al que pertenece tiene el flag externo a false) - fechas de inicio y fin del proyecto contenga los años que se estan baremando - campo "Clasificación científica/cvn" toma el valor "Proyectos competitivos" o "Proyectos no competitivos" Estos proyectos se crearán o se actualizarán en el módulo de PRC. (actualizar o primero eliminar y crearlos nuevos) Se busca si ya existe un registro en la tabla ProduccionCientifica con el identificador de la tabla Proyecto de CSP (idRef), epigrafeCVN= "050.020.010.000"(si campo "Clasificación científica/cvn" toma el valor "Proyectos competitivos" ) o epigrafeCVN= "050.020.020.000"(si campo "Clasificación científica/cvn" toma el valor "Proyectos no competitivos" ) y con "convocatoriaBaremacionId" = null. Si no existe se crean registros en las siguientes tablas y con los siguientes campos: Tabla ProduccionCientifica y EstadoProduccionCientifica - idRef: identificador interno de la tabla Proyecto de CSP - epigrafeCVN: se introducirá el valor "050.020.010.000" si el campo "Clasificación científica/cvn" toma el valor "Proyectos competitivos" o "050.020.020.000" si tiene el valor campo "Clasificación científica/cvn" toma el valor "Proyectos no competitivos" - estado: se creará un registro en la tabla "EstadoProduccionCientifica" con el campo "estado" igual al valor del enumerado TipoEstadoProduccion.VALIDADO y con fecha, la fecha actual. - convocatoriaBaremacionId: valor null. Tabla CampoProduccionCientifica y ValorCampo Se crearán los siguientes registros en la tabla "CampoProduccionCientifica" 1) - codigoCVN: con valor "050.020.010.010" si el campo "Clasificación científica/cvn" toma el valor "Proyectos competitivos" o "050.020.020.010" si tiene el valor campo "Clasificación científica/cvn" toma el valor "Proyectos no competitivos" - se crea un registro en la tabla "ValorCampo" con el valor del campo "titulo" del Proyecto y el orden 1 2) - codigoCVN: con valor "050.020.010.270" si el campo "Clasificación científica/cvn" toma el valor "Proyectos competitivos" o "050.020.020.180" si tiene el valor campo "Clasificación científica/cvn" toma el valor "Proyectos no competitivos" - se crea un registro en la tabla "ValorCampo" con el valor del campo "fechaInicio" del Proyecto y el orden 1 3) - codigoCVN: con valor "050.020.010.410" si el campo "Clasificación científica/cvn" toma el valor "Proyectos competitivos" o "FECHA_FIN_CONTRATO" si tiene el valor campo "Clasificación científica/cvn" toma el valor "Proyectos no competitivos" - se crea un registro en la tabla "ValorCampo" con el valor del campo "fechaFinDefinitiva" del Proyecto si esta informada y sino el campo "fechaFin" del Proyecto y el orden 1 4) - codigoCVN: con valor "050.020.010.040" si el campo "Clasificación científica/cvn" toma el valor "Proyectos competitivos" - se crea un registro en la tabla "ValorCampo" con el valor indicado en el campo "valor" de la tabla "MapeoTipos". Se irá a buscar el identificador del ámbito geográfico del proyecto a dicha tabla (idTipoRef), con el campoCVN ="050.020.010.040" y se guardará el dato almacenado en la columna valor. Y el orden 1. (El valor será 000, 010, 020, 030 o OTHERS) 5) - codigoCVN: con valor "050.020.010.290" si el campo "Clasificación científica/cvn" toma el valor "Proyectos competitivos" o "050.020.020.200" si tiene el valor campo "Clasificación científica/cvn" toma el valor "Proyectos no competitivos" - se crea un registro en la tabla "ValorCampo" con el valor del campo "totalImporteConcedido" si viene informado en la entidad Proyecto y sino será la suma del campo "totalGastosConcedido" de todos los registros de la entidad ProyectoAnanualidad del Proyecto. Y orden 1. 6) - codigoCVN: con valor "CONVOCATORIA_EXCELENCIA" si el campo "Clasificación científica/cvn" toma el valor "Proyectos competitivos". - se crea un registro en la tabla "ValorCampo" con el valor del campo "convocatoriaExcelencia" del Proyecto y el orden 1 7) - codigoCVN: con valor "CUANTIA_COSTES_INDIRECTOS_PROYECTO" si el campo "Clasificación científica/cvn" toma el valor "Proyectos competitivos" o "CUANTIA_COSTES_INDIRECTOS_CONTRATO" si tiene el valor campo "Clasificación científica/cvn" toma el valor "Proyectos no competitivos" - se crea un registro en la tabla "ValorCampo" con el valor de la suma del campo "importeConcedido" de todos los registros de la entidad AnualidadGasto que tenga un "conceptoGasto" con el flag de "costesIndirectos" a "true" del Proyecto. Y orden 1. Tabla Autor Se crearán tantos registros en la tabla "Autor" como investigadores tenga la tabla "ProyectoEquipo" del Proyecto con los siguientes campos: - firma: se pondrá a null - personaRef: campo "personaRef" de la tabla "ProyectoEquipo" - nombre: se pondrá a null - apellidos: se pondrá a null - orden: se pondrá a null - orcidId: se pondrá a null - fechaInicio: campo "fechaInicio" de la tabla "ProyectoEquipo" - fechaFin: campo "fechaFin" de la tabla "ProyectoEquipo" - ip: se pondrá a "true" si el campo "rolProyecto" es un rol que tenga marcado el flag de "principal", sino se pondrá el valor "false" Si existe el registro, las tablas ProduccionCientifica y EstadoProduccionCientifica no se modifican y las tablas CampoProduccionCientifica, ValorCampo y Autor se eliminan sus registros y se vuelven a crear con lo mencionado en la parte de cuando no existe el registro.
CopiarDatosInvenciones
Buscar las invenciones del SGI que cumplan las siguientes condiciones: - invencióna activa - titular Universidad entre las fechas de los años que se estan baremando. Para ello mirar la tabla PeriodoTitularidadTitular donde titularRef sea el identificador de la Universidad (mirar variable del módulo de Configuración) , participacion > 0 y las fechas comprendan los años que se están baremando. - tenga vías de solicitud con fecha de concesión entre el rango de años que se están baremando. Estas invenciones se crearán o se actualizarán en el módulo de PRC.(actualizar o primero eliminar y crearlos nuevos) Se busca si ya existe un registro en la tabla ProduccionCientifica con el identificador de la tabla Invencion de PII (idRef), epigrafeCVN=050.030.010.000 y con "convocatoriaBaremacionId" = null. Si no existe se crean registros en las siguientes tablas y con los siguientes campos: Tabla ProduccionCientifica y EstadoProduccionCientifica - idRef: identificador interno de la tabla Invencion de PII - epigrafeCVN: se introducirá el valor "050.030.010.000" - estado: se creará un registro en la tabla "EstadoProduccionCientifica" con el campo "estado" igual al valor del enumerado TipoEstadoProduccion.VALIDADO y con fecha, la fecha actual. - convocatoriaBaremacionId: valor null. Tabla CampoProduccionCientifica y ValorCampo Se crearán los siguientes registros en la tabla "CampoProduccionCientifica" 1) - codigoCVN: con valor "050.030.010.020" - se crea un registro en la tabla "ValorCampo" con el valor del campo "titulo" de la Invención y el orden 1 2) - codigoCVN: con valor "PORCENTAJE_TITULARIDAD" - se crean tantos registros en la tabla "ValorCampo" con el valor del campo "participacion" de la Invención (tabla PeriodoTitularidadTitular, si son 3 años los que se esta baremando, se pondrán 3 valores a 31 de diciembre de cada año, si uno de los años no hay titularidad, se pondrá el valor 0 en el porcentaje. 3) - codigoCVN: con valor "050.030.010.030" - se crea un registro en la tabla "ValorCampo" con el valor indicado en el campo "valor" de la tabla "MapeoTipos". Se irá a buscar el identificador del Tipo de protección de la Invención a dicha tabla (idTipoRef), con el campoCVN ="050.030.010.030" y se guardará el dato almacenado en la columna valor. Y el orden 1. (El valor será 109, 122, 126, 141, 177 o OTHERS) 4) - codigoCVN: con valor "050.030.010.320" - se crean tantos registros en la tabla "ValorCampo" como solicitudes de protección con fechaConcesión se encuentre en el rango de años de baremación. En el campo "valor" se pondrá el valor del campo "fechaConcesion" de la tabla "SolicitudProteccion" y en el orden se irá poniendo 1, 2, 3, etc, por orden ascendente de la fecha de concesión. 5) - codigoCVN: con valor "050.030.010.160" - se crean tantos registros en la tabla "ValorCampo" como solicitudes de protección con fechaConcesión se encuentre en el rango de años de baremación. En el campo "valor" se pondrá "true" o "false" dependiendo de si el campo "ViaProteccion" asociado a la solicitud es "España" o no y en el orden se irá poniendo 1, 2, 3, etc, por orden ascendente de la fecha de concesión. Para saber si la vía de protección es "España" se irá a buscar en la tabla "MapeoTipos" el campoCVN "050.030.010.160" y en el "idTipoRef" el identificador de la vía de protección. (El valor será true o false) 6) - codigoCVN: con valor "050.030.010.170" - se crean tantos registros en la tabla "ValorCampo" como solicitudes de protección con fechaConcesión se encuentre en el rango de años de baremación. En el campo "valor" se pondrá "true" o "false" dependiendo de si el campo "ViaProteccion" asociado a la solicitud es "Europea" o no y en el orden se irá poniendo 1, 2, 3, etc, por orden ascendente de la fecha de concesión. Para saber si la vía de protección es "Europea" se irá a buscar en la tabla "MapeoTipos" el campoCVN "050.030.010.170" y en el "idTipoRef" el identificador de la vía de protección. (El valor será true o false) 7) - codigoCVN: con valor "CUANTIA_LICENCIAS" - se crea un registro en la tabla "ValorCampo" con el valor calculado de "Sumar todos los ingresos de los proyectos relacionados con la invención". Para obtener los ingresos de cada proyecto relacionado a una invención se tendrá que llamar a la API de ESB de PII a los servicios /ingresos-invencion/columnas (para obtener el campo que es el importe, el que tiene el valor "importeReparto" a true) y /ingresos-invencion?q=proyectoId=="XXXXX" , de todos los ingresos se suman el campo indicado como que es el "importeReparto". Esto se hace para todos los contratos relacionados con la invención. Tabla Autor Se crearán tantos registros en la tabla "Autor" como investigadores tenga la tabla "InvencionInventor" de la Invención con los siguientes campos: - firma: se pondrá a null - personaRef: campo "personaRef" de la tabla "InvencionInventor" - nombre: se pondrá a null - apellidos: se pondrá a null - orden: se pondrá a null - orcidId: se pondrá a null - ip: se pondrá a null Si existe el registro, las tablas ProduccionCientifica y EstadoProduccionCientifica no se modifican y las tablas CampoProduccionCientifica, ValorCampo y Autor se eliminan sus registros y se vuelven a crear con lo mencionado en la parte de cuando no existe el registro.
ObtenerCopiarSexenios
Para cada año que se barema lista_investigadores: Obtener los investigadores (personaRef) que a 31 de diciembre del año que se esta baremando pertenecen a un grupo de investigación con un rol con el flag de baremable a true.La lista no tendrá personas repetidas, se guardará la personaRef de cada investigador. Si ya esta en la lista no se añade, sino esta en la lista se añade. Fin para Para cada uno de esos investigadores se llamará al servicio de SGP GET /sexenios/persona/{id} que devuelve para cada investigador una lista de la entidad Sexenio con el número de sexenios de esta persona y país, y se creará su sexenio en el módulo de PRC, en caso de que devuelva mas de un Sexenio, se sumará el campo número. Se busca si ya existe un registro en la tabla ProduccionCientifica con el identificador idRef = "SEX_" + valor de la "personaRef" y epigrafeCVN = "060.030.070.000" y con "convocatoriaBaremacionId" = null. Si no existe se crean registros en las siguientes tablas y con los siguientes campos: Tabla ProduccionCientifica y EstadoProduccionCientifica - idRef: "SEX_" + personaRef - epigrafeCVN: se introducirá el valor "060.030.070.000" - estado: se creará un registro en la tabla "EstadoProduccionCientifica" con el campo "estado" igual al valor del enumerado TipoEstadoProduccion.VALIDADO y con fecha, la fecha actual. - convocatoriaBaremacionId: id de la convocatoria que estamos baremando Tabla CampoProduccionCientifica y ValorCampo Se crearán los siguientes registros en la tabla "CampoProduccionCientifica" 1) - codigoCVN: con valor "060.030.070.010" - se crea un registro en la tabla "ValorCampo" con el valor del campo "numero" del Sexenio (o suma del campo "numero" de los Sexenios) y el orden 1 Tabla Autor Se crearán un registro en la tabla "Autor" con el dato del investigador (personaRef) - firma: se pondrá a null - personaRef: campo "personaRef" - nombre: se pondrá a null - apellidos: se pondrá a null - orden: se pondrá a null - orcidId: se pondrá a null - ip: se pondrá a null Si existe el registro, únicamente se actualiza el valor de la tabla "ValorCampo" con el valor del campo "numero" del Sexenio
EvaluarPublicaciones
Para cada item de la tabla ProduccionCientifica con epigrafeCVN = "060.010.010.000" y con CampoProduccionCientifica que tiene en ConfiguracionCampo el campo fechaReferenciaIni = true esta en el año que se esta baremando y estado "Validado" o "Validado Parcialmente" puntos = EvaluarItemPublicacion(elemento,anio) Si puntos > 0 entonces autores_UMU = los que existen en la tabla Autor con personaRef informado y que pertenecen a un grupo con un rol con el flag de baremable a true a fecha 31 de diciembre del año que se esta baremando y con el campo "especial investigación" a valor "No" a fecha 31 de diciembre del año que se esta baremando n_autores = Contar(autores_UMU) puntos_investigador = puntos/n_autores para cada autor en autores_UMU y en estado "Validado" (si el item tiene estado actual "Validado" o el item esta en estado "Validado parcialemnte" en la taba "ProduccionCientifica" y esta en la tabla AutorGrupo con un estado "Validado") hacer Aplicar los baremos de (Regional/Autonómico - IP,Nacional - IP, Nacional - IP y Europeo/Internacional - IP y Resto - IP) para Proyectos y de ( Editor) para Comites puntos_elto_investigador = puntos_investigador * índice_experimentalidad Almacenar el registro en la tabla PuntuacionItemInvestigador (id_investigador,id_elemento,puntos_elto_investigador,anio) (el id_elemento es el id del item de produccion cientifica asignado a la convocatoria) fin para fin para
NOTA:
Los puntos de cada investigador se deben de multiplicar por un el índice de experimentalidad en todos los items excepto en "Contratos", "Costes indirectos" y "Sexenios". El índice de experimentalidad se define por departamento. El departamento elegido será el departamento de adscripción del investigador.
EvaluarItemPublicacion
Para cada baremo de la tabla Baremo con el campo seleccionado = true, que sea un nodo hijo y con ConfiguracionBaremo con epigrafeCVN = "060.010.010.000" , con activo = "true" y sean baremos de la ConvocatoriaBaremacion que se esta ejecutando puntos = 0 Para cada baremo con tipoPuntos = PRINCIPAL y ordenados por prioridad (de forma ascendente el campo prioridad) puntosBaremoPrincipal = CalcularBaremoPublicacion (baremo, anio) Si puntosBaremoPrincipal > 0 puntos = puntos + puntosBaremoPrincipal Hacer copia del registro asignándole la convocatoria (rellenando el campo convocatoriaBaremacionId) (Se copian las tablas ProduccionCientifica, CampoProduccionCientifica, ValorCampo, Autor, AutorGrupo, Proyecto, Acreditacion e IndiceImpacto) Almacenar el registro en la tabla PuntuacionBaremoItem (id_elemento,id_baremo, puntosBaremoPrincipal) (id_elemento es el id del nuevo registro creado) Salir del bucle (ya no se siguen mirando los baremos siguientes) fin para Si puntos > 0 Por cada baremo con tipoPuntos = MODULADOR puntosBaremoModulador = CalcularBaremoPublicacion (baremo, anio) puntos = puntos * puntosBaremoModulador Almacenar el registro en la tabla PuntuacionBaremoItem (id_elemento,id_baremo, puntosBaremoModulador) fin para Si puntos > 0 Para cada baremo con tipoPuntos = EXTRA puntosBaremoExtra = CalcularBaremoPublicacion (baremo, anio) puntos = puntos + puntosBaremoExtra Almacenar el registro en la tabla PuntuacionBaremoItem (id_elemento,id_baremo, puntosBaremoExtra) fin para fin para
CalcularBaremoPublicacion
PuntosBaremo = 0 Si baremo - ConfiguracionBaremo es de tipoBaremo = AUTORIA_BCI_EDITORIAL_EXTRANJERA o CAP_LIBRO_BCI_EDITORIAL_EXTRANJERA o EDICION_BCI_EDITORIAL_EXTRANJERA o COMENTARIO_BCI_EDITORIAL_EXTRANJERA comprobar que se cumple: - El valor del campo "060.010.010.160" del item, comprobar si es un formato ISBN de 10 o de 13 digitos (para ello quitar los guiones y contar los digitos). Si es de 10 digitos obtener el primer bloque de números separados por guion y comprobar que es distinto al número 84. Y si es de 13 digitos obtener el segundo bloque de número separados por guión y comprobar que es distinto al número 84 - Que exista en el listado de IndiceImpacto del item el campo fuenteImpacto = BCI - Si tipoBaremo = AUTORIA_BCI_EDITORIAL_EXTRANJERA - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.032" - Si tipoBaremo = CAP_LIBRO_BCI_EDITORIAL_EXTRANJERA - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.004" - Si tipoBaremo = EDICION_BCI_EDITORIAL_EXTRANJERA - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.208" - Si tipoBaremo = COMENTARIO_BCI_EDITORIAL_EXTRANJERA - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.COMENTARIO_SISTEMATICO_NORMAS" Si se cumplen condiciones PuntosBaremo = campo "puntos" de la tabla Baremo Si baremo - ConfiguracionBaremo es de tipoBaremo = AUTORIA_BCI_EDITORIAL_NACIONAL o CAP_LIBRO_BCI_EDITORIAL_NACIONAL o EDICION_BCI_EDITORIAL_NACIONAL o COMENTARIO_BCI_EDITORIAL_NACIONAL comprobar que se cumple: - El valor del campo "060.010.010.160" del item, , comprobar si es un formato ISBN de 10 o de 13 digitos (para ello quitar los guiones y contar los digitos). Si es de 10 digitos obtener el primer bloque de números separados por guion y comprobar que es igual al número 84. Y si es de 13 digitos obtener el segundo bloque de número separados por guión y comprobar que es igual al número 84 - Que exista en el listado de IndiceImpacto del item el campo fuenteImpacto = BCI - Si tipoBaremo = AUTORIA_BCI_EDITORIAL_NACIONAL - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.032" - Si tipoBaremo = CAP_LIBRO_BCI_EDITORIAL_NACIONAL - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.004" - Si tipoBaremo = EDICION_BCI_EDITORIAL_NACIONAL - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.208" - Si tipoBaremo = COMENTARIO_BCI_EDITORIAL_NACIONAL - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.COMENTARIO_SISTEMATICO_NORMAS" Si se cumplen condiciones PuntosBaremo = campo "puntos" de la tabla Baremo Si baremo - ConfiguracionBaremo es de tipoBaremo = AUTORIA_ICEE_Q1 o CAP_LIBRO_ICEE_Q1 o EDICION_ICEE_Q1 o COMENTARIO_ICEE_Q1 comprobar que se cumple: - Que exista en el listado de IndiceImpacto del item el campo fuenteImpacto = ICEE y que tenga a true el campo revista25 (campo "060.010.010.330" del item) o bien ((posicionPublicacion * 100)/numeroRevistas) <=25 donde posicionPublicacion es el campo "060.010.010.250" del item y numeroRevistas es el campo "060.010.010.250" del item - Si tipoBaremo = AUTORIA_ICEE_Q1 - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.032" - Si tipoBaremo = CAP_LIBRO_ICEE_Q1 - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.004" - Si tipoBaremo = EDICION_ICEE_Q1 - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.208" - Si tipoBaremo = COMENTARIO_ICEE_Q1 - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.COMENTARIO_SISTEMATICO_NORMAS" Si se cumplen condiciones PuntosBaremo = campo "puntos" de la tabla Baremo Si baremo - ConfiguracionBaremo es de tipoBaremo = AUTORIA_ICEE_RESTO_CUARTILES o CAP_LIBRO_ICEE_RESTO_CUARTILES o EDICION_ICEE_RESTO_CUARTILES o COMENTARIO_ICEE_RESTO_CUARTILES comprobar que se cumple: - Que exista en el listado de IndiceImpacto del item el campo fuenteImpacto = ICEE y que tenga ((posicionPublicacion * 100)/numeroRevistas) >25 donde posicionPublicacion es el campo "060.010.010.250" del item y numeroRevistas es el campo "060.010.010.250" del item - Si tipoBaremo = AUTORIA_ICEE_RESTO_CUARTILES - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.032" - Si tipoBaremo = CAP_LIBRO_ICEE_RESTO_CUARTILES - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.004" - Si tipoBaremo = EDICION_ICEE_RESTO_CUARTILES - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.208" - Si tipoBaremo = COMENTARIO_ICEE_RESTO_CUARTILES - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.COMENTARIO_SISTEMATICO_NORMAS" Si se cumplen condiciones PuntosBaremo = campo "puntos" de la tabla Baremo Si baremo - ConfiguracionBaremo es de tipoBaremo = AUTORIA_DIALNET o CAP_LIBRO_DIALNET o EDICION_DIALNET o COMENTARIO_DIALNET comprobar que se cumple: - Que exista en el listado de IndiceImpacto del item el campo fuenteImpacto = DIALNET - Si tipoBaremo = AUTORIA_DIALNET - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.032" - Si tipoBaremo = CAP_LIBRO_DIALNET - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.004" - Si tipoBaremo = EDICION_DIALNET - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.208" - Si tipoBaremo = COMENTARIO_DIALNET - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.COMENTARIO_SISTEMATICO_NORMAS" Si se cumplen condiciones PuntosBaremo = campo "puntos" de la tabla Baremo Si baremo - ConfiguracionBaremo es de tipoBaremo = AUTORIA_OTRAS o CAP_LIBRO_OTRAS o EDICION_OTRAS o COMENTARIO_OTRAS comprobar que se cumple: - Que exista en el listado de IndiceImpacto del item una fuenteImpacto con valor distinto a (BCI, ICEE y DIALNET) - Si tipoBaremo = AUTORIA_OTRAS - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.032" - Si tipoBaremo = CAP_LIBRO_OTRAS - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.004" - Si tipoBaremo = EDICION_OTRAS - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.208" - Si tipoBaremo = COMENTARIO_OTRAS - La cadena resultante de la concatenacion del campo "060.010.010.010" +"." + valor del campo "060.010.010.010" del item = al enumerado "060.010.010.010.COMENTARIO_SISTEMATICO_NORMAS" Si se cumplen condiciones PuntosBaremo = campo "puntos" de la tabla Baremo Si baremo - ConfiguracionBaremo es de tipoBaremo = LIBRO_NUMERO_AUTORES hacer: Recorrer las litas de autores del item (tabla Autor) con personaRef informado y que pertenecen a un grupo de investigación (tabla GrupoEquipo) con un rol con el flag de baremable a true a fecha 31 de diciembre del año que se esta baremando y el grupo al que pertenecen los autores (tabla Grupo) este activo y el campo "Grupo especial de investigación" a "No" el 31 de diciembre del año que se esta baremando y contarlos = numero_autores Obtener el área del item, para ello: Si el campo "060.010.010.390" viene informado y es una personaRef y que pertenece a un grupo de investigación con un rol con el flag de baremable a true a fecha 31 de diciembre del año que se esta baremando Se obtiene el área a la que pertenece de nivel 1 (es decir, se va a buscar el área de nodo raíz). Si hay mas de una persona en este campo se van cogiendo de uno en uno y mirando si cumple las condiciones (según vengan en la lista) Sino Si el autor de posición 1 de la lista de autores es una personaRef y que pertenece a un grupo de investigación con un rol con el flag de baremable a true a fecha 31 de diciembre del año que se esta baremando Se obtiene el área a la que pertenece de nivel 1 (es decir, se va a buscar el área de nodo raíz). Sino Si el autor de posición última de la lista de autores es una personaRef y que pertenece a un grupo de investigación con un rol con el flag de baremable a true a fecha 31 de diciembre del año que se esta baremando Se obtiene el área a la que pertenece de nivel 1 (es decir, se va a buscar el área de nodo raíz). Si existe el área del item, se va a la tabla Modulador de la convocatoria que se esta baremando y se comprueba si el numero_autores es : 1: se coge el campo valor1 y se pone en PuntosBaremo 2-3: se coge el campo valor2 y se pone en PuntosBaremo 4-5: se coge el campo valor3 y se pone en PuntosBaremo 6-7: se coge el campo valor4 y se pone en PuntosBaremo >8: se coge el campo valor5 y se pone en PuntosBaremo Si baremo - ConfiguracionBaremo es de tipoBaremo = LIBRO_EDITORIAL_PRESTIGIO comprobar que se cumple: Si el campo "060.010.010.100" (editorial) viene informado Entonces: Obtener el área del item, para ello: Si el campo "060.010.010.390" viene informado y es una personaRef y que pertenece a un grupo de investigación con un rol con el flag de baremable a true a fecha 31 de diciembre del año que se esta baremando Se obtiene el área a la que pertenece de nivel 1 (es decir, se va a buscar el área de nodo raíz). Si hay mas de una perso en este campo se van cogiendo de uno en uno y mirando si cumple las condiciones (según vengan en la lista) Sino Si el autor de posición 1 de la lista de autores es una personaRef y que pertenece a un grupo de investigación con un rol con el flag de baremable a true a fecha 31 de diciembre del año que se esta baremando Se obtiene el área a la que pertenece de nivel 1 (es decir, se va a buscar el área de nodo raíz). Sino Si el autor de posición última de la lista de autores es una personaRef y que pertenece a un grupo de investigación con un rol con el flag de baremable a true a fecha 31 de diciembre del año que se esta baremando Se obtiene el área a la que pertenece de nivel 1 (es decir, se va a buscar el área de nodo raíz). Buscar en la tabla EditorialPresitigio si para dicha area del item el campo editorial 060.010.010.100 existe para la TablaEditorial cuyas fechas comprendan el año que se esta baremando (se comparan los nombres de las edoditoriales, pasarlas a mayusculas, quitar acentos y quitar espacios y comparar las cadenas). Si se cumplen condiciones PuntosBaremo = campo "puntos" de la tabla Baremo Devolver PuntosBaremo
Algoritmo baremación grupos
para cada año de baremación para cada grupo en grupos_de_investigación que tienen el campo "Grupo especial de investigación" a "No" el 31 de diciembre del año que se esta baremando hacer puntos_produccion_grupo = 0 puntos_sexenios_grupo = 0 puntos_ci_grupo = 0 almacenar el registro con los puntos del grupo en la tabla PuntuacionGrupo de la convocatoria que se esta baremando y con puntos_produccion_grupo = 0, puntos_sexenios_grupo = 0 y puntos_ci_grupo = 0 (SOLO SI NO EXISTE, buscar por grupoRef y convocatoriaBaremacionId) para cada investigador en el grupo a 31 de diciembre de ese año con rol con el flag baremable a true hacer (grupo equipo) para cada elemento de la tabla PuntuacionItemInvestigador filtrando por investigador, anio (año que estas recorriendo) y para todos los items que corresponden a la convocatoria que se esta baremando (convocatoria baremacion id) puntos = puntos de la tabla PuntuacionItemInvestigador *(porcentaje_participación/100) almacenar registro en la tabla PuntuacionGrupoInvestigador (puntos, grupo, puntuacionItemInvestigador) si tipoPuntuacion = SEXENIO puntos_sexenios_grupo = puntos_sexenios_grupo + puntos sino si tipoPuntuacion = COSTE_INDIRECTO puntos_ci_grupo = puntos_ci_grupo + puntos SINO puntos_produccion_grupo = puntos_produccion_grupo + puntos fin para fin para fin para actualizar el registro con los puntos del grupo (puntos_produccion_grupo,puntos_sexenios_grupo y puntos_ci_grupo ) en la tabla PuntuacionGrupo fin para Realizar el cálculo del punto de producción, del punto de sexenio y del punto de costes indirectos. La forma de obtener dichos valores es: suma_sexenios: Suma total de todos los puntos de sexenios todos los grupos baremables en la convocatoria (tabla PuntuacionGrupo) suma_produccion: Suma total de todos los puntos de producción todos los grupos baremables en la convocatoria en la convocatoria suma_ci: Suma total de todos los puntos de costes indirectos todos los grupos baremables en la convocatoria en la convocatoria importe_total_convocatoria: Importe de producción cientifíca definido en la configuración de la convocatoria (campo "importeTotal" de la tabla "ConvocatoriaBaremacion" peso_sexenios: importe_total_convocatoria * (peso del Baremo de tipo SEXENIO en la convocatoria de baremación /100). peso_produccion: importe_total_convocatoria * (peso del Baremo de tipo PRODUCCION_CIENTIFICA en la convocatoria de baremación /100). peso_ci: importe_total_convocatoria * (peso del Baremo de tipo COSTE_INDIRECTO en la convocatoria de baremación /100). Precio punto sexenio: peso_sexenios / suma_sexenios Precio punto producción: peso_produccion / suma_produccion Precio punto costes indirectos: peso_ci / suma_ci Actualizar los campos "puntoProduccion", "puntoSexenio" y "puntoCostesIndirectos" con los valores calculados en la tabla "ConvocatoriaBaremacion" Actualizar el campo "fechaFinEjecucuón" de la tabla "ConvocatoriaBaremacion" con la fecha actual, para indicar que el proceso se ha ejecutado y finalizado. Mandar comunicado a los gestores para indicar que se ha finalizado el proceso de baremación.