Add FinacialTransaction create_collection for ordergroup custom fields

Custom fields of an ordergroup can set financial_transaction_source to
true, to act as an source for a new collection of FinacialTransaction.

A typical usecase would be a variable membership fee, which will be stored
in a custom field on the ordergroup. When a new membership period begins
a collection with all membership fees can be created with one click.
This commit is contained in:
Patrick Gansterer 2019-11-11 12:18:00 +01:00
parent d73c206e29
commit a3defc5463
4 changed files with 32 additions and 6 deletions

View file

@ -3,6 +3,7 @@
- content_for :javascript do
:javascript
var ordergroup = $($.parseHTML("#{escape_javascript(render('ordergroup'))}"));
var ordergroups = #{raw @ordergroups.to_json};
$(function() {
$(document).on('touchclick', 'a[data-remove-transaction]', function() {
@ -16,16 +17,27 @@
});
$(document).on('touchclick', 'a[data-add-all-ordergroups]', function() {
var value = prompt("#{escape_javascript(heading_helper(FinancialTransaction, :amount))}:");
if (value === null)
return false;
var customField = $(this).data('custom-field');
var value;
if (!customField) {
value = prompt("#{escape_javascript(heading_helper(FinancialTransaction, :amount))}:");
if (value === null) {
return false;
}
}
$('#ordergroups > tbody > tr').remove();
var options = ordergroup.find('td > select > option').each(function() {
for (var id in ordergroups) {
if (!ordergroups.hasOwnProperty(id)) {
continue;
}
if (customField) {
value = ordergroups[id][customField];
}
var row = ordergroup.clone();
row.find('td > input').val(value);
row.find('td > select').val(this.value);
row.find('td > select').val(id);
row.appendTo('#ordergroups');
});
}
return false;
});
});
@ -61,6 +73,10 @@
%label
= check_box_tag :create_financial_link, true, params[:create_financial_link]
= t('.create_financial_link')
%p
- Ordergroup.custom_fields.each do |f|
- if f[:financial_transaction_source]
= link_to t('.add_all_ordergroups_custom_field', label: f[:label]), '#', 'data-custom-field' => f[:name], 'data-add-all-ordergroups' => true, class: 'btn'
.form-actions
= submit_tag t('.save'), class: 'btn btn-primary'
= link_to t('ui.or_cancel'), finance_ordergroups_path