6.4 KiB
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 показан режим «Встречные записи» с первой парой; кнопка «Назад» браузера не проходит по переключениям режимов