예제 #1
0
파일: views.py 프로젝트: ratna1234/nerp
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,
    })
예제 #2
0
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)
예제 #3
0
파일: views.py 프로젝트: ratna1234/nerp
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,
    })
예제 #4
0
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))
예제 #6
0
 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})
예제 #7
0
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
예제 #8
0
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))
예제 #9
0
    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)
예제 #10
0
 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}
예제 #11
0
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'))
예제 #12
0
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})
예제 #13
0
파일: tests.py 프로젝트: rahji/orthosie
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)
예제 #14
0
 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}
예제 #15
0
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')
예제 #16
0
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
예제 #17
0
파일: tests.py 프로젝트: rahji/orthosie
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))
예제 #18
0
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))
예제 #19
0
파일: views.py 프로젝트: tdhunt631/cs4990
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)
예제 #21
0
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
예제 #22
0
파일: views.py 프로젝트: tdhunt631/cs4990
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))
예제 #23
0
파일: item.py 프로젝트: wleddy/inventory
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()
예제 #25
0
def addItem(name, count, itemtype):
    for i in range(count):
        i = Item()
        i.itemType = itemtype
        i.itemName = name
        i.save()
예제 #26
0
 def create(self, validated_data):
     item = Item(**validated_data)
     item.save()
     return item