Árbol de páginas

Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.


Markup de wiki
\\
----

----
Control de cambios
\\
*Leyenda*
|Nuevo|Modificado|Eliminado|
\\
*Historial de cambios*
|*Fecha*|*Cambios*|
|30-sep-2021 |Adaptación para poder diferenciar los gastos que han de intervenir en los repartos de regalías del resto y para identificar qué columnas corresponden a los importes a incluir en los repartos.|
h1.Sistema de Gestión Económica de Protección Industrial e Intelectual
h2.Entidades
Cambios
30-sep-2021 Se actualizan las entidades para:
* Añadir al modelo del SGEPII la entidad Columna, ya que pasa a ser distinta a la del SGE y ya no se podría reutilizar.

Hay entidades que se reutilizan del modelo de Ejecución económica del SGE y pero se repiten aquí por claridad aunque ya están descritas en el API del SGE: [{color:#0000ee}{+}SGI - ESB - SGE - Ejecución económica+{color}|file:///C:/pages/viewpage.action?pageId=103905017].
|*Entidad*|*Descripción*|
|DatoEconomico|Entidad que representa cualquier dato económico. Tendrá que venir identificado por un identificador único, por el proyecto al que pertenece, anualidad, partida presupuestaria y un código económico (opcional en algunos de los casos). \\
El resto de campos del dato económico se tratarán como columnas dinámicas. Se indicará por cada columna el identificador del campo, el nombre del campo y si es una columna sobre la que se tiene que hacer una suma para mostrarlo en el SGI como un campo totalizador.|
|Columna|Contiene el listado de columnas que serán mostradas en las pantallas del SGI dependiendo de la pantalla en la que se esté: gastos o repartos. \\
Por cada columna se tendrá el identificador del campo, el nombre del campo, si es una columna sobre la que se tiene que hacer una suma para mostrarlo en el SGI como un campo totalizador, que, a los efectos de esta integración para las invenciones, equivaldría a identificar dicha columna como de tipo numéricos y si es +la columna+ (solo puede haber una) que se ha de utilizar para hacer el cálculo del importe a deducir en los repartos de regalías.|
|DatoEconomicoDetalle|Entidad que representa el detalle de un dato económico con todos sus campos para mostrarlo en una pantalla de consulta del dato económico. \\
Tendrá unos campos fijos (identificador único, identificador del proyecto al que pertenece, anualidad, partida presupuestaria y un código económico) y unos campos dinámicos. Por cada campo se detallará el nombre y el valor del campo para mostrarlo en la pantalla del SGI|
|Invencion|Entidad que representa a la invención cara a poder ser presentada en listas de valores con su título.|
h2.Enumerados
Cambios
30-sep-2021 Se actualiza la lista de enumerados para:
* Añadir el enumerado TipoOperacion.
|*Entidad*|*Descripción*|
|TipoDatoEconomico|Puede tomar los siguientes valores: \\
* Ingreso \\
* Gasto|
|TipoOperacion|Puede tomar los siguientes valores: \\
* GAS \\
* REP|
h2.Modelo lógico
Cambios
30-sep-2021 Se actualiza el modelo lógico para:
* Añadir entidad "Columna" como propia del modelo de PII.
* Añadir enumerado "TipoOperacion" y relacionarlo con DatoEconomico.

!worddavd8df4ce871f21f3dd429822028305797.png|height=417,width=468!
h2.API
Características generales que todas las API REST deben de cumplir:
* [{color:#0000ee}{+}Consultas filtradas y paginadas+{color}|https://confluence.treelogic.com/display/HERCULES/Consultas+filtradas+y+paginadas]
* [{color:#0000ee}{+}Formatos de datos API+{color}|https://confluence.treelogic.com/display/HERCULES/Formatos+de+datos+API]

h3.Definición de los objetos
Hay objetos que se reutilizan del modelo de Ejecución económica del SGE y por tanto no se repiten aquí, están descritos en el API del SGE:  [{color:#0000ee}{+}UM - SGI - ESB - SGE - Ejecución económica+{color}|file:///C:/pages/viewpage.action?pageId=108604695].
Cambios
30-sep-2021 Se actualiza la definición de objetos para:
* Añadir objeto "Columna" como propio del modelo de PII.

h4.Invencion
|*Nombre*|*Tipo*|*Descripción*|
|id|String|Identificador único de la invención.|
|titulo|String|Título de la invención.|
h4.DatoEconomico
|*Nombre*|*Tipo*|*Descripción*|
|id|String|Identificador del dato económico. Tiene que ser un identificador único.|
|tipo|String|Dos valores: \\
* Gasto \\
* Ingreso|
|columnas|Map\[clave,valor\]|Mapa de propiedades. \\
El valor será un String salvo en aquellas columnas que sean acumulables (se puede manejar como un importe y hacer operaciones numéricas con ella en el SGI).|
h4.DatoEconomicoDetalle
|*Nombre*|*Tipo*|*Descripción*|
|id|String|Identificador del dato económico. Tiene que ser un identificador único.|
|documentos|Lista\[Documento\]|Lista de documentos asociados al gasto (sin el contenido binario del fichero).|
h4.Columna
|*Nombre*|*Tipo*|*Descripción*|
|id|String|Identificador de la columna|
|nombre|String|Nombre de la columna|
|acumulable|Boolean|Indica si la columna se puede sumar y por extensión, además indica que es numérica. \\
Dos valores: \\
* true \\
* false|
|importeReparto|Boolean|Indica que la columna se corresponde con el importe que se quiere tener en cuenta a la hora de calcular el reparto de regalías. SOLO UNA COLUMNA PODRÁ TENER ESTE CAMPO ACTIVO, en el caso de UM, será el campo que contenga el dato de base imponible. \\
Dos valores: \\
* true \\
* false|
h4.Documento (se reutilizaría el mismo que el definido en [{color:#0000ee}{+}UM - SGI - ESB - SGE - Ejecución económica+{color}|file:///C:/pages/viewpage.action?pageId=108604695])
|*Nombre*|*Tipo*|*Descripción*|
|id|String|Identificador único del documento|
|nombre|String|Nombre del documento a mostrar|
|nombreFichero|String|Nombre del fichero con extensión|
h3.Servicios
Hay servicios a los que no se hace mención en este API porque la funcionalidad que los precisa, por ejemplo, la recuperación del binario de cada documento asociado a un gasto, ha de reutilizar los que ya están definidos en el modelo de Ejecución económica del SGE y por tanto no se repiten aquí, están descritos en el API del SGE: [{color:#0000ee}{+}UM - SGI - ESB - SGE - Ejecución económica+{color}|file:///C:/pages/viewpage.action?pageId=108604695].
Cambios
30-sep-2021 Se actualiza la definición del servicio GET /gastos-invencion para recibir el nuevo parámetro tipoOperacion.
||*Método*||*URL*||*Parámetros*||*Respuesta*||*Descripción*||
|Invención| | | | | | | | |
|HEAD|/invenciones/\{id\}| |HTTP 200 / HTTP 204|Comprueba la existencia de la invención con el id indicado en el SGI. (A implementar por Treelogic)|
|GET|/invenciones|q+s (query + sort) \\
La query estará formada por: \\
* invencionId|Lista\[Invencion\] \\  |Listado de todas las invenciones registradas en el SGI. (A implementar por Treelogic) \\
_Ejemplo{_}: \\
invencionId=in=(150,151,152)|
|Gastos| | | | | | | | |
|GET|/gastos-invencion/columnas|q+s (query + sort) \\
La query estará formada por: \\
* invencionId|Lista\[Columna\] \\
 \\  |Listado con las columnas que va a devolver la llamada /gastos-invencion. \\
Por cada columna se indica un id, nombre, si es una columna acumulable (se puede manejar como un importe y hacer operaciones numéricas con ella en el SGI). \\
Por defecto, devolverá las siguientes columnas: \\
* Fecha \\
* Referencia \\
* Concepto \\
* Tipo \\
* Importe (acumulable = Sí SOLO para una de las columnas) \\
El tipo de operación|
|GET|/gastos-invencion|q+s (query + sort) \\
La query estará formada por: \\
* invencionId \\
* tipoOperacion \\
 \\
El tipo de operación puede tomar los siguientes valores: \\
* GAS (Ejecución económica - Gastos) \\
* REP (Ejecución económica - Repartos - Gastos a deducir)|Lista\[DatoEconomico\] \\  |Listado de todos los gastos asociados a una invención. \\
Para cada gasto se devolverán los siguientes datos: \\
* Identificador del gasto \\
* Mapa de columnas de clave - valor (donde la clave será los id definidos en la llamada /gastos-invencion/columnas y el valor será el valor de la columna. El valor será un String salvo en aquellas columnas que sean acumulables, esto es, se puedan manejar como un importe y hacer operaciones numéricas con ella en el SGI, donde será de tipo Numérico ({+}sin separador de miles y como separador decimal el punto{+}). \\
 \\
Si el tipo de operación se informa con el valor GAS, se han de devolver todos los gastos asociados a la invención. \\
Si por el contrario el tipo de operación es REP, se han de devolver del conjunto de gastos asociados a la invención únicamente aquellos que se deban tener en cuenta para el reparto de regalías. En el caso de UM, estos corresponderían con los gastos que haya pagado la OTRI, sea desde sus partidas propias o desde cualquier otra partida o proyecto.|
|GET|/gastos-invencion/\{id\}| |DatoEconomicoDetalle \\
 \\  |Detalle de un gasto. \\
Para cada gasto se devolverán los siguientes datos: \\
* Identificador del gasto \\
* Listado de documentos (identificador, nombre del documento y nombre del fichero, sin el contenido)|
|Ingresos| | | | |
|GET|/ingresos-invencion/columnas|q+s (query + sort) \\
La query estará formada por: \\
* proyectoId|Lista\[Columna\] \\
 \\  |Listado con las columnas que va a devolver la llamada /ingresos-invencion. \\
El identificador de proyecto a enviar al SGE ha de ser el del proyecto económico en Justo. \\
Por cada columna se indica un id, nombre, si es una columna acumulable (se puede manejar como un importe y hacer operaciones numéricas con ella en el SGI). \\
Por defecto, devolverá las siguientes columnas: \\
* Fecha \\
* Referencia \\
* Importe (acumulable = Sí) \\
* Nº interno de contrato \\
* Entidad pagadora|
|GET|/ingresos-invencion|q+s (query + sort) \\
La query estará formada por: \\
* proyectoId|Lista\[DatoEconomico\] \\  |Listado de todos los ingresos asociados a una invención. La asociación en el SGI se realizará a través de contratos de CSP (proyectos) y el identificador de proyecto a enviar al SGE ha de ser el del proyecto económico en Justo. \\
Los ingresos devueltos se corresponderán con las facturas emitidas asociadas a la invención a través del contrato. \\
Para cada ingreso se devolverán los siguientes datos: \\
* Identificador del ingreso \\
* Mapa de columnas de clave - valor (donde la clave será los id definidos en la llamada /ingresos-pii/columnas y el valor será el valor de la columna. El valor será un String salvo en aquellas columnas que sean acumulables, esto es, se puedan manejar como un importe y hacer operaciones numéricas con ella en el SGI, donde será de tipo Numérico ({+}sin separador de miles y como separador decimal el punto{+}).|
h3.Columnas Gastos
|*id*|*nombre*|*acumulable*|*descripción*|
|1|Fecha|false|Fecha de emisión|
|2|Referencia|false|Nº / año factura|
|3|Concepto|false|Descripción de factura|
|4|Tipo|false|Tipo de gasto|
|5|Importe|true|Base imponible|
h3.Columnas Ingresos
|*id*|*nombre*|*acumulable*|*descripción*|
|1|Fecha|false|Fecha de emisión|
|2|Referencia|false|Serie-Nº factura / año factura|
|3|Importe|true|Base imponible|
|3|Nº interno de contrato|false|Identificador del contrato del SGI asociado al ingreso|
|4|Entidad pagadora|false|Nombre del tercero pagador de la factura emitida|
h3.Ejemplos
h4.Columnas de gastos (/gastos-invencion/columnas)
*Respuesta*
\[
 \{
   "id": "1"
   "nombre":"Fecha"
   "acumulable": "false"
  \},
  \{
   "id":"2",
   "nombre":"Referencia",
   "acumulable": "false"
  \},
  \{
   "id":"3",
   "nombre":"Concepto",
   "acumulable": "false"
  \},
  \{
   "id":"4",
   "nombre":"Tipo",
   "acumulable": "false"
  \},
  \{
   "id":"5",
   "nombre":"Importe",
   "acumulable": "true"
  \}
\\
\]
h4.Gastos (/gastos-invencion)
*Respuesta*
\[
\{
 "id":"1",
 "tipo":"Gasto",
 "columnas": \{
      "1":,
      "2":"F123456",
      "3":"Informe de patentabilidad",
      "4":"Honorarios",
      "5":55.99
      \}
 \\
\},
\{
 "id":"2",
 "tipo":"Gasto",
 "columnas": \{
      "1":,
      "2":"F123457",
      "3":"Solicitud de patente",
      "4":"Tasa",
      "5":99.99
      \}
\}
\]
\\
h4.Detalle gasto (/gastos-invencion/\{id\})
*Respuesta*
"id":"2",
"documentos":\[
  \{
   "id": "11",  
   "nombre":"Factura",
   "nombreFichero":"factura.pdf"
  \},
  \{
    "id": "12", 
    "nombre":"Otro documento",
    "nombreFichero":"otroDocumento.pdf"
  \}
\]
\\
h3.Seguridad
Actualmente las peticiones realizadas al esb se harán enviando un token de acceso en la cabecera de *authentication{*}, aunque se seguirá trabando en la seguridad para realizar una comunicación máquina a máquina y no mediante usuario/contraseña sino a través de un secret.
h4.Seguridad con usuario/contraseña
Se utiliza OAuth 2 sobre el protocolo OpenID Connect (OIDC).
En [{color:#0000ee}{+}http://sgi.ic.corp.treelogic.com/auth/realms/sgi/.well-known/openid-configuration+{color}|http://sgi.ic.corp.treelogic.com/auth/realms/sgi/.well-known/openid-configuration] se pueden consultar los endpoint disponibles de OIDC.
Mediante *POST* a [{color:#0000ee}{+}http://sgi.ic.corp.treelogic.com/auth/realms/sgi/protocol/openid-connect/token+{color}|http://sgi.ic.corp.treelogic.com/auth/realms/sgi/protocol/openid-connect/token] se obtiene el token de acceso y el de refresco. Por defecto el token de acceso solo es válido 5 minutos, y el de refresco 30 minutos. Este mismo enpdoint permite refrescar los tokens. El content-type de la petición ha de ser {*}application/x-www-form-urlencoded{*} 
Para la obtención de los tokens se incluirán los siguientes campos:
|*Campo*|*Valor*|*Descripción*|
|client_id|front|Identifica al cliente, por ahora el mismo que la web pero cambiará más adelante|
|username|visor-csp|Usuario de la autenticación, en el futuro ya no será necesario|
|password|visor-csp|Password del usuario, en el futuro ya no será necesario.|
|grant_type|password|Tipo de autenticación, más adelante cambiará.|
Para el refresco de los tokens se incluirán los siguientes campos:
|*Campo*|*Valor*|*Descripción*|
|client_id|front|Identifica al cliente, por ahora el mismo que la web pero cambiará más adelante|
|grant_type|refresh_token|Tipo de autenticación.|
|refresh_token| |Se enviará el token de refresco que se disponga en ese momento.|