36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
@login_required
|
|
def pos(request):
|
|
from .models import CashierSession
|
|
# Check for active session
|
|
active_session = CashierSession.objects.filter(user=request.user, status='active').first()
|
|
if not active_session:
|
|
# Check if user is a cashier (assigned to a counter)
|
|
if hasattr(request.user, 'counter_assignment'):
|
|
messages.warning(request, _("Please open a session to start selling."))
|
|
return redirect('start_session')
|
|
|
|
settings = SystemSetting.objects.first()
|
|
products = Product.objects.filter(is_active=True)
|
|
|
|
if not settings or not settings.allow_zero_stock_sales:
|
|
products = products.filter(stock_quantity__gt=0)
|
|
|
|
customers = Customer.objects.all()
|
|
categories = Category.objects.all()
|
|
payment_methods = PaymentMethod.objects.filter(is_active=True)
|
|
|
|
# Ensure at least Cash exists
|
|
if not payment_methods.exists():
|
|
PaymentMethod.objects.create(name_en="Cash", name_ar="نقدي", is_active=True)
|
|
payment_methods = PaymentMethod.objects.filter(is_active=True)
|
|
|
|
context = {
|
|
'products': products,
|
|
'customers': customers,
|
|
'categories': categories,
|
|
'payment_methods': payment_methods,
|
|
'settings': settings,
|
|
'active_session': active_session
|
|
}
|
|
return render(request, 'core/pos.html', context)
|