def cancel_order(request): ClinicManager.objects.get(user=request.user) if request.method == 'POST': req_obj = json.loads(request.body.decode('utf-8')) order_id = req_obj['order_id'] order_object = Order.objects.get(id=order_id) # Delete only if the order is queued for processing if order_object.order_status == "Queued for Processing": try: if ProcessQueue.objects.get(order_id=order_id): # Delete if in process queue process_queue_object = ProcessQueue.objects.get( order_id=order_id) process_queue_object.delete() current_process_queue = sorted(ProcessQueue.objects.all(), key=lambda x: x.queue_no) i = 1 for contents in current_process_queue: contents.queue_no = i contents.save() i += 1 except ProcessQueue.DoesNotExist: pass order_object.delete() update_process_queue() update_dispatch_queue() return HttpResponse("")
def notify_delivery(request): ClinicManager.objects.get(user=request.user) if request.method == 'POST': req_obj = json.loads(request.body.decode('utf-8')) order_id = req_obj['order_id'] order_object = Order.objects.get(id=order_id) order_object.time_delivered = timezone.now() order_object.order_status = "Delivered" order_object.save() update_process_queue() update_dispatch_queue() return HttpResponse("")
def place_order(request): ClinicManager.objects.get(user=request.user) if request.method == 'POST': req = json.loads(request.body.decode('utf-8')) print(req) if len(request.session['cart']) > 0: if place_order_for_user(request.session['cart'], request.session['clinic'], req['priority']): request.session['cart'] = [] request.session['total_weight'] = 0 request.session.modified = True update_process_queue() update_dispatch_queue() return HttpResponse(json.dumps({'status': 'success'})) else: request.session['cart'] = [] request.session['total_weight'] = 0 update_process_queue() update_dispatch_queue() return HttpResponse(json.dumps({'status': 'overweight'})) else: update_process_queue() update_dispatch_queue() return HttpResponse(json.dumps({'status': 'emptycart'})) else: update_process_queue() update_dispatch_queue() return HttpResponse()
def index(request): Dispatcher.objects.get(user=request.user) """ Render the Dispatcher home page. :param request: :return: Render template """ update_process_queue() update_dispatch_queue() dispatch_queue = DispatchQueue.objects.all().order_by('queue_number') if len(dispatch_queue) < 1: return render(request, 'dispatcher/index.html') if 'dispatch' not in request.session: request.session['dispatch'] = [] orders = [] weight = 0.0 for order in dispatch_queue: order_details = Order.objects.get(id=order.order_id) order_details.total_weight = round(order_details.total_weight, 2) weight += order_details.total_weight if weight > 23.8: break order_details.content_details = [] order_contents = json.loads(order_details.contents)['contents'] for cont in order_contents: item = Item.objects.get(id=cont['product_id']) item.qty = cont['qty'] order_details.content_details.append(item) orders.append(order_details) route_plan(orders) context = { 'orders': orders } return render(request, 'dispatcher/index.html', context=context)
def index(request): WarehousePersonnel.objects.get(user=request.user) update_process_queue() update_dispatch_queue() process_queue_top = ProcessQueue.objects.filter(queue_no=0) order_details = None if (len(process_queue_top) >= 1): if 'process' not in request.session: request.session['process'] = [] order_details = Order.objects.get(id=process_queue_top[0].order_id) order_details.total_weight = round(order_details.total_weight, 2) order_details.content_details = [] order_contents = json.loads(order_details.contents)['contents'] for cont in order_contents: item = Item.objects.get(id=cont['product_id']) item.qty = cont['qty'] order_details.content_details.append(item) order_in_process = Order.objects.filter( order_status='Processing by Warehouse') print(order_in_process) order_warehouse = None if (len(order_in_process) > 0): for order in order_in_process: order.content_details = [] order_contents = json.loads(order.contents)['contents'] for cont in order_contents: item = Item.objects.get(id=cont['product_id']) item.qty = cont['qty'] order.content_details.append(item) order_warehouse = order_in_process[0] context = {'order': order_details, 'warehouse': order_warehouse} return render(request, 'warehouse/index.html', context=context)
def do_pop(request): WarehousePersonnel.objects.get(user=request.user) processing_orders = Order.objects.filter( order_status='Processing by Warehouse') if len(processing_orders) > 0: return HttpResponse(json.dumps({'msg': 1})) process_queue_top = ProcessQueue.objects.get(queue_no=0) order = Order.objects.get(id=process_queue_top.order_id) order.order_status = 'Processing by Warehouse' order.save() request.session['process'].append({ 'id': order.id, 'total_weight': order.total_weight }) request.session.modified = True update_process_queue() print(request.session['process']) return HttpResponse(json.dumps({'msg': 0}))