Proyecto

General

Perfil

Errores #5449

Actualizado por Oscar Abad hace 6 meses

h1. Especificación 

 Actualmente, a la hora de generar una marca automática, sólo genera los filtros correctamente si el elemento a auditar coincide con Contrato. Para poder auditar una la clase de hija una contrato (Ejemplo: OeiErp::Contrato de plugin), OeiErp::Contrato, debería también generar el mismo filtro que con si fuera Contrato. 

 h1. Análisis 

 Metodo auditar_genera_marcado elemento ANTES: 
 <pre><code class="ruby"> 
   # Genera el marcado del elemento 
   def auditar_genera_marcado elemento 
     tipo = case elemento.class.name 
              when 'Presupuesto' then {aplica_presupuesto: true} 
              when 'Gasto' then {aplica_gasto: true} 
              when 'Transferencia' then {aplica_transferencia: true} 
              when 'TransferenciaPeticion' then {aplica_transferencia_peticion: true} 
              when 'Contrato' then {aplica_contrato: true} 
              end 
     # Si no se ha hecho una modificacion de marcado... 
     # ... y esta definida una marca automatica 
     if (elemento.marcado_id == elemento.marcado_id_before_last_save) && (marca_automatica = Marcado.where(tipo).find_by(automatico: true)) 
       # La modificacion la guarda evitando validaciones y callbacks 
       elemento.update_column(:marcado_id, marca_automatica.id) 
     end 
   end 
 </code></pre> 

 Metodo auditar_genera_marcado elemento DESPUES: 
 <pre><code class="ruby"> 
   # Genera el marcado del elemento 
   def auditar_genera_marcado elemento 
     tipo = false 
     if elemento.class <= ::Presupuesto 
       tipo = {aplica_presupuesto: true} 
     elsif elemento.class <= ::Gasto 
       tipo = {aplica_gasto: true} 
     elsif elemento.class <= ::Transferencia 
       tipo = {aplica_transferencia: true} 
     elsif elemento.class <= ::TransferenciaPeticion 
       tipo = {aplica_transferencia_peticion: true} 
     elsif elemento.class <= ::Contrato 
       tipo = {aplica_contrato: true} 
     end 
     # Si no se ha hecho una modificacion de marcado... 
     # ... y esta definida una marca automatica 
     if tipo && (elemento.marcado_id == elemento.marcado_id_before_last_save) && (marca_automatica = Marcado.where(tipo).find_by(automatico: true)) 
       # La modificacion la guarda evitando validaciones y callbacks 
       elemento.update_column(:marcado_id, marca_automatica.id) 
     end 
   end 
 </code></pre> 

 h1. Implementación 

 h1. Implantación 

 Habría que poner a null todos los contratos que actualmente tengan como marcado_id uno que no sea de contrato (1 - Revisar): 
 <pre> 
 Contrato.update_all(marcado_id: nil, marcado_id: 1) 
 </pre> 

Atrás