Переработка контроллера Organization и страницы Show для отображения 2х форм отчетности из БД

This commit is contained in:
ARLakhin
2026-04-01 15:06:00 +03:00
parent 644d7616ae
commit 7c390e9a69
3 changed files with 65 additions and 35 deletions
+5 -3
View File
@@ -28,15 +28,17 @@ a.link:hover {
.main-container { .main-container {
height: 100vh; height: 100vh;
padding-bottom: 15px;
} }
.informations-data { .informations-data {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
width: 80%; width: 90%;
min-width: 300px; min-width: 300px;
max-width: 1200px; max-width: 1400px;
margin: 0 auto 10px; margin: 0 auto;
padding-bottom: inherit;
} }
.informations-data h2 { .informations-data h2 {
+40 -17
View File
@@ -1,4 +1,6 @@
class OrganisationsController < ApplicationController class OrganisationsController < ApplicationController
before_action :set_organisation, only: [:show]
def index def index
organizations = Organization.all organizations = Organization.all
@@ -17,38 +19,59 @@ class OrganisationsController < ApplicationController
end end
def show def show
org = Organization.find(params[:id])
@org_id = org.id
doc_types = { doc_types = {
0 => 'Бухгалтерский баланс', 0 => 'Бухгалтерский баланс',
1 => 'Отчёт о финансовых результатах', 1 => 'Отчёт о финансовых результатах',
2 => 'Отчёт об изменении капитала', 2 => 'Отчёт об изменении капитала',
3 => 'Отчет о движении денежных средств' 3 => 'Отчет о движении денежных средств'
} }
@type_doc = params[:type_doc].present? ? params[:type_doc].to_i : 0 @type_doc = params[:type_doc].present? ? params[:type_doc].to_i : 0
data = doc_types.each_with_object({}) do |(key, value), hash|
hash[value] = Hash.new()
end
doc_types.keys.each do |key|
financial_statements = @org.financial_statements.order(sheet_number: :desc).where(document_type_id: key + 1)
financial_statements.each do |financial_statement|
financial_statement.data['rows'].each_with_index do |row, index|
if index != 0
if data[doc_types[key]][[row['line_name'], row['line_code']]].nil?
data[doc_types[key]][[row['line_name'], row['line_code']]] = []
end
data[doc_types[key]][[row['line_name'], row['line_code']]] << row['value']
end
end
end
end
@info_about_organisation = { @info_about_organisation = {
"Сведения об организации" => { "Сведения об организации" => {
"ИНН" => org.inn, "ИНН" => @org.inn,
"Полное наименование юридического лица" => org.full_name, "Полное наименование юридического лица" => @org.full_name,
"КПП" => org.kpp, "КПП" => @org.kpp,
"Код по ОКПО" => org.okpo, "Код по ОКПО" => @org.okpo,
"Форма собственности (по ОКФС)" => org.okfs, "Форма собственности (по ОКФС)" => @org.okfs,
"Организационно-правовая форма (по ОКОПФ)" => org.okopf, "Организационно-правовая форма (по ОКОПФ)" => @org.okopf,
"Вид экономической деятельности по ОКВЭД 2" => org.okved2, "Вид экономической деятельности по ОКВЭД 2" => @org.okved2,
"Местонахождение (адрес)" => org.address "Местонахождение (адрес)" => @org.address
}, },
"Бухгалтерский баланс" => [["Наименование показателя", "На 31 декабря 2024 г.", "На 31 декабря 2023 г."], \
["Нематериальные активы", 10457, 9925], \
["Результаты исследований и разработок", 6969, 428571]],
"Отчёт о финансовых результатах" => [["Наименование показателя", "За 2024 г.", "За 2023 г."], \
["Выручка", 301837283, 238834307], \
["Себестоимость продаж", -228706983, -178449438]]
"Бухгалтерский баланс" => ["Наименование показателя", "Код", "На 31 декабря 2024 г.", "На 31 декабря 2023 г.", "На 31 декабря 2022 г.", "На 31 декабря 2021 г.", "На 31 декабря 2020 г.", "На 31 декабря 2019 г."],
"Отчёт о финансовых результатах" => ["Наименование показателя", "Код", "За 2024 г.", "За 2023 г.", "За 2022 г.", "За 2021 г.", "За 2020 г."]
} }
@doc_name = doc_types[@type_doc] @doc_name = doc_types[@type_doc]
@current_doc_info = @info_about_organisation[@doc_name] @current_doc_info = @info_about_organisation[@doc_name]
@current_doc_info1 = data[@doc_name]
end
private
def set_organisation
@org = Organization.find(params[:id])
end end
end end
+20 -15
View File
@@ -12,20 +12,25 @@
- @info_about_organisation["Сведения об организации"].each do |key, value| - @info_about_organisation["Сведения об организации"].each do |key, value|
.information-elem .information-elem
= "#{key}: #{value}" = "#{key}: #{value}"
= render 'organisations/templates/type_doc', target: "type_doc_#{@type_doc}", org_id: "#{@org_id}" = render 'organisations/templates/type_doc', target: "type_doc_#{@type_doc}", org_id: "#{@org.id}"
h2 h2
= "#{@doc_name}" = "#{@doc_name}"
.information-table - if @current_doc_info.present?
table .information-table
thead table
tr thead
- @current_doc_info[0].each do |value| tr
th - @current_doc_info.each do |header|
= value th = header
tbody
tbody - @current_doc_info1.keys.each do |key|
- @current_doc_info[1..-1].each do |values| tr
tr td = key[0]
- values.each do |value| td = key[1]
td - @current_doc_info1[key].each do |value|
= value td = value
- else
h3
= "Нет данных"