diff --git a/app/controllers/cor1440_gen/actividad_proyectosfinancieros_controller.rb b/app/controllers/cor1440_gen/actividad_proyectosfinancieros_controller.rb new file mode 100644 index 00000000..66c006e9 --- /dev/null +++ b/app/controllers/cor1440_gen/actividad_proyectosfinancieros_controller.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +require "cor1440_gen/concerns/controllers/actividad_proyectosfinancieros_controller" + +module Cor1440Gen + class ActividadProyectosfinancierosController < ApplicationController + load_and_authorize_resource class: ActividadProyectofinanciero + + include Cor1440Gen::Concerns::Controllers::ActividadProyectosfinancierosController + end +end diff --git a/app/models/cor1440_gen/ability.rb b/app/models/cor1440_gen/ability.rb index 3e2bda3d..c0a8dc41 100644 --- a/app/models/cor1440_gen/ability.rb +++ b/app/models/cor1440_gen/ability.rb @@ -202,6 +202,7 @@ def self.initialize_cor1440_gen(habilidad, usuario = nil) end habilidad.can([:nuevo, :new], Cor1440Gen::Actividad) + habilidad.can(:manage, Cor1440Gen::ActividadProyectofinanciero) habilidad.can([:nuevo, :new], Cor1440Gen::Actividadpf) habilidad.can(:read, Cor1440Gen::Rangoedadac) @@ -222,6 +223,7 @@ def self.initialize_cor1440_gen(habilidad, usuario = nil) habilidad.can(:manage, [ Cor1440Gen::Actividadpf, + Cor1440Gen::ActividadpfProoyectofinanciero, Cor1440Gen::AnexoProyectofinanciero, Cor1440Gen::Asistencia, Cor1440Gen::Desembolso, @@ -283,7 +285,10 @@ def self.initialize_cor1440_gen(habilidad, usuario = nil) Cor1440Gen::Actividad, actividad_proyectofinanciero: { proyectofinanciero_id: penequipo }, ) - habilidad.can :manage, Cor1440Gen::Asistencia + habilidad.can :manage, [ + Cor1440Gen::ActividadProyectofinanciero, + Cor1440Gen::Asistencia, + ] # Responsable de un proyecto puede eliminar y editar actividades # del mismo @@ -292,6 +297,7 @@ def self.initialize_cor1440_gen(habilidad, usuario = nil) Cor1440Gen::Actividad, actividad_proyectofinanciero: { proyectofinanciero_id: presponsable }, ) + habilidad.can(:manage, Cor1440Gen::ActividadProyectofinanciero) habilidad.can(:read, Cor1440Gen::Efecto) habilidad.can(:read, Cor1440Gen::FormularioTipoindicador) @@ -307,6 +313,7 @@ def self.initialize_cor1440_gen(habilidad, usuario = nil) habilidad.can(:manage, [ Cor1440Gen::Pmindicadorpf, Cor1440Gen::Actividad, + Cor1440Gen::ActividadProyectofinanciero, Cor1440Gen::AnexoProyectofinanciero, Cor1440Gen::Asistencia, Cor1440Gen::Actividadpf, diff --git a/app/views/cor1440_gen/actividad_proyectosfinancieros/create.turbo_stream.erb b/app/views/cor1440_gen/actividad_proyectosfinancieros/create.turbo_stream.erb new file mode 100644 index 00000000..5e803b46 --- /dev/null +++ b/app/views/cor1440_gen/actividad_proyectosfinancieros/create.turbo_stream.erb @@ -0,0 +1,25 @@ +<%= simple_form_for @actividad do |f| %> + <%= f.simple_fields_for :actividad_proyectofinanciero, + child_index: params[:index] do |subf| %> + <%= turbo_stream.replace "agregar-actividad-proyectofinanciero" do %> + <%= f.submit "#{t('Agregar')} " + + "#{@actividad.class.human_attribute_name(:proyectofinanciero)}", + class: 'btn btn-sm btn-primary', + data: { + disable_with: false + }, + formaction: cor1440_gen.crear_actividad_proyectofinanciero_path( + index: subf.index.to_i + 1 + ), + formmethod: :post, + formnovalidate: true, + id: "agregar-actividad-proyectofinanciero" + %> + <% end %> + + <%= turbo_stream.append "actividad_proyectosfinancieros_marco" do %> + <%= render "/cor1440_gen/actividades/actividad_proyectofinanciero_campos", + f: subf, ac: f %> + <% end %> + <% end %> +<% end %> diff --git a/app/views/cor1440_gen/actividad_proyectosfinancieros/destroy.html.erb b/app/views/cor1440_gen/actividad_proyectosfinancieros/destroy.html.erb new file mode 100644 index 00000000..162d00c7 --- /dev/null +++ b/app/views/cor1440_gen/actividad_proyectosfinancieros/destroy.html.erb @@ -0,0 +1,9 @@ +<%= fields model: @actividad do |f| %> + <%= f.simple_fields_for :actividad_proyectofinanciero, + child_index: params[:index] do |subf| %> + <%= turbo_frame_tag "actividad_proyectofinanciero_#{subf.index}" do %> + <%= subf.hidden_field :id, value: params[:id] %> + <%= subf.hidden_field :_destroy, value: true %> + <% end %> + <% end %> +<% end %> diff --git a/app/views/cor1440_gen/actividades/_actividad_proyectofinanciero_campos.html.erb b/app/views/cor1440_gen/actividades/_actividad_proyectofinanciero_campos.html.erb index fadd6404..7c6949d7 100644 --- a/app/views/cor1440_gen/actividades/_actividad_proyectofinanciero_campos.html.erb +++ b/app/views/cor1440_gen/actividades/_actividad_proyectofinanciero_campos.html.erb @@ -1,19 +1,29 @@ - - <% if ac.object.fecha %> - <% fr = ac.object.fecha %> +<%= turbo_frame_tag "actividad_proyectofinanciero_#{f.index}", + class: 'div-tabla-fila nested-fields' do %> + <% if f.object.proyectofinanciero.nil? %> + <% f.object.proyectofinanciero = Cor1440Gen::Proyectofinanciero.new %> + <% end %> + <% if params && params[:actividad] && params[:actividad][:fecha] %> + <% fr = params[:actividad][:fecha] %> <% else %> <% fr = Time.now.strftime('%Y-%m-%d') %> <% end %> <% lp1 = Cor1440Gen::ProyectosfinancierosController::disponibles( {fecha: fr}, current_ability) %> <% ids1 = lp1.pluck(:id) %> - <% ids2 = ac.object.proyectofinanciero.pluck(:id) %> + <% ids2 = [] %> + <% if params && params[:actividad] %> + <% params[:actividad][:actividad_proyectofinanciero_attributes].each do |l, v| %> + <% ids2 << v[:id] %> + <% end %> + <% else %> + <% ids2 = ac.object.proyectofinanciero.pluck(:id) %> + <% end %> <% # Si es uno nuevo excluimos los ya elegidos %> <% ids = ids1 | ids2 %> <% col = Cor1440Gen::Proyectofinanciero.where(id: ids). reorder('lower(nombre)') %> - - <% # Inexcplicable que no opere coccoon:after-insert si se agrega: f.input :actividad_id, as: :hidden %> +
<%= f.input :id, as: :hidden %> <% vdis = false %> <% if f.object.proyectofinanciero_id %> @@ -21,32 +31,38 @@ <% end %> <%= f.input :proyectofinanciero_id, collection: col, - label: false, - label_method: :nombre, disabled: vdis, - value_method: :id, - selected: f.object.proyectofinanciero_id, input_html: { - title: t("Los proyectos presentados son los vigentes en la fecha "\ - "de la actividad (cambie la fecha para actualizar estas opciones)"), + title: t( + "Los proyectos presentados son los vigentes en la fecha "\ + "de la actividad (cambie la fecha para actualizar estas opciones)" + ), class: 'tom-select' - } - %> - - - <%= render partial: 'campo_actividad_proyectofinanciero_actividadpf', + }, + label: false, + label_method: :nombre, + selected: f.object.proyectofinanciero_id, + value_method: :id %> +
+
+ <%= render partial: '/cor1440_gen/actividades/campo_actividad_proyectofinanciero_actividadpf', locals: {f: f} %> - - <% if Cor1440Gen::Proyectofinanciero::en_toda_actividad_id && - f.object.proyectofinanciero_id == - Cor1440Gen::Proyectofinanciero::en_toda_actividad_id %> - <% elestilo = "display: none" %> - <% else%> - <% elestilo = "display: block" %> - <% end%> - - <%= link_to_remove_association t("Eliminar"), f, - :class => 'btn btn-sm btn-danger' - %> - - +
+
+ <% if !Cor1440Gen::Proyectofinanciero::en_toda_actividad_id || + f.object.proyectofinanciero_id != + Cor1440Gen::Proyectofinanciero::en_toda_actividad_id %> + <%= f.submit "Eliminar", + class: 'btn btn-sm btn-danger', + data: { + turbo_frame: "actividad_proyectofinanciero_#{f.index}", + disable_with: false + }, + formaction: cor1440_gen.eliminar_actividad_proyectofinanciero_path( + id: f.object.id, index: f.index + ), + formmethod: :delete, + formnovalidate: true %> + <% end%> +
+<% end %> diff --git a/app/views/cor1440_gen/actividades/_campo_proyectofinanciero.html.erb b/app/views/cor1440_gen/actividades/_campo_proyectofinanciero.html.erb index 2e76c819..970825bb 100644 --- a/app/views/cor1440_gen/actividades/_campo_proyectofinanciero.html.erb +++ b/app/views/cor1440_gen/actividades/_campo_proyectofinanciero.html.erb @@ -1,35 +1,37 @@ -
- - - - - - - - - <%= f.simple_fields_for( - :actividad_proyectofinanciero, - f.object.actividad_proyectofinanciero.order(:id)) do |ap| %> - <%= render partial: 'actividad_proyectofinanciero_campos', - locals: {f: ap, ac: f} %> - <% end %> - <%= render partial: 'complemento_filas_proyectofinanciero', - locals: {f: f} %> - -
- <%= @actividad.class.human_attribute_name(:proyectofinanciero) %> - +<%= f.input :id, type: :hidden %> +
+
+
+
+ <%= @actividad.class.human_attribute_name(:proyectofinanciero) %> +
+
<%= @actividad.class.human_attribute_name(:actividadespf) %> -
-
- <%= link_to_add_association( - "#{t('Añadir')} #{@actividad.class.human_attribute_name(:proyectofinanciero)}", - f, :actividad_proyectofinanciero, - render_options: {locals: { ac: f }}, - "data-association-insertion-node": "tbody#actividad_proyectofinanciero", - "data-association-insertion-method": "append", - partial: "actividad_proyectofinanciero_campos", - class: "btn btn-sm btn-primary" - ) %> +
+
+ <%= f.simple_fields_for( + :actividad_proyectofinanciero, + f.object.actividad_proyectofinanciero.order(:id)) do |ap| %> + <%= render partial: + '/cor1440_gen/actividades/actividad_proyectofinanciero_campos', + locals: {f: ap, ac: f} %> + <% end %> + <%= render partial: '/cor1440_gen/actividades/complemento_filas_proyectofinanciero', + locals: {f: f} %> +
+ <%= f.submit "#{t('Agregar')} " + + "#{@actividad.class.human_attribute_name(:proyectofinanciero)}", + class: 'btn btn-sm btn-primary', + data: { + disable_with: false + }, + formaction: cor1440_gen.crear_actividad_proyectofinanciero_path( + index: @actividad.actividad_proyectofinanciero.size + ), + formmethod: :post, + formnovalidate: true, + id: "agregar-actividad-proyectofinanciero" + %> +
diff --git a/config/locales/es.yml b/config/locales/es.yml index 5afb86b8..c7c318c6 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -5,6 +5,7 @@ es: "Actividad del marco lógico": Actividad del marco lógico "Actividades de marco lógico": Actividades de marco lógico "Actividades del marco lógico": Actividades del marco lógico + Agregar: Agregar Añadir: Añadir "Añadir actividad": Añadir actividad "Añadir anexo": Añadir anexo diff --git a/config/routes.rb b/config/routes.rb index cf84560f..c3955336 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -85,6 +85,14 @@ end end + resources :actividad_proyectofinanciero, only: [], param: :index do + member do + delete '(:id)', to: "actividad_proyectosfinancieros#destroy", + as: "eliminar" + post '/' => "actividad_proyectosfinancieros#create", as: "crear" + end + end + resources :anexo_proyectofinanciero, only: [], param: :index do member do delete '(:id)', to: "anexos_proyectofinanciero#destroy", diff --git a/lib/cor1440_gen/concerns/controllers/actividad_proyectosfinancieros_controller.rb b/lib/cor1440_gen/concerns/controllers/actividad_proyectosfinancieros_controller.rb new file mode 100644 index 00000000..4ff8baed --- /dev/null +++ b/lib/cor1440_gen/concerns/controllers/actividad_proyectosfinancieros_controller.rb @@ -0,0 +1,35 @@ +module Cor1440Gen + module Concerns + module Controllers + module ActividadProyectosfinancierosController + extend ActiveSupport::Concern + + included do + before_action :prepara_actividad + + def destroy + end + + def create + end + + private + + def prepara_actividad + @actividad = Cor1440Gen::Actividad.where( + id: params[:actividad][:id].to_i + ).take + if @actividad.actividad_proyectofinanciero.length == 0 + @actividad.actividad_proyectofinanciero = [ + Cor1440Gen::ActividadProyectofinanciero.new + ] + end + end + + end # included + + end + end + end +end + diff --git a/lib/cor1440_gen/concerns/controllers/actividades_controller.rb b/lib/cor1440_gen/concerns/controllers/actividades_controller.rb index 28737d6e..1b028d69 100644 --- a/lib/cor1440_gen/concerns/controllers/actividades_controller.rb +++ b/lib/cor1440_gen/concerns/controllers/actividades_controller.rb @@ -34,7 +34,8 @@ def atributos_index end def atributos_form - a = atributos_show - [:id, :actividadpf, :poblacion] + a = atributos_show - [:id, :actividadpf, :poblacion] - + [:anexos] a.map do |e| e == :fecha_localizada ? :fecha : e end