def fillColumn(self): a = self.TableEditOp.currentRow() b = self.TableEditOp.currentColumn() print("a: ", a) print("b: ", b) # 0, 0 # max is row 10, col 4 try: valueToCopy = self.TableEditOp.item(a,b).text() if (valueToCopy): n = (a+1) while n < 10: print('success') print("self.TableEditOp.item(b,0).text(): ", valueToCopy) # a1 = str(EditOp[n+4]) a1 = QtWidgets.QTableWidgetItem(valueToCopy) self.TableEditOp.setItem(n, b,a1) n = n + 1 except AttributeError : row = a+1 #Count from 1 not 0 for humans column = b+1 #Count from 1 not 0 for humans QMessageBox.about(self, "Warning", "Row %s, Column %s is empty." %(row, column)) except Exception as ex: printError(ex)
def PBNewPart(self): try: vue = MSACES_NewPart.VueNewPart(self) self.checkAuth(vue) except Exception as ex: printError(ex)
def on_click(self): try: row = self.TableOp.currentRow() row = row + 1 print("row5: ", row) row = str(row) self.LE_NumeroOp.setText(row) except Exception as ex: printError(ex)
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 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 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 saveChanges(self): conn = connectSQLite() cur = conn.cursor() name = self.EditName.text() minimum = self.EditMin.text() minimum = int(minimum) opnum = self.EditOp.text() opnum = int(opnum) #int required for SQL query unit = self.EditUnit.text() dg1b = self.TableEditOp.item(0,0).text() dg2b = self.TableEditOp.item(1,0).text() dg3b = self.TableEditOp.item(2,0).text() dg4b = self.TableEditOp.item(3,0).text() dg5b = self.TableEditOp.item(4,0).text() dg6b = self.TableEditOp.item(5,0).text() dg7b = self.TableEditOp.item(6,0).text() dg8b = self.TableEditOp.item(7,0).text() dg9b = self.TableEditOp.item(8,0).text() dg10b = self.TableEditOp.item(9,0).text() sub = self.TableEditOp.item(10,0).text() dg1c = self.TableEditOp.item(0,1).text() dg2c = self.TableEditOp.item(1,1).text() dg3c = self.TableEditOp.item(2,1).text() dg4c = self.TableEditOp.item(3,1).text() dg5c = self.TableEditOp.item(4,1).text() dg6c = self.TableEditOp.item(5,1).text() dg7c = self.TableEditOp.item(6,1).text() dg8c = self.TableEditOp.item(7,1).text() dg9c = self.TableEditOp.item(8,1).text() dg10c = self.TableEditOp.item(9,1).text() suc = self.TableEditOp.item(10,1).text() dg1d = self.TableEditOp.item(0,2).text() dg2d = self.TableEditOp.item(1,2).text() dg3d = self.TableEditOp.item(2,2).text() dg4d = self.TableEditOp.item(3,2).text() dg5d = self.TableEditOp.item(4,2).text() dg6d = self.TableEditOp.item(5,2).text() dg7d = self.TableEditOp.item(6,2).text() dg8d = self.TableEditOp.item(7,2).text() dg9d = self.TableEditOp.item(8,2).text() dg10d = self.TableEditOp.item(9,2).text() sud = self.TableEditOp.item(10,2).text() dg1e = self.TableEditOp.item(0,3).text() dg2e = self.TableEditOp.item(1,3).text() dg3e = self.TableEditOp.item(2,3).text() dg4e = self.TableEditOp.item(3,3).text() dg5e = self.TableEditOp.item(4,3).text() dg6e = self.TableEditOp.item(5,3).text() dg7e = self.TableEditOp.item(6,3).text() dg8e = self.TableEditOp.item(7,3).text() dg9e = self.TableEditOp.item(8,3).text() dg10e = self.TableEditOp.item(9,3).text() sue = self.TableEditOp.item(10,3).text() dg1f = self.TableEditOp.item(0,4).text() dg2f = self.TableEditOp.item(1,4).text() dg3f = self.TableEditOp.item(2,4).text() dg4f = self.TableEditOp.item(3,4).text() dg5f = self.TableEditOp.item(4,4).text() dg6f = self.TableEditOp.item(5,4).text() dg7f = self.TableEditOp.item(6,4).text() dg8f = self.TableEditOp.item(7,4).text() dg9f = self.TableEditOp.item(8,4).text() dg10f = self.TableEditOp.item(9,4).text() suf = self.TableEditOp.item(10,4).text() try: # print(type(opnum)) # print(type(minimum)) cur.execute('''UPDATE Op SET 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 = ? WHERE 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,opnum)) conn.commit() QMessageBox.about(self, "Confimation", "The operation "+ str(opnum) + " has been updated successfully.") except Exception as ex: printError(ex)
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)
def updateInsertPart(self, cur, conn, partnumber, description, revision, mfgspec, estby, dateest, mat, partWeight, diam, shank, headVol, headop, note, nut, stud, nobid, nobidnote, slugBool, HVBool): cur.execute("SELECT PartNumber FROM Part") comp = cur.fetchall() partnumber = str(partnumber) a = 0 try: for cmp in comp: for c in cmp: c = str(c) if partnumber == c: a = 1 break if a == 1: buttonReply = QMessageBox.question( self, 'Warning', "The part number you enter already exist. To update the existing part click Yes, to go back click No.", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if buttonReply == QMessageBox.Yes: cur.execute( "UPDATE Part SET Description = ?, Rev = ?, MfgSpec = ?, EstBy = ?, Date = ?, Material = ?, Diam = ?, Shank = ?, Heading = ?, Note = ?,isNut =?, isStud=?, isNoBid = ?, NoBidNote = ?, slugBool = ?, HVBool = ? WHERE PartNumber = ?", ( description, revision, mfgspec, estby, dateest, mat, diam, shank, headop, note, nut, stud, nobid, nobidnote, slugBool, HVBool, partnumber, )) conn.commit() VueNewPart.updateOps(self, cur, conn, partnumber) else: return elif a == 0: #######################need to add weight and hdvol #################### req = "INSERT INTO Part(PartNumber, Description, Rev, MfgSpec, EstBy, Date, Material,Weight, Diam, Shank,HdVol, Heading, Note,isNut,isStud,isNoBid,NoBidNote,slugBool, HVBool) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)" cur.execute( req, (partnumber, description, revision, mfgspec, estby, dateest, mat, partWeight, diam, shank, headVol, headop, note, nut, stud, nobid, nobidnote, slugBool, HVBool)) conn.commit() VueNewPart.updateOps(self, cur, conn, partnumber) except Exception as ex: printError(ex)
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 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 PBAddOp(self): try: conn = connectSQLite() cur = conn.cursor() mat = self.LE_Mat.text() diam = self.LE_Diam.text() rowposition = self.LE_NumeroOp.text() code = self.LE_CodeOp.text() description = self.LE_DescriptionOp.text() except Exception as ex: printError(ex) rowlabel = self.label_14.text() codelabel = self.label_15.text() desclabel = self.label_16.text() if mat == "": QMessageBox.warning(self, "Warning", "Please choose a valid material.") return if rowposition is None or rowposition == "": QMessageBox.warning(self, "Warning", rowlabel + " Must not be empty.") return if code is None or code == "": QMessageBox.warning(self, "Warning", codelabel + " Must not be empty.") return if description is None or description == "": QMessageBox.warning(self, "Warning", desclabel + " Must not be empty.") return ##Assert string conversion turns into int if (VueNewPart.RepresentsInt(rowposition)): index = int(rowposition) - 1 else: QMessageBox.warning( self, "Warning", rowposition + " Does not appear to be a number.") try: index = int(rowposition) - 1 self.listop.insert(index, code) self.TableOp.clearContents() 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) print("setupcost: ", setupcost) print("cost: ", cost) 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 ##Auto increment the row#/position counter after adding an operation rowposition = int(rowposition) + 1 rowposition = str(rowposition) self.LE_NumeroOp.setText(rowposition) except Exception as ex: printError(ex) closeSQLite(conn)
def PBOpManagement(self): try: vue = MSACES_OpManagement.VueOpManagement(self) self.checkAuth(vue) except Exception as ex: printError(ex)
def PBRawMat(self): try: vue = MSACES_MM.VueMaterialManagement(self) self.checkAuth(vue) except Exception as ex: printError(ex)
def PBStartQuote(self): try: vue = MSACES_Quote.VueQuote(self) vue.show() except Exception as ex: printError(ex)
def PBCreateFrom(self): try: vue = MSACES_SearchPart.VueSearchPart(self) self.checkAuth(vue) except Exception as ex: printError(ex)