Исправлено создание черновика после добавления нового клиента в модальном окне

Проблема: Когда клиент создавался через модальное окно и добавлялся в Select2,
черновик заказа не создавался автоматически, хотя при выборе существующего
клиента все работало.

Причина: draft-creator.js слушает события Select2 при загрузке, но когда
новый клиент динамически добавляется в Select2, события могут не срабатывать
правильно или быть потеряны.

Решение:
1. Добавлен публичный API в draft-creator.js (window.DraftCreator.triggerDraftCreation)
2. После успешного создания клиента в модальном окне явно вызываем API
3. Добавлена небольшая задержка (100ms) для синхронизации с Select2

Теперь черновик создается в обоих случаях:
- При выборе существующего клиента
- При создании нового клиента через модальное окно

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-11 01:17:58 +03:00
parent e0b12f5c7c
commit 2d7a5079f9
2 changed files with 17 additions and 0 deletions

View File

@@ -364,4 +364,12 @@
init(); init();
} }
// Экспортируем публичный API для вызова из модального окна
window.DraftCreator = {
triggerDraftCreation: function() {
console.log('[DraftCreator] Triggered via API');
scheduleCreateDraft();
}
};
})(); })();

View File

@@ -1328,6 +1328,15 @@ document.getElementById('save-customer-btn').addEventListener('click', function(
// Показываем успешное уведомление (автоисчезающее) // Показываем успешное уведомление (автоисчезающее)
showNotification(`✓ Клиент "${data.name}" успешно создан!`, 'success'); showNotification(`✓ Клиент "${data.name}" успешно создан!`, 'success');
// Триггерим создание черновика через draft-creator
// После выбора клиента должно произойти автоматическое создание черновика
// Добавляем небольшую задержку, чтобы Select2 полностью обновился
setTimeout(() => {
if (window.DraftCreator && typeof window.DraftCreator.triggerDraftCreation === 'function') {
window.DraftCreator.triggerDraftCreation();
}
}, 100);
} else { } else {
const errorDiv = document.getElementById('customer-form-errors'); const errorDiv = document.getElementById('customer-form-errors');
errorDiv.innerHTML = '<div class="alert alert-danger mb-0">' + data.error + '</div>'; errorDiv.innerHTML = '<div class="alert alert-danger mb-0">' + data.error + '</div>';