Proyecto

General

Perfil

Acciones

Errores #5449

cerrada

[Contratos] Seleccionar sólo los estados de marcado automático que sean de clase o heredados

Añadido por Oscar Abad hace 6 meses. Actualizado hace 6 meses.

Estado:
Resuelta
Prioridad:
Normal
Asignado a:
Categoría:
Desarrollo
Versión prevista:
Fecha de inicio:
2024-06-10
Fecha fin:
% Realizado:

100%

Tiempo estimado:
Versión:

Descripción

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.

Análisis

Metodo auditar_genera_marcado elemento ANTES:

  # 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

Metodo auditar_genera_marcado elemento DESPUES:

  # 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

Implementación

https://git.semillasl.com/gong/gor/-/commit/0ee10703ade2ff032bb43910615f146ef66aa32d

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):

Contrato.where(marcado_id: 1).update_all(marcado_id: nil)

Acciones

Exportar a: Atom PDF