Если счет на оплату не создается автоматически, заказ может быть сохранен, но документ не появляется в кабинете и не отправляется клиенту. Сбой бывает в условии запуска, проверке реквизитов, резервировании номера, фоновой очереди, генераторе PDF или файловом хранилище.

Не создавайте документ вручную с тем же номером до проверки статуса операции. Повторный запуск способен сформировать два счета или нарушить последовательность нумерации.

Найдите последний успешный этап

Одна запись заказа проходит несколько независимых стадий формирования документа.

  • Задание генерации вообще не создается.
  • Номер счета зарезервирован, но PDF отсутствует.
  • Документ есть в хранилище, но не прикреплен к заказу.
  • Счет создан, однако письмо клиенту не отправлено.

Почему возникает проблема

Чаще всего автоматизация останавливается на неполных данных или необработанной ошибке фонового worker.

  • Статус заказа не соответствует условию запуска.
  • Отсутствуют ИНН, адрес, валюта или позиции документа.
  • Уникальный номер конфликтует при параллельных заказах.
  • Очередь не обрабатывается либо задание завершилось с retry.
  • Шаблон, шрифт или каталог PDF недоступен процессу.

Пошаговая диагностика

Используйте ID заказа и correlation ID, чтобы связать записи разных компонентов.

  1. Проверьте событие и статус, запускающие создание счета.
  2. Сверьте обязательные реквизиты и итоговые суммы.
  3. Найдите задание в очереди и первую ошибку worker.
  4. Проверьте резервирование номера и transaction в базе.
  5. Отдельно протестируйте PDF, хранилище и отправку письма.

Сделайте операцию идемпотентной

Повторный запуск одного заказа должен возвращать существующий счет, а не создавать новый.

  • Заказ связан с одним типом документа уникальным ограничением.
  • Номер резервируется внутри надежной transaction.
  • Статусы queued, generated, stored и sent сохраняются отдельно.
  • Retry продолжает с безопасного этапа.

Как исправить проблему

Восстанавливайте конкретный этап, не перезапуская весь сценарий без проверки.

  1. Исправьте trigger и валидацию реквизитов до постановки задания.
  2. Защитите нумерацию от параллельных операций.
  3. Восстановите worker, зависимости шаблона и права каталога.
  4. Сохраните PDF атомарно и свяжите его с заказом.
  5. Отправляйте письмо отдельным идемпотентным заданием.

Как проверить результат

  • Один тестовый заказ создает один счет.
  • Повторный вызов не меняет номер и не дублирует документ.
  • PDF открывается и содержит правильные реквизиты и сумму.
  • Статус отправки и причина ошибки видны администратору.

Типичные ошибки

  • Считать письмо доказательством успешной генерации.
  • Получать номер через COUNT документов.
  • Повторять всю операцию после timeout без idempotency.
  • Сохранять PDF сразу в рабочий путь частями.

Как предотвратить повторение

  • Добавьте статусы этапов и метрики очереди.
  • Проверяйте шаблон и шрифты при deploy.
  • Тестируйте параллельное создание счетов.
  • Храните аудит номера, заказа и отправки.

Когда нужна помощь

Если счет не создается автоматически, я прослежу заказ, очередь, нумерацию, PDF и отправку, исправлю сбой и настрою безопасный повтор без дублей.