def item_form(request, id=None): if id: item = get_object_or_404(Item, id=id) scenario = 'Update' else: item = Item() scenario = 'Create' if request.POST: form = ItemForm(data=request.POST, instance=item, user=request.user) if form.is_valid(): item = form.save(commit=False) item.save(account_no=form.cleaned_data['account_no'], opening_balance=form.cleaned_data['opening_balance']) if request.is_ajax(): return render(request, 'callback.html', {'obj': ItemSerializer(item).data}) return redirect('/inventory/items/') else: form = ItemForm(instance=item, user=request.user) if request.is_ajax(): base_template = 'modal.html' else: base_template = 'inventory_base.html' return render(request, 'item_form.html', { 'scenario': scenario, 'form': form, 'base_template': base_template, })
def index(request): # GET is simple, and just queries the database and dumps out # the results if request.method == 'GET': list_of_items = Item.objects.all() data = serializers.serialize("json", list_of_items) return HttpResponse(data, content_type="application/json") # POST requires a bit of authentication and some logic to # determine if we are going to be adding a new item or just # updating an old one if request.method == 'POST': if request.user.username: data = json.loads(request.body.decode(), parse_float=Decimal)['fields'] items = Item.objects.filter(itemId=data['itemId']) if items: for o in items: o.count = data['count'] o.save() else: item = Item(itemId=data['itemId'], count=data['count'], name=data['name'], short=data['short'], desc=data['desc']) item.save() return HttpResponse({}, content_type="application/json") else: # Of course, make sure to notify the user that a login is # required to post items or change them return HttpResponse('Unauthorized', status=401)
def post(self): data = request.get_json() item = Item(name=data['name'], category=data['category'], price=data['price'], updated_on=datetime.now()) item.save() return jsonify(pretty(item))
def post(self, request): if request.POST['id']: item = Item.objects.get(id=request.POST["id"]) else: item = Item() item.name = request.POST["name"] item.description = request.POST["description"] item.company = request.user.company item.save() return JsonRepsonse({"Upload": True, "id":item.id})
def load_item(csv_file, sheet): book = xlrd.open_workbook(csv_file) # Open an .xls file sheet = book.sheet_by_index(sheet) # Get the first sheet for counter in range(21): # Loop for five times if counter: # grab the current row rows = sheet.row_values(counter) item = Item(item_id=rows[0], merchant_id=rows[1], item_name=rows[2], item_price=rows[3], merchant_obj=Merchant.objects.get(merchant_id=rows[1])) item.save() return True
def import_data(filespec): db = Database('instance/database.sqlite').connect() category = Category(db) uom = Uom(db) item = Item(db) trx = Transaction(db) with open(filespec, newline='') as csvfile: reader = csv.DictReader(csvfile) for row in reader: print('Name: {}, Category: {}'.format(row['item_name'], row['category_name'])) #import pdb;pdb.set_trace() #create a Category if not exists cats = category.select_one( where='name = "{}"'.format(row['category_name'])) if not cats: cats = category.new() cats.name = row["category_name"] category.save(cats) cat_id = cats.id #create UOM if not exists uom_name = row['uom'].strip() if uom_name == '': uom_name = "Ea." uoms = uom.select_one(where='name = "{}"'.format(uom_name)) if not uoms: uoms = uom.new() uoms.name = uom_name uom.save(uoms) items = item.select_one( where='name = "{}"'.format(row['item_name'], )) if not items: items = item.new() items.name = row['item_name'] items.uom = uom_name items.cat_id = cat_id item.save(items) # Create a transaction record trxs = trx.new() trx.update(trxs, row) trxs.created = datetime.strptime(row['created'], '%Y-%m-%d') trxs.item_id = items.id trx.save(trxs) try: db.commit() except Exception as e: db.rollback() print(str(e))
def mutate(root, info, input=None): ok = True user = User.objects.get(pk=input.user.id) item_instance = Item(name=input.name, user=user, category=input.category, quantity=input.quantity, purchase_date=input.purchase_date, expiry_date=input.expiry_date, perishable=input.perishable) item_instance.save() return CreateItem(ok=ok, item=item_instance)
def setUp(self): self.supplier = Location.objects.filter(location_type="S")[0] clinics = Location.objects.filter(location_type="C") self.clinic = clinics[0] self.clinic_b = clinics[1] self.user = User.objects.all()[0] d = Item(name="Test item",user=self.user) d.save() s = Shipment(active=True,from_location=self.supplier,to_location=self.clinic,name="test supplier id",shipment_type="R",user=self.user) s.save() self.item = Item.objects.all()[0] self.shipment = Shipment.objects.all()[0] self.base_itemlot = {'active' : True, 'qty' : 23, 'item' : self.item.id, 'shipment' : self.shipment.id, 'user' : self.user.id, 'expiration' : '01/09/14', 'lot_num' : "test lot 213", 'unit_price' : 12.3}
class TransactionTest(TestCase): def setUp(self): self.shift = Shift(begin_date=timezone.now()) self.shift.save() self.transaction = self.shift.create_transaction() self.transaction.save() self.vendor = Vendor(name='Brand X') self.vendor.save() self.item = Item(\ upc='12345',\ name='Product X',\ vendor=self.vendor,\ price=23.45,\ taxable=True\ ) self.item.save() def test_end_transaction(self): self.transaction.end_transaction() self.assertIsNotNone(self.transaction.finish_date) def test_cannot_end_ended_transaction(self): self.transaction.end_transaction() finish_date = self.transaction.finish_date self.transaction.end_transaction() self.assertEqual(self.transaction.finish_date, finish_date) def test_create_line_item(self): line_item = self.transaction.create_line_item(self.item, 1) self.assertIsNotNone(line_item) def test_cannot_create_line_item_on_ended_transaction(self): line_item = self.transaction.create_line_item(self.item, 1) self.transaction.end_transaction() line_item = self.transaction.create_line_item(self.item, 1) self.assertIsNone(line_item) def test_line_item_description(self): line_item = self.transaction.create_line_item(self.item, 1) self.assertEqual(line_item.description, 'Brand X Product X') def test_get_totals(self): line_item = self.transaction.create_line_item(self.item, 1) line_item.save() line_item = self.transaction.create_line_item(self.item, 1) line_item.save() transaction_total = self.transaction.get_totals() self.assertEqual(transaction_total.sub_total, Decimal('46.90')) self.assertEqual(transaction_total.tax_total, Decimal('3.28')) self.assertEqual(transaction_total.total, Decimal('50.18'))
def add_item(request): form = forms.AddItem() if request.method == 'POST': form = forms.AddItem(request.POST) if form.is_valid(): item = Item() item.title = form.cleaned_data['Item_Name'] item.serial_number = form.cleaned_data['Serial_Number'] item.amount = form.cleaned_data['Cost'] item.description = form.cleaned_data['Item_Description'] item.save() messages.add_message(request, messages.SUCCESS, "Item Added Successful") return HttpResponseRedirect(reverse('inventory:landing')) return render(request, 'inventory/add_item.html', {'form': form})
class TransactionTest(TestCase): def setUp(self): self.shift = Shift(begin_date=timezone.now()) self.shift.save() self.transaction = self.shift.create_transaction() self.transaction.save() self.vendor = Vendor(name='Brand X') self.vendor.save() self.item = Item(\ upc='12345',\ name='Product X',\ vendor=self.vendor,\ price=23.45,\ taxable=True\ ) self.item.save() def test_end_transaction(self): self.transaction.end_transaction() self.assertIsNotNone(self.transaction.finish_date) def test_cannot_end_ended_transaction(self): self.transaction.end_transaction() finish_date = self.transaction.finish_date self.transaction.end_transaction() self.assertEqual(self.transaction.finish_date, finish_date) def test_create_line_item(self): line_item = self.transaction.create_line_item(self.item, 1) self.assertIsNotNone(line_item) def test_cannot_create_line_item_on_ended_transaction(self): line_item = self.transaction.create_line_item(self.item, 1) self.transaction.end_transaction() line_item = self.transaction.create_line_item(self.item, 1) self.assertIsNone(line_item) def test_line_item_description(self): line_item = self.transaction.create_line_item(self.item, 1) self.assertEqual(line_item.description, 'Brand X Product X') def test_get_totals(self): line_item = self.transaction.create_line_item(self.item, 1) line_item.save() line_item = self.transaction.create_line_item(self.item, 1) line_item.save() transaction_total = self.transaction.get_totals() self.assertEqual(transaction_total.sub_total, Decimal('46.90')) self.assertEqual(transaction_total.tax_total, Decimal('3.28')) self.assertEqual(transaction_total.total, Decimal('50.18')) def test_paid_tender_ends_transaction(self): self.transaction.create_line_item(self.item, 1) self.transaction.create_tender(25.09, 'CASH') self.assertIsNotNone(self.transaction.finish_date)
def setUp(self): self.supplier = Location.objects.filter(location_type="S")[0] clinics = Location.objects.filter(location_type="C") self.clinic = clinics[0] self.clinic_b = clinics[1] self.user = User.objects.all()[0] d = Item(name="Test item",user=self.user) d.save() s = Shipment(active=True,from_location=self.supplier,to_location=self.clinic,name="test supplier id",shipment_type="R",user=self.user) s.save() self.item = Item.objects.all()[0] self.shipment = Shipment.objects.all()[0] self.baseitem_lot = controller.update_itemlot({'active' : True, 'qty' : 23, 'item' : self.item.id, 'shipment' : self.shipment.id, 'user' : self.user.id, 'expiration' : '01/09/14', 'lot_num' : "test lot 213", 'unit_price' : 12.3})['itemlot'] self.base_stockchange = {'active' : True, 'qty' : 50, 'date' : '16/07/13', 'change_type' : 'M', 'user' : self.user.id, 'location' : self.clinic.id, 'itemlot' : self.baseitem_lot, 'note' : "test note", 'shipment' : ""} self.base_stockchange_dispense = {'active' : True, 'qty' : -50, 'date' : '16/07/13', 'change_type' : 'D', 'user' : self.user.id, 'location' : self.clinic.id, 'itemlot' : self.baseitem_lot, 'note' : "test note", 'shipment' : ""} self.base_stockchange_transfer = {'active' : True, 'qty' : 50, 'date' : '16/07/13', 'change_type' : 'T', 'user' : self.user.id, 'location' : self.clinic.id, 'itemlot' : self.baseitem_lot, 'note' : "test note", 'shipment' : self.shipment.id}
def addBooks(request): try: if (request.method == 'POST'): title = request.POST['title'] amount = request.POST['amount'] barcode = request.POST['barcode'] description = request.POST['description'] item = Item(title=title, amount=amount, barcode=barcode, description=description) item.save() except: raise Http404("All fields are requiered") return redirect("/") else: return render(request, 'addBooks.html')
class LoadTestCase(TestCase): def setUp(self): self.path = os.path.join(os.getcwd(), 'assignment_table_load.xls') self.sheet = 2 self.mercent = Merchant(merchant_id='001',merchant_name="test merchant", merchant_address="address") self.mercent.save() self.test_item = Item(item_id="0001",merchant_id="0002",item_name="one Item", item_price=200,merchant_obj=self.mercent) self.test_item.save() self.new_item = Item(item_id="0002",merchant_id="0002",item_name="one Item new", item_price=200,merchant_obj=self.mercent) self.new_item.save() self.cart = Cart(customer="test Customer") self.cart.save() def test_data_found(self): """Data found according to search""" merchant = load_merchant(self.path, 3) item = load_item(self.path, 2) transaction = load_transaction(self.path, 0) sales = load_sales(self.path, 1) assert merchant assert item assert transaction assert sales def test_cart_create(self): row1 = Rows(sn=1,item=self.test_item,quantity=2.5, unit='piece', cart = self.cart) row2 = Rows(sn=2,item=self.test_item,quantity=3.5, unit='piece', cart = self.cart) row3 = Rows(sn=3,item=self.test_item,quantity=42.5, unit='piece', cart = self.cart) row1.save() row2.save() row3.save() assert self.cart.rows.all() assert self.cart.status name = self.cart.item_update(1, self.test_item, self.new_item) assert name == self.new_item.item_name self.cart.cancel() assert not self.cart.status
class LineItemTest(TestCase): def setUp(self): self.shift = Shift(begin_date=timezone.now()) self.shift.save() self.transaction = self.shift.create_transaction() self.transaction.save() self.vendor = Vendor(name='Brand X') self.vendor.save() self.item = Item(\ upc='12345',\ name='Product X',\ vendor=self.vendor,\ price=23.45,\ taxable=True\ ) self.item.save() def test_line_item_total(self): line_item = self.transaction.create_line_item(self.item, 2) line_item.save() self.assertEqual(line_item.total(), Decimal(46.90))
def addItem(request, cat_id): if request.method == 'POST': form = ItemForm(request.POST) if form.is_valid(): cd = form.cleaned_data newItem = Item() newItem.name = cd.get('name') newItem.description = cd.get('description') newItem.quantity = cd.get('quantity') currentCat = request.POST.get("category") newItem.category = get_object_or_404(Category, id=currentCat) newItem.save() items = Item.objects.all().filter(category=currentCat) context = { 'items': items, } if request.is_ajax(): return render_to_response( 'inventory/getList.html', context, context_instance=RequestContext(request)) else: return HttpResponseRedirect( reverse('inventory:list', args=(cat_id, ))) message = "Oops, it broke! You should enter in something valid." form = CategoryForm() categories = Category.objects.all() context = { 'message': message, 'form': form, 'categories': categories, } return render_to_response('inventory/index.html', context, context_instance=RequestContext(request))
def add_item(request, barcode_id): lot_number = request.POST.get('lot_number') cost = request.POST.get('cost') expiration_date_str = str(request.POST.get('expiration_date')) if expiration_date_str == '': expiration_date_str = '2016-4-{days}'.format( days=DEFAULT_EXPIRATION ) expiration_date = datetime.strptime(expiration_date_str, '%Y-%m-%d') location_room = request.POST.get('location_room') location_unit = request.POST.get('location_unit') location_shelf = request.POST.get('location_shelf') product = Product.objects.get(barcode_id__exact=barcode_id) item = Item( product=product, lot_number=lot_number, cost=cost, expiration_date=expiration_date, location_room=location_room, location_unit=location_unit, location_shelf=location_shelf, ) item.save() item_id = item.id return redirect('view_item', barcode_id=barcode_id, item_id=item_id)
def create_item(user, location_id, type_id, printed_expiration_date): """ Attempts to create a new item. """ location = Location.retrieve_with_write_permission(user, location_id) item_type = ItemType.retrieve_with_write_permission(user, type_id) #create the item try: new_item = Item( user=user, location=location, item_type=item_type, printed_expiration_date=printed_expiration_date, ) new_item.save() except django.core.exceptions.ValidationError: raise inventory.exceptions.InvalidDateError(printed_expiration_date) except: raise inventory.exceptions.ItemCreateError return new_item
def addItem(request, cat_id): if request.method == 'POST': form = ItemForm(request.POST) if form.is_valid(): cd = form.cleaned_data newItem = Item() newItem.name = cd.get('name') newItem.description = cd.get('description') newItem.quantity = cd.get('quantity') currentCat = request.POST.get("category") newItem.category = get_object_or_404(Category, id=currentCat) newItem.save() items = Item.objects.all().filter(category=currentCat) context = {'items': items,} if request.is_ajax(): return render_to_response('inventory/getList.html', context, context_instance=RequestContext(request)) else: return HttpResponseRedirect(reverse('inventory:list', args=(cat_id,))) message = "Oops, it broke! You should enter in something valid." form = CategoryForm() categories = Category.objects.all() context = {'message': message, 'form': form, 'categories': categories, } return render_to_response('inventory/index.html', context, context_instance=RequestContext(request))
def edit(id=None): setExits() g.title = "Edit {} Record".format(g.title) item = Item(g.db) transactionList = None #import pdb;pdb.set_trace() if request.form: id = request.form.get('id', None) id = cleanRecordID(id) if id < 0: flash("Invalid Record ID") return redirect(g.listURL) categories = Category(g.db).select() uoms = Uom(g.db).select() if id >= 0 and not request.form: if id == 0: rec = item.new() # allow creation of new properties item.save(rec) # need an id for transactions g.db.commit() # have to commit this to protect the ID we just got # This name changes behavure of the Cancel link in the edit form g.cancelURL = url_for('.cancel') + "{}/".format(rec.id) else: rec = item.get(id) if not rec: flash('Record not Found') return redirect(g.listURL) #import pdb;pdb.set_trace() if request.form: rec = item.get(id) if rec: item.update(rec, request.form) if validate_form(): item.save(rec) try: g.db.commit() return redirect(g.listURL) except Exception as e: g.db.rollback() flash( printException('Error attempting to save Item record', str(e))) return redirect(g.listURL) else: pass # There are imput errors else: flash('Record not Found') return redirect(g.listURL) transactionList = get_trx_list_for_item(rec.id) transferList = get_transfer_list_for_item(rec.id) qoh_list = get_qoh_by_warehouse(rec.id) on_hand = item.stock_on_hand(id) return render_template('item_edit.html', rec=rec, categories=categories, uoms=uoms, transactionList=transactionList, transferList=transferList, qoh_list=qoh_list, on_hand=on_hand)
from inventory.models import Item, Product import random number = 10 for i in range(int(number)): p = Product() p.barcode_id = i * 100 p.name = 'Product #{i}00'.format(i=i) p.description = 'foo' p.notes = 'foooooo' p.save() for j in range(int(number)): item = Item() item.product = p item.cost = random.randrange(2, 100) item.save()
def addItem(name, count, itemtype): for i in range(count): i = Item() i.itemType = itemtype i.itemName = name i.save()
def create(self, validated_data): item = Item(**validated_data) item.save() return item