SU2-30 | добавлена фикс таблица для кодов, убрана таблица DocumentTypes, изменена структура jsonb

This commit is contained in:
Dmitry
2026-04-18 17:05:19 +00:00
parent c74ffc2aea
commit a03839a834
10 changed files with 595 additions and 84 deletions
@@ -0,0 +1,13 @@
class CreateReportCodes < ActiveRecord::Migration[7.1]
def change
create_table :report_codes do |t|
t.string :code, null: false
t.string :name, null: false
t.text :description, null: false, default: ''
t.timestamps
end
add_index :report_codes, :code, unique: true
end
end
@@ -0,0 +1,288 @@
class SeedReportCodes < ActiveRecord::Migration[7.1]
def up
rows = [
{ code: "1100", name: "Итого внеоборотных активов", description: "Сумма строк 1110, 1120, 1130, 1140, 1150" },
{ code: "1105", name: "Гудвил", description: "-" },
{ code: "1110", name: "Нематериальные активы", description: "-" },
{ code: "1130", name: "Нематериальные поисковые активы", description: "-" },
{ code: "1140", name: "Материальные поисковые активы", description: "-" },
{ code: "1150", name: "Основные средства", description: "-" },
{ code: "1160", name: "Инвестиционная недвижимость", description: "-" },
{ code: "1170", name: "Финансовые вложения", description: "-" },
{ code: "1180", name: "Отложенные налоговые активы", description: "-" },
{ code: "1190", name: "Прочие внеоборотные активы", description: "-" },
{ code: "1200", name: "Итого оборотных активов", description: "-" },
{ code: "1210", name: "Запасы", description: "-" },
{ code: "1215", name: "Долгосрочные активы к продаже", description: "-" },
{ code: "1220", name: "Налог на добавленную стоимость по приобретенным ценностям", description: "-" },
{ code: "1230", name: "Дебиторская задолженность", description: "-" },
{ code: "1240", name: "Финансовые вложения (за исключением денежных эквивалентов)", description: "-" },
{ code: "1250", name: "Денежные средства и денежные эквиваленты", description: "-" },
{ code: "1260", name: "Прочие оборотные активы", description: "-" },
{ code: "1600", name: "БАЛАНС (актив)", description: "-" },
{ code: "1300", name: "Итого капитал/Итого целевое финансирование (в некоммерческой организации)", description: "-" },
{ code: "1310", name: "Уставный капитал/Паевой фонд (в некоммерческой организации)", description: "-" },
{ code: "1320", name: "Собственные акции, принадлежащие обществу, задолженность акционеров по оплате акций/Целевой капитал (в некоммерческой организации)", description: "-" },
{ code: "1330", name: "Целевые средства (в некоммерческой организации)", description: "-" },
{ code: "1340", name: "Накопленная дооценка внеоборотных активов", description: "-" },
{ code: "1350", name: "Добавочный капитал (без накопленной дооценки)", description: "-" },
{ code: "1360", name: "Резервный капитал/Фонд недвижимого и особо ценного движимого имущества (в некоммерческой организации)", description: "-" },
{ code: "1370", name: "Нераспределенная прибыль (непокрытый убыток)/Резервный и иные целевые фонды (в некоммерческой организации)", description: "-" },
{ code: "1400", name: "Итого долгосрочных обязательств", description: "-" },
{ code: "1410", name: "Долгосрочные заемные средства", description: "-" },
{ code: "1420", name: "Отложенные налоговые обязательства", description: "-" },
{ code: "1430", name: "Долгосрочные оценочные обязательства", description: "-" },
{ code: "1450", name: "Прочие долгосрочные обязательства", description: "-" },
{ code: "1500", name: "Итого краткосрочных обязательств", description: "-" },
{ code: "1510", name: "Краткосрочные заемные средства", description: "-" },
{ code: "1520", name: "Краткосрочная кредиторская задолженность", description: "-" },
{ code: "1530", name: "Доходы будущих периодов", description: "-" },
{ code: "1540", name: "Краткосрочные оценочные обязательства", description: "-" },
{ code: "1550", name: "Прочие краткосрочные обязательства", description: "-" },
{ code: "2110", name: "Выручка", description: "-" },
{ code: "2120", name: "Себестоимость продаж", description: "-" },
{ code: "2100", name: "Валовая прибыль (убыток)", description: "-" },
{ code: "2210", name: "Коммерческие расходы", description: "-" },
{ code: "2220", name: "Управленческие расходы", description: "-" },
{ code: "2200", name: "Прибыль (убыток) от продаж", description: "-" },
{ code: "2310", name: "Доходы от участия в других организациях", description: "-" },
{ code: "2320", name: "Проценты к получению", description: "-" },
{ code: "2330", name: "Проценты к уплате", description: "-" },
{ code: "2340", name: "Прочие доходы", description: "-" },
{ code: "2350", name: "Прочие расходы", description: "-" },
{ code: "2300", name: "Прибыль (убыток) от продолжающейся деятельности до налогообложения", description: "-" },
{ code: "2410", name: "Налог на прибыль организаций", description: "-" },
{ code: "2411", name: "текущий налог на прибыль организаций", description: "в том числе" },
{ code: "2412", name: "отложенный налог на прибыль организаций", description: "в том числе" },
{ code: "2420", name: "Прибыль (убыток) от прекращаемой деятельности (за вычетом относящегося к ней налога на прибыль организаций)", description: "-" },
{ code: "2460", name: "Прочее", description: "-" },
{ code: "2400", name: "Чистая прибыль (убыток)", description: "-" },
{ code: "2510", name: "Результат от переоценки внеоборотных активов, не включаемый в чистую прибыль (убыток)", description: "-" },
{ code: "2520", name: "Результат от прочих операций, не включаемый в чистую прибыль (убыток)", description: "-" },
{ code: "2530", name: "Налог на прибыль организаций, относящийся к результатам переоценки внеоборотных активов и прочих операций, не включаемых в чистую прибыль (убыток)", description: "-" },
{ code: "2500", name: "Совокупный финансовый результат", description: "-" },
{ code: "2900", name: "Базовая прибыль (убыток) на акцию", description: "-" },
{ code: "2910", name: "Разводненная прибыль (убыток) на акцию", description: "-" },
{ code: "3100", name: "Величина капитала на 31 декабря года, предшествующего предыдущему", description: "-" },
{ code: "3110", name: "Корректировка в связи с изменением учетной политики", description: "-" },
{ code: "3120", name: "Корректировка в связи с исправлением ошибок", description: "-" },
{ code: "3101", name: "Величина капитала на 31 декабря года, предшествующего предыдущему, после корректировки", description: "-" },
{ code: "3211", name: "Чистая прибыль (убыток)", description: "-" },
{ code: "3212", name: "Переоценка внеоборотных активов", description: "-" },
{ code: "3227", name: "Дивиденды", description: "-" },
{ code: "3230", name: "Иные изменения за счет операций с собственниками (за исключением дивидендов) - всего", description: "-" },
{ code: "3216", name: "Реорганизация юридического лица", description: "-" },
{ code: "3240", name: "Иные изменения - всего", description: "-" },
{ code: "3250", name: "Величина капитала на дату окончания периода предыдущего года, аналогичного отчетному периоду", description: "-" },
{ code: "3200", name: "Величина капитала на 31 декабря предыдущего года", description: "-" },
{ code: "3210", name: "Корректировка в связи с изменением учетной политики", description: "-" },
{ code: "3220", name: "Корректировка в связи с исправлением ошибок", description: "-" },
{ code: "3201", name: "Величина капитала на 31 декабря предыдущего года после корректировки", description: "-" },
{ code: "3311", name: "Чистая прибыль (убыток)", description: "-" },
{ code: "3312", name: "Переоценка внеоборотных активов", description: "-" },
{ code: "3327", name: "Дивиденды", description: "-" },
{ code: "3330", name: "Иные изменения за счет операций с собственниками (за исключением дивидендов) - всего", description: "-" },
{ code: "3316", name: "Реорганизация юридического лица", description: "-" },
{ code: "3340", name: "Иные изменения - всего", description: "-" },
{ code: "3300", name: "Величина капитала на отчетную дату", description: "-" },
{ code: "4110", name: "Поступления - всего", description: "-" },
{ code: "4111", name: "От продажи продукции, товаров, выполнения работ, оказания услуг", description: "-" },
{ code: "4112", name: "Арендных платежей, роялти, комиссионных и иных аналогичных платежей", description: "в-" },
{ code: "4113", name: "От перепродажи финансовых вложений", description: "-" },
{ code: "4114", name: "Процентов по дебиторской задолженности покупателей", description: "-" },
{ code: "4119", name: "Прочие поступления", description: "-" },
{ code: "4120", name: "Платежи - всего", description: "-" },
{ code: "4121", name: "Поставщикам (подрядчикам) за сырье, материалы, выполненные работы, оказанные услуги", description: "в-" },
{ code: "4122", name: "В связи с оплатой труда работников", description: "-" },
{ code: "4123", name: "Процентов по долговым обязательствам", description: "-" },
{ code: "4124", name: "Налога на прибыль организаций", description: "-" },
{ code: "4129", name: "Прочие платежи", description: "-" },
{ code: "4100", name: "Сальдо денежных потоков от текущих операций", description: "-" },
{ code: "4210", name: "Поступления - всего", description: "-" },
{ code: "4211", name: "От продажи внеоборотных активов (кроме финансовых вложений)", description: "-" },
{ code: "4212", name: "От продажи акций других организаций (долей участия)", description: "-" },
{ code: "4213", name: "От возврата предоставленных займов, от продажи долговых ценных бумаг (прав требования денежных средств к другим лицам)", description: "-" },
{ code: "4214", name: "Дивидендов, процентов по долговым финансовым вложениям и аналогичных поступлений от долевого участия в других организациях", description: "-" },
{ code: "4219", name: "Прочие поступления", description: "-" },
{ code: "4220", name: "Платежи - всего", description: "-" },
{ code: "4221", name: "В связи с приобретением, созданием, модернизацией, реконструкцией и подготовкой к использованию внеоборотных активов", description: "-" },
{ code: "4222", name: "В связи с приобретением акций других организаций (долей участия)", description: "-" },
{ code: "4223", name: "В связи с приобретением долговых ценных бумаг (прав требования денежных средств к другим лицам), предоставление займов другим лицам", description: "-" },
{ code: "4224", name: "Процентов по долговым обязательствам, включаемым в стоимость инвестиционного актива", description: "-" },
{ code: "4229", name: "Прочие платежи", description: "-" },
{ code: "4200", name: "Сальдо денежных потоков от инвестиционных операций", description: "-" },
{ code: "4310", name: "Поступления - всего", description: "-" },
{ code: "4311", name: "Получение кредитов и займов", description: "-" },
{ code: "4312", name: "Денежных вкладов собственников (участников)", description: "-" },
{ code: "4313", name: "От выпуска акций, увеличения долей участия", description: "-" },
{ code: "4314", name: "От выпуска облигаций, векселей и других долговых ценных бумаг", description: "-" },
{ code: "4319", name: "Прочие поступления", description: "-" },
{ code: "4320", name: "Платежи - всего", description: "-" },
{ code: "4321", name: "Собственникам (участникам) в связи с выкупом у них акций (долей участия) организации или их выходом из состава участников", description: "-" },
{ code: "4322", name: "На уплату дивидендов и иных платежей по распределению прибыли в пользу собственников (участников)", description: "-" },
{ code: "4323", name: "В связи с погашением (выкупом) векселей и других долговых ценных бумаг, возврат кредитов и займов", description: "-" },
{ code: "4329", name: "Прочие платежи", description: "-" },
{ code: "4300", name: "Сальдо денежных потоков от финансовых операций", description: "-" },
{ code: "4400", name: "Сальдо денежных потоков за период", description: "-" },
{ code: "4450", name: "Остаток денежных средств и денежных эквивалентов на начало периода", description: "-" },
{ code: "4500", name: "Остаток денежных средств и денежных эквивалентов на конец периода", description: "-" },
{ code: "4490", name: "Величина влияния изменения курса иностранной валюты по отношению к рублю", description: "-" }
]
return if rows.empty?
rows.each do |row|
execute <<~SQL
INSERT INTO report_codes (code, name, description, created_at, updated_at)
VALUES (
#{connection.quote(row.fetch(:code))},
#{connection.quote(row.fetch(:name))},
#{connection.quote(row.fetch(:description, ''))},
NOW(),
NOW()
)
ON CONFLICT (code)
DO UPDATE SET
name = EXCLUDED.name,
description = EXCLUDED.description,
updated_at = NOW();
SQL
end
end
def down
codes = [
"1100",
"1105",
"1110",
"1130",
"1140",
"1150",
"1160",
"1170",
"1180",
"1190",
"1200",
"1210",
"1215",
"1220",
"1230",
"1240",
"1250",
"1260",
"1600",
"1300",
"1310",
"1320",
"1330",
"1340",
"1350",
"1360",
"1370",
"1400",
"1410",
"1420",
"1430",
"1450",
"1500",
"1510",
"1520",
"1530",
"1540",
"1550",
"2110",
"2120",
"2100",
"2210",
"2220",
"2200",
"2310",
"2320",
"2330",
"2340",
"2350",
"2300",
"2410",
"2411",
"2412",
"2420",
"2460",
"2400",
"2510",
"2520",
"2530",
"2500",
"2900",
"2910",
"3100",
"3110",
"3120",
"3101",
"3211",
"3212",
"3227",
"3230",
"3216",
"3240",
"3250",
"3200",
"3210",
"3220",
"3201",
"3311",
"3312",
"3327",
"3330",
"3316",
"3340",
"3300",
"4110",
"4111",
"4112",
"4113",
"4114",
"4119",
"4120",
"4121",
"4122",
"4123",
"4124",
"4129",
"4100",
"4210",
"4211",
"4212",
"4213",
"4214",
"4219",
"4220",
"4221",
"4222",
"4223",
"4224",
"4229",
"4200",
"4310",
"4311",
"4312",
"4313",
"4314",
"4319",
"4320",
"4321",
"4322",
"4323",
"4329",
"4300",
"4400",
"4450",
"4500",
"4490"
]
return if codes.empty?
quoted_codes = codes.map { |code| connection.quote(code) }.join(', ')
execute "DELETE FROM report_codes WHERE code IN (#{quoted_codes});"
end
end
@@ -0,0 +1,39 @@
class RemoveDocumentTypesFromFinancialStatements < ActiveRecord::Migration[7.1]
def up
remove_index :financial_statements, name: 'index_fs_on_yearly_file_doc_type_sheet', if_exists: true
remove_index :financial_statements, :document_type_id, if_exists: true
remove_foreign_key :financial_statements, :document_types if foreign_key_exists?(:financial_statements, :document_types)
remove_column :financial_statements, :document_type_id if column_exists?(:financial_statements, :document_type_id)
add_index :financial_statements,
[:yearly_file_id, :sheet_number],
name: 'index_fs_on_yearly_file_sheet',
unique: true,
if_not_exists: true
drop_table :document_types, if_exists: true
end
def down
create_table :document_types do |t|
t.string :name, null: false
t.timestamps
end unless table_exists?(:document_types)
add_column :financial_statements, :document_type_id, :bigint unless column_exists?(:financial_statements, :document_type_id)
add_foreign_key :financial_statements, :document_types unless foreign_key_exists?(:financial_statements, :document_types)
add_index :financial_statements, :document_type_id, if_not_exists: true
remove_index :financial_statements, name: 'index_fs_on_yearly_file_sheet', if_exists: true
add_index :financial_statements,
[:yearly_file_id, :document_type_id, :sheet_number],
name: 'index_fs_on_yearly_file_doc_type_sheet',
unique: true,
if_not_exists: true
end
end