diff --git a/golden/expected_osv_parse/synthetic/s33_indicator_column_bu_nu.json b/golden/expected_osv_parse/synthetic/s33_indicator_column_bu_nu.json new file mode 100644 index 0000000..1aab503 --- /dev/null +++ b/golden/expected_osv_parse/synthetic/s33_indicator_column_bu_nu.json @@ -0,0 +1,238 @@ +{ + "schema_version": "2.0", + "service": { + "name": "tabular-parser" + }, + "status": "done", + "metrics": { + "rows": 6, + "warnings": [] + }, + "documents": [ + { + "document_type": "OSV", + "locator": "sheet:Лист_1", + "status": "done", + "warnings": [ + { + "code": "OSV_HIERARCHY_BY_OUTLINE", + "severity": "info", + "message": "иерархия строк — по группировке листа (outline)" + }, + { + "code": "OSV_HEADER", + "severity": "info", + "message": "тип выводимых данных (БУ/НУ/сумма) в шапке не найден" + } + ], + "header": { + "organization_name": "ООО \"Тестовая организация\"", + "organization_inn": null, + "account_code_raw": "02", + "period_text": "3 квартал 2025 г.", + "period_year": 2025, + "period_quarter": "Q3", + "is_cumulative": false, + "period_start": "2025-07-01", + "period_end": "2025-09-30", + "is_from_year_start": false, + "data_type": null, + "currency": "RUB", + "header_variant": 1 + }, + "group_schema": [ + { + "type": "ACCOUNT", + "name": "Счет" + }, + { + "type": "OTHER", + "name": "Основные средства" + } + ], + "columns": { + "opening_debit": "E", + "opening_credit": "F", + "turnover_debit": "G", + "turnover_credit": "H", + "closing_debit": "I", + "closing_credit": "J" + }, + "rows": [ + { + "row_number": 9, + "level": 0, + "parent_row_number": null, + "row_value": "02", + "group_type": "ACCOUNT", + "group_name": "Счет", + "account_code_raw": "02", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": "300000.00", + "turnover_debit": "20000.00", + "turnover_credit": "30000.00", + "closing_debit": null, + "closing_credit": "310000.00", + "extra": { + "Показа-\nтели": "БУ" + } + }, + { + "row_number": 10, + "level": 1, + "parent_row_number": 9, + "row_value": "НУ", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "02", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "NU", + "opening_debit": null, + "opening_credit": "300000.02", + "turnover_debit": "20000.00", + "turnover_credit": "30000.03", + "closing_debit": null, + "closing_credit": "310000.05", + "extra": { + "Показа-\nтели": "НУ" + } + }, + { + "row_number": 11, + "level": 1, + "parent_row_number": 9, + "row_value": "Печь подовая", + "group_type": "OTHER", + "group_name": "Основные средства", + "account_code_raw": "02", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": "100000.00", + "turnover_debit": "20000.00", + "turnover_credit": "10000.00", + "closing_debit": null, + "closing_credit": "90000.00", + "extra": { + "Показа-\nтели": "БУ" + } + }, + { + "row_number": 12, + "level": 2, + "parent_row_number": 11, + "row_value": "НУ", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "02", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "NU", + "opening_debit": null, + "opening_credit": "100000.02", + "turnover_debit": "20000.00", + "turnover_credit": "10000.01", + "closing_debit": null, + "closing_credit": "90000.03", + "extra": { + "Показа-\nтели": "НУ" + } + }, + { + "row_number": 13, + "level": 1, + "parent_row_number": 9, + "row_value": "Плита индукционная", + "group_type": "OTHER", + "group_name": "Основные средства", + "account_code_raw": "02", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": "200000.00", + "turnover_debit": null, + "turnover_credit": "20000.00", + "closing_debit": null, + "closing_credit": "220000.00", + "extra": { + "Показа-\nтели": "БУ" + } + }, + { + "row_number": 14, + "level": 2, + "parent_row_number": 13, + "row_value": "НУ", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "02", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "NU", + "opening_debit": null, + "opening_credit": "200000.00", + "turnover_debit": null, + "turnover_credit": "20000.02", + "closing_debit": null, + "closing_credit": "220000.02", + "extra": { + "Показа-\nтели": "НУ" + } + }, + { + "row_number": 15, + "level": 0, + "parent_row_number": null, + "row_value": "Итого", + "group_type": "TOTAL", + "group_name": null, + "account_code_raw": null, + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": "300000.00", + "turnover_debit": "20000.00", + "turnover_credit": "30000.00", + "closing_debit": null, + "closing_credit": "310000.00", + "extra": { + "Показа-\nтели": "БУ" + } + }, + { + "row_number": 16, + "level": 0, + "parent_row_number": null, + "row_value": "НУ", + "group_type": "TOTAL", + "group_name": null, + "account_code_raw": null, + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "NU", + "opening_debit": null, + "opening_credit": "300000.02", + "turnover_debit": "20000.00", + "turnover_credit": "30000.03", + "closing_debit": null, + "closing_credit": "310000.05", + "extra": { + "Показа-\nтели": "НУ" + } + } + ], + "checks": { + "total_row_matches_root": true, + "balance_identity_violations": [], + "parent_sum_violations": [] + } + } + ] +} diff --git a/golden/expected_osv_parse/synthetic/s34_indicator_column_qty_val_diff.json b/golden/expected_osv_parse/synthetic/s34_indicator_column_qty_val_diff.json new file mode 100644 index 0000000..0c67b2e --- /dev/null +++ b/golden/expected_osv_parse/synthetic/s34_indicator_column_qty_val_diff.json @@ -0,0 +1,259 @@ +{ + "schema_version": "2.0", + "service": { + "name": "tabular-parser" + }, + "status": "done", + "metrics": { + "rows": 8, + "warnings": [] + }, + "documents": [ + { + "document_type": "OSV", + "locator": "sheet:Лист_1", + "status": "done", + "warnings": [ + { + "code": "OSV_HIERARCHY_BY_OUTLINE", + "severity": "info", + "message": "иерархия строк — по группировке листа (outline)" + }, + { + "code": "OSV_ROWS", + "severity": "info", + "message": "строка 16: метка «Ед.» в колонке «Показатели» не распознана — строка не участвует в проверках" + } + ], + "header": { + "organization_name": "ООО \"Тестовая организация\"", + "organization_inn": null, + "account_code_raw": "60", + "period_text": "3 квартал 2025 г.", + "period_year": 2025, + "period_quarter": "Q3", + "is_cumulative": false, + "period_start": "2025-07-01", + "period_end": "2025-09-30", + "is_from_year_start": false, + "data_type": "BU", + "currency": "RUB", + "header_variant": 1 + }, + "group_schema": [ + { + "type": "ACCOUNT", + "name": "Счет" + }, + { + "type": "COUNTERPARTY", + "name": "Контрагенты" + } + ], + "columns": { + "opening_debit": "E", + "opening_credit": "F", + "turnover_debit": "G", + "turnover_credit": "H", + "closing_debit": "I", + "closing_credit": "J" + }, + "rows": [ + { + "row_number": 9, + "level": 0, + "parent_row_number": null, + "row_value": "60", + "group_type": "ACCOUNT", + "group_name": "Счет", + "account_code_raw": "60", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "1000.00", + "opening_credit": "400.00", + "turnover_debit": "600.00", + "turnover_credit": "300.00", + "closing_debit": "1200.00", + "closing_credit": "300.00", + "extra": { + "Показа-\nтели": "БУ" + } + }, + { + "row_number": 10, + "level": 1, + "parent_row_number": 9, + "row_value": "ООО Альфа", + "group_type": "COUNTERPARTY", + "group_name": "Контрагенты", + "account_code_raw": "60", + "counterparty_name": "ООО Альфа", + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "1000.00", + "opening_credit": null, + "turnover_debit": "500.00", + "turnover_credit": "300.00", + "closing_debit": "1200.00", + "closing_credit": null, + "extra": { + "Показа-\nтели": "БУ" + } + }, + { + "row_number": 11, + "level": 2, + "parent_row_number": 10, + "row_value": "Вал.", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "60", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "CURRENCY", + "opening_debit": "12.50", + "opening_credit": null, + "turnover_debit": "6.00", + "turnover_credit": "3.00", + "closing_debit": "15.50", + "closing_credit": null, + "extra": { + "Показа-\nтели": "Вал." + } + }, + { + "row_number": 12, + "level": 2, + "parent_row_number": 10, + "row_value": "Кол.", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "60", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "QUANTITY", + "opening_debit": "3.00", + "opening_credit": null, + "turnover_debit": null, + "turnover_credit": null, + "closing_debit": "3.00", + "closing_credit": null, + "extra": { + "Показа-\nтели": "Кол." + } + }, + { + "row_number": 13, + "level": 1, + "parent_row_number": 9, + "row_value": "ООО Бета", + "group_type": "COUNTERPARTY", + "group_name": "Контрагенты", + "account_code_raw": "60", + "counterparty_name": "ООО Бета", + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": "400.00", + "turnover_debit": "100.00", + "turnover_credit": null, + "closing_debit": null, + "closing_credit": "300.00", + "extra": { + "Показа-\nтели": "БУ" + } + }, + { + "row_number": 14, + "level": 2, + "parent_row_number": 13, + "row_value": "ПР", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "60", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": null, + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "10.00", + "turnover_credit": null, + "closing_debit": "10.00", + "closing_credit": null, + "extra": { + "Показа-\nтели": "ПР" + } + }, + { + "row_number": 15, + "level": 2, + "parent_row_number": 13, + "row_value": "ВР", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "60", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": null, + "opening_debit": null, + "opening_credit": "5.00", + "turnover_debit": null, + "turnover_credit": null, + "closing_debit": null, + "closing_credit": "5.00", + "extra": { + "Показа-\nтели": "ВР" + } + }, + { + "row_number": 16, + "level": 2, + "parent_row_number": 13, + "row_value": "Ед.", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "60", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": null, + "opening_debit": "1.00", + "opening_credit": null, + "turnover_debit": null, + "turnover_credit": null, + "closing_debit": "1.00", + "closing_credit": null, + "extra": { + "Показа-\nтели": "Ед." + } + }, + { + "row_number": 17, + "level": 0, + "parent_row_number": null, + "row_value": "Итого", + "group_type": "TOTAL", + "group_name": null, + "account_code_raw": null, + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "1000.00", + "opening_credit": "400.00", + "turnover_debit": "600.00", + "turnover_credit": "300.00", + "closing_debit": "1200.00", + "closing_credit": "300.00", + "extra": { + "Показа-\nтели": "БУ" + } + } + ], + "checks": { + "total_row_matches_root": true, + "balance_identity_violations": [], + "parent_sum_violations": [] + } + } + ] +} diff --git a/golden/expected_osv_parse/synthetic/s35_currency_slices.json b/golden/expected_osv_parse/synthetic/s35_currency_slices.json new file mode 100644 index 0000000..d413111 --- /dev/null +++ b/golden/expected_osv_parse/synthetic/s35_currency_slices.json @@ -0,0 +1,217 @@ +{ + "schema_version": "2.0", + "service": { + "name": "tabular-parser" + }, + "status": "done", + "metrics": { + "rows": 7, + "warnings": [] + }, + "documents": [ + { + "document_type": "OSV", + "locator": "sheet:Лист_1", + "status": "done", + "warnings": [ + { + "code": "OSV_HIERARCHY_BY_OUTLINE", + "severity": "info", + "message": "иерархия строк — по группировке листа (outline)" + } + ], + "header": { + "organization_name": "ООО \"Тестовая организация\"", + "organization_inn": null, + "account_code_raw": "60", + "period_text": "3 квартал 2025 г.", + "period_year": 2025, + "period_quarter": "Q3", + "is_cumulative": false, + "period_start": "2025-07-01", + "period_end": "2025-09-30", + "is_from_year_start": false, + "data_type": "BU", + "currency": "RUB", + "header_variant": 1 + }, + "group_schema": [ + { + "type": "ACCOUNT", + "name": "Счет" + }, + { + "type": "COUNTERPARTY", + "name": "Контрагенты" + } + ], + "columns": { + "opening_debit": "E", + "opening_credit": "F", + "turnover_debit": "G", + "turnover_credit": "H", + "closing_debit": "I", + "closing_credit": "J" + }, + "rows": [ + { + "row_number": 9, + "level": 0, + "parent_row_number": null, + "row_value": "60", + "group_type": "ACCOUNT", + "group_name": "Счет", + "account_code_raw": "60", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "9000.00", + "opening_credit": "2000.00", + "turnover_debit": "1000.00", + "turnover_credit": "500.00", + "closing_debit": "10000.00", + "closing_credit": "2500.00", + "extra": null + }, + { + "row_number": 10, + "level": 1, + "parent_row_number": 9, + "row_value": "60.21", + "group_type": "ACCOUNT", + "group_name": "Счет", + "account_code_raw": "60.21", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "9000.00", + "opening_credit": "2000.00", + "turnover_debit": "1000.00", + "turnover_credit": "500.00", + "closing_debit": "10000.00", + "closing_credit": "2500.00", + "extra": null + }, + { + "row_number": 11, + "level": 2, + "parent_row_number": 10, + "row_value": "ООО Альфа", + "group_type": "COUNTERPARTY", + "group_name": "Контрагенты", + "account_code_raw": "60.21", + "counterparty_name": "ООО Альфа", + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "9000.00", + "opening_credit": "2000.00", + "turnover_debit": "1000.00", + "turnover_credit": "500.00", + "closing_debit": "10000.00", + "closing_credit": "2500.00", + "extra": null + }, + { + "row_number": 12, + "level": 3, + "parent_row_number": 11, + "row_value": "Валюта USD", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "60.21", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "9000.00", + "opening_credit": null, + "turnover_debit": "1000.00", + "turnover_credit": null, + "closing_debit": "10000.00", + "closing_credit": null, + "extra": null + }, + { + "row_number": 13, + "level": 4, + "parent_row_number": 12, + "row_value": "В валюте", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "60.21", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "CURRENCY", + "opening_debit": "100.00", + "opening_credit": null, + "turnover_debit": "11.00", + "turnover_credit": null, + "closing_debit": "111.00", + "closing_credit": null, + "extra": null + }, + { + "row_number": 14, + "level": 3, + "parent_row_number": 11, + "row_value": "Валюта EUR", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "60.21", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": "2000.00", + "turnover_debit": null, + "turnover_credit": "500.00", + "closing_debit": null, + "closing_credit": "2500.00", + "extra": null + }, + { + "row_number": 15, + "level": 4, + "parent_row_number": 14, + "row_value": "В валюте", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "60.21", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "CURRENCY", + "opening_debit": null, + "opening_credit": "20.00", + "turnover_debit": null, + "turnover_credit": "5.00", + "closing_debit": null, + "closing_credit": "25.00", + "extra": null + }, + { + "row_number": 16, + "level": 0, + "parent_row_number": null, + "row_value": "Итого", + "group_type": "TOTAL", + "group_name": null, + "account_code_raw": null, + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "9000.00", + "opening_credit": "2000.00", + "turnover_debit": "1000.00", + "turnover_credit": "500.00", + "closing_debit": "10000.00", + "closing_credit": "2500.00", + "extra": null + } + ], + "checks": { + "total_row_matches_root": true, + "balance_identity_violations": [], + "parent_sum_violations": [] + } + } + ] +} diff --git a/golden/expected_osv_parse/synthetic/s36_no_data_type_header.json b/golden/expected_osv_parse/synthetic/s36_no_data_type_header.json new file mode 100644 index 0000000..91d0bec --- /dev/null +++ b/golden/expected_osv_parse/synthetic/s36_no_data_type_header.json @@ -0,0 +1,151 @@ +{ + "schema_version": "2.0", + "service": { + "name": "tabular-parser" + }, + "status": "done", + "metrics": { + "rows": 3, + "warnings": [] + }, + "documents": [ + { + "document_type": "OSV", + "locator": "sheet:Лист_1", + "status": "done", + "warnings": [ + { + "code": "OSV_HIERARCHY_BY_OUTLINE", + "severity": "info", + "message": "иерархия строк — по группировке листа (outline)" + }, + { + "code": "OSV_HEADER", + "severity": "info", + "message": "тип выводимых данных (БУ/НУ/сумма) в шапке не найден" + }, + { + "code": "OSV_HEADER", + "severity": "info", + "message": "вид данных в шапке не указан — строки без метки приняты как БУ" + } + ], + "header": { + "organization_name": "ООО \"Тестовая организация\"", + "organization_inn": null, + "account_code_raw": "60", + "period_text": "3 квартал 2025 г.", + "period_year": 2025, + "period_quarter": "Q3", + "is_cumulative": false, + "period_start": "2025-07-01", + "period_end": "2025-09-30", + "is_from_year_start": false, + "data_type": null, + "currency": "RUB", + "header_variant": 1 + }, + "group_schema": [ + { + "type": "ACCOUNT", + "name": "Счет" + }, + { + "type": "COUNTERPARTY", + "name": "Контрагенты" + } + ], + "columns": { + "opening_debit": "E", + "opening_credit": "F", + "turnover_debit": "G", + "turnover_credit": "H", + "closing_debit": "I", + "closing_credit": "J" + }, + "rows": [ + { + "row_number": 9, + "level": 0, + "parent_row_number": null, + "row_value": "60", + "group_type": "ACCOUNT", + "group_name": "Счет", + "account_code_raw": "60", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "1000.00", + "opening_credit": "400.00", + "turnover_debit": "600.00", + "turnover_credit": "300.00", + "closing_debit": "1200.00", + "closing_credit": "300.00", + "extra": null + }, + { + "row_number": 10, + "level": 1, + "parent_row_number": 9, + "row_value": "ООО Альфа", + "group_type": "COUNTERPARTY", + "group_name": "Контрагенты", + "account_code_raw": "60", + "counterparty_name": "ООО Альфа", + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "1000.00", + "opening_credit": null, + "turnover_debit": "500.00", + "turnover_credit": "300.00", + "closing_debit": "1200.00", + "closing_credit": null, + "extra": null + }, + { + "row_number": 11, + "level": 1, + "parent_row_number": 9, + "row_value": "ООО Бета", + "group_type": "COUNTERPARTY", + "group_name": "Контрагенты", + "account_code_raw": "60", + "counterparty_name": "ООО Бета", + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": "400.00", + "turnover_debit": "100.00", + "turnover_credit": null, + "closing_debit": null, + "closing_credit": "300.00", + "extra": null + }, + { + "row_number": 12, + "level": 0, + "parent_row_number": null, + "row_value": "Итого", + "group_type": "TOTAL", + "group_name": null, + "account_code_raw": null, + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": "1000.00", + "opening_credit": "400.00", + "turnover_debit": "600.00", + "turnover_credit": "300.00", + "closing_debit": "1200.00", + "closing_credit": "300.00", + "extra": null + } + ], + "checks": { + "total_row_matches_root": true, + "balance_identity_violations": [], + "parent_sum_violations": [] + } + } + ] +} diff --git a/osv/synthetic/s33_indicator_column_bu_nu.xlsx b/osv/synthetic/s33_indicator_column_bu_nu.xlsx new file mode 100644 index 0000000..196c30f Binary files /dev/null and b/osv/synthetic/s33_indicator_column_bu_nu.xlsx differ diff --git a/osv/synthetic/s34_indicator_column_qty_val_diff.xlsx b/osv/synthetic/s34_indicator_column_qty_val_diff.xlsx new file mode 100644 index 0000000..db13ac6 Binary files /dev/null and b/osv/synthetic/s34_indicator_column_qty_val_diff.xlsx differ diff --git a/osv/synthetic/s35_currency_slices.xlsx b/osv/synthetic/s35_currency_slices.xlsx new file mode 100644 index 0000000..2f7cca4 Binary files /dev/null and b/osv/synthetic/s35_currency_slices.xlsx differ diff --git a/osv/synthetic/s36_no_data_type_header.xlsx b/osv/synthetic/s36_no_data_type_header.xlsx new file mode 100644 index 0000000..0367ba0 Binary files /dev/null and b/osv/synthetic/s36_no_data_type_header.xlsx differ