diff --git a/golden/expected_osv_parse/synthetic/s45_account_label_value_cells.json b/golden/expected_osv_parse/synthetic/s45_account_label_value_cells.json new file mode 100644 index 0000000..3553eaf --- /dev/null +++ b/golden/expected_osv_parse/synthetic/s45_account_label_value_cells.json @@ -0,0 +1,162 @@ +{ + "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_HEADER_ACCOUNT", + "severity": "info", + "message": "иерархия строк — плоский список под счётом шапки (header_account)" + }, + { + "code": "OSV_HEADER", + "severity": "info", + "message": "период (после «за» или «Период:») в шапке не найден" + }, + { + "code": "OSV_HEADER", + "severity": "info", + "message": "тип выводимых данных (БУ/НУ/сумма) в шапке не найден" + }, + { + "code": "OSV_HEADER", + "severity": "info", + "message": "валюта в шапке не найдена" + }, + { + "code": "OSV_HEADER", + "severity": "info", + "message": "вид данных в шапке не указан — строки без метки приняты как БУ" + }, + { + "code": "OSV_ROWS", + "severity": "info", + "message": "вид субконто в шапке не назван: строки аналитики счёта 60 приняты за контрагентов по плану счетов — проверьте" + } + ], + "header": { + "organization_name": "За период", + "organization_inn": null, + "account_code_raw": "60", + "period_text": "", + "period_year": null, + "period_quarter": null, + "is_cumulative": null, + "period_start": null, + "period_end": null, + "is_from_year_start": null, + "data_type": null, + "currency": null, + "header_variant": 1 + }, + "group_schema": [ + { + "type": "ACCOUNT", + "name": "Субконто" + } + ], + "columns": { + "opening_debit": "B", + "opening_credit": "C", + "turnover_debit": "D", + "turnover_credit": "E", + "closing_debit": "F", + "closing_credit": "G" + }, + "rows": [ + { + "row_number": 8, + "level": 0, + "parent_row_number": null, + "row_value": "441", + "group_type": "COUNTERPARTY", + "group_name": null, + "account_code_raw": "60", + "counterparty_name": "441", + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": "108000.00", + "turnover_debit": "108000.00", + "turnover_credit": null, + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 9, + "level": 0, + "parent_row_number": null, + "row_value": "431", + "group_type": "COUNTERPARTY", + "group_name": null, + "account_code_raw": "60", + "counterparty_name": "431", + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": "200.00", + "turnover_debit": "200.00", + "turnover_credit": null, + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 10, + "level": 0, + "parent_row_number": null, + "row_value": "199", + "group_type": "COUNTERPARTY", + "group_name": null, + "account_code_raw": "60", + "counterparty_name": "199", + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": "50.00", + "turnover_debit": "50.00", + "turnover_credit": null, + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 11, + "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": "108250.00", + "turnover_debit": "108250.00", + "turnover_credit": null, + "closing_debit": null, + "closing_credit": null, + "extra": null + } + ], + "checks": { + "total_row_matches_root": true, + "balance_identity_violations": [], + "parent_sum_violations": [] + } + } + ] +} diff --git a/osv/synthetic/README.md b/osv/synthetic/README.md index b527857..883001d 100644 --- a/osv/synthetic/README.md +++ b/osv/synthetic/README.md @@ -62,6 +62,7 @@ cd tabular-parser/api | `s42_subaccounts_totals_reversed.xlsx` | под счётом 76 в шапке идут строки-субсчета «76.2», «76.5», «76.Н», «76.Н.1» (корня «76» нет), «Итого развернутое» перед «Итого» | `account_code_raw=76`, «Итого развернутое» — `TOTAL`, сверка по основной «Итого», `done` | | `s43_subkonto_unnamed_60.xlsx` | счёт 60: корень «60.01» и два элемента аналитики с отступом, вид субконто в шапке не назван; «Итого» перед «Итого развернутое» | `hierarchy=indent`, подстроки — `COUNTERPARTY` по плану счетов с предупреждением `OSV_ROWS`, `done` | | `s44_subkonto_unnamed_10.xlsx` | то же, что `s43`, но счёт 10 (материалы «Мука пшеничная», «Сахар-песок») | счёт 10 не расчётный: подстроки остаются `OTHER` без имени, предупреждения нет, `done` | +| `s45_account_label_value_cells.xlsx` | выгрузка 1С «ОСВ по счёту 60 по контрагентам» (tabular-parser#71, AURORA-1714): слов «по счету» нет, счёт — «Счет Поставщика» \| «60*» в соседних ячейках, «Счет Клиента» без значения; в первой колонке голые числовые коды 441, 431, 199 | `account_code_raw=60`, голые коды не счета, строки `COUNTERPARTY`, `done` | `s17`–`s19` — регрессия извлечения ИНН из текста (issue #9). `s14`–`s16` добавлены тестом покрытия словарей `tabular-parser` (`rules/*.yaml`, решение R-22): каждая запись словаря должна сработать на реальных или синтетических файлах; эти файлы закрывают записи, которых нет в реальных ОСВ. diff --git a/osv/synthetic/s45_account_label_value_cells.xlsx b/osv/synthetic/s45_account_label_value_cells.xlsx new file mode 100644 index 0000000..7425649 Binary files /dev/null and b/osv/synthetic/s45_account_label_value_cells.xlsx differ