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 clase de hija una contrato (Ejemplo: OeiErp::Contrato de plugin), 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><code class="ruby"> <pre> Contrato.where(marcado_id: 1).update_all(marcado_id: nil) Contrato.update_all(marcado_id: nil, marcado_id: 1) </code></pre> </pre>