コード例 #1
0
    def setupWidget(self):
        style = """
        QTreeWidget::item:!selected{
            border-bottom: 1px solid black;
            border-left: 1px solid black;
            border-top: 1px solid black;
            padding: 5px;
        }
        QTreeWidget::item:selected{}
        """
        self.treeBill.setStyleSheet(style)
        listAttribute = [
            "Item Name", "Type Name", "ID", "Amount", "Sale Type", "Price",
            "Created Date", "Created Time", "Notice"
        ]
        for attribute in listAttribute:
            self.comboFilter.addItem(attribute)

        data = Database()
        listBill = data.getAllListBill()
        for bill in listBill:
            self.addBillIntoTree(bill)
        data.closeDatabase()

        self.comboFilter.setCurrentIndex(0)

        self.listHistories = self.loadHistories()
        self.completer = QtWidgets.QCompleter(self.listHistories)
        self.editFind.setCompleter(self.completer)
コード例 #2
0
    def onExportExcelBillFile(self):
        self.filePath = filedialog.asksaveasfile(
            title="Choose where you want to save File",
            filetypes=(("Microsoft Excel", "*.xlsx"), ("All Files", "*.*")))
        if self.filePath == None:
            return
        wb = Workbook()
        ws = wb.active

        data = Database()
        listBill = data.getBillList()

        listDate = [listBill[0].CreatedDate]

        for bill in listBill:
            if bill.CreatedDate not in listDate:
                listDate.append(bill.CreatedDate)

        for date in listDate:
            listBillAtDate = data.getListBillAtDate(date)
            ws = createSheetAsDate(wb, date)
            createTitleBillInDate(ws, date)
            adjustColumn(ws)
            addBillIntoSheet(ws, listBillAtDate)

        wb.remove_sheet(wb.active)
        wb.save(self.filePath.name)
コード例 #3
0
    def onAccept(self):
        if len(self.editUsername.text()) != 0 and " " not in list(
                self.editUsername.text()):
            self.user = User()
            self.user.name = self.editName.text()
            self.user.username = self.editUsername.text()
            self.user.passWord = self.editPass.text()

            data = Database()
            try:
                data.insertUser(self.user)
            except sqlite3.IntegrityError:
                msg = QtWidgets.QMessageBox()
                msg.setIcon(QtWidgets.QMessageBox.Warning)
                msg.setText("Your username has already existed !!!")
                msg.setInformativeText("Please choose another username !!!")
                msg.setStandardButtons(QtWidgets.QMessageBox.Ok)
                msg.exec()
                self.isAccept = -1
                return
            self.isAccept = 1
        else:
            msg = QtWidgets.QMessageBox()
            msg.setIcon(QtWidgets.QMessageBox.Warning)
            msg.setText(
                "Your username cannot be empty or has space in there !!!")
            msg.setInformativeText("Please choose another username !!!")
            msg.setStandardButtons(QtWidgets.QMessageBox.Ok)
            msg.exec()
            self.isAccept = -1
コード例 #4
0
    def onAccept(self):
        if len(self.editID.text()) and " " not in list(self.editID.text()):
            
            item = Item()
            item.name = self.editName.text()
            item.idItem = self.editID.text()

            data = Database()
            try:
                data.insertItem(item)
            except sqlite3.IntegrityError:
                msg = QtWidgets.QMessageBox()
                msg.setIcon(QtWidgets.QMessageBox.Warning)
                msg.setText("ID này đã tồn tại !!")
                msg.setInformativeText("Xin hãy chọn một ID khác và thử lại !!")
                msg.setStandardButtons(QtWidgets.QMessageBox.Ok)
                msg.exec()
                self.isAccept = -1
                return
            self.isAccept = 1
        else:
            msg = QtWidgets.QMessageBox()
            msg.setIcon(QtWidgets.QMessageBox.Warning)
            msg.setText("ID này đã tồn tại !!")
            msg.setInformativeText("Xin hãy chọn một ID khác và thử lại !!")
            msg.setStandardButton(QtWidgets.QMessageBox.Ok)
            exec()
            self.isAccept = -1
コード例 #5
0
ファイル: MainWindow.py プロジェクト: tdusnewbie/MSA-PyQt-Ver
 def loadDataForHomePage(self):
     data = Database()
     date = datetime.datetime.now().date().strftime("%d/%m/%Y")
     listBill = data.getListBillAtDate(str(date))
     for bill in listBill:
         self.addItemIntoTree(bill)
     data.closeDatabase()
コード例 #6
0
ファイル: ShowBillView.py プロジェクト: tdusnewbie/MSA_App
    def __init__(self, parent):
        self.parent = parent
        self.data = Database()
        self.listBill = self.data.getBillList()
        self.dialog = Toplevel(parent)
        self.dialog.title("Bảng thống kê Hóa đơn")
        self.dialog.geometry("1000x400")

        self.drawDialog(self.dialog)
コード例 #7
0
ファイル: SignUpView.py プロジェクト: tdusnewbie/MSA_App
 def __init__(self, master):
     self.dialog = Toplevel(master)
     self.dialog.resizable(0, 0)
     self.master = master
     self.data = Database()
     self.user = None
     self.drawDialog(self.dialog)
     self.dialog.bind_all("<Escape>", self.onCancel)
     self.dialog.bind_all("<Return>", self.onCreateAccount)
コード例 #8
0
ファイル: NewItemView.py プロジェクト: tdusnewbie/MSA_App
    def __init__(self, master):
        self.dialog = Toplevel(master)
        self.dialog.resizable(0, 0)
        self.master = master
        self.data = Database()
        self.drawDialog(self.dialog)
        self.linkAccelerator()

        self.dialog.protocol("WM_DELETE_WINDOW", self.onCancel)
コード例 #9
0
    def __init__(self, parent, **kw):
        Toplevel.__init__(self, parent, **kw)
        self.parent = parent
        self.title("Bảng thống kê mặt hàng")
        self.geometry("600x400")
        self.data = Database()
        self.drawDialog()
        self.linkAccelerator()

        self.protocol("WM_DELETE_WINDOW", self.quitDialog)
コード例 #10
0
    def __init__(self, parent, username):
        Frame.__init__(self, parent)
        self.parent = parent
        self.data = Database()
        self.userCreate = username
        self.drawScreen()

        self.linkAccelerator()

        date = datetime.datetime.now().date().strftime("%d-%m-%Y")
        self.listBill = self.data.getListBillAtDate(date)
        for bill in self.listBill:
            self.addBillIntoTree(bill)
コード例 #11
0
    def __init__(self, parent, item, dialog):
        Frame.__init__(self, parent)
        self.parent = parent
        self.item = item
        self.numTypeAdded = 0
        self.dialogParent = dialog
        self.listType = item.type
        self.data = Database()
        self.drawScreen()

        self.linkAccelerator()

        for typeItem in self.listType:
            self.addTypeIntoTree(typeItem)
コード例 #12
0
 def __init__(self, master):
     self.dialog = Toplevel(master)
     self.dialog.resizable(0, 0)
     self.dialog.title("Thêm hóa đơn")
     self.master = master
     self.headerID = "##"
     self.footerID = "##"
     self.tempPrice = IntVar()
     self.unitPrice = 0
     self.amountOfType = 0
     self.data = Database()
     self.listItem = self.data.getItemList()
     self.drawDialog(self.dialog)
     self.dialog.bind_all("<Escape>", self.onCancel)
     self.dialog.bind_all("<Return>", self.onAddBill)
コード例 #13
0
    def onDeleteUser(self):
        rowDelete = self.tableUser.currentRow()
        print(rowDelete)
        if rowDelete == 0:
            msg = QtWidgets.QMessageBox()
            msg.setIcon(QtWidgets.QMessageBox.Critical)
            msg.setWindowTitle("Delete This User ??")
            msg.setText("You can not delete Root user ")
            msg.setInformativeText("Please try again with the other user !!")
            msg.setStandardButtons(QtWidgets.QMessageBox.Ok)
            msg.exec()
            return
        if rowDelete == -1:
            msg = QtWidgets.QMessageBox()
            msg.setIcon(QtWidgets.QMessageBox.Critical)
            msg.setWindowTitle("Which User ??")
            msg.setText("You have not choose user you wanna delete ")
            msg.setInformativeText("Please choose one user to delete!!")
            msg.setStandardButtons(QtWidgets.QMessageBox.Ok)
            msg.exec()
            return

        def message(i):
            if i.text() == "&Cancel":
                self.isAcceptDelete = False
            elif i.text() == "&OK":
                self.isAcceptDelete = True

        msg = QtWidgets.QMessageBox()
        msg.setIcon(QtWidgets.QMessageBox.Question)
        msg.setWindowTitle("Delete This User ??")
        msg.setText("You really want to delete this user ??")
        msg.setInformativeText(
            "You can not undo this process!! Really want to do this ???")
        msg.setStandardButtons(QtWidgets.QMessageBox.Ok
                               | QtWidgets.QMessageBox.Cancel)
        msg.buttonClicked.connect(message)
        msg.exec()

        if self.isAcceptDelete:
            print(rowDelete)
            data = Database()
            username = self.tableUser.item(rowDelete, 1).text()
            print(username)
            data.deleteUser(username)
            self.tableUser.removeRow(rowDelete)
        else:
            return
コード例 #14
0
    def setupWidget(self):
        data = Database()
        user = data.getUserInfo(self.username)

        self.btnEditName.setIcon(QtGui.QIcon("./Icon/icons8-pencil-26.png"))
        self.btnEditName.setIconSize(QtCore.QSize(16, 16))
        self.btnEditPass.setIcon(QtGui.QIcon("./Icon/icons8-pencil-26.png"))
        self.btnEditPass.setIconSize(QtCore.QSize(16, 16))

        self.editName.setText(user.name)
        self.editUsername.setText(user.username)
        self.editPass.setText(user.passWord)

        self.editName.setReadOnly(True)
        self.editUsername.setReadOnly(True)
        self.editPass.setReadOnly(True)
コード例 #15
0
    def __init__(self,parent,**kw):
        Toplevel.__init__(self,parent,**kw)
        self.parent = parent
        self.numberTempUserAdd = 0
        self.data = Database()
        self.listUser = self.data.getUserList()

        self.menu = Menu(self)
        self.config(menu = self.menu)
        self.drawMenu(self.menu)
        self.drawDialog()
        
        for user in self.listUser:
            self.addUserIntoTree(user)

        self.linkAccelerator()
コード例 #16
0
def exportFileItem(pathFile):
    if len(pathFile) == 0:
        return
    wb = Workbook()
    ws = wb.active

    data = Database()
    listItem = data.getListItem()

    for item in listItem:
        ws = createSheetAsItem(wb,item)
        createTitleTypeItem(ws, item)
        addTypeIntoSheet(ws,item.listType)
        adjustColumn(ws)

    wb.remove_sheet(wb.active)
    wb.save(pathFile)
コード例 #17
0
ファイル: Controller.py プロジェクト: tdusnewbie/MSA_App
    def __init__(self, *args, **kwargs):
        Tk.__init__(self, *args, **kwargs)
        self.title("Managing Selling App")
        self.frame = []
        self.data = Database()
        frame = LoginScreen(self)

        self.showFrame(frame)
コード例 #18
0
    def SetupWidget(self):
        data = Database()
        self.listItem = data.getListItemWithoutType()
        for item in self.listItem:
            self.comboItem.addItem(item.name)

        data.closeDatabase()

        self.spinAmount.setMinimum(0)
        self.spinAmount.setMaximum(10**9)

        self.btnBrowse.setIcon(
            QtGui.QIcon("Image/icons8-browse-folder-50.png"))
        self.btnBrowse.setIconSize(QtCore.QSize(16, 16))

        date = datetime.datetime.now().strftime("TY-%d%m%Y%H%M%S")
        self.editID.setText(date)
コード例 #19
0
    def onCurrentItemCellChange(self, row, col, prerow, precol):
        if row != prerow:
            self.tableType.clearSelection()
            self.tableType.clearContents()
            self.tableType.setRowCount(0)

            if self.tableItem.item(row, 1) == None:
                return

            idItem = self.tableItem.item(row, 1).text()
            data = Database()
            listType = data.getListTypeHasIDParent(idItem)
            for typeItem in listType:
                self.addTypeIntoTable(typeItem)

        if row == 1:
            self.beforeItemChange = self.tableItem.item(row, col).text()
コード例 #20
0
    def onExportExcelFile(self):
        self.filePath = filedialog.asksaveasfile(
            title="Choose where you want to save File",
            filetypes=(("Microsoft Excel", "*.xlsx"), ("All Files", "*.*")))
        if self.filePath == None:
            return
        wb = Workbook()
        ws = wb.active

        data = Database()
        listItem = data.getItemList()

        for item in listItem:
            ws = createSheetAsItem(wb, item)
            createTitleTypeItem(ws, item)
            adjustColumn(ws)
            addTypeIntoSheet(ws, item.type)

        wb.remove_sheet(wb.active)
        wb.save(self.filePath.name)
コード例 #21
0
    def onAccept(self):
        idType = self.editID.text()
        if len(idType) != 0 and " " not in list(idType):
            # Create a new Type Item
            typeItem = TypeItem()
            typeItem.name = self.editName.text()
            typeItem.idType = idType
            typeItem.idParent = self.listItem[
                self.comboItem.currentIndex()].idItem
            typeItem.amount = self.spinAmount.text()
            typeItem.unitPrice = self.editUnit.text()
            typeItem.wholePrice = self.editWhole.text()
            typeItem.originPrice = self.editOrigin.text()
            typeItem.imagePath = self.editPath.text()
            typeItem.notice = self.textNotice.toPlainText()

            # Add new Type Item into database
            data = Database()
            try:
                data.insertTypeItem(typeItem)
            except sqlite3.IntegrityError:
                msg = QtWidgets.QMessageBox()
                msg.setIcon(QtWidgets.QMessageBox.Warning)
                msg.setText("ID này đã tồn tại !!")
                msg.setInformativeText(
                    "Xin hãy chọn một ID khác và thử lại !!")
                msg.setStandardButtons(QtWidgets.QMessageBox.Ok)
                msg.exec()
                self.isAccept = -1
                return
            self.isAccept = 1

        else:
            msg = QtWidgets.QMessageBox()
            msg.setIcon(QtWidgets.QMessageBox.Warning)
            msg.setText("ID Không thể để trống hoặc có chứa khoảng trắng !!")
            msg.setInformativeText("Xin hãy chọn một ID khác và thử lại !!")
            msg.setStandardButtons(QtWidgets.QMessageBox.Ok)
            msg.exec()
            self.isAccept = -1
コード例 #22
0
    def onAccept(self):
        idBill = self.editID.text()
        if len(idBill) != 0 and " " not in list(idBill):
            # Create a new Type Item
            self.bill = Bill()
            self.bill.nameItem = self.comboItem.currentText()
            self.bill.nameType = self.comboType.currentText()
            self.bill.idBill = idBill
            self.bill.amount = self.spinAmount.text()
            if self.radioCustom.isChecked():
                self.bill.saleType = self.radioCustom.text()
            elif self.radioUnit.isChecked():
                self.bill.saleType = self.radioUnit.text()
            elif self.radioWhole.isChecked():
                self.bill.saleType = self.radioWhole.text()

            self.bill.price = self.editPrice.text()

            date = self.dateTimeEdit.date()
            time = self.dateTimeEdit.time()

            date = date.toString("dd/MM/yyyy")
            time = time.toString("hh:mm:ss")

            self.bill.createdDate = date
            self.bill.createdTime = time

            self.bill.createdUser = self.userCreate

            self.bill.notice = self.textNotice.toPlainText()

            # Add new Bill into database
            data = Database()
            try:
                data.insertBill(self.bill)

            except sqlite3.IntegrityError:
                msg = QtWidgets.QMessageBox()
                msg.setIcon(QtWidgets.QMessageBox.Warning)
                msg.setText("ID này đã được một tài khoản khác sử dụng !!")
                msg.setText("Xin hãy chọn một ID khác !!")
                msg.setStandardButtons(QtWidgets.QMessageBox.Ok)
                msg.exec()
                self.isAccept = -1
                return
            maxAmount = self.spinAmount.maximum()
            existedAmount = int(maxAmount) - int(self.spinAmount.text())
            print(existedAmount)
            data.updateTypeAmount(self.footerID, existedAmount)
            self.isAccept = 1

        else:
            msg = QtWidgets.QMessageBox()
            msg.setIcon(QtWidgets.QMessageBox.Warning)
            msg.setText("ID Không thể để trống hoặc có chứa khoảng trắng !!!")
            msg.setInformativeText(
                "Xin hãy thêm một ID hoặc xóa dấu khoảng trắng !!!")
            msg.setStandardButtons(QtWidgets.QMessageBox.Ok)
            msg.exec()
            self.isAccept = -1
コード例 #23
0
    def onAddUser(self):
        data = Database()

        user = User()
        user.name = self.editName.text()
        user.username = self.editUsername.text()
        user.passWord = self.editPass.text()

        try:
            data.insertUser(user)
        except sqlite3.IntegrityError:
            msg = QtWidgets.QMessageBox()
            msg.setIcon(QtWidgets.QMessageBox.Warning)
            msg.setText("Your username has already existed !!!")
            msg.setInformativeText("Please choose another username !!!")
            msg.setStandardButtons(QtWidgets.QMessageBox.Ok)
            msg.exec()
            return

        self.addUserIntoTable(user)
        data.closeDatabase()

        self.editName.clear()
        self.editPass.clear()
        self.editUsername.clear()
コード例 #24
0
ファイル: MainWindow.py プロジェクト: tdusnewbie/MSA-PyQt-Ver
    def checkAccount(self):
        username = self.editUsername.text()
        passWord = self.editPassword.text()

        data = Database()
        user = data.getUserInfo(username)
        if user.username == username and user.passWord == passWord:
            data.closeDatabase()
            return True
        else:
            data.closeDatabase()
            return False
コード例 #25
0
    def setupWidget(self):
        listAttribute = [
            "Tên mặt hàng", "ID mặt hàng", "Tên loại hàng", "ID Loại hàng",
            "Số lượng tồn", "Giá lẻ", "Giá sỉ", "Giá vốn", "Ghi chú",
            "Hình ảnh"
        ]
        for attribute in listAttribute:
            self.comboFilter.addItem(attribute)
        self.comboFilter.setCurrentIndex(0)
        data = Database()

        self.listItem = data.getListItemWithoutType()
        for item in self.listItem:
            self.addItemIntoTable(item)

        data.closeDatabase()

        self.tableItem.setCurrentCell(0, 0)
        self.onCurrentItemCellChange(0, 0, None, None)

        self.listHistories = self.loadHistories()
        self.completer = QtWidgets.QCompleter(self.listHistories)
        self.editFind.setCompleter(self.completer)
コード例 #26
0
    def onAccept(self):
        data = Database()
        if self.nameEditted:
            nameChanged = self.editName.text()
            data.updateNameOfUser(self.username, nameChanged)

        if self.passEditted:
            passChanged = self.editPass.text()
            data.updatePassOfUser(self.username, passChanged)
コード例 #27
0
    def setupWidget(self):
        data = Database()
        self.listItem = data.getListItem()
        for item in self.listItem:
            self.comboItem.addItem(item.name)

        self.spinAmount.setMinimum(1)

        self.dateTimeEdit.setDisplayFormat("dd/MM/yyyy hh:mm")
        date = datetime.datetime.now().date().strftime("%d/%m/%Y")
        time = datetime.datetime.now().time().strftime("%H:%M")
        # print(date + " " + time)
        now = QtCore.QDateTime.fromString(date + " " + time,
                                          "dd/MM/yyyy hh:mm")
        self.dateTimeEdit.setDateTime(now)

        self.radioUnit.setChecked(True)

        self.comboItem.setCurrentIndex(0)

        if len(self.listItem) != 0:
            self.listType = self.listItem[0].listType
            for typeItem in self.listType:
                self.comboType.addItem(typeItem.name)

            self.comboItem.setCurrentIndex(0)

            self.headerID = self.listItem[0].idItem
            if len(self.listType) != 0:
                self.footerID = self.listType[0].idType
                self.editPrice.setText(str(self.listType[0].unitPrice))
                self.spinAmount.setMaximum(self.listType[0].amount)
                self.onSetImage(self.listType[0].imagePath)

        idBill = self.headerID + "-" + self.footerID

        self.editID.setText(idBill)
コード例 #28
0
class ShowDataWindow(Toplevel):
    def __init__(self, parent, **kw):
        Toplevel.__init__(self, parent, **kw)
        self.parent = parent
        self.title("Bảng thống kê mặt hàng")
        self.geometry("600x400")
        self.data = Database()
        self.drawDialog()
        self.linkAccelerator()

        self.protocol("WM_DELETE_WINDOW", self.quitDialog)

    def linkAccelerator(self):
        self.bind_all("<Control-n>", self.onAddItem)
        self.bind_all("<Control-r>", self.onRefresh)

    def drawDialog(self):
        listItem = self.data.getItemList()
        self.table = Notebook(self)

        for item in listItem:
            self.onAddToTab(item)

        self.table.pack(side=LEFT, fill=BOTH, expand=True, padx=5, pady=5)

    def onAddToTab(self, item):
        treeType = TreeType(self.table, item, self)
        self.table.add(treeType, text=item.name)
        self.table.pack()

    def quitDialog(self):
        self.parent.linkAccelerator()
        self.destroy()

    def onRefresh(self, event=None):
        self.table.destroy()
        self.drawDialog()

    def onAddItem(self, event=None):
        if event != None:
            print("Ctrl+N")
        NewItemDialog(self)
コード例 #29
0
    def onCellChange(self, row, col):
        dataChange = self.tableUser.item(row, col).text()

        if col == 1:
            if dataChange != self.beforeChange:
                msg = QtWidgets.QMessageBox()
                msg.setIcon(QtWidgets.QMessageBox.Warning)
                msg.setText("Không thể sửa Username !!")
                msg.setInformativeText("Vui lòng thử lại !!")
                msg.setStandardButtons(QtWidgets.QMessageBox.Ok)
                msg.exec()
                self.tableUser.item(row, col).setText(self.beforeChange)
                return
            else:
                return
        username = self.tableUser.item(row, 1).text()
        data = Database()
        if col == 0:
            data.updateNameOfUser(username, dataChange)
        if col == 2:
            data.updatePassOfUser(username, dataChange)
        data.closeDatabase()
コード例 #30
0
    def onAddType(self):
        if self.comboFilter.currentIndex() > 1:
            msg = QtWidgets.QMessageBox()
            msg.setIcon(QtWidgets.QMessageBox.Critical)
            msg.setText("Bạn hiện đang ở chế độ tìm kiếm !!")
            msg.setInformativeText(
                "Thoát khỏi chế độ tìm kiếm để thực hiện chức năng này !!")
            msg.setDetailedText(
                "Chọn tìm kiếm với 'Tên mặt hàng' hoặc 'ID mặt hàng' và chọn mặt hàng muốn thêm để thoát khỏi chế độ tìm kiếm!!"
            )
            msg.setStandardButtons(QtWidgets.QMessageBox.Ok)
            msg.exec()
            return

        row = self.tableItem.currentRow()
        if row >= 0:
            idParent = self.tableItem.item(row, 1).text()
            date = datetime.datetime.now()
            newId = "TY-" + date.strftime("%d%m%Y%H%M%S")
            newType = TypeItem(idType=newId,
                               idParent=idParent,
                               amount=0,
                               unitPrice=0,
                               wholePrice=0,
                               originPrice=0)

            data = Database()
            while True:
                try:
                    data.insertTypeItem(newType)
                except sqlite3.IntegrityError:
                    date = date + datetime.timedelta(0, 1)
                    newId = "TY-" + date.strftime("%d%m%Y%H%M%S")
                    newType.idType = newId
                else:
                    break
            data.closeDatabase()
            self.addTypeIntoTable(newType)
        else:
            msg = QtWidgets.QMessageBox()
            msg.setIcon(QtWidgets.QMessageBox.Warning)
            msg.setText("Bạn muốn thực hiện điều này trong mặt hàng nào !!")
            msg.setInformativeText(
                "Xin hãy chọn một mặt hàng trước khi thực hiện !!")
            msg.setStandardButtons(QtWidgets.QMessageBox.Ok)
            msg.exec()
            return