move to ajax function for every direct debit xml download
This commit is contained in:
parent
636aad0b3e
commit
f98d083647
23 changed files with 158 additions and 128 deletions
|
|
@ -1,6 +1,6 @@
|
|||
- if foodsoft_sepa_ready?
|
||||
= link_to 'Sammellastschrift für alle (.xml)', collective_direct_debit_order_path(id: order.id, mode: 'all'), class: 'btn btn-block'
|
||||
= link_to 'Sammellastschrift für ausgewählt (.xml)', collective_direct_debit_order_path(id: order.id, mode: 'selected'), class: 'btn btn-block', data: { turbolinks: false }, id: "collective-direct-debit-link-#{order.id}"
|
||||
= link_to 'Sammellastschrift für alle (.xml)', collective_direct_debit_order_path(id: order.id, mode: 'all'), class: 'btn btn-block', data: { turbolinks: false }, id: "collective-direct-debit-link-all-#{order.id}"
|
||||
= link_to 'Sammellastschrift für ausgewählt (.xml)', collective_direct_debit_order_path(id: order.id, mode: 'selected'), class: 'btn btn-block', data: { turbolinks: false }, id: "collective-direct-debit-link-selected-#{order.id}"
|
||||
- else
|
||||
%i
|
||||
= t('activerecord.attributes.group_order_invoice.links.sepa_not_ready')
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
%thead
|
||||
%tr
|
||||
%th=I18n.t('activerecord.attributes.group_order_invoice.links.ordergroup')
|
||||
%th=I18n.t('activerecord.attributes.group_order_invoice.links.payed')
|
||||
%th=I18n.t('activerecord.attributes.group_order_invoice.links.paid')
|
||||
%th=I18n.t('activerecord.attributes.group_order_invoice.links.sepa_downloaded')
|
||||
%th=I18n.t('activerecord.attributes.group_order_invoice.links.sepa_sequence_type')
|
||||
%th=I18n.t('activerecord.attributes.group_order_invoice.links.sepa_select')
|
||||
|
|
@ -27,8 +27,8 @@
|
|||
%tr.order-row
|
||||
%td= link_to go.ordergroup.name, edit_admin_ordergroup_path(go.ordergroup)
|
||||
%td
|
||||
.div{id: "payed_#{go.group_order_invoice.id}"}
|
||||
= render :partial => "group_order_invoices/toggle_payed", locals: { group_order_invoice: go.group_order_invoice }
|
||||
.div{id: "paid_#{go.group_order_invoice.id}"}
|
||||
= render :partial => "group_order_invoices/toggle_paid", locals: { group_order_invoice: go.group_order_invoice }
|
||||
%td
|
||||
.div{id: "sepa_downloaded_#{go.group_order_invoice.id}"}
|
||||
= render :partial => "group_order_invoices/toggle_sepa_downloaded", locals: { group_order_invoice: go.group_order_invoice }
|
||||
|
|
@ -55,8 +55,8 @@
|
|||
%tr.order-row
|
||||
%td= I18n.t('activerecord.attributes.group_order_invoice.links.actions_for_all')
|
||||
%td
|
||||
.div{id: "toggle_all_payed_#{order.id}"}
|
||||
= render :partial => 'group_order_invoices/toggle_all_payed', locals: { order: order }
|
||||
.div{id: "toggle_all_paid_#{order.id}"}
|
||||
= render :partial => 'group_order_invoices/toggle_all_paid', locals: { order: order }
|
||||
%td
|
||||
.div{id: "toggle_all_sepa_downloaded_#{order.id}"}
|
||||
= render :partial => 'group_order_invoices/toggle_all_sepa_downloaded', locals: { order: order }
|
||||
|
|
|
|||
|
|
@ -3,63 +3,89 @@
|
|||
- content_for :javascript do
|
||||
:javascript
|
||||
$(document).ready(function() {
|
||||
$("#order_#{order.id}_modal").on('click', "#collective-direct-debit-link-#{order.id}", function(e) {
|
||||
|
||||
// Function For Downloading the xml
|
||||
function doTheDownload(selectedGroupOrderIds, url, mode="all"){
|
||||
if(mode == "all")
|
||||
{
|
||||
var data = { order_id: "#{order.id}" }
|
||||
}
|
||||
else
|
||||
{
|
||||
var data = { group_order_ids: selectedGroupOrderIds }
|
||||
}
|
||||
if(mode == "all" || selectedGroupOrderIds.length > 0)
|
||||
{
|
||||
//suppress generic error warning
|
||||
$.ajaxSetup({
|
||||
global: false,
|
||||
});
|
||||
$.ajax({
|
||||
url: url,
|
||||
method: 'GET', // You may adjust the HTTP method as needed
|
||||
data: data,
|
||||
dataType: 'xml',
|
||||
success: function(response) {
|
||||
// Handle success response
|
||||
// Convert XML response to a Blob
|
||||
var blob = new Blob([new XMLSerializer().serializeToString(response)], { type: 'text/xml' });
|
||||
var order_id ="#{order.id}"
|
||||
// Create a temporary link element
|
||||
var link = document.createElement('a');
|
||||
link.href = URL.createObjectURL(blob);
|
||||
if(selectedGroupOrderIds.length > 1){
|
||||
link.download = "#{order.supplier.name}-#{order.id}-Sammellastschrift.xml";
|
||||
} else {
|
||||
link.download = "#{order.supplier.name}-#{order.id}-Lastschrift.xml";
|
||||
}
|
||||
// Append the link to the document and trigger the click event
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
|
||||
// Clean up
|
||||
document.body.removeChild(link);
|
||||
$("group-order-invoices-for-order-#{order.id}" + " .expand-trigger a").click();
|
||||
$("#order_" + order_id + "_modal").load(window.location + " #order_" + order_id + "_modal");
|
||||
},
|
||||
error: function(error) {
|
||||
// Handle error
|
||||
if (error.responseJSON) {
|
||||
alert('AJAX request error:' + "\n" + error.responseJSON.message);
|
||||
} else{
|
||||
var errorText = JSON.parse(error.responseText).error;
|
||||
var alertDiv = '<div class="alert fade in alert-error"><button class="close" data-dismiss="alert">×</button>' + errorText + '</div>';
|
||||
$('.page-header').before(alertDiv);
|
||||
$('modal_')
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
else{
|
||||
var errorText = "Nothing selected";
|
||||
var alertDiv = '<div class="alert fade in alert-error"><button class="close" data-dismiss="alert">×</button>' + errorText + '</div>';
|
||||
$('.page-header').before(alertDiv);
|
||||
}
|
||||
}
|
||||
|
||||
// register onClick listener for selected group_orders
|
||||
$("#order_#{order.id}_modal").on('click', "#collective-direct-debit-link-selected-#{order.id}", function(e) {
|
||||
e.preventDefault();
|
||||
console.log("hi");
|
||||
// Extract selected group_order_ids
|
||||
var selectedGroupOrderIds = $('input[name^="group_order_ids_for_order_#{order.id}"]:checked').map(function() {
|
||||
return $(this).val();
|
||||
}).get();
|
||||
|
||||
// Log the selected IDs (for testing purposes)
|
||||
console.log('Selected Group Order IDs:', selectedGroupOrderIds);
|
||||
var url = $(this).closest('a').attr('href');
|
||||
//suppress generic error warning
|
||||
$.ajaxSetup({
|
||||
global: false,
|
||||
});
|
||||
$.ajax({
|
||||
url: url,
|
||||
method: 'GET', // You may adjust the HTTP method as needed
|
||||
data: { group_order_ids: selectedGroupOrderIds },
|
||||
dataType: 'xml',
|
||||
success: function(response) {
|
||||
// Handle success response
|
||||
console.log('AJAX request successful:', response);
|
||||
// Convert XML response to a Blob
|
||||
var blob = new Blob([new XMLSerializer().serializeToString(response)], { type: 'text/xml' });
|
||||
doTheDownload(selectedGroupOrderIds, url, "selected");
|
||||
});
|
||||
|
||||
// Create a temporary link element
|
||||
var link = document.createElement('a');
|
||||
link.href = URL.createObjectURL(blob);
|
||||
|
||||
if(selectedGroupOrderIds.length > 1){
|
||||
link.download = "#{order.supplier.name}-#{order.id}-Sammellastschrift.xml";
|
||||
} else {
|
||||
link.download = "#{order.supplier.name}-#{order.id}-Lastschrift.xml";
|
||||
}
|
||||
|
||||
// Append the link to the document and trigger the click event
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
|
||||
// Clean up
|
||||
document.body.removeChild(link);
|
||||
$("group-order-invoices-for-order-#{order.id}" + " .expand-trigger a").click();
|
||||
|
||||
},
|
||||
error: function(error) {
|
||||
// Handle error
|
||||
if (error.responseJSON) {
|
||||
alert('AJAX request error:' + "\n" + error.responseJSON.message);
|
||||
} else{
|
||||
var errorText = JSON.parse(error.responseText).error;
|
||||
var alertDiv = '<div class="alert fade in alert-error"><button class="close" data-dismiss="alert">×</button>' + errorText + '</div>';
|
||||
$('.page-header').before(alertDiv);
|
||||
}
|
||||
}
|
||||
});
|
||||
});});
|
||||
// register onClick listener for all group_orders
|
||||
$("#order_#{order.id}_modal").on('click', "#collective-direct-debit-link-all-#{order.id}", function(e) {
|
||||
e.preventDefault();
|
||||
var url = $(this).closest('a').attr('href');
|
||||
doTheDownload([], url, "all");
|
||||
});
|
||||
});
|
||||
|
||||
- content_for :javascript do
|
||||
:javascript
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
= link_to toggle_all_paid_group_order_invoices_path(order_id: order.id, paid: order.group_orders.map(&:group_order_invoice).compact.map(&:paid)&.all? ), remote: true, method: :patch, data: { confirm: I18n.t('ui.confirm_mark_all', name: order.group_orders.map(&:group_order_invoice).compact.map(&:paid)&.all? ? I18n.t('activerecord.attributes.group_order_invoice.links.not_paid'): I18n.t('activerecord.attributes.group_order_invoice.links.paid') ) } do
|
||||
= check_box_tag :paid, '1', order.group_orders.map(&:group_order_invoice).compact.map(&:paid)&.all? , class: 'form-check-input', id: "paid_all_#{order.id}"
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
= link_to toggle_all_payed_group_order_invoices_path(order_id: order.id, payed: order.group_orders.map(&:group_order_invoice).compact.map(&:payed)&.all? ), remote: true, method: :patch, data: { confirm: I18n.t('ui.confirm_mark_all', name: "payed" ) } do
|
||||
= check_box_tag :payed, '1', order.group_orders.map(&:group_order_invoice).compact.map(&:payed)&.all? , class: 'form-check-input', id: "payed_all_#{order.id}"
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
= link_to toggle_all_sepa_downloaded_group_order_invoices_path(order_id: order.id, sepa_downloaded: order.group_orders.map(&:group_order_invoice).compact.map(&:sepa_downloaded)&.all? ), remote: true, method: :patch, data: { confirm: I18n.t('ui.confirm_mark_all', name: "sepa_downloaded" ) } do
|
||||
= link_to toggle_all_sepa_downloaded_group_order_invoices_path(order_id: order.id, sepa_downloaded: order.group_orders.map(&:group_order_invoice).compact.map(&:sepa_downloaded)&.all? ), remote: true, method: :patch, data: { confirm: I18n.t('ui.confirm_mark_all', name: order.group_orders.map(&:group_order_invoice).compact.map(&:sepa_downloaded)&.all? ? I18n.t('activerecord.attributes.group_order_invoice.links.sepa_not_downloaded') : I18n.t('activerecord.attributes.group_order_invoice.links.sepa_downloaded')) } do
|
||||
= check_box_tag :sepa_downloaded, '1', order.group_orders.map(&:group_order_invoice).compact.map(&:sepa_downloaded)&.all? , class: 'form-check-input', id: "sepa_downloaded_all_#{order.id}"
|
||||
2
app/views/group_order_invoices/_toggle_paid.html.haml
Normal file
2
app/views/group_order_invoices/_toggle_paid.html.haml
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
= link_to toggle_paid_group_order_invoice_path(group_order_invoice), remote: true, method: :patch, data: { turbolinks: false } do
|
||||
= check_box_tag 'paid', '1', group_order_invoice.paid , class: 'form-check-input', id: "paid_#{group_order_invoice.id}"
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
= link_to toggle_payed_group_order_invoice_path(group_order_invoice), remote: true, method: :patch, data: { turbolinks: false } do
|
||||
= check_box_tag 'payed', '1', group_order_invoice.payed , class: 'form-check-input', id: "payed_#{group_order_invoice.id}"
|
||||
4
app/views/group_order_invoices/toggle_all_paid.js.erb
Normal file
4
app/views/group_order_invoices/toggle_all_paid.js.erb
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<% @group_order_invoices.each do |group_order_invoice| %>
|
||||
$("#paid_<%= group_order_invoice.id %>").html("<%= escape_javascript(render partial: 'toggle_paid', locals: { group_order_invoice: group_order_invoice }) %>");
|
||||
<% end %>
|
||||
$("#toggle_all_paid_<%= @order.id %>").html("<%= escape_javascript(render partial: 'toggle_all_paid', locals: { order: @order }) %>");
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<% @group_order_invoices.each do |group_order_invoice| %>
|
||||
$("#payed_<%= group_order_invoice.id %>").html("<%= escape_javascript(render partial: 'toggle_payed', locals: { group_order_invoice: group_order_invoice }) %>");
|
||||
<% end %>
|
||||
$("#toggle_all_payed_<%= @order.id %>").html("<%= escape_javascript(render partial: 'toggle_all_payed', locals: { order: @order }) %>");
|
||||
1
app/views/group_order_invoices/toggle_paid.js.erb
Normal file
1
app/views/group_order_invoices/toggle_paid.js.erb
Normal file
|
|
@ -0,0 +1 @@
|
|||
$("#paid_<%= @group_order_invoice.id %>").html("<%= escape_javascript(render partial: 'toggle_paid', locals: {group_order_invoice: @group_order_invoice}) %>");
|
||||
|
|
@ -1 +0,0 @@
|
|||
$("#payed_<%= @group_order_invoice.id %>").html("<%= escape_javascript(render partial: 'toggle_payed', locals: {group_order_invoice: @group_order_invoice}) %>");
|
||||
Loading…
Add table
Add a link
Reference in a new issue