wip multi orders
This commit is contained in:
parent
fd769509af
commit
f676497e43
29 changed files with 939 additions and 107 deletions
|
|
@ -1,6 +1,7 @@
|
|||
class Finance::BalancingController < Finance::BaseController
|
||||
def index
|
||||
@orders = Order.finished.page(params[:page]).per(@per_page).order('ends DESC')
|
||||
@multi_orders = MultiOrder.includes(:orders, :group_orders).page(params[:page]).per(@per_page).order('ends DESC')
|
||||
@orders = Order.finished.non_multi_order.page(params[:page]).per(@per_page).order('ends DESC')
|
||||
end
|
||||
|
||||
def new
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ class GroupOrderInvoicesController < ApplicationController
|
|||
gos.each do |go|
|
||||
goi = GroupOrderInvoice.find_or_create_by!(group_order_id: go.id)
|
||||
goi.invoice_date = invoice_date
|
||||
goi.invoice_number = goi.generate_invoice_number(1)
|
||||
goi.invoice_number = goi.generate_invoice_number(GroupOrderInvoice, 1)
|
||||
goi.save!
|
||||
end
|
||||
respond_to do |format|
|
||||
|
|
|
|||
77
app/controllers/multi_orders_controller.rb
Normal file
77
app/controllers/multi_orders_controller.rb
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
class MultiOrdersController < ApplicationController
|
||||
before_action :set_multi_order, only: [:generate_ordergroup_invoices]
|
||||
def create
|
||||
orders = Order.where(id: multi_order_params[:order_ids_for_multi_order])
|
||||
|
||||
unclosed_orders = orders.select { |order| order.closed? == false }
|
||||
multi_orders = orders.select { |order| order.multi_order_id.present? }
|
||||
|
||||
if multi_order_params[:multi_order_ids_for_multi_multi_order].present?
|
||||
#TODO: do the i18n and add a test
|
||||
flash[:alert] = "Du kannst keine Multi-Bestellungen in eine Multi-Multi-Bestellung umwandeln."
|
||||
redirect_to finance_order_index_path
|
||||
return
|
||||
end
|
||||
if multi_orders.any? || unclosed_orders.any?
|
||||
#TODO: do the i18n and add a test
|
||||
flash[:alert] = "Die Bestellung ist noch nicht abgeschlossen oder ist bereits Teil einer Multi-Bestellung."
|
||||
redirect_to finance_order_index_path
|
||||
return
|
||||
end
|
||||
|
||||
begin
|
||||
@multi_order = MultiOrder.new
|
||||
@multi_order.orders = orders
|
||||
@multi_order.ends = orders.map(&:ends).max
|
||||
@multi_order.save!
|
||||
puts "
|
||||
" + "______________" + "
|
||||
" + "______________" + "
|
||||
" + "______________" + "
|
||||
" + "#{@multi_order.errors.inspect}" + "
|
||||
" + "______________"+ "
|
||||
" + "______________"+ "
|
||||
" + "______________"
|
||||
|
||||
#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
|
||||
end
|
||||
redirect_to finance_order_index_path
|
||||
rescue ActiveRecord::RecordInvalid => e
|
||||
flash[:alert] = t('errors.general_msg', msg: e.message)
|
||||
redirect_to finance_order_index_path
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def generate_ordergroup_invoices
|
||||
@multi_order.group_orders.group_by(&:ordergroup_id).each do |_, group_orders|
|
||||
OrdergroupInvoice.create!(group_orders: group_orders)
|
||||
end
|
||||
redirect_to finance_order_index_path, notice: t('finance.balancing.close.notice')
|
||||
rescue StandardError => e
|
||||
redirect_to finance_order_index_path, alert: t('errors.general_msg', msg: e.message)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_multi_order
|
||||
@multi_order = MultiOrder.find(params[:id])
|
||||
end
|
||||
|
||||
def multi_order_params
|
||||
params.permit(:id, order_ids_for_multi_order: [], multi_order_ids_for_multi_multi_order: [])
|
||||
end
|
||||
end
|
||||
56
app/controllers/ordergroup_invoices_controller.rb
Normal file
56
app/controllers/ordergroup_invoices_controller.rb
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
class OrdergroupInvoicesController < ApplicationController
|
||||
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 show
|
||||
@ordergroup_invoice = OrdergroupInvoice.find(params[:id])
|
||||
raise RecordInvalid unless FoodsoftConfig[:contact][:tax_number]
|
||||
|
||||
respond_to do |format|
|
||||
format.html do
|
||||
send_group_order_invoice_pdf @ordergroup_invoice if FoodsoftConfig[:contact][:tax_number]
|
||||
end
|
||||
format.pdf do
|
||||
send_group_order_invoice_pdf @ordergroup_invoice if FoodsoftConfig[:contact][:tax_number]
|
||||
end
|
||||
end
|
||||
rescue ActiveRecord::RecordInvalid => e
|
||||
redirect_back fallback_location: root_path, notice: 'Something went wrong', alert: I18n.t('errors.general_msg', msg: "#{e} " + I18n.t('errors.check_tax_number'))
|
||||
end
|
||||
|
||||
def create
|
||||
gos = GroupOrder.where(id: params[:group_order_ids])
|
||||
begin
|
||||
OrdergroupInvoice.create!(group_order_ids: gos)
|
||||
respond_to do |format|
|
||||
format.js
|
||||
end
|
||||
rescue StandardError => e
|
||||
redirect_back fallback_location: root_path, notice: 'Something went wrong', :alert => I18n.t('errors.general_msg', :msg => e)
|
||||
end
|
||||
end
|
||||
|
||||
def create_multiple
|
||||
invoice_date = params[:ordergroup_invoce][:invoice_date]
|
||||
multi_order_id = params[:ordergroup_invoce][:multi_order_id]
|
||||
@multi_order = MultiOrder.find(multi_order_id)
|
||||
multi_group_orders = MultiGroupOrder.where("multi_order_id = ?", multi_order_id)
|
||||
mutli_group_orders.each do |multi_group_order|
|
||||
ordergroup_invoice = OrdergroupInvoice.find_or_create_by!(multi_group_order: multi_group_order)
|
||||
ordergroup_invoice.invoice_date = invoice_date
|
||||
ordergroup_invoice.invoice_number = ordergroup_invoice.generate_invoice_number(OrdergroupInvoice, 1)
|
||||
ordergroup_invoice.save!
|
||||
end
|
||||
respond_to do |format|
|
||||
format.js
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue