mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
49 lines
831 B
Ruby
49 lines
831 B
Ruby
class BulkInvoiceService
|
|
attr_reader :id
|
|
|
|
def initialize
|
|
@id = new_invoice_id
|
|
end
|
|
|
|
def start_pdf_job(order_ids)
|
|
pdf = CombinePDF.new
|
|
orders = Spree::Order.where(id: order_ids)
|
|
|
|
orders.each do |order|
|
|
invoice = renderer.render_to_string(order)
|
|
|
|
pdf << CombinePDF.parse(invoice)
|
|
end
|
|
|
|
pdf.save "#{file_directory}/#{@id}.pdf"
|
|
end
|
|
handle_asynchronously :start_pdf_job
|
|
|
|
def invoice_created?(invoice_id)
|
|
File.exist? filepath(invoice_id)
|
|
end
|
|
|
|
def filepath(invoice_id)
|
|
"#{directory}/#{invoice_id}.pdf"
|
|
end
|
|
|
|
private
|
|
|
|
def new_invoice_id
|
|
Time.zone.now.to_i.to_s
|
|
end
|
|
|
|
def directory
|
|
'tmp/invoices'
|
|
end
|
|
|
|
def renderer
|
|
@renderer ||= InvoiceRenderer.new
|
|
end
|
|
|
|
def file_directory
|
|
Dir.mkdir(directory) unless File.exist?(directory)
|
|
directory
|
|
end
|
|
end
|