This commit is contained in:
Flatlogic Bot 2026-02-07 17:25:07 +00:00
parent c79ace1553
commit d0b49e0c8a
2 changed files with 55 additions and 7 deletions

View File

@ -299,7 +299,7 @@ def pos(request):
products = Product.objects.filter(is_active=True).select_related('category') products = Product.objects.filter(is_active=True).select_related('category')
categories = Category.objects.all() categories = Category.objects.all()
customers = Customer.objects.filter(is_active=True) customers = Customer.objects.all()
payment_methods = PaymentMethod.objects.filter(is_active=True) payment_methods = PaymentMethod.objects.filter(is_active=True)
settings = SystemSetting.objects.first() settings = SystemSetting.objects.first()
@ -373,7 +373,7 @@ def invoice_detail(request, pk):
@login_required @login_required
def invoice_create(request): 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') products = Product.objects.filter(is_active=True).select_related('category')
payment_methods = PaymentMethod.objects.filter(is_active=True) payment_methods = PaymentMethod.objects.filter(is_active=True)
site_settings = SystemSetting.objects.first() site_settings = SystemSetting.objects.first()
@ -551,7 +551,55 @@ def delete_sale(request, pk): return redirect('invoices')
@login_required @login_required
def supplier_payments(request): return redirect('purchases') def supplier_payments(request): return redirect('purchases')
@login_required @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 @login_required
def profile_view(request): return render(request, 'core/profile.html') def profile_view(request): return render(request, 'core/profile.html')
@login_required @login_required
@ -591,7 +639,7 @@ def create_sale_api(request):
sale = Sale( sale = Sale(
customer=customer, customer=customer,
created_by=request.user, created_by=request.user,
payment_status='pending', status='unpaid',
discount=discount, discount=discount,
notes=notes, notes=notes,
invoice_number=invoice_number invoice_number=invoice_number
@ -633,11 +681,11 @@ def create_sale_api(request):
sale.total_amount = subtotal + vat_amount - discount sale.total_amount = subtotal + vat_amount - discount
if payment_type == 'credit': if payment_type == 'credit':
sale.payment_status = 'unpaid' sale.status = 'unpaid'
elif paid_amount >= sale.total_amount: elif paid_amount >= sale.total_amount:
sale.payment_status = 'paid' sale.status = 'paid'
else: else:
sale.payment_status = 'partial' sale.status = 'partial'
sale.save() sale.save()