Files
openfoodnetwork/app/services/invoice_renderer.rb
Matt-Yorkley 7ef0056225 Fix invoice rendering issue
Setting `locals: { :@order => order }` no longer works; `@order` is not set as expected in the partial. Fixes various errors eg:

Failure/Error: = "#{@order.number}"

     ActionView::Template::Error:
       undefined method `number' for nil:NilClass
     # ./app/views/spree/admin/orders/invoice.html.haml:14:in `_app_views_spree_admin_orders_invoice_html_haml__1740595365701113578_70025078036080'
     # ./app/services/invoice_renderer.rb:3:in `render_to_string'
     # ./app/controllers/spree/admin/orders_controller.rb:89:in `invoice'
2020-11-27 14:00:29 +00:00

30 lines
549 B
Ruby

class InvoiceRenderer
def render_to_string(order)
renderer.instance_variable_set(:@order, order)
renderer.render_to_string(args(order))
end
def args(order)
{
pdf: "invoice-#{order.number}.pdf",
template: invoice_template,
formats: [:html],
encoding: "UTF-8"
}
end
private
def renderer
@renderer ||= ApplicationController.new
end
def invoice_template
if Spree::Config.invoice_style2?
"spree/admin/orders/invoice2"
else
"spree/admin/orders/invoice"
end
end
end