POS deferred order feature

This commit is contained in:
2025-12-08 18:56:14 +03:00
parent a244d82e49
commit 6c19c9e093
4 changed files with 165 additions and 1 deletions

View File

@@ -1984,3 +1984,61 @@ setupInfiniteScroll(); // Установка infinite scroll
// Установить фокус на строку поиска
document.getElementById('searchInput').focus();
// ===== ОТЛОЖЕННЫЙ ЗАКАЗ =====
/**
* Открывает страницу создания заказа с предзаполненными товарами и клиентом
*/
async function createDeferredOrder() {
// Проверяем, что корзина не пуста
if (cart.size === 0) {
alert('Корзина пуста! Добавьте товары в корзину.');
return;
}
try {
// Собираем данные для черновика
const items = Array.from(cart.values()).map(item => ({
type: item.type,
id: item.id,
quantity: item.qty,
price: item.price
}));
const customer = selectedCustomer || SYSTEM_CUSTOMER;
const draftData = {
customer_id: customer.id,
items: items
};
// Отправляем на сервер
const response = await fetch('/pos/api/create-draft/', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRFToken': getCsrfToken()
},
body: JSON.stringify(draftData)
});
const result = await response.json();
if (result.success) {
// Открываем в новой вкладке
window.open(`/orders/create/?draft=${result.token}`, '_blank');
} else {
alert(`Ошибка: ${result.error}`);
}
} catch (error) {
console.error('Ошибка при создании отложенного заказа:', error);
alert('Произошла ошибка при создании черновика заказа');
}
}
// Обработчик кнопки "ОТЛОЖЕННЫЙ заказ"
const scheduleLaterBtn = document.getElementById('scheduleLater');
if (scheduleLaterBtn) {
scheduleLaterBtn.addEventListener('click', createDeferredOrder);
}