示例#1
0
    def ui_acc(self):
        if self.traffic_id:
            query = """UPDATE staff_worker_traffic SET Position = %s, Data = %s, Table_Data = %s, Worker_Id = %s, Note = %s WHERE Id = %s"""
            sql_param = (self.le_position.text(),
                         self.dt_date.dateTime().toPyDateTime(),
                         self.dt_tabel_date.dateTime().toPyDateTime(),
                         self.worker, self.le_note.text(), self.traffic_id)
            sql_traffic = my_sql.sql_change(query, sql_param)
            if "mysql.connector.errors" in str(type(sql_traffic)):
                QMessageBox.critical(self, "Ошибка sql изменение записи",
                                     sql_traffic.msg, QMessageBox.Ok)
                return False
            self.main.set_work_traffic(self.worker, True)
        else:
            query = """INSERT INTO staff_worker_traffic (Position, Data, Table_Data, Worker_Id, Note) VALUES (%s, %s, %s, %s, %s)"""
            sql_param = (self.le_position.text(),
                         self.dt_date.dateTime().toPyDateTime(),
                         self.dt_tabel_date.dateTime().toPyDateTime(),
                         self.worker, self.le_note.text())
            sql_traffic = my_sql.sql_change(query, sql_param)
            if "mysql.connector.errors" in str(type(sql_traffic)):
                QMessageBox.critical(self, "Ошибка sql лобавление записи",
                                     sql_traffic.msg, QMessageBox.Ok)
                return False
            self.main.set_work_traffic(self.worker, True)

        self.close()
        self.destroy()
示例#2
0
 def ui_add_tree_item(self):
     info = ChangeTreeItem()
     info.set_settings(self.set_new_win_tree)
     if info.exec() == 0:
         return False
     if info.rb_new.isChecked():
         sql_tree = my_sql.sql_change(
             self.query_tree_add,
             (0, info.le_name.text(), info.le_position.text()))
         if "mysql.connector.errors" in str(type(sql_tree)):
             QMessageBox.critical(
                 self, "Ошибка sql добавления корневого итема в дерево",
                 sql_tree.msg, QMessageBox.Ok)
             return False
         self.set_tree_info()
     elif info.rb_old.isChecked():
         try:
             parent_id = self.tree_widget.selectedItems()[0].data(0, 5)
             sql_tree = my_sql.sql_change(
                 self.query_tree_add,
                 (parent_id, info.le_name.text(), info.le_position.text()))
             if "mysql.connector.errors" in str(type(sql_tree)):
                 QMessageBox.critical(
                     self, "Ошибка sql добавления итема в дерево",
                     sql_tree.msg, QMessageBox.Ok)
                 return False
             self.set_tree_info()
         except:
             QMessageBox.critical(
                 self, "Ошибка добавления",
                 "Выделите элемент в который вы хотите вставить элемент",
                 QMessageBox.Ok)
示例#3
0
    def ui_add(self):
        if self.le_name.text() == "" or self.le_machine.text() == "" or self.le_price.text() == "":
            QMessageBox.critical(self, "Ошибка сохранения", "Не заполнены обязательные поля.", QMessageBox.Ok)
            return False
        try:
            price = float(self.le_price.text().replace(",", "."))
        except:
            QMessageBox.critical(self, "Ошибка цены", "Не правильно введена цена.", QMessageBox.Ok)
            return False

        if self.id:
            query = "UPDATE operations SET Name = %s, Sewing_Machine_Id = %s, Price = %s, Note = %s, Note2 = %s WHERE Id = %s"
            sql_info = my_sql.sql_change(query, (self.le_name.text(), self.le_machine.whatsThis(), price, self.pe_note.toPlainText(), self.le_note_2.text(), self.id))
            if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql обновление информации", sql_info.msg, QMessageBox.Ok)
                return False
        elif self.tree_id:
            query = "INSERT INTO operations (Tree_Id, Name, Price, Sewing_Machine_Id, Note, Note2) VALUES (%s, %s, %s, %s, %s, %s)"
            sql_info = my_sql.sql_change(query, (self.tree_id, self.le_name.text(), price, self.le_machine.whatsThis(), self.pe_note.toPlainText(), self.le_note_2.text()))
            if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql добавление информации", sql_info.msg, QMessageBox.Ok)
                return False
        else:
            QMessageBox.critical(self, "Ошибка", "Нету ни Id, ни Tree_Id", QMessageBox.Ok)

        self.close()
        self.destroy()
        self.main.set_table_info()
示例#4
0
    def ui_acc(self):

        data = [
            self.ui_de_act_date.date().toPyDate(),
            self.ui_le_workers.text(),
            int(self.ui_le_supply.text()),
            self.ui_le_type_material.text(),
            self.ui_le_supply_provider.text(),
            self.ui_le_supply_act.text(),
            self.ui_de_supply_date.date().toPyDate(),
            int(self.ui_le_supply_value.text()),
            self.ui_le_sertificat.text(),
            self.ui_le_type_pack.text(),
            self.ui_le_audit_location.text(),
            self.ui_le_gost.text(),
            int(self.ui_le_audit_value.text()),
            self.ui_cb_quality.currentText(),
        ]

        if self.ui_le_density.text() and self.tip == 0:
            data.append(int(self.ui_le_density.text()))
        else:
            data.append(None)

        if self.act_id:
            data.append(self.act_id)
            query = """UPDATE audit
                        SET audit_date = %s, workers = %s, supply_id = %s, type_material = %s, supply_provider = %s, supply_act = %s, supply_date = %s,
                            supply_value = %s, sertificat = %s, type_pack = %s, audit_location = %s, gost = %s, audit_value = %s, quality = %s, density = %s
                        WHERE id = %s"""
            sql_info = my_sql.sql_change(query, data)
            if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql при сохранении",
                                     sql_info.msg, QMessageBox.Ok)
                return False
        else:
            data.append(self.tip)
            query = """INSERT INTO audit (audit_date, workers, supply_id, type_material, supply_provider, supply_act, supply_date,
                                            supply_value, sertificat, type_pack, audit_location, gost, audit_value, quality, density, type_supply)
                        VALUES  (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"""
            sql_info = my_sql.sql_change(query, data)
            if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql при сохранении",
                                     sql_info.msg, QMessageBox.Ok)
                return False

        self.done(1)
        self.close()
        self.destroy()
示例#5
0
    def ui_beika_acc(self):
        self.timer.start(900000)
        if self.le_value.text() == "":
            return False
        elif self.lw_material.currentRow() < 0:
            return False

        try:
            value = self.le_value.text().replace(",", ".")
        except:
            self.le_value.setStyleSheet(
                "border: 4px solid;\nborder-color: rgb(247, 84, 84);")
            return False

        query = """INSERT INTO beika (Material_Id, Accessories_Id, Date, Value, Finished, Worker_Id, Supply_Id)
                      VALUES (%s, %s, %s, %s, %s, %s, %s)"""
        sql_value = (self.lw_material.selectedItems()[0].data(-1),
                     self.beika_accessories_id,
                     self.cw_date.selectedDate().toString(Qt.ISODate), value,
                     0, self.user["id"], None)
        sql_info = my_sql.sql_change(query, sql_value)
        if "mysql.connector.errors" in str(type(sql_info)):
            self.le_error.setText(
                "Не получилось сохранить нарезку. Обратитесь к администрации.")
            self.pushButton_21.setEnabled(False)
            return False

        self.lw_material.clear()
        self.le_value.clear()

        self.sw_main.setCurrentIndex(1)
示例#6
0
文件: tree.py 项目: Meller008/CRM-Avi
    def ui_transfer_table(self):
        try:
            transfer_id = []
            for item in self.table_widget.selectedItems():
                if item.data(5) not in transfer_id:
                 transfer_id.append(item.data(5))
        except:
            QMessageBox.critical(self, "Ошибка переноса", "Выберете элементы для переноса", QMessageBox.Ok)
            return False
        if not transfer_id:
            QMessageBox.critical(self, "Ошибка переноса", "Выберете элементы для переноса", QMessageBox.Ok)
            return False

        info = TreeTransfer(self.query_tree_select)
        info.set_settings(self.set_transfer_win)
        if info.exec() == 0:
            return False

        if not info.select_tree_id:
            QMessageBox.critical(self, "Ошибка переноса", "Выберете в каую категорию перенести", QMessageBox.Ok)
        new_tree_id = info.select_tree_id

        for item_id in transfer_id:
            sql_info = my_sql.sql_change(self.query_transfer_item, (new_tree_id, item_id))
            if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql получение табюлицы", sql_info.msg, QMessageBox.Ok)
                return False
        self.set_table_info()
示例#7
0
    def ui_change_item(self, id=False):
        if id:
            id_select = id
        else:
            try:
                id_select = self.lw_list.selectedItems()[0].data(3)
            except:
                QMessageBox.critical(self, "Ошибка", "Выберете элемент",
                                     QMessageBox.Ok)
                return False

        sql_result = my_sql.sql_select(self.sql_change_select, (id_select, ))
        if "mysql.connector.errors" in str(type(sql_result)):
            QMessageBox.critical(self, "Ошибка sql получение предмета",
                                 sql_result.msg, QMessageBox.Ok)
            return False
        change_item = item_2.Item2()
        change_item.set_settings(self.set_new_win)
        change_item.le_name.setText(sql_result[0][0])
        change_item.pe_note.appendPlainText(sql_result[0][1])
        change_item.setModal(True)
        change_item.show()
        if change_item.exec() == 0:
            return False
        sql_result = my_sql.sql_change(
            self.sql_update_select,
            (change_item.le_name.text(), change_item.pe_note.toPlainText(),
             id_select))
        if "mysql.connector.errors" in str(type(sql_result)):
            QMessageBox.critical(self, "Ошибка sql добавление предмета",
                                 sql_result.msg, QMessageBox.Ok)
            return False
        self.sql_set_list()
示例#8
0
    def ui_change_tree_item(self):

        try:
            parent_name = self.tree_widget.selectedItems()[0].text(0)
            parent_id = self.tree_widget.selectedItems()[0].data(0, 5)
            info = ChangeTreeItem()
            info.set_settings(self.set_new_win_tree)
            info.rb_old.close()
            info.rb_new.close()
            info.le_name.setText(parent_name)
            if info.exec() == 0:
                return False
            sql_tree = my_sql.sql_change(
                self.query_tree_change,
                (info.le_name.text(), info.le_position.text(), parent_id))
            if "mysql.connector.errors" in str(type(sql_tree)):
                QMessageBox.critical(self,
                                     "Ошибка sql изменения итема в дереве",
                                     sql_tree.msg, QMessageBox.Ok)
                return False
            self.set_tree_info()
        except:
            QMessageBox.critical(self, "Ошибка изменения",
                                 "Выделите элемент который хотите изменить",
                                 QMessageBox.Ok)
示例#9
0
    def ui_beika_acc(self):
        self.timer.start(900000)
        if self.le_value.text() == "":
            return False
        elif self.lw_material.currentRow() < 0:
            return False

        try:
            value = self.le_value.text().replace(",", ".")
        except:
            self.le_value.setStyleSheet("border: 4px solid;\nborder-color: rgb(247, 84, 84);")
            return False

        query = """INSERT INTO beika (Material_Id, Accessories_Id, Date, Value, Finished, Worker_Id, Supply_Id)
                      VALUES (%s, %s, %s, %s, %s, %s, %s)"""
        sql_value = (self.lw_material.selectedItems()[0].data(-1), self.beika_accessories_id, self.cw_date.selectedDate().toString(Qt.ISODate),
                     value, 0, self.user["id"], None)
        sql_info = my_sql.sql_change(query, sql_value)
        if "mysql.connector.errors" in str(type(sql_info)):
            self.le_error.setText("Не получилось сохранить нарезку. Обратитесь к администрации.")
            self.pushButton_21.setEnabled(False)
            return False

        self.lw_material.clear()
        self.le_value.clear()

        self.sw_main.setCurrentIndex(1)
示例#10
0
 def ui_dell_tree_item(self):
     result = QMessageBox.question(self, "Удаление", "Точно удалить ветку?",
                                   QMessageBox.Yes | QMessageBox.No,
                                   QMessageBox.No)
     if result == 16384:
         try:
             parent_id = self.tree_widget.selectedItems()[0].data(0, 5)
             if self.tree_widget.selectedItems()[0].childCount() == 0:
                 sql_tree = my_sql.sql_change(self.query_tree_del,
                                              (parent_id, ))
                 if "mysql.connector.errors" in str(type(sql_tree)):
                     QMessageBox.critical(
                         self, "Ошибка sql удаления итема в дереве",
                         sql_tree.msg, QMessageBox.Ok)
                     return False
                 self.set_tree_info()
             else:
                 QMessageBox.critical(
                     self, "Ошибка",
                     "У этого элеиента есть дети удалите сначало их",
                     QMessageBox.Ok)
         except:
             QMessageBox.critical(
                 self, "Ошибка ", "Выделите элемент который хотите удалить",
                 QMessageBox.Ok)
             return False
示例#11
0
    def ui_set_date_month(self):
        table_date = []
        for trafic in self.sql_traffic:
            if trafic[2]:
                if not trafic[3]:
                    min = trafic[2].minute
                    if 0 <= min <= 15:
                        tab_date = trafic[2].replace(minute=0)
                    elif 16 <= min <= 45:
                        tab_date = trafic[2].replace(minute=30)
                    else:
                        tab_date = trafic[2].replace(minute=0)
                        hour_up = trafic[2].hour + 1
                        if hour_up < 24:
                            tab_date = tab_date.replace(hour=hour_up)
                        else:
                            day = trafic[2].day
                            tab_date = tab_date.replace(day=day + 1, hour=hour_up-24)

                    table_date.append((tab_date, trafic[0]))

            else:
                QMessageBox.critical(self, "Ошибка даты", "Что то не так с датой", QMessageBox.Ok)
                return False

        query = "UPDATE staff_worker_traffic SET Table_Data = %s WHERE Id = %s"
        for sql_table in table_date:
            sql = my_sql.sql_change(query, sql_table)
            if "mysql.connector.errors" in str(type(sql)):
                QMessageBox.critical(self, "Ошибка sql проставления дат", sql.msg, QMessageBox.Ok)
                return False

        self.set_work_traffic(int(self.le_worker.whatsThis()), True)
示例#12
0
    def of_list_accessories_name(self, accessories):
        if self.le_accessories_name.whatsThis() != "None":
            query = "UPDATE accessories_name SET For_Beika = 0 WHERE Id = %s"
            sql_info = my_sql.sql_change(query, (self.le_accessories_name.whatsThis(), ))
            if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql удаления разрешеной фурнитуры", sql_info.msg, QMessageBox.Ok)
                return False

        query = "UPDATE accessories_name SET For_Beika = 1 WHERE Id = %s"
        sql_info = my_sql.sql_change(query, (accessories[0], ))
        if "mysql.connector.errors" in str(type(sql_info)):
            QMessageBox.critical(self, "Ошибка sql добавления разрешеной фурнитуры", sql_info.msg, QMessageBox.Ok)
            return False

        self.le_accessories_name.setText(str(accessories[1]))
        self.le_accessories_name.setWhatsThis(str(accessories[0]))
示例#13
0
    def of_list_material_name(self, item):
        query = "UPDATE material_name SET For_Beika = 1 WHERE Id = %s"
        sql_info = my_sql.sql_change(query, (item[0],))
        if "mysql.connector.errors" in str(type(sql_info)):
            QMessageBox.critical(self, "Ошибка sql добавления ткани", sql_info.msg, QMessageBox.Ok)
            return False

        self.set_start_settings()
示例#14
0
    def of_tree_select_operation(self, item):
        query = "INSERT INTO add_operation_list (Id) VALUES (%s)"
        sql_info = my_sql.sql_change(query, (item[0],))
        if "mysql.connector.errors" in str(type(sql_info)):
            QMessageBox.critical(self, "Ошибка sql добавления операции", sql_info.msg, QMessageBox.Ok)
            return False

        self.ui_update()
示例#15
0
    def ui_acc(self):
        if self.id:
            query = "UPDATE staff_worker_kard SET Worker_Id = %s, Card_Id = %s WHERE Worker_Id = %s"
            sql_info = my_sql.sql_change(query, (self.le_worker.whatsThis(), self.le_card.text(), self.id))
            if "mysql.connector.errors" in str(type(sql_info)):
                    QMessageBox.critical(self, "Ошибка sql сохр. карты", sql_info.msg, QMessageBox.Ok)
                    return False
        else:
            query = "INSERT INTO staff_worker_kard (Worker_Id, Card_Id) VALUES (%s, %s)"
            sql_info = my_sql.sql_change(query, (self.le_worker.whatsThis(), self.le_card.text()))
            if "mysql.connector.errors" in str(type(sql_info)):
                    QMessageBox.critical(self, "Ошибка sql сохр. карты", sql_info.msg, QMessageBox.Ok)
                    return False

        self.main.ui_update()
        self.close()
        self.destroy()
示例#16
0
    def ui_del_material(self):
        id = self.lw_material_name.selectedItems()[0].data(-1)
        query = "UPDATE material_name SET For_Beika = 0 WHERE Id = %s"
        sql_info = my_sql.sql_change(query, (id,))
        if "mysql.connector.errors" in str(type(sql_info)):
            QMessageBox.critical(self, "Ошибка sql удаления ткани", sql_info.msg, QMessageBox.Ok)
            return False

        self.set_start_settings()
示例#17
0
    def ui_ok(self):
        query = 'UPDATE program_settings_road SET One_year = %s, Many_year = %s WHERE Id = %s'
        sql_ret = my_sql.sql_change(query, (self.le_one_year.text(), self.le_many_year.text(), self.row_id))
        if "mysql.connector.errors" in str(type(sql_ret)):
            QMessageBox.critical(self, "Ошибка sql", sql_ret.msg, QMessageBox.Ok)
            return False

        self.close()
        self.destroy()
示例#18
0
    def of_tree_select_operation(self, item):
        query = "INSERT INTO add_operation_list (Id) VALUES (%s)"
        sql_info = my_sql.sql_change(query, (item[0], ))
        if "mysql.connector.errors" in str(type(sql_info)):
            QMessageBox.critical(self, "Ошибка sql добавления операции",
                                 sql_info.msg, QMessageBox.Ok)
            return False

        self.ui_update()
示例#19
0
    def ui_save_salary(self):
        if not self.salary:
            QMessageBox.information(self, "Ошибка",
                                    "Нет зарплаты для сохранения",
                                    QMessageBox.Ok)
            return False

        sql_date = self.date_pay.strftime("%Y-%m-%d")
        result = QMessageBox.question(
            self, "Сохранить?",
            "Точно сохранить весь список в зарплату на %s?" % sql_date,
            QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
        if result == 16384:

            operation_id_list = []
            p_m_id_list = []
            for work in self.salary:
                for operation in work["operation_list"]:
                    operation_id_list.append(operation[0])

                for p_m in work["p_m_list"]:
                    p_m_id_list.append(p_m[0])

            sql_date = self.date_pay.strftime("%Y-%m-%d")

            if operation_id_list:
                sql_date = self.date_pay.strftime("%Y-%m-%d")
                query = """UPDATE pack_operation SET Pay = 1, Date_Pay = '%s' WHERE Id IN %s""" % (
                    sql_date, str(tuple(operation_id_list)).replace(",)", ")"))
                sql_info = my_sql.sql_change(query)
                if "mysql.connector.errors" in str(type(sql_info)):
                    print("Не смог поставить оплату операции")
                    return False

            if p_m_id_list:
                query = """UPDATE pay_worker SET Pay = 1, Date_Pay = '%s' WHERE Id IN %s""" % (
                    sql_date, str(tuple(p_m_id_list)).replace(",)", ")"))
                sql_info = my_sql.sql_change(query)
                if "mysql.connector.errors" in str(type(sql_info)):
                    print("Не смог поставить оплату допдат и вычетов")
                    return False

        else:
            return False
示例#20
0
    def ui_add(self):
        if self.le_name.text() == "" or self.le_machine.text(
        ) == "" or self.le_price.text() == "":
            QMessageBox.critical(self, "Ошибка сохранения",
                                 "Не заполнены обязательные поля.",
                                 QMessageBox.Ok)
            return False
        try:
            price = float(self.le_price.text().replace(",", "."))
        except:
            QMessageBox.critical(self, "Ошибка цены",
                                 "Не правильно введена цена.", QMessageBox.Ok)
            return False

        if self.id:
            query = "UPDATE operations SET Name = %s, Sewing_Machine_Id = %s, Price = %s, Note = %s, Note2 = %s WHERE Id = %s"
            sql_info = my_sql.sql_change(
                query,
                (self.le_name.text(), self.le_machine.whatsThis(), price,
                 self.pe_note.toPlainText(), self.le_note_2.text(), self.id))
            if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql обновление информации",
                                     sql_info.msg, QMessageBox.Ok)
                return False
        elif self.tree_id:
            query = "INSERT INTO operations (Tree_Id, Name, Price, Sewing_Machine_Id, Note, Note2) VALUES (%s, %s, %s, %s, %s, %s)"
            sql_info = my_sql.sql_change(
                query, (self.tree_id, self.le_name.text(), price,
                        self.le_machine.whatsThis(),
                        self.pe_note.toPlainText(), self.le_note_2.text()))
            if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql добавление информации",
                                     sql_info.msg, QMessageBox.Ok)
                return False
        else:
            QMessageBox.critical(self, "Ошибка", "Нету ни Id, ни Tree_Id",
                                 QMessageBox.Ok)

        self.close()
        self.destroy()
        self.main.set_table_info()
示例#21
0
    def of_operation_input_complete(self, operation, date_make):
        query = """UPDATE pack_operation
                      SET Worker_Id = %s, Date_make = %s, Date_Input = SYSDATE()
                      WHERE Id = %s"""
        sql_value = (self.user["id"], date_make.toString(Qt.ISODate), operation[0])
        sql_info = my_sql.sql_change(query, sql_value)
        if "mysql.connector.errors" in str(type(sql_info)):
            self.lb_operation_error.setText('<html><head/><body><p align="center"><span style=" color:#ff0000;">Операция не сохранена(Err BD)</span></p></body></html>')
            return False

        self.set_operation_table()
        self.lb_operation_error.setText('<html><head/><body><p align="center"><span style=" color:#00aa00;">Операция сохранена</span></p></body></html>')
示例#22
0
    def ui_acc(self):
        if self.traffic_id:
            query = """UPDATE staff_worker_traffic SET Position = %s, Data = %s, Table_Data = %s, Worker_Id = %s, Note = %s WHERE Id = %s"""
            sql_param = (self.le_position.text(), self.dt_date.dateTime().toPyDateTime(), self.dt_tabel_date.dateTime().toPyDateTime(), self.worker,
                         self.le_note.text(), self.traffic_id)
            sql_traffic = my_sql.sql_change(query, sql_param)
            if "mysql.connector.errors" in str(type(sql_traffic)):
                QMessageBox.critical(self, "Ошибка sql изменение записи", sql_traffic.msg, QMessageBox.Ok)
                return False
            self.main.set_work_traffic(self.worker, True)
        else:
            query = """INSERT INTO staff_worker_traffic (Position, Data, Table_Data, Worker_Id, Note) VALUES (%s, %s, %s, %s, %s)"""
            sql_param = (self.le_position.text(), self.dt_date.dateTime().toPyDateTime(), self.dt_tabel_date.dateTime().toPyDateTime(), self.worker, self.le_note.text())
            sql_traffic = my_sql.sql_change(query, sql_param)
            if "mysql.connector.errors" in str(type(sql_traffic)):
                QMessageBox.critical(self, "Ошибка sql лобавление записи", sql_traffic.msg, QMessageBox.Ok)
                return False
            self.main.set_work_traffic(self.worker, True)

        self.close()
        self.destroy()
示例#23
0
文件: tree.py 项目: Meller008/CRM-Avi
 def ui_add_tree_item(self):
     info = ChangeTreeItem()
     info.set_settings(self.set_new_win_tree)
     if info.exec() == 0:
         return False
     if info.rb_new.isChecked():
         sql_tree =  my_sql.sql_change(self.query_tree_add, (0, info.le_name.text(), info.le_position.text()))
         if "mysql.connector.errors" in str(type(sql_tree)):
             QMessageBox.critical(self, "Ошибка sql добавления корневого итема в дерево", sql_tree.msg, QMessageBox.Ok)
             return False
         self.set_tree_info()
     elif info.rb_old.isChecked():
         try:
             parent_id = self.tree_widget.selectedItems()[0].data(0, 5)
             sql_tree = my_sql.sql_change(self.query_tree_add, (parent_id, info.le_name.text(), info.le_position.text()))
             if "mysql.connector.errors" in str(type(sql_tree)):
                 QMessageBox.critical(self, "Ошибка sql добавления итема в дерево", sql_tree.msg, QMessageBox.Ok)
                 return False
             self.set_tree_info()
         except:
               QMessageBox.critical(self, "Ошибка добавления", "Выделите элемент в который вы хотите вставить элемент", QMessageBox.Ok)
示例#24
0
    def ui_acc(self):
        if self.id:
            query = "UPDATE staff_worker_kard SET Worker_Id = %s, Card_Id = %s WHERE Worker_Id = %s"
            sql_info = my_sql.sql_change(
                query,
                (self.le_worker.whatsThis(), self.le_card.text(), self.id))
            if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql сохр. карты",
                                     sql_info.msg, QMessageBox.Ok)
                return False
        else:
            query = "INSERT INTO staff_worker_kard (Worker_Id, Card_Id) VALUES (%s, %s)"
            sql_info = my_sql.sql_change(
                query, (self.le_worker.whatsThis(), self.le_card.text()))
            if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql сохр. карты",
                                     sql_info.msg, QMessageBox.Ok)
                return False

        self.main.ui_update()
        self.close()
        self.destroy()
示例#25
0
 def ui_dell_table_item(self):
     result = QMessageBox.question(self, "Удаление", "Точно удалить элемент?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
     if result == 16384:
         try:
             id_item = self.table_widget.selectedItems()
         except:
             QMessageBox.critical(self, "Ошибка Удаления", "Выделите элемент который хотите удалить", QMessageBox.Ok)
             return False
         for id in id_item:
             sql_info = my_sql.sql_change(self.query_table_dell, (id.data(5), ))
             if "mysql.connector.errors" in str(type(sql_info)):
                 QMessageBox.critical(self, "Ошибка sql удаления элемента таблицы", sql_info.msg, QMessageBox.Ok)
                 return False
     self.set_table_info()
示例#26
0
    def ui_del_position(self):
        try:
            item_id = self.tw_access.selectedItems()[0].data(-2)
        except:
            QMessageBox.critical(self, "Ошибка ", "Выделите элемент который хотите удалить", QMessageBox.Ok)
            return False

        query = """DELETE FROM access WHERE Id = %s"""
        sql_info = my_sql.sql_change(query, (item_id, ))
        if "mysql.connector.errors" in str(type(sql_info)):
            QMessageBox.critical(self, "Ошибка sql при удалении позиции", sql_info.msg, QMessageBox.Ok)
            return False

        self.of_update()
示例#27
0
    def ui_save_salary(self):
        if not self.salary:
            QMessageBox.information(self, "Ошибка", "Нет зарплаты для сохранения", QMessageBox.Ok)
            return False

        sql_date = self.date_pay.strftime("%Y-%m-%d")
        result = QMessageBox.question(self, "Сохранить?", "Точно сохранить весь список в зарплату на %s?" % sql_date, QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
        if result == 16384:

            operation_id_list = []
            p_m_id_list = []
            for work in self.salary:
                for operation in work["operation_list"]:
                    operation_id_list.append(operation[0])

                for p_m in work["p_m_list"]:
                    p_m_id_list.append(p_m[0])

            sql_date = self.date_pay.strftime("%Y-%m-%d")

            if operation_id_list:
                sql_date = self.date_pay.strftime("%Y-%m-%d")
                query = """UPDATE pack_operation SET Pay = 1, Date_Pay = '%s' WHERE Id IN %s""" % (sql_date, str(tuple(operation_id_list)).replace(",)", ")"))
                sql_info = my_sql.sql_change(query)
                if "mysql.connector.errors" in str(type(sql_info)):
                    print("Не смог поставить оплату операции")
                    return False

            if p_m_id_list:
                query = """UPDATE pay_worker SET Pay = 1, Date_Pay = '%s' WHERE Id IN %s""" % (sql_date, str(tuple(p_m_id_list)).replace(",)", ")"))
                sql_info = my_sql.sql_change(query)
                if "mysql.connector.errors" in str(type(sql_info)):
                    print("Не смог поставить оплату допдат и вычетов")
                    return False

        else:
            return False
示例#28
0
    def ui_save_sql(self):
        for row in self.new_table:
            query = """INSERT INTO audit (supply_id, type_supply, audit_date, sertificat,
                                          type_pack, audit_value, audit_location, quality, workers, supply_provider,
                                          supply_date, supply_act, type_material, supply_value, gost, density)
                        VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"""
            sql_info = my_sql.sql_change(query, row)
            if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql при сохранении",
                                     sql_info.msg, QMessageBox.Ok)
                return False

        self.done(1)
        self.close()
        self.destroy()
示例#29
0
 def ui_add_item(self):
     add_item = item_2.Item2()
     add_item.set_settings(self.set_new_win)
     add_item.setModal(True)
     add_item.show()
     if add_item.exec() == 0:
         return False
     sql_result = my_sql.sql_change(
         self.sql_add,
         (add_item.le_name.text(), add_item.pe_note.toPlainText()))
     if "mysql.connector.errors" in str(type(sql_result)):
         QMessageBox.critical(self, "Ошибка sql добавление предмета",
                              sql_result.msg, QMessageBox.Ok)
         return False
     self.sql_set_list()
示例#30
0
 def ui_double_item_table(self):  # Дублирование строки
     try:
         item_id = self.table_widget.selectedItems()[0].data(5)
     except:
         QMessageBox.critical(self, "Ошибка ", "Выделите элемент который хотите дублировать", QMessageBox.Ok)
         return False
     result = QMessageBox.question(self, "Дублирование", "Точно хотите дублировать операцию?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
     if result == 16384:
         query = "INSERT INTO operations (Tree_Id, Name, Price, Sewing_Machine_Id, Note) " \
                 "(SELECT Tree_Id, CONCAT(Name, '-К'), Price, Sewing_Machine_Id, Note FROM operations WHERE Id = %s)"
         sql_info = my_sql.sql_change(query, (item_id, ))
         if "mysql.connector.errors" in str(type(sql_info)):
             QMessageBox.critical(self, "Ошибка sql дублирование строки", sql_info.msg, QMessageBox.Ok)
             return False
         self.set_table_info()
示例#31
0
    def ui_acc(self):
        if not self.id:
            if self.worker:
                sql_value = (self.worker, None, self.le_class.text(), self.le_atr1.text(), self.le_atr2.text(), self.le_value.text())
            elif self.position:
                sql_value = (None, self.position, self.le_class.text(), self.le_atr1.text(), self.le_atr2.text(), self.le_value.text())
            else:
                return False

            query = """INSERT INTO access (Worker_Id, Staff_Position_Id, Class, Atr1, Atr2, Atr_Value) VALUE (%s, %s, %s, %s, %s, %s)"""
            sql_info = my_sql.sql_change(query, sql_value)
            if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql при добавлении разрешения", sql_info.msg, QMessageBox.Ok)
                return False
        else:
            query = """UPDATE access SET Class = %s, Atr1 = %s, Atr2 = %s, Atr_Value = %s WHERE Id = %s"""
            sql_info = my_sql.sql_change(query, (self.le_class.text(), self.le_atr1.text(), self.le_atr2.text(), self.le_value.text(), self.id))
            if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql при изменении разрешения", sql_info.msg, QMessageBox.Ok)
                return False

        self.main.of_update()
        self.close()
        self.destroy()
示例#32
0
    def ui_del(self):
        result = QMessageBox.question(self, "Удаление", "Точно удалить запись?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
        if result == 16384:
            try:
                id_item = self.tw_traffic.selectedItems()
            except:
                QMessageBox.critical(self, "Ошибка Удаления", "Выделите запись который хотите удалить", QMessageBox.Ok)
                return False
            for id in id_item:
                query = """DELETE FROM staff_worker_traffic WHERE staff_worker_traffic.Id = %s"""
                sql_info = my_sql.sql_change(query, (id.data(-2), ))
                if "mysql.connector.errors" in str(type(sql_info)):
                    QMessageBox.critical(self, "Ошибка sql удаления записи посещения", sql_info.msg, QMessageBox.Ok)
                    return False

            self.set_work_traffic(self.le_worker.whatsThis(), True)
示例#33
0
文件: tree.py 项目: Meller008/CRM-Avi
 def ui_dell_tree_item(self):
     result = QMessageBox.question(self, "Удаление", "Точно удалить ветку?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
     if result == 16384:
         try:
             parent_id = self.tree_widget.selectedItems()[0].data(0, 5)
             if self.tree_widget.selectedItems()[0].childCount() == 0:
                 sql_tree = my_sql.sql_change(self.query_tree_del, (parent_id, ))
                 if "mysql.connector.errors" in str(type(sql_tree)):
                     QMessageBox.critical(self, "Ошибка sql удаления итема в дереве", sql_tree.msg, QMessageBox.Ok)
                     return False
                 self.set_tree_info()
             else:
                 QMessageBox.critical(self, "Ошибка", "У этого элеиента есть дети удалите сначало их", QMessageBox.Ok)
         except:
             QMessageBox.critical(self, "Ошибка ", "Выделите элемент который хотите удалить", QMessageBox.Ok)
             return False
示例#34
0
 def ui_dell_item(self):
     result = QMessageBox.question(self, "Удаление",
                                   "Точно удалить элемент?",
                                   QMessageBox.Yes | QMessageBox.No,
                                   QMessageBox.No)
     if result == 16384:
         try:
             id_select = self.lw_list.selectedItems()[0].data(3)
             sql_result = my_sql.sql_change(self.sql_dell, (id_select, ))
             if "mysql.connector.errors" in str(type(sql_result)):
                 QMessageBox.critical(self, "Ошибка sql удаление предмета",
                                      sql_result.msg, QMessageBox.Ok)
                 return False
             self.sql_set_list()
         except:
             QMessageBox.critical(self, "Ошибка", "Выберете элемент",
                                  QMessageBox.Ok)
示例#35
0
    def of_operation_input_complete(self, operation, date_make):
        query = """UPDATE pack_operation
                      SET Worker_Id = %s, Date_make = %s, Date_Input = SYSDATE()
                      WHERE Id = %s"""
        sql_value = (self.user["id"], date_make.toString(Qt.ISODate),
                     operation[0])
        sql_info = my_sql.sql_change(query, sql_value)
        if "mysql.connector.errors" in str(type(sql_info)):
            self.lb_operation_error.setText(
                '<html><head/><body><p align="center"><span style=" color:#ff0000;">Операция не сохранена(Err BD)</span></p></body></html>'
            )
            return False

        self.set_operation_table()
        self.lb_operation_error.setText(
            '<html><head/><body><p align="center"><span style=" color:#00aa00;">Операция сохранена</span></p></body></html>'
        )
示例#36
0
文件: tree.py 项目: Meller008/CRM-Avi
    def ui_change_tree_item(self):

        try:
            parent_name = self.tree_widget.selectedItems()[0].text(0)
            parent_id = self.tree_widget.selectedItems()[0].data(0, 5)
            info = ChangeTreeItem()
            info.set_settings(self.set_new_win_tree)
            info.rb_old.close()
            info.rb_new.close()
            info.le_name.setText(parent_name)
            if info.exec() == 0:
                return False
            sql_tree = my_sql.sql_change(self.query_tree_change, (info.le_name.text(), info.le_position.text(), parent_id))
            if "mysql.connector.errors" in str(type(sql_tree)):
                QMessageBox.critical(self, "Ошибка sql изменения итема в дереве", sql_tree.msg, QMessageBox.Ok)
                return False
            self.set_tree_info()
        except:
            QMessageBox.critical(self, "Ошибка изменения", "Выделите элемент который хотите изменить", QMessageBox.Ok)
示例#37
0
 def ui_double_item_table(self):  # Дублирование строки
     try:
         item_id = self.table_widget.selectedItems()[0].data(5)
     except:
         QMessageBox.critical(
             self, "Ошибка ", "Выделите элемент который хотите дублировать",
             QMessageBox.Ok)
         return False
     result = QMessageBox.question(self, "Дублирование",
                                   "Точно хотите дублировать операцию?",
                                   QMessageBox.Yes | QMessageBox.No,
                                   QMessageBox.No)
     if result == 16384:
         query = "INSERT INTO operations (Tree_Id, Name, Price, Sewing_Machine_Id, Note) " \
                 "(SELECT Tree_Id, CONCAT(Name, '-К'), Price, Sewing_Machine_Id, Note FROM operations WHERE Id = %s)"
         sql_info = my_sql.sql_change(query, (item_id, ))
         if "mysql.connector.errors" in str(type(sql_info)):
             QMessageBox.critical(self, "Ошибка sql дублирование строки",
                                  sql_info.msg, QMessageBox.Ok)
             return False
         self.set_table_info()
示例#38
0
 def ui_dell_table_item(self):
     result = QMessageBox.question(self, "Удаление",
                                   "Точно удалить элемент?",
                                   QMessageBox.Yes | QMessageBox.No,
                                   QMessageBox.No)
     if result == 16384:
         try:
             id_item = self.table_widget.selectedItems()
         except:
             QMessageBox.critical(
                 self, "Ошибка Удаления",
                 "Выделите элемент который хотите удалить", QMessageBox.Ok)
             return False
         for id in id_item:
             sql_info = my_sql.sql_change(self.query_table_dell,
                                          (id.data(5), ))
             if "mysql.connector.errors" in str(type(sql_info)):
                 QMessageBox.critical(
                     self, "Ошибка sql удаления элемента таблицы",
                     sql_info.msg, QMessageBox.Ok)
                 return False
     self.set_table_info()
示例#39
0
    def ui_del(self):
        result = QMessageBox.question(self, "Удаление",
                                      "Точно удалить запись?",
                                      QMessageBox.Yes | QMessageBox.No,
                                      QMessageBox.No)
        if result == 16384:
            try:
                id_item = self.tw_traffic.selectedItems()
            except:
                QMessageBox.critical(self, "Ошибка Удаления",
                                     "Выделите запись который хотите удалить",
                                     QMessageBox.Ok)
                return False
            for id in id_item:
                query = """DELETE FROM staff_worker_traffic WHERE staff_worker_traffic.Id = %s"""
                sql_info = my_sql.sql_change(query, (id.data(-2), ))
                if "mysql.connector.errors" in str(type(sql_info)):
                    QMessageBox.critical(
                        self, "Ошибка sql удаления записи посещения",
                        sql_info.msg, QMessageBox.Ok)
                    return False

            self.set_work_traffic(self.le_worker.whatsThis(), True)
示例#40
0
    def ui_print_tcp(self):

        self.label_data["label_value"] = self.le_value.value()
        self.label_data["label_print"] = self.cb_printer.currentText()

        log_article = "%s %s %s" % (self.label_data["article"],
                                    self.label_data["article_size"],
                                    self.label_data["article_parametr"])
        self.logger.info(u"[Пользователь {:04d}] {}".format(
            User().id(),
            "Печатает артикул %s, кол-во %s, бирка %s, ID пачки %s" %
            (log_article, self.label_data["label_value"],
             self.label_data["label_path"], self.label_data["pack_id"])))

        conn = socket.socket()
        try:
            conn.connect((IP_SERV_LABEL, 6666))
        except TimeoutError:
            return False

        conn.send(bytes(str(self.label_data), encoding='utf-8'))
        conn.send(b"data_ok")

        print(QDateTime.currentDateTime().toString(Qt.ISODate))
        print(self.label_data)

        # Если есть ID пачки то отправим информацию в БД что пачка напечатана!
        if self.label_data["pack_id"] != "None":
            query = """UPDATE pack SET Print = 1 WHERE Id = %s"""
            info_sql = my_sql.sql_change(query, (self.label_data["pack_id"], ))
            if "mysql.connector.errors" in str(type(info_sql)):
                QMessageBox.critical(
                    self, "Ошибка sql подтверждения напечатанности пачки",
                    info_sql.msg, QMessageBox.Ok)

        self.done(1)
示例#41
0
    def ui_transfer_table(self):
        try:
            transfer_id = []
            for item in self.table_widget.selectedItems():
                if item.data(5) not in transfer_id:
                    transfer_id.append(item.data(5))
        except:
            QMessageBox.critical(self, "Ошибка переноса",
                                 "Выберете элементы для переноса",
                                 QMessageBox.Ok)
            return False
        if not transfer_id:
            QMessageBox.critical(self, "Ошибка переноса",
                                 "Выберете элементы для переноса",
                                 QMessageBox.Ok)
            return False

        info = TreeTransfer(self.query_tree_select)
        info.set_settings(self.set_transfer_win)
        if info.exec() == 0:
            return False

        if not info.select_tree_id:
            QMessageBox.critical(self, "Ошибка переноса",
                                 "Выберете в каую категорию перенести",
                                 QMessageBox.Ok)
        new_tree_id = info.select_tree_id

        for item_id in transfer_id:
            sql_info = my_sql.sql_change(self.query_transfer_item,
                                         (new_tree_id, item_id))
            if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql получение табюлицы",
                                     sql_info.msg, QMessageBox.Ok)
                return False
        self.set_table_info()
示例#42
0
    def ui_set_date_month(self):
        table_date = []
        for trafic in self.sql_traffic:
            if trafic[2]:
                if not trafic[3]:
                    min = trafic[2].minute
                    if 0 <= min <= 15:
                        tab_date = trafic[2].replace(minute=0)
                    elif 16 <= min <= 45:
                        tab_date = trafic[2].replace(minute=30)
                    else:
                        tab_date = trafic[2].replace(minute=0)
                        hour_up = trafic[2].hour + 1
                        if hour_up < 24:
                            tab_date = tab_date.replace(hour=hour_up)
                        else:
                            day = trafic[2].day
                            tab_date = tab_date.replace(day=day + 1,
                                                        hour=hour_up - 24)

                    table_date.append((tab_date, trafic[0]))

            else:
                QMessageBox.critical(self, "Ошибка даты",
                                     "Что то не так с датой", QMessageBox.Ok)
                return False

        query = "UPDATE staff_worker_traffic SET Table_Data = %s WHERE Id = %s"
        for sql_table in table_date:
            sql = my_sql.sql_change(query, sql_table)
            if "mysql.connector.errors" in str(type(sql)):
                QMessageBox.critical(self, "Ошибка sql проставления дат",
                                     sql.msg, QMessageBox.Ok)
                return False

        self.set_work_traffic(int(self.le_worker.whatsThis()), True)
示例#43
0
    def ui_del(self):
        table = self._get_table()

        if table.currentRow() is None:
            QMessageBox.critical(self, "Ошибка", "Выберите строчку",
                                 QMessageBox.Ok)
            return False

        select_row = table.currentRow()
        _id = table.item(select_row, 0).data(5)

        result = QMessageBox.question(self, "Удаление",
                                      "Точно удалить элемент?",
                                      QMessageBox.Yes | QMessageBox.No,
                                      QMessageBox.No)
        if result == 16384:
            query = """DELETE FROM audit WHERE Id = %s"""
            sql_info = my_sql.sql_change(query, (_id, ))
            if "mysql.connector.errors" in str(type(sql_info)):
                QMessageBox.critical(self, "Ошибка sql при удалении",
                                     sql_info.msg, QMessageBox.Ok)
                return False

            self.update()
示例#44
0
    def acc(self):
        if self.cb_nds.isChecked():
            no_nds = 1
        else:
            no_nds = 0
        if self.select_id == "new":
            query = """INSERT INTO clients (Name, Legal_Address, Actual_Address, INN, KPP, OGRN, Account, Bank, corres_Account, BIK, Contact_Person, Phone,
                                              Mail, Note, No_Nds, Full_Name)
                              VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"""
            paremetrs = (self.le_name.text(), self.le_legal_address.text(), self.le_actual_address.text(), self.le_inn.text(), self.le_kpp.text(), self.le_ogrn.text(),
                         self.le_rs.text(), self.le_bank.text(), self.le_ks.text(), self.le_bik.text(), self.le_fio.text(), self.le_phone.text(),
                         self.le_mail.text(), self.le_note.toPlainText(), no_nds, self.le_full_name.text())
            new_id = my_sql.sql_change(query, paremetrs)
            if "mysql.connector.errors" in str(type(new_id)):
                    QMessageBox.critical(self, "Ошибка sql добавление клиента", new_id.msg, QMessageBox.Ok)
                    return False
            for row in range(self.tw_adres.rowCount()):
                item = self.tw_adres.item(row, 0)
                if item.data(-2) is not None:
                    if item.data(-2) == "new":
                        query = "INSERT INTO clients_actual_address (Client_Id, Name, Adres, KPP) VALUES (%s, %s, %s, %s)"
                        paremetrs = (new_id, self.tw_adres.item(row, 0).text(), self.tw_adres.item(row, 1).text(), self.tw_adres.item(row, 2).text())
                        info_sql = my_sql.sql_change(query, paremetrs)
                        if "mysql.connector.errors" in str(type(info_sql)):
                            QMessageBox.critical(self, "Ошибка sql добавления адреса", info_sql.msg, QMessageBox.Ok)
                            return False
        else:
            query = """UPDATE clients SET Name = %s, Legal_Address = %s, Actual_Address = %s, INN = %s, KPP = %s, OGRN = %s, Account = %s, Bank = %s, corres_Account = %s,
                       BIK = %s, Contact_Person = %s, Phone = %s, Mail = %s, Note = %s, No_Nds = %s, Full_Name = %s WHERE Id = %s"""
            paremetrs = (self.le_name.text(), self.le_legal_address.text(), self.le_actual_address.text(), self.le_inn.text(), self.le_kpp.text(), self.le_ogrn.text(),
                         self.le_rs.text(), self.le_bank.text(), self.le_ks.text(), self.le_bik.text(), self.le_fio.text(), self.le_phone.text(),
                         self.le_mail.text(), self.le_note.toPlainText(), no_nds, self.le_full_name.text(), self.select_id)
            info_sql = my_sql.sql_change(query, paremetrs)
            if "mysql.connector.errors" in str(type(info_sql)):
                QMessageBox.critical(self, "Ошибка sql изменение клиента", info_sql.msg, QMessageBox.Ok)
                return False

            for row in range(self.tw_adres.rowCount()):
                item = self.tw_adres.item(row, 0)
                if item.data(-2) is not None:
                    if item.data(-2) == "new":
                        query = "INSERT INTO clients_actual_address (Client_Id, Name, Adres, KPP) VALUES (%s, %s, %s, %s)"
                        paremetrs = (self.select_id, self.tw_adres.item(row, 0).text(), self.tw_adres.item(row, 1).text(), self.tw_adres.item(row, 2).text())
                        info_sql = my_sql.sql_change(query, paremetrs)
                        if "mysql.connector.errors" in str(type(info_sql)):
                            QMessageBox.critical(self, "Ошибка sql добавления адреса", info_sql.msg, QMessageBox.Ok)
                            return False
                    elif item.data(-2) == "update":
                        query = "UPDATE clients_actual_address SET Name = %s, Adres = %s, KPP = %s WHERE Id = %s"
                        paremetrs = (self.tw_adres.item(row, 0).text(), self.tw_adres.item(row, 1).text(), self.tw_adres.item(row, 2).text(), item.data(-1))
                        info_sql = my_sql.sql_change(query, paremetrs)
                        if "mysql.connector.errors" in str(type(info_sql)):
                            QMessageBox.critical(self, "Ошибка sql изменение адреса", info_sql.msg, QMessageBox.Ok)
                            return False

            for del_id in self.delete_adress:
                query = 'DELETE FROM clients_actual_address WHERE Id = %s'
                info_sql = my_sql.sql_change(query, (del_id, ))
                if "mysql.connector.errors" in str(type(info_sql)):
                    QMessageBox.critical(self, "Ошибка sql удаление адреса", info_sql.msg, QMessageBox.Ok)
                    return False

            for row in range(self.tw_vendor_number.rowCount()):
                item = self.tw_vendor_number.item(row, 0)
                if item.data(-2) is not None:
                    if item.data(-2) == "new":
                        query = "INSERT INTO clients_vendor_number (Client_Id, Number, Contract, Data_From) VALUES (%s, %s, %s, %s)"
                        data = datetime.strptime(self.tw_vendor_number.item(row, 2).text(), "%d.%m.%Y")
                        paremetrs = (self.select_id, self.tw_vendor_number.item(row, 0).text(), self.tw_vendor_number.item(row, 1).text(), data)
                        info_sql = my_sql.sql_change(query, paremetrs)
                        if "mysql.connector.errors" in str(type(info_sql)):
                            QMessageBox.critical(self, "Ошибка sql добавления номера", info_sql.msg, QMessageBox.Ok)
                            return False
                    elif item.data(-2) == "update":
                        query = "UPDATE clients_vendor_number SET Number = %s, Contract = %s, Data_From = %s WHERE Id = %s"
                        data = datetime.strptime(self.tw_vendor_number.item(row, 2).text(), "%d.%m.%Y")
                        paremetrs = (self.tw_vendor_number.item(row, 0).text(), self.tw_vendor_number.item(row, 1).text(), data, item.data(-1))
                        info_sql = my_sql.sql_change(query, paremetrs)
                        if "mysql.connector.errors" in str(type(info_sql)):
                            QMessageBox.critical(self, "Ошибка sql изменение номера", info_sql.msg, QMessageBox.Ok)
                            return False

            for del_id in self.delete_numbers:
                query = 'DELETE FROM clients_vendor_number WHERE Id = %s'
                info_sql = my_sql.sql_change(query, (del_id, ))
                if "mysql.connector.errors" in str(type(info_sql)):
                    QMessageBox.critical(self, "Ошибка sql удаление номера", info_sql.msg, QMessageBox.Ok)
                    return False

        self.m.sql_set_list()
        self.close()
        self.destroy()
示例#45
0
    def acc(self):
        if self.cb_nds.isChecked():
            no_nds = 1
        else:
            no_nds = 0
        if self.select_id == "new":
            query = """INSERT INTO clients (Name, Legal_Address, Actual_Address, INN, KPP, OGRN, Account, Bank, corres_Account, BIK, Contact_Person, Phone,
                                              Mail, Note, No_Nds, Full_Name)
                              VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"""
            paremetrs = (self.le_name.text(), self.le_legal_address.text(),
                         self.le_actual_address.text(), self.le_inn.text(),
                         self.le_kpp.text(), self.le_ogrn.text(),
                         self.le_rs.text(), self.le_bank.text(),
                         self.le_ks.text(), self.le_bik.text(),
                         self.le_fio.text(), self.le_phone.text(),
                         self.le_mail.text(), self.le_note.toPlainText(),
                         no_nds, self.le_full_name.text())
            new_id = my_sql.sql_change(query, paremetrs)
            if "mysql.connector.errors" in str(type(new_id)):
                QMessageBox.critical(self, "Ошибка sql добавление клиента",
                                     new_id.msg, QMessageBox.Ok)
                return False
            for row in range(self.tw_adres.rowCount()):
                item = self.tw_adres.item(row, 0)
                if item.data(-2) is not None:
                    if item.data(-2) == "new":
                        query = "INSERT INTO clients_actual_address (Client_Id, Name, Adres, KPP) VALUES (%s, %s, %s, %s)"
                        paremetrs = (new_id, self.tw_adres.item(row, 0).text(),
                                     self.tw_adres.item(row, 1).text(),
                                     self.tw_adres.item(row, 2).text())
                        info_sql = my_sql.sql_change(query, paremetrs)
                        if "mysql.connector.errors" in str(type(info_sql)):
                            QMessageBox.critical(
                                self, "Ошибка sql добавления адреса",
                                info_sql.msg, QMessageBox.Ok)
                            return False
        else:
            query = """UPDATE clients SET Name = %s, Legal_Address = %s, Actual_Address = %s, INN = %s, KPP = %s, OGRN = %s, Account = %s, Bank = %s, corres_Account = %s,
                       BIK = %s, Contact_Person = %s, Phone = %s, Mail = %s, Note = %s, No_Nds = %s, Full_Name = %s WHERE Id = %s"""
            paremetrs = (self.le_name.text(), self.le_legal_address.text(),
                         self.le_actual_address.text(), self.le_inn.text(),
                         self.le_kpp.text(), self.le_ogrn.text(),
                         self.le_rs.text(), self.le_bank.text(),
                         self.le_ks.text(), self.le_bik.text(),
                         self.le_fio.text(), self.le_phone.text(),
                         self.le_mail.text(), self.le_note.toPlainText(),
                         no_nds, self.le_full_name.text(), self.select_id)
            info_sql = my_sql.sql_change(query, paremetrs)
            if "mysql.connector.errors" in str(type(info_sql)):
                QMessageBox.critical(self, "Ошибка sql изменение клиента",
                                     info_sql.msg, QMessageBox.Ok)
                return False

            for row in range(self.tw_adres.rowCount()):
                item = self.tw_adres.item(row, 0)
                if item.data(-2) is not None:
                    if item.data(-2) == "new":
                        query = "INSERT INTO clients_actual_address (Client_Id, Name, Adres, KPP) VALUES (%s, %s, %s, %s)"
                        paremetrs = (self.select_id,
                                     self.tw_adres.item(row, 0).text(),
                                     self.tw_adres.item(row, 1).text(),
                                     self.tw_adres.item(row, 2).text())
                        info_sql = my_sql.sql_change(query, paremetrs)
                        if "mysql.connector.errors" in str(type(info_sql)):
                            QMessageBox.critical(
                                self, "Ошибка sql добавления адреса",
                                info_sql.msg, QMessageBox.Ok)
                            return False
                    elif item.data(-2) == "update":
                        query = "UPDATE clients_actual_address SET Name = %s, Adres = %s, KPP = %s WHERE Id = %s"
                        paremetrs = (self.tw_adres.item(row, 0).text(),
                                     self.tw_adres.item(row, 1).text(),
                                     self.tw_adres.item(row, 2).text(),
                                     item.data(-1))
                        info_sql = my_sql.sql_change(query, paremetrs)
                        if "mysql.connector.errors" in str(type(info_sql)):
                            QMessageBox.critical(
                                self, "Ошибка sql изменение адреса",
                                info_sql.msg, QMessageBox.Ok)
                            return False

            for del_id in self.delete_adress:
                query = 'DELETE FROM clients_actual_address WHERE Id = %s'
                info_sql = my_sql.sql_change(query, (del_id, ))
                if "mysql.connector.errors" in str(type(info_sql)):
                    QMessageBox.critical(self, "Ошибка sql удаление адреса",
                                         info_sql.msg, QMessageBox.Ok)
                    return False

            for row in range(self.tw_vendor_number.rowCount()):
                item = self.tw_vendor_number.item(row, 0)
                if item.data(-2) is not None:
                    if item.data(-2) == "new":
                        query = "INSERT INTO clients_vendor_number (Client_Id, Number, Contract, Data_From) VALUES (%s, %s, %s, %s)"
                        data = datetime.strptime(
                            self.tw_vendor_number.item(row, 2).text(),
                            "%d.%m.%Y")
                        paremetrs = (self.select_id,
                                     self.tw_vendor_number.item(row, 0).text(),
                                     self.tw_vendor_number.item(row, 1).text(),
                                     data)
                        info_sql = my_sql.sql_change(query, paremetrs)
                        if "mysql.connector.errors" in str(type(info_sql)):
                            QMessageBox.critical(
                                self, "Ошибка sql добавления номера",
                                info_sql.msg, QMessageBox.Ok)
                            return False
                    elif item.data(-2) == "update":
                        query = "UPDATE clients_vendor_number SET Number = %s, Contract = %s, Data_From = %s WHERE Id = %s"
                        data = datetime.strptime(
                            self.tw_vendor_number.item(row, 2).text(),
                            "%d.%m.%Y")
                        paremetrs = (self.tw_vendor_number.item(row, 0).text(),
                                     self.tw_vendor_number.item(row, 1).text(),
                                     data, item.data(-1))
                        info_sql = my_sql.sql_change(query, paremetrs)
                        if "mysql.connector.errors" in str(type(info_sql)):
                            QMessageBox.critical(
                                self, "Ошибка sql изменение номера",
                                info_sql.msg, QMessageBox.Ok)
                            return False

            for del_id in self.delete_numbers:
                query = 'DELETE FROM clients_vendor_number WHERE Id = %s'
                info_sql = my_sql.sql_change(query, (del_id, ))
                if "mysql.connector.errors" in str(type(info_sql)):
                    QMessageBox.critical(self, "Ошибка sql удаление номера",
                                         info_sql.msg, QMessageBox.Ok)
                    return False

        self.m.sql_set_list()
        self.close()
        self.destroy()
示例#46
0
    def ui_acc(self):
        if self.change:
            if not self.id:
                query = """INSERT INTO beika (Material_Id, Accessories_Id, Date, Value, Finished, Worker_Id)
                            VALUES (%s, %s, %s, %s, %s, %s)"""
                sql_value = (self.le_material.whatsThis(), self.le_accessories_name.whatsThis(), self.de_date.date().toString(Qt.ISODate),
                             self.le_value.text(), 0, self.le_worker.whatsThis())
                sql_info = my_sql.sql_change(query, sql_value)
                if "mysql.connector.errors" in str(type(sql_info)):
                    QMessageBox.critical(self, "Ошибка sql при добавлении нарезки бейки", sql_info.msg, QMessageBox.Ok)
                    return False

                self.id = sql_info

            else:
                query = """UPDATE beika SET Material_Id = %s, Accessories_Id = %s, Date = %s, Value = %s, Worker_Id = %s WHERE Id = %s"""
                sql_value = (self.le_material.whatsThis(), self.le_accessories_name.whatsThis(), self.de_date.date().toString(Qt.ISODate),
                             self.le_value.text(), self.le_worker.whatsThis(), self.id)
                sql_info = my_sql.sql_change(query, sql_value)
                if "mysql.connector.errors" in str(type(sql_info)):
                    QMessageBox.critical(self, "Ошибка sql при изменении нарезки бейки", sql_info.msg, QMessageBox.Ok)
                    return False

        if self.id and self.sql_finish != self.cb_ok.isChecked():
            if not self.sql_finish and self.cb_ok.isChecked():
                # Нарезку подтвердили
                # Проверим остаток склада
                query = """SELECT SUM(material_balance.BalanceWeight)
                                FROM material_balance
                                  LEFT JOIN material_supplyposition ON material_balance.Material_SupplyPositionId = material_supplyposition.Id
                                WHERE material_supplyposition.Material_NameId = %s"""
                sql_info = my_sql.sql_select(query, (self.le_material.whatsThis(), ))
                if "mysql.connector.errors" in str(type(sql_info)):
                    QMessageBox.critical(self, "Ошибка sql при получении остатка склада", sql_info.msg, QMessageBox.Ok)
                    return False

                if sql_info[0][0] is None or Decimal(self.le_value.text()) > sql_info[0][0]:
                    QMessageBox.critical(self, "Ошибка", "Не хватает ткани на складе для нарезки", QMessageBox.Ok)
                    return False

                sql_connect_transaction = my_sql.sql_start_transaction()
                material_id = int(self.le_material.whatsThis())
                change_value = Decimal(self.le_value.text())
                price_list = []
                while change_value > 0:
                    # получим первый остаток на складе
                    # Проверяем первое кол-во на складе
                    query = """SELECT material_balance.Id, material_balance.BalanceWeight, MIN(material_supply.Data), material_supplyposition.Price
                                    FROM material_balance
                                      LEFT JOIN material_supplyposition ON material_balance.Material_SupplyPositionId = material_supplyposition.Id
                                      LEFT JOIN material_supply ON material_supplyposition.Material_SupplyId = material_supply.Id
                                    WHERE material_supplyposition.Material_NameId = %s AND material_balance.BalanceWeight > 0"""
                    sql_balance_material = my_sql.sql_select_transaction(sql_connect_transaction, query, (material_id, ))
                    if "mysql.connector.errors" in str(type(sql_balance_material)):
                        my_sql.sql_rollback_transaction(sql_connect_transaction)
                        QMessageBox.critical(self, "Ошибка сохранения ткани", "Не смог получить остаток ткани на балансе (Это плохо к админу)", QMessageBox.Ok)
                        return False

                    if sql_balance_material[0][1] > change_value:
                        # Если в этом балансе больше чем нам надо
                        take_material_value = change_value
                        change_value = 0
                    else:
                        # Если в этом балансе меньше чем нам надо
                        take_material_value = sql_balance_material[0][1]
                        change_value -= sql_balance_material[0][1]

                    # Забираем возможное кол-во
                    query = "UPDATE material_balance SET BalanceWeight = BalanceWeight - %s WHERE Id = %s"
                    sql_info = my_sql.sql_change_transaction(sql_connect_transaction, query, (take_material_value, sql_balance_material[0][0]))
                    if "mysql.connector.errors" in str(type(sql_info)):
                        my_sql.sql_rollback_transaction(sql_connect_transaction)
                        QMessageBox.critical(self, "Ошибка сохранения ткани", "Не смог забрать ткань с баланса (Это плохо к админу)", QMessageBox.Ok)
                        return False

                    # Делаем запись о заборе ткани с баланса склада
                    query = """INSERT INTO transaction_records_material (Supply_Balance_Id, Balance, Date, Note, Beika_Id, Code)
                                  VALUES (%s, %s, SYSDATE(), %s, %s, 140)"""
                    txt_note = "На нарезку бейки №%s" % self.id
                    sql_values = (sql_balance_material[0][0], -take_material_value, txt_note, self.id)
                    sql_info = my_sql.sql_change_transaction(sql_connect_transaction, query, sql_values)
                    if "mysql.connector.errors" in str(type(sql_info)):
                        my_sql.sql_rollback_transaction(sql_connect_transaction)
                        QMessageBox.critical(self, "Ошибка сохранения ткани", "Не смог добавить запись при заборе ткани (Это плохо к админу)", QMessageBox.Ok)
                        return False

                    price_list.append((take_material_value, sql_balance_material[0][3]))

                # если ткань забрали успешно то начнем забивать приход
                # Узнаем среднюю цену avg = (p*v) + (p2*v2) + ... / v + v1 ...
                up = 0
                down = 0
                for item in price_list:
                    up += item[0] * item[1]
                    down += item[0]

                avg_price = up / down

                # Добавим приход фурнитуры
                query = "INSERT INTO accessories_supply (Accessories_ProviderId, Data, Note) VALUES (%s, %s, %s)"
                txt_note = "Приход с нарезки бейки №%s" % self.id
                sql_info = my_sql.sql_change_transaction(sql_connect_transaction, query, (SUPPLY_PROVIDER_ID, self.de_date.date().toPyDate(), txt_note))
                if "mysql.connector.errors" in str(type(sql_info)):
                    my_sql.sql_rollback_transaction(sql_connect_transaction)
                    QMessageBox.critical(self, "Ошибка сохранения прихода", "Не смог сделать приход фурнитуры", QMessageBox.Ok)
                    return False

                supply_id = sql_info
                if not supply_id:
                    my_sql.sql_rollback_transaction(sql_connect_transaction)
                    QMessageBox.critical(self, "Ошибка сохранения прихода", "Не получил id прихода фурнитуры", QMessageBox.Ok)
                    return False

                query = "INSERT INTO accessories_supplyposition (Accessories_SupplyId, Accessories_NameId, Value, Price) VALUES (%s, %s, %s, %s)"
                sql_value = (supply_id, self.le_accessories_name.whatsThis(), down, avg_price)
                sql_info = my_sql.sql_change_transaction(sql_connect_transaction, query, sql_value)
                if "mysql.connector.errors" in str(type(sql_info)):
                    my_sql.sql_rollback_transaction(sql_connect_transaction)
                    QMessageBox.critical(self, "Ошибка сохранения прихода", "Не смог сделать позицию прихода", QMessageBox.Ok)
                    return False

                supply_position_id = sql_info
                if not supply_id:
                    my_sql.sql_rollback_transaction(sql_connect_transaction)
                    QMessageBox.critical(self, "Ошибка сохранения прихода", "Не получил id позиции прихода фурнитуры", QMessageBox.Ok)
                    return False

                # Получим ID баланса через ID позиции прихода
                query = """SELECT accessories_balance.Id
                                FROM accessories_balance
                                  LEFT JOIN accessories_supplyposition ON accessories_balance.Accessories_SupplyPositionId = accessories_supplyposition.Id
                                WHERE accessories_supplyposition.Id = %s"""
                sql_info = my_sql.sql_select_transaction(sql_connect_transaction, query, (supply_position_id, ))
                if "mysql.connector.errors" in str(type(sql_info)):
                    my_sql.sql_rollback_transaction(sql_connect_transaction)
                    QMessageBox.critical(self, "Ошибка сохранения прихода", "Не смог получить ID баланса через позицию прихода", QMessageBox.Ok)
                    return False

                query = """INSERT INTO transaction_records_accessories (Supply_Balance_Id, Balance, Date, Note, Pack_Accessories_Id, Code)
                                  VALUES (%s, %s, SYSDATE(), %s, NULL, 240)"""
                txt_note = "Нарезка бейки №%s" % self.id
                sql_value = (sql_info[0][0], down, txt_note)
                sql_info = my_sql.sql_change_transaction(sql_connect_transaction, query, sql_value)
                if "mysql.connector.errors" in str(type(sql_info)):
                    my_sql.sql_rollback_transaction(sql_connect_transaction)
                    QMessageBox.critical(self, "Ошибка сохранения прихода", "Не смог сделать позицию прихода", QMessageBox.Ok)
                    return False

                query = """UPDATE beika SET Finished = %s, Supply_Id = %s WHERE Id = %s"""
                sql_info = my_sql.sql_change_transaction(sql_connect_transaction, query, (1, supply_id, self.id))
                if "mysql.connector.errors" in str(type(sql_info)):
                    my_sql.sql_rollback_transaction(sql_connect_transaction)
                    QMessageBox.critical(self, "Ошибка sql при изменении строки принятия в нарезке бейки", sql_info.msg, QMessageBox.Ok)
                    return False

                my_sql.sql_commit_transaction(sql_connect_transaction)

            elif self.sql_finish and not self.cb_ok.isChecked():
                # Нарезку отменили
                # Проверим не трогался ли ее баланс
                query = """SELECT beika.Value, accessories_supplyposition.Value, accessories_balance.BalanceValue
                              FROM beika LEFT JOIN accessories_supply ON beika.Supply_Id = accessories_supply.Id
                                LEFT JOIN accessories_supplyposition ON accessories_supply.Id = accessories_supplyposition.Accessories_SupplyId
                                LEFT JOIN accessories_balance ON accessories_supplyposition.Id = accessories_balance.Accessories_SupplyPositionId
                              WHERE beika.Id = %s"""
                sql_info = my_sql.sql_select(query, (self.id,))
                if "mysql.connector.errors" in str(type(sql_info)):
                    QMessageBox.critical(self, "Ошибка sql при получении баланса это нарезки", sql_info.msg, QMessageBox.Ok)
                    return False

                if sql_info[0][0] == sql_info[0][1] == sql_info[0][2]:
                    pass
                else:
                    QMessageBox.critical(self, "Ошибка", "Не равны балансы, скорее всего бейка в работе", QMessageBox.Ok)
                    return False

                # Получим Id Supply + Id Supply_position + Balance_Id
                query = """SELECT accessories_supply.Id, accessories_supplyposition.Id, accessories_balance.Id
                              FROM beika LEFT JOIN accessories_supply ON beika.Supply_Id = accessories_supply.Id
                                LEFT JOIN accessories_supplyposition ON accessories_supply.Id = accessories_supplyposition.Accessories_SupplyId
                                LEFT JOIN accessories_balance ON accessories_supplyposition.Id = accessories_balance.Accessories_SupplyPositionId
                              WHERE beika.Id = %s"""
                sql_info_id = my_sql.sql_select(query, (self.id,))
                if "mysql.connector.errors" in str(type(sql_info_id)):
                    QMessageBox.critical(self, "Ошибка sql при получении ID баланса", sql_info_id.msg, QMessageBox.Ok)
                    return False

                sql_connect_transaction = my_sql.sql_start_transaction()

                # Удалим все упоминания о этой нарезке бейки!
                query = """DELETE FROM transaction_records_accessories WHERE Supply_Balance_Id = %s"""
                sql_info = my_sql.sql_change_transaction(sql_connect_transaction, query, (sql_info_id[0][2],))
                if "mysql.connector.errors" in str(type(sql_info)):
                    my_sql.sql_rollback_transaction(sql_connect_transaction)
                    QMessageBox.critical(self, "Ошибка sql при Удалении записей баланмса фурнитуры", sql_info.msg, QMessageBox.Ok)
                    return False

                query = """DELETE FROM accessories_balance WHERE Id = %s"""
                sql_info = my_sql.sql_change_transaction(sql_connect_transaction, query, (sql_info_id[0][2],))
                if "mysql.connector.errors" in str(type(sql_info)):
                    my_sql.sql_rollback_transaction(sql_connect_transaction)
                    QMessageBox.critical(self, "Ошибка sql при Удалении баланса фурнитуры", sql_info.msg, QMessageBox.Ok)
                    return False

                query = """DELETE FROM accessories_supplyposition WHERE Id = %s"""
                sql_info = my_sql.sql_change_transaction(sql_connect_transaction, query, (sql_info_id[0][1],))
                if "mysql.connector.errors" in str(type(sql_info)):
                    my_sql.sql_rollback_transaction(sql_connect_transaction)
                    QMessageBox.critical(self, "Ошибка sql при Удалении позиции прихода фурнитуры", sql_info.msg, QMessageBox.Ok)
                    return False

                query = """DELETE FROM accessories_supply WHERE Id = %s"""
                sql_info = my_sql.sql_change_transaction(sql_connect_transaction, query, (sql_info_id[0][0],))
                if "mysql.connector.errors" in str(type(sql_info)):
                    my_sql.sql_rollback_transaction(sql_connect_transaction)
                    QMessageBox.critical(self, "Ошибка sql при Удалении прихода фурнитуры", sql_info.msg, QMessageBox.Ok)
                    return False

                # Вернем ткань
                # Берем сумму списаний сгрупированную по id баланса
                query = """SELECT SUM(transaction_records_material.Balance), transaction_records_material.Supply_Balance_Id, material_supplyposition.Material_NameId
                                 FROM transaction_records_material
                                   LEFT JOIN material_balance ON transaction_records_material.Supply_Balance_Id = material_balance.Id
                                   LEFT JOIN material_supplyposition ON material_balance.Material_SupplyPositionId = material_supplyposition.Id
                                 WHERE transaction_records_material.Beika_Id = %s
                                 GROUP BY transaction_records_material.Supply_Balance_Id"""
                sql_info = my_sql.sql_select_transaction(sql_connect_transaction, query, (self.id,))
                if "mysql.connector.errors" in str(type(sql_info)):
                    my_sql.sql_rollback_transaction(sql_connect_transaction)
                    QMessageBox.critical(self, "Ошибка sql Не смог получить сумму списаний сгрупированную по id баланса при удалении", sql_info.msg, QMessageBox.Ok)
                    return False

                if sql_info[0][0] is not None:
                    transaction_list = sql_info
                else:
                    my_sql.sql_rollback_transaction(sql_connect_transaction)
                    QMessageBox.critical(self, "Нету суммы списаний сгрупированной по id баланса при удалении", sql_info.msg, QMessageBox.Ok)
                    return False

                # Начинаем перебор списка списаний
                return_material = 0
                for transaction_id_all in transaction_list:
                    if transaction_id_all[0] != 0:
                        # возвращаем фурнитуру на баланс склада
                        query = "UPDATE material_balance SET BalanceWeight = BalanceWeight + %s WHERE Id = %s"
                        sql_info = my_sql.sql_change_transaction(sql_connect_transaction, query, (-transaction_id_all[0], transaction_id_all[1]))
                        if "mysql.connector.errors" in str(type(sql_info)):
                            my_sql.sql_rollback_transaction(sql_connect_transaction)
                            QMessageBox.critical(self, "Ошибка sql Не смог вернуть ткань на баланс склада при удалении", sql_info.msg, QMessageBox.Ok)
                            return False

                        # Делаем запись о возырате ткани на баланс склада
                        query = """INSERT INTO transaction_records_material (Supply_Balance_Id, Balance, Date, Note, Beika_Id, Code)
                                         VALUES (%s, %s, SYSDATE(), %s, %s, 141)"""
                        txt_note = "Отмена нарезки бейки №%s" % self.id
                        sql_values = (transaction_id_all[1], -transaction_id_all[0], txt_note, self.id)
                        sql_info = my_sql.sql_change_transaction(sql_connect_transaction, query, sql_values)
                        if "mysql.connector.errors" in str(type(sql_info)):
                            my_sql.sql_rollback_transaction(sql_connect_transaction)
                            QMessageBox.critical(self, "Ошибка sql Не смог добавить запись при возврате ткани удаление", sql_info.msg, QMessageBox.Ok)
                            return False

                        return_material += -transaction_id_all[0]

                if fabs(return_material - Decimal(self.le_value.text())) > Decimal(str(0.0005)):
                    my_sql.sql_rollback_transaction(sql_connect_transaction)
                    QMessageBox.critical(self, "Ошибка sql Возвратная ткань не равна сумме кроя", sql_info.msg, QMessageBox.Ok)
                    return False

                query = """UPDATE beika SET Finished = %s, Supply_Id = %s WHERE Id = %s"""
                sql_info = my_sql.sql_change_transaction(sql_connect_transaction, query, (0, None, self.id))
                if "mysql.connector.errors" in str(type(sql_info)):
                    my_sql.sql_rollback_transaction(sql_connect_transaction)
                    QMessageBox.critical(self, "Ошибка sql при изменении строки принятия при отмене нарезки", sql_info.msg, QMessageBox.Ok)
                    return False

                my_sql.sql_commit_transaction(sql_connect_transaction)

        self.main.ui_update()
        self.close()
        self.destroy()
示例#47
0
文件: pay.py 项目: Meller008/CRM-Avi
    def ui_acc(self):
        if self.id is None:
            if self.menu_text == "Доплата":
                query = """INSERT INTO pay_worker (Worker_Id, Worker_Id_Insert, Reason_Id, Balance, Date_In_Pay, Date_Input, Note, Pay, Date_Pay)
                            VALUES (%s, %s, %s, %s, %s, NOW(), %s, %s, %s)"""
                sql_value = (self.le_work_plus.whatsThis(), User().id(), self.le_reason_plus.whatsThis(), self.le_value_plus.text().replace(",", "."),
                             self.de_plus_date.date().toString(Qt.ISODate), self.le_note_plus.text(), 0, None)
                sql_info = my_sql.sql_change(query, sql_value)
                if "mysql.connector.errors" in str(type(sql_info)):
                        QMessageBox.critical(self, "Ошибка sql сохр. доплаты", sql_info.msg, QMessageBox.Ok)
                        return False

            elif self.menu_text == "Вычет":
                query = """INSERT INTO pay_worker (Worker_Id, Worker_Id_Insert, Reason_Id, Balance, Date_In_Pay, Date_Input, Note, Pay, Date_Pay)
                            VALUES (%s, %s, %s, -%s, %s, NOW(), %s, %s, %s)"""
                sql_value = (self.le_work_minus.whatsThis(), User().id(), self.le_reason_minus.whatsThis(), self.le_value_minus.text().replace(",", "."),
                             self.de_minus_date.date().toString(Qt.ISODate), self.le_note_minus.text(), 0, None)
                sql_info = my_sql.sql_change(query, sql_value)
                if "mysql.connector.errors" in str(type(sql_info)):
                        QMessageBox.critical(self, "Ошибка sql сохр. вычета", sql_info.msg, QMessageBox.Ok)
                        return False

            elif self.menu_text == "Доплата за проезд":

                sql_values = []
                for row in range(self.tw_road.rowCount()):

                    work_id = self.tw_road.item(row, 0).data(-2)
                    balance = self.tw_road.item(row, 3).text().replace(',', ".")

                    if float(balance) > 0:
                        sql_values.append((work_id, User().id(), self.le_road_reason.whatsThis(), balance.replace(",", "."),
                                           self.de_road_date.date().toString(Qt.ISODate), self.le_note_road.text(), 0, None))

                if not sql_values:
                    return False

                query = """INSERT INTO pay_worker (Worker_Id, Worker_Id_Insert, Reason_Id, Balance, Date_In_Pay, Date_Input, Note, Pay, Date_Pay)
                            VALUES (%s, %s, %s, %s, %s, NOW(), %s, %s, %s)"""
                sql_info = my_sql.sql_many(query, sql_values)
                if "mysql.connector.errors" in str(type(sql_info)):
                        QMessageBox.critical(self, "Ошибка sql сохр. дороги", sql_info.msg, QMessageBox.Ok)
                        return False

                self.close()
                self.destroy()

            elif self.menu_text == "Обмен":
                try:
                    float(self.le_p_m_balance.text().replace(",", "."))
                except:
                    QMessageBox.information(self, "Ошибка баланса", "Проверьте значения!", QMessageBox.Ok)
                    return False

                sql_values = []
                sql_values.append((self.le_p_m_worker_minus.whatsThis(), User().id(), self.le_p_m_reason_minus.whatsThis(), -float(self.le_p_m_balance.text().replace(",", ".")),
                                   self.de_p_m_date.date().toString(Qt.ISODate), self.le_p_m_note_minus.text(), 0, None))

                sql_values.append((self.le_p_m_worker_plus.whatsThis(), User().id(), self.le_p_m_reason_plus.whatsThis(), self.le_p_m_balance.text().replace(",", "."),
                                   self.de_p_m_date.date().toString(Qt.ISODate), self.le_p_m_note_plus.text(), 0, None))

                query = """INSERT INTO pay_worker (Worker_Id, Worker_Id_Insert, Reason_Id, Balance, Date_In_Pay, Date_Input, Note, Pay, Date_Pay)
                            VALUES (%s, %s, %s, %s, %s, NOW(), %s, %s, %s)"""
                sql_info = my_sql.sql_many(query, sql_values)
                if "mysql.connector.errors" in str(type(sql_info)):
                        QMessageBox.critical(self, "Ошибка sql сохр. обмен", sql_info.msg, QMessageBox.Ok)
                        return False

                self.close()
                self.destroy()

            elif self.menu_text == "Продажа материала":
                if self.need_weight:
                    sql_connect_transaction = my_sql.sql_start_transaction()

                    query = """INSERT INTO pay_worker (Worker_Id, Worker_Id_Insert, Reason_Id, Balance, Date_In_Pay, Date_Input, Note, Pay, Date_Pay)
                            VALUES (%s, %s, %s, -%s, %s, NOW(), %s, %s, %s)"""
                    sql_value = (self.le_work_bye.whatsThis(), User().id(), self.le_reason_bye.whatsThis(), self.le_sum.text().replace(",", "."),
                                 self.de_bye_date.date().toString(Qt.ISODate), self.le_note_bye.text(), 0, None)
                    id_pay = my_sql.sql_change_transaction(sql_connect_transaction, query, sql_value)
                    if "mysql.connector.errors" in str(type(id_pay)):
                            QMessageBox.critical(self, "Ошибка sql сохр. вычета продажи ткани", id_pay.msg, QMessageBox.Ok)
                            return False

                    change_value = float(self.le_weight.text().replace(",", "."))
                    material_id = self.le_material_name.whatsThis()

                    while change_value > 0:
                        # получим первый остаток на складе
                        # Проверяем первое кол-во на складе
                        query = """SELECT material_balance.Id, material_balance.BalanceWeight, MIN(material_supply.Data)
                                      FROM material_balance
                                        LEFT JOIN material_supplyposition ON material_balance.Material_SupplyPositionId = material_supplyposition.Id
                                        LEFT JOIN material_supply ON material_supplyposition.Material_SupplyId = material_supply.Id
                                      WHERE material_supplyposition.Material_NameId = %s AND material_balance.BalanceWeight > 0"""
                        sql_balance_material = my_sql.sql_select_transaction(sql_connect_transaction, query, (material_id, ))
                        if "mysql.connector.errors" in str(type(sql_balance_material)):
                            QMessageBox.critical(self, "Ошибка sql Не смог получить остаток ткани на балансе", sql_balance_material.msg, QMessageBox.Ok)
                        if sql_balance_material[0][1] > change_value:
                            # Если в этом балансе больше чем нам надо
                            take_material_value = change_value
                            change_value = 0
                        else:
                            # Если в этом балансе меньше чем нам надо
                            take_material_value = sql_balance_material[0][1]
                            change_value -= float(sql_balance_material[0][1])
                        # Забираем возможное кол-во
                        query = "UPDATE material_balance SET BalanceWeight = BalanceWeight - %s WHERE Id = %s"
                        sql_info = my_sql.sql_change_transaction(sql_connect_transaction, query, (take_material_value, sql_balance_material[0][0]))
                        if "mysql.connector.errors" in str(type(sql_info)):
                            my_sql.sql_rollback_transaction(sql_connect_transaction)
                            QMessageBox.critical(self, "Ошибка sql Не смог забрать ткань с баланса", sql_info.msg, QMessageBox.Ok)

                        # Делаем запись о заборе ткани с баланса склада
                        query = """INSERT INTO transaction_records_material (Supply_Balance_Id, Balance, Date, Note, Cut_Material_Id, Code)
                                    VALUES (%s, %s, SYSDATE(), %s, NULL, 150)"""
                        txt_note = "Продажа ткани работнику № %s, ID вычета %s" % (self.le_work_bye.whatsThis(), id_pay)
                        sql_values = (sql_balance_material[0][0], -take_material_value, txt_note)
                        sql_info = my_sql.sql_change_transaction(sql_connect_transaction, query, sql_values)
                        if "mysql.connector.errors" in str(type(sql_info)):
                            my_sql.sql_rollback_transaction(sql_connect_transaction)
                            QMessageBox.critical(self, "Ошибка sql Не смог добавить запись", sql_info.msg, QMessageBox.Ok)

                    my_sql.sql_commit_transaction(sql_connect_transaction)
                else:
                    QMessageBox.information(self, "Ошибка веса", "У вас что то не так с весом!", QMessageBox.Ok)

            else:
                QMessageBox.critical(self, "Ошибка", "Непонятный элемент меню", QMessageBox.Ok)
                return False

        else:
            if self.menu_text == "Доплата":
                query = """UPDATE pay_worker SET Worker_Id = %s, Reason_Id = %s, Balance = %s, Date_In_Pay = %s, Note = %s WHERE Id = %s"""
                sql_value = (self.le_work_plus.whatsThis(), self.le_reason_plus.whatsThis(), self.le_value_plus.text().replace(",", "."),
                             self.de_plus_date.date().toString(Qt.ISODate), self.le_note_plus.text(), self.id)
                sql_info = my_sql.sql_change(query, sql_value)
                if "mysql.connector.errors" in str(type(sql_info)):
                        QMessageBox.critical(self, "Ошибка sql сохр. доплаты", sql_info.msg, QMessageBox.Ok)
                        return False

            elif self.menu_text == "Вычет":
                query = """UPDATE pay_worker SET Worker_Id = %s, Reason_Id = %s, Balance = -%s, Date_In_Pay = %s, Note = %s WHERE Id = %s"""
                sql_value = (self.le_work_minus.whatsThis(), self.le_reason_minus.whatsThis(), self.le_value_minus.text().replace(",", "."),
                             self.de_minus_date.date().toString(Qt.ISODate), self.le_note_minus.text(), self.id)
                sql_info = my_sql.sql_change(query, sql_value)
                if "mysql.connector.errors" in str(type(sql_info)):
                        QMessageBox.critical(self, "Ошибка sql сохр. вычета", sql_info.msg, QMessageBox.Ok)
                        return False
            else:
                QMessageBox.critical(self, "Ошибка", "Непонятный элемент меню", QMessageBox.Ok)
                return False

        self.main.ui_update()
        self.close()
        self.destroy()