Merge pull request #5230 from betagouv/5226-export-bilans

exporte les bilans aux formats csv, xls et ods
This commit is contained in:
krichtof 2020-06-04 15:47:20 +02:00 committed by GitHub
commit c4c1c971ca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 30 additions and 12 deletions

View file

@ -73,8 +73,9 @@ module Instructeurs
end
def bilans_bdf
if avis.dossier.etablissement&.entreprise_bilans_bdf_to_csv.present?
render csv: avis.dossier.etablissement.entreprise_bilans_bdf_to_csv
if avis.dossier.etablissement&.entreprise_bilans_bdf.present?
extension = params[:format]
render extension.to_sym => avis.dossier.etablissement.entreprise_bilans_bdf_to_sheet(extension)
else
redirect_to instructeur_avis_path(avis)
end

View file

@ -32,7 +32,8 @@ module Instructeurs
end
def bilans_bdf
render csv: dossier.etablissement.entreprise_bilans_bdf_to_csv
extension = params[:format]
render extension.to_sym => dossier.etablissement.entreprise_bilans_bdf_to_sheet(extension)
end
def show

View file

@ -159,12 +159,8 @@ class Etablissement < ApplicationRecord
entreprise_last_bilan_info_cle("besoin_en_fonds_de_roulement")
end
def entreprise_bilans_bdf_to_csv
headers = bilans_headers.concat(bilans_new_keys)
data = entreprise_bilans_bdf.map do |bilan|
headers.map { |h| bilan[h] }
end
SpreadsheetArchitect.to_csv(headers: headers, data: data)
def entreprise_bilans_bdf_to_sheet(format)
SpreadsheetArchitect.send("to_#{format}".to_sym, bilans_bdf_data)
end
private
@ -178,6 +174,14 @@ class Etablissement < ApplicationRecord
entreprise_bilans_bdf.first[key]
end
def bilans_bdf_data
headers = bilans_headers.concat(bilans_new_keys)
data = entreprise_bilans_bdf.map do |bilan|
headers.map { |h| bilan[h] }
end
{ headers: headers, data: data }
end
def dossier_id_for_export
if dossier_id
dossier_id.to_s

View file

@ -90,9 +90,21 @@
= "en #{etablissement.entreprise_bilans_bdf_monnaie}"
- if profile == 'instructeur'
- if controller.is_a?(Instructeurs::AvisController)
%td= link_to "Consulter les bilans", bilans_bdf_instructeur_avis_path(@avis.id)
%td
Consulter les bilans
= link_to "au format csv", bilans_bdf_instructeur_avis_path(@avis, format: 'csv')
,
= link_to "au format xlsx", bilans_bdf_instructeur_avis_path(@avis, format: 'xlsx')
ou
= link_to "au format ods", bilans_bdf_instructeur_avis_path(@avis, format: 'ods')
- else
%td= link_to "Consulter les bilans", bilans_bdf_instructeur_dossier_path(procedure_id: @dossier.procedure.id, dossier_id: @dossier.id)
%td
Consulter les bilans
= link_to "au format csv", bilans_bdf_instructeur_dossier_path(procedure_id: @dossier.procedure.id, dossier_id: @dossier.id, format: 'csv')
,
= link_to "au format xlsx", bilans_bdf_instructeur_dossier_path(procedure_id: @dossier.procedure.id, dossier_id: @dossier.id, format: 'xlsx')
ou
= link_to "au format ods", bilans_bdf_instructeur_dossier_path(procedure_id: @dossier.procedure.id, dossier_id: @dossier.id, format: 'ods')
%tr
%th.libelle
Résultat exercice

View file

@ -75,7 +75,7 @@ describe Etablissement do
]
end
subject { etablissement.entreprise_bilans_bdf_to_csv.split("\n") }
subject { etablissement.entreprise_bilans_bdf_to_sheet('csv').split("\n") }
it "build a csv with keys in right order" do
headers = subject[0].split(',')