diff --git a/app/controllers/api/members_controller.rb b/app/controllers/api/members_controller.rb
index bfa8b6613..148f6d3a6 100644
--- a/app/controllers/api/members_controller.rb
+++ b/app/controllers/api/members_controller.rb
@@ -91,11 +91,9 @@ class API::MembersController < API::ApiController
# export subscriptions
def export_subscriptions
authorize :export
- @datas = Subscription.includes(:plan, :user).all
- respond_to do |format|
- format.html
- format.xls
- end
+ @subscriptions = Subscription.includes(:plan, :user).all
+
+ render xlsx: 'export_subscriptions.xlsx', filename: "export_subscriptions.xlsx"
end
# export reservations
diff --git a/app/views/api/members/export_subscriptions.xls.erb b/app/views/api/members/export_subscriptions.xls.erb
deleted file mode 100644
index 64805d1fb..000000000
--- a/app/views/api/members/export_subscriptions.xls.erb
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
- <%=t('export_subscriptions.id')%> |
- <%=t('export_subscriptions.customer')%> |
- <%=t('export_subscriptions.email')%> |
- <%=t('export_subscriptions.subscription')%> |
- <%=t('export_subscriptions.period')%> |
- <%=t('export_subscriptions.start_date')%> |
- <%=t('export_subscriptions.expiration_date')%> |
- <%=t('export_subscriptions.amount')%> |
- <%=t('export_subscriptions.payment_method')%> |
-
- <% @datas.each do |data| %>
-
- <%= data.user.id %> |
- <%= data.user.profile.full_name %> |
- <%= data.user.email %> |
- <%= data.plan.human_readable_name(group: true) %> |
- <%= t("duration.#{data.plan.interval}", count: data.plan.interval_count) %> |
- <%= data.created_at %> |
- <%= data.expired_at %> |
- <%= number_to_currency(data.plan.amount / 100) %> |
- <%= (data.stp_subscription_id.nil?)? t('export_subscriptions.local_payment') : t('export_subscriptions.online_payment') %> |
-
- <% end %>
-
diff --git a/app/views/api/members/export_subscriptions.xlsx.axlsx b/app/views/api/members/export_subscriptions.xlsx.axlsx
new file mode 100644
index 000000000..5b1a08d38
--- /dev/null
+++ b/app/views/api/members/export_subscriptions.xlsx.axlsx
@@ -0,0 +1,33 @@
+wb = xlsx_package.workbook
+
+header = wb.styles.add_style :b => true, :bg_color => Stylesheet.primary.upcase.gsub('#', 'FF'), :fg_color => 'FFFFFFFF'
+date = wb.styles.add_style :format_code => Rails.application.secrets.excel_date_format
+
+wb.add_worksheet(name: t('export_subscriptions.subscriptions')) do |sheet|
+
+ ## data table
+ # heading labels
+ columns = [t('export_subscriptions.id'), t('export_subscriptions.customer'), t('export_subscriptions.email'),
+ t('export_subscriptions.subscription'), t('export_subscriptions.period'), t('export_subscriptions.start_date'),
+ t('export_subscriptions.expiration_date'), t('export_subscriptions.amount'), t('export_subscriptions.payment_method')]
+ sheet.add_row columns, :style => header
+
+ # data rows
+ @subscriptions.each do |sub|
+ data = [
+ sub.user.id,
+ sub.user.profile.full_name,
+ sub.user.email,
+ sub.plan.human_readable_name(group: true),
+ t("duration.#{sub.plan.interval}", count: sub.plan.interval_count),
+ sub.created_at.to_date,
+ sub.expired_at.to_date,
+ number_to_currency(sub.plan.amount / 100),
+ (sub.stp_subscription_id.nil?)? t('export_subscriptions.local_payment') : t('export_subscriptions.online_payment')
+ ]
+ styles = [nil, nil, nil, nil, nil, date, date, nil, nil]
+ types = [:integer, :string, :string, :string, :string, :date, :date, :string, :string]
+
+ sheet.add_row data, :style => styles, :types => types
+ end
+end
\ No newline at end of file
diff --git a/config/locales/en.yml b/config/locales/en.yml
index f44221f4e..e0b435d05 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -145,6 +145,7 @@ en:
export_subscriptions:
# subscriptions list export to EXCEL format
+ subscriptions: "Subscriptions"
id: "ID"
customer: "Customer"
email: "E-mail"
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index c4b6d3f18..d4d1d01fd 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -145,6 +145,7 @@ fr:
export_subscriptions:
# export de la liste des abonnements au format EXCEL
+ subscriptions: "Abonnements"
id: "ID"
customer: "Client"
email: "Courriel"