def __init__(self, args=None, parent=None): super(dlg, self).__init__(parent) self.setAttribute(Qt.Qt.WA_DeleteOnClose) if parent: self.db = parent.db else: self.db = 'c:/ted/mis.sql3' xrisiLabel = QtGui.QLabel(u"Χρήση:") xrisi = widgets.DbComboBox(dbutils.getDbRows("SELECT id, xrisi FROM m12_xrisi", self.db)) xrisiLabel.setBuddy(xrisi) perLabel = QtGui.QLabel(u"Περίοδος Μισθοδοσίας:") per = widgets.DbComboBox(dbutils.getDbRows("SELECT id, periodp FROM m12_period", self.db)) perLabel.setBuddy(per) typLabel = QtGui.QLabel(u"Τύπος Μισθοδοσίας:") typ = widgets.DbComboBox(dbutils.getDbRows("SELECT id, mistp FROM m12_mist", self.db)) typLabel.setBuddy(typ) bcalc = QtGui.QPushButton(u'Υπολογισμός') def calcmis(): from utils import calcMisthodosia as cm imnia = datetime.datetime.now().isoformat()[:10] #print self.cb_1dict[self.ui.cb_1.currentText().__str__()] xrid = xrisi.getValue() perid = per.getValue() mistid= typ.getValue() cm.makeMis(xrid, perid, mistid, imnia, self.db) self.accept() bcalc.clicked.connect(calcmis) glayout = QtGui.QGridLayout() glayout.addWidget(xrisiLabel,0,0) glayout.addWidget(xrisi,0,1) glayout.addWidget(perLabel,1,0) glayout.addWidget(per,1,1) glayout.addWidget(typLabel,2,0) glayout.addWidget(typ,2,1) vlayout = QtGui.QVBoxLayout() vlayout.addLayout(glayout) vlayout.addWidget(bcalc) self.setLayout(vlayout) self.setWindowTitle(u'Υπολογισμός Μισθοδοσίας')
def automaticInsert(xrisi_id,period_id,db): from utils import variusSQL xrisi = dbutils.getDbSingleVal("SELECT xrisi FROM m12_xrisi WHERE id='%s'" % xrisi_id, db) period = dbutils.getDbSingleVal("SELECT period FROM m12_period WHERE id='%s'" % period_id, db) print xrisi_id, period_id par = dbutils.getDbOneRow(isValSQL %(xrisi,period), db) if par: print u'Έχουν γίνει εγγραφές για την περίοδο %s %s' % (xrisi,period) return False arr = dbutils.getDbRows(variusSQL.InsertParousiesSQL % (xrisi,period,xrisi,period), db) if not arr: print u'Δεν υπάρχουν εργαζόμενοι στην περίοδο %s %s' % (xrisi,period) return False for el in arr: for c in el: print c, print '' par_id = dbutils.commitToDb(insParSQL % (xrisi_id, period_id), db) insArr = [] for el in arr: insArr.append(dbutils.commitToDb(insPardSQL % (par_id,el[0],1,0),db)) print insArr
def makeApd(xrisi,trimino,db): ''' 1. Συγκέντρωση στοιχείων εταιρείας 2. Συγκέντρωση στοιχείων εργαζομένων 3. Συγκέντρωση στοιχείων μισθοδοσιών ''' xrid = adb.getDbSingleVal("SELECT id FROM m12_xrisi WHERE xrisi='%s'" % xrisi, db) h = adb.getDbOneRow(sql0 % (xrid,trimino), db) arr = adb.getDbRows(sql1 % (xrid,trimino), db) if not h: return 'Error' if not arr: return 'Error' l0, l1, l2, l3 = lApd() doc = td.egrDoc([l0, l1,l2,l3]) doc.addLine(0, [u'',u'',u'',u'',u'',u'',h[0],tu.caps(h[1]),tu.caps(h[2]),tu.caps(h[3]),tu.caps(h[4]),h[5],h[6],tu.caps(h[7]),tu.caps(h[8]),h[9],tu.caps(h[10]),h[11],h[12],h[13],h[12],u'',u'',u'',tu.nowToStr(),u'',u'']) ergno=0 for lin in arr: if ergno == int(lin[2]): pass else: ergno = int(lin[2]) doc.addLine(1, [u'',lin[3],lin[4],tu.caps(lin[5]),tu.caps(lin[6]),tu.caps(lin[7]),tu.caps(lin[8]),tu.dateTostr(lin[9]),lin[10]]) doc.addLine(2,[u'',u'',lin[11],u'',u'',u'',lin[12],u'',lin[20],lin[21],lin[22],u'',u'',lin[19],lin[13],lin[14],lin[15],lin[16],lin[17],lin[18],u'',u'',u'',lin[18]]) doc.addLine(3,[u'',]) return doc.__str__()
def makeModel(db=None): if not db: db = 'C:/ted/mis.sql3' arr = getDbRows(sqla,db) n0=n1=n2='' farr = [] #arr = arr * 100 #Για δοκιμές με μεγάλες τιμές Array for el in arr: if n0 <> el[0]: farr.append([el[0],'0',['','',0,0,0,0]]) n0 = el[0] n1 = '' n2 = '' if n1 <> el[1]: farr.append([el[1],el[0],['','',0,0,0,0]]) n1 = el[1] n2 = '' if n2 <> el[2]: farr.append([el[2],el[1],['','',0,0,0,0]]) n2 = el[2] farr.append([el[3],el[2],[el[3],el[4],el[5],el[6],el[7],el[8]]]) e = {'0':Node(u'root',None,['','',dec(0),dec(0),dec(0),dec(0)])} for el in farr: e[el[0]] = Node(el[0],e[el[1]],el[2]) return SceneGraphModel(e['0'],[u'Χρήση / Εργαζόμενος',u'Ειδικότητα',u'Αποδοχές',u'ΙΚΑ',u'Πληρωτέο',u'Ικα εργαζομένου'])
def __init__(self, args=None, parent=None): super(dlg, self).__init__(parent) self.setAttribute(Qt.Qt.WA_DeleteOnClose) self.ui = ui_tables.Ui_Dialog() self.ui.setupUi(self) # Εδώ γεμίζουμε to CBox με τα ονόματα των πινάκων prothema = 'm12_' arr = getDbRows("SELECT name FROM sqlite_master WHERE type = 'table' AND name LIKE '%s%%' ORDER BY name" % prothema,parent.db) for el in arr: self.ui.c_tables.addItem(el[0]) self.db = QtSql.QSqlDatabase.addDatabase("QSQLITE") self.db.setDatabaseName(parent.db) self.db.open() self.model = QtSql.QSqlRelationalTableModel(self,self.db) self.model.setEditStrategy(QtSql.QSqlTableModel.OnFieldChange) self.model.setTable(arr[0][0]) self.model.select() #self.view = self.ui.tb_table #QtGui.QTableView() self.ui.tb_table.setModel(self.model) self.makeConnections()
def populateTableWidget(tableWidget,sql,headers,db,colTypes=[],colWidths =[]): ''' Function that rus sql on database db and fills the tablewidget with returning values ''' def strItem(strv): st = '%s' % strv item = QtGui.QTableWidgetItem(st) return item def numItem(no): if isNum(no): no = '%s' % no no = no.replace(',','.') item = QtGui.QTableWidgetItem(QtCore.QString("%L1").arg(float(no),0,"f",2)) else: item = strItem(no) item.setTextAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignVCenter) return item def setType(val,typos=0): if typos == 0: #text return strItem(val) elif typos == 1: #Number return numItem(val) else: return val def setLine(line,typ=0): rc = tableWidget.rowCount() tableWidget.setRowCount(rc+1) colNo = 0 for col in line: if colTypes == []: tableWidget.setItem(rc,colNo,setType(col,typ)) else: tableWidget.setItem(rc,colNo,setType(col,colTypes[colNo])) colNo += 1 def setColWidth(): for i in range(len(colWidths)): tableWidget.setColumnWidth(i,colWidths[i]) tableWidgetDefaults(tableWidget) tableWidget.setSelectionMode(QtGui.QAbstractItemView.SingleSelection) tableWidget.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows) tableWidget.setRowCount(0) lines = dbu.getDbRows(sql,db) tableWidget.setColumnCount(len(headers)) tableWidget.setHorizontalHeaderLabels(headers) tableWidget.setColumnHidden(0,True) for line in lines: setLine(line) if colWidths == []: tableWidget.resizeColumnsToContents() else: setColWidth()
def __init__(self, args=None, parent=None): super(dlg, self).__init__(parent) self.setAttribute(Qt.Qt.WA_DeleteOnClose) if parent: self.db = parent.db else: self.db = None #'c:/ted/mis.sql3' xrisiLabel = QtGui.QLabel(u"Χρήση:") xrisi = widgets.DbComboBox(dbutils.getDbRows("SELECT id, xrisi FROM m12_xrisi", self.db)) xrisiLabel.setBuddy(xrisi) perLabel = QtGui.QLabel(u"Περίοδος Παρουσιών:") per = widgets.DbComboBox(dbutils.getDbRows("SELECT id, periodp FROM m12_period", self.db)) perLabel.setBuddy(per) bcalc = QtGui.QPushButton(u'Υπολογισμός') def calcmis(): if not self.db: return xrid = xrisi.getValue() perid = per.getValue() automaticInsert(xrid,perid, self.db) self.accept() bcalc.clicked.connect(calcmis) glayout = QtGui.QGridLayout() glayout.addWidget(xrisiLabel,0,0) glayout.addWidget(xrisi,0,1) glayout.addWidget(perLabel,1,0) glayout.addWidget(per,1,1) vlayout = QtGui.QVBoxLayout() vlayout.addLayout(glayout) vlayout.addWidget(bcalc) self.setLayout(vlayout) self.setWindowTitle(u'Αυτόματη εισαγωγή παρουσιών')
def __init__(self, tableName, db, parameterdb): self.db = db self._sqlTable = "SELECT id, tname, tper FROM tbl WHERE tname='%s'" % tableName self._tname = dbutils.getDbOneRow(self._sqlTable, parameterdb) self._sqlFields = ( "SELECT fname, fper, ftyp, frequired, fsql, ftitles, sqlUpdate FROM tbl_d WHERE tbl_id='%s'" % self._tname[0] ) self._fieldNames = dbutils.getDbRows(self._sqlFields, parameterdb) self.numberOfFields = len(self._fieldNames) self.tableLabel = self._tname[2] self.tableName = self._tname[1] self.sqlCreate()
def fmyEtoys(etos,rundate,db): from utils import dbutils as dbu from utils.tedutils import dec as d xrisiId = dbu.getDbSingleVal("SELECT id from m12_xrisi WHERE xrisi='%s'" % etos, db) cd = dbu.getDbOneRow("SELECT cop,ono,pat,cotyp,afm,dra,pol,odo,num,tk FROM m12_co INNER JOIN m12_cotyp ON m12_cotyp.id=m12_co.cotyp_id",db) #Company Data co = { 'eponymia':u'%s %s' % (cd[0],cd[1]), 'AFM':u'%s' % cd[4], 'Antikeimeno':u'%s' % cd[5], 'Adress':u'%s %s %s %s' % (cd[6],cd[7],cd[8],cd[9]), 'Tel':u'' } ed = dbu.getDbRows(sqlergData1 % xrisiId, db) # Ergazomenoi Data l0, l1, l2 , l3 = lfmy() doc = td.egrDoc([l0,l1,l2,l3]) doc.addLine(0, ['','',etos+'1231',etos,'']) doc.addLine(1, ['',etos,cd[0],cd[1],cd[2],cd[3],cd[4],cd[5],cd[6],cd[7],cd[8],cd[9],'']) doc.addLine(2,[u'',u'',u'',u'',u'',u'',u'',u'']) vls = [] for l in ed: fpa = d(l[11]/0.985) doc.addLine(3,['',l[1],'',l[2],l[3],l[4],l[5],l[6],l[7],l[8],l[9],l[10],fpa,l[11],l[13],'']) vl = { 'Apo':u'1/1/%s' % etos, 'Eos':u'31/12/%s' % etos, 'Onomatep':u'%s %s' % (l[3],l[2]), 'Patronymo':u'%s' % l[4], 'AdrErg':u'%s, %s %s, %s' % (l[5],l[6],l[7],l[8]), 'TelErg':u'', 'Eid':u'%s'% l[14], 'AFMErg':u'%s' % l[1], 'Doy':u'', 'At':u'', 'ApodType':u'Μισθοί', 'AkApod':u'%s'% gr0(l[8]), 'Kratiseis':u'%s'% gr0(l[9]), 'SynoloKrat':u'%s'% gr0(l[9]), 'Katharo':u'%s' % gr0(l[10]), 'Analogei':u'%s' % gr0(fpa), 'Parakrat':u'%s' % gr0(l[11]), 'Hmnia':u'%s' % rundate, 'eea' :u'%s' % gr0(l[13]) } vls.append(vl) return doc.__str__(),co,vls
def __init__(self,misNo,pdfName,db): QtGui.QDialog.__init__(self) self.setAttribute(Qt.Qt.WA_DeleteOnClose) head = adb.getDbOneRow(sqlHeader % misNo, db) footd = adb.getDbOneRow(sqlFooter,db) if int(head[4]) == 1: h1 = head[2] else: h1 = head[3] title = u'Μισθοδοσία για την περίοδο : %s %s' % (h1,head[1]) title2 = u'Τύπος : %s' % head[3] foot = u'%s ΑΦΜ: %s ΔΟΥ: %s' % (footd[1],footd[6],footd[7]) hlabels = [u'Ονοματεπώνυμο',u'Ειδικότητα',u'Ημ/σθιο',u'Μέρες',u'Αποδοχές', u'ΙΚΑ Εργ/νου',u'ΙΚΑ Εργοδότη',u'ΙΚΑ',u'ΦΜΥ',u'Eιδ.Επ. Αληλεγγ.',u'Kρατήσεις Eργ/νου',u'Πληρωτέο'] data = adb.getDbRows(sql1 % misNo,db) colSizes=[20,14,7,7,8,8,8,8,7,7,7,8] colTypes=[ 0,0,2,1,2,2,2,2,2,2,2,2] colAlign=[ 0,0,1,1,2,2,2,2,2,2,2,2] colSum =[ 0,0,0,1,1,1,1,1,1,1,1,1] f ={'orientation' :1, 'pdfName' :pdfName, 'fontFamily' :'Helvetica', 'ReportHeader1':title, 'ReportHeader2':title2, 'ReportHeader3':u'', 'headerLabels':hlabels, 'columnSizes' :colSizes, 'columnToSum' :colSum, 'columnTypes' :colTypes, 'columnAlign' :colAlign, 'footerLine' :False, 'footerText' :foot, 'footerPageNumberText':u'Σελίδα', 'data' :data } self.rep = qttr.qtTableReport(f) tstButton = QtGui.QPushButton('test') tstButton.clicked.connect(self.onClick) layout = QtGui.QHBoxLayout() layout.addWidget(tstButton) self.setLayout(layout)
def __init__(self,tableName,parameterDb): self._sqlTable = "SELECT id, tname, tper FROM tbl WHERE tname='%s'" % tableName self._tname = dbutils.getDbOneRow(self._sqlTable,parameterDb) self._sqlFields = "SELECT fname, fper, ftyp, frequired, fsql, ftitles, sqlUpdate FROM tbl_d WHERE tbl_id='%s'" % self._tname[0] self._fields=['id',] self._headers=['id',] self._colTypes=['text',] self._isRequired=[0,] self._fkeySql=['',] self._fkeyTitles=['',] self._fsqlUpdate=['',] for row in dbutils.getDbRows(self._sqlFields, parameterDb): self._fields.append(row[0]) self._headers.append(row[1]) self._colTypes.append(row[2]) self._isRequired.append(row[3]) self._fkeySql.append(row[4]) self._fkeyTitles.append(row[5]) self._fsqlUpdate.append(row[6])
def populateFormFields(self): rowVals = dbutils.getDbRows('SELECT * FROM m12_pard WHERE m12_pard.par_id=3', 'c:/ted/mis.sql3') if rowVals: for rowVal in rowVals: self.addNewLine() for i in range(self.columnCount()): if self.dataProvider._colTypes[i] == 'date': yr,mn,dt = rowVal[i].split('-') qd = QtCore.QDate() qd.setDate(int(yr),int(mn),int(dt)) #self.masterFields[i].setDate(qd) self.cellWidget(self.rowCount()-1,i).setDate(qd) elif self.dataProvider._colTypes[i] == 'dec': self.cellWidget(self.rowCount()-1,i).setValue(rowVal[i]) elif self.dataProvider._colTypes[i] == 'fkey': self.cellWidget(self.rowCount()-1,i).idValue = str(rowVal[i]) if self.dataProvider._fsqlUpdate[i]: sqlForField = self.dataProvider._fsqlUpdate[i] % rowVal[i] sqlWhere = '' else: sqlForField = self.dataProvider._fkeySql[i] if 'WHERE' in sqlForField: sqlWhere = " AND id=%s" % rowVal[i] else: sqlWhere = " WHERE id=%s" % rowVal[i] fkSql = sqlForField + sqlWhere print 'Line 176 : fksql = %s' % fkSql v = dbutils.getDbOneRow(fkSql, 'c:/ted/mis.sql3') self.cellWidget(self.rowCount()-1,i).setText(v[1]) elif self.dataProvider._colTypes[i] == 'int': self.cellWidget(self.rowCount()-1,i).setValue(rowVal[i]) else: self.setItem(self.rowCount()-1,i,QtGui.QTableWidgetItem('%s' % rowVal[i]))
def makeRpt(misNo,pdfName,db): head = adb.getDbOneRow(sqlHeader % misNo, db) footd = adb.getDbOneRow(sqlFooter,db) if int(head[4]) == 1: h1 = head[2] else: h1 = head[3] title = u'Μισθοδοσία για την περίοδο : %s %s' % (h1,head[1]) title2 = u'Τύπος : %s' % head[3] foot = u'%s ΑΦΜ: %s ΔΟΥ: %s' % (footd[1],footd[6],footd[7]) titles = [u'AA',u'Ονοματεπώνυμο',u'Ειδικότητα',u'Ημ/σθιο',u'Μέρες',u'Αποδοχές', u'ΙΚΑ Εργ/νου',u'ΙΚΑ Εργοδότη',u'ΙΚΑ',u'ΦΜΥ',u'Eιδ.Επ. Αληλεγγ.',u'Kρατήσεις Eργ/νου',u'Πληρωτέο'] typeArr = ['t','tc','n','i','n','n','n','n','n','n','n','n'] sumArr = [ 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ] sizeArr = [20 ,150 ,80 ,50 ,40 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ] v = cr.makePrintTable(adb.getDbRows(sql1 % misNo,db),typeArr,sumArr,True) rep = cr.pdfReport(portrait=False) rep.makepdf(title,titles,v,sizeArr,pdfName,title2,foot) return True
def getFields(tableName,db): sql1 = "SELECT id, tname, tper FROM tbl WHERE tname='%s'" % tableName tname = dbutils.getDbOneRow(sql1,db) sql2 = "SELECT fname, fper, ftyp, frequired, fsql, ftitles FROM tbl_d WHERE tbl_id='%s'" % tname[0] ar = dbutils.getDbRows(sql2, db) return tname, ar