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 @@ - - - - - - - - - - - - - <% @datas.each do |data| %> - - - - - - - - - - - - <% end %> -
<%=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')%>
<%= 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') %>
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"