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 la clase hija 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}
binding.pry
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>