diff --git a/core/__pycache__/views.cpython-311.pyc b/core/__pycache__/views.cpython-311.pyc index b8245d9..081938d 100644 Binary files a/core/__pycache__/views.cpython-311.pyc and b/core/__pycache__/views.cpython-311.pyc differ diff --git a/core/views.py b/core/views.py index 1d638f8..c121f76 100644 --- a/core/views.py +++ b/core/views.py @@ -299,7 +299,7 @@ def pos(request): products = Product.objects.filter(is_active=True).select_related('category') categories = Category.objects.all() - customers = Customer.objects.filter(is_active=True) + customers = Customer.objects.all() payment_methods = PaymentMethod.objects.filter(is_active=True) settings = SystemSetting.objects.first() @@ -373,7 +373,7 @@ def invoice_detail(request, pk): @login_required def invoice_create(request): - customers = Customer.objects.filter(is_active=True) + customers = Customer.objects.all() products = Product.objects.filter(is_active=True).select_related('category') payment_methods = PaymentMethod.objects.filter(is_active=True) site_settings = SystemSetting.objects.first() @@ -551,7 +551,55 @@ def delete_sale(request, pk): return redirect('invoices') @login_required def supplier_payments(request): return redirect('purchases') @login_required -def settings_view(request): return render(request, 'core/settings.html') +def settings_view(request): + settings, created = SystemSetting.objects.get_or_create(id=1) + + if request.method == 'POST': + # Business Profile + settings.business_name = request.POST.get('business_name', '') + settings.email = request.POST.get('email', '') + settings.phone = request.POST.get('phone', '') + settings.vat_number = request.POST.get('vat_number', '') + settings.registration_number = request.POST.get('registration_number', '') + settings.address = request.POST.get('address', '') + + # Financial + settings.currency_symbol = request.POST.get('currency_symbol', 'OMR') + settings.tax_rate = request.POST.get('tax_rate', 0) + settings.decimal_places = request.POST.get('decimal_places', 3) + settings.allow_zero_stock_sales = request.POST.get('allow_zero_stock_sales') == 'on' + + # Loyalty + settings.loyalty_enabled = request.POST.get('loyalty_enabled') == 'on' + settings.min_points_to_redeem = request.POST.get('min_points_to_redeem', 100) + settings.points_per_currency = request.POST.get('points_per_currency', 1.0) + settings.currency_per_point = request.POST.get('currency_per_point', 0.010) + + # WhatsApp (Wablas) + settings.wablas_enabled = request.POST.get('wablas_enabled') == 'on' + settings.wablas_server_url = request.POST.get('wablas_server_url', '') + settings.wablas_token = request.POST.get('wablas_token', '') + settings.wablas_secret_key = request.POST.get('wablas_secret_key', '') + + # Logo Upload + if 'logo' in request.FILES: + settings.logo = request.FILES['logo'] + + settings.save() + messages.success(request, _('System settings updated successfully.')) + return redirect('settings') + + payment_methods = PaymentMethod.objects.all() + devices = Device.objects.all() + loyalty_tiers = LoyaltyTier.objects.all() + + return render(request, 'core/settings.html', { + 'settings': settings, + 'payment_methods': payment_methods, + 'devices': devices, + 'loyalty_tiers': loyalty_tiers, + }) + @login_required def profile_view(request): return render(request, 'core/profile.html') @login_required @@ -591,7 +639,7 @@ def create_sale_api(request): sale = Sale( customer=customer, created_by=request.user, - payment_status='pending', + status='unpaid', discount=discount, notes=notes, invoice_number=invoice_number @@ -633,11 +681,11 @@ def create_sale_api(request): sale.total_amount = subtotal + vat_amount - discount if payment_type == 'credit': - sale.payment_status = 'unpaid' + sale.status = 'unpaid' elif paid_amount >= sale.total_amount: - sale.payment_status = 'paid' + sale.status = 'paid' else: - sale.payment_status = 'partial' + sale.status = 'partial' sale.save()