diff --git a/app/controllers/finance/financial_links_controller.rb b/app/controllers/finance/financial_links_controller.rb index d48f859f..cdb9b556 100644 --- a/app/controllers/finance/financial_links_controller.rb +++ b/app/controllers/finance/financial_links_controller.rb @@ -36,7 +36,7 @@ class Finance::FinancialLinksController < Finance::BaseController end def create - @financial_link = FinancialLink.new + @financial_link = FinancialLink.first_unused_or_create if params[:bank_transaction] then bank_transaction = BankTransaction.find(params[:bank_transaction]) bank_transaction.update_attribute :financial_link, @financial_link diff --git a/app/models/financial_link.rb b/app/models/financial_link.rb index 8f8183fc..9a6d9714 100644 --- a/app/models/financial_link.rb +++ b/app/models/financial_link.rb @@ -4,6 +4,12 @@ class FinancialLink < ApplicationRecord has_many :invoices scope :incomplete, -> { with_full_sum.where.not('full_sums.full_sum' => 0) } + scope :unused, -> { + includes(:bank_transactions, :financial_transactions, :invoices) + .where(bank_transactions: { financial_link_id: nil }) + .where(financial_transactions: { financial_link_id: nil }) + .where(invoices: { financial_link_id: nil}) + } scope :with_full_sum, -> { select(:id, :note, :full_sum).joins(<<-SQL) LEFT JOIN ( @@ -27,4 +33,8 @@ class FinancialLink < ApplicationRecord ) full_sums ON full_sums.id = financial_links.id SQL } + + def self.first_unused_or_create + unused.first || create + end end diff --git a/app/views/finance/ordergroups/index.html.haml b/app/views/finance/ordergroups/index.html.haml index 9fc6f438..538e5ecd 100644 --- a/app/views/finance/ordergroups/index.html.haml +++ b/app/views/finance/ordergroups/index.html.haml @@ -3,6 +3,8 @@ - content_for :actionbar do = link_to t('.show_all'), finance_transactions_path, class: 'btn' = link_to t('.show_foodcoop'), finance_foodcoop_financial_transactions_path, class: 'btn' + - if FinancialLink.any? + = link_to t('.new_financial_link'), finance_links_path, method: :post, class: 'btn' = link_to t('.new_transaction'), finance_new_transaction_collection_path, class: 'btn btn-primary' .well.well-small diff --git a/config/locales/de.yml b/config/locales/de.yml index 5a5dd258..864de190 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -955,6 +955,7 @@ de: title: Unbezahlte Rechnungen ordergroups: index: + new_financial_link: Neuer Finanzlink new_transaction: Neue Überweisungen eingeben show_all: Alle Transaktionen show_foodcoop: Foodcoop Transaktionen diff --git a/config/locales/en.yml b/config/locales/en.yml index 59633649..c82409e0 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -956,6 +956,7 @@ en: title: Unpaid invoices ordergroups: index: + new_financial_link: New financial link new_transaction: Add new transactions show_all: All transactions show_foodcoop: Foodcoop transaktions