def do_testdata(self): random.seed() dropships = list(Dropship.objects.all()) for item in Item.objects.all(): if not random.choice([True, True, False]): debug('Skip %s...', item) continue debug('Creating inventory for %s...', item) for x in xrange(2): #@UnusedVariable dropship = random.choice(dropships) x = random.randint(0, 10) debug(' add %d items to %s...', x, dropship) for xx in xrange(x): #@UnusedVariable i = Inventory(dropship=dropship, item=item, is_new=random.choice([True, False]), status=random.choice([InventoryStatus.InStock, InventoryStatus.Available, InventoryStatus.Rented])) price = decimal.Decimal('%f' % random.uniform(0.3, 1)) if i.is_new: item.retail_price_new = price else: item.retail_price_used = price item.save() i.fill_barcode() i.save() debug('Updating rent_flag...') for item in Item.objects.all(): item.rent_flag = item.available_for_selling() item.save()
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
def do_fix_inventory_manually(self): from project.inventory.models import Inventory for l in sys.stdin.readlines(): l = l.strip() if not l: continue from_id, to_id = l.split() print '%s --> %s' % (from_id, to_id) item = Item.objects.get(id=to_id) print 'Found item: %s, %s, %s' % (item, item.category, item.upc) c = self._get_cursor() c.execute(''' select s.id `status`, c.name `condition`, e.code, e.ref_center from entries e left outer join entry_conditions c on c.id = e.ref_entry_condition left outer join entry_statuses s on s.id = e.ref_entry_status where e.ref_item = %s ''', [from_id]) for status, condition, barcode, ref_center in c.fetchall(): print status, condition, barcode, ref_center if Inventory.objects.filter(barcode=barcode).count(): continue o = Inventory( dropship_id=DROPSHIP_MAP[ref_center], item=item, barcode=barcode, is_new=condition == 'New', status = INVENTORY_STATUS_MAP[status], ) o.save() print o
def import_inventory(self): statuses = { 1: InventoryStatus.InStock, # Available 2: InventoryStatus.Rented, # Rented 3: InventoryStatus.Sold, # Sold 4: InventoryStatus.Damaged, # Damaged 5: InventoryStatus.Pending, # Invoiced 6: InventoryStatus.Lost, # Lost 7: InventoryStatus.Sale, # Left to canceled member } self.entries = {} c = self.mconn.cursor() c.execute(''' select i.upc, i.id item_id, s.id `status`, c.name `condition`, e.code, e.ref_center, e.id from entries e inner join items i on i.id = e.ref_item left outer join entry_statuses s on s.id = e.ref_entry_status left outer join join entry_conditions c on c.id = e.ref_entry_condition ''') for upc, id, status, condition, barcode, ref_center, _entry_id in c.fetchall(): item = self.get_item(upc) if not item: self.missing_items.add(id) continue o = Inventory( dropship_id=self.DROPSHIP_MAP[ref_center], item=item, barcode=barcode, is_new=condition == 'New', status = statuses[status], ) o.save() self.entries[barcode] = o print 'Found: %s' % Inventory.objects.all().count()
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', }