def borrow(request, info_id): if request.method == 'POST': item_id = request.POST['item_id'] info_obj = Item.get_info_obj_by_id(info_id) test_item_obj = Item.objects.get(id=item_id) if not test_item_obj.item_abstract.track_1by1: amount = int(request.POST['amount']) else: amount = 1 if amount > test_item_obj.quantity: messages.error(request, 'ไม่อนุญาตให้ยืมมากกว่าจำนวนอุปกรณ์ที่มี') elif amount < 1: messages.error(request, 'ไม่อนุญาตให้ระบุจำนวนน้อยกว่า 1') elif test_item_obj.status != 'available': messages.error( request, f"อุปกรณ์ชื่อ: {test_item_obj.item_abstract.title} รหัส: {test_item_obj.item_abstract.serial} หมายเลขติดตาม: {test_item_obj.tracking_number} ไม่ได้อยู่ในสถานะว่างแล้ว" ) else: new_order = Order.objects.create(user=request.user) Order_Item.objects.create(item=test_item_obj, order=new_order, amount=amount) new_order.status = 'created' new_order.save() messages.success(request, 'สร้างรายการเบิกใช้อุปกรณ์เรียบร้อยแล้ว') return redirect('catalog:detail', info_id=info_id)
def borrow_multiple(request): if request.method == 'POST': info_id = request.POST['info_id'] info_obj = Item.get_info_obj_by_id(info_id) amount = int(request.POST['amount']) available_q = info_obj.get_q_this_branch().get('available') if amount > available_q: messages.error(request, 'ไม่อนุญาตให้ยืมมากกว่าจำนวนอุปกรณ์ที่มี') elif amount < 1: messages.error(request, 'ไม่อนุญาตให้ระบุจำนวนน้อยกว่า 1') else: new_order = Order.objects.create(user=request.user) if info_obj.item_abstract.track_1by1: selected_ids = Item.objects.filter( item_abstract=info_obj.item_abstract, currently_at=info_obj.currently_at, status='available').order_by( '-tracking_number')[:amount].values_list("id", flat=True) selected_items_obj = Item.objects.filter( id__in=list(selected_ids)).all() to_create_order_items = [] for item in selected_items_obj: new_order_item = Order_Item(item=item, order=new_order) to_create_order_items.append(new_order_item) Order_Item.objects.bulk_create(to_create_order_items) else: track1_item = Item.objects.get( item_abstract=info_obj.item_abstract, currently_at=info_obj.currently_at, status='available') Order_Item.objects.create(item=track1_item, order=new_order, amount=amount) new_order.status = 'created' new_order.save() messages.success(request, 'สร้างรายการเบิกใช้อุปกรณ์เรียบร้อยแล้ว') return redirect('catalog:list')