from django.shortcuts import render, get_object_or_404, redirect from osinacore.models import * from billing.models import * from django.http import JsonResponse, HttpResponse from django.template.loader import get_template from django.conf import settings import os from osinacore.decorators import * from django.core.files.base import ContentFile from django.db.models import Q @staff_login_required def add_product(request, *args, **kwargs): item_types = ProjectType.objects.all().order_by('name') if request.method == 'POST': title = request.POST.get('title') description = request.POST.get('description') item_type_id = request.POST.get('item_type') item_type = get_object_or_404(ProjectType, id=item_type_id) amount = request.POST.get('amount') recurring = request.POST.get('recurring') Item.objects.create( type='Product', title=title, description = description, item_type = item_type, amount = amount, recurring = recurring, ) return redirect('items') context = { 'item_types' : item_types, } return render(request, 'add_templates/add-product.html', context) @staff_login_required def add_service (request, *args, **kwargs): item_types = ProjectType.objects.all().order_by('name') customers = CustomerProfile.objects.all().order_by('user__first_name') if request.method == 'POST': title = request.POST.get('title') description = request.POST.get('description') customer_id = request.POST.get('customer') customer = get_object_or_404(CustomerProfile, id=customer_id) item_type_id = request.POST.get('item_type') item_type = get_object_or_404(ProjectType, id=item_type_id) amount = request.POST.get('amount') recurring = request.POST.get('recurring') Item.objects.create( type='Service', title=title, description = description, customer = customer, item_type = item_type, amount = amount, recurring = recurring, ) return redirect('items') context = { 'item_types' : item_types, 'customers' : customers } return render(request, 'add_templates/add-service.html', context) @staff_login_required def add_order(request, customer_id): customer= get_object_or_404(CustomerProfile, id=customer_id) businesses = Business.objects.filter(customer=customer) services = Item.objects.filter(Q(type='Service') & (Q(customer=customer) | Q(customer__isnull=True))) if request.method == 'POST': business_id = request.POST.get('business') date = request.POST.get('date') if business_id: business = get_object_or_404(Business, id=business_id) else: business = None order = Order.objects.create( customer=customer, business=business, date=date ) selected_services_ids = request.POST.getlist('service') for service_id in selected_services_ids: service = get_object_or_404(Item, id=service_id) order_item = OrderItem.objects.create( order=order, item=service, purchased_at=datetime.now() ) return redirect('orderdetails', order_id=order.order_id) context = { 'customer' : customer, 'businesses' : businesses, 'services' : services, } return render(request, 'add_templates/add-order.html', context) @staff_login_required def add_service_in_order(request, service_id, order_id): service =get_object_or_404(Item, id=service_id) order= get_object_or_404(Order, id=order_id) order_item = OrderItem.objects.create( order = order, item = service, purchased_at = datetime.now() ) order_item.save() return redirect('orderdetails', order_id=order.order_id) @staff_login_required def add_payment_method_modal(request, *args, **kwargs): if request.method == 'POST': name = request.POST.get('name') description = request.POST.get('description') image = request.FILES.get('image') payment_method = PaymentType( name = name, description = description, image = image ) payment_method.save() # Reload the parent page return HttpResponse('') return render(request, 'add_templates/add-payment-method-modal.html') @staff_login_required def add_payment_modal(request, order_id): order = get_object_or_404(Order, id=order_id) methods = PaymentType.objects.all().order_by('name') if request.method == 'POST': amount = request.POST.get('amount') if request.POST.get('date_paid'): date_paid = request.POST.get('date_paid') else: date_paid = None if request.POST.get('date_due'): date_due = request.POST.get('date_due') else: date_due = None comment = request.POST.get('comment') selected_methods = request.POST.getlist('methods') payment = OrderPayment( order = order, amount = amount, date_paid = date_paid, date_due = date_due, comment = comment ) payment.save() for method_id in selected_methods: method = get_object_or_404(PaymentType, id=method_id) payment.type.add(method) # Reload the parent page return HttpResponse('') context = { 'methods': methods, 'order': order } return render(request, 'add_templates/add-payment-modal.html', context) @staff_login_required def add_payment_comment_modal(request): context = { } return render(request, 'add_templates/add-payment-comment-modal.html', context)