diff --git a/projects/Billing_system/Bill.PNG b/projects/Billing_system/Bill.PNG
new file mode 100644
index 00000000..3e0075e8
Binary files /dev/null and b/projects/Billing_system/Bill.PNG differ
diff --git a/projects/Billing_system/README.md b/projects/Billing_system/README.md
new file mode 100644
index 00000000..048967ae
--- /dev/null
+++ b/projects/Billing_system/README.md
@@ -0,0 +1,24 @@
+
Billing system using Tkinter
+This project can be used for any shops. User can store all the data and generate the bill.
+
+Tech stack:
+
+
+Libraries used:
+
+ - Tkinter
+ - Os
+ - Messagebox
+
+
+To install external modules:
+Run pip install tkinter
+
+To execute the project:
+Run billing system.py
+
+Screenshot/GIF of this project.
+
+
diff --git a/projects/Billing_system/biling_system.py b/projects/Billing_system/biling_system.py
new file mode 100644
index 00000000..38c8b880
--- /dev/null
+++ b/projects/Billing_system/biling_system.py
@@ -0,0 +1,427 @@
+from tkinter import*
+import random
+import os
+from tkinter import messagebox
+
+# ============main============================
+class Bill_App:
+ def __init__(self, root):
+ self.root = root
+ self.root.geometry("1350x700+0+0")
+ self.root.title("Billing Software")
+ bg_color = "#badc57"
+ title = Label(self.root, text="Billing Software", font=('times new roman', 30, 'bold'), pady=2, bd=12, bg="#badc57", fg="Black", relief=GROOVE)
+ title.pack(fill=X)
+ # ================variables=======================
+ self.sanitizer = IntVar()
+ self.mask = IntVar()
+ self.hand_gloves = IntVar()
+ self.dettol = IntVar()
+ self.newsprin = IntVar()
+ self.thermal_gun = IntVar()
+ # ============grocery==============================
+ self.rice = IntVar()
+ self.food_oil = IntVar()
+ self.wheat = IntVar()
+ self.daal = IntVar()
+ self.flour = IntVar()
+ self.maggi = IntVar()
+ #=============coldDtinks=============================
+ self.sprite = IntVar()
+ self.limka = IntVar()
+ self.mazza = IntVar()
+ self.coke = IntVar()
+ self.fanta = IntVar()
+ self.mountain_duo = IntVar()
+ # ==============Total product price================
+ self.medical_price = StringVar()
+ self.grocery_price = StringVar()
+ self.cold_drinks_price = StringVar()
+ # ==============Customer==========================
+ self.c_name = StringVar()
+ self.c_phone = StringVar()
+ self.bill_no = StringVar()
+ x = random.randint(1000, 9999)
+ self.bill_no.set(str(x))
+ self.search_bill = StringVar()
+ # ===============Tax================================
+ self.medical_tax = StringVar()
+ self.grocery_tax = StringVar()
+ self.cold_drinks_tax = StringVar()
+ # =============customer retail details======================
+ F1 = LabelFrame(self.root, text="Customer Details", font=('times new roman', 15, 'bold'), bd=10, fg="Black", bg="#badc57")
+ F1.place(x=0, y=80, relwidth=1)
+ cname_lbl = Label(F1, text="Customer Name:", bg=bg_color, font=('times new roman', 15, 'bold'))
+ cname_lbl.grid(row=0, column=0, padx=20, pady=5)
+ cname_txt = Entry(F1, width=15, textvariable=self.c_name, font='arial 15', bd=7, relief=GROOVE)
+ cname_txt.grid(row=0, column=1, pady=5, padx=10)
+
+ cphn_lbl = Label(F1, text="Customer Phone:", bg="#badc57", font=('times new roman', 15, 'bold'))
+ cphn_lbl.grid(row=0, column=2, padx=20, pady=5)
+ cphn_txt = Entry(F1, width=15, textvariable=self.c_phone, font='arial 15', bd=7, relief=GROOVE)
+ cphn_txt.grid(row=0, column=3, pady=5, padx=10)
+
+ c_bill_lbl = Label(F1, text="Bill Number:", bg="#badc57", font=('times new roman', 15, 'bold'))
+ c_bill_lbl.grid(row=0, column=4, padx=20, pady=5)
+ c_bill_txt = Entry(F1, width=15, textvariable=self.search_bill, font='arial 15', bd=7, relief=GROOVE)
+ c_bill_txt.grid(row=0, column=5, pady=5, padx=10)
+
+ bil_btn = Button(F1, text="Search", command=self.find_bill, width=10, bd=7, font=('arial', 12, 'bold'), relief=GROOVE)
+ bil_btn.grid(row=0, column=6, pady=5, padx=10)
+
+ # ===================Medical====================================
+ F2 = LabelFrame(self.root, text="Medical Purpose", font=('times new roman', 15, 'bold'), bd=10, fg="Black", bg="#badc57")
+ F2.place(x=5, y=180, width=325, height=380)
+
+ sanitizer_lbl = Label(F2, text="Sanitizer", font=('times new roman', 16, 'bold'), bg="#badc57", fg="black")
+ sanitizer_lbl.grid(row=0, column=0, padx=10, pady=10, sticky='W')
+ sanitizer_txt = Entry(F2, width=10, textvariable=self.sanitizer, font=('times new roman', 16, 'bold'), bd=5, relief=GROOVE)
+ sanitizer_txt.grid(row=0, column=1, padx=10, pady=10)
+
+ mask_lbl = Label(F2, text="Mask", font=('times new roman', 16, 'bold'), bg="#badc57", fg="black")
+ mask_lbl.grid(row=1, column=0, padx=10, pady=10, sticky='W')
+ mask_txt = Entry(F2, width=10, textvariable=self.mask, font=('times new roman', 16, 'bold'), bd=5, relief=GROOVE)
+ mask_txt.grid(row=1, column=1, padx=10, pady=10)
+
+ hand_gloves_lbl = Label(F2, text="Hand Gloves", font=('times new roman', 16, 'bold'), bg="#badc57", fg="black")
+ hand_gloves_lbl.grid(row=2, column=0, padx=10, pady=10, sticky='W')
+ hand_gloves_txt = Entry(F2, width=10, textvariable=self.hand_gloves, font=('times new roman', 16, 'bold'), bd=5, relief =GROOVE)
+ hand_gloves_txt.grid(row=2, column=1, padx=10, pady=10)
+
+ dettol_lbl = Label(F2, text="Dettol", font=('times new roman', 16, 'bold'), bg="#badc57", fg="black")
+ dettol_lbl.grid(row=3, column=0, padx=10, pady=10, sticky='W')
+ dettol_txt = Entry(F2, width=10, textvariable=self.dettol, font=('times new roman', 16, 'bold'), bd=5, relief=GROOVE)
+ dettol_txt.grid(row=3, column=1, padx=10, pady=10)
+
+ newsprin_lbl = Label(F2, text="Newsprin", font =('times new roman', 16, 'bold'), bg = "#badc57", fg = "black")
+ newsprin_lbl.grid(row=4, column=0, padx=10, pady=10, sticky='W')
+ newsprin_txt = Entry(F2, width=10, textvariable=self.newsprin, font=('times new roman', 16, 'bold'), bd=5, relief=GROOVE)
+ newsprin_txt.grid(row=4, column=1, padx=10, pady=10)
+
+ thermal_gun_lbl = Label(F2, text="Thermal Gun", font=('times new roman', 16, 'bold'), bg="#badc57", fg="black")
+ thermal_gun_lbl.grid(row=5, column=0, padx=10, pady=10, sticky='W')
+ thermal_gun_txt = Entry(F2, width=10, textvariable=self.thermal_gun, font=('times new roman', 16, 'bold'), bd=5, relief=GROOVE)
+ thermal_gun_txt.grid(row=5, column=1, padx=10, pady=10)
+
+ # ==========GroceryItems=========================
+ F3 = LabelFrame(self.root, text="Grocery Items", font=('times new roman', 15, 'bold'), bd=10, fg="Black", bg="#badc57")
+ F3.place(x=340, y=180, width=325, height=380)
+
+ rice_lbl = Label(F3, text="Rice", font=('times new roman', 16, 'bold'), bg="#badc57", fg="black")
+ rice_lbl.grid(row=0, column=0, padx=10, pady=10, sticky='W')
+ rice_txt = Entry(F3, width=10, textvariable=self.rice, font=('times new roman', 16, 'bold'), bd=5, relief=GROOVE)
+ rice_txt.grid(row=0, column=1, padx=10, pady=10)
+
+ food_oil_lbl = Label(F3, text="Food Oil", font=('times new roman', 16, 'bold'), bg="#badc57", fg="black")
+ food_oil_lbl.grid(row=1, column=0, padx=10, pady=10, sticky='W')
+ food_oil_txt = Entry(F3, width=10, textvariable=self.food_oil, font=('times new roman', 16, 'bold'), bd=5, relief=GROOVE)
+ food_oil_txt.grid(row=1, column=1, padx=10, pady=10)
+
+ wheat_lbl = Label(F3, text="Wheat", font=('times new roman', 16, 'bold'), bg="#badc57", fg="black")
+ wheat_lbl.grid(row=2, column=0, padx=10, pady=10, sticky='W')
+ wheat_txt = Entry(F3, width=10, textvariable=self.wheat, font=('times new roman', 16, 'bold'), bd=5, relief=GROOVE)
+ wheat_txt.grid(row=2, column=1, padx=10, pady=10)
+
+ daal_lbl = Label(F3, text="Daal", font=('times new roman', 16, 'bold'), bg="#badc57", fg="black")
+ daal_lbl.grid(row=3, column=0, padx=10, pady=10, sticky='W')
+ daal_txt = Entry(F3, width=10, textvariable=self.daal, font=('times new roman', 16, 'bold'), bd=5, relief=GROOVE)
+ daal_txt.grid(row=3, column=1, padx=10, pady=10)
+
+ flour_lbl = Label(F3, text="Flour", font=('times new roman', 16, 'bold'), bg="#badc57", fg="black")
+ flour_lbl.grid(row=4, column=0, padx=10, pady=10, sticky='W')
+ flour_txt = Entry(F3, width=10, textvariable=self.flour, font=('times new roman', 16, 'bold'), bd=5, relief=GROOVE)
+ flour_txt.grid(row=4, column=1, padx=10, pady=10)
+
+ maggi_lbl = Label(F3, text="Maggi", font=('times new roman', 16, 'bold'), bg="#badc57", fg="black")
+ maggi_lbl.grid(row=5, column=0, padx=10, pady=10, sticky='W')
+ maggi_txt = Entry(F3, width=10, textvariable=self.maggi, font=('times new roman', 16, 'bold'), bd=5, relief=GROOVE)
+ maggi_txt.grid(row=5, column=1, padx=10, pady=10)
+
+ # ===========ColdDrinks================================
+ F4 = LabelFrame(self.root, text="Cold Drinks", font=('times new roman', 15, 'bold'), bd=10, fg="Black", bg="#badc57")
+ F4.place(x=670, y=180, width=325, height=380)
+
+ sprite_lbl = Label(F4, text="Sprite", font=('times new roman', 16, 'bold'), bg="#badc57", fg="black")
+ sprite_lbl.grid(row=0, column=0, padx=10, pady=10, sticky='W')
+ sprite_txt = Entry(F4, width=10, textvariable=self.sprite, font=('times new roman', 16, 'bold'), bd=5, relief=GROOVE)
+ sprite_txt.grid(row=0, column=1, padx=10, pady=10)
+
+ limka_lbl = Label(F4, text="Limka", font=('times new roman', 16, 'bold'), bg="#badc57", fg="black")
+ limka_lbl.grid(row=1, column=0, padx=10, pady=10, sticky='W')
+ limka_txt = Entry(F4, width=10, textvariable=self.limka, font=('times new roman', 16, 'bold'), bd=5, relief=GROOVE)
+ limka_txt.grid(row=1, column=1, padx=10, pady=10)
+
+ mazza_lbl = Label(F4, text="Mazza", font=('times new roman', 16, 'bold'), bg="#badc57", fg="black")
+ mazza_lbl.grid(row=2, column=0, padx=10, pady=10, sticky='W')
+ wheat_txt = Entry(F4, width=10, textvariable=self.mazza, font=('times new roman', 16, 'bold'), bd=5, relief=GROOVE)
+ wheat_txt.grid(row=2, column=1, padx=10, pady=10)
+
+ coke_lbl = Label(F4, text="Coke", font=('times new roman', 16, 'bold'), bg="#badc57", fg="black")
+ coke_lbl.grid(row=3, column=0, padx=10, pady=10, sticky='W')
+ coke_txt = Entry(F4, width=10, textvariable=self.coke, font=('times new roman', 16, 'bold'), bd=5, relief=GROOVE)
+ coke_txt.grid(row=3, column=1, padx=10, pady=10)
+
+ fanta_lbl = Label(F4, text="Fanta", font=('times new roman', 16, 'bold'), bg="#badc57", fg="black")
+ fanta_lbl.grid(row=4, column=0, padx=10, pady=10, sticky='W')
+ fanta_txt = Entry(F4, width=10, textvariable=self.fanta, font=('times new roman', 16, 'bold'), bd=5, relief=GROOVE)
+ fanta_txt.grid(row=4, column=1, padx=10, pady=10)
+
+ mountain_duo_lbl = Label(F4, text="Mountain Duo", font=('times new roman', 16, 'bold'), bg="#badc57", fg="black")
+ mountain_duo_lbl.grid(row=5, column=0, padx=10, pady=10, sticky='W')
+ mountain_duo_txt = Entry(F4, width=10, textvariable=self.mountain_duo, font=('times new roman', 16, 'bold'), bd=5, relief=GROOVE)
+ mountain_duo_txt.grid(row=5, column=1, padx=10, pady=10)
+
+ # =================BillArea======================
+ F5 = Frame(self.root, bd=10, relief=GROOVE)
+ F5.place(x=1010, y=180, width=350, height=380)
+
+ bill_title = Label(F5, text="Bill Area", font='arial 15 bold', bd=7, relief=GROOVE)
+ bill_title.pack(fill=X)
+ scroll_y = Scrollbar(F5, orient=VERTICAL)
+ self.txtarea = Text(F5, yscrollcommand=scroll_y.set)
+ scroll_y.pack(side=RIGHT, fill=Y)
+ scroll_y.config(command=self.txtarea.yview)
+ self.txtarea.pack(fill=BOTH, expand=1)
+
+ # =======================ButtonFrame=============
+ F6 = LabelFrame(self.root, text="Bill Area", font=('times new roman', 14, 'bold'), bd=10, fg="Black", bg="#badc57")
+ F6.place(x=0, y=560, relwidth=1, height=140)
+
+ m1_lbl = Label(F6, text="Total Medical Price", font=('times new roman', 14, 'bold'), bg="#badc57", fg="black")
+ m1_lbl.grid(row=0, column=0, padx=20, pady=1, sticky='W')
+ m1_txt = Entry(F6, width=18, textvariable=self.medical_price, font='arial 10 bold', bd=7, relief=GROOVE)
+ m1_txt.grid(row=0, column=1, padx=18, pady=1)
+
+ m2_lbl = Label(F6, text="Total Grocery Price", font=('times new roman', 14, 'bold'), bg="#badc57", fg="black")
+ m2_lbl.grid(row=1, column=0, padx=20, pady=1, sticky='W')
+ m2_txt = Entry(F6, width=18, textvariable=self.grocery_price, font='arial 10 bold', bd=7, relief=GROOVE)
+ m2_txt.grid(row=1, column=1, padx=18, pady=1)
+
+ m3_lbl = Label(F6, text="Total Cold Drinks Price", font=('times new roman', 14, 'bold'), bg="#badc57", fg="black")
+ m3_lbl.grid(row=2, column=0, padx=20, pady=1, sticky='W')
+ m3_txt = Entry(F6, width=18, textvariable=self.cold_drinks_price, font='arial 10 bold', bd=7, relief=GROOVE)
+ m3_txt.grid(row=2, column=1, padx=18, pady=1)
+
+ m4_lbl = Label(F6, text="Medical Tax", font=('times new roman', 14, 'bold'), bg="#badc57", fg="black")
+ m4_lbl.grid(row=0, column=2, padx=20, pady=1, sticky='W')
+ m4_txt = Entry(F6, width=18, textvariable=self.medical_tax, font='arial 10 bold', bd=7, relief=GROOVE)
+ m4_txt.grid(row=0, column=3, padx=18, pady=1)
+
+ m5_lbl = Label(F6, text="Grocery Tax", font=('times new roman', 14, 'bold'), bg="#badc57", fg="black")
+ m5_lbl.grid(row=1, column=2, padx=20, pady=1, sticky='W')
+ m5_txt = Entry(F6, width=18, textvariable=self.grocery_tax, font='arial 10 bold', bd=7, relief=GROOVE)
+ m5_txt.grid(row=1, column=3, padx=18, pady=1)
+
+ m6_lbl = Label(F6, text="Cold Drinks Tax", font=('times new roman', 14, 'bold'), bg="#badc57", fg="black")
+ m6_lbl.grid(row=2, column=2, padx=20, pady=1, sticky='W')
+ m6_txt = Entry(F6, width=18, textvariable=self.cold_drinks_tax, font='arial 10 bold', bd=7, relief=GROOVE)
+ m6_txt.grid(row=2, column=3, padx=18, pady=1)
+
+ # =======Buttons-======================================
+ btn_f = Frame(F6, bd=7, relief=GROOVE)
+ btn_f.place(x=760, width=580, height=105)
+
+ total_btn = Button(btn_f, command=self.total, text="Total", bg="#535C68", bd=2, fg="white", pady=15, width=12, font='arial 13 bold')
+ total_btn.grid(row=0, column=0, padx=5, pady=5)
+
+ generateBill_btn = Button(btn_f, command=self.bill_area, text="Generate Bill", bd=2, bg="#535C68", fg="white", pady=12, width=12, font='arial 13 bold')
+ generateBill_btn.grid(row=0, column=1, padx=5, pady=5)
+
+ clear_btn = Button(btn_f, command=self.clear_data, text="Clear", bg="#535C68", bd=2, fg="white", pady=15, width=12, font='arial 13 bold')
+ clear_btn.grid(row=0, column=2, padx=5, pady=5)
+
+ exit_btn = Button(btn_f, command=self.exit_app, text="Exit", bd=2, bg="#535C68", fg="white", pady=15, width=12, font='arial 13 bold')
+ exit_btn.grid(row=0, column=3, padx=5, pady=5)
+ self.welcome_bill()
+
+#================totalBill==========================
+ def total(self):
+ self.m_h_g_p = self.hand_gloves.get()*12
+ self.m_s_p = self.sanitizer.get()*2
+ self.m_m_p = self.mask.get()*5
+ self.m_d_p = self.dettol.get()*30
+ self.m_n_p = self.newsprin.get()*5
+ self.m_t_g_p = self.thermal_gun.get()*15
+ self.total_medical_price = float(self.m_m_p+self.m_h_g_p+self.m_d_p+self.m_n_p+self.m_t_g_p+self.m_s_p)
+
+ self.medical_price.set("Rs. "+str(self.total_medical_price))
+ self.c_tax = round((self.total_medical_price*0.05), 2)
+ self.medical_tax.set("Rs. "+str(self.c_tax))
+
+ self.g_r_p = self.rice.get()*10
+ self.g_f_o_p = self.food_oil.get()*10
+ self.g_w_p = self.wheat.get()*10
+ self.g_d_p = self.daal.get()*6
+ self.g_f_p = self.flour.get()*8
+ self.g_m_p = self.maggi.get()*5
+ self.total_grocery_price = float(self.g_r_p+self.g_f_o_p+self.g_w_p+self.g_d_p+self.g_f_p+self.g_m_p)
+
+ self.grocery_price.set("Rs. " + str(self.total_grocery_price))
+ self.g_tax = round((self.total_grocery_price*5), 2)
+ self.grocery_tax.set("Rs. " + str(self.g_tax))
+
+ self.c_d_s_p = self.sprite.get()*10
+ self.c_d_l_p = self.limka.get()*10
+ self.c_d_m_p = self.mazza.get()*10
+ self.c_d_c_p = self.coke.get()*10
+ self.c_d_f_p = self.fanta.get()*10
+ self.c_m_d = self.mountain_duo.get()*10
+ self.total_cold_drinks_price = float(self.c_d_s_p+self.c_d_l_p+self.c_d_m_p+self.c_d_c_p+self.c_d_f_p+self.c_m_d)
+
+ self.cold_drinks_price.set("Rs. "+str(self.total_cold_drinks_price))
+ self.c_d_tax = round((self.total_cold_drinks_price * 0.1), 2)
+ self.cold_drinks_tax.set("Rs. "+str(self.c_d_tax))
+
+ self.total_bill = float(self.total_medical_price+self.total_grocery_price+self.total_cold_drinks_price+self.c_tax+self.g_tax+self.c_d_tax)
+
+#==============welcome-bill==============================
+ def welcome_bill(self):
+ self.txtarea.delete('1.0', END)
+ self.txtarea.insert(END, "\tWelcome Webcode Retail")
+ self.txtarea.insert(END, f"\n Bill Number:{self.bill_no.get()}")
+ self.txtarea.insert(END, f"\nCustomer Name:{self.c_name.get()}")
+ self.txtarea.insert(END, f"\nPhone Number{self.c_phone.get()}")
+ self.txtarea.insert(END, f"\n================================")
+ self.txtarea.insert(END, f"\nProducts\t\tQTY\t\tPrice")
+
+#=========billArea=================================================
+ def bill_area(self):
+ if self.c_name.get() == " " or self.c_phone.get() == " ":
+ messagebox.showerror("Error", "Customer Details Are Must")
+ elif self.medical_price.get() == "Rs. 0.0" and self.grocery_price.get() == "Rs. 0.0" and self.cold_drinks_price.get()=="Rs. 0.0":
+ messagebox.showerror("Error", "No Product Purchased")
+ else:
+ self.welcome_bill()
+ # ============medical===========================
+ if self.sanitizer.get() != 0:
+ self.txtarea.insert(END, f"\n Sanitizer\t\t{self.sanitizer.get()}\t\t{self.m_s_p}")
+ if self.mask.get() != 0:
+ self.txtarea.insert(END, f"\n Sanitizer\t\t{self.mask.get()}\t\t{self.m_m_p}")
+ if self.hand_gloves.get() != 0:
+ self.txtarea.insert(END, f"\n Hand Gloves\t\t{self.hand_gloves.get()}\t\t{self.m_h_g_p}")
+ if self.dettol.get() != 0:
+ self.txtarea.insert(END, f"\n Dettol\t\t{self.dettol.get()}\t\t{self.m_d_p}")
+ if self.newsprin.get() != 0:
+ self.txtarea.insert(END, f"\n Newsprin\t\t{self.newsprin.get()}\t\t{self.m_n_p}")
+ if self.thermal_gun.get() != 0:
+ self.txtarea.insert(END , f"\n Thermal Gun\t\t{self.sanitizer.get()}\t\t{self.m_t_g_p}")
+ # ==============Grocery============================
+ if self.rice.get() != 0:
+ self.txtarea.insert(END, f"\n Rice\t\t{self.rice.get()}\t\t{self.g_r_p}")
+ if self.food_oil.get() != 0:
+ self.txtarea.insert(END, f"\n Food Oil\t\t{self.food_oil.get()}\t\t{self.g_f_o_p}")
+ if self.wheat.get() != 0:
+ self.txtarea.insert(END, f"\n Wheat\t\t{self.wheat.get()}\t\t{self.g_w_p}")
+ if self.daal.get() != 0:
+ self.txtarea.insert(END, f"\n Daal\t\t{self.daal.get()}\t\t{self.g_d_p}")
+ if self.flour.get() != 0:
+ self.txtarea.insert(END, f"\n Flour\t\t{self.flour.get()}\t\t{self.g_f_p}")
+ if self.maggi.get() != 0:
+ self.txtarea.insert(END, f"\n Maggi\t\t{self.maggi.get()}\t\t{self.g_m_p}")
+ #================ColdDrinks==========================
+ if self.sprite.get() != 0:
+ self.txtarea.insert(END, f"\n Sprite\t\t{self.sprite.get()}\t\t{self.c_d_s_p}")
+ if self.limka.get() != 0:
+ self.txtarea.insert(END, f"\n Sanitizer\t\t{self.limka.get()}\t\t{self.c_d_l_p}")
+ if self.mazza.get() != 0:
+ self.txtarea.insert(END, f"\n Mazza\t\t{self.mazza.get()}\t\t{self.c_d_m_p}")
+ if self.coke.get() != 0:
+ self.txtarea.insert(END, f"\n Dettol\t\t{self.coke.get()}\t\t{self.c_d_c_p}")
+ if self.fanta.get() != 0:
+ self.txtarea.insert(END, f"\n Fanta\t\t{self.newsprin.get()}\t\t{self.c_d_f_p}")
+ if self.mountain_duo.get() != 0:
+ self.txtarea.insert(END, f"\n Mountain Duo\t\t{self.sanitizer.get()}\t\t{self.c_m_d}")
+ self.txtarea.insert(END, f"\n--------------------------------")
+ # ===============taxes==============================
+ if self.medical_tax.get() != '0.0':
+ self.txtarea.insert(END, f"\n Medical Tax\t\t\t{self.medical_tax.get()}")
+ if self.grocery_tax.get() != '0.0':
+ self.txtarea.insert(END, f"\n Grocery Tax\t\t\t{self.grocery_tax.get()}")
+ if self.cold_drinks_tax.get() != '0.0':
+ self.txtarea.insert(END, f"\n Cold Drinks Tax\t\t\t{self.cold_drinks_tax.get()}")
+
+ self.txtarea.insert(END, f"\n Total Bil:\t\t\t Rs.{self.total_bill}")
+ self.txtarea.insert(END, f"\n--------------------------------")
+ self.save_bill()
+
+ #=========savebill============================
+ def save_bill(self):
+ op = messagebox.askyesno("Save Bill", "Do you want to save the bill?")
+ if op > 0:
+ self.bill_data = self.txtarea.get('1.0', END)
+ f1 = open("bills/"+str(self.bill_no.get())+".txt", "w")
+ f1.write(self.bill_data)
+ f1.close()
+ messagebox.showinfo("Saved", f"Bill no:{self.bill_no.get()} Saved Successfully")
+ else:
+ return
+
+ # ===================find_bill================================
+ def find_bill(self):
+ present = "no"
+ for i in os.listdir("bills/"):
+ if i.split('.')[0] == self.search_bill.get():
+ f1 = open(f"bills/{i}", "r")
+ self.txtarea.delete("1.0", END)
+ for d in f1:
+ self.txtarea.insert(END, d)
+ f1.close()
+ present = "yes"
+ if present == "no":
+ messagebox.showerror("Error", "Invalid Bill No")
+
+ # ======================clear-bill======================
+ def clear_data(self):
+ op = messagebox.askyesno("Clear", "Do you really want to Clear?")
+ if op > 0:
+ self.sanitizer.set(0)
+ self.mask.set(0)
+ self.hand_gloves.set(0)
+ self.dettol.set(0)
+ self.newsprin.set(0)
+ self.thermal_gun.set(0)
+ # ============grocery==============================
+ self.rice.set(0)
+ self.food_oil.set(0)
+ self.wheat.set(0)
+ self.daal.set(0)
+ self.flour.set(0)
+ self.maggi.set(0)
+ # =============coldDrinks=============================
+ self.sprite.set(0)
+ self.limka.set(0)
+ self.mazza.set(0)
+ self.coke.set(0)
+ self.fanta.set(0)
+ self.mountain_duo.set(0)
+ # ====================taxes================================
+ self.medical_price.set("")
+ self.grocery_price.set("")
+ self.cold_drinks_price.set("")
+
+ self.medical_tax.set("")
+ self.grocery_tax.set("")
+ self.cold_drinks_tax.set("")
+
+ self.c_name.set("")
+ self.c_phone.set("")
+
+ self.bill_no.set("")
+ x = random.randint(1000, 9999)
+ self.bill_no.set(str(x))
+
+ self.search_bill.set("")
+ self.welcome_bill()
+
+ # ===========exit=======================
+ def exit_app(self):
+ op = messagebox.askyesno("Exit", "Do you really want to exit?")
+ if op > 0:
+ self.root.destroy()
+
+
+root = Tk()
+obj = Bill_App(root)
+root.mainloop()
+
+