示例#1
0
 def do_move_orders(self):
     info("Moving orders...", extra={"url": "task://rent/move_orders"})
     for o in RentOrder.objects.filter(status=RentOrderStatus.Pending):
         try:
             if o.source_dc.is_game_available(
                 o.item, exclude_rent_order=o, for_rent=True
             ):
                 continue
             p = o.user.get_profile()
             zip = p.shipping_zip
             if not zip:
                 o.put_back_to_list()
                 continue
             o.source_dc = None
             o.save()
             dc = Dropship.find_closest_dc(zip, o.item, p.dropship)
             if dc:
                 o.source_dc = dc
                 o.save()
                 info("%s --> %s  %s", o.source_dc.code, dc.code, o)
             else:
                 info("Put back to list  %s", o)
                 o.put_back_to_list()
         except Exception, _e:
             error("Error occurs when moving order %s", o.id,
                   exc_info=sys.exc_info(),
                   extra={"url": reverse("staff:rent_order_details", args=[o.id])})
示例#2
0
def orders(request, **kwargs):
    message = ''

    if 'cancel' in request.GET:
        order = get_object_or_404(RentOrder, id=int(request.GET['cancel']), status=RentOrderStatus.Prepared)

        inventory_barcode = order.inventory.barcode

        order.inventory = None

        order.status = RentOrderStatus.Pending
        order.date_prepared = None

        order.outgoing_endicia_data = None
        order.outgoing_mail_label = None
        order.outgoing_tracking_number = None
        order.outgoing_tracking_scans = None

        order.incoming_endicia_data = None
        order.incoming_mail_label = None
        order.incoming_tracking_number = None
        order.incoming_tracking_scans = None

        profile = order.user.get_profile()
        dc = Dropship.find_closest_dc(profile.shipping_zip, order.item, profile.dropship)
        if dc:
            order.source_dc = dc

        order.save()

        if RentOrder.objects.filter(inventory__barcode=inventory_barcode, status=RentOrderStatus.Prepared).count() == 0:
            inventory = Inventory.objects.get(barcode=inventory_barcode)
            inventory.status = InventoryStatus.InStock
            inventory.save()

        return redirect('staff:page', 'Rent/Orders')

    if request.method == 'POST':
        barcode = request.POST.get('barcode')
        if barcode:
            try:
                inventory = Inventory.objects.exclude(buy_only=True).get(barcode=barcode,
                                                                         status=InventoryStatus.InStock)
                dc = request.user.get_profile().dc
                if dc and dc.code != inventory.dropship.code:
                    message = 'Barcode "<strong>%s</strong>" doesn\'t found in <strong>%s</strong>.' % (barcode, str(dc))
                else:
                    order = RentOrder.objects.filter(status=RentOrderStatus.Pending,
                                                     source_dc__code=inventory.dropship.code,
                                                     item__id=inventory.item.id).order_by('-map')
                    if order.count():
                        order = order[0]
                        order.inventory = inventory
                        order.status = RentOrderStatus.Prepared
                        order.date_prepared = datetime.now()
                        order.prepared_by = request.user
                        order.save()
                        inventory.status = InventoryStatus.Pending
                        inventory.tmp_new_dc_code_aproved = True
                        inventory.save()
                        message = 'Barcode "<strong>%s</strong>" was successfully added to the Prepared List.' % barcode
                    else:
                        message = 'Barcode "<strong>%s</strong>" does not match any item in Picked List.' % barcode
            except Inventory.DoesNotExist, e: #@UnusedVariable
                message = 'Barcode "<strong>%s</strong>" does not exist or not in stock.' % barcode