Перейти к содержанию

Жизненный цикл связанных сущностей (Edge Cases)

Раздел описывает что происходит при удалении, отключении и изменении конфигурационных сущностей, связанных с активными данными.


Закрытие сделки как «Проигрыш»

Сделка закрыта как Lost (проигрыш):
  ├── Незавершённые продажаы:
  │   ├── Система показывает предупреждение:
  │   │   «У сделки есть N незавершённых продаж. Что сделать?»
  │   ├── Вариант 1: Отменить продажаы → статус «Отменён»
  │   ├── Вариант 2: Оставить как есть → продажаы продолжают жить
  │   └── Вариант 3: Не закрывать сделку (отмена действия)
  ├── Активности: остаются как есть (исторические данные)
  └── Сделка переходит в финальную стадию, обратное перемещение возможно

Переоткрытие сделки

Закрытая сделка (Won или Lost) может быть переоткрыта:
  ├── Кто: Manager+ (Owner/Admin/Manager)
  ├── Куда: на любую активную стадию воронки
  ├── Stage log: добавляется новая запись (как возврат)
  ├── В аудите: событие «переоткрытие сделки» + причина
  └── Продажи: не затрагиваются (если были отменены — остаются отменёнными)

Удаление стадии воронки

Стадия «Квалификация» удаляется, на ней стоят 15 сделок:
  ├── Система НЕ позволяет удалить стадию с активными сделками
  ├── Сообщение: «На стадии "Квалификация" 15 сделок. 
  │   Переместите их на другую стадию перед удалением.»
  ├── Быстрое действие: «Переместить все на [стадия]» (dropdown)
  ├── После перемещения → удаление разрешено
  └── Исторические записи в stage_log сохраняются (название стадии как текст)

Удаление воронки

Воронка удаляется, в ней есть сделки:
  ├── Если это единственная воронка → удаление запрещено
  │   «Невозможно удалить единственную воронку проекта.»
  ├── Если есть другие воронки → перенос:
  │   «В воронке 42 сделки. Переместить в воронку [dropdown]?»
  │   Сделки попадают на первую стадию целевой воронки
  └── Архивация воронки (альтернатива): read-only, новые сделки не создаются

Удаление типа продажаа

Тип продажаа «Зарплатный проект» удаляется:
  ├── Активные продажаы этого типа ЕСТЬ?
  │   ├── Да → удаление запрещено
  │   │   «Есть N активных продаж типа "Зарплатный проект".
  │   │    Завершите или отмените их перед удалением.»
  │   └── Нет → soft delete (корзина 7 дней)
  ├── Завершённые продажаы этого типа: сохраняются, тип хранится как snapshot
  ├── Продукты, ссылающиеся на этот тип: ссылка обнуляется (order_type = null)
  │   Предупреждение: «N продуктов потеряют привязку к типу продажаа.»
  └── Версионирование: существующие продажаы хранят order_type_version

Удаление продукта

Продукт «ЗП Премиум» удаляется:
  ├── Продукт привязан к активным сделкам?
  │   ├── Нет → soft delete
  │   └── Да → предупреждение:
  │       «Продукт используется в N активных сделках.
  │        Удалить продукт? Сделки сохранят название продукта как текст.»
  ├── Продажи: уже созданные продажаы не затрагиваются
  │   (продажа хранит order_type_version, не ссылку на продукт)
  └── В карточке сделки: «Продукт удалён» (серый текст)

Отключение модуля с активными данными

Модуль «Продажи» отключается, есть активные продажаы:
  ├── Предупреждение:
  │   «В модуле "Продажи" есть N незавершённых продаж.
  │    При отключении они станут недоступны (данные не удаляются).»
  ├── Подтверждение → модуль отключается
  ├── Данные НЕ удаляются, НЕ переходят в read-only
  ├── Просто становятся невидимы в UI
  ├── Webhook / финальные действия ПРИОСТАНАВЛИВАЮТСЯ
  ├── DLQ retry ПРИОСТАНАВЛИВАЕТСЯ
  ├── При включении обратно: всё доступно как было
  │   Приостановленные webhook НЕ возобновляются автоматически
  │   (менеджер решает сам: «Повторить отправку»)
  └── В карточке сделки: раздел «Продажи» скрыт (Contextual UI)
      но при включении модуля обратно — продажаы появятся

Аналогично для других модулей:
  ├── Отключение «Активности» → задачи/звонки/встречи невидимы,
  │   напоминания приостанавливаются
  ├── Отключение «Документы» → документы и шаблоны невидимы
  └── Отключение «Контакты» → контакты невидимы,
      но привязки сделок к контактам сохраняются

Удаление контакта/компании с привязками

Контакт «Иванов И.И.» удаляется (soft delete):
  ├── Привязанные сделки: ссылка сохраняется, но контакт помечен «Удалён»
  │   Лёгкие поля сделки НЕ затрагиваются (это текст, не ссылка)
  ├── Привязанные продажаы: аналогично
  ├── Привязанные активности: аналогично
  ├── При восстановлении: все привязки восстанавливаются
  └── При hard delete: привязки обнуляются, лёгкие поля остаются

Компания «Альфа» удаляется (soft delete):
  ├── Many-to-many с контактами: связи помечены «компания удалена»
  │   Контакты НЕ удаляются
  ├── Привязанные сделки: аналогично контакту
  └── Восстановление: все связи восстанавливаются