def renderTableStock(self, event): try: # selected_date = self.date_entry.text selected_date_o = datetime.datetime.strptime( self.selected_date, "%d/%m/%Y") datalist = InventoryDB() datalist = datalist.getInventory() items = [[ "Sl No", "Barcode", "Item Name", "Price", "Manufacturer", "Quantity", "Category" ]] for i in enumerate(datalist): items.append([ i[0] + 1, i[1].barcode, i[1].itemname, i[1].price, i[1].manufacturer, i[1].quantity, i[1].category ]) # reportstable.renderTable(items) # reportstable.renderMatPlot(items) self.add_widget(views.grid.EditableTable(dataList=items)) except ValueError: messagebox( title="Error", message= "Please enter a valid date. \nPlease enter the date in dd/mm/yyyy format" )
def toReadOnlyTable(self, event): # try: datalist = InventoryDB() self.layout.selected_date = self.layout.date_entry.text self.layout.to_selected_date = self.layout.to_date_entry.text datalist = datalist.getAllSales() items = [[ "Item Name", "Date", "Quantity", "Selling Amount", "Category", "Tip", "Collected by" ]] selected_date_o = datetime.datetime.strptime(self.layout.selected_date, "%d/%m/%Y") selected_date_to = datetime.datetime.strptime( self.layout.to_selected_date, "%d/%m/%Y") for i in datalist: date = datetime.datetime.strptime(str(i.time[:10]), "%Y-%m-%d") if date >= selected_date_o and date <= selected_date_to: items.append([ i.itemname, i.time[:11], i.quantity, i.amount, i.category, i.tip, i.name ]) if len(items) == 1: messagebox(title="Oops", message="No data to show") else: self.manager.add_widget( views.grid.ReadOnlyTable(dataList=items, title="Sales Details")) self.manager.current = "readonlytable"
def show_tip_details(self, button): tip = {} employee = [] datalist1 = InventoryDB() msg = '' nl = '\n' total_tip = 0.0 msg_ = datalist1.getTipSummary() print(msg_) lst_keys = list(msg_.keys()) print(lst_keys) for m in lst_keys: n = str(msg_[m]) msg = msg + m + ':' + ' $' msg = msg + n msg = msg + nl total_tip += float(n) message_text = "Tip Summary\n ________________ \n" + msg + '________________\nTotal: $' + str( total_tip) messagebox(title="Sales Details", message=message_text) def back(self, event): self.manager.current = "reports" self.manager.remove_widget(self)
def updateRecord(self): print("Record to be updated : ") db = InventoryDB() data = db.getInventoryRecodeByBarcode(barcode=new_row[5])[0] data.id = new_row[5] data.barcode = new_row[5] data.price = float(3) # data.itemname = itemname # data.manufacturer = manufacturer # data.quantity = quantity data.category = str(new_row[0]) print(row_data)
def sell(self): try: # print("Sell called") barcodetext = str(self.barcode_text.text) quantity_ = int(self.quantity_.text) # print(quantity_) sellable = InventoryDB() sellable = sellable.getInventoryRecodeByBarcode(barcodetext) # print(sellable) sellable = sellable[0] if (sellable.quantity > quantity_): sellable.quantity = sellable.quantity - quantity_ saved = sellable.save(update=True) sold_price = sellable.price * quantity_ sell = Sales(barcode=barcodetext, time=str(datetime.datetime.now()), quantity=quantity_, itemname=sellable.itemname, amount=sold_price, category=sellable.category) sold = sell.save(insert=True) if saved == 1 and sold == 1: messagebox(title="Success", message="Item {} of quantity {} sold successfully".format(sellable.itemname, quantity_)) self.barcode_text.text = "" log(activity="Sales", transactiontype="sale", amount=sold_price, barcode=barcodetext, time=str(datetime.datetime.now())) else: messagebox(title="Failed", message="Could not sell {}".format(self.barcode_text.text)) elif sellable.quantity == 0: send_mail(subject="Stock Update", message="The stock for {} is finished up. Please add some stock to the inventory".format( sellable.itemname)) messagebox(title="Oops..", message="The stock is empty. A Remainder mail is sent to you") else: messagebox(title="Sorry :(", message="Stock not available. The available qunatity is {} ".format( sellable.quantity)) except IndexError: messagebox(title="Failed", message="Barcode {} does not exists".format(self.barcode_text.text)) except TypeError: messagebox(title="Failed", message="Barcode not provided")
def sellAll(self, event): try: if len(self.basket) == 0: raise EmptyBasketError for i in self.basket: # {"barcode": self.bar_str, "Item Name": record.itemname,"quantity": str(self.quantity_.text), "amount": total_price} barcodetext = str(i["barcode"]) quantity_ = int(i["quantity"]) sellable = InventoryDB() sellable = sellable.getInventoryRecodeByBarcode(barcodetext)[0] # sellable.quantity = sellable.quantity - int(quantity_) remaining = sellable.quantity - int(quantity_) if remaining <= 0: print("Quantity not available ") continue else: sellable.quantity = sellable.quantity - int(quantity_) saved = sellable.save(update=True) sold_price = sellable.price * quantity_ sell = Sales(barcode=barcodetext, time=str(datetime.datetime.now()), quantity=quantity_, itemname=sellable.itemname, amount=sold_price, category=sellable.category) sold = sell.save(insert=True) if saved == 1 and sold == 1: messagebox(title="Success", message="Item {} of quantity {} sold successfully".format(sellable.itemname, quantity_)) self.barcode_text.text = "" log(activity="Sales", transactiontype="sale", amount=sold_price, barcode=barcodetext, time=str(datetime.datetime.now())) # self.label1.text = "" # self.basket.clear() # print(self.basket) self.label1.text = "" self.basket.clear() self.quantity_.text = "1" print(self.basket) except IndexError: messagebox(title="Failed", message="Barcode {} does not exists".format(self.barcode_text.text)) self.barcode_text.text = "" except EmptyBasketError: messagebox(title="Oops!", message="Nothing to sell")
def toTable(self, event): try: data = InventoryDB() datalist = data.getInventory() items = [[ "Sl No", "Barcode", "Item Name", "Price", "Manufacturer", "Quantity", "Category" ]] for i in enumerate(datalist): items.append([ i[0] + 1, i[1].barcode, i[1].itemname, i[1].price, i[1].manufacturer, i[1].quantity, i[1].category ]) self.manager.add_widget( views.grid.EditableTable(dataList=items, title="Stock Details")) self.manager.current = "editabletable" except TypeError: messagebox(title="Error", message="No data to show")
def show_sale_details(self, button): card_sales = 0.0 cash_sales = 0.0 tip = 0.0 cash_collected = 0.0 card_collected = 0.0 datalist1 = InventoryDB() datalist1 = datalist1.getAllSales() for i in datalist1: card_collected = card_collected + i.card cash_collected = cash_collected + i.cash tip = tip + i.tip # print(self.dataList) for d in self.dataList: if d[1] == "cash" or d[1] == "": cash_sales = cash_sales + float(d[3]) elif d[1] == "card": card_sales = card_sales + float(d[3]) total_sales = card_collected + cash_collected message_text = "By Cash : {}\n\nBy Card : {}\n\n__________________________\nTotal Sales : {} \nTotal Tip : {}".format( cash_collected, card_collected, total_sales, tip) messagebox(title="Sales Details", message=message_text)
def enter_btn_pressed(instance): try: # in response of the button click barcode_ = self.barcode_text.text quantity_text = int(self.quantity_.text) if len(barcode_) == 0: messagebox(title='Warning', message="Please enter the barcode") return else: barcode_ = int(barcode_) record = InventoryDB().getInventoryRecodeByBarcode(barcode=barcode_) if len(record) == 0: messagebox(title="Error", message="No such item with {} barcode exists".format(barcode_)) return else: record = record[0] if record.quantity > quantity_text: total_price = float(record.price) * float(quantity_text) obj = {"barcode": self.bar_str, "Item Name": record.itemname, "quantity": str(self.quantity_.text), "amount": total_price} self.basket.append(obj) # label1.text = label1.text + self.bar_str + self.qty_str + '\nEntered\n' self.label1.text = self.label1.text + json.dumps(obj) + "\n" self.barcode_text.text = "" self.quantity_.text = "1" else: # send_mail(subject="Stock Update", # message="The stock for {} is finished up. Please add some stock to the inventory".format( # record.itemname)) messagebox(title="Sorry :(", message="Stock not available. The available qunatity is {} ".format( record.quantity)) except TypeError: messagebox(title="Failed", message="Quantity must be a Numeric value") except ValueError: messagebox(title="Failed", message="Quantity must be a Numeric value") except smtplib.SMTPServerDisconnected: print("Internet Not connected")
def fill_price(instance): try: # in response of barcode entry barcode_ = self.barcode_text.text quantity_text = int(self.quantity_.text) if len(barcode_) == 0: messagebox(title='Warning', message="Please enter the barcode") return else: barcode_ = int(barcode_) record = InventoryDB().getInventoryRecodeByBarcode( barcode=barcode_) if len(record) == 0: messagebox( title="Error", message="No such item with {} barcode exists". format(barcode_)) return else: record = record[0] print(record.quantity >= quantity_text and record.category == "SERVICE") if record.quantity >= quantity_text or record.category == "SERVICE": total_price = float( record.price) * float(quantity_text) self.selling_price.text = str(record.price) except TypeError: messagebox(title="Failed", message="Quantity must be a Numeric value") except ValueError: messagebox(title="Failed", message="Quantity must be a Numeric value") except smtplib.SMTPServerDisconnected: print("Internet Not connected")
def sellAll(self, customername, paymentmode, invoice_no, tip=0): try: if len(self.basket) == 0: raise EmptyBasketError for i in self.basket: # {"barcode": self.bar_str, "Item Name": record.itemname,"quantity": str(self.quantity_.text), "amount": total_price} barcodetext = str(i["barcode"]) quantity_ = int(i["quantity"]) sellable = InventoryDB() sellable = sellable.getInventoryRecodeByBarcode(barcodetext)[0] # sellable.quantity = sellable.quantity - int(quantity_) remaining = sellable.quantity - int(quantity_) if remaining < 0 and sellable.category != "SERVICE": messagebox(title="Warning", message="Quantity not available ") continue elif sellable.category == "SERVICE": sellable.quantity = 0 else: sellable.quantity = sellable.quantity - int(quantity_) saved = sellable.save(update=True) sold_price = sellable.price * quantity_ # sold_price = float(self.selling_price.text) * quantity_ sold_price = sold_price + float(tip) sell = Sales(barcode=barcodetext, time=str(datetime.datetime.now()), quantity=quantity_, itemname=sellable.itemname, amount=sold_price, category=sellable.category, invoice_no=invoice_no, customername=customername, paymentmode=paymentmode, tip=tip, cash=self.cash_amt, card=self.card_amt, name=self.sty_name) sold = sell.save(insert=True) tip = tip - tip if saved == 1 and sold == 1: # messagebox(title="Success", # message="Item {} of quantity {} sold successfully..\nTotal amount : {}".format( # sellable.itemname, # quantity_)) self.barcode_text.text = "" log(activity="Sales", transactiontype="sale", amount=sold_price, barcode=barcodetext, time=str(datetime.datetime.now())) # self.label1.text = "" # self.basket.clear() # print(self.basket) if sellable.quantity <= config.STOCK_LIMIT: try: send_mail( subject="Stock Update", message= "The stock for {} is finished up. Current available stock is {} . Please add some stock to the inventory" .format(sellable.itemname, sellable.quantity)) except smtplib.SMTPServerDisconnected: messagebox( title="Warning", message="Mailing configuration isn't setup") messagebox(title="Success", message="Order successful") self.label1.text = "" self.basket.clear() self.quantity_.text = "1" print(self.basket) except IndexError: messagebox(title="Failed", message="Barcode {} does not exists".format( self.barcode_text.text)) self.barcode_text.text = "" except EmptyBasketError: messagebox(title="Oops!", message="Nothing to sell")