Example #1
0
    def __init__(self, parent):
        QtGui.QWidget.__init__(self, parent)
        self.parent = parent
        self.shift = self.parent.shift
        self.setupData()
        self.ui = Ui_SalesTable()
        self.ui.setupUi(self)
        self.setSum()

        self.connect(self.ui.cardEdit, QtCore.SIGNAL("returnPressed()"),QtCore.SLOT("on_cardSubmit()"))
        #self.connect(self, QtCore.SIGNAL('dataSend()'), QtCore.SLOT('setData()'))
        self.connect(self.ui.chequeButton, QtCore.SIGNAL("clicked()"),QtCore.SLOT("on_save()"))

        dockWidget = QtGui.QDockWidget(parent)
        dockWidget.setWidget(self)
        parent.addDockWidget(QtCore.Qt.RightDockWidgetArea, dockWidget)
Example #2
0
class SalesTable_Class(QtGui.QWidget):
    summ = 0
    def __init__(self, parent):
        QtGui.QWidget.__init__(self, parent)
        self.parent = parent
        self.shift = self.parent.shift
        self.setupData()
        self.ui = Ui_SalesTable()
        self.ui.setupUi(self)
        self.setSum()

        self.connect(self.ui.cardEdit, QtCore.SIGNAL("returnPressed()"),QtCore.SLOT("on_cardSubmit()"))
        #self.connect(self, QtCore.SIGNAL('dataSend()'), QtCore.SLOT('setData()'))
        self.connect(self.ui.chequeButton, QtCore.SIGNAL("clicked()"),QtCore.SLOT("on_save()"))

        dockWidget = QtGui.QDockWidget(parent)
        dockWidget.setWidget(self)
        parent.addDockWidget(QtCore.Qt.RightDockWidgetArea, dockWidget)

## DATA ##
    def setupData(self):
        self.salesRow = {}
        self.summ = 0
        self.printer = chequePrint(self)

    def on_cardSubmit(self):
        """Берем номер карты и дополняем спереди нулями до нужной длины
        если длина маленькая, то говорим это
        Выбираем имя по номеру из базы, если нет, то создать"""
        card = '{:0>16}'.format(self.ui.cardEdit.text().strip())
        if len(card)>6:
            worker = self.select_card(card)
            if worker['rows']:
                self.setWorkerData(worker['rows'][0])
                self.parent.formSales.setEnabled(True)
            else:
                self.addWorker()
            self.worker = worker['rows'][0]
        else:
            self.say_shortCard()

    def select_card(self,card):
        """Выбирает данные по номеру карты"""
        db = localDb_Class()
        rows = db.select_val_by_col('worker','card',"%s" % card)
        db.close_db
        return rows

    def say_shortCard(self):
        """TO DO : ошибка - мало символов """

    def addDish(self,dish):
        try:
            self.salesRow[dish[0]]["count"] += 1
            self.addToRow(self.salesRow[dish[0]])
        except:
            self.salesRow[dish[0]] = {
                "name":dish[1],
                "count":1,
                "price":dish[3],
            }
            self.salesRow[dish[0]]["item"] = self.newRow(self.salesRow[dish[0]])
        self.summ += self.salesRow[dish[0]]["price"]
        self.setSum()

    def on_save(self):
        self.get_sale()
        self.parent.ui.openSalesButton.emit(QtCore.SIGNAL("clicked()"))
        #TODO переформировать

    def save_sale(self,row):
        """Записывает данные о продажах в базу"""
        db = localDb_Class()
        db.insert_val('sale',(row['menu_id'],row['shift'],row['worker'],row['portions']))
        balance = db.select_val_by_id('menu', row['menu_id'])['rows'][0]['balance']
        db.update_val_by_id_name('menu', row['menu_id'], 'balance', balance-row['portions'])
        db.close_db()

    def save_for_sale(self,row):
        """Записывает данные о продажах в базу"""
        db = localDb_Class()
        income = db.select_val_by_id('income', row['menu_id'])['rows'][0]
        balance = int(income['rest'])-int(income['mass'])*row['portions']
        db.update_val_by_id_name('income', row['menu_id'], 'rest', balance)
        db.close_db()

    def print_cheque(self, data):
        self.printer.printData(data)
        """Печать чеков на фискальный кассовый аппарат"""

## GUI ##


    def setWorkerData(self, worker):
        """Заполняем форму данными пользователя"""
        self.ui.workerNameEdit.setText(worker['name'])
        self.ui.cardEdit.setEnabled(False)
        self.ui.salesTableWidget.setEnabled(True)
        self.ui.chequeButton.setEnabled(True)

    def get_sale(self):
        """Собирает данные об отмеченных продуктах в списке: id, количество"""
        for row in self.salesRow:
            data = {'menu_id':"%s" % row,
                'shift':self.shift.shift,
                'portions':self.salesRow[row]["count"],
                'worker':self.worker[0],
            }
            if data['menu_id'][0]=='s':
                data['menu_id'] = data['menu_id'][1:]
                self.print_cheque(self.salesRow[row])
                self.save_for_sale(data)
            else:
                self.print_cheque(self.salesRow[row])
                self.save_sale(data)
        self.printer.printFloor(self.summ)

    def addToRow(self, row):
        self.ui.salesTableWidget.item(row["item"],1).setText("%s" % row["count"])

    def newRow(self, row):
        item = QtGui.QTableWidgetItem()
        item.setText("%s" % row["name"])
        itemNumber = self.ui.salesTableWidget.rowCount()
        self.ui.salesTableWidget.setRowCount(itemNumber +1)
        self.ui.salesTableWidget.setItem(itemNumber,0,item)
        item = QtGui.QTableWidgetItem()
        item.setText("%s" % row["count"])
        self.ui.salesTableWidget.setItem(itemNumber,1,item)
        item = QtGui.QTableWidgetItem()
        item.setText("%s" % row["price"])
        self.ui.salesTableWidget.setItem(itemNumber,2,item)
        #item = QtGui.QTableWidgetItem()
        #item.setText('%s' % dish[2])
        #self.ui.salesTableWidget.setItem(itemNumber,3,item)
        return itemNumber

    def setSum(self):
        self.ui.labelSumm.setText("%s" % self.summ)

    def addWorker(self):
        """Окно добавления работника"""
        form = Worker_Class(self)
        form.show()

    def clear(self):
        self.setupData()
        #self.ui.salesTableWidget.clearContents()
        for i in range(self.ui.salesTableWidget.rowCount()):
            self.ui.salesTableWidget.removeRow(0)
        self.ui.workerNameEdit.clear()
        self.ui.cardEdit.clear()
        self.ui.cardEdit.setEnabled(True)
        self.ui.salesTableWidget.setEnabled(False)
        self.setSum()