# Приёмка liderra.ru — ПУНКТ №19: Гейт реквизитов + ИНН (от первого проекта до «Готово к оплате»)

> **Для исполнителя:** формат PR1 (одобрен 20.06). Каждый шаг = `🔧 Код-факт (file:line)` · `🎬 Действие` · `📋 ОТЧЁТ (было→ожидали→стало + 📸/📝)` · `❌ Если не так`. Техника «под капотом»; владельцу — человеческие карточки.

**Цель:** показать «лесенку» оформления клиента: пока не заполнены минимальные реквизиты — портал **не даёт создать первый проект** (мягко подсказывает, что нужно); по **ИНН** портал сам подтягивает название и тип организации (не надо вводить вручную); после минимальных реквизитов гейт снимается; а когда заполнены полные платёжные реквизиты — появляется чип **«Готово к оплате»**.

**Что снимаем глазами:** вкладка **Реквизиты**, раздел **Проекты** (гейт), чип «Готово к оплате». Живые 📸.

**Источник сценария:** свод проверок №19 (ONB-REQ-GATE/INN/FULL); R3b «онбординг/UI».

---

## 🔧 Код-факты (подтверждено чтением 20.06)

- **Гейт первого проекта** — без минимальных реквизитов `POST /api/projects` → **422 `requisites_required`** — [ProjectController.php:131-133](../../../app/app/Http/Controllers/Api/ProjectController.php#L131-L133).
- **Минимальные («лёгкие») реквизиты** — нужны `subject_type + contact_name + contact_phone`; для ЮЛ/ИП ещё `inn` — [RequisitesService::isLightComplete :31-45](../../../app/app/Services/Requisites/RequisitesService.php#L31-L45).
- **Подтяжка по ИНН** — `POST /api/tenant/requisites/lookup-inn` через DaData (`PartyLookup::findByInn`): возвращает название и подсказку типа (`sole_proprietor`/`legal_entity`), **ничего не сохраняет** (мягкая подтяжка) — [TenantRequisitesController.php:41-54](../../../app/app/Http/Controllers/Api/TenantRequisitesController.php#L41-L54).
- **Чип «Готово к оплате»** — полные платёжные реквизиты: при заполненном `bank_account` ставится `requisites_completed_at` — [RequisitesService::upsert :25](../../../app/app/Services/Requisites/RequisitesService.php#L25).
- ⚠️ DaData локально выключена (засев) — подтяжка ИНН работает на проде; локально ИНН вводим вручную, гейт/чип показываем.

---

## Шаг 19-1 — Без реквизитов первый проект не создать

**🔧 Код:** [ProjectController::store :131-133](../../../app/app/Http/Controllers/Api/ProjectController.php#L131-L133).
**🎬 Действие (лок):** новым клиентом (реквизиты пусты) попытаться создать первый проект.

**📋 ОТЧЁТ:**
| Что | Было | Ожидалось | Стало (факт) | Чем подтверждаем |
|---|---|---|---|---|
| Создание проекта | форма | **не даёт**: «нужны реквизиты» | _(слот прогона)_ | 📸 Проекты (подсказка про реквизиты) |
| Куда ведёт | — | на вкладку Реквизиты | _(слот)_ | 📸 переход на Реквизиты |

**💡 Что внутри:** прежде чем начать получать заявки, клиент должен указать, кто он (физлицо/ИП/организация) и как с ним связаться. Пока этого нет — портал мягко не пускает к созданию проекта и показывает, что заполнить. Это нужно, чтобы потом корректно выставлять документы и оплату.

**❌ Если не так:** проект создаётся без реквизитов → дефект гейта.

---

## Шаг 19-2 — По ИНН подтягиваются название и тип (🟦 на проде; лок — вручную)

**🔧 Код:** [lookupInn :41-54](../../../app/app/Http/Controllers/Api/TenantRequisitesController.php#L41-L54).
**🎬 Действие (прод):** ввести ИНН → портал подсказывает название организации и тип лица.
**🎬 Действие (лок):** DaData выключена — ввести данные вручную; шаг подтяжки показать на прод-прогоне.

**📋 ОТЧЁТ:**
| Что | Было | Ожидалось | Стало (факт) | Чем подтверждаем |
|---|---|---|---|---|
| Ввод ИНН | пусто | подтянулись название + тип (ЮЛ/ИП) | _(слот боевого прогона)_ | 📸 Реквизиты (автозаполнение по ИНН) |

**💡 Что внутри:** клиенту не нужно вручную набирать название своей фирмы — он вводит ИНН, и портал сам подставляет официальное название и понимает, организация это или ИП. Быстро и без ошибок.

**❌ Если не так:** ИНН не подтягивает данные на проде → DaData недоступна (проверить ключ/лимит).

---

## Шаг 19-3 — Заполнили минимум → гейт снят, проект создаётся

**🔧 Код:** [isLightComplete :31-45](../../../app/app/Services/Requisites/RequisitesService.php#L31-L45); гейт — [ProjectController :131-133](../../../app/app/Http/Controllers/Api/ProjectController.php#L131-L133).
**🎬 Действие (лок):** заполнить минимальные реквизиты (тип лица + ФИО/контакт + телефон, +ИНН для ЮЛ/ИП); снова создать проект.

**📋 ОТЧЁТ:**
| Что | Было | Ожидалось | Стало (факт) | Чем подтверждаем |
|---|---|---|---|---|
| Реквизиты | пусты | минимум заполнен | _(слот)_ | 📸 Реквизиты (заполнено) |
| Создание проекта | блок | **проходит** (гейт снят) | _(слот)_ | 📸 Проекты (проект создан) |

**💡 Что внутри:** как только клиент указал базовое — кто он и как связаться — портал снимает ограничение, и можно создавать проекты и получать заявки. Минимум для старта небольшой.

**❌ Если не так:** гейт держится после заполнения минимума → дефект.

---

## Шаг 19-4 — Полные платёжные реквизиты → чип «Готово к оплате»

**🔧 Код:** [upsert :25](../../../app/app/Services/Requisites/RequisitesService.php#L25).
**🎬 Действие (лок):** дозаполнить полные платёжные реквизиты (включая банковский счёт).

**📋 ОТЧЁТ:**
| Что | Было | Ожидалось | Стало (факт) | Чем подтверждаем |
|---|---|---|---|---|
| Чип статуса реквизитов | нет | **«Готово к оплате»** | _(слот)_ | 📸 Реквизиты (чип «Готово к оплате») |

**💡 Что внутри:** когда клиент заполнил и платёжные данные (банковский счёт) — портал отмечает его как «готов к оплате». Это значит, что с ним можно проводить расчёты по всем правилам. Появляется наглядная отметка готовности.

**❌ Если не так:** чип не появляется при полных реквизитах → дефект статуса.

---

## Verification №19 (выход из пункта)
- [ ] 📸 Без реквизитов первый проект не создать (подсказка + переход на Реквизиты).
- [ ] 🟦 (прод) ИНН подтягивает название и тип.
- [ ] 📸 После минимума гейт снят, проект создаётся.
- [ ] 📸 При полных платёжных реквизитах — чип «Готово к оплате».

## 📸 vs 📝 в этом пункте
- **📸 Скриншот:** Проекты (гейт), вкладка Реквизиты (заполнение, чип), создание проекта после снятия гейта.
- **📝 Текст:** `requisites_completed_at`, тип лица — при необходимости текстом.

## Грабли
- DaData локально выключена → подтяжку ИНН показываем на прод-прогоне; локально вводим вручную (гейт/чип — локально).
- Для ЮЛ/ИП ИНН обязателен для снятия гейта; для физлица — нет.
- Связка с PR2-0 (то же предусловие) и онбордингом №18.
