diff --git a/myproject/pos/static/pos/css/terminal.css b/myproject/pos/static/pos/css/terminal.css index 9cf7691..ace3b06 100644 --- a/myproject/pos/static/pos/css/terminal.css +++ b/myproject/pos/static/pos/css/terminal.css @@ -32,6 +32,14 @@ body { flex-grow: 1; } +/* 3 колонки для товаров и категорий на экранах от 400px */ +@media (min-width: 400px) { + .col-custom-3 { + flex: 0 0 33.333%; + max-width: 33.333%; + } +} + /* 5 колонок для товаров и категорий на экранах от 1100px */ @media (min-width: 1100px) { .col-lg-custom-5 { diff --git a/myproject/pos/static/pos/js/terminal.js b/myproject/pos/static/pos/js/terminal.js index 21b9c83..b90bfb1 100644 --- a/myproject/pos/static/pos/js/terminal.js +++ b/myproject/pos/static/pos/js/terminal.js @@ -701,7 +701,7 @@ function renderCategories() { // Кнопка "Витрина" - первая в ряду const showcaseCol = document.createElement('div'); - showcaseCol.className = 'col-6 col-sm-4 col-md-3 col-lg-2'; + showcaseCol.className = 'col-6 col-custom-3 col-md-3 col-lg-2'; const showcaseCard = document.createElement('div'); showcaseCard.className = 'card category-card showcase-card' + (isShowcaseView ? ' active' : ''); showcaseCard.style.backgroundColor = '#fff3cd'; @@ -725,7 +725,7 @@ function renderCategories() { // Кнопка "Все" const allCol = document.createElement('div'); - allCol.className = 'col-6 col-sm-4 col-md-3 col-lg-2'; + allCol.className = 'col-6 col-custom-3 col-md-3 col-lg-2'; const allCard = document.createElement('div'); allCard.className = 'card category-card' + (currentCategoryId === null && !isShowcaseView ? ' active' : ''); allCard.onclick = async () => { @@ -749,7 +749,7 @@ function renderCategories() { // Категории CATEGORIES.forEach(cat => { const col = document.createElement('div'); - col.className = 'col-6 col-sm-4 col-md-3 col-lg-custom-5'; + col.className = 'col-6 col-custom-3 col-md-3 col-lg-custom-5'; const card = document.createElement('div'); card.className = 'card category-card' + (currentCategoryId === cat.id && !isShowcaseView ? ' active' : ''); @@ -804,7 +804,7 @@ function renderProducts() { filtered.forEach(item => { const col = document.createElement('div'); - col.className = 'col-6 col-sm-4 col-md-3 col-lg-custom-5'; + col.className = 'col-6 col-custom-3 col-md-3 col-lg-custom-5'; const card = document.createElement('div'); card.className = 'card product-card'; @@ -2205,6 +2205,14 @@ document.getElementById('confirmCreateTempKit').onclick = async () => { // Получаем количество букетов для создания const showcaseKitQuantity = parseInt(document.getElementById('showcaseKitQuantity').value, 10) || 1; + // Вычисляем итоговую цену комплекта на основе изменённых цен в корзине + let calculatedPrice = 0; + tempCart.forEach((item) => { + if (item.type === 'product') { + calculatedPrice += item.qty * item.price; + } + }); + // Формируем FormData для отправки с файлом const formData = new FormData(); formData.append('kit_name', kitName); @@ -2216,8 +2224,10 @@ document.getElementById('confirmCreateTempKit').onclick = async () => { formData.append('items', JSON.stringify(items)); formData.append('price_adjustment_type', priceAdjustmentType); formData.append('price_adjustment_value', priceAdjustmentValue); - if (useSalePrice && salePrice > 0) { - formData.append('sale_price', salePrice); + // Если пользователь не задал свою цену, используем вычисленную + const finalSalePrice = useSalePrice ? salePrice : calculatedPrice; + if (finalSalePrice > 0) { + formData.append('sale_price', finalSalePrice); } // Фото: для редактирования проверяем, удалено ли оно