add specs

This commit is contained in:
viehlieb 2025-05-22 12:27:25 +02:00
parent e902aa0d5a
commit 45db0575b1
46 changed files with 714 additions and 238 deletions

View file

@ -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

View file

@ -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]

View file

@ -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

View file

@ -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

View 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

View file

@ -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