feat(osv): форматы пакета ДКБ — период-диапазон, Итого по Σ уровня 0, «Итого развернутое», шапка ОСВ 63 (#11) #13
@ -112,8 +112,8 @@ def _find_total(sheet: Sheet, header: TableHeader, rows: Sequence[int], rules: R
|
||||
строкой «Итого»), поэтому «корневой уровень» проверяется по оформлению: outline level и отступ строки не больше,
|
||||
чем у любой другой строки таблицы. Так контрагент «Итого-Сервис» в середине данных не TOTAL (за ним есть настоящее
|
||||
«Итого»), а последний «Итого-Сервис» под счётом с outline/отступом — тоже не TOTAL (T3.3).
|
||||
Вторая итоговая строка («Итого развернутое», `total_row_secondary`) основной не бывает: основная — «Итого» перед ней;
|
||||
без обычной «Итого» вторая строка служит единственной итоговой.
|
||||
Вторая итоговая строка («Итого развернутое», `total_row_secondary`) основной не бывает: основная — «Итого»
|
||||
перед ней; без обычной «Итого» вторая строка служит единственной итоговой.
|
||||
Известный риск: на листе без outline и отступов последняя строка-контрагент «Итого-…» при отсутствии настоящего
|
||||
«Итого» станет TOTAL; это ловит проверка «TOTAL = корень» (§1.4).
|
||||
"""
|
||||
|
||||
@ -269,7 +269,8 @@ def resolve_levels(rows: Sequence[BodyRow], total_row: int | None, deadline: Dea
|
||||
"""Первая стратегия каскада, давшая непротиворечивое дерево; иначе `InvalidFormatError`.
|
||||
|
||||
«Итого» (`total_row`) и строки после неё (вторые итоговые) в стратегии не передаются и получают уровень 0: это
|
||||
контрольная сумма документа, а не ребёнок последнего счёта. Меньше двух строк, кроме «Итого», — тривиальное дерево корней `TRIVIAL_STRATEGY`.
|
||||
контрольная сумма документа, а не ребёнок последнего счёта. Меньше двух строк, кроме «Итого», — тривиальное
|
||||
дерево корней `TRIVIAL_STRATEGY`.
|
||||
"""
|
||||
# «Итого» и вторые итоговые строки за ней («Итого развернутое») — не данные: уровень 0 без участия стратегий
|
||||
totals = [] if total_row is None else [item for item in rows if item.row >= total_row]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user