def dropdiam(self): conn = connectSQLite() cur = conn.cursor() try: ###################this is different from filled ############ if (self.LE_Diam is not None or self.LE_Diam != ""): self.LE_Diam.clear() ############# description = self.LE_DescMat.text() cur.execute( "SELECT Diam FROM Mat WHERE Name = ? ORDER BY Diam ASC", (description, )) desc = cur.fetchall() listdesc = [] for dsc in desc: for d in dsc: listdesc.append(str(d)) cmpt = QCompleter(listdesc) cmpt.setCaseSensitivity(0) cmpt.setCompletionMode(QCompleter.UnfilteredPopupCompletion) self.LE_Diam.setCompleter(cmpt) self.LE_Diam.editingFinished.connect(self.remplircodemat) except: QMessageBox.about( self, "Warning", "Error. Not matching material designation. Please select a designation proposed in the dropdown list. " ) closeSQLite(conn)
def populerdescdiam( self ): # rempli designation et diametre du materiel lorsque code est entree conn = connectSQLite() cur = conn.cursor() try: self.LE_DescMat.clear() self.LE_Diam.clear() code = self.LE_Mat.text() cur.execute("SELECT Name, Diam FROM Mat WHERE Number = ?", (code, )) Code = cur.fetchone() desc = str(Code[0]) diam = str(Code[1]) self.LE_DescMat.setText(desc) self.LE_Diam.setText(diam) except: QMessageBox.about( self, "Warning", "Error. Could not find matching Designation and diameter for this material code. Please try another one." ) closeSQLite(conn)
def populerdescdiam(self): conn = connectSQLite() cur = conn.cursor() try: self.LE_DescMat.clear() ### If it's not none or not blank then clear it if (self.LE_Diam.text() != "" and self.LE_Diam.text() is not None): self.LE_Diam.clear() ###Above is different from VueNewPart### code = self.LE_Mat.text() cur.execute("SELECT Name, Diam FROM Mat WHERE Number = ?", (code, )) Code = cur.fetchone() desc = str(Code[0]) diam = str(Code[1]) self.LE_DescMat.setText(desc) self.LE_Diam.setText(diam) except: QMessageBox.about( self, "Warning", "Error. Could not find matching Designation and diameter for this material code. Please try another one." ) closeSQLite(conn)
def remplircodemat( self ): # remplie code mat apres que la designation + diam soit rentrer conn = connectSQLite() cur = conn.cursor() description = self.LE_DescMat.text() diam = self.LE_Diam.text() # print("description: ", description) # print("diam: ", diam) cur.execute("SELECT Number FROM Mat WHERE Name = ? AND Diam = ?", (description, diam)) Code = cur.fetchone() code = str(Code[0]) self.LE_Mat.setText(code) ####I removed this popup. The systemhook will catch the error and print to console########## # QMessageBox.about(self, "Warning", "Error. To select a material code from its description and diameter you have to select one option of the dropdown list provided.") #Point user to field in question if it is blank if (self.LE_DescMat.text() is None or self.LE_DescMat.text() == ""): self.LE_DescMat.setFocus() if (self.LE_Mat.text() is None or self.LE_Mat.text() == ""): self.LE_Mat.setFocus() closeSQLite(conn)
def UpdateTableOperation(self): # conn = MSACES.CES.connectSQLite() conn = connectSQLite() cur = conn.cursor() a = self.TableOperation.currentRow() a = int(a) number = self.TableOperation.item(a,0).text() b = self.TableOperation.currentColumn() b = int(b) if b == 0 : QMessageBox.warning(self, "Warning", "This field is protected, your modification will not be saved. Please choose the -add operation- option to create a new operation") return elif b == 1 : tabcolumn = "Name" elif b == 2 : tabcolumn = "Min" toedit = self.TableOperation.item(a,b).text() cur.execute("UPDATE Op SET %s = ? WHERE Number = ?" %tabcolumn,(toedit,number) ) conn.commit() QMessageBox.about(self, "Confimation", "Operation updated.") # MSACES.CES.closeSQLite(conn) closeSQLite(conn)
def UpdateTable(self): a = self.tableMM.currentRow() a = int(a) number = self.tableMM.item(a, 0).text() b = self.tableMM.currentColumn() b = int(b) if b == 0: QMessageBox.warning( self, "Warning", "This field is protected, your modification will not be saved. Please choose the -add raw material- option to create a new number" ) return elif b == 1: tabcolumn = "Diam" elif b == 2: tabcolumn = "Cost" elif b == 3: tabcolumn = "Spec" elif b == 4: tabcolumn = "Type" toedit = self.tableMM.item(a, b).text() if toedit != "Steel" and toedit != "NiBase" and toedit != "Alum" and toedit != "Titan": QMessageBox.warning( self, "Warning", "Wrong input, this field must be one of the following type : Steel, NiBase, Alum or Titan" ) return elif b == 5: tabcolumn = "Form" toedit = self.tableMM.item(a, b).text() if toedit != "Bar" and toedit != "Coil" and toedit != "Hex": QMessageBox.warning( self, "Warning", "Wrong input, this field must be one of the following form : Bar, Coil or Hex" ) return elif b == 6: tabcolumn = "Groupe" toedit = self.tableMM.item(a, b).text() if toedit != "B" and toedit != "C" and toedit != "D" and toedit != "E" and toedit != "F": QMessageBox.warning( self, "Warning", "Wrong input, this field must be one of the following form : B, C, D, E or F" ) return toedit = self.tableMM.item(a, b).text() conn = connectSQLite() cur = conn.cursor() cur.execute("UPDATE Mat SET %s = ? WHERE Number = ?" % tabcolumn, (toedit, number)) conn.commit() QMessageBox.about(self, "Confirmation", "Update done") closeSQLite(conn)
def __init__(self, parent): super(VueMaterialManagement, self).__init__(parent) self.setupUi(self) self.PB_SetAllCost.clicked.connect(self.setall) self.PB_SetFromTo.clicked.connect(self.setfromto) self.PB_EnterMat.clicked.connect(self.remplirmat) self.PB_NewRawMat.clicked.connect(self.addrawmat) self.PB_ShowAll.clicked.connect(self.showAllMat) conn = connectSQLite() cur = conn.cursor() cur.execute("SELECT DISTINCT Name FROM Mat ORDER BY Name ASC") name = cur.fetchall() listnum = [] for prt in name: for p in prt: listnum.append(str(p)) cmpt = QCompleter(listnum) cmpt.setCaseSensitivity(0) cmpt.setCompletionMode(QCompleter.UnfilteredPopupCompletion) self.LE_MatName.setCompleter(cmpt) cur.execute("SELECT MAX(Number) FROM Mat") number = cur.fetchone() nextnumber = str(number[0] + 1) self.LE_RawNumber.setText(nextnumber) closeSQLite(conn)
def setCompleters(self): conn = connectSQLite() cur = conn.cursor() #### try: cur.execute("SELECT Number FROM Op ORDER BY Number ASC") part = cur.fetchall() listnum = [] for prt in part: for p in prt: listnum.append(str(p)) cmpt = QCompleter(listnum) cmpt.setCaseSensitivity(0) cmpt.setCompletionMode(QCompleter.UnfilteredPopupCompletion) self.LE_CodeOp.setCompleter(cmpt) except Exception as ex: printError(ex) try: cur.execute("SELECT NAME FROM OP ORDER BY NAME ASC") desc = cur.fetchall() listdesc = [] for dsc in desc: for d in dsc: listdesc.append(str(d)) cmpt = QCompleter(listdesc) cmpt.setCaseSensitivity(0) cmpt.setCompletionMode(QCompleter.UnfilteredPopupCompletion) self.LE_DescriptionOp.setCompleter(cmpt) except Exception as ex: printError(ex) #### try: cur.execute("SELECT DISTINCT Name FROM Mat ORDER BY Name ASC") descmat = cur.fetchall() listdescmat = [] i = 0 while i <= len(descmat) - 1: a = str(descmat[i][0]) listdescmat.append(a) i = i + 1 cmpt = QCompleter(listdescmat) cmpt.setCaseSensitivity(0) cmpt.setCompletionMode(QCompleter.UnfilteredPopupCompletion) self.LE_DescMat.setCompleter(cmpt) except Exception as ex: printError(ex) closeSQLite(conn)
def loadOperations(self, setupcost, cost): if (not self.ops): print("operations is empty") return conn = connectSQLite() cur = conn.cursor() i = 0 # print("self.numOps: ", self.numOps) while i < self.numOps and self.numOps != 0: #-2 because Op1 isn't an op # print("Loading operation tab", i) # print("%s : self.ops[i]: %s "%(i, self.ops[i])) if self.ops[i] == '0' or self.ops[i] == '' or self.ops[ i] == None or self.ops[i] == '100': # print("i: ", i) # print("breaking: ", self.ops[i], i) break self.listop.append(self.ops[i]) # p = int(i) a2 = str(self.ops[i]) # print("a2: ", a2) if (int(a2) > 1100): break a2 = QtWidgets.QTableWidgetItem(a2) self.TableOp.setItem(i, 0, a2) pnum = str(self.ops[i]) # if (int(pnum) > 1100): #max in Synoptic is 1099 PN00080067-001 CNR Drill # break # print("pnum: ", pnum) cur.execute("SELECT Name FROM Op WHERE Number = ?", (pnum, )) Name = cur.fetchone() # print("Name: ", Name) a3 = str(Name[0]) a3 = QtWidgets.QTableWidgetItem(a3) self.TableOp.setItem(i, 1, a3) cur.execute( "SELECT %s,%s FROM Op WHERE Number = ?" % (setupcost, cost), (pnum, )) Cout = cur.fetchone() a4 = str(Cout[0]) a4 = QtWidgets.QTableWidgetItem(a4) self.TableOp.setItem(i, 2, a4) a5 = str(Cout[1]) a5 = QtWidgets.QTableWidgetItem(a5) self.TableOp.setItem(i, 3, a5) i = i + 1 closeSQLite(conn)
def test_getNumberOps(self): self.form.partnumber = "BACB30PN10-17" conn = connectSQLite() cur = conn.cursor() self.form.getNumberOps(cur) closeSQLite(conn) self.assertEqual(17, self.form.synopticNumOps)
def __init__(self, parent): super(VueOpManagement, self).__init__(parent) self.setupUi(self) # conn = MSACES.CES.connectSQLite() conn = connectSQLite() cur = conn.cursor() self.LE_ChooseOP.returnPressed.connect(self.remplirtable) ############CHANGED ?? ########## # self.LE_ChooseOP.currentIndexChanged.connect(self.remplirtable) self.PB_ValidateNewOp.clicked.connect(self.Addnewop) self.LookUpEditOp.clicked.connect(self.remplirtable) self.FillColumn.clicked.connect(self.fillColumn) self.FillRow.clicked.connect(self.fillRow) self.saveEdit.clicked.connect(self.saveChanges) self.setCompleters() cur.execute("SELECT MAX(Number) FROM OP") number = cur.fetchone() nextnumber = str(number[0]+1) self.LE_OpNumber.setText(nextnumber) # Table Operation fenetre 1 cur.execute("SELECT Number, Name, Min FROM Op") Op = cur.fetchall() nbligne = len(Op) self.TableOperation.setRowCount(nbligne) n = 0 while n <= len(Op)-1: a1 = str(Op[n][0]) a1 = QtWidgets.QTableWidgetItem(a1) self.TableOperation.setItem(n,0,a1) a2 = str(Op[n][1]) a2 = QtWidgets.QTableWidgetItem(a2) self.TableOperation.setItem(n,1,a2) a3 = str(Op[n][2]) a3 = QtWidgets.QTableWidgetItem(a3) self.TableOperation.setItem(n,2,a3) n = n+1 self.TableOperation.cellDoubleClicked.connect(self.UpdateTableOperation) # MSACES.CES.closeSQLite(conn) closeSQLite(conn)
def test_findMaterialInfo(self): # self.form.partnumber = "BACB30PN10-17" self.form.partMaterial = "600" conn = connectSQLite() cur = conn.cursor() self.form.findMaterialInfo(cur) closeSQLite(conn) self.assertEqual("INCO718--AMS5662/C50TF13", self.form.matnamespec)
def setall(self): name = self.LE_MatName.text() cost = self.LE_SetAllCost.text() conn = connectSQLite() cur = conn.cursor() cur.execute("UPDATE MAT SET Cost = ? WHERE Name = ?", (cost, name)) conn.commit() self.remplirmat() QMessageBox.about(self, "Confimation", "Cost updated") self.LE_SetAllCost.clear() closeSQLite(conn)
def remplirmat(self): self.tableMM.clearContents() name = self.LE_MatName.text() conn = connectSQLite() cur = conn.cursor() cur.execute("SELECT * FROM Mat WHERE Name = ? ORDER BY Diam ASC", (name, )) Mat = list(cur) nbligne = len(Mat) self.tableMM.setRowCount(nbligne) n = 0 while n <= len(Mat) - 1: a1 = str(Mat[n][0]) a1 = QtWidgets.QTableWidgetItem(a1) self.tableMM.setItem(n, 0, a1) a3 = str(Mat[n][2]) a3 = QtWidgets.QTableWidgetItem(a3) self.tableMM.setItem(n, 3, a3) a4 = str(Mat[n][3]) a4 = QtWidgets.QTableWidgetItem(a4) self.tableMM.setItem(n, 4, a4) a5 = str(Mat[n][4]) a5 = QtWidgets.QTableWidgetItem(a5) self.tableMM.setItem(n, 5, a5) a6 = str(Mat[n][5]) a6 = QtWidgets.QTableWidgetItem(a6) self.tableMM.setItem(n, 6, a6) a7 = str(Mat[n][6]) a7 = QtWidgets.QTableWidgetItem(a7) self.tableMM.setItem(n, 1, a7) a8 = str(Mat[n][7]) a8 = QtWidgets.QTableWidgetItem(a8) self.tableMM.setItem(n, 2, a8) n = n + 1 self.tableMM.cellDoubleClicked.connect(self.UpdateTable) closeSQLite(conn)
def test_findPartInfo(self): self.form.partnumber = "BACB30PN10-17" conn = connectSQLite() cur = conn.cursor() self.form.findPartInfo(cur) closeSQLite(conn) self.assertEqual("P.S", self.form.estimator) self.assertEqual("AP", self.form.partRev) self.assertEqual("12PT,FB,7185/8-18", self.form.partDesc) self.assertEqual("BP", self.form.partMfgSpec) self.assertEqual("**PASSIVATE**", self.form.partNote) self.assertEqual(600, self.form.partMaterial) self.assertEqual("09/17/2019", self.form.creationDate)
def setSearchPartNumberCompleter(self): conn = connectSQLite() cur = conn.cursor() cur.execute("SELECT PartNumber FROM Part ORDER BY PartNumber ASC") part = cur.fetchall() # print("part lookup from search: ", part) listpart = [] for prt in part: for p in prt: listpart.append(str(p)) cmpt = QCompleter(listpart) cmpt.setCaseSensitivity(0) self.LE_SearchPartNumber.setCompleter(cmpt) closeSQLite(conn)
def PBValidateOperation(self): try: conn = connectSQLite() cur = conn.cursor() partnumber = self.LE_PartNumber.text() description = self.LE_Description.text() revision = self.LE_Revision.text() mfgspec = self.LE_MfgSpec.text() mat = self.LE_Mat.text() headop = self.CB_HeadOp.currentText() diam = self.LE_Diam.text() shank = self.LE_Shank.text() # note = self.LE_Note.text() #QTextEdit uses different method than QLineEdit note = self.LE_Note.toPlainText() estby = self.CB_EstBy.currentText() dateest = self.LE_EstDate.text() stud = self.stud nut = self.nut nobid = self.nobid slugBool = self.isOverrideSlug #1 or 0 because sqlite doesn't have booleans HVBool = self.isOverrideHV #1 or 0 because sqlite doesn't have booleans #QTextEdit uses different method than QLineEdit nobidnote = self.txtNoBid.toPlainText() nut = int(nut) stud = int(stud) nobid = int(nobid) print("") except Exception as ex: printError(ex) ##New- was missing in 1.7.3 try: partWeight = self.LE_Diam_2.text() headVol = self.LE_Diam_3.text() except Exception as ex: printError(ex) ################ self.updateInsertPart(cur, conn, partnumber, description, revision, mfgspec, estby, dateest, mat, partWeight, diam, shank, headVol, headop, note, nut, stud, nobid, nobidnote, slugBool, HVBool) closeSQLite(conn)
def remplirtable(self): # conn = MSACES.CES.connectSQLite() conn = connectSQLite() cur = conn.cursor() name = self.LE_ChooseOP.text() # print("name: ", name) cur.execute("SELECT * FROM Op WHERE Name = ?",(name,)) EditOp = cur.fetchone() self.EditName.setText(name) # print("Edit Op: ", EditOp[0], EditOp[1],EditOp[2],EditOp[3]) minimum = str(EditOp[2]) op = str(EditOp[0]) unit = str(EditOp[3]) self.EditMin.setText(minimum) self.EditOp.setText(op) self.EditUnit.setText(unit) n = 0 while n <= 10: a1 = str(EditOp[n+4]) a1 = QtWidgets.QTableWidgetItem(a1) self.TableEditOp.setItem(n,0,a1) a2 = str(EditOp[n+11+4]) a2 = QtWidgets.QTableWidgetItem(a2) self.TableEditOp.setItem(n,1,a2) a3 = str(EditOp[n+22+4]) a3 = QtWidgets.QTableWidgetItem(a3) self.TableEditOp.setItem(n,2,a3) a3 = str(EditOp[n+33+4]) a3 = QtWidgets.QTableWidgetItem(a3) self.TableEditOp.setItem(n,3,a3) a4 = str(EditOp[n+44+4]) a4 = QtWidgets.QTableWidgetItem(a4) self.TableEditOp.setItem(n,4,a4) n = n+1 self.TableEditOp.cellDoubleClicked.connect(self.UpdateTableEditOp) closeSQLite(conn)
def remplircode(self): conn = connectSQLite() cur = conn.cursor() try: desc = self.LE_DescriptionOp.text() desc = str(desc) cur.execute("SELECT Number FROM Op WHERE NAME = ?", (desc, )) Code = cur.fetchone() code = str(Code[0]) self.LE_CodeOp.setText(code) except: QMessageBox.about( self, "Warning", "Error. The code corrsponding to this description cannot be found. " ) closeSQLite(conn)
def remplirdescription(self): conn = connectSQLite() cur = conn.cursor() try: code = self.LE_CodeOp.text() code = str(code) cur.execute("SELECT Name FROM Op WHERE Number = ?", (code, )) Desc = cur.fetchone() desc = str(Desc[0]) self.LE_DescriptionOp.setText(desc) except: QMessageBox.about( self, "Warning", "Error. The description corrsponding to this operation code cannot be found. " ) closeSQLite(conn)
def filledpw(self): # print("VueNewPart filledpw go") conn = connectSQLite() cur = conn.cursor() try: self.unsafe_filledpw(cur) except Exception as ex: printError(ex) # print("VueNewPart filledpw except") checkList = [self.LE_Mat, self.LE_Diam, self.LE_Shank] for frog in checkList: #Only complete this once so the focus is set to the most recent text box if (frog.text() is None or frog.text() == ""): frog.setFocus() break closeSQLite(conn)
def setfromto(self): name = self.LE_MatName.text() cost = self.LE_SetFromTo.text() diamfrom = self.LE_SetFromDiam.text() diamto = self.LE_SetToDiam.text() conn = connectSQLite() cur = conn.cursor() cur.execute( "UPDATE MAT SET Cost = ? WHERE Name = ? AND Diam > ? AND Diam < ?", (cost, name, diamfrom, diamto)) conn.commit() self.remplirmat() QMessageBox.about(self, "Confimation", "Cost updated") self.LE_SetFromTo.clear() self.LE_SetFromDiam.clear() self.LE_SetToDiam.clear() closeSQLite(conn)
def UpdateTableEditOp(self): # conn = MSACES.CES.connectSQLite() conn = connectSQLite() cur = conn.cursor() name = self.LE_ChooseOP.text() a = self.TableEditOp.currentRow() a = int(a) num = str(a+1) if a <= 9 : tabcolumn = str("DG"+num) elif a == 10: tabcolumn = "SU" b = self.TableEditOp.currentColumn() b = int(b) if b == 0 : g = "B" elif b == 1: g = "C" elif b == 2: g = "D" elif b == 3: g = "E" elif b == 4: g = "F" tabcolumn = str(tabcolumn+g) toedit = self.TableEditOp.item(a,b).text() cur.execute("UPDATE Op SET %s = ? WHERE Name = ?" %tabcolumn,(toedit,name) ) conn.commit() QMessageBox.about(self, "Confimation", "Operation updated.") closeSQLite(conn)
def setCompleters(self): conn = connectSQLite() cur = conn.cursor() #set completer for unit box on Add New Operation tab unitList = list() unitList.append('pc') unitList.append('lb') unitCmpt = QCompleter(unitList) unitCmpt.setCaseSensitivity(0) unitCmpt.setCompletionMode(QCompleter.UnfilteredPopupCompletion) # self.LE_UnitOp.setCompleter(unitCmpt) self.LE_UnitOp.addItem('pc') self.LE_UnitOp.addItem('lb') self.LE_UnitOp.currentIndexChanged.connect(self.setUnitMeasure) ###Set completer for Choose your operation on Edit Operation Cost cur.execute("SELECT Name FROM Op ORDER BY Name ASC") part = cur.fetchall() listnum = [] for prt in part: for p in prt: listnum.append(str(p)) cmpt = QCompleter(listnum) cmpt.setCaseSensitivity(0) cmpt.setCompletionMode(QCompleter.UnfilteredPopupCompletion) self.LE_ChooseOP.setCompleter(cmpt) self.EditUnit.setCompleter(unitCmpt) closeSQLite(conn)
def addrawmat(self): cur.execute("SELECT MAX(Number) FROM Mat") number = cur.fetchone() nextnumber = str(number[0] + 1) number = self.LE_RawNumber.text() if number != nextnumber: number = nextnumber QMessageBox.warning( self, "Warning", "The number of the raw material has been automaticaly set to " + number + ".") name = self.LE_RawName.text() spec = self.LE_RawSpec.text() diam = self.LE_RawDiam.text() cost = self.LE_RawCost.text() rawtype = self.CB_Type.currentIndex() if rawtype == 0: rawtype = "Steel" elif rawtype == 1: rawtype = "NiBase" elif rawtype == 2: rawtype = "Alum" elif rawtype == 3: rawtype = "Titan" form = self.CB_Form.currentIndex() if form == 0: form = "Bar" elif form == 1: form = "Coil" elif form == 2: form = "Hex" group = self.CB_Group.currentIndex() if group == 0: group = "B" elif group == 1: group = "C" elif group == 2: group = "D" elif group == 3: group = "E" elif group == 4: group = "F" conn = connectSQLite() cur = conn.cursor() req = "INSERT INTO Mat(Number, Name , Spec, Type, Form, Groupe, Diam, Cost) VALUES (?,?,?,?,?,?,?,?)" cur.execute(req, (number, name, spec, rawtype, form, group, diam, cost)) conn.commit() name = self.LE_RawName.clear() spec = self.LE_RawSpec.clear() diam = self.LE_RawDiam.clear() cost = self.LE_RawCost.clear() QMessageBox.about( self, "Confirmation", "Raw Material number :" + number + "has been added successfully") newnextnumber = int(number) + 1 newnextnumber = str(newnextnumber) self.LE_RawNumber.setText(newnextnumber) closeSQLite(conn)
def Addnewop(self): conn = connectSQLite() cur = conn.cursor() number = self.LE_OpNumber.text() name = self.LE_OpName.text() minimum = self.LE_OpMin.text() try: unit = self.LE_UnitOp.text() except: unit = self.LE_UnitOp.currentText() dg1b = self.TableNewOp.item(0,0).text() dg2b = self.TableNewOp.item(1,0).text() dg3b = self.TableNewOp.item(2,0).text() dg4b = self.TableNewOp.item(3,0).text() dg5b = self.TableNewOp.item(4,0).text() dg6b = self.TableNewOp.item(5,0).text() dg7b = self.TableNewOp.item(6,0).text() dg8b = self.TableNewOp.item(7,0).text() dg9b = self.TableNewOp.item(8,0).text() dg10b = self.TableNewOp.item(9,0).text() sub = self.TableNewOp.item(10,0).text() dg1c = self.TableNewOp.item(0,1).text() dg2c = self.TableNewOp.item(1,1).text() dg3c = self.TableNewOp.item(2,1).text() dg4c = self.TableNewOp.item(3,1).text() dg5c = self.TableNewOp.item(4,1).text() dg6c = self.TableNewOp.item(5,1).text() dg7c = self.TableNewOp.item(6,1).text() dg8c = self.TableNewOp.item(7,1).text() dg9c = self.TableNewOp.item(8,1).text() dg10c = self.TableNewOp.item(9,1).text() suc = self.TableNewOp.item(10,1).text() dg1d = self.TableNewOp.item(0,2).text() dg2d = self.TableNewOp.item(1,2).text() dg3d = self.TableNewOp.item(2,2).text() dg4d = self.TableNewOp.item(3,2).text() dg5d = self.TableNewOp.item(4,2).text() dg6d = self.TableNewOp.item(5,2).text() dg7d = self.TableNewOp.item(6,2).text() dg8d = self.TableNewOp.item(7,2).text() dg9d = self.TableNewOp.item(8,2).text() dg10d = self.TableNewOp.item(9,2).text() sud = self.TableNewOp.item(10,2).text() dg1e = self.TableNewOp.item(0,3).text() dg2e = self.TableNewOp.item(1,3).text() dg3e = self.TableNewOp.item(2,3).text() dg4e = self.TableNewOp.item(3,3).text() dg5e = self.TableNewOp.item(4,3).text() dg6e = self.TableNewOp.item(5,3).text() dg7e = self.TableNewOp.item(6,3).text() dg8e = self.TableNewOp.item(7,3).text() dg9e = self.TableNewOp.item(8,3).text() dg10e = self.TableNewOp.item(9,3).text() sue = self.TableNewOp.item(10,3).text() dg1f = self.TableNewOp.item(0,4).text() dg2f = self.TableNewOp.item(1,4).text() dg3f = self.TableNewOp.item(2,4).text() dg4f = self.TableNewOp.item(3,4).text() dg5f = self.TableNewOp.item(4,4).text() dg6f = self.TableNewOp.item(5,4).text() dg7f = self.TableNewOp.item(6,4).text() dg8f = self.TableNewOp.item(7,4).text() dg9f = self.TableNewOp.item(8,4).text() dg10f = self.TableNewOp.item(9,4).text() suf = self.TableNewOp.item(10,4).text() req = "INSERT INTO Op(Number, Name , Min, Unit, DG1B ,DG2B, DG3B, DG4B, DG5B, DG6B, DG7B, DG8B, DG9B, DG10B, SUB, DG1C ,DG2C, DG3C, DG4C, DG5C, DG6C, DG7C, DG8C, DG9C, DG10C, SUC, DG1D ,DG2D, DG3D, DG4D, DG5D, DG6D, DG7D, DG8D, DG9D, DG10D, SUD, DG1E ,DG2E, DG3E, DG4E, DG5E, DG6E, DG7E, DG8E, DG9E, DG10E, SUE, DG1F ,DG2F, DG3F, DG4F, DG5F, DG6F, DG7F, DG8F, DG9F, DG10F, SUF) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)" cur.execute(req, (number,name,minimum,unit,dg1b,dg2b,dg3b,dg4b,dg5b,dg6b,dg7b,dg8b,dg9b,dg10b,sub,dg1c,dg2c,dg3c,dg4c,dg5c,dg6c,dg7c,dg8c,dg9c,dg10c,suc,dg1d,dg2d,dg3d,dg4d,dg5d,dg6d,dg7d,dg8d,dg9d,dg10d,sud,dg1e,dg2e,dg3e,dg4e,dg5e,dg6e,dg7e,dg8e,dg9e,dg10e,sue,dg1f,dg2f,dg3f,dg4f,dg5f,dg6f,dg7f,dg8f,dg9f,dg10f,suf)) conn.commit() num = str(number) QMessageBox.about(self, "Confimation", "The operation "+ num + " has been added successfully.") cur.execute("SELECT MAX(Number) FROM OP") number = cur.fetchone() nextnumber = str(number[0]+1) self.LE_OpNumber.setText(nextnumber) self.LE_OpName.clear() self.LE_OpMin.clear() self.LE_UnitOp.clear() ii = 0 while ii <= 4 : iii = 0 while iii <= 10 : self.TableNewOp.item(iii,ii).clear() iii=iii+1 ii = ii+1 closeSQLite(conn)
def __init__(self, parent, partnumber, description, revision, mfgspec, estby, date, mat, headop, diam, shank, note, ops, isNut, isStud, isNoBid, NoBidNote, slugBool, HVBool): # print("VueEditPartFilled ") super(VueEditPartFilled, self).__init__(parent) conn = connectSQLite() cur = conn.cursor() self.setupUi(self) ##Implement some OOP best practices: self.partnumber = partnumber self.description = description self.revision = revision self.mfgspec = mfgspec self.estby = estby self.date = date self.mat = mat self.headop = headop self.diam = diam self.shank = shank self.note = note self.ops = ops # print("ops: ", ops) # print("typeops3:", type(ops)) self.isNut = isNut self.isStud = isStud self.isNoBid = isNoBid #### self.nut = 0 #self.nut is like self.isOverrideSlug holds 1/0 for true/false self.stud = 0 self.nobid = 0 self.numOps = 0 #default print("VueEditPartFilled slugBool: ", slugBool) print("VueEditPartFilled HVBool: ", HVBool) self.isOverrideSlug = slugBool self.isOverrideHV = HVBool self.setCompleters() self.setPressedAction() self.listop = list() e = datetime.now() e.strftime('%m/%d/%Y') self.LE_EstDate.setText(e.strftime('%m/%d/%Y')) self.nbligne = 0 ##Init UI Fields self.LE_PartNumber.setText(partnumber) self.LE_Description.setText(description) self.LE_Revision.setText(revision) self.LE_MfgSpec.setText(mfgspec) self.CB_EstBy.setCurrentIndex(estby) # print("mat: ", mat) self.LE_Mat.setText(mat) self.CB_HeadOp.setCurrentIndex(headop) # print("headop: ", headop) self.LE_Diam.setText(diam) self.LE_Shank.setText(shank) self.LE_Note.setText(note) self.LE_NumeroOp.setText("1") ##Initialize Operation add to row 1 self.PB_ValidateOperation.clicked.connect(self.PBValidateOperation) self.PB_SaveOperation.clicked.connect(self.PBSaveProgress) self.PB_AddOp.clicked.connect(self.PBAddOp) self.PB_RemoveOp.clicked.connect(self.PBRemoveOp) self.TableOp.clicked.connect(self.on_click) self.isNut = isNut self.isStud = isStud self.isNoBid = isNoBid self.NoBidNote = NoBidNote self.initStudNut() self.initNoBidBox() self.initOverrideBox() self.setNoBidText(self.NoBidNote) # self.txtNoBid.setText(self.NoBidNote) try: cur.execute("SELECT Groupe FROM Mat WHERE Number = ?", (mat, )) Groupe = cur.fetchone() group = str(Groupe[0]) except: group = None try: Diam = float(diam) except: Diam = None try: if (group and Diam): setupcost, cost = trouvercout(group, Diam) except Exception as ex: print("ex: ", ex) print("group and/or diam required") setupcost = None cost = None try: # self.numOps = VueNewPartFilled.getNumberOfOps(self) self.numOps = self.getNumberOfOps() # numOps = VueNewPartFilled.getNumberOfOps(self, ops) except Exception as ex: print("getNumberOfOps ex: ", ex) print("cannot calculate number of operations") try: setupcost, cost = trouvercout(group, Diam) except: print("cannot calculate setupcost, cost") ###This is supposed to load Operation tab table with stuff if (self.ops and setupcost and cost and self.numOps): # self.loadOperations(ops,setupcost, cost, numOps) # self.loadOperations() self.loadOperations(setupcost, cost) else: print("cannot load operations") ###Load autocalculated stuff like part weight, head vol, slug length if (mat and diam and shank): self.filledpw() else: print("cannot fill in part weight") closeSQLite(conn)
def PBRemoveOp(self): conn = connectSQLite() cur = conn.cursor() try: rowposition = self.LE_NumeroOp.text() deleterow = int(rowposition) - 1 except Exception as ex: printError(ex) try: del self.listop[deleterow] except IndexError as ex: QMessageBox.about( self, "Warning", "Error. The row you want to delete doesn't exist. ") printError(ex) return self.TableOp.clearContents() try: mat = self.LE_Mat.text() diam = self.LE_Diam.text() ii = 0 while ii <= len(self.listop) - 1: code = str(self.listop[ii]) cur.execute("SELECT Name FROM Op WHERE Number = ?", (code, )) Description = cur.fetchone() description = str(Description[0]) a2 = code a2 = QtWidgets.QTableWidgetItem(a2) self.TableOp.setItem(ii, 0, a2) a3 = description a3 = QtWidgets.QTableWidgetItem(a3) self.TableOp.setItem(ii, 1, a3) cur.execute("SELECT Groupe FROM Mat WHERE Number = ?", (mat, )) Groupe = cur.fetchone() group = str(Groupe[0]) Diam = float(diam) setupcost, cost = trouvercout(group, Diam) pnum = str(code) cur.execute( "SELECT %s,%s FROM Op WHERE Number = ?" % (setupcost, cost), (pnum, )) Cout = cur.fetchone() a4 = str(Cout[0]) a4 = QtWidgets.QTableWidgetItem(a4) self.TableOp.setItem(ii, 2, a4) a5 = str(Cout[1]) a5 = QtWidgets.QTableWidgetItem(a5) self.TableOp.setItem(ii, 3, a5) ii = ii + 1 except Exception as ex: printError(ex) closeSQLite(conn)
def PBSaveProgress(self): # print("validate entering") conn = connectSQLite() cur = conn.cursor() try: try: partnumber = self.LE_PartNumber.text() except: QMessageBox.about(self, "Warning", "A valid part number is required to save. ") return try: description = self.LE_Description.text() except: description = None try: revision = self.LE_Revision.text() except: revision = None try: mfgspec = self.LE_MfgSpec.text() except: mfgspec = None try: mat = self.LE_Mat.text() except: mat = None try: headop = self.CB_HeadOp.currentText() except: headop = None try: diam = self.LE_Diam.text() except: diam = None try: shank = self.LE_Shank.text() except: shank = None try: # note = self.LE_Note.text() note = self.LE_Note.toPlainText() except: note = None try: estby = self.CB_EstBy.currentText() except: estby = None try: dateest = self.LE_EstDate.text() except: dateest = None try: nut = self.nut except: nut = 0 try: stud = self.stud except: stud = 0 try: nobid = self.nobid except: nobid = 0 try: nobidnote = self.txtNoBid.text() except: nobidnote = None try: slugBool = self.isOverrideSlug except: slugBool = 0 try: HVBool = self.isOverrideHV except: HVBool = 0 except Exception as ex: printError(ex) ##New- was missing in 1.7.3 try: partWeight = self.LE_Diam_2.text() print("partWeight: ", partWeight) except: partWeight = None try: headVol = self.LE_Diam_3.text() print("headVol: ", headVol) except: headVol = None self.updateInsertPart(cur, conn, partnumber, description, revision, mfgspec, estby, dateest, mat, partWeight, diam, shank, headVol, headop, note, nut, stud, nobid, nobidnote, slugBool, HVBool) closeSQLite(conn)
def PBGoToEditPart(self): # print("PBGoEditTopart") try: PartNumber = self.LE_SearchPartNumber.text() conn = connectSQLite() cur = conn.cursor() cur.execute( "SELECT Description, Rev, MfgSpec, EstBy, Date, Material, Weight, Diam, Shank, HdVol, Heading, Note , Op1,Op2,Op3,Op4,Op5,Op6,Op7,Op8,Op9,Op10,Op11,Op12,Op13,Op14,Op15,Op16,Op17,Op18,Op19,Op20,Op21,Op22,Op23,Op24,Op25,Op26,Op27,Op28,Op29,Op30,Op31,Op32,Op33,Op34,Op35,Op36,Op37,Op38,Op39,Op40 FROM Part WHERE PartNumber = ?", (PartNumber, )) part = cur.fetchall() # print("part: ", part) if part == []: QMessageBox.warning( self, "Warning", "Please select a part that belong to the existing list of the completer." ) return try: Description = str(part[0][0]) # print("Description: ", Description) except: Description = None try: Revision = str(part[0][1]) # print("Rev: ", Revision) except: Revision = None try: MfgSpec = str(part[0][2]) except: MfgSpec = None try: EstBy = str(part[0][3]) if EstBy == 'PS': EstBy = int(0) elif EstBy == 'DD': EstBy = int(1) elif EstBy == 'SO': EstBy = int(2) else: EstBy = int(0) except: EstBy = None try: Date = str(part[0][4]) except: Date = None try: Mat = str(part[0][5]) except: Mat = None try: Diameter = str(part[0][7]) except: Diameter = None try: Schank = str(part[0][8]) except: Schank = None try: HeadOp = str(part[0][10]) if HeadOp == 'HotHead': HeadOp = int(0) elif HeadOp == 'ColdHead': HeadOp = int(1) elif HeadOp == 'ColdHeadUpset': HeadOp = int(2) elif HeadOp == 'HotHeadUpset': HeadOp = int(3) elif HeadOp == 'MachinePart': HeadOp = int(4) except: HeadOp = None try: Note = str(part[0][11]) except: Note = None try: Ops = list() Ops.clear() iii = 12 while iii <= 51: # print("iii: ", iii) if part[0][iii] == 0: print("breaking") break Ops.append(str(part[0][iii])) iii = iii + 1 except: Ops = None try: ##Check if it's a nut, if not nut assume it is bolt self.nut = part[0][52] self.translateNut(self.nut) # print("nut: ", self.nut) # print("isNut: ", self.isNut) except: self.isNut = False try: ##Check if it's a nut, if not nut assume it is bolt self.stud = part[0][53] self.translateStud(self.stud) # print("stud: ", self.stud) # print("isStud: ", self.isStud) except: self.isStud = False try: self.nobid = part[0][54] self.translateNoBid(self.nobid) except: self.isNoBid = False try: self.NoBidNote = part[0][55] except: self.NoBidNote = None try: self.slugBool = part[0][56] except: self.slugBool = 0 try: self.HVBool = part[0][57] except: self.HVBool = 0 vue = MSACES_NewPart.VueEditPartFilled( self, PartNumber, Description, Revision, MfgSpec, EstBy, Date, Mat, HeadOp, Diameter, Schank, Note, Ops, self.isNut, self.isStud, self.isNoBid, self.NoBidNote, self.slugBool, self.HVBool) # vue.showMaximized() vue.show() self.close() except Exception as ex: printError(ex) closeSQLite(conn)