mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-27 01:43:22 +00:00
Merge pull request #3444 from mkllnk/3437-supplier-name-on-invoice
3437 supplier name on invoice
This commit is contained in:
@@ -37,9 +37,7 @@ Spree::Admin::OrdersController.class_eval do
|
||||
end
|
||||
|
||||
def invoice
|
||||
pdf = render_to_string pdf: "invoice-#{@order.number}.pdf",
|
||||
template: invoice_template,
|
||||
formats: [:html], encoding: "UTF-8"
|
||||
pdf = InvoiceRenderer.new.render_to_string(@order)
|
||||
|
||||
Spree::OrderMailer.invoice_email(@order.id, pdf).deliver
|
||||
flash[:success] = t('admin.orders.invoice_email_sent')
|
||||
@@ -48,7 +46,7 @@ Spree::Admin::OrdersController.class_eval do
|
||||
end
|
||||
|
||||
def print
|
||||
render pdf: "invoice-#{@order.number}", template: invoice_template, encoding: "UTF-8"
|
||||
render InvoiceRenderer.new.args(@order)
|
||||
end
|
||||
|
||||
def print_ticket
|
||||
@@ -61,10 +59,6 @@ Spree::Admin::OrdersController.class_eval do
|
||||
|
||||
private
|
||||
|
||||
def invoice_template
|
||||
Spree::Config.invoice_style2? ? "spree/admin/orders/invoice2" : "spree/admin/orders/invoice"
|
||||
end
|
||||
|
||||
def require_distributor_abn
|
||||
unless @order.distributor.abn.present?
|
||||
flash[:error] = t(:must_have_valid_business_number, enterprise_name: @order.distributor.name)
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
class BulkInvoiceService
|
||||
include WickedPdf::PdfHelper
|
||||
attr_reader :id
|
||||
|
||||
def initialize
|
||||
@@ -11,10 +10,7 @@ class BulkInvoiceService
|
||||
orders = Spree::Order.where(id: order_ids)
|
||||
|
||||
orders.each do |order|
|
||||
invoice = renderer.render_to_string pdf: "invoice-#{order.number}.pdf",
|
||||
template: invoice_template,
|
||||
formats: [:html], encoding: "UTF-8",
|
||||
locals: { :@order => order }
|
||||
invoice = renderer.render_to_string(order)
|
||||
|
||||
pdf << CombinePDF.parse(invoice)
|
||||
end
|
||||
@@ -42,11 +38,7 @@ class BulkInvoiceService
|
||||
end
|
||||
|
||||
def renderer
|
||||
ApplicationController.new
|
||||
end
|
||||
|
||||
def invoice_template
|
||||
Spree::Config.invoice_style2? ? "spree/admin/orders/invoice2" : "spree/admin/orders/invoice"
|
||||
@renderer ||= InvoiceRenderer.new
|
||||
end
|
||||
|
||||
def file_directory
|
||||
|
||||
29
app/services/invoice_renderer.rb
Normal file
29
app/services/invoice_renderer.rb
Normal file
@@ -0,0 +1,29 @@
|
||||
class InvoiceRenderer
|
||||
def render_to_string(order)
|
||||
renderer.render_to_string(args(order))
|
||||
end
|
||||
|
||||
def args(order)
|
||||
{
|
||||
pdf: "invoice-#{order.number}.pdf",
|
||||
template: invoice_template,
|
||||
formats: [:html],
|
||||
encoding: "UTF-8",
|
||||
locals: { :@order => order }
|
||||
}
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def renderer
|
||||
ApplicationController.new
|
||||
end
|
||||
|
||||
def invoice_template
|
||||
if Spree::Config.invoice_style2?
|
||||
"spree/admin/orders/invoice2"
|
||||
else
|
||||
"spree/admin/orders/invoice"
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -14,6 +14,9 @@
|
||||
%tr
|
||||
%td
|
||||
= render 'spree/shared/line_item_name', line_item: item
|
||||
%br
|
||||
%small
|
||||
%em= raw(item.variant.product.supplier.name)
|
||||
%td{:align => "right"}
|
||||
= item.quantity
|
||||
%td{:align => "right"}
|
||||
|
||||
@@ -17,6 +17,9 @@
|
||||
%tr
|
||||
%td
|
||||
= render 'spree/shared/line_item_name', line_item: item
|
||||
%br
|
||||
%small
|
||||
%em= raw(item.variant.product.supplier.name)
|
||||
%td{:align => "right"}
|
||||
= item.quantity
|
||||
%td{:align => "right"}
|
||||
|
||||
@@ -11,6 +11,16 @@ describe BulkInvoiceService do
|
||||
|
||||
expect(Delayed::Job.last.payload_object.method_name).to eq :start_pdf_job_without_delay
|
||||
end
|
||||
|
||||
it "creates a PDF invoice" do
|
||||
order = create(:completed_order_with_fees)
|
||||
order.bill_address = order.ship_address
|
||||
order.save!
|
||||
|
||||
service.start_pdf_job_without_delay([order.id])
|
||||
|
||||
expect(service.invoice_created?(service.id)).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
describe "#invoice_created?" do
|
||||
|
||||
20
spec/services/invoice_renderer_spec.rb
Normal file
20
spec/services/invoice_renderer_spec.rb
Normal file
@@ -0,0 +1,20 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe InvoiceRenderer do
|
||||
let(:service) { described_class.new }
|
||||
|
||||
it "creates a PDF invoice with two different templates" do
|
||||
order = create(:completed_order_with_fees)
|
||||
order.bill_address = order.ship_address
|
||||
order.save!
|
||||
|
||||
result = service.render_to_string(order)
|
||||
expect(result).to match /^%PDF/
|
||||
|
||||
allow(Spree::Config).to receive(:invoice_style2?).and_return true
|
||||
|
||||
alternative = service.render_to_string(order)
|
||||
expect(alternative).to match /^%PDF/
|
||||
expect(alternative).to_not eq result
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user