diff --git a/app/views/group_orders/edit.html.haml b/app/views/group_orders/edit.html.haml index 5569c4a1..86842fe7 100644 --- a/app/views/group_orders/edit.html.haml +++ b/app/views/group_orders/edit.html.haml @@ -1,2 +1 @@ -#group-order-form - = render 'form' \ No newline at end of file += render 'form' \ No newline at end of file diff --git a/app/views/group_orders/new.html.haml b/app/views/group_orders/new.html.haml index 418a3b93..bcc58327 100644 --- a/app/views/group_orders/new.html.haml +++ b/app/views/group_orders/new.html.haml @@ -1,2 +1 @@ -#group-order-form - = render 'form' += render 'form' diff --git a/plugins/automatic_invoices/app/overrides/controllers/finance/balancing_controller.rb b/plugins/automatic_invoices/app/overrides/controllers/finance/balancing_controller.rb new file mode 100644 index 00000000..b62734b8 --- /dev/null +++ b/plugins/automatic_invoices/app/overrides/controllers/finance/balancing_controller.rb @@ -0,0 +1,27 @@ +if FoodsoftAutomaticInvoices.enabled? + Finance::BalancingController.class_eval do + def close + @order = Order.find(params[:id]) + @type = FinancialTransactionType.find_by_id(params.permit(:type)[:type]) + @order.close!(@current_user, @type) + note = t('finance.balancing.close.notice') + if @order.closed? + alert = t('finance.balancing.close.alert') + if FoodsoftConfig[:group_order_invoices]&.[](:use_automatic_invoices) + @order.group_orders.each do |go| + alert = t('finance.balancing.close.settings_not_set') + 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 + alert ||= t('finance.balancing.close.alert') + redirect_to finance_order_index_url, notice: note + rescue => error + redirect_to new_finance_order_url(order_id: @order.id), notice: note, alert: alert, msg: error.message + end + end +end diff --git a/plugins/automatic_invoices/app/overrides/group_orders/edit/fix_hover.html.haml.deface b/plugins/automatic_invoices/app/overrides/group_orders/edit/fix_hover.html.haml.deface deleted file mode 100644 index a867b3dc..00000000 --- a/plugins/automatic_invoices/app/overrides/group_orders/edit/fix_hover.html.haml.deface +++ /dev/null @@ -1,3 +0,0 @@ -/ replace_contents "#group-order-form" -- if FoodsoftAutomaticInvoices.enabled? - = render "form_override" \ No newline at end of file diff --git a/plugins/automatic_invoices/app/overrides/group_orders/new/fix_hover.html.haml.deface b/plugins/automatic_invoices/app/overrides/group_orders/new/fix_hover.html.haml.deface deleted file mode 100644 index a867b3dc..00000000 --- a/plugins/automatic_invoices/app/overrides/group_orders/new/fix_hover.html.haml.deface +++ /dev/null @@ -1,3 +0,0 @@ -/ replace_contents "#group-order-form" -- if FoodsoftAutomaticInvoices.enabled? - = render "form_override" \ No newline at end of file diff --git a/plugins/automatic_invoices/app/overrides/mailers/mailer_override.rb b/plugins/automatic_invoices/app/overrides/mailers/mailer_override.rb index e38dec85..9102d960 100644 --- a/plugins/automatic_invoices/app/overrides/mailers/mailer_override.rb +++ b/plugins/automatic_invoices/app/overrides/mailers/mailer_override.rb @@ -1,6 +1,11 @@ if FoodsoftAutomaticInvoices.enabled? Mailer.class_eval do # Sends automatically generated invoicesfor group orders to ordergroup members + def add_group_order_invoice_attachments(group_order_invoice) + attachment_name = group_order_invoice.name + '.pdf' + attachments[attachment_name] = GroupOrderInvoicePdf.new(group_order_invoice.load_data_for_invoice).to_pdf + end + def group_order_invoice(group_order_invoice, user) @user = user @group_order_invoice = group_order_invoice diff --git a/plugins/automatic_invoices/app/views/group_orders/_form_override.html.haml b/plugins/automatic_invoices/app/views/group_orders/_form_override.html.haml deleted file mode 100644 index ca42a203..00000000 --- a/plugins/automatic_invoices/app/views/group_orders/_form_override.html.haml +++ /dev/null @@ -1,181 +0,0 @@ -- content_for :javascript do - - group_balance = FoodsoftConfig[:charge_members_manually] ? @ordering_data[:account_balance] : @ordering_data[:available_funds] - :javascript - $(function() { - #{data_to_js(@ordering_data)} - setGroupBalance(#{group_balance}); - setMinimumBalance(#{FoodsoftConfig[:minimum_balance] or 0}); - setToleranceBehaviour(#{FoodsoftConfig[:tolerance_is_costly]}); - setStockit(#{@order.stockit?}); - // create List for search-feature (using list.js, http://listjs.com) - var listjsResetPlugin = ['reset', {highlightClass: 'btn-primary'}]; - var listjsDelayPlugin = ['delay', {delayedSearchTime: 500}]; - new List(document.body, { - valueNames: ['name'], - engine: 'unlist', - plugins: [listjsResetPlugin, listjsDelayPlugin], - // make large pages work too (as we don't have paging - articles may disappear!) - page: 10000, - indexAsync: true - }); - }); - -= stylesheet_link_tag 'group_orders' -- title t('.title'), false - -.row-fluid - .well.pull-left - = close_button :alert - %h2= @order.name - %dl.dl-horizontal - - unless @order.note.blank? - %dt= heading_helper Order, :note - %dd= @order.note - %dt= heading_helper Order, :created_by - %dd= show_user_link(@order.created_by) - %dt= heading_helper Order, :ends - %dd= format_time(@order.ends) - %dt= heading_helper Order, :pickup - %dd= format_date(@order.pickup) - - unless @order.stockit? or @order.supplier.min_order_quantity.blank? - %dt= heading_helper Supplier, :min_order_quantity, short: true - %dd= @order.supplier.min_order_quantity - %dt= t '.sum_amount' - %dd= number_to_currency @order.sum - - unless @group_order.new_record? - %dt= heading_helper GroupOrder, :updated_by - %dd - = show_user(@group_order.updated_by) - (#{format_time(@group_order.updated_on)}) - %dt= heading_helper Ordergroup, :account_balance - %dd= number_to_currency(@ordering_data[:account_balance]) - - unless FoodsoftConfig[:charge_members_manually] - %dt= heading_helper Ordergroup, :available_funds - %dd= number_to_currency(@ordering_data[:available_funds]) - - .well.pull-right - = close_button :alert - = render 'switch_order', current_order: @order - -.row-fluid - .well.clear - .form-search - .input-append - = text_field_tag :article, params[:article], placeholder: t('.search_article'), class: 'search-query delayed-search resettable' - %button.add-on.btn.reset-search{:type => :button, :title => t('.reset_article_search')} - %i.icon.icon-remove - -= form_for @group_order do |f| - = f.hidden_field :lock_version - = f.hidden_field :order_id - = f.hidden_field :updated_by_user_id - = f.hidden_field :ordergroup_id - %table.table - %thead - %tr - %th= heading_helper Article, :name - - if @order.stockit? - %th{style: 'width:120px'}= heading_helper StockArticle, :supplier - %th{style: "width:13px;"} - %th{style: "width:4.5em;"}= t '.price' - %th{style: "width:4.5em;"}= heading_helper Article, :unit - - unless @order.stockit? - %th{style: "width:70px;"}= heading_helper OrderArticle, :missing_units, short: true - %th#col_required= heading_helper GroupOrderArticle, :quantity - %th#col_tolerance= heading_helper GroupOrderArticle, :tolerance - - else - %th(style="width:20px")= heading_helper StockArticle, :available - %th#col_required= heading_helper GroupOrderArticle, :quantity - %th{style: "width:15px;"}= heading_helper GroupOrderArticle, :total_price - %tbody.list - - @order.articles_grouped_by_category.each do |category, order_articles| - %tr.list-heading.article-category - %td - = category - %i.icon-tag - %td{colspan: "9"} - - order_articles.each do |order_article| - %tr{class: "#{cycle('even', 'odd', name: 'articles')} order-article #{get_missing_units_css_class(@ordering_data[:order_articles][order_article.id][:missing_units])}", valign: "top", tabindex: "0"} - %td.name= order_article.article.name - - if @order.stockit? - %td= truncate order_article.article.supplier.name, length: 15 - %td= h order_article.article.origin - %td= number_to_currency(@ordering_data[:order_articles][order_article.id][:price]) - %td= order_article.article.unit - %td - - if @order.stockit? - = @ordering_data[:order_articles][order_article.id][:quantity_available] - - else - %span{id: "missing_units_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:missing_units] - - %td.quantity - %input{id: "q_#{order_article.id}", name: "group_order[group_order_articles_attributes][#{order_article.id}][quantity]", type: "hidden", value: @ordering_data[:order_articles][order_article.id][:quantity], 'data-min' => (@ordering_data[:order_articles][order_article.id][:quantity] if @order.boxfill?), 'data-max' => (@ordering_data[:order_articles][order_article.id][:quantity]+@ordering_data[:order_articles][order_article.id][:missing_units] if @order.boxfill?)}/ - %span.used{id: "q_used_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:used_quantity] - + - %span.unused{id: "q_unused_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:quantity] - @ordering_data[:order_articles][order_article.id][:used_quantity] - .btn-group - %a.btn.btn-ordering{'data-increase_quantity' => order_article.id} - %i.icon-plus - %a.btn.btn-ordering{'data-decrease_quantity' => order_article.id} - %i.icon-minus - - %td.tolerance{style: ('display:none' if @order.stockit?)} - %input{id: "t_#{order_article.id}", name: "group_order[group_order_articles_attributes][#{order_article.id}][tolerance]", type: "hidden", value: @ordering_data[:order_articles][order_article.id][:tolerance], 'data-min' => (@ordering_data[:order_articles][order_article.id][:tolerance] if @order.boxfill?)}/ - - if (@ordering_data[:order_articles][order_article.id][:unit] > 1) - %span.used{id: "t_used_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:used_tolerance] - + - %span.unused{id: "t_unused_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:tolerance] - @ordering_data[:order_articles][order_article.id][:used_tolerance] - .btn-group - %a.btn.btn-ordering{'data-increase_tolerance' => order_article.id} - %i.icon-plus - %a.btn.btn-ordering{'data-decrease_tolerance' => order_article.id} - %i.icon-minus - - %td{id: "td_price_#{order_article.id}", style: "text-align:right; padding-right:10px; width:4em"} - %span{id: "price_#{order_article.id}_display"}= number_to_currency(@ordering_data[:order_articles][order_article.id][:total_price]) - .article-info - .article-name= order_article.article.name - .pull-right - = t('.units_full') + ':' - %span{id: "units_#{order_article.id}"}= order_article.units_to_order - %br/ - = t('.units_total') + ':' - %span{id: "q_total_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:quantity] + @ordering_data[:order_articles][order_article.id][:others_quantity] - %br/ - = t('.total_tolerance') + ':' - %span{id: "t_total_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:tolerance] + @ordering_data[:order_articles][order_article.id][:others_tolerance] - %br/ - .pull-left - #{heading_helper Article, :manufacturer}: #{order_article.article.manufacturer} - %br/ - #{heading_helper Article, :units}: #{@order.stockit? ? order_article.article.quantity_available : @ordering_data[:order_articles][order_article.id][:unit]} * #{h order_article.article.unit} - %br/ - #{heading_helper Article, :note}: #{order_article.article.note} - %br/ - #order-footer-override - #info-box - #total-sum - %table - %tr - %td= t('.total_sum_amount') + ':' - %td.currency - %span#total_price= number_to_currency(@group_order.price) - %tr - - if FoodsoftConfig[:charge_members_manually] - - old_balance = @ordering_data[:account_balance] - %td= heading_helper(Ordergroup, :account_balance) + ':' - %td.currency= number_to_currency(@ordering_data[:account_balance]) - - else - - old_balance = @ordering_data[:available_funds] - %td= heading_helper(Ordergroup, :available_funds) + ':' - %td.currency= number_to_currency(@ordering_data[:available_funds]) - %tr - %td= t('.new_funds') + ':' - %td.currency - %strong - %span#new_balance= number_to_currency(old_balance - @group_order.price) - #order-button - = submit_tag( t('.action_save'), id: 'submit_button', class: 'btn btn-primary' ) - #{link_to t('ui.or_cancel'), group_orders_path} - %input#total_balance{name: "total_balance", type: "hidden", value: @ordergroup.account_balance - @group_order.price}/ - %input{name: "version", type: "hidden", value: @version}/ diff --git a/plugins/automatic_invoices/config/locales/de.yml b/plugins/automatic_invoices/config/locales/de.yml index c09ced5c..fcc338a2 100644 --- a/plugins/automatic_invoices/config/locales/de.yml +++ b/plugins/automatic_invoices/config/locales/de.yml @@ -1640,6 +1640,7 @@ de: starts: läuft von %{starts} starts_ends: läuft von %{starts} bis %{ends} description2: "%{ordergroups} haben %{article_count} Artikel mit einem Gesamtwert von %{net_sum} / %{gross_sum} (netto / brutto + fc + Pfand) bestellt." + description3: " Zuzüglich Pfand %{net_deposit} / %{deposit} (netto / brutto)." group_orders: 'Gruppenbestellungen:' search_placeholder: articles: Suche nach Artikeln ...