fix column format for simple report

pull/7991/head
ulferts 5 years ago
parent 4ba558a962
commit d0cb492197
No known key found for this signature in database
GPG Key ID: A205708DE1284017
  1. 38
      modules/xls_export/lib/open_project/xls_export/xls_views/simple_cost_report_table.xls.rb

@ -2,17 +2,31 @@ require_relative './one_dimensional_table.xls'
class OpenProject::XlsExport::XlsViews::SimpleCostReportTable < OpenProject::XlsExport::XlsViews::OneDimensionalTable
def format_columns(spreadsheet)
spreadsheet.add_format_option_to_column(headers.length - 1, number_format: currency_format)
spreadsheet.add_format_option_to_column(headers.length - 2, number_format: number_format) if show_units?
column_count = headers.size
if column_count - exported_fields.size == 1
spreadsheet.add_format_option_to_column(column_count - 1, number_format: currency_format)
elsif column_count - exported_fields.size == 2
spreadsheet.add_format_option_to_column(column_count - 2, number_format: number_format)
else
spreadsheet.add_format_option_to_column(column_count - 2, number_format: number_format)
spreadsheet.add_format_option_to_column(column_count - 4, number_format: currency_format)
end
end
def build_cost_rows(spreadsheet)
query.each do |result|
spreadsheet.add_row(cost_row(result))
end
end
def cost_row(result)
current_cost_type_id = result.fields[:cost_type_id].to_i
row = [show_row(result)]
row << show_result(result, current_cost_type_id) if show_units?
row << cost_type_unit_label(current_cost_type_id, @cost_type) if show_units?
row << cost_type_unit_label(current_cost_type_id, cost_type) if show_units?
row << show_result(result)
row << cost_type_unit_label(@unit_id, @cost_type)
row << cost_type_unit_label(unit_id, cost_type) if show_unit_label?
row
end
@ -20,13 +34,17 @@ class OpenProject::XlsExport::XlsViews::SimpleCostReportTable < OpenProject::Xls
def build_footer(spreadsheet)
footer = [''] * exported_fields.size
footer += ['', ''] if show_units?
spreadsheet.add_row(footer + [show_result(query), cost_type_unit_label(@unit_id, @cost_type)]) # footer
footer << show_result(query)
footer << cost_type_unit_label(unit_id, cost_type) if show_unit_label?
spreadsheet.add_row(footer)
end
def headers
headers = exported_fields.collect { |field| label_for(field) }
headers << label_for(:field_units) << "" if show_units?
headers << label_for(:label_sum) << ""
headers << CostEntry.human_attribute_name(:costs) << "" if show_units?
headers << label_for(:label_sum)
headers << "" if show_unit_label?
headers
end
@ -36,6 +54,10 @@ class OpenProject::XlsExport::XlsViews::SimpleCostReportTable < OpenProject::Xls
end
def show_units?
@query.collect(&:important_fields).flatten.uniq.include? "cost_type_id"
cost_type.present?
end
def show_unit_label?
unit_id != 0
end
end

Loading…
Cancel
Save