Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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')