예제 #1
0
def check_in(request, **kwargs):
    if request.method == 'POST':
        form = InventoryCheckInForm(request.POST)
        if form.is_valid():
            purchase = form.cleaned_data['purchase']
            quantity = form.cleaned_data['quantity']
            is_new = form.cleaned_data['condition'] == 'True'
            buy_only = form.cleaned_data.get('buy_only', False)
            
            for _q in range(quantity):
                inventory = Inventory()
                inventory.dropship = form.cleaned_data['dc']
                inventory.item = form.cleaned_data['upc']
                inventory.purchase_item = form.cleaned_data['purchase_item']
                inventory.buy_only = buy_only
                inventory.fill_barcode() 
                inventory.is_new = purchase.is_new if purchase else is_new
                inventory.save()

            return redirect('staff:page', 'Inventory/Check-In'), None
        item = Item.find_by_upc(form['upc'].data)
    else:
        form = InventoryCheckInForm()
        item = None
    
    return {
        'title': 'Check-In',
        'form': form,
        'item': item,
    }, None
예제 #2
0
def order_details_item(request, order_id, item_id):
    order = get_object_or_404(TradeOrder, id=order_id)
    item = get_object_or_404(TradeOrderItem, order__id=order_id, id=item_id)

    if request.method=='POST':
        form = TradeGameForm(request.POST, instance=item)
        if form.is_valid():
            item = form.save()
            item.original_item = item.item
            if item.is_match:
                if item.is_damaged and not item.is_refurblished:
                    item.declined = True
            else:
                if request.POST.get('is_accepted') == 'True':
                    accepted_item = get_object_or_404(Item, id=request.POST.get('accepted_id'))
                    item.item = accepted_item
                    item.hot_trade = False
                    if item.is_complete:
                        item.price = accepted_item.trade_price
                    else:
                        item.price = accepted_item.trade_price_incomplete
                else:
                    item.declined = True
            item.processed = True
            item.processed_date = datetime.now()
            item.processed_by = request.user

            for c in item.claims().filter(type=ClaimType.GamemineNotReceiveTradeGame):
                c.status = CaseStatus.AutoClosed
                c.save()

            if not item.declined:
                inventory = Inventory()
                inventory.item = item.item
                inventory.is_new = False
#                inventory.buy_only = request.POST.get('is_desctination') == 'buy';
                inventory.save()
                item.inventory = inventory

            item.save()

            amount = item.price + item.get_shipping_reimbursements()

            profile = order.user.get_profile()

            if order.items.filter(processed=False).count() == 0:
                hot_trades = 0
                for i in order.items.filter(declined=False, hot_trade=True):
                    if i.item == i.original_item:
                        hot_trades += 1
                if hot_trades >= 3:
                    debug('Add bonus')
                    profile.store_credits += order.bonus or 0
                    profile.bonus_store_credits += order.bonus or 0

            if not item.declined:
                profile.store_credits += amount
                profile.bonus_store_credits += item.get_shipping_reimbursements()

                description = 'Trade game. Order#: %s. UPC: %s' % (order.order_no(), item.item.upc)
                BillingHistory.log(order.user, '', description, credit=amount, reason='trade',
                                   status=TransactionStatus.Passed, type=TransactionType.TradePayment)

            profile.save()

            if item.order.is_processed():
                item.order.send_order_processed()

            transaction.commit()
            return redirect('staff:trade_order_details', order_id)
    else:
        form = TradeGameForm(instance=item)

    transaction.rollback()
    return {
        'title': 'TRADE ORDER ID: %s' % order.order_no(),
        'order': order,
        'item': item,
        'form': form,
        'page_class': 'staff-trade-order-details',
    }