Class: GeneratePickSlipWorker

Inherits:
Object
  • Object
show all
Includes:
Sidekiq::Job, Workers::StatusBroadcastable
Defined in:
app/workers/generate_pick_slip_worker.rb

Instance Attribute Summary

Attributes included from Workers::StatusBroadcastable

#broadcast_status_updates

Instance Method Summary collapse

Methods included from Workers::StatusBroadcastable::Overrides

#at, #store, #total

Instance Method Details

#perform(options = {}) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'app/workers/generate_pick_slip_worker.rb', line 8

def perform(options = {})
  options = options.with_indifferent_access
  deliveries = Delivery.where(id: options[:delivery_ids])
  store = begin
    Store.find(options[:store_id])
  rescue StandardError
    nil
  end
  store ||= deliveries.first&.store&.id
  pdf_upload_id = nil
  pdf = nil
  msg = []
  if deliveries.present?
    if deliveries.size > 1 # Super pick slip
      pdf, sub_msg = Delivery.generate_super_pick_slip_pdf(deliveries, options[:split_kits])
      msg << sub_msg
    elsif (d = deliveries.first) # Just get it directly for a single one
      msg << d.name
      pdf = d.get_or_generate_pick_slip_pdf(options[:split_kits])
    end
    pdf_upload_id = pdf.id
    if (ppid = options[:print_profile_id].presence) # Directly send to printer!
      pp = PrintProfile.find(ppid)
      jid = pp.print_upload(pdf)
      msg << "- Submitted pdf upload #{pdf.id} to print profile #{pp.name} [#{ppid}], job #{jid}"
    end
  end
  store upload_id: pdf_upload_id
  store redirect_to: "/warehouses/#{store.id}"
  store complete_message: msg.join('. ')
end