Correccion - Mejora #4835
cerrada[Acuerdos] Permitir enlazar documentos subidos en estados anteriores
0%
Descripción
Especificación¶
En la subida de documentos, permitir "enlazar" documentos ya existentes en el acuerdo.
NOTA: algo similar está ya hecho en contratos.
Url ejemplo Acuerdos:
http://127.0.0.1:3000/agentes/7/configuracion_agente/acuerdo/listado
Url ejemplo Contratos:
http://127.0.0.1:3000/agentes/7/economico_agente/contrato/listado
Texto botón para enlazar documentos de estados anteriores:
"Vincular a un documento ya existente en el acuerdo actual"
Añadir soporte para modelo Acuerdo como en Contrato en la vista:
gor/app/views/documento/_formulario_asociar_o_nuevo.html.erb
Listado de documentos con opción de añadir nuevo o vínculo en:
gor/app/views/documento/listado.html.erb
gor/app/views/documento/_listado_asociados.html.erb
Enlace a documentos de un contrato:
<%= remote icono('documentos' + (@contrato.documento.empty? ? '' : '_r'), _('Ver documentos')), url: {update: update + '_sub', controller: :documento, action: :listado_asociados, objeto_id: @contrato.id, tipo: 'Contrato'}, html: {id: update + '_documentos'} %>
Enlace ACTUAL a documentos de un acuerdo:
<%= remote(icono('documentos', _('Listado de documentos asociados')),url: {action: 'documentos',id: @acuerdo, update: update + '_sub'} ) %>
Implementación¶
https://git.semillasl.com/gong/gor/-/merge_requests/24
Implantación¶
Script para la generación de permisos sobre el nuevo controlador 'documento_acuerdo' del menú 'documentos_proyecto':
# Script con after_commit :flush_cache (lento, utilizar Redis para que no se quede colgado)
# Versión 1
PermisoXRol.where(menu: 'documentos_proyecto', controlador: 'documento_busqueda').each do |pxr|
pxr2 = PermisoXRol.find_or_initialize_by(rol_id: pxr.rol_id, menu: pxr.menu, controlador: 'documento_acuerdo')
pxr2.ver = pxr.ver
pxr2.cambiar = pxr.cambiar
pxr2.save
end
# Versión 2
PermisoXRol.where(menu: 'documentos_proyecto', controlador: 'documento_busqueda').each do |pxr|
pxr2 = PermisoXRol.find_by(rol_id: pxr.rol_id, menu: pxr.menu, controlador: 'documento_acuerdo')
if pxr2
pxr2.update_attributes ver: pxr.ver, cambiar: pxr.cambiar
else
PermisoXRol.create rol_id: pxr.rol_id, menu: pxr.menu, controlador: 'documento_acuerdo', ver: pxr.ver, cambiar: pxr.cambiar
end
end
# Version 3 - Script ejecutando gema activerecord-import (no está actualmente en Gemfile)
permisos_nuevos = PermisoXRol.where(menu: 'documentos_proyecto', controlador: 'documento_busqueda').map do |pxr|
PermisoXRol.new(rol_id: pxr.rol_id, menu: pxr.menu, controlador: 'documento_acuerdo', ver: pxr.ver, cambiar: pxr.cambiar)
end
PermisoXRol.import(permisos_nuevos)