Если счет на оплату не создается автоматически, заказ может быть сохранен, но документ не появляется в кабинете и не отправляется клиенту. Сбой бывает в условии запуска, проверке реквизитов, резервировании номера, фоновой очереди, генераторе PDF или файловом хранилище.
Не создавайте документ вручную с тем же номером до проверки статуса операции. Повторный запуск способен сформировать два счета или нарушить последовательность нумерации.
Найдите последний успешный этап
Одна запись заказа проходит несколько независимых стадий формирования документа.
- Задание генерации вообще не создается.
- Номер счета зарезервирован, но PDF отсутствует.
- Документ есть в хранилище, но не прикреплен к заказу.
- Счет создан, однако письмо клиенту не отправлено.
Почему возникает проблема
Чаще всего автоматизация останавливается на неполных данных или необработанной ошибке фонового worker.
- Статус заказа не соответствует условию запуска.
- Отсутствуют ИНН, адрес, валюта или позиции документа.
- Уникальный номер конфликтует при параллельных заказах.
- Очередь не обрабатывается либо задание завершилось с retry.
- Шаблон, шрифт или каталог PDF недоступен процессу.
Пошаговая диагностика
Используйте ID заказа и correlation ID, чтобы связать записи разных компонентов.
- Проверьте событие и статус, запускающие создание счета.
- Сверьте обязательные реквизиты и итоговые суммы.
- Найдите задание в очереди и первую ошибку worker.
- Проверьте резервирование номера и transaction в базе.
- Отдельно протестируйте PDF, хранилище и отправку письма.
Сделайте операцию идемпотентной
Повторный запуск одного заказа должен возвращать существующий счет, а не создавать новый.
- Заказ связан с одним типом документа уникальным ограничением.
- Номер резервируется внутри надежной transaction.
- Статусы queued, generated, stored и sent сохраняются отдельно.
- Retry продолжает с безопасного этапа.
Как исправить проблему
Восстанавливайте конкретный этап, не перезапуская весь сценарий без проверки.
- Исправьте trigger и валидацию реквизитов до постановки задания.
- Защитите нумерацию от параллельных операций.
- Восстановите worker, зависимости шаблона и права каталога.
- Сохраните PDF атомарно и свяжите его с заказом.
- Отправляйте письмо отдельным идемпотентным заданием.
Как проверить результат
- Один тестовый заказ создает один счет.
- Повторный вызов не меняет номер и не дублирует документ.
- PDF открывается и содержит правильные реквизиты и сумму.
- Статус отправки и причина ошибки видны администратору.
Типичные ошибки
- Считать письмо доказательством успешной генерации.
- Получать номер через COUNT документов.
- Повторять всю операцию после timeout без idempotency.
- Сохранять PDF сразу в рабочий путь частями.
Как предотвратить повторение
- Добавьте статусы этапов и метрики очереди.
- Проверяйте шаблон и шрифты при deploy.
- Тестируйте параллельное создание счетов.
- Храните аудит номера, заказа и отправки.
Когда нужна помощь
Если счет не создается автоматически, я прослежу заказ, очередь, нумерацию, PDF и отправку, исправлю сбой и настрою безопасный повтор без дублей.