add specs
This commit is contained in:
parent
e902aa0d5a
commit
45db0575b1
46 changed files with 714 additions and 238 deletions
|
|
@ -7,14 +7,6 @@ module Concerns::SendGroupOrderInvoicePdf
|
|||
invoice_data = group_order_invoice.load_data_for_invoice
|
||||
invoice_data[:title] = t('documents.group_order_invoice_pdf.title', supplier: invoice_data[:supplier])
|
||||
invoice_data[:no_footer] = true
|
||||
puts "
|
||||
" + "____________" + "
|
||||
" + "____________" + "
|
||||
" + "____________" + "
|
||||
" + "#{invoice_data.inspect}" + "
|
||||
" + "____________"+ "
|
||||
" + "____________"+ "
|
||||
" + "____________"
|
||||
GroupOrderInvoicePdf.new invoice_data
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
class Finance::InvoicesController < ApplicationController
|
||||
class Finance::InvoicesController < OrderInvoiceControllerBase
|
||||
before_action :authenticate_finance_or_invoices
|
||||
|
||||
before_action :find_invoice, only: %i[show edit update destroy]
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
class GroupOrderInvoicesController < ApplicationController
|
||||
class GroupOrderInvoicesController < OrderInvoicesControllerBase
|
||||
include Concerns::SendGroupOrderInvoicePdf
|
||||
before_action :authenticate_finance
|
||||
|
||||
def show
|
||||
@group_order_invoice = GroupOrderInvoice.find(params[:id])
|
||||
|
|
@ -57,21 +56,6 @@ class GroupOrderInvoicesController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def select_sepa_sequence_type
|
||||
@group_order_invoice = GroupOrderInvoice.find(params[:id])
|
||||
@group_order = @group_order_invoice.group_order
|
||||
return unless params[:sepa_sequence_type]
|
||||
|
||||
respond_to do |format|
|
||||
@group_order_invoice.sepa_sequence_type = params[:sepa_sequence_type]
|
||||
if @group_order_invoice.save!
|
||||
format.js
|
||||
else
|
||||
format.json { render json: @group_order_invoice.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def select_all_sepa_sequence_type
|
||||
@order = Order.find(params[:order_id])
|
||||
@group_order_invoices = @order.group_orders.map(&:group_order_invoice).compact
|
||||
|
|
@ -86,31 +70,6 @@ class GroupOrderInvoicesController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def toggle_paid
|
||||
@group_order_invoice = GroupOrderInvoice.find(params[:id])
|
||||
respond_to do |format|
|
||||
@group_order_invoice.paid = !@group_order_invoice.paid
|
||||
if @group_order_invoice.save!
|
||||
format.js
|
||||
else
|
||||
format.json { render json: @group_order_invoice.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def toggle_sepa_downloaded
|
||||
@group_order_invoice = GroupOrderInvoice.find(params[:id])
|
||||
@order = @group_order_invoice.group_order.order
|
||||
respond_to do |format|
|
||||
@group_order_invoice.sepa_downloaded = !@group_order_invoice.sepa_downloaded
|
||||
if @group_order_invoice.save!
|
||||
format.js
|
||||
else
|
||||
format.json { render json: @group_order_invoice.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def toggle_all_paid
|
||||
@order = Order.find(params[:order_id])
|
||||
@group_order_invoices = @order.group_orders.map(&:group_order_invoice).compact
|
||||
|
|
@ -164,4 +123,14 @@ class GroupOrderInvoicesController < ApplicationController
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def invoice_class
|
||||
GroupOrderInvoice
|
||||
end
|
||||
|
||||
def set_related_group_order(invoice)
|
||||
invoice.group_order
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -39,27 +39,18 @@ class MultiOrdersController < ApplicationController
|
|||
end
|
||||
return
|
||||
end
|
||||
|
||||
begin
|
||||
@multi_order = MultiOrder.new
|
||||
@multi_order.orders = orders
|
||||
@multi_order.ends = orders.map(&:ends).max
|
||||
@multi_order.save!
|
||||
#create multi group orders
|
||||
all_group_orders = orders.flat_map(&:group_orders)
|
||||
|
||||
grouped_by_ordergroup = all_group_orders.group_by(&:ordergroup_id)
|
||||
|
||||
grouped_by_ordergroup.each do |ordergroup_id, group_orders|
|
||||
multi_group_order = MultiGroupOrder.create!(
|
||||
multi_order: @multi_order, group_orders: group_orders
|
||||
)
|
||||
# Now, associate each group_order with the new multi_group_order
|
||||
group_orders.each do |group_order|
|
||||
group_order.update!(multi_group_order: multi_group_order)
|
||||
end
|
||||
suppliers = orders.map(&:supplier).map(&:name).join(', ')
|
||||
msg = "Multi Bestellung für #{suppliers} erstellt"
|
||||
respond_to do |format|
|
||||
flash[:notice] = msg
|
||||
format.js
|
||||
format.html { redirect_to finance_order_index_path }
|
||||
end
|
||||
redirect_to finance_order_index_path
|
||||
rescue ActiveRecord::RecordInvalid => e
|
||||
flash[:alert] = t('errors.general_msg', msg: e.message)
|
||||
respond_to do |format|
|
||||
|
|
@ -71,9 +62,13 @@ class MultiOrdersController < ApplicationController
|
|||
|
||||
def destroy
|
||||
@multi_order = MultiOrder.find(params[:id])
|
||||
@multi_order.destroy
|
||||
respond_to do |format|
|
||||
format.html { redirect_to finance_order_index_path }
|
||||
if @multi_order.ordergroup_invoices.any?
|
||||
flash[:alert]= "Lösche erst die Rechnungen"
|
||||
redirect_to finance_order_index_path
|
||||
else
|
||||
@multi_order.destroy
|
||||
redirect_to finance_order_index_path
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
44
app/controllers/order_invoices_controller_base.rb
Normal file
44
app/controllers/order_invoices_controller_base.rb
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
class OrderInvoicesControllerBase < ApplicationController
|
||||
before_action :authenticate_finance
|
||||
|
||||
def select_sepa_sequence_type
|
||||
@invoice = invoice_class.find(params[:id])
|
||||
return unless params[:sepa_sequence_type]
|
||||
|
||||
@group_order = set_related_group_order(@invoice)
|
||||
@multi_group_order = set_related_group_order(@invoice)
|
||||
|
||||
@invoice.sepa_sequence_type = params[:sepa_sequence_type]
|
||||
save_and_respond(@invoice)
|
||||
end
|
||||
|
||||
def toggle_paid
|
||||
@invoice = invoice_class.find(params[:id])
|
||||
@invoice.paid = !@invoice.paid
|
||||
save_and_respond(@invoice)
|
||||
end
|
||||
|
||||
def toggle_sepa_downloaded
|
||||
@invoice = invoice_class.find(params[:id])
|
||||
@invoice.sepa_downloaded = !@invoice.sepa_downloaded
|
||||
save_and_respond(@invoice)
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def save_and_respond(record)
|
||||
if record.save!
|
||||
respond_to { |format| format.js }
|
||||
else
|
||||
respond_to { |format| format.json { render json: record.errors, status: :unprocessable_entity } }
|
||||
end
|
||||
end
|
||||
|
||||
def invoice_class
|
||||
raise NotImplementedError
|
||||
end
|
||||
|
||||
def set_related_group_order(invoice)
|
||||
raise NotImplementedError
|
||||
end
|
||||
end
|
||||
|
|
@ -1,15 +1,12 @@
|
|||
|
||||
class OrdergroupInvoicesController < ApplicationController
|
||||
class OrdergroupInvoicesController < OrderInvoicesControllerBase
|
||||
include Concerns::SendGroupOrderInvoicePdf
|
||||
before_action :authenticate_finance
|
||||
# download create and new ordergroupinvoice
|
||||
# has multiple group orders and one ordergroup
|
||||
|
||||
def new
|
||||
@ordergroup_invoice = OrdergroupInvoice.new
|
||||
@ordergroup_invoice.payment_method = FoodsoftConfig[:ordergroup_invoices][:payment_method] || I18n.t('activerecord.attributes.ordergroup_invoice.payment_method')
|
||||
@ordergroup_invoice.sepa_sequence_type = params[:sepa_sequence_type]
|
||||
end
|
||||
# def new
|
||||
# @ordergroup_invoice = OrdergroupInvoice.new
|
||||
# @ordergroup_invoice.payment_method = FoodsoftConfig[:ordergroup_invoices][:payment_method] || I18n.t('activerecord.attributes.ordergroup_invoice.payment_method')
|
||||
# @ordergroup_invoice.sepa_sequence_type = params[:sepa_sequence_type]
|
||||
# end
|
||||
|
||||
def show
|
||||
@ordergroup_invoice = OrdergroupInvoice.find(params[:id])
|
||||
|
|
@ -67,18 +64,15 @@ class OrdergroupInvoicesController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
|
||||
def select_sepa_sequence_type
|
||||
@ordergroup_invoice = OrdergroupInvoice.find(params[:id])
|
||||
@multi_group_order = @ordergroup_invoice.multi_group_order
|
||||
return unless params[:sepa_sequence_type]
|
||||
|
||||
def send_all
|
||||
@multi_order = MultiOrder.find(params[:multi_order_id])
|
||||
@ordergroup_invoices = @multi_order.multi_group_orders.map(&:ordergroup_invoice).compact
|
||||
@ordergroup_invoices.each do |oi|
|
||||
oi.send_invoice
|
||||
end
|
||||
respond_to do |format|
|
||||
@ordergroup_invoice.sepa_sequence_type = params[:sepa_sequence_type]
|
||||
if @ordergroup_invoice.save!
|
||||
format.js
|
||||
else
|
||||
format.json { render json: @ordergroup_invoice.errors, status: :unprocessable_entity }
|
||||
format.html do
|
||||
redirect_to finance_order_index_path, notice: I18n.t('ordergroup_invoices.send_all.success')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -97,31 +91,6 @@ class OrdergroupInvoicesController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def toggle_paid
|
||||
@ordergroup_invoice = OrdergroupInvoice.find(params[:id])
|
||||
respond_to do |format|
|
||||
@ordergroup_invoice.paid = !@ordergroup_invoice.paid
|
||||
if @ordergroup_invoice.save!
|
||||
format.js
|
||||
else
|
||||
format.json { render json: @ordergroup_invoice.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def toggle_sepa_downloaded
|
||||
@ordergroup_invoice = OrdergroupInvoice.find(params[:id])
|
||||
@multi_order= @ordergroup_invoice.multi_group_order.multi_order
|
||||
respond_to do |format|
|
||||
@ordergroup_invoice.sepa_downloaded = !@ordergroup_invoice.sepa_downloaded
|
||||
if @ordergroup_invoice.save!
|
||||
format.js
|
||||
else
|
||||
format.json { render json: @ordergroup_invoice.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def toggle_all_paid
|
||||
@multi_order= MultiOrder.find(params[:multi_order_id])
|
||||
@ordergroup_invoices = @multi_order.multi_group_orders.map(&:ordergroup_invoice).compact
|
||||
|
|
@ -175,5 +144,12 @@ class OrdergroupInvoicesController < ApplicationController
|
|||
end
|
||||
end
|
||||
end
|
||||
protected
|
||||
def invoice_class
|
||||
OrdergroupInvoice
|
||||
end
|
||||
|
||||
def set_related_group_order(invoice)
|
||||
invoice.multi_group_order
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue