diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 7b0233551..64b132093 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -334,7 +334,11 @@ class RepositoriesController < ApplicationController xlsx = RepositoryXlsxExport.to_empty_xlsx(@repository, col_ids) - send_data xlsx, filename: "empty_repository.xlsx", type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' + send_data( + xlsx, + filename: "#{@repository.name.gsub(/\s/, '_')}_template_#{Date.current}.xlsx", + type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' + ) end def export_repository diff --git a/app/services/repository_csv_export.rb b/app/services/repository_csv_export.rb index 7d041940c..9f164b938 100644 --- a/app/services/repository_csv_export.rb +++ b/app/services/repository_csv_export.rb @@ -45,7 +45,7 @@ module RepositoryCsvExport when -1, -2 next when -3 - csv_row << (repository.is_a?(RepositorySnapshot) ? row.parent_id : row.code) + csv_row << (repository.is_a?(RepositorySnapshot) ? row.parent.code : row.code) when -4 csv_row << row.name when -5 @@ -53,7 +53,7 @@ module RepositoryCsvExport when -6 csv_row << I18n.l(row.created_at, format: :full) when -7 - csv_row << row.updated_at ? I18n.l(row.updated_at, format: :full) : '' + csv_row << (row.updated_at ? I18n.l(row.updated_at, format: :full) : '') when -8 csv_row << row.last_modified_by.full_name when -9 diff --git a/app/services/repository_xlsx_export.rb b/app/services/repository_xlsx_export.rb index c75ddf319..ab7e402d8 100644 --- a/app/services/repository_xlsx_export.rb +++ b/app/services/repository_xlsx_export.rb @@ -16,6 +16,9 @@ module RepositoryXlsxExport def self.to_xlsx(rows, column_ids, user, repository, handle_file_name_func, in_module) package = Axlsx::Package.new workbook = package.workbook + datetime_style = workbook.styles.add_style format_code: 'dd-mmm-yyyy hh:mm:ss' + date_style = workbook.styles.add_style format_code: 'dd-mmm-yyyy' + add_consumption = in_module && !repository.is_a?(RepositorySnapshot) && repository.has_stock_management? workbook.add_worksheet(name: 'Data Export') do |sheet| @@ -28,30 +31,31 @@ module RepositoryXlsxExport when -1, -2 next when -3 - row_data << (repository.is_a?(RepositorySnapshot) ? row.parent_id : row.id) + row_data << (repository.is_a?(RepositorySnapshot) ? row.parent.code : row.code) when -4 row_data << row.name when -5 row_data << row.created_by.full_name when -6 - row_data << I18n.l(row.created_at, format: :full) + row_data << row.created_at when -7 - row_data << row.updated_at ? I18n.l(row.updated_at, format: :full) : '' + row_data << row.updated_at when -8 row_data << row.last_modified_by.full_name when -9 row_data << (row.archived? && row.archived_by.present? ? row.archived_by.full_name : '') when -10 - row_data << (row.archived? && row.archived_on.present? ? I18n.l(row.archived_on, format: :full) : '') + row_data << (row.archived? && row.archived_on) when -11 row_data << row.parent_repository_rows.map(&:code).join(' | ') row_data << row.child_repository_rows.map(&:code).join(' | ') else cell = row.repository_cells.find_by(repository_column_id: c_id) - row_data << if cell if cell.value_type == 'RepositoryAssetValue' && handle_file_name_func handle_file_name_func.call(cell.value.asset) + elsif cell.value_type == 'RepositoryDateTimeValueBase' + cell.value.data else cell.value.export_formatted end @@ -59,15 +63,26 @@ module RepositoryXlsxExport end end row_data << row.row_consumption(row.stock_consumption) if add_consumption - sheet.add_row row_data + + style = row_data.map do |c| + case c + when ActiveSupport::TimeWithZone + datetime_style + when Time # Date values are of class Time for some reason + date_style + end + end + + sheet.add_row( + row_data, + style: style + ) end end package.to_stream.read end - private - def self.prepare_header(repository, column_ids, add_consumption) header = [] column_ids.each do |c_id|