The Inventory Management System Project in Python is a console based application which aims to provide a better inventory of businesses in determining which goods to order and when to order it. It keeps track of merchandise from purchase to sale.
This project mainly recognizes and responds to patterns to guarantee that there is always adequate stock to satisfy client orders and there is a monitoring of shortfall of each product and detected early enough.
Importance of Inventory Management System in Python
This inventory management is very important to a business success since it ensures that there is never too much or too little goods of products on hand, reducing the danger of stock outs and erroneous records.
Additionally, Inventory management allows you to save money while still meeting the demands of your customers. In other words, it provides effective operational cost control.
The backbone of any business is knowing what you have, what’s in your warehouse, and how to effectively manage the supply chain.
Project Details and Technology
Project Name: | Inventory Management System Project In Python With Source Code |
Abstract | Inventory Management System in Python keeps track of merchandise from purchase to sale. |
Language/s Used: | Python (GUI Based) |
Python version (Recommended): | 3.8 or 3.9 |
Database: | MySQL |
Type: | Desktop Application |
Developer: | Source Code Hero |
Updates: | 0 |
About The Project
The Inventory Management System is a desktop application that is based on a console based platform.
A Sales and Inventory Management System in Python is an open-source product that users can download and modify to suit their needs.
Major Functionalities Of The System
- Manage Products
- Sales and Inventory Management System
- Generate bill
How Do You Program An Inventory System In Python?
The code given below is the full source code on how to program an inventory system in python.
1.Create a main form.
First, create a main form to design the main function of inventory system using python.
#import all the modules
from tkinter import *
from tkinter import messagebox
import mysql.connector
from mysql.connector import Error
import tkinter.messagebox
import datetime
import math
date=datetime.datetime.now().date()
#temporary list like sessions
products_list=[]
product_price=[]
product_quantity=[]
product_id=[]
r = []
class Application():
def __init__(self,master,*args,**kwargs):
self.master=master
self.left=Frame(master,width=700,height=768,bg='black')
self.left.pack(side=LEFT)
self.right = Frame(master, width=666, height=768, bg='gray')
self.right.pack(side=RIGHT)
#components
self.heading=Label(self.left,text="JUDAY'S STORE",font=('arial 40 bold'),fg='white',bg='black')
self.heading.place(x=0,y=0)
self.date_l=Label(self.right,text="Today's Date: "+str(date),font=('arial 16 bold'),bg='gray',fg='white')
self.date_l.place(x=0,y=0)
#table invoice=======================================================
self.tproduct=Label(self.right,text="Products",font=('arial 18 bold'),bg='gray',fg='white')
self.tproduct.place(x=0,y=60)
self.tquantity = Label(self.right, text="Quantity", font=('arial 18 bold'), bg='gray', fg='white')
self.tquantity.place(x=300, y=60)
self.tamount = Label(self.right, text="Amount", font=('arial 18 bold'), bg='gray', fg='white')
self.tamount.place(x=500, y=60)
#enter stuff
self.enterid=Label(self.left,text="Enter Product's ID",font=('arial 18 bold'),fg='white',bg='black')
self.enterid.place(x=0,y=80)
self.enteride=Entry(self.left,width=25,font=('arial 18 bold'),bg='lightblue')
self.enteride.place(x=220,y=80)
self.enteride.focus()
#button
self.search_btn=Button(self.left,text="Search",width=22,height=2,bg='orange',command=self.ajax)
self.search_btn.place(x=380,y=120)
#fill it later by the fuction ajax
self.productname=Label(self.left,text="",font=('arial 27 bold'),bg='white',fg='steelblue')
self.productname.place(x=0,y=250)
self.pprice = Label(self.left, text="", font=('arial 27 bold'), bg='white', fg='steelblue')
self.pprice.place(x=0, y=290)
#total label
self.total_l=Label(self.right,text="",font=('arial 40 bold'),bg='lightblue',fg='white')
self.total_l.place(x=0,y=600)
def ajax(self,*args,**kwargs):
self.conn = mysql.connector.connect(host='localhost',
database='inventory_system',
user='root',
password='')
self.get_id=self.enteride.get()
#get the product info with that id and fill i the labels above
self.mycursor = self.conn.cursor()
self.mycursor.execute("SELECT * FROM inventory WHERE id= %s",[self.get_id])
self.pc = self.mycursor.fetchall()
if self.pc:
for self.r in self.pc:
self.get_id=self.r[0]
self.get_name=self.r[1]
self.get_price=self.r[3]
self.get_stock=self.r[2]
self.productname.configure(text="Product's Name: " +str(self.get_name),fg='white',bg='black')
self.pprice.configure(text="Price:RS. "+str(self.get_price),fg='white',bg='black')
#craete the quantity and the discount label
self.quantityl=Label(self.left,text="Enter Quantity",font=('arial 18 bold'),fg='white',bg='black')
self.quantityl.place(x=0,y=370)
self.quantity_e=Entry(self.left,width=25,font=('arial 18 bold'),bg='lightblue')
self.quantity_e.place(x=190,y=370)
self.quantity_e.focus()
#discount
self.discount_l = Label(self.left, text="Enter Discount", font=('arial 18 bold'),fg='white',bg='black')
self.discount_l.place(x=0, y=410)
self.discount_e = Entry(self.left, width=25, font=('arial 18 bold'), bg='lightblue')
self.discount_e.place(x=190, y=410)
self.discount_e.insert(END,0)
#add to cart button
self.add_to_cart_btn = Button(self.left, text="Add to Cart", width=22, height=2, bg='orange',command=self.add_to_cart)
self.add_to_cart_btn.place(x=350, y=450)
#genrate bill and change
self.change_l=Label(self.left,text="Given Amount",font=('arial 18 bold'),fg='white',bg='black')
self.change_l.place(x=0,y=550)
self.change_e=Entry(self.left,width=25,font=('arial 18 bold'),bg='lightblue')
self.change_e.place(x=190,y=550)
self.change_btn= Button(self.left, text="Calculate Change", width=22, height=2, bg='orange',command=self.change_func)
self.change_btn.place(x=350, y=590)
#geneerate bill button
self.bill_btn = Button(self.left, text="Generate Bill", width=100, height=2, bg='red',fg='white',command=self.generate_bill)
self.bill_btn.place(x=0, y=640)
else:
messagebox.showinfo("success", "Done everything smoothly")
def add_to_cart(self,*args,**kwargs):
self.quantity_value=int(self.quantity_e.get())
if self .quantity_value >int(self.get_stock):
tkinter.messagebox.showinfo("Error","Not that any products in our stock.")
else:
#calculate the price first
self.final_price=(float(self.quantity_value) * float(self.get_price))-(float(self.discount_e.get()))
products_list.append(self.get_name)
product_price.append(self.final_price)
product_quantity.append(self.quantity_value)
product_id.append(self.get_id)
self.x_index=0
self.y_index=100
self.counter=0
for self.p in products_list:
self.tempname=Label(self.right,text=str(products_list[self.counter]),font=('arial 18 bold'),bg='gray',fg='white')
self.tempname.place(x=0,y=self.y_index)
self.tempqt = Label(self.right, text=str(product_quantity[self.counter]), font=('arial 18 bold'), bg='gray', fg='white')
self.tempqt.place(x=300, y=self.y_index)
self.tempprice = Label(self.right, text=str(product_price[self.counter]), font=('arial 18 bold'), bg='gray', fg='white')
self.tempprice.place(x=500, y=self.y_index)
self.y_index+=40
self.counter+=1
#total confugure
self.total_l.configure(text="Total : Rs. "+str(sum(product_price)),bg='gray',fg='white')
#delete
self.quantity_e.place_forget()
self.discount_l.place_forget()
self.discount_e.place_forget()
self.productname.configure(text="")
self.pprice.configure(text="")
self.add_to_cart_btn.destroy()
#autofocus to the enter id
self.enteride.focus()
self.quantityl.focus()
self.enteride.delete(0,END)
def change_func(self,*args,**kwargs):
self.amount_given=float(self.change_e.get())
self.our_total=float(sum(product_price))
self.to_give=self.amount_given-self.our_total
#label change
self.c_amount=Label(self.left,text="Change: Rs. "+str(self.to_give),font=('arial 18 bold'),fg='red',bg='black')
self.c_amount.place(x=0 ,y=600)
def generate_bill(self,*args,**kwargs):
self.mycursor.execute("SELECT * FROM inventory WHERE id=%s",[self.get_id])
self.pc = self.mycursor.fetchall()
for r in self.pc:
self.old_stock=r[2]
for i in products_list:
for r in self.pc:
self.old_stock = r[2]
self.new_stock=int(self.old_stock) - int(self.quantity_value)
#updating the stock
self.mycursor.execute("UPDATE inventory SET stock=%s WHERE id=%s",[self.new_stock,self.get_id])
self.conn.commit()
#inster into transcation
self.mycursor.execute("INSERT INTO transaction (product_name,quantity,amount,date) VALUES(%s,%s,%s,%s)",[self.get_name,self.quantity_value,self.get_price,date])
self.conn.commit()
print("Decreased")
tkinter.messagebox.showinfo("success","Done everything smoothly")
root=Tk()
Application(root)
root.geometry("1366x768+0+0")
root.title("Inventory Management System by IT Source Code")
root.mainloop()
2. Create add form.
Next, create a form for adding product into MySQL Database.
#import all the modules
from tkinter import *
import mysql.connector
from mysql.connector import Error
import tkinter.messagebox
conn=mysql.connector.connect(host='localhost',
database='inventory_system',
user='root',
password='')
mycursor = conn.cursor()
mycursor.execute("SELECT Max(id) from inventory")
result = mycursor.fetchall()
for r in result:
id=r[0]
class Database:
def __init__(self,master,*args,**kwargs):
self.master=master
self.heading=Label(master,text="Add in the database",font=('arial 40 bold'),fg='steelblue')
self.heading.place(x=400,y=0)
#lables for the window
self.name_l=Label(master,text="Enter Product Name",font=('arial 18 bold'))
self.name_l.place(x=0,y=70)
self.stock_l=Label(master,text="Enter Stocks",font=('arial 18 bold'))
self.stock_l.place(x=0,y=120)
self.cp_l = Label(master, text="Enter Cost Price ", font=('arial 18 bold'))
self.cp_l.place(x=0, y=170)
#enteries for window
self.name_e=Entry(master,width=25,font=('arial 18 bold'))
self.name_e.place(x=380,y=70)
self.stock_e = Entry(master, width=25, font=('arial 18 bold'))
self.stock_e.place(x=380, y=120)
self.cp_e = Entry(master, width=25, font=('arial 18 bold'))
self.cp_e.place(x=380, y=170)
#button to add to the database
self.btn_add=Button(master,text='Add to Database',width=25,height=2,bg='steelblue',fg='white',command=self.get_items)
self.btn_add.place(x=520,y=220)
self.btn_clear=Button(master,text="Clear All Fields",width=18,height=2,bg='red',fg='white',command=self.clear_all)
self.btn_clear.place(x=350,y=220)
#text box for the log
self.tbBox=Text(master,width=60,height=18)
self.tbBox.place(x=750,y=70)
self.tbBox.insert(END,"ID has reached up to:"+str(id))
self.master.bind('<Return>', self.get_items)
self.master.bind('<Up>', self.clear_all)
def get_items(self, *args, **kwargs):
# get from entries
self.name = self.name_e.get()
self.stock = self.stock_e.get()
self.cp = self.cp_e.get()
# dynamic entries
if self.name == '' or self.stock == '' or self.cp == '':
tkinter.messagebox.showinfo("Error", "Please Fill all the entries.")
else:
mycursor.execute("INSERT INTO inventory (name, stock, price) VALUES(%s,%s,%s)",[self.name,self.stock,self.cp])
conn.commit()
# textbox insert
self.tbBox.insert(END, "\n\nInseted " + str(self.name) + " into the database with the quantity of " + str(self.stock))
tkinter.messagebox.showinfo("Success", "Successfully added to the database")
def clear_all(self, *args, **kwargs):
num = id + 1
self.name_e.delete(0, END)
self.stock_e.delete(0, END)
self.cp_e.delete(0, END)
root=Tk()
b=Database(root)
root.geometry("1366x768+0+0")
root.title("Add in the database")
root.mainloop()
Project Output:
By the way, if you are new to python programming and you don’t have any idea what Python IDE to use, I have here a list of Best Python IDE for Windows, Linux, Mac OS for you. Additionally, I also have here How to Download and Install Latest Version of Python on Windows.
To start executing a Inventory Management System Project With Source Code, make sure that you have installed Python in your computer.
Steps On How To Run The Project
Time needed: 5 minutes
These are the steps on how to run Inventory Management System Project In Python With Source Code
- Download Source Code
First, find the downloadable source code below and click to start downloading the source code file.
- Extract File
Next, after finished to download the file, go to file location and right click the file and click extract.
- Open PyCharm
Next, open pycharm IDE and open the project you’ve download.
- Open Xampp
Next, open xampp and click start the apache and mysql.
- Create Database
Next, click any browser and type to the URL localhost/phpmyadmin and create database.
- Import Database
Next, click the created database and click import to the right tab and click choose file and import the sql file inside the download folder.
- Run Project
Next, go to the Pycharm and click the run button to start executing the project.
Download Source Code below
Summary
This Article is the way to enhance and develop our skills and logic ideas which is important in practicing the python programming language which is most well known and most usable programming language in many company.
Using any data collection method, the Valid solution allows you to have up-to-date information on your inventory and all stock movement through the web.
Related Articles
- Inventory Management System Project in ASP.net with Source Code
- Sales and Inventory System In PHP Free Download
- Inventory Management System Project in C with Source Code
- Inventory Management System Project In Java With Source Code
- Sales and Inventory Management System Project In VB.net Source Code
Inquiries
If you have any questions or suggestions about Inventory Management System Project In Python With Source Code, please feel free to leave a comment below.
Error:
mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)