コード例 #1
0
ファイル: entry.py プロジェクト: claranmartis/pyinventory
    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"
            )
コード例 #2
0
ファイル: entry.py プロジェクト: claranmartis/pyinventory
    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"
コード例 #3
0
ファイル: grid.py プロジェクト: claranmartis/pyinventory
    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)
コード例 #4
0
                    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)
コード例 #5
0
    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")
コード例 #6
0
    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")
コード例 #7
0
ファイル: entry.py プロジェクト: claranmartis/pyinventory
    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")
コード例 #8
0
ファイル: grid.py プロジェクト: claranmartis/pyinventory
    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)
コード例 #9
0
 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")
コード例 #10
0
        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")
コード例 #11
0
    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")