Proyecto

General

Perfil

Correccion - Mejora #5033

Actualizado por Oscar Abad hace alrededor de 1 año

h1. Especificación 

 Incluir tareas para la notificación a los usuarios involucrados de aquellos acuerdos que siguen abiertos pasada la fecha de finalización. 

 Según conversación con Sito, se trata de una notificación que el departamento de Jurídico ha demandado. Para no generar demasiados correos con acuerdos viejos, las notificaciones deberían generarse diariamente, mandando un correo si es un mes antes, una semana antes o el mismo día en que finaliza la vigencia del proyecto (acuerdo_datos.fecha_fin). 

 Parece que la cantidad de correos a enviar es enorme. En lugar de enviar los acuerdos abiertos expirados, para limitar el número de correos enviaremos diariamente los acuerdos que expiren en el dia de hoy, dentro de una semana y dentro de un mes. 

 h1. Pruebas 

 Ya implementado en gor/lib/tareas.rb 
 <pre> 
   # Notificacion de acuerdos abiertos con fecha de finalizacion superada 
   def self.notifica_acuerdos_abiertos 
     Rails.logger.info "*** Notifica acuerdos abiertos (#{I18n.l(Time.now)})" 
     acuerdos = Acuerdo.expirados_y_abiertos 
     num_acuerdos = acuerdos.count 
     if num_acuerdos > 0 
       Rails.logger.info "*** Hay #{num_acuerdos} acuerdos abiertos que han finalizado" 
       acuerdos.each do |acuerdo| 
         fecha_finalizacion = acuerdo.ultimos_datos.fecha_fin 
         acuerdo.usuarios_notificacion.each do |destinatario| 
           Rails.logger.info "[Tareas.notifica_acuerdos_abiertos] Enviando notificación de acuerdo expirado (#{acuerdo.id}) a '#{destinatario.correoe}'" 
           begin 
             AcuerdosMailer.acuerdo_expirado_abierto(destinatario, acuerdo).deliver_later 
           rescue => e 
             Rails.logger.error "[Tareas.notifica_acuerdos_abiertos] No se ha podido mandar el mail a '#{destinatario.correoe}': #{e.inspect}" 
           end 
         end 
       end 
     end 
   end 
 </pre> 

 Ejecutándose cada semana en plugins/oei_erp/lib/clock.rb 
 <pre> 
   # Envia notificaciones de acuerdos abiertos todos los domingos a las 10.45h 
   every(1.week, 'Convenios abiertos', at: 'Sunday 10:45') do |job| 
     Tareas.notifica_acuerdos_abiertos  
   end 
 </pre> 

 Según los datos de la BD anonimizada de producción: 
 <pre> 
 *** Notifica acuerdos abiertos (03/10/2023) 
 *** Hay 635 acuerdos abiertos que han finalizado 
 ... 
 [Tareas.notifica_acuerdos_abiertos] Enviando notificación 2688 de acuerdo expirado (3257) 
 </pre> 

 Hay un error en la implementación (seguramente de un copia y pega), teniéndose que eliminar la línea: 
 <pre> 
 def acuerdo_expirado_abierto(usuario, acuerdo) 
   ... 
   @usuario_identificado = usuario_identificado 
 </pre> 

 h1. Implementación 


 h1. Demo 

 Ejemplo correo Parece que la cantidad de acuerdo abierto que finaliza hoy: correos a enviar es enorme. Acciones preventivas: 
 !Correo_acuerdo_abierto_expira_hoy.png! 1.- Sólo enviar correos a los usuarios directamentre relacionados con los acuerdos. 
 Ejemplo correo de acuerdo abierto que finaliza dentro de 2.- Se podría añadir una semana: 
 !Correo_acuerdo_abierto_expira_1_semana.png! 
 Ejemplo correo variable de acuerdo abierto que finaliza dentro de un mes: 
 !Correo_acuerdo_abierto_expira_1_mes.png! configuración para enviar los correos o no.

Atrás