Class: ServiceTrack::UpdateRetrabajos
- Inherits:
-
Object
- Object
- ServiceTrack::UpdateRetrabajos
- Defined in:
- lib/service_track/update_retrabajos.rb
Instance Method Summary collapse
-
#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.
-
#initialize(elementos_y_prd_tracks, item_medida, cantidad) ⇒ UpdateRetrabajos
constructor
cuando hay una rotura, actualiza los prd_track de los puestos anteriores hasta “puesto_control” en el parámetro.
- #prd_track_de_primer_nivel_a_actualizar(lista_de_puestos, elemento) ⇒ Object
- #prd_track_de_segundo_nivel_a_actualizar(lista_de_puestos, componente) ⇒ Object
- #prd_track_de_tercer_nivel_a_actualizar(lista_de_puestos, composicion) ⇒ Object
- #puestos_de_primer_nivel_a_actualizar(elemento) ⇒ Object
- #puestos_de_segundo_nivel_a_actualizar(componente) ⇒ Object
- #puestos_de_tercer_nivel_a_actualizar(composicion) ⇒ Object
- #start(rotura_anterior = nil) ⇒ Object
- #update_retrabajos(prd_tracks, cantidad) ⇒ Object
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 |