spf_tracking 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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