2026-10-27 21:56:59 +04:00

6.4 KiB
Raw Blame History

ADDED Requirements

Requirement: Баннер строк без ИНН

Пока в сводке unmapped_total > 0, над таблицей свода SHALL показываться баннер (стиль osv-mapping-alert макета [30]): заголовок «Есть организации без ИНН и без сопоставления», текст «Осталось: N. Несопоставленные учитываются как внешние; при необходимости укажите организацию кнопкой «Указать».» и кнопка «Показать ЮЛ без ИНН» / «Показать все строки» (фильтр unmapped, как прежде). Баннер MUST NOT требовать сопоставить все строки для перехода к следующему шагу: переход не блокируется (решение заказчика 16.10.2026, AURORA-1388). При unmapped_total = 0 баннера нет.

Scenario: Есть строки без ИНН

  • WHEN открыт свод версии РБ 2024 Q3 до сопоставления (unmapped_total = 1260)
  • THEN баннер «Есть организации без ИНН и без сопоставления», «Осталось: 1260. Несопоставленные учитываются как внешние…»; слов «Для перехода к следующему шагу сопоставьте все» на экране нет

Requirement: Режим «Встречные записи»

Над сводом на вкладке «ОСВ» SHALL быть переключатель режимов «Свод | Встречные записи (N)», N — число пар summary.counter_pairs. Режим — параметр адреса ?view=pairs (без параметра — «Свод»); переключение режима MUST NOT добавлять запись в историю браузера. Шапка свода (единицы, знаки после запятой) действует в обоих режимах.

В режиме «Встречные записи» экран SHALL показывать сверху список пар, под ним на всю ширину две таблицы одна под другой:

  • сверху — список пар одной строкой «таблеток» с переносом, в порядке ответа, строка пары «Б ← А» (имена missing_name и holder_name) с числами holder_rows и missing_unmapped_rows; выбранная пара подсвечена; при входе выбрана первая пара либо пара из адреса (?view=pairs&holder=<id>&missing=<id>);
  • первая таблица — «У <А> есть записи с <Б>»: строки GET …/osv?legal_entity_id=А&counterparty_id=Б — счёт, контрагент, обороты Дт/Кт, сальдо на конец Дт/Кт;
  • вторая таблица — «У <Б> — строки без ИНН и без сопоставления»: строки GET …/osv?legal_entity_id=Б&unmapped=true — счёт, контрагент, обороты Дт/Кт, сальдо на конец Дт/Кт и «Указать» в каждой строке; над таблицей — поиск по контрагенту (q, ≤ 500 символов, как фильтр свода); постранично, как таблица свода. Все четыре колонки сумм MUST быть видны без горизонтальной прокрутки при ширине окна 1440 px. Если missing_rows_total = 0 — вместо таблицы текст «У <Б> в своде нет строк: ОСВ не привязаны или по ним пробелы»; если строки у Б есть, а без ИНН и без сопоставления нет (missing_unmapped_rows = 0) — текст «Строк без ИНН нет: возможно, ИНН контрагента из файла не найден в справочнике или это пропуск в учёте».

«Указать» SHALL открывать модалку сопоставления из требования «Ручное сопоставление контрагента» с теми же ответами и ошибками; после «Связать» экран SHALL перечитывать сводку и обе таблицы. Если выбранная пара исчезла из списка, выбирается первая оставшаяся; пустой список — текст «Все участники периметра видят друг друга» (переключатель — «Встречные записи (0)»).

Scenario: Пара Русского бисквита

  • WHEN открыт свод версии РБ 2024 Q3 до сопоставления и выбран режим «Встречные записи»
  • THEN переключатель «Встречные записи (1)»; сверху пара «Русский бисквит ← Пекарня Счастливочная»; в первой таблице строки Счастливочной с контрагентом «Русский бисквит»; во второй таблице строки РБ без ИНН, среди них «Пекарня Счастливочная ООО» с «Указать»

Scenario: Сопоставление из режима закрывает пару

  • WHEN во второй таблице у «Пекарня Счастливочная ООО» нажато «Указать» и выбрана ООО «Пекарня Счастливочная»
  • THEN после «Связать» список пар пуст, показан текст «Все участники периметра видят друг друга», переключатель — «Встречные записи (0)»

Scenario: Режим из адреса

  • WHEN открыт адрес …/versions/{id}/osv?view=pairs
  • THEN показан режим «Встречные записи» с первой парой; кнопка «Назад» браузера не проходит по переключениям режимов