Class: ExpertoTrazabilidad

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

Instance Method Summary collapse

Instance Method Details

#descontar_remito(puesto_control, item_medida, cantidad) ⇒ Object



60
61
62
63
64
65
66
67
# File 'lib/experto_trazabilidad.rb', line 60

def descontar_remito(puesto_control, item_medida, cantidad)
  if %w"Facturacion Expedicion Entregado".include?(puesto_control.nombre)
    facturacion = Facturacion.where(linea_item: item_medida).max_by{|x| x.created_at}
    new_cantidad = facturacion.cantidad == 0 ? 0 : facturacion.cantidad - cantidad
    Rails.logger.info "Del comprobante_medida_id #{facturacion.id} se le descuenta 1 a #{facturacion.cantidad} y queda #{new_cantidad}"
    facturacion.update_attribute :cantidad, new_cantidad
  end
end

#finalizar_y_pasar_a_historico(pedido) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/experto_trazabilidad.rb', line 5

def finalizar_y_pasar_a_historico(pedido)
  composicions_ids = pedido.composicions_ids
  # busco todas las filas en trazabilidads que tengan composicion perteneciente al pedido
  trazabilidads_ids = Trazabilidad.where(composicion_id: composicions_ids).ids
  ActiveRecord::Base.transaction do
    # si finaliza entonces sí hago el pasaje a historico
    if pedido.finalizar
      # pasaje de trabajos
      Trabajo.pasar_trabajos_a_historico(trazabilidads_ids)
      Trabajo.borrar_trabajo(trazabilidads_ids)
      # pasaje de trazabilidad
      Trazabilidad.pasar_trazabilidad_a_historico(composicions_ids) 
      Trazabilidad.borrar_trazabilidad(composicions_ids)
      # pasaje de tango a tango_historico
      TangoHeader.pasar_a_historico(pedido.id)
      TangoBody.pasar_a_historico(pedido.id)
      TangoActivo.pasar_a_historico(pedido.id)
      # borro de las tablas de tango_ los registros
      TangoHeader.where(pedido_id: pedido.id).delete_all
      TangoBody.where(pedido_id: pedido.id).delete_all
      TangoActivo.where(pedido_id: pedido.id).delete_all
      return true
    end
  end
end

#items_que_pasan_por(pedido, puesto) ⇒ Object



74
75
76
# File 'lib/experto_trazabilidad.rb', line 74

def items_que_pasan_por(pedido, puesto)
  pedido.items.map{|i| i if i.composicion.composicion_pasa_por?(puesto)}.compact
end

#medidas_que_pasan_por(pedido, puesto) ⇒ Object



78
79
80
# File 'lib/experto_trazabilidad.rb', line 78

def medidas_que_pasan_por(pedido, puesto)
  items_que_pasan_por(pedido, puesto).map(&:item_medidas).flatten
end

#pasar_a_historico(pedido) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/experto_trazabilidad.rb', line 31

def pasar_a_historico(pedido)
  composicions_ids = pedido.composicions_ids
  # busco todas las filas en trazabilidads que tengan composicion perteneciente al pedido
  trazabilidads_ids = Trazabilidad.where(composicion_id: composicions_ids).ids
  ActiveRecord::Base.transaction do
    # si finaliza entonces sí hago el pasaje a historico
    # pasaje de trabajos
    Trabajo.pasar_trabajos_a_historico(trazabilidads_ids)
    Trabajo.borrar_trabajo(trazabilidads_ids)
    # pasaje de trazabilidad
    Trazabilidad.pasar_trazabilidad_a_historico(composicions_ids) 
    Trazabilidad.borrar_trazabilidad(composicions_ids)
    # pasaje de tango a tango_historico
    TangoHeader.pasar_a_historico(pedido.id)
    TangoBody.pasar_a_historico(pedido.id)
    TangoActivo.pasar_a_historico(pedido.id)
    # borro de las tablas de tango_ los registros
    TangoHeader.where(pedido_id: pedido.id).delete_all
    TangoBody.where(pedido_id: pedido.id).delete_all
    TangoActivo.where(pedido_id: pedido.id).delete_all
    return true
  end
end

#pedidos_con_dvh_para_preparar(array_pedidos_puestos) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/experto_trazabilidad.rb', line 89

def pedidos_con_dvh_para_preparar(array_pedidos_puestos)
  # me quedo solamente con pedidos que tengan activo Preparacion
  # para aplicarles el filtro siguiente

  pedidos_prepa = []

  array_pedidos_puestos.each do |pedido|
    pedidos_prepa << pedido[0] if pedido[1].include?(PuestoControl.preparacion)
  end

  pedidos_prepa.map{|p| p if (self.terminados_de_medidas_en_puesto(self.medidas_que_pasan_por(p, PuestoControl.dvh), PuestoControl.dvh) > self.terminados_de_medidas_en_puesto(self.medidas_que_pasan_por(p, PuestoControl.dvh), PuestoControl.preparacion)) }.compact

end

#pedidos_con_dvh_para_preparar_old(pedidos) ⇒ Object

si los terminados en dvh son mayor que los terminados en preparacion, entonces el pedido entra en el array de pedidos con dvh listos para preparar



85
86
87
# File 'lib/experto_trazabilidad.rb', line 85

def pedidos_con_dvh_para_preparar_old(pedidos)
  pedidos.map{|p| p if (p.pedido_pasa_por_dvh? && self.terminados_de_medidas_en_puesto(self.medidas_que_pasan_por(p, PuestoControl.dvh), PuestoControl.dvh) > self.terminados_de_medidas_en_puesto(self.medidas_que_pasan_por(p, PuestoControl.dvh), PuestoControl.preparacion)) }.compact
end

#terminados_de_medidas_en_puesto(item_medidas, puesto) ⇒ Object



69
70
71
72
# File 'lib/experto_trazabilidad.rb', line 69

def terminados_de_medidas_en_puesto(item_medidas, puesto)
  prd_tracks = puesto.get_prd_track.where(linea_item_type: "ItemMedida", linea_item_id: item_medidas.map(&:id))
  prd_tracks.to_a.sum(&:terminado_listo)
end