add functionality in views and controllers for generation of group order invoices

This commit is contained in:
Viehlieb 2021-12-23 01:51:44 +01:00
parent 817c680c28
commit 50017fefa8
8 changed files with 41 additions and 4 deletions

View file

@ -81,9 +81,21 @@ class Finance::BalancingController < Finance::BaseController
@order = Order.find(params[:id]) @order = Order.find(params[:id])
@type = FinancialTransactionType.find_by_id(params.permit(:type)[:type]) @type = FinancialTransactionType.find_by_id(params.permit(:type)[:type])
@order.close!(@current_user, @type) @order.close!(@current_user, @type)
redirect_to finance_order_index_url, notice: t('finance.balancing.close.notice') note = t('finance.balancing.close.notice')
rescue => error if @order.closed?
redirect_to new_finance_order_url(order_id: @order.id), alert: t('finance.balancing.close.alert', message: error.message) if FoodsoftConfig[:group_order_invoices]&.[](:use) && FoodsoftConfig[:contact]&.[](:tax_number)
@order.group_orders.each do |go|
goi = GroupOrderInvoice.find_or_create_by!(group_order_id: go.id)
if goi.save!
NotifyGroupOrderInvoiceJob.perform_later(goi)
note = t('finance.balancing.close.notice_mail')
end
end
end
end
redirect_to finance_order_index_url, notice: note
rescue => error
redirect_to new_finance_order_url(order_id: @order.id), notice: note, alert: t('finance.balancing.close.alert', message: error.message)
end end
# Close the order directly, without automaticly updating ordergroups account balances # Close the order directly, without automaticly updating ordergroups account balances

View file

@ -9,6 +9,8 @@
%th= t('.end') %th= t('.end')
%th= t('.state') %th= t('.state')
%th= heading_helper Order, :updated_by %th= heading_helper Order, :updated_by
%th= heading_helper GroupOrderInvoice, :name
%th
%th %th
%tbody %tbody
- @orders.each do |order| - @orders.each do |order|
@ -17,6 +19,14 @@
%td=h format_time(order.ends) unless order.ends.nil? %td=h format_time(order.ends) unless order.ends.nil?
%td= order.closed? ? t('.cleared', amount: number_to_currency(order.foodcoop_result)) : t('.ended') %td= order.closed? ? t('.cleared', amount: number_to_currency(order.foodcoop_result)) : t('.ended')
%td= show_user(order.updated_by) %td= show_user(order.updated_by)
%td{id: "generate-invoice#{order.id}"}
- if order.closed?
-if FoodsoftConfig[:contact][:tax_number]
= render :partial => 'group_order_invoices/links', locals:{order: order}
-else
= I18n.t('activerecord.attributes.group_order_invoice.tax_number_not_set')
- else
= t('orders.index.not_closed')
%td %td
- unless order.closed? - unless order.closed?
- if current_user.role_orders? - if current_user.role_orders?

View file

@ -0,0 +1,11 @@
.row
- order.group_orders.includes([:group_order_invoice, :ordergroup]).each do |go|
.row
= label_tag go.ordergroup.name
- if go.group_order_invoice
= link_to I18n.t('activerecord.attributes.group_order_invoice.links.download'), group_order_invoice_path(go.group_order_invoice, :format => 'pdf'), class: 'btn btn-small'
= link_to I18n.t('activerecord.attributes.group_order_invoice.links.delete'), go.group_order_invoice, method: :delete, class: 'btn btn-danger btn-small', remote: true
- else
= button_to I18n.t('activerecord.attributes.group_order_invoice.links.generate'), group_order_invoices_path(:method => :post, group_order: go) ,class: 'btn btn-small', params: {id: order.id}, remote: true
%br

View file

@ -0,0 +1 @@
$("#generate-invoice<%= params[:id] %>").html("<%= escape_javascript(render partial: 'links', locals: {order: @order}) %>");

View file

@ -0,0 +1 @@
$("#generate-invoice<%= @order.id %>").html("<%= escape_javascript(render partial: 'links', locals: {order: @order}) %>");

View file

@ -0,0 +1 @@
pdf.text "Hello World"

View file

@ -139,7 +139,7 @@ Rails.application.routes.draw do
end end
end end
end end
resources :group_order_invoices
resources :article_categories resources :article_categories
########### Finance ########### Finance
@ -172,6 +172,7 @@ Rails.application.routes.draw do
get :unpaid, on: :collection get :unpaid, on: :collection
end end
resources :links, controller: 'financial_links', only: [:create, :show] do resources :links, controller: 'financial_links', only: [:create, :show] do
collection do collection do
get :incomplete get :incomplete