spf_tracking 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: e426c08db3f822169b3bf6d116705a04fbb3b061
4
- data.tar.gz: 495aa119a7dc119b737320b585c12d5673acb030
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YjAzOTYyN2NjNzk5YWVjZDM5NWY2MjlkMjhkYjVmZjU4NWUzMDI2Ng==
5
+ data.tar.gz: !binary |-
6
+ NmMyYjYzODllNDYyNGU5YzM1ODE4MThjODRiOWQ5ZTUwOTM4NzM5Zg==
5
7
  SHA512:
6
- metadata.gz: a38bb34b8e6eb87ccad2f13312236d53fe70c938c18a761ceffe4155ecb1732e5110ae36c56477d4f4bc084997816ddc8aaaa23a7abaaa3bd2ac52f16842aba0
7
- data.tar.gz: c1f4ddd74f102dd4bd448c25b14a82fcee04de1fd7c09667a02ccee79e9a048931bbd978e5456dfee1293827cb16dd451489304fa7c4d53613d5e619ec3bdb80
8
+ metadata.gz: !binary |-
9
+ OTE5OGQ4Njk5NzhlNTcyODUxMjIxN2RkN2Q2ZjdhYzZhZDBmOGZlMmM1YzUx
10
+ ZmI5ZTliMDg4NjQyZTBmMGUzODEyOTE2MTRhNWFlOTc4YThlZjZkMTIwNDlk
11
+ M2NkMWQ3M2JmY2Q5MTljYzI0YjY0MDFkNWQyNTBiMWNjMTRlN2Q=
12
+ data.tar.gz: !binary |-
13
+ MmJhODc4ZmI5MmJjNzhkNjNlYzg0OTI2ZDFiOWQ1YTYwNTYwNTM2MjAyYzY5
14
+ OTRlYmEzOTVhMjYyNWVhNjdmMDIzNGI5NWZjMzM0NTBlZGFjY2U0Yzk4ZmI2
15
+ MjNhOWQ5YjY3OGZiNmQ5NDc4OWY2NzMxMzI3YzNkNjQ5YTE2NDI=
@@ -0,0 +1,54 @@
1
+ class ServiceTrack::BuscaUltimoPuestoCompleto
2
+
3
+ def initialize(opts = {})
4
+ @puesto = opts.has_key?(:item) ? ultimo_puesto_completo_item(opts[:item]) : ultimo_puesto_completo_item_medida(opts[:item_medida])
5
+ end
6
+
7
+ def verbo_terminado
8
+ @puesto ? @puesto.verbo_terminado : "Mixto"
9
+ end
10
+
11
+ private
12
+
13
+ def ultimo_puesto_completo_item_medida(item_medida)
14
+
15
+ ultimo_puesto_completo = nil
16
+ PuestoControl.trazables.order(:orden).each do |puesto|
17
+
18
+ if !%w("Inicial Compra Stock Sin\ programar Planificado Borrador Taller Templado Serigrafiado").include?(puesto.nombre)
19
+
20
+ klass_prd_track = puesto.get_prd_track
21
+ prd_tracks = klass_prd_track.where(item_medida_id: item_medida.id)
22
+
23
+ if prd_tracks.any?
24
+ puesto_todo_terminado = true
25
+ prd_tracks.each do |prd_track|
26
+ if !prd_track.esta_terminado?
27
+ puesto_todo_terminado = false
28
+ break
29
+ end
30
+ end
31
+
32
+ ultimo_puesto_completo = puesto if puesto_todo_terminado
33
+ end
34
+
35
+ end
36
+
37
+ end
38
+
39
+ ultimo_puesto_completo
40
+ end
41
+
42
+ def ultimo_puesto_completo_item(item)
43
+ puestos = []
44
+ item.item_medidas.each do |item_medida|
45
+ puestos << ultimo_puesto_completo_item_medida(item_medida)
46
+ end
47
+
48
+ puestos = puestos.uniq.compact
49
+
50
+ puestos.count == 1 ? puestos[0] : nil
51
+
52
+ end
53
+
54
+ end
@@ -0,0 +1,26 @@
1
+ class ServiceTrack::CreateEntregaRapida
2
+
3
+ def initialize(opts = {})
4
+ @opts = opts
5
+ end
6
+
7
+ def save
8
+ ActiveRecord::Base.transaction do
9
+ terminar_facturacion
10
+ nuevas_expediciones # con los comprobantes generados en el paso anterior
11
+ # comprobar coherencia?
12
+ end
13
+ end
14
+
15
+ def terminar_facturacion
16
+ @comprobante_temps_generados = TerminarFacturacion.new(@opts).save
17
+ end
18
+
19
+ def nuevas_expediciones
20
+ @comprobante_temps_generados.each do |comprobante|
21
+ @opts[:comprobante_temp_id] = comprobante.id
22
+ NuevaExpedicion.new(@opts).save
23
+ end
24
+ end
25
+
26
+ end
@@ -0,0 +1,42 @@
1
+ class ServiceTrack::CreateRotura
2
+
3
+ def initialize(opts)
4
+ opts.each_pair { |k, v| instance_variable_set("@#{k}", v) }
5
+ @opts = opts
6
+
7
+ @cantidad = 1 # de momento ?
8
+ end
9
+
10
+
11
+
12
+ def save
13
+ ActiveRecord::Base.transaction do
14
+ update_roturas
15
+ update_retrabajos
16
+ domino
17
+ create_rotura_vidrios
18
+ # comprobar coherencia?
19
+ end
20
+ end
21
+
22
+ def update_roturas
23
+ @elementos_y_prd_tracks.each do |eypt|
24
+ eypt[:prd_track].cargar_rotura(@cantidad, @current_user)
25
+ end
26
+ end
27
+
28
+ def update_retrabajos
29
+ ServiceTrack::UpdateRetrabajos.new(@elementos_y_prd_tracks, @item_medida, @cantidad).start()
30
+ end
31
+
32
+ def domino
33
+ @elementos_y_prd_tracks.each do |eypt|
34
+ Tracking::PrdIniTrack.find_by(linea_item: @item_medida, elemento_id: eypt[:elemento].id).domino
35
+ end
36
+ end
37
+
38
+ def create_rotura_vidrios
39
+ ServiceTrack::NuevaRotura.new(@opts).save
40
+ end
41
+
42
+ end
@@ -0,0 +1,21 @@
1
+ class ServiceTrack::NuevaRotura
2
+
3
+ def initialize(opts)
4
+ opts.each_pair { |k, v| instance_variable_set("@#{k}", v) }
5
+
6
+ @cantidad = 1 # de momento ?
7
+ end
8
+
9
+ def save
10
+ ActiveRecord::Base.transaction do
11
+ create_roturas
12
+ end
13
+ end
14
+
15
+ def create_roturas
16
+ @elementos_y_prd_tracks.each do |eypt|
17
+ RoturaVidrio.create(item_medida_id: @item_medida.id, elemento_id: eypt[:elemento].id, observacion: @motivo_rotura, motivo_id: @motivo_id, momento_id: @momento_id, puesto_control_id: @puesto_rotura_vidrio.id, user_id: @current_user.id)
18
+ end
19
+ end
20
+
21
+ end
@@ -0,0 +1,87 @@
1
+ class ServiceTrack::UpdateRetrabajos
2
+
3
+ # cuando hay una rotura, actualiza los prd_track de los puestos anteriores hasta "puesto_control" en el parámetro
4
+ def initialize(elementos_y_prd_tracks, item_medida, cantidad)
5
+ @elementos_y_prd_tracks = elementos_y_prd_tracks
6
+ @item_medida = item_medida
7
+
8
+ @cantidad = cantidad
9
+ end
10
+
11
+ def puestos_de_primer_nivel_a_actualizar(elemento)
12
+ elemento.lista_de_puestos_del_elemento_track_primer_nivel
13
+ end
14
+
15
+ def puestos_de_segundo_nivel_a_actualizar(componente)
16
+ componente.lista_de_puestos_del_componente_track_segundo_nivel
17
+ end
18
+
19
+ def puestos_de_tercer_nivel_a_actualizar(composicion)
20
+ composicion.lista_de_puestos_de_composicion_track_tercer_nivel
21
+ end
22
+
23
+ def prd_track_de_primer_nivel_a_actualizar(lista_de_puestos, elemento)
24
+ lista_de_puestos.collect do |puesto|
25
+ puesto.get_prd_track.find_by(linea_item: @item_medida, elemento_id: elemento.id)
26
+ end
27
+ end
28
+
29
+ def prd_track_de_segundo_nivel_a_actualizar(lista_de_puestos, componente)
30
+ lista_de_puestos.collect do |puesto|
31
+ puesto.get_prd_track.find_by(linea_item: @item_medida, componente_id: componente.id)
32
+ end
33
+ end
34
+
35
+ def prd_track_de_tercer_nivel_a_actualizar(lista_de_puestos, composicion)
36
+ lista_de_puestos.collect do |puesto|
37
+ puesto.get_prd_track.find_by(linea_item: @item_medida, composicion_id: composicion.id)
38
+ end
39
+ end
40
+
41
+ # se le pasa una lista, y devuelve la misma lista hasta encontrarse con el prd_track pasado por parametro
42
+ # el 9999 es para que si el prd_track no esta dentro de la lista, devuelva toda la lista
43
+ # recordar que las listas son por niveles
44
+ # -> nivel 1 (Ini, Cmp, Crt, etc)
45
+ # -> nivel 2 (Lam, Tll)
46
+ # 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
+ def hasta_puesto(lista, prd_track_hasta)
48
+ index_de_este_puesto_en_la_lista = lista.index(prd_track_hasta) || 9999
49
+ lista[0..index_de_este_puesto_en_la_lista]
50
+ end
51
+
52
+ def update_retrabajos(prd_tracks, cantidad)
53
+ Rails.logger.info "ENTRA AL UPDATE_RETRABAJOS"
54
+ prd_tracks.map{ |pt| pt.update_attribute :retrabajo, pt.retrabajo + cantidad }
55
+ end
56
+
57
+ def start(rotura_anterior = nil)
58
+
59
+ prd_tracks = []
60
+
61
+ @elementos_y_prd_tracks.each do |eypt|
62
+
63
+ elemento = eypt[:elemento]
64
+ prd_track_hasta = eypt[:prd_track]
65
+
66
+ componente = elemento.componente
67
+ composicion = componente.composicion
68
+
69
+ prd_tracks_parcial = []
70
+
71
+ prd_tracks_parcial << prd_track_de_primer_nivel_a_actualizar(puestos_de_primer_nivel_a_actualizar(elemento), elemento).flatten
72
+
73
+ prd_tracks_parcial << prd_track_de_segundo_nivel_a_actualizar(puestos_de_segundo_nivel_a_actualizar(componente), componente).flatten
74
+
75
+ prd_tracks_parcial << prd_track_de_tercer_nivel_a_actualizar(puestos_de_tercer_nivel_a_actualizar(composicion), composicion).flatten
76
+
77
+ prd_tracks << hasta_puesto(prd_tracks_parcial.flatten, prd_track_hasta)
78
+
79
+ end
80
+
81
+ prd_tracks.flatten!.uniq! # borro los repetidos para que no se actualicen dos veces duplicando valores de retrabajo
82
+
83
+ update_retrabajos(prd_tracks, @cantidad)
84
+
85
+ end
86
+
87
+ end
@@ -1,3 +1,3 @@
1
1
  module SpfTracking
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -0,0 +1,20 @@
1
+ # encoding: utf-8
2
+
3
+ module Tracking::RegistroTrabajo
4
+
5
+ # solo carga la rotura del puesto actual
6
+ def cargar_rotura(cant, current_user)
7
+ if validacion_carga_rotura(cant)
8
+
9
+ self.update_attribute :rotura, self.rotura + cant
10
+ self.trabajos.build(type: "Rotura", cantidad: cant, hora_fecha: Time.now, user_id: current_user.try(:id)).save!
11
+ end
12
+
13
+ end
14
+
15
+ def validacion_carga_rotura(cant)
16
+ (cant == 1) # mientras la carga de rotura sea unitaria
17
+ #(cant <= self.terminado - self.retrabajo)
18
+ end
19
+
20
+ end
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spf_tracking
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carlos Ramseyer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-15 00:00:00.000000000 Z
11
+ date: 2016-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: 4.0.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: 4.0.2
27
27
  description: SPF
@@ -34,9 +34,15 @@ files:
34
34
  - MIT-LICENSE
35
35
  - README.rdoc
36
36
  - Rakefile
37
+ - lib/service_track/busca_ultimo_puesto_completo.rb
38
+ - lib/service_track/create_entrega_rapida.rb
39
+ - lib/service_track/create_rotura.rb
40
+ - lib/service_track/nueva_rotura.rb
41
+ - lib/service_track/update_retrabajos.rb
37
42
  - lib/spf_tracking.rb
38
43
  - lib/spf_tracking/version.rb
39
44
  - lib/tasks/spf_tracking_tasks.rake
45
+ - lib/tracking/carga_rotura.rb
40
46
  - lib/tracking/registro_trabajo.rb
41
47
  - lib/tracking/routes.rb
42
48
  - test/dummy/README.rdoc
@@ -81,17 +87,17 @@ require_paths:
81
87
  - lib
82
88
  required_ruby_version: !ruby/object:Gem::Requirement
83
89
  requirements:
84
- - - ">="
90
+ - - ! '>='
85
91
  - !ruby/object:Gem::Version
86
92
  version: '0'
87
93
  required_rubygems_version: !ruby/object:Gem::Requirement
88
94
  requirements:
89
- - - ">="
95
+ - - ! '>='
90
96
  - !ruby/object:Gem::Version
91
97
  version: '0'
92
98
  requirements: []
93
99
  rubyforge_project:
94
- rubygems_version: 2.2.0
100
+ rubygems_version: 2.2.2
95
101
  signing_key:
96
102
  specification_version: 4
97
103
  summary: Sistema de Trackeo de Productos