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 +13 -5
- data/lib/service_track/busca_ultimo_puesto_completo.rb +54 -0
- data/lib/service_track/create_entrega_rapida.rb +26 -0
- data/lib/service_track/create_rotura.rb +42 -0
- data/lib/service_track/nueva_rotura.rb +21 -0
- data/lib/service_track/update_retrabajos.rb +87 -0
- data/lib/spf_tracking/version.rb +1 -1
- data/lib/tracking/carga_rotura.rb +20 -0
- metadata +13 -7
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
YjAzOTYyN2NjNzk5YWVjZDM5NWY2MjlkMjhkYjVmZjU4NWUzMDI2Ng==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NmMyYjYzODllNDYyNGU5YzM1ODE4MThjODRiOWQ5ZTUwOTM4NzM5Zg==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
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
|
data/lib/spf_tracking/version.rb
CHANGED
@@ -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.
|
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-
|
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.
|
100
|
+
rubygems_version: 2.2.2
|
95
101
|
signing_key:
|
96
102
|
specification_version: 4
|
97
103
|
summary: Sistema de Trackeo de Productos
|