diff --git a/myproject/pos/views.py b/myproject/pos/views.py index 3fe6649..4f4d254 100644 --- a/myproject/pos/views.py +++ b/myproject/pos/views.py @@ -1468,9 +1468,26 @@ def pos_checkout(request): # Продаём экземпляры через ShowcaseManager if showcase_item_ids: + # Логируем для отладки + logger.info(f'POS Checkout: попытка продать showcase_item_ids={showcase_item_ids}') + + # Проверяем что все экземпляры заблокированы на текущего пользователя showcase_items = list(ShowcaseItem.objects.filter( - id__in=showcase_item_ids + id__in=showcase_item_ids, + status='in_cart', + locked_by_user=request.user )) + + logger.info(f'POS Checkout: найдено {len(showcase_items)} заблокированных экземпляров из {len(showcase_item_ids)} запрошенных') + + if len(showcase_items) != len(showcase_item_ids): + # Не все экземпляры доступны + missing_ids = set(showcase_item_ids) - set(item.id for item in showcase_items) + logger.warning(f'POS Checkout: недоступные showcase_item_ids={missing_ids}') + raise ValidationError( + f'Некоторые экземпляры букета уже не заблокированы на вас. ' + f'Обновите страницу и попробуйте снова.' + ) if showcase_items: result = ShowcaseManager.sell_showcase_items(showcase_items, order_item)