changing view for group_order_invoices
testing ui of goi restructuring
This commit is contained in:
parent
de6643722a
commit
90c5450525
52 changed files with 783 additions and 57 deletions
|
|
@ -15,6 +15,22 @@ class Admin::OrdergroupsController < Admin::BaseController
|
|||
@ordergroups = @ordergroups.page(params[:page]).per(@per_page)
|
||||
end
|
||||
|
||||
def update
|
||||
sepa_account_holder_params = params[:ordergroup][:sepa_account_holder_attributes]
|
||||
if sepa_account_holder_params&.[](:user_id).blank? || sepa_account_holder_params&.[](:group_id).blank?
|
||||
if sepa_account_holder_params&.[](:id).present?
|
||||
SepaAccountHolder.find(sepa_account_holder_params[:id]).destroy
|
||||
end
|
||||
params[:ordergroup].delete(:sepa_account_holder_attributes)
|
||||
end
|
||||
@ordergroup = Ordergroup.find(params[:id])
|
||||
if @ordergroup.update(params[:ordergroup])
|
||||
redirect_to admin_ordergroup_path(@ordergroup), notice: t('.notice')
|
||||
else
|
||||
redirect_to edit_admin_ordergroup_path(@ordergroup), alert: @ordergroup.errors.full_messages.join(', ')
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
@ordergroup = Ordergroup.find(params[:id])
|
||||
@ordergroup.mark_as_deleted
|
||||
|
|
|
|||
|
|
@ -7,6 +7,9 @@ class GroupOrderInvoicesController < ApplicationController
|
|||
raise RecordInvalid unless FoodsoftConfig[:contact][:tax_number]
|
||||
|
||||
respond_to do |format|
|
||||
format.html do
|
||||
send_group_order_invoice_pdf @group_order_invoice if FoodsoftConfig[:contact][:tax_number]
|
||||
end
|
||||
format.pdf do
|
||||
send_group_order_invoice_pdf @group_order_invoice if FoodsoftConfig[:contact][:tax_number]
|
||||
end
|
||||
|
|
@ -18,13 +21,14 @@ class GroupOrderInvoicesController < ApplicationController
|
|||
def create
|
||||
go = GroupOrder.find(params[:group_order])
|
||||
@order = go.order
|
||||
GroupOrderInvoice.find_or_create_by!(group_order_id: go.id)
|
||||
respond_to do |format|
|
||||
format.js
|
||||
begin
|
||||
GroupOrderInvoice.find_or_create_by!(group_order_id: go.id)
|
||||
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
|
||||
redirect_back fallback_location: root_path
|
||||
rescue StandardError => e
|
||||
redirect_back fallback_location: root_path, notice: 'Something went wrong', :alert => I18n.t('errors.general_msg', :msg => e)
|
||||
end
|
||||
|
||||
def destroy
|
||||
|
|
@ -53,6 +57,83 @@ class GroupOrderInvoicesController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def select_sepa_sequence_type
|
||||
@group_order_invoice = GroupOrderInvoice.find(params[:id])
|
||||
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
|
||||
return unless params[:sepa_sequence_type]
|
||||
@sepa_sequence_type = params[:sepa_sequence_type]
|
||||
@group_order_invoices.each do |goi|
|
||||
goi.sepa_sequence_type = params[:sepa_sequence_type]
|
||||
goi.save!
|
||||
end
|
||||
respond_to do |format|
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
def toggle_payed
|
||||
@group_order_invoice = GroupOrderInvoice.find(params[:id])
|
||||
respond_to do |format|
|
||||
@group_order_invoice.payed = !@group_order_invoice.payed
|
||||
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_payed
|
||||
@order = Order.find(params[:order_id])
|
||||
@group_order_invoices = @order.group_orders.map(&:group_order_invoice).compact
|
||||
@group_order_invoices.each do |goi|
|
||||
goi.payed = !ActiveRecord::Type::Boolean.new.deserialize(params[:payed])
|
||||
goi.save!
|
||||
end
|
||||
respond_to do |format|
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
def toggle_all_sepa_downloaded
|
||||
@order = Order.find(params[:order_id])
|
||||
@group_order_invoices = @order.group_orders.map(&:group_order_invoice).compact
|
||||
@group_order_invoices.each do |goi|
|
||||
goi.sepa_downloaded = !ActiveRecord::Type::Boolean.new.deserialize(params[:sepa_downloaded])
|
||||
goi.save!
|
||||
end
|
||||
respond_to do |format|
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
def download_all
|
||||
order = Order.find(params[:order_id])
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
# Normal ordering actions of members of order groups is handled by the OrderingController.
|
||||
class OrdersController < ApplicationController
|
||||
include Concerns::SendOrderPdf
|
||||
include SepaHelper
|
||||
|
||||
before_action :authenticate_pickups_or_orders
|
||||
before_action :authenticate_orders,
|
||||
|
|
@ -159,6 +160,69 @@ class OrdersController < ApplicationController
|
|||
render layout: false
|
||||
end
|
||||
|
||||
def collective_direct_debit
|
||||
if foodsoft_sepa_ready?
|
||||
case params[:mode]
|
||||
when 'all'
|
||||
group_orders = GroupOrder.where(order_id: params[:id])
|
||||
when 'selected'
|
||||
group_orders = GroupOrder.where(id: params[:group_order_ids])
|
||||
else
|
||||
redirect_to finance_order_index_path, alert: I18n.t('orders.collective_direct_debit.alert', ordergroup_names: '')
|
||||
end
|
||||
|
||||
@order = Order.find(params[:id])
|
||||
ordergroups = group_orders.map(&:ordergroup)
|
||||
|
||||
export_allowed = !ordergroups.map(&:sepa_possible?).include?(false) && !group_orders.map { |go| go.group_order_invoice.present? }.include?(false)
|
||||
group_order_ids = group_orders.map { |go| go.id if go.group_order_invoice.present? }
|
||||
|
||||
sepa_possible_ordergroup_names = ordergroups.map { |ordergroup| ordergroup.name unless ordergroup.sepa_possible? }.compact_blank
|
||||
|
||||
if export_allowed && group_orders.present?
|
||||
respond_to do |format|
|
||||
format.html do
|
||||
group_orders.map(&:group_order_invoice).each(&:mark_sepa_downloaded)
|
||||
collective_debit = OrderCollectiveDirectDebitXml.new(group_orders)
|
||||
send_data collective_debit.xml_string, filename: @order.name + '_Sammellastschrift' + '.xml', type: 'text/xml'
|
||||
rescue StandardError => e
|
||||
group_orders.map(&:group_order_invoice).each(&:unmark_sepa_downloaded)
|
||||
redirect_to finance_order_index_path, alert: I18n.t('orders.collective_direct_debit.alert', ordergroup_names: sepa_possible_ordergroup_names.join(', '))
|
||||
end
|
||||
format.xml do
|
||||
group_orders.map(&:group_order_invoice).each(&:mark_sepa_downloaded)
|
||||
collective_debit = OrderCollectiveDirectDebitXml.new(group_orders)
|
||||
send_data collective_debit.xml_string, filename: @order.name + '_Sammellastschrift' + '.xml', type: 'text/xml'
|
||||
rescue SEPA::Error => e
|
||||
group_orders.map(&:group_order_invoice).each(&:unmark_sepa_downloaded)
|
||||
render json: { error: I18n.t('orders.collective_direct_debit.alert', ordergroup_names: sepa_possible_ordergroup_names.join(', ')) }
|
||||
end
|
||||
format.js
|
||||
end
|
||||
else
|
||||
respond_to do |format|
|
||||
format.html do
|
||||
redirect_to finance_order_index_path, alert: I18n.t('orders.collective_direct_debit.alert', ordergroup_names: sepa_possible_ordergroup_names.join(', '))
|
||||
end
|
||||
format.xml do
|
||||
render json: { error: I18n.t('orders.collective_direct_debit.alert', ordergroup_names: sepa_possible_ordergroup_names.join(', ')) }
|
||||
end
|
||||
format.js
|
||||
end
|
||||
end
|
||||
else
|
||||
respond_to do |format|
|
||||
format.html do
|
||||
redirect_to finance_order_index_path, alert: "Wichtige SEPA Konfiguration in Administration >> Einstellungen >> Finanzen nicht gesetzt!"
|
||||
end
|
||||
format.xml do
|
||||
redirect_to finance_order_index_path, alert: "Wichtige SEPA Konfiguration in Administration >> Einstellungen >> Finanzen nicht gesetzt!"
|
||||
end
|
||||
format.js
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def update_order_amounts
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue