2023-07-24 10:50:35 +02:00
class GroupOrderInvoicesController < ApplicationController
include Concerns :: SendGroupOrderInvoicePdf
before_action :authenticate_finance
def show
begin
@group_order_invoice = GroupOrderInvoice . find ( params [ :id ] )
if FoodsoftConfig [ :contact ] [ :tax_number ]
respond_to do | format |
format . pdf do
send_group_order_invoice_pdf @group_order_invoice if FoodsoftConfig [ :contact ] [ :tax_number ]
end
end
else
raise RecordInvalid
end
rescue ActiveRecord :: RecordInvalid = > error
redirect_back fallback_location : root_path , notice : 'Something went wrong' , alert : I18n . t ( 'errors.general_msg' , msg : " #{ error } " + I18n . t ( 'errors.check_tax_number' ) )
end
end
def destroy
goi = GroupOrderInvoice . find ( params [ :id ] )
@order = goi . group_order . order
goi . destroy
respond_to do | format |
format . js
format . json { head :no_content }
end
end
def create_multiple
invoice_date = params [ :group_order_invoice ] [ :invoice_date ]
order_id = params [ :group_order_invoice ] [ :order_id ]
@order = Order . find ( order_id )
gos = GroupOrder . where ( " order_id = ? " , order_id )
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 . save!
end
respond_to do | format |
format . js
end
end
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
end
redirect_back fallback_location : root_path
rescue = > error
redirect_back fallback_location : root_path , notice : 'Something went wrong' , :alert = > I18n . t ( 'errors.general_msg' , :msg = > error )
end
2023-09-21 21:09:50 +02:00
def download_all
order = Order . find ( params [ :order_id ] )
invoices = order . group_orders . map ( & :group_order_invoice )
pdf = { }
temp_file = Tempfile . new ( " all_invoices_for_order_ #{ order . id } .zip " )
Zip :: File . open ( temp_file . path , Zip :: File :: CREATE ) do | zipfile |
invoices . each do | invoice |
pdf = create_invoice_pdf ( invoice )
invoice_file = Tempfile . new ( " #{ pdf . filename } " )
File . open ( invoice_file . path , 'w:ASCII-8BIT' ) do | file |
file . write ( pdf . to_pdf )
end
zipfile . add ( " #{ pdf . filename } " , invoice_file . path ) unless zipfile . find_entry ( " #{ pdf . filename } " )
end
end
zip_data = File . read ( temp_file . path )
respond_to do | format |
format . html {
send_data ( zip_data , type : 'application/zip' , filename : " #{ l order . ends , format : :file } - #{ order . supplier . name } - #{ order . id } .zip " , disposition : 'attachment' )
}
end
end
2023-07-24 10:50:35 +02:00
end