Class: ServiceTrack::UpdateRetrabajos

Inherits:
Object
  • Object
show all
Defined in:
lib/service_track/update_retrabajos.rb

Instance Method Summary collapse

Constructor Details

#initialize(elementos_y_prd_tracks, item_medida, cantidad) ⇒ UpdateRetrabajos

cuando hay una rotura, actualiza los prd_track de los puestos anteriores hasta “puesto_control” en el parámetro



4
5
6
7
8
9
# File 'lib/service_track/update_retrabajos.rb', line 4

def initialize(elementos_y_prd_tracks, item_medida, cantidad)
  @elementos_y_prd_tracks = elementos_y_prd_tracks
  @item_medida = item_medida
  
  @cantidad = cantidad
end

Instance Method Details

#hasta_puesto(lista, prd_track_hasta) ⇒ Object

se le pasa una lista, y devuelve la misma lista hasta encontrarse con el prd_track pasado por parametro el 9999 es para que si el prd_track no esta dentro de la lista, devuelva toda la lista recordar que las listas son por niveles -> nivel 1 (Ini, Cmp, Crt, etc) -> nivel 2 (Lam, Tll) quiere decir que si quiero marcar retrabajos hasta DVH, en las listas de primer y segundo nivel, no va a aparecer el prd_track de DVH, por eso index = 9999



47
48
49
50
# File 'lib/service_track/update_retrabajos.rb', line 47

def hasta_puesto(lista, prd_track_hasta)
  index_de_este_puesto_en_la_lista = lista.index(prd_track_hasta) || 9999
  lista[0..index_de_este_puesto_en_la_lista] 
end

#prd_track_de_primer_nivel_a_actualizar(lista_de_puestos, elemento) ⇒ Object



23
24
25
26
27
# File 'lib/service_track/update_retrabajos.rb', line 23

def prd_track_de_primer_nivel_a_actualizar(lista_de_puestos, elemento)
  lista_de_puestos.collect do |puesto|
    puesto.get_prd_track.find_by(linea_item: @item_medida, elemento_id: elemento.id)
  end
end

#prd_track_de_segundo_nivel_a_actualizar(lista_de_puestos, componente) ⇒ Object



29
30
31
32
33
# File 'lib/service_track/update_retrabajos.rb', line 29

def prd_track_de_segundo_nivel_a_actualizar(lista_de_puestos, componente)
  lista_de_puestos.collect do |puesto|
    puesto.get_prd_track.find_by(linea_item: @item_medida, componente_id: componente.id)
  end
end

#prd_track_de_tercer_nivel_a_actualizar(lista_de_puestos, composicion) ⇒ Object



35
36
37
38
39
# File 'lib/service_track/update_retrabajos.rb', line 35

def prd_track_de_tercer_nivel_a_actualizar(lista_de_puestos, composicion)
  lista_de_puestos.collect do |puesto|
    puesto.get_prd_track.find_by(linea_item: @item_medida, composicion_id: composicion.id)
  end
end

#puestos_de_primer_nivel_a_actualizar(elemento) ⇒ Object



11
12
13
# File 'lib/service_track/update_retrabajos.rb', line 11

def puestos_de_primer_nivel_a_actualizar(elemento)
  elemento.lista_de_puestos_del_elemento_track_primer_nivel
end

#puestos_de_segundo_nivel_a_actualizar(componente) ⇒ Object



15
16
17
# File 'lib/service_track/update_retrabajos.rb', line 15

def puestos_de_segundo_nivel_a_actualizar(componente)
  componente.lista_de_puestos_del_componente_track_segundo_nivel
end

#puestos_de_tercer_nivel_a_actualizar(composicion) ⇒ Object



19
20
21
# File 'lib/service_track/update_retrabajos.rb', line 19

def puestos_de_tercer_nivel_a_actualizar(composicion)
  composicion.lista_de_puestos_de_composicion_track_tercer_nivel
end

#start(rotura_anterior = nil) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/service_track/update_retrabajos.rb', line 57

def start(rotura_anterior = nil)
  
  prd_tracks = []

  @elementos_y_prd_tracks.each do |eypt|

    elemento = eypt[:elemento]
    prd_track_hasta = eypt[:prd_track]

    componente = elemento.componente
    composicion = componente.composicion

    prd_tracks_parcial = []
    
    prd_tracks_parcial << prd_track_de_primer_nivel_a_actualizar(puestos_de_primer_nivel_a_actualizar(elemento), elemento).flatten

    prd_tracks_parcial << prd_track_de_segundo_nivel_a_actualizar(puestos_de_segundo_nivel_a_actualizar(componente), componente).flatten

    prd_tracks_parcial << prd_track_de_tercer_nivel_a_actualizar(puestos_de_tercer_nivel_a_actualizar(composicion), composicion).flatten

    prd_tracks << hasta_puesto(prd_tracks_parcial.flatten, prd_track_hasta)
    
  end

  prd_tracks.flatten!.uniq! # borro los repetidos para que no se actualicen dos veces duplicando valores de retrabajo

  update_retrabajos(prd_tracks, @cantidad)

end

#update_retrabajos(prd_tracks, cantidad) ⇒ Object



52
53
54
55
# File 'lib/service_track/update_retrabajos.rb', line 52

def update_retrabajos(prd_tracks, cantidad)
  Rails.logger.info "ENTRA AL UPDATE_RETRABAJOS"
  prd_tracks.map{ |pt| pt.update_attribute :retrabajo, pt.retrabajo + cantidad }
end