From 9a31c383892b50ea6e446fba1a7f6d8aca599da6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladimir=20T=C3=A1mara=20Pati=C3=B1o?= Date: Fri, 10 Jan 2025 16:50:47 -0500 Subject: [PATCH] Desembolsos pasa de query+cocoon a turbo. Closes https://gitlab.com/pasosdeJesus/si_jrscol/-/issues/1110 --- ...sembolsos_proyectofinanciero_controller.rb | 12 +++++ app/models/cor1440_gen/ability.rb | 15 ++++-- .../create.turbo_stream.erb | 22 +++++++++ .../destroy.html.erb | 9 ++++ .../_desembolso_campos.html.erb | 42 +++++++++-------- .../_recursoseconomicos.html.erb | 46 +++++++++---------- config/routes.rb | 11 ++++- ...sembolsos_proyectofinanciero_controller.rb | 30 ++++++++++++ .../actividades_controller_test.rb | 1 - 9 files changed, 141 insertions(+), 47 deletions(-) create mode 100644 app/controllers/cor1440_gen/desembolsos_proyectofinanciero_controller.rb create mode 100644 app/views/cor1440_gen/desembolsos_proyectofinanciero/create.turbo_stream.erb create mode 100644 app/views/cor1440_gen/desembolsos_proyectofinanciero/destroy.html.erb mode change 100644 => 100755 config/routes.rb create mode 100644 lib/cor1440_gen/concerns/controllers/desembolsos_proyectofinanciero_controller.rb diff --git a/app/controllers/cor1440_gen/desembolsos_proyectofinanciero_controller.rb b/app/controllers/cor1440_gen/desembolsos_proyectofinanciero_controller.rb new file mode 100644 index 00000000..5827276d --- /dev/null +++ b/app/controllers/cor1440_gen/desembolsos_proyectofinanciero_controller.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +require "cor1440_gen/concerns/controllers/desembolsos_proyectofinanciero_controller" + +module Cor1440Gen + class DesembolsosProyectofinancieroController < ApplicationController + load_and_authorize_resource class: Desembolso + before_action :prepara_desembolso_proyectofinanciero + + include Cor1440Gen::Concerns::Controllers::DesembolsosProyectofinancieroController + end +end diff --git a/app/models/cor1440_gen/ability.rb b/app/models/cor1440_gen/ability.rb index 168e0286..6d83dffe 100644 --- a/app/models/cor1440_gen/ability.rb +++ b/app/models/cor1440_gen/ability.rb @@ -220,9 +220,12 @@ def self.initialize_cor1440_gen(habilidad, usuario = nil) case usuario.rol when ROLOPERADOR - habilidad.can(:manage, Cor1440Gen::Actividadpf) - habilidad.can :manage, Cor1440Gen::Asistencia - habilidad.can(:manage, Cor1440Gen::ProyectofinancieroUsuario) + habilidad.can(:manage, [ + Cor1440Gen::Actividadpf, + Cor1440Gen::Asistencia, + Cor1440Gen::DesembolosProyectofinanciero, + Cor1440Gen::ProyectofinancieroUsuario + ]) presponsable = Cor1440Gen::Proyectofinanciero.where( responsable_id: usuario.id, ).map(&:id) @@ -259,7 +262,10 @@ def self.initialize_cor1440_gen(habilidad, usuario = nil) id: penequipo, ) - habilidad.can(:read, Cor1440Gen::ProyectofinancieroUsuario) + habilidad.can(:read, [ + Cor1440Gen::Desembolso, + Cor1440Gen::ProyectofinancieroUsuario, + ]) habilidad.can( :manage, Cor1440Gen::Actividad, @@ -296,6 +302,7 @@ def self.initialize_cor1440_gen(habilidad, usuario = nil) Cor1440Gen::Actividad, Cor1440Gen::Asistencia, Cor1440Gen::Actividadpf, + Cor1440Gen::Desembolso, Cor1440Gen::Efecto, Cor1440Gen::Financiador, Cor1440Gen::FormularioTipoindicador, diff --git a/app/views/cor1440_gen/desembolsos_proyectofinanciero/create.turbo_stream.erb b/app/views/cor1440_gen/desembolsos_proyectofinanciero/create.turbo_stream.erb new file mode 100644 index 00000000..387ad142 --- /dev/null +++ b/app/views/cor1440_gen/desembolsos_proyectofinanciero/create.turbo_stream.erb @@ -0,0 +1,22 @@ +<%= simple_form_for @proyectofinanciero do |f| %> + <%= f.simple_fields_for :desembolso, + child_index: params[:index] do |subf| %> + <%= turbo_stream.replace "agregar-desembolso-proyectofinanciero" do %> + <%= f.submit "Agregar Desembolso", + class: "btn btn-sm btn-primary", + data: { + disable_with: false + }, + formaction: cor1440_gen.crear_desembolso_proyectofinanciero_path( + subf.index.to_i + 1 + ), + formmethod: :post, + formnovalidate: true, + id: "agregar-desembolso-proyectofinanciero", + name: "agregar-desembolso-proyectofinanciero" %> + <% end %> + <%= turbo_stream.append "desembolsos_proyectofinanciero_marco" do %> + <%= render "/cor1440_gen/proyectosfinancieros/desembolso_campos", f: subf %> + <% end %> +<% end %> +<% end %> diff --git a/app/views/cor1440_gen/desembolsos_proyectofinanciero/destroy.html.erb b/app/views/cor1440_gen/desembolsos_proyectofinanciero/destroy.html.erb new file mode 100644 index 00000000..6d10b615 --- /dev/null +++ b/app/views/cor1440_gen/desembolsos_proyectofinanciero/destroy.html.erb @@ -0,0 +1,9 @@ +<%= fields model: @proyectofinanciero do |f| %> + <%= f.simple_fields_for :desembolso, + child_index: params[:index] do |subf| %> + <%= turbo_frame_tag "desembolso_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/proyectosfinancieros/_desembolso_campos.html.erb b/app/views/cor1440_gen/proyectosfinancieros/_desembolso_campos.html.erb index 96f338ad..75c83745 100644 --- a/app/views/cor1440_gen/proyectosfinancieros/_desembolso_campos.html.erb +++ b/app/views/cor1440_gen/proyectosfinancieros/_desembolso_campos.html.erb @@ -1,21 +1,27 @@ - - - <%= f.input :detalle, label: false, as: :text, input_html: { rows: 2 } %> - - +<%= turbo_frame_tag "desembolso_proyectofinanciero_#{f.index}", class: 'div-tabla-fila nested-fields' do %> +
+ <%= f.input :detalle, label: false, as: :text, input_html: { rows: 2 } %> +
+
<%= f.input :fecha, label: false, input_html: { type: "date" }, - as: :string - %> - - + as: :string %> +
+
<%= f.input :valorpesos_localizado, label: false %> - - - <%= f.input :id, as: :hidden %> - <%= link_to_remove_association "Eliminar", f, - class: 'btn btn-sm btn-danger' - %> -
<%= f.error_notification %>
- - +
+
+ <%= f.input :id, as: :hidden %> + <%= f.submit "Eliminar", + class: 'btn btn-sm btn-danger', + data: { + turbo_frame: "desembolso_proyectofinanciero_#{f.index}", + disable_with: false + }, + formaction: eliminar_desembolso_proyectofinanciero_path( + id: f.object.id, index: f.index + ), + formmethod: :delete, + formnovalidate: true %> +
+<% end %> diff --git a/app/views/cor1440_gen/proyectosfinancieros/_recursoseconomicos.html.erb b/app/views/cor1440_gen/proyectosfinancieros/_recursoseconomicos.html.erb index 7a42f302..002f4e46 100644 --- a/app/views/cor1440_gen/proyectosfinancieros/_recursoseconomicos.html.erb +++ b/app/views/cor1440_gen/proyectosfinancieros/_recursoseconomicos.html.erb @@ -144,29 +144,29 @@ - - - - - - - - - - - +
+
+
+
<%= t('Detalle') %>
+
<%= t('Fecha') %>
+
<%= t('Valor en pesos') %>
+
<%= f.simple_fields_for :desembolso do |d| %> - <%= render 'desembolso_campos', :f => d %> + <%= render partial: 'desembolso_campos', locals: {f: d} %> <% end %> -
-
<%= t('Detalle') %><%= t('Fecha') %><%= t('Valor en pesos') %>
- - +
+ <%= f.submit "Agregar Desembolso", + class: 'btn btn-sm btn-primary', + data: { + disable_with: false + }, + formaction: cor1440_gen.crear_desembolso_proyectofinanciero_path( + index: @registro.desembolso.size + ), + formmethod: :post, + formnovalidate: true, + id: "agregar-desembolso-proyectofinanciero", + name: "agregar-desembolso-proyectofinanciero" %> +
diff --git a/config/routes.rb b/config/routes.rb old mode 100644 new mode 100755 index 867e04ad..3b2ef1ed --- a/config/routes.rb +++ b/config/routes.rb @@ -103,12 +103,21 @@ resources :objetivopf_proyectofinanciero, only: [], param: :index do member do - delete '(:id)', to: "objetivospf_proyectofinanciero#destroy", + delete '(:id)', to: "objetivospf_proyectofinanciero#destroy", as: "eliminar" post '/' => "objetivospf_proyectofinanciero#create", as: "crear" end end + resources :desembolso_proyectofinanciero, only: [], param: :index do + member do + delete '(:id)', to: "desembolsos_proyectofinanciero#destroy", + as: "eliminar" + post '/' => "desembolsos_proyectofinanciero#create", as: "crear" + end + end + + resources :proyectofinanciero_usuario, only: [], param: :index do member do delete '(:id)', to: "proyectofinanciero_usuarios#destroy", diff --git a/lib/cor1440_gen/concerns/controllers/desembolsos_proyectofinanciero_controller.rb b/lib/cor1440_gen/concerns/controllers/desembolsos_proyectofinanciero_controller.rb new file mode 100644 index 00000000..a96eea8c --- /dev/null +++ b/lib/cor1440_gen/concerns/controllers/desembolsos_proyectofinanciero_controller.rb @@ -0,0 +1,30 @@ +module Cor1440Gen + module Concerns + module Controllers + module DesembolsosProyectofinancieroController + extend ActiveSupport::Concern + + included do + def destroy + end + + def create + end + + private + + def prepara_desembolso_proyectofinanciero + @proyectofinanciero = Cor1440Gen::Proyectofinanciero.new( + desembolso: [ + Cor1440Gen::Desembolso.new + ] + ) + end + + end # included + + end + end + end +end + diff --git a/test/controllers/cor1440_gen/actividades_controller_test.rb b/test/controllers/cor1440_gen/actividades_controller_test.rb index e6886af9..a0be043b 100644 --- a/test/controllers/cor1440_gen/actividades_controller_test.rb +++ b/test/controllers/cor1440_gen/actividades_controller_test.rb @@ -149,7 +149,6 @@ class ActividadesControllerTest < ActionDispatch::IntegrationTest get edit_actividad_url(@actividad) assert_response :success - np = Msip::Persona.count post cor1440_gen.crear_asistencia_path(0, format: :turbo_stream) assert_response :success #assert_equal (np+1), Msip::Persona.count