def fileList(m_email, path): class bestandLijst(QDialog): def __init__(self, parent=None): super(bestandLijst, self).__init__(parent) self.getfile() self.contents = QTextEdit() def getfile(self): fname = QFileDialog.getOpenFileName(self, 'Herprinten bestanden', path) if fname[0].startswith(path[1:], 10): printFile(fname[0]) else: ongDir(m_email) def getfiles(self): QFileDialog.DontUseNativeDialog dlg = QFileDialog() dlg.setFileMode(QFileDialog.AnyFile) dlg.setFilter("Text files (*.txt)") filenames = path if dlg.exec_(): filenames = dlg.selectedFiles() f = open(filenames[0], 'r') with f: data = f.read() self.contents.setText(data) bestandLijst() hoofdMenu(m_email)
def invoerOK(m_email): msg = QMessageBox() msg.setStyleSheet("color: black; background-color: gainsboro") msg.setIcon(QMessageBox.Information) msg.setText('Invoer gelukt!') msg.setWindowTitle('RAAPLIJST') msg.exec_() hoofdMenu(m_email)
def geenBest(m_email): msg = QMessageBox() msg.setStyleSheet("color: black; background-color: gainsboro") msg.setWindowIcon(QIcon('./images/logos/logo.jpg')) msg.setIcon(QMessageBox.Information) msg.setText('Nog geen facturen aanwezig voor deze klant!') msg.setWindowTitle('Facturen printen') msg.exec_() hoofdMenu(m_email)
def eindModule(self, m_email): msg = QMessageBox() msg.setStyleSheet("color: black; background-color: gainsboro") msg.setWindowIcon(QIcon('./images/logos/logo.jpg')) msg.setIcon(QMessageBox.Information) msg.setText('Invoer afgebroken.') msg.setWindowTitle('BESTELLINGEN') msg.exec_() self.close() hoofdMenu(m_email)
def ongDir(m_email): msg = QMessageBox() msg.setStyleSheet("color: black; background-color: gainsboro") msg.setWindowIcon(QIcon('./images/logos/logo.jpg')) msg.setIcon(QMessageBox.Warning) msg.setText('Directory niet toegestaan!') msg.setWindowTitle('Geen bevoegdheid') msg.setWindowIcon(QIcon('./images/logos/logo.jpg')) msg.exec_() hoofdMenu(m_email)
def alertText(m_email): msg = QMessageBox() msg.setStyleSheet("color: black; background-color: gainsboro") msg.setWindowIcon(QIcon('./logos/logo.jpg')) msg.setFont(QFont("Arial", 10)) msg.setIcon(QMessageBox.Warning) msg.setText('Gegevens voor grafiek niet volledig!') msg.setWindowTitle('Warning message') msg.exec_() hoofdMenu(m_email)
def bestellingen(m_email): metadata = MetaData() accounts = Table('accounts', metadata, Column('accountID', Integer(), primary_key=True), Column('email', String, nullable=False)) klanten = Table( 'klanten', metadata, Column('klantID', Integer(), primary_key=True), Column('accountID', None, ForeignKey('accounts.accountID'))) orders_verkoop = Table( 'orders_verkoop', metadata, Column('ovbestelID', Integer, primary_key=True), Column('klantID', None, ForeignKey('klanten.klantID')), Column('ovbesteldatum', DateTime(), default=datetime.now), Column('datum_betaald', String)) orders_verkoop_artikelen = Table( 'orders_verkoop_artikelen', metadata, Column('ovaID', Integer, primary_key=True), Column('ovbestelID', None, ForeignKey('orders_verkoop.ovbestelID')), Column('artikelID', None, ForeignKey('artikelen.artikelID')), Column('ovaantal', Integer), Column('ovleverdatum', DateTime()), Column('verkoopprijs', Float), Column('retour', Float)) artikelen = Table('artikelen', metadata, Column('artikelID', Integer, primary_key=True), Column('artikelomschrijving', String(50)), Column('thumb_artikel', String(70))) engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() sel = select([accounts.c.accountID, accounts.c.email]).\ where(accounts.c.email == m_email) rpaccount = con.execute(sel).first() maccountnr = rpaccount[0] maccountnr = int(maccountnr) m_email = rpaccount[1] con = engine.connect() columns = [orders_verkoop.c.ovbestelID,\ orders_verkoop.c.ovbesteldatum, orders_verkoop.c.datum_betaald,\ orders_verkoop_artikelen.c.ovleverdatum,\ orders_verkoop_artikelen.c.ovaantal, artikelen.c.artikelID,\ artikelen.c.artikelomschrijving, orders_verkoop_artikelen.c.verkoopprijs,\ artikelen.c.thumb_artikel, orders_verkoop_artikelen.c.retour] bestellingen = select(columns).where(accounts.c.email == m_email) bestellingen = bestellingen.select_from(accounts.join(klanten)\ .join(orders_verkoop).join(orders_verkoop_artikelen)\ .join(artikelen)).order_by(orders_verkoop_artikelen.c.ovbestelID, orders_verkoop_artikelen.c.artikelID) if con.execute(bestellingen).fetchone(): rp_bestellingen = con.execute(bestellingen) else: geenOrders() hoofdMenu(m_email) toonBest(rp_bestellingen, m_email)
def JN(m_email): msgBox = QMessageBox() msgBox.setWindowIcon(QIcon('./images/logos/logo.jpg')) msgBox.setWindowTitle("Bereken Gegevens van Externe Werken") msgBox.setIcon(QMessageBox.Information) msgBox.setText("Wilt u de financiële gegevens van deze week berekenen?") msgBox.setStandardButtons(QMessageBox.Yes) msgBox.addButton(QMessageBox.No) msgBox.setDefaultButton(QMessageBox.Yes) if (msgBox.exec_() == QMessageBox.Yes): bereken(m_email) else: hoofdMenu(m_email)
def printGeg(m_email, filename): from sys import platform msgBox=QMessageBox() msgBox.setStyleSheet("color: black; background-color: gainsboro") msgBox.setWindowIcon(QIcon('./images/logos/logo.jpg')) msgBox.setWindowTitle("Printlijst te factureren werken") msgBox.setIcon(QMessageBox.Information) msgBox.setText("Wilt U de lijst van nog te factureren\nbedragen externe werken uitprinten?"); msgBox.setStandardButtons(QMessageBox.Yes) msgBox.addButton(QMessageBox.No) msgBox.setStyleSheet("color: black; background-color: gainsboro") msgBox.setDefaultButton(QMessageBox.Yes) if(msgBox.exec_() == QMessageBox.Yes): if platform == 'win32': os.startfile(filename, "print") else: os.system("lpr "+filename) printing() hoofdMenu(m_email) else: hoofdMenu(m_email)
def eigenLeverancier(m_email): metadata = MetaData() accounts = Table('accounts', metadata, Column('accountID', Integer, primary_key=True), Column('email', String)) lev_accounts = Table( 'lev_accounts', metadata, Column('levaccID', Integer(), primary_key=True), Column('accountID', None, ForeignKey('accounts.accountID')), Column('leverancierID', None, ForeignKey('leveranciers.leverancierID'))) leveranciers = Table('leveranciers', metadata, Column('leverancierID', Integer(), primary_key=True), Column('bedrijfsnaam', String), Column('rechtsvorm', String), Column('btwnummer', String), Column('kvknummer', String), Column('telnr', String), Column('postcode', String), Column('huisnummer', String), Column('toevoeging', String)) engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() sel = select([leveranciers]).where(and_(leveranciers.c.leverancierID ==\ lev_accounts.c.leverancierID, lev_accounts.c.accountID ==\ accounts.c.accountID , accounts.c.email == m_email)) rplev = con.execute(sel) class MyWindow(QDialog): def __init__(self, data_list, header, *args): QWidget.__init__( self, *args, ) self.setGeometry(50, 50, 1500, 900) self.setWindowTitle('Leveranciers opvragen') self.setWindowIcon(QIcon('./images/logos/logo.jpg')) self.setWindowFlags(self.windowFlags() | Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint) table_model = MyTableModel(self, data_list, header) table_view = QTableView() table_view.setModel(table_model) font = QFont("Arial", 10) table_view.setFont(font) table_view.resizeColumnsToContents() table_view.setSelectionBehavior(QTableView.SelectRows) #table_view.clicked.connect(showLeverancier) layout = QVBoxLayout(self) layout.addWidget(table_view) self.setLayout(layout) class MyTableModel(QAbstractTableModel): def __init__(self, parent, mylist, header, *args): QAbstractTableModel.__init__(self, parent, *args) self.mylist = mylist self.header = header def rowCount(self, parent): return len(self.mylist) def columnCount(self, parent): return len(self.mylist[0]) def data(self, index, role): veld = self.mylist[index.row()][index.column()] if not index.isValid(): return None elif role == Qt.TextAlignmentRole and (type(veld) == float or type(veld) == int): return Qt.AlignRight | Qt.AlignVCenter elif role != Qt.DisplayRole: return None if type(veld) == float: return '{:12.2f}'.format(veld) else: return veld def headerData(self, col, orientation, role): if orientation == Qt.Horizontal and role == Qt.DisplayRole: return self.header[col] return None header = ['Leveranciernummer','Bedrijfsnaam', 'Rechtsvorm','BTWnummer',\ 'KvKnummer','Telefoonnummer','Straat', 'Huisnummer','Toevoeging',\ 'Postcode','Woonplaats'] data_list = [] for row in rplev: mstrtplts = checkpostcode(row[6], int(row[7])) data_list += [(row[0],row[1],row[2],row[3],row[4],row[5],mstrtplts[0],int(row[7]),\ row[8],row[6], mstrtplts[1])] win = MyWindow(data_list, header) win.exec_() hoofdMenu(m_email)
def updateLeverancier(mlevnr, m_email): metadata = MetaData() leveranciers = Table('leveranciers', metadata, Column('leverancierID', Integer(), primary_key=True), Column('bedrijfsnaam', String), Column('rechtsvorm', String), Column('btwnummer', String), Column('kvknummer', String), Column('telnr', String), Column('huisnummer', String), Column('toevoeging', String), Column('postcode', String)) engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem') conn = engine.connect() sel = select([leveranciers]).\ where(leveranciers.c.leverancierID == mlevnr) rplev = conn.execute(sel).first() if rplev: mlevnr = rplev[0] mbedrnaam = rplev[1] mrechtsvorm = rplev[2] mbtwnr = rplev[3] mkvknr = rplev[4] mtelnr = rplev[5] mhuisnr = rplev[6] mhuisnr = int(mhuisnr) mtoev = rplev[7] mpostcode = rplev[8] import postcode mstrtplts = postcode.checkpostcode(mpostcode, mhuisnr) mstraat = mstrtplts[0] mplaats = mstrtplts[1] class Widget(QDialog): def __init__(self, parent=None): super(Widget, self).__init__(parent) self.setWindowTitle("Wijzigen leverancier") self.setWindowIcon(QIcon('./images/logos/logo.jpg')) self.setFont(QFont('Arial', 10)) self.Bedrijfsnaam = QLabel() q3Edit = QLineEdit() q3Edit.setText(mbedrnaam) q3Edit.setFixedWidth(540) q3Edit.setFont(QFont("Arial", 10)) q3Edit.textChanged.connect(self.q3Changed) reg_ex = QRegExp("^[^0-9]{1,50}$") input_validator = QRegExpValidator(reg_ex, q3Edit) q3Edit.setValidator(input_validator) self.Rechtsvorm = QLabel() q5Edit = QLineEdit() q5Edit.setText(mrechtsvorm) q5Edit.setFixedWidth(100) q5Edit.setFont(QFont("Arial", 10)) q5Edit.textChanged.connect(self.q5Changed) reg_ex = QRegExp("^[^0-9]{1,30}$") input_validator = QRegExpValidator(reg_ex, q5Edit) q5Edit.setValidator(input_validator) self.BTWnummer = QLabel() q2Edit = QLineEdit() q2Edit.setText(str(mbtwnr)) q2Edit.setDisabled(True) q2Edit.setFixedWidth(170) q2Edit.setStyleSheet( "QLineEdit { font-size: 10pt; font-family: Arial; color: black }" ) q2Edit.textChanged.connect(self.q2Changed) reg_ex = QRegExp("^[A-Za-z]{2}[0-9]{9}[Bb]{1}[0-9]{2}$") input_validator = QRegExpValidator(reg_ex, q2Edit) q2Edit.setValidator(input_validator) self.KvKnummer = QLabel() q4Edit = QLineEdit() q4Edit.setText(str(mkvknr)) q4Edit.setFixedWidth(110) q4Edit.setDisabled(True) q4Edit.setStyleSheet( "QLineEdit { font-size: 10pt; font-family: Arial; color: black }" ) q4Edit.textChanged.connect(self.q4Changed) reg_ex = QRegExp("^[0-9]{8}$") input_validator = QRegExpValidator(reg_ex, q4Edit) q4Edit.setValidator(input_validator) self.Straat = QLabel() q1Edit = QLineEdit() q1Edit.setText(mstraat) q1Edit.setFixedWidth(500) q1Edit.setDisabled(True) q1Edit.setStyleSheet( "QLineEdit { font-size: 10pt; font-family: Arial; color: black }" ) q1Edit.textChanged.connect(self.q1Changed) self.Huisnummer = QLabel() q7Edit = QLineEdit() q7Edit.setText(str(mhuisnr)) q7Edit.setFixedWidth(60) q7Edit.setAlignment(Qt.AlignRight) q7Edit.setFont(QFont("Arial", 10)) q7Edit.textChanged.connect(self.q7Changed) reg_ex = QRegExp("^[0-9]{1,5}$") input_validator = QRegExpValidator(reg_ex, q7Edit) q7Edit.setValidator(input_validator) self.Toevoeging = QLabel() q8Edit = QLineEdit('') q8Edit.setFixedWidth(80) q8Edit.setFont(QFont("Arial", 10)) q8Edit.textChanged.connect(self.q8Changed) q8Edit.setText(mtoev) reg_ex = QRegExp("^[A-Za-z0-9-#]{0,10}") input_validator = QRegExpValidator(reg_ex, q8Edit) q8Edit.setValidator(input_validator) self.Postcode = QLabel() q6Edit = QLineEdit() q6Edit.setText(mpostcode) q6Edit.setFixedWidth(80) font = QFont("Arial", 10) font.setCapitalization(QFont.AllUppercase) q6Edit.setFont(font) q6Edit.textChanged.connect(self.q6Changed) reg_ex = QRegExp("^[0-9]{4}[A-Za-z]{2}$") input_validator = QRegExpValidator(reg_ex, q6Edit) q6Edit.setValidator(input_validator) self.Woonplaats = QLabel() q15Edit = QLineEdit() q15Edit.setText(mplaats) q15Edit.setFixedWidth(400) q15Edit.setDisabled(True) q15Edit.setStyleSheet( "QLineEdit { font-size: 10pt; font-family: Arial; color: black }" ) q15Edit.textChanged.connect(self.q15Changed) self.Telefoonnr = QLabel() q13Edit = QLineEdit('') q13Edit.setFixedWidth(120) q13Edit.setFont(QFont("Arial", 10)) q13Edit.textChanged.connect(self.q13Changed) q13Edit.setText(mtelnr) reg_ex = QRegExp("^[0]{1}[0-9]{9}$") input_validator = QRegExpValidator(reg_ex, q13Edit) q13Edit.setValidator(input_validator) self.Leveranciernummer = QLabel() q14Edit = QLineEdit() q14Edit.setText(str(mlevnr)) q14Edit.setAlignment(Qt.AlignRight) q14Edit.setFixedWidth(120) q14Edit.setDisabled(True) q14Edit.setStyleSheet( "QLineEdit { font-size: 10pt; font-family: Arial; color: black }" ) q14Edit.textChanged.connect(self.q14Changed) grid = QGridLayout() grid.setSpacing(20) lbl = QLabel() pixmap = QPixmap('./images/logos/verbinding.jpg') lbl.setPixmap(pixmap) grid.addWidget(lbl, 0, 0) logo = QLabel() pixmap = QPixmap('./images/logos/logo.jpg') logo.setPixmap(pixmap) grid.addWidget(logo, 0, 1, 1, 2, Qt.AlignRight) self.setFont(QFont('Arial', 10)) grid.addWidget(QLabel('Leverancier wijzigingen'), 0, 1) grid.addWidget(QLabel(' *'), 1, 0) grid.addWidget(QLabel('Verplichte velden'), 1, 1) grid.addWidget(QLabel('Bedrijfsnaam *'), 2, 0) grid.addWidget(q3Edit, 2, 1, 1, 3) grid.addWidget(QLabel('Rechtsvorm *'), 3, 0) grid.addWidget(q5Edit, 3, 1) grid.addWidget(QLabel('BTWnummer'), 3, 1, 1, 1, Qt.AlignRight) grid.addWidget(q2Edit, 3, 2) grid.addWidget(QLabel('KvKnummer'), 5, 0) grid.addWidget(q4Edit, 5, 1) grid.addWidget(QLabel('Straat'), 6, 0) grid.addWidget(q1Edit, 6, 1, 1, 2) grid.addWidget(QLabel('Huisnummer *'), 7, 0) grid.addWidget(q7Edit, 7, 1) grid.addWidget(QLabel('Toevoeging'), 7, 1, 1, 1, Qt.AlignRight) grid.addWidget(q8Edit, 7, 2) grid.addWidget(QLabel('Postcode Woonplaats *'), 8, 0) grid.addWidget(q6Edit, 8, 1) grid.addWidget(q15Edit, 8, 1, 1, 2, Qt.AlignRight) grid.addWidget(QLabel('Telefoonnummer *'), 9, 0) grid.addWidget(q13Edit, 9, 1) grid.addWidget(QLabel('Leveranciernummer'), 10, 0) grid.addWidget(q14Edit, 10, 1) grid.addWidget( QLabel('\u00A9 2017 all rights reserved [email protected]'), 11, 1, 1, 1) cancelBtn = QPushButton('Sluiten') cancelBtn.clicked.connect(lambda: winzlevSluit(self, m_email)) applyBtn = QPushButton('Wijzigen') applyBtn.clicked.connect(self.accept) grid.addWidget(applyBtn, 10, 2, 1, 1, Qt.AlignRight) applyBtn.setFont(QFont("Arial", 10)) applyBtn.setFixedWidth(100) applyBtn.setStyleSheet( "color: black; background-color: gainsboro") grid.addWidget(cancelBtn, 9, 2, 1, 1, Qt.AlignRight) cancelBtn.setFont(QFont("Arial", 10)) cancelBtn.setFixedWidth(100) cancelBtn.setStyleSheet( "color: black; background-color: gainsboro") self.setLayout(grid) self.setGeometry(500, 100, 150, 150) def q3Changed(self, text): self.Bedrijfsnaam.setText(text) def q5Changed(self, text): self.Rechtsvorm.setText(text) def q2Changed(self, text): self.BTWnummer.setText(text) def q4Changed(self, text): self.KvKnummer.setText(text) def q1Changed(self, text): self.Straat.setText(text) def q7Changed(self, text): self.Huisnummer.setText(text) def q8Changed(self, text): self.Toevoeging.setText(text) def q6Changed(self, text): self.Postcode.setText(text) def q15Changed(self, text): self.Woonplaats.setText(text) def q13Changed(self, text): self.Telefoonnr.setText(text) def q14Changed(self, text): self.Leveranciernummer.setText(text) def returnBedrijfsnaam(self): return self.Bedrijfsnaam.text() def returnRechtsvorm(self): return self.Rechtsvorm.text() def returnBTWnummer(self): return self.BTWnummer.text() def returnKvKnummer(self): return self.KvKnummer.text() def returnStraat(self): return self.Straat.text() def returnHuisnummer(self): return self.Huisnummer.text() def returnToevoeging(self): return self.Toevoeging.text() def returnPostcode(self): return self.Postcode.text() def returnWoonplaats(self): return self.Woonplaats.text() def returnTelefoonnummer(self): return self.Telefoonnr.text() def returnLeveranciernummer(self): return self.Leveranciernummer.text() @staticmethod def getData(parent=None): dialog = Widget(parent) dialog.exec_() return [dialog.returnBedrijfsnaam(), dialog.returnRechtsvorm(),\ dialog.returnBTWnummer(), dialog.returnKvKnummer(),\ dialog.returnStraat(),dialog.returnHuisnummer(),\ dialog.returnToevoeging(), dialog.returnPostcode(),\ dialog.returnWoonplaats(), dialog.returnTelefoonnummer(),\ dialog.returnLeveranciernummer()] window = Widget() data = window.getData() if data[0]: mbedrnaam = (data[0]) else: mbedrnaam = rplev[1] if data[1]: mrechtsvorm = (data[1]).upper() else: mrechtsvorm = rplev[2] if data[2]: mbtwnr = data[2].upper() else: mbtwnr = rplev[3] if data[3]: mkvknr = data[3] else: mkvknr = rplev[4] if data[7]: mpostcode = (data[7]).upper() else: mpostcode = rplev[8] if data[5]: mhuisnr = data[5] else: mhuisnr = rplev[6] mhuisnr = int(mhuisnr) if data[6]: mtoev = '-' + data[6] else: mtoev = '' if data[9]: mtelnr = data[9] else: mtelnr = '' if not (len(mtelnr) == 10 or mtelnr == ''): foutTelnr() hoofdMenu(m_email) engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem') conn = engine.connect() u = update(leveranciers).where(leveranciers.c.leverancierID == mlevnr).\ values(bedrijfsnaam = mbedrnaam, rechtsvorm = mrechtsvorm, btwnummer =\ mbtwnr, kvknummer = mkvknr, telnr = mtelnr, postcode = mpostcode,\ huisnummer = mhuisnr, toevoeging = mtoev) conn.execute(u) conn.close() updateOK() zoekLeverancier(m_email)
def invArtikel(m_email): martikelnr = bepaalArtikelnr() ean = barcode.get('ean13', '800' + str(martikelnr), writer=ImageWriter()) # for barcode as png mbarcode = ean.get_fullcode() class Widget(QDialog): def __init__(self, parent=None): super(Widget, self).__init__(parent) self.setWindowTitle("Artikelen Invoeren") self.setWindowIcon(QIcon('./images/logos/logo.jpg')) self.setFont(QFont('Arial', 10)) self.Artikelnummer = QLabel() q1Edit = QLineEdit(str(martikelnr)) q1Edit.setFixedWidth(100) q1Edit.setDisabled(True) q1Edit.setFont(QFont("Arial", 10)) q1Edit.textChanged.connect(self.q1Changed) self.Artikelomschrijving = QLabel() q2Edit = QLineEdit() q2Edit.setFixedWidth(400) q2Edit.setFont(QFont("Arial", 10)) q2Edit.textChanged.connect(self.q2Changed) reg_ex = QRegExp("^.{1,50}$") input_validator = QRegExpValidator(reg_ex, q2Edit) q2Edit.setValidator(input_validator) self.Artikelprijs = QLabel() q3Edit = QLineEdit('0') q3Edit.setFixedWidth(100) q3Edit.setFont(QFont("Arial", 10)) q3Edit.textChanged.connect(self.q3Changed) reg_ex = QRegExp("^[-+]?[0-9]*\.?[0-9]+$") input_validator = QRegExpValidator(reg_ex, q3Edit) q3Edit.setValidator(input_validator) self.Artikelvoorraad = QLabel() q4Edit = QLineEdit('0') q4Edit.setFixedWidth(100) q4Edit.setFont(QFont("Arial", 10)) q4Edit.setDisabled(True) q4Edit.textChanged.connect(self.q4Changed) reg_ex = QRegExp("^[0-9]*\.?[0-9]+$") input_validator = QRegExpValidator(reg_ex, q4Edit) q4Edit.setValidator(input_validator) self.Artikeleenheid = QLabel() q5Edit = QComboBox() q5Edit.setFixedWidth(160) q5Edit.setStyleSheet("color: black; background-color: #D9E1D") q5Edit.setFont(QFont("Arial", 10)) q5Edit.addItem(' Maak uw keuze') q5Edit.addItem('stuk') q5Edit.addItem('100') q5Edit.addItem('meter') q5Edit.addItem('kg') q5Edit.addItem('liter') q5Edit.addItem('m²') q5Edit.addItem('m³') q5Edit.activated[str].connect(self.q5Changed) self.Minimumvoorraad = QLabel() q6Edit = QLineEdit('0') q6Edit.setFixedWidth(100) q6Edit.setFont(QFont("Arial", 10)) q6Edit.textChanged.connect(self.q6Changed) reg_ex = QRegExp("^[0-9]*\.?[0-9]+$") input_validator = QRegExpValidator(reg_ex, q6Edit) q6Edit.setValidator(input_validator) self.Bestelgrootte = QLabel() q7Edit = QLineEdit('0') q7Edit.setFixedWidth(100) q7Edit.setFont(QFont("Arial", 10)) q7Edit.textChanged.connect(self.q7Changed) reg_ex = QRegExp("^[0-9]*\.?[0-9]+$") input_validator = QRegExpValidator(reg_ex, q7Edit) q7Edit.setValidator(input_validator) self.Magazijnlocatie = QLabel() q8Edit = QLineEdit() q8Edit.setFixedWidth(100) q8Edit.setFont(QFont("Arial", 10)) q8Edit.textChanged.connect(self.q8Changed) self.Artikelgroep = QLabel() q9Edit = QLineEdit() q9Edit.setFixedWidth(200) q9Edit.setFont(QFont("Arial", 10)) q9Edit.textChanged.connect(self.q9Changed) self.Barcode = QLabel() q10Edit = QLineEdit(mbarcode) q10Edit.setFixedWidth(130) q10Edit.setFont(QFont("Arial", 10)) q10Edit.textChanged.connect(self.q10Changed) reg_ex = QRegExp('^[1-9]{1,13}$') input_validator = QRegExpValidator(reg_ex, q10Edit) q10Edit.setValidator(input_validator) self.Artikelthumbnail = QLabel() q11Edit = QLineEdit('./images/thumbs/') q11Edit.setFixedWidth(400) q11Edit.setFont(QFont("Arial", 10)) q11Edit.textChanged.connect(self.q11Changed) self.Artikelfoto = QLabel() q12Edit = QLineEdit('./images/') q12Edit.setFixedWidth(400) q12Edit.setFont(QFont("Arial", 10)) q12Edit.textChanged.connect(self.q12Changed) self.Categorie = QLabel() q13Edit = QComboBox() q13Edit.setFixedWidth(320) q13Edit.setFont(QFont("Arial", 10)) q13Edit.setStyleSheet("color: black; background-color: #D9E1D") q13Edit.addItem(' Maak uw keuze') q13Edit.addItem('1. Voorraadgestuurd < 3 weken.') q13Edit.addItem('2. Voorraadgestuurd < 12 weken') q13Edit.addItem('3. Voorraadgestuurd < 26 weken') q13Edit.addItem('4. Voorraadgestuurd < 52 weken') q13Edit.addItem('5. Reservering < 3 weken') q13Edit.addItem('6. Reservering < 6 weken') q13Edit.addItem('7. Reservering < 12 weken') q13Edit.addItem('8. Reservering < 24 weken') q13Edit.addItem('9. Reservering < 52 weken') q13Edit.activated[str].connect(self.q13Changed) grid = QGridLayout() grid.setSpacing(20) lbl = QLabel() pixmap = QPixmap('./images/logos/verbinding.jpg') lbl.setPixmap(pixmap) grid.addWidget(lbl, 1, 0) logo = QLabel() pixmap = QPixmap('./images/logos/logo.jpg') logo.setPixmap(pixmap) grid.addWidget(logo, 1, 2, 1, 1, Qt.AlignRight) self.setFont(QFont('Arial', 10)) grid.addWidget(QLabel('Nieuw artikel invoeren'), 1, 1) grid.addWidget(QLabel(' *'), 2, 0) grid.addWidget(QLabel('Verplichte velden'), 2, 1) grid.addWidget(QLabel('Artikelnummer'), 3, 0) grid.addWidget(q1Edit, 3, 1) grid.addWidget(QLabel('Artikelomschrijving *'), 4, 0) grid.addWidget(q2Edit, 4, 1) grid.addWidget(QLabel('Artikelprijs *'), 5, 0) grid.addWidget(q3Edit, 5, 1) grid.addWidget(QLabel('Artikelvoorraad'), 6, 0) grid.addWidget(q4Edit, 6, 1) grid.addWidget(QLabel('Artikeleenheid *'), 7, 0) grid.addWidget(q5Edit, 7, 1) grid.addWidget(QLabel('Minimumvoorraad *'), 8, 0) grid.addWidget(q6Edit, 8, 1) grid.addWidget(QLabel('Bestelgrootte *'), 9, 0) grid.addWidget(q7Edit, 9, 1) grid.addWidget(QLabel('Magazijnlocatie *'), 10, 0) grid.addWidget(q8Edit, 10, 1) grid.addWidget(QLabel('Artikelgroep *'), 11, 0) grid.addWidget(q9Edit, 11, 1) grid.addWidget(QLabel('Barcode'), 12, 0) grid.addWidget(q10Edit, 12, 1) grid.addWidget(QLabel('Artikelthumbnail'), 13, 0) grid.addWidget(q11Edit, 13, 1) grid.addWidget(QLabel('Artikelfoto'), 14, 0) grid.addWidget(q12Edit, 14, 1) grid.addWidget(QLabel('Categorie *'), 15, 0) grid.addWidget(q13Edit, 15, 1) grid.addWidget( QLabel('\u00A9 2017 all rights reserved [email protected]'), 16, 1) applyBtn = QPushButton('Invoeren') applyBtn.clicked.connect(self.accept) grid.addWidget(applyBtn, 15, 2) applyBtn.setFont(QFont("Arial", 10)) applyBtn.setFixedWidth(100) applyBtn.setStyleSheet( "color: black; background-color: gainsboro") cancelBtn = QPushButton('Sluiten') cancelBtn.clicked.connect(lambda: windowSluit(self, m_email)) grid.addWidget(cancelBtn, 14, 2) cancelBtn.setFont(QFont("Arial", 10)) cancelBtn.setFixedWidth(100) cancelBtn.setStyleSheet( "color: black; background-color: gainsboro") self.setLayout(grid) self.setGeometry(500, 100, 150, 100) def q1Changed(self, text): self.Artikelnummer.setText(text) def q2Changed(self, text): self.Artikelomschrijving.setText(text) def q3Changed(self, text): self.Artikelprijs.setText(text) def q4Changed(self, text): self.Artikelvoorraad.setText(text) def q5Changed(self, text): self.Artikeleenheid.setText(text) def q6Changed(self, text): self.Minimumvoorraad.setText(text) def q7Changed(self, text): self.Bestelgrootte.setText(text) def q8Changed(self, text): self.Magazijnlocatie.setText(text) def q9Changed(self, text): self.Artikelgroep.setText(text) def q10Changed(self, text): self.Barcode.setText(text) def q11Changed(self, text): self.Artikelthumbnail.setText(text) def q12Changed(self, text): self.Artikelfoto.setText(text) def q13Changed(self, text): self.Categorie.setText(text) def returnArtikelnummer(self): return self.Artikelnummer.text() def returnArtikelomschrijving(self): return self.Artikelomschrijving.text() def returnArtikelprijs(self): return self.Artikelprijs.text() def returnArtikelvoorraad(self): return self.Artikelvoorraad.text() def returnArtikeleenheid(self): return self.Artikeleenheid.text() def returnMinimumvoorraad(self): return self.Minimumvoorraad.text() def returnBestelgrootte(self): return self.Bestelgrootte.text() def returnMagazijnlocatie(self): return self.Magazijnlocatie.text() def returnArtikelgroep(self): return self.Artikelgroep.text() def returnBarcode(self): return self.Barcode.text() def returnArtikelthumbnail(self): return self.Artikelthumbnail.text() def returnArtikelfoto(self): return self.Artikelfoto.text() def returnCategorie(self): return self.Categorie.text() @staticmethod def getData(parent=None): dialog = Widget(parent) dialog.exec_() return [dialog.returnArtikelnummer(),dialog.returnArtikelomschrijving(),\ dialog.returnArtikelprijs(), dialog.returnArtikelvoorraad(),\ dialog.returnArtikeleenheid(), dialog.returnMinimumvoorraad(),\ dialog.returnBestelgrootte(), dialog.returnMagazijnlocatie(),\ dialog.returnArtikelgroep(), dialog.returnBarcode(),\ dialog.returnArtikelthumbnail(),dialog.returnArtikelfoto(),\ dialog.returnCategorie()] window = Widget() data = window.getData() martomschr = data[1] martprijs = data[2] if data[2]: martprijs = float(martprijs) else: martprijs = float(0) martvrd = data[3] if data[3]: martvrd = float(martvrd) else: martvrd = float(0) marteenh = data[4] martminvrd = data[5] if data[5]: martminvrd = float(martminvrd) else: martminvrd = float(0) martbestgr = data[6] if data[6]: martbestgr = float(martbestgr) else: martbestgr = float(0) mlocmag = data[7] martgr = data[8] mbarc = data[9] if data[9]: mbarc = int(mbarc) else: mbarc = int(0) mthumb = data[10] mfotoart = data[11] mcat = 0 if data[12]: mcat = data[12] mcat = int(mcat[0]) if martomschr and martprijs and marteenh and martminvrd and martbestgr and \ mlocmag and martgr and mcat: metadata = MetaData() artikelen = Table('artikelen', metadata, Column('artikelID', Integer(), primary_key=True), Column('artikelomschrijving', String), Column('artikelprijs', Float), Column('art_voorraad', Float), Column('art_eenheid', String(20)), Column('art_min_voorraad', Float), Column('art_bestelgrootte', Float), Column('locatie_magazijn', String(10)), Column('artikelgroep', String), Column('barcode', Integer), Column('thumb_artikel', String(70)), Column('foto_artikel', String(70)), Column('categorie', String(10)), Column('afmeting', String), Column('mutatiedatum', String)) engine = create_engine( 'postgresql+psycopg2://postgres@localhost/bisystem') martikelnr = bepaalArtikelnr() metadata.create_all(engine) insart = artikelen.insert().values(artikelID=martikelnr, barcode=mbarcode, artikelomschrijving=martomschr, artikelprijs=martprijs, art_voorraad=martvrd, art_eenheid=marteenh, art_min_voorraad=martminvrd, art_bestelgrootte=martbestgr, locatie_magazijn=mlocmag, artikelgroep=martgr, thumb_artikel=mthumb, foto_artikel=mfotoart, categorie=mcat, mutatiedatum=str( date.today())[0:10]) conn = engine.connect() conn.execute(insart) conn.close ean = barcode.get('ean13', '800' + str(martikelnr), writer=ImageWriter()) # for barcode as png if platform == 'win32': ean.save('.\\forms\\Barcodelabels\\' + str(martikelnr)) else: ean.save('./forms/Barcodelabels/' + str(martikelnr)) Invoer() invArtikel(m_email) else: geenGegevens() invArtikel(m_email) hoofdMenu(m_email)
def toonResult(m_email): metadata = MetaData() resultaten = Table('resultaten', metadata, Column('resID', Integer(), primary_key=True), Column('boekweek', String), Column('statusweek', String), Column('btotaal', Float), Column('wtotaal', Float), Column('betaald_bedrag', Float), Column('meerminderwerk', Float), Column('onderhandenwerk', Float), Column('aanneemsom', Float), Column('blonen', Float), Column('wlonen', Float), Column('bmaterialen', Float), Column('wmaterialen', Float), Column('bmaterieel', Float), Column('wmaterieel', Float), Column('bprojectkosten', Float), Column('wprojectkosten', Float), Column('binhuur', Float), Column('winhuur', Float), Column('bdiensten', Float), Column('wdiensten', Float), Column('bruto_winst', Float)) engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() selres = select([resultaten]).order_by(resultaten.c.boekweek, resultaten.c.statusweek) rpres = con.execute(selres) class window(QDialog): def __init__(self, data_list, header, *args): QWidget.__init__(self, *args,) self.setGeometry(100, 50, 1700, 900) self.setWindowTitle('Resultaten opvragen per boekweek') self.setWindowIcon(QIcon('./images/logos/logo.jpg')) self.setWindowFlags(self.windowFlags()| Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint) table_model = MyTableModel(self, data_list, header) table_view = QTableView() table_view.setModel(table_model) font = QFont("Arial", 10) table_view.setFont(font) table_view.resizeColumnsToContents() table_view.setSelectionBehavior(QTableView.SelectRows) table_view.clicked.connect(Resultaten) layout = QVBoxLayout(self) layout.addWidget(table_view) self.setLayout(layout) class MyTableModel(QAbstractTableModel): def __init__(self, parent, mylist, header, *args): QAbstractTableModel.__init__(self, parent, *args) self.mylist = mylist self.header = header def rowCount(self, parent): return len(self.mylist) def columnCount(self, parent): return len(self.mylist[0]) def data(self, index, role): if not index.isValid(): return None elif role != Qt.DisplayRole: return None return str(self.mylist[index.row()][index.column()]) def headerData(self, col, orientation, role): if orientation == Qt.Horizontal and role == Qt.DisplayRole: return self.header[col] return None header = ['ID','Boekweek','Statusweek','Totaal begroot','Totaal werkelijk','Betaald bedrag',\ 'Meer-/minderwerk','Onderhanden werk','Aanneemsom','Lonen begroot','Lonen werkelijk',\ 'Materialen begroot','Materialen werkelijk','Materiëel begroot','Materiëel werkelijk',\ 'Projectkosten begroot','Projectkosten werkelijk','Inhuur begroot','Inhuur werkelijk',\ 'Diensten begroot','Diensten Werkelijk','Brutowinst'] data_list=[] for row in rpres: data_list += [(row)] def Resultaten(idx): idxnr = idx.data() if idx.column() == 0: engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() selres = select([resultaten]).where(resultaten.c.resID == idxnr) rpres = con.execute(selres).first() class Window(QDialog): def __init__(self): QDialog.__init__(self) grid = QGridLayout() grid.setSpacing(20) self.setWindowTitle("Opvragen resultaten per boekweek") self.setWindowIcon(QIcon('./images/logos/logo.jpg')) self.setFont(QFont('Arial', 10)) self.lbl = QLabel() self.pixmap = QPixmap('./images/logos/verbinding.jpg') self.lbl.setPixmap(self.pixmap) grid.addWidget(self.lbl , 0, 0) grid.addWidget(QLabel('Opvragen resultaten werken extern per boekweek'),0, 2, 1, 3) self.logo = QLabel() self.pixmap = QPixmap('./images/logos/logo.jpg') self.logo.setPixmap(self.pixmap) grid.addWidget(self.logo , 0, 5, 1, 1, Qt.AlignRight) index = 3 for item in header: horpos = index%3 verpos = index if index%3 == 1: verpos = index - 1 elif index%3 == 2: verpos = index -2 self.lbl = QLabel('{:15}'.format(header[index-3])) self.Gegevens = QLabel() if index-3 > 2: q1Edit = QLineEdit(str(round(rpres[index-3],2))) else: q1Edit = QLineEdit(str(rpres[index-3])) q1Edit.setAlignment(Qt.AlignRight) q1Edit.setFixedWidth(150) q1Edit.setReadOnly(True) grid.addWidget(self.lbl, verpos, horpos+horpos%3) grid.addWidget(q1Edit, verpos, horpos+horpos%3+1) index +=1 terugBtn = QPushButton('Sluiten') terugBtn.clicked.connect(self.accept) grid.addWidget(terugBtn, verpos+1, 5, 1 , 1, Qt.AlignRight) terugBtn.setFont(QFont("Arial",10)) terugBtn.setFixedWidth(100) terugBtn.setStyleSheet("color: black; background-color: gainsboro") grid.addWidget(QLabel('\u00A9 2017 all rights reserved [email protected]'), verpos+2, 2, 1, 2) self.setLayout(grid) self.setGeometry(200, 300, 150, 150) mainWin = Window() mainWin.exec_() win = window(data_list, header) win.exec_() hoofdMenu(m_email)
def windowSluit(m_email, self): self.close() hoofdMenu(m_email)
def updateAccount(m_email): from sqlalchemy import (Table, Column, Integer, String, MetaData,\ create_engine, update) from sqlalchemy.sql import select metadata = MetaData() accounts = Table('accounts', metadata, Column('accountID', Integer(), primary_key=True), Column('aanhef', String(8)), Column('voornaam', String(30), nullable=False), Column('tussenvoegsel', String(10)), Column('achternaam', String(50), nullable=False), Column('postcode', String(6), nullable=False), Column('huisnummer', String(5), nullable=False), Column('toevoeging', String), Column('email', String, nullable=False), Column('password', String, nullable=False), Column('telnr', String(10)), Column('account_count', Integer(), nullable=False), Column('geboortedatum', String)) engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem') conn = engine.connect() sel = select([accounts]).\ where(accounts.c.email == m_email) rpaccount = conn.execute(sel).first() if rpaccount: maccountnr = rpaccount[0] maanhef = rpaccount[1] mvoornaam = rpaccount[2] mtussenv = rpaccount[3] machternaam = rpaccount[4] mpostcode = rpaccount[5] mhuisnr = rpaccount[6] mhuisnr = int(mhuisnr) mtoev = rpaccount[7] m_email = rpaccount[8] mtelnr = rpaccount[10] mcount = rpaccount[11] mcount = int(mcount) + 1 mgebdat = rpaccount[12] mstrtplts = checkpostcode(mpostcode, mhuisnr) mstraat = mstrtplts[0] mplaats = mstrtplts[1] class Widget(QDialog): def __init__(self, parent=None): super(Widget, self).__init__(parent) self.setWindowTitle("Bedrijfs Informatie Systeem") self.setWindowIcon(QIcon('./images/logos/logo.jpg')) self.setFont(QFont('Arial', 10)) self.Aanhef = QLabel() q2Edit = QComboBox() q2Edit.setFixedWidth(80) q2Edit.setFont(QFont("Arial", 10)) q2Edit.setStyleSheet("color: black; background-color: gainsboro") q2Edit.addItem(' ') q2Edit.addItem('Dhr. ') q2Edit.addItem('Mevr. ') q2Edit.setCurrentIndex(q2Edit.findText(rpaccount[1])) q2Edit.activated[str].connect(self.q2Changed) self.Voornaam = QLabel() q3Edit = QLineEdit(mvoornaam) q3Edit.setFixedWidth(200) q3Edit.setFont(QFont("Arial", 10)) q3Edit.textChanged.connect(self.q3Changed) reg_ex = QRegExp("^[^0-9]{1,30}$") input_validator = QRegExpValidator(reg_ex, q3Edit) q3Edit.setValidator(input_validator) self.Tussenvoegsel = QLabel() q4Edit = QLineEdit('') q4Edit.setFixedWidth(80) q4Edit.setFont(QFont("Arial", 10)) q4Edit.textChanged.connect(self.q4Changed) q4Edit.setText(mtussenv) reg_ex = QRegExp("^[^0-9]{1,10}$") input_validator = QRegExpValidator(reg_ex, q3Edit) q4Edit.setValidator(input_validator) self.Achternaam = QLabel() q5Edit = QLineEdit(machternaam) q5Edit.setFixedWidth(400) q5Edit.setFont(QFont("Arial", 10)) q5Edit.textChanged.connect(self.q5Changed) reg_ex = QRegExp("^[^0-9]{1,50}$") input_validator = QRegExpValidator(reg_ex, q5Edit) q5Edit.setValidator(input_validator) self.Straat = QLabel() q6Edit = QLineEdit(mstraat) q6Edit.setFixedWidth(500) q6Edit.setDisabled(True) q6Edit.setStyleSheet( "QLineEdit { background-color: ; color: black }") q6Edit.setFont(QFont("Arial", 10)) q6Edit.textChanged.connect(self.q6Changed) self.Huisnummer = QLabel() q7Edit = QLineEdit(str(mhuisnr)) q7Edit.setFixedWidth(60) q7Edit.setFont(QFont("Arial", 10)) q7Edit.textChanged.connect(self.q7Changed) reg_ex = QRegExp("^[0-9]{1,5}$") input_validator = QRegExpValidator(reg_ex, q7Edit) q7Edit.setValidator(input_validator) self.Toevoeging = QLabel() q8Edit = QLineEdit('') q8Edit.setFixedWidth(80) q8Edit.setFont(QFont("Arial", 10)) q8Edit.textChanged.connect(self.q8Changed) q8Edit.setText(mtoev) reg_ex = QRegExp("^[A-Za-z0-9-#]{0,10}") input_validator = QRegExpValidator(reg_ex, q8Edit) q8Edit.setValidator(input_validator) self.Postcode = QLabel() q9Edit = QLineEdit(mpostcode) q9Edit.setFixedWidth(70) font = QFont("Arial", 10) font.setCapitalization(QFont.AllUppercase) q9Edit.setFont(font) q9Edit.textChanged.connect(self.q9Changed) reg_ex = QRegExp("^[0-9]{4}[A-Za-z]{2}$") input_validator = QRegExpValidator(reg_ex, q9Edit) q9Edit.setValidator(input_validator) self.Woonplaats = QLabel() q10Edit = QLineEdit(mplaats) q10Edit.setFixedWidth(500) q10Edit.setDisabled(True) q10Edit.setFont(QFont("Arial", 10)) q10Edit.setStyleSheet( "QLineEdit { background-color: ; color: black }") q10Edit.textChanged.connect(self.q10Changed) self.email = QLabel() q11Edit = QLineEdit(m_email) q11Edit.setFixedWidth(300) q11Edit.setFont(QFont("Arial", 10)) q11Edit.textChanged.connect(self.q11Changed) reg_ex = QRegExp( "^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$") input_validator = QRegExpValidator(reg_ex, q11Edit) q11Edit.setValidator(input_validator) self.BestaandWachtwoord = QLabel() q12Edit = QLineEdit() q12Edit.setFixedWidth(300) q12Edit.setFont(QFont("Arial", 10)) q12Edit.setEchoMode(QLineEdit.Password) q12Edit.textChanged.connect(self.q12Changed) self.NieuwWachtwoord = QLabel() q13Edit = QLineEdit() q13Edit.setFixedWidth(300) q13Edit.setFont(QFont("Arial", 10)) q13Edit.setEchoMode(QLineEdit.Password) q13Edit.textChanged.connect(self.q13Changed) self.NieuwWachtwoordControle = QLabel() q14Edit = QLineEdit() q14Edit.setFixedWidth(300) q14Edit.setFont(QFont("Arial", 10)) q14Edit.setEchoMode(QLineEdit.Password) q14Edit.textChanged.connect(self.q14Changed) self.Telefoonnr = QLabel() q15Edit = QLineEdit('') q15Edit.setFixedWidth(100) q15Edit.setFont(QFont("Arial", 10)) q15Edit.textChanged.connect(self.q15Changed) q15Edit.setText(mtelnr) reg_ex = QRegExp("^[#0]{1}[0-9]{9}$") input_validator = QRegExpValidator(reg_ex, q15Edit) q15Edit.setValidator(input_validator) self.Accountnummer = QLabel() q16Edit = QLineEdit(str(maccountnr)) q16Edit.setFixedWidth(100) q16Edit.setDisabled(True) q16Edit.setStyleSheet( "QLineEdit { background-color: ; color: black }") q16Edit.setFont(QFont("Arial", 10)) q16Edit.textChanged.connect(self.q16Changed) self.Geboortedatum = QLabel() q17Edit = QLineEdit(mgebdat) q17Edit.setFixedWidth(100) q17Edit.setFont(QFont("Arial", 10)) q17Edit.textChanged.connect(self.q17Changed) reg_ex = QRegExp( '^[1-2]{1}[09]{1}[0-9]{2}-[0-1]{1}[0-9]{1}-[0-3]{1}[0-9]{1}$') input_validator = QRegExpValidator(reg_ex, q17Edit) q17Edit.setValidator(input_validator) grid = QGridLayout() grid.setSpacing(20) lbl = QLabel() pixmap = QPixmap('./images/logos/verbinding.jpg') lbl.setPixmap(pixmap) grid.addWidget(lbl, 1, 0) logo = QLabel() pixmap = QPixmap('./images/logos/logo.jpg') logo.setPixmap(pixmap) grid.addWidget(logo, 1, 2, 1, 1, Qt.AlignRight) self.setFont(QFont('Arial', 10)) grid.addWidget(QLabel('Opvragen of aanpassen persoongegevens'), 1, 1) grid.addWidget( QLabel(' *'), 2, 0) grid.addWidget(QLabel('Verplichte velden'), 2, 1) grid.addWidget(QLabel('Aanhef'), 3, 0) grid.addWidget(q2Edit, 3, 1) grid.addWidget(QLabel('Voornaam *'), 4, 0) grid.addWidget(q3Edit, 4, 1) grid.addWidget(QLabel('Tussenvoegsel'), 5, 0) grid.addWidget(q4Edit, 5, 1) grid.addWidget(QLabel('Achternaam *'), 6, 0) grid.addWidget(q5Edit, 6, 1, 1, 2) grid.addWidget(QLabel('Geboortedatum *'), 7, 0) grid.addWidget( QLabel(' formaat: jjjj-mm-dd'), 7, 1, 1, 2) grid.addWidget(q17Edit, 7, 1) grid.addWidget(QLabel('Straat'), 8, 0) grid.addWidget(q6Edit, 8, 1, 1, 2) grid.addWidget(QLabel('Huisnummer *'), 9, 0) grid.addWidget(q7Edit, 9, 1) grid.addWidget(QLabel('Toevoeging'), 9, 1, 1, 1, Qt.AlignRight) grid.addWidget(q8Edit, 9, 2) grid.addWidget(QLabel('Postcode *'), 10, 0) grid.addWidget(q9Edit, 10, 1) grid.addWidget(QLabel('Woonplaats'), 11, 0) grid.addWidget(q10Edit, 11, 1, 1, 2) grid.addWidget(QLabel('e-mail *'), 12, 0) grid.addWidget(q11Edit, 12, 1, 1, 2) grid.addWidget(QLabel('Bestaand wachtwoord *'), 13, 0) grid.addWidget(q12Edit, 13, 1, 1, 2) grid.addWidget(QLabel('Nieuw wachtwoord *'), 14, 0) grid.addWidget(q13Edit, 14, 1, 1, 2) grid.addWidget(QLabel('Nieuw wachtwoord controle *'), 15, 0) grid.addWidget(q14Edit, 15, 1, 1, 2) grid.addWidget(QLabel('Telefoonnummer'), 16, 0) grid.addWidget(q15Edit, 16, 1) grid.addWidget(QLabel('Accountnummer'), 17, 0) grid.addWidget(q16Edit, 17, 1, 1, 2) grid.addWidget( QLabel('\u00A9 2017 all rights reserved [email protected]'), 18, 0, 1, 3, Qt.AlignCenter) self.setLayout(grid) self.setGeometry(500, 50, 350, 300) applyBtn = QPushButton('Wijzigen') applyBtn.clicked.connect(self.accept) grid.addWidget(applyBtn, 17, 2, 1, 1, Qt.AlignRight) applyBtn.setFont(QFont("Arial", 10)) applyBtn.setFixedWidth(100) applyBtn.setStyleSheet( "color: black; background-color: gainsboro") cancelBtn = QPushButton('Sluiten') cancelBtn.clicked.connect(lambda: windowSluit(self, m_email)) grid.addWidget(cancelBtn, 16, 2, 1, 1, Qt.AlignRight) cancelBtn.setFont(QFont("Arial", 10)) cancelBtn.setFixedWidth(100) cancelBtn.setStyleSheet( "color: black; background-color: gainsboro") def q2Changed(self, text): self.Aanhef.setText(text) def q3Changed(self, text): self.Voornaam.setText(text) def q4Changed(self, text): self.Tussenvoegsel.setText(text) def q5Changed(self, text): self.Achternaam.setText(text) def q6Changed(self, text): self.Straat.setText(text) def q7Changed(self, text): self.Huisnummer.setText(text) def q8Changed(self, text): self.Toevoeging.setText(text) def q9Changed(self, text): self.Postcode.setText(text) def q10Changed(self, text): self.Woonplaats.setText(text) def q11Changed(self, text): self.email.setText(text) def q12Changed(self, text): self.BestaandWachtwoord.setText(text) def q13Changed(self, text): self.NieuwWachtwoord.setText(text) def q14Changed(self, text): self.NieuwWachtwoordControle.setText(text) def q15Changed(self, text): self.Telefoonnr.setText(text) def q16Changed(self, text): self.Accountnummer.setText(text) def q17Changed(self, text): self.Geboortedatum.setText(text) def returnAanhef(self): return self.Aanhef.text() def returnVoornaam(self): return self.Voornaam.text() def returnTussenvoegsel(self): return self.Tussenvoegsel.text() def returnAchternaam(self): return self.Achternaam.text() def returnStraat(self): return self.Straat.text() def returnHuisnummer(self): return self.Huisnummer.text() def returnToevoeging(self): return self.Toevoeging.text() def returnPostcode(self): return self.Postcode.text() def returnWoonplaats(self): return self.Woonplaats.text() def returnemail(self): return self.email.text() def returnBestaandWachtwoord(self): return self.BestaandWachtwoord.text() def returnNieuwWachtwoord(self): return self.NieuwWachtwoord.text() def returnNieuwWachtwoordControle(self): return self.NieuwWachtwoordControle.text() def returnTelefoonnummer(self): return self.Telefoonnr.text() def returnAccountnummer(self): return self.Accountnummer.text() def returnGeboortedatum(self): return self.Geboortedatum.text() @staticmethod def getData(parent=None): dialog = Widget(parent) dialog.exec_() return [dialog.returnAanhef(), dialog.returnVoornaam(),\ dialog.returnTussenvoegsel(), dialog.returnAchternaam(),\ dialog.returnStraat(), dialog.returnHuisnummer(),\ dialog.returnToevoeging(), dialog.returnPostcode(),\ dialog.returnWoonplaats(), dialog.returnemail(),\ dialog.returnBestaandWachtwoord(), dialog.returnNieuwWachtwoord(),\ dialog.returnNieuwWachtwoordControle(), dialog.returnTelefoonnummer(),\ dialog.returnAccountnummer(),dialog.returnGeboortedatum()] window = Widget() data = window.getData() if data[0]: maanhef = data[0] else: maanhef = rpaccount[1] if data[1]: mvoornaam = (data[1]).title() else: mvoornaam = rpaccount[2].title() if data[2]: mtussenv = data[2] else: mtussenv = '' if data[3]: machternaam = (data[3]).title() else: machternaam = rpaccount[4].title() if data[5]: mhuisnr = data[5] else: mhuisnr = rpaccount[6] if data[7]: mpostcode = data[7].upper() else: mpostcode = rpaccount[5] if checkpostcode(mpostcode, int(mhuisnr))[0] == '': foutPostcode() hoofdMenu(m_email) if data[6]: mtoev = '-' + data[6] else: mtoev = '' if data[9]: if zt(data[9], 12): m_email = (data[9]) else: foutEmail() hoofdMenu(m_email) else: m_email = rpaccount[8] mpassword = rpaccount[9] old_password = '' nw_password = '' contr_nwpass = '' if data[10] and data[11] and data[12]: old_password = data[10] nw_password = data[11] contr_nwpass = data[12] if check_password(mpassword, old_password) and len(nw_password) > 7 \ and (nw_password == contr_nwpass): nw_passwd = hash_password(nw_password) else: foutWachtw() hoofdMenu(m_email) else: nw_passwd = mpassword dontMatch() if data[13]: mtelnr = data[13] else: mtelnr = '' if not (len(mtelnr) == 10 or mtelnr == ''): foutTelnr() hoofdMenu(m_email) if data[15]: mgebdat = data[15] else: mgebdat = rpaccount[12] u = update(accounts).where(accounts.c.accountID == maccountnr).\ values(aanhef = maanhef, voornaam = mvoornaam, tussenvoegsel =\ mtussenv, achternaam = machternaam, huisnummer = int(mhuisnr),\ toevoeging = mtoev, postcode = mpostcode, email = m_email, password =\ nw_passwd, telnr = mtelnr, account_count = mcount, geboortedatum = mgebdat) conn.execute(u) conn.close() updateOK() hoofdMenu(m_email)
def sluiten(self, m_email): self.close() hoofdMenu(m_email)
def toonParams(m_email): class MyWindow(QDialog): def __init__(self, data_list, header, *args): QWidget.__init__( self, *args, ) self.setWindowTitle('Parameters wijzigen') self.setWindowIcon(QIcon('./images/logos/logo.jpg')) self.setWindowFlags(self.windowFlags() | Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint) self.setFont(QFont('Arial', 10)) grid = QGridLayout() grid.setSpacing(20) table_model = MyTableModel(self, data_list, header) table_view = QTableView() table_view.setModel(table_model) font = QFont("Arial", 10) table_view.setFont(font) table_view.resizeColumnsToContents() table_view.setSelectionBehavior(QTableView.SelectRows) #table_view.clicked.connect(selectRow) table_view.clicked.connect(showSelection) grid.addWidget(table_view, 0, 0, 1, 7) lbl = QLabel() pixmap = QPixmap('./images/logos/verbinding.jpg') lbl.setPixmap(pixmap) grid.addWidget(lbl, 1, 0, 1, 2) logo = QLabel() pixmap = QPixmap('./images/logos/logo.jpg') logo.setPixmap(pixmap) grid.addWidget(logo, 1, 6, 1, 1, Qt.AlignRight) freshBtn = QPushButton('Verversen') freshBtn.clicked.connect(lambda: refresh(m_email, self)) freshBtn.setFont(QFont("Arial", 10)) freshBtn.setFixedWidth(100) freshBtn.setStyleSheet( "color: black; background-color: gainsboro") grid.addWidget(freshBtn, 1, 5, 1, 1, Qt.AlignRight | Qt.AlignBottom) sluitBtn = QPushButton('Sluiten') sluitBtn.clicked.connect(self.close) sluitBtn.setFont(QFont("Arial", 10)) sluitBtn.setFixedWidth(100) sluitBtn.setStyleSheet( "color: black; background-color: gainsboro") grid.addWidget(sluitBtn, 1, 4, 1, 1, Qt.AlignRight | Qt.AlignBottom) grid.addWidget( QLabel('\u00A9 2017 all rights reserved [email protected]'), 1, 2, 1, 1, Qt.AlignBottom) self.setLayout(grid) self.setGeometry(300, 50, 900, 900) self.setLayout(grid) class MyTableModel(QAbstractTableModel): def __init__(self, parent, mylist, header, *args): QAbstractTableModel.__init__(self, parent, *args) self.mylist = mylist self.header = header def rowCount(self, parent): return len(self.mylist) def columnCount(self, parent): return len(self.mylist[0]) def data(self, index, role): if not index.isValid(): return None elif role != Qt.DisplayRole: return None return str(self.mylist[index.row()][index.column()]) def headerData(self, col, orientation, role): if orientation == Qt.Horizontal and role == Qt.DisplayRole: return self.header[col] return None header = [ 'ParamID', 'Item', 'Tarief', 'Verrekening', 'Ondergrens', 'Bovengrens', 'Aanpassing', 'Lock', 'Tarieffactor' ] metadata = MetaData() params = Table('params', metadata, Column('paramID', Integer(), primary_key=True), Column('item', String), Column('tarief', Float), Column('verrekening', String), Column('ondergrens', Float), Column('bovengrens', Float), Column('datum', String), Column('lock', Boolean), Column('tarieffactor', Float)) engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() sel = select([params]).order_by(params.c.paramID.asc()) rp = con.execute(sel) data_list = [] for row in rp: data_list += [(row)] def showSelection(idx): paramnr = idx.data() if idx.column() == 0: engine = create_engine( 'postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() selpar = select([params]).where(params.c.paramID == paramnr) rppar = con.execute(selpar).first() class MainWindow(QDialog): def __init__(self): QDialog.__init__(self) grid = QGridLayout() grid.setSpacing(20) self.setWindowTitle("Wijzigen parameters") self.setWindowIcon(QIcon('./images/logos/logo.jpg')) self.setFont(QFont('Arial', 10)) self.Item = QLabel() q1Edit = QLineEdit(rppar[1]) q1Edit.setCursorPosition(0) q1Edit.setFixedWidth(150) q1Edit.setFont(QFont("Arial", 10)) q1Edit.textChanged.connect(self.q1Changed) reg_ex = QRegExp("^.{0,20}$") input_validator = QRegExpValidator(reg_ex, q1Edit) q1Edit.setValidator(input_validator) self.Tarief = QLabel() q2Edit = QLineEdit(str(rppar[2])) q2Edit.setFixedWidth(100) q2Edit.setFont(QFont("Arial", 10)) q2Edit.textChanged.connect(self.q2Changed) reg_ex = QRegExp("^[-0-9.]{0,12}$") input_validator = QRegExpValidator(reg_ex, q2Edit) q2Edit.setValidator(input_validator) self.Verrekening = QLabel() q3Edit = QLineEdit(rppar[3]) q3Edit.setFixedWidth(200) q3Edit.setFont(QFont("Arial", 10)) q3Edit.textChanged.connect(self.q3Changed) reg_ex = QRegExp("^.{0,20}$") input_validator = QRegExpValidator(reg_ex, q3Edit) q3Edit.setValidator(input_validator) self.Ondergrens = QLabel() q4Edit = QLineEdit(str(rppar[4])) q4Edit.setFixedWidth(100) q4Edit.setFont(QFont("Arial", 10)) q4Edit.textChanged.connect(self.q4Changed) reg_ex = QRegExp("^[0-9.]{0,12}$") input_validator = QRegExpValidator(reg_ex, q4Edit) q4Edit.setValidator(input_validator) self.Bovengrens = QLabel() q5Edit = QLineEdit(str(rppar[5])) q5Edit.setFixedWidth(100) q5Edit.setFont(QFont("Arial", 10)) q5Edit.textChanged.connect(self.q5Changed) reg_ex = QRegExp("^[0-9.]{0,12}$") input_validator = QRegExpValidator(reg_ex, q5Edit) q5Edit.setValidator(input_validator) self.Tarieffactor = QLabel() q6Edit = QLineEdit(str(rppar[8])) q6Edit.setFixedWidth(100) q6Edit.setFont(QFont("Arial", 10)) q6Edit.textChanged.connect(self.q6Changed) reg_ex = QRegExp("^[0-9.]{0,12}$") input_validator = QRegExpValidator(reg_ex, q6Edit) q5Edit.setValidator(input_validator) grid = QGridLayout() grid.setSpacing(20) lbl1 = QLabel('Parameternummer') grid.addWidget(lbl1, 1, 0) lbl2 = QLabel(str(paramnr)) grid.addWidget(lbl2, 1, 1) lbl3 = QLabel('Item') grid.addWidget(lbl3, 2, 0) grid.addWidget(q1Edit, 2, 1, 1, 2) lbl4 = QLabel('Tarief') grid.addWidget(lbl4, 3, 0) grid.addWidget(q2Edit, 3, 1) lbl5 = QLabel('Verrekening') grid.addWidget(lbl5, 4, 0) grid.addWidget(q3Edit, 4, 1, 1, 2) lbl6 = QLabel('Ondergrens') grid.addWidget(lbl6, 5, 0) grid.addWidget(q4Edit, 5, 1) lbl7 = QLabel('Bovengrens') grid.addWidget(lbl7, 6, 0) grid.addWidget(q5Edit, 6, 1) lbl8 = QLabel('Aanpassing') grid.addWidget(lbl8, 7, 0) lbl9 = QLabel(rppar[6]) grid.addWidget(lbl9, 7, 1) lbl10 = QLabel('Lock: ' + str(rppar[7])) grid.addWidget(lbl10, 7, 2) lbl11 = QLabel('Tarieffactor') grid.addWidget(lbl11, 8, 0) grid.addWidget(q6Edit, 8, 1) lbl = QLabel() pixmap = QPixmap('./images/logos/verbinding.jpg') lbl.setPixmap(pixmap) grid.addWidget(lbl, 0, 0, 1, 2) logo = QLabel() pixmap = QPixmap('./images/logos/logo.jpg') logo.setPixmap(pixmap) grid.addWidget(logo, 0, 2, 1, 1, Qt.AlignRight) grid.addWidget( QLabel( '\u00A9 2017 all rights reserved [email protected]' ), 10, 0, 1, 3, Qt.AlignCenter) self.setLayout(grid) self.setGeometry(500, 300, 150, 150) applyBtn = QPushButton('Wijzig') applyBtn.clicked.connect(self.accept) grid.addWidget(applyBtn, 9, 2, 1, 1, Qt.AlignRight) applyBtn.setFont(QFont("Arial", 10)) applyBtn.setFixedWidth(100) applyBtn.setStyleSheet( "color: black; background-color: gainsboro") cancelBtn = QPushButton('Sluiten') cancelBtn.clicked.connect(self.close) grid.addWidget(cancelBtn, 9, 1, 1, 1, Qt.AlignRight) cancelBtn.setFont(QFont("Arial", 10)) cancelBtn.setFixedWidth(100) cancelBtn.setStyleSheet( "color: black; background-color: gainsboro") def q1Changed(self, text): self.Item.setText(text) def q2Changed(self, text): self.Tarief.setText(text) def q3Changed(self, text): self.Verrekening.setText(text) def q4Changed(self, text): self.Ondergrens.setText(text) def q5Changed(self, text): self.Bovengrens.setText(text) def q6Changed(self, text): self.Tarieffactor.setText(text) def returnq1(self): return self.Item.text() def returnq2(self): return self.Tarief.text() def returnq3(self): return self.Verrekening.text() def returnq4(self): return self.Ondergrens.text() def returnq5(self): return self.Bovengrens.text() def returnq6(self): return self.Tarieffactor.text() @staticmethod def getData(parent=None): dialog = MainWindow() dialog.exec_() return [dialog.returnq1(), dialog.returnq2(), dialog.returnq3(),\ dialog.returnq4(), dialog.returnq5(), dialog.returnq6()] mainWin = MainWindow() data = mainWin.getData() flag = 0 for k in range(0, 6): if data[k]: flag = 1 if flag == 0: return if data[0]: mf0 = data[0] else: mf0 = rppar[1] if data[1]: mf1 = float(data[1]) else: mf1 = rppar[2] if data[2]: mf2 = data[2] else: mf2 = rppar[3] if data[3]: mf3 = float(data[3]) else: mf3 = rppar[4] if data[4]: mf4 = float(data[4]) else: mf4 = rppar[5] if data[5]: mf5 = float(data[5]) else: mf5 = rppar[8] dt = str(datetime.datetime.now())[0:10] engine = create_engine( 'postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() updpar = update(params).where(params.c.paramID==paramnr).values(item = mf0,\ tarief = mf1, verrekening = mf2, ondergrens = mf3, bovengrens = mf4,\ tarieffactor = mf5, datum = dt, lock = False) con.execute(updpar) con.close() wijzigOK() win = MyWindow(data_list, header) win.exec_() hoofdMenu(m_email)
def kiesOrder(m_email): metadata = MetaData() orders_verkoop = Table( 'orders_verkoop', metadata, Column('ovbestelID', Integer, primary_key=True), Column('klantID', None, ForeignKey('klanten.klantID')), Column('ovbesteldatum', String), Column('datum_betaald', String), Column('datum_geleverd', String), Column('bedrag', Float)) klanten = Table( 'klanten', metadata, Column('klantID', Integer(), primary_key=True), Column('accountID', None, ForeignKey('accounts.accountID')), Column('rekening', String)) accounts = Table('accounts', metadata, Column('accountID', Integer(), primary_key=True), Column('aanhef', String), Column('voornaam', String), Column('tussenvoegsel', String), Column('achternaam', String), Column('postcode', String), Column('huisnummer', String), Column('toevoeging', String), Column('email', String), Column('telnr', String)) engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() selord = select([orders_verkoop, klanten, accounts]).where(and_(orders_verkoop.c.klantID == klanten.c.klantID,\ klanten.c.accountID == accounts.c.accountID, accounts.c.email == m_email)) rpc = con.execute(selord).fetchone() if rpc: rpord = con.execute(selord) else: geenBest(m_email) mpostcode = rpc[14] mhuisnr = int(rpc[15]) madres = checkpostcode(mpostcode, mhuisnr) mstraat = madres[0] mplaats = madres[1] class MyWindow(QDialog): def __init__(self, data_list, header, *args): QWidget.__init__( self, *args, ) self.setGeometry(50, 50, 900, 900) self.setWindowTitle('Printen orderfacturen') self.setWindowIcon(QIcon('./images/logos/logo.jpg')) self.setWindowFlags(self.windowFlags() | Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint) table_model = MyTableModel(self, data_list, header) table_view = QTableView() table_view.setModel(table_model) font = QFont("Arial", 10) table_view.setFont(font) table_view.setColumnHidden(1, True) table_view.setColumnHidden(6, True) table_view.setColumnHidden(9, True) table_view.setColumnHidden(10, True) table_view.setColumnHidden(11, True) table_view.setColumnHidden(12, True) table_view.setColumnHidden(13, True) table_view.setColumnHidden(14, True) table_view.setColumnHidden(15, True) table_view.setColumnHidden(16, True) table_view.setColumnHidden(17, True) table_view.setColumnHidden(18, True) table_view.resizeColumnsToContents() table_view.setSelectionBehavior(QTableView.SelectRows) table_view.clicked.connect(printFactuur) layout = QVBoxLayout(self) layout.addWidget(table_view) self.setLayout(layout) class MyTableModel(QAbstractTableModel): def __init__(self, parent, mylist, header, *args): QAbstractTableModel.__init__(self, parent, *args) self.mylist = mylist self.header = header def rowCount(self, parent): return len(self.mylist) def columnCount(self, parent): return len(self.mylist[0]) def data(self, index, role): if not index.isValid(): return None elif role != Qt.DisplayRole: return None return str(self.mylist[index.row()][index.column()]) def headerData(self, col, orientation, role): if orientation == Qt.Horizontal and role == Qt.DisplayRole: return self.header[col] return None header = ['Bestelnummer','','Besteldatum','Betaaldatum', 'Leverdatum','Totaalbedrag','', 'Accountnr',\ 'Rekeningnr','','','','','','','','','',''] data_list = [] for row in rpord: data_list += [(row)] def printFactuur(idx): from sys import platform movbestnr = idx.data() if idx.column() == 0: metadata = MetaData() orders_verkoop_artikelen = Table( 'orders_verkoop_artikelen', metadata, Column('ovaID', Integer, primary_key=True), Column('ovbestelID', None, ForeignKey('orders_verkoop.ovbestelID')), Column('artikelID', None, ForeignKey('artikelen.artikelID')), Column('ovaantal', Integer), Column('ovleverdatum', String), Column('verkoopprijs', Float), Column('regel', Integer), Column('retour', Float), Column('betaaldatum', String), Column('leveringsdatum', String)) artikelen = Table('artikelen', metadata, Column('artikelID', Integer(), primary_key=True), Column('artikelomschrijving', String), Column('artikelprijs', Float), Column('art_voorraad', Float), Column('art_eenheid', String), Column('locatie_magazijn', String)) engine = create_engine( 'postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() selova = select([orders_verkoop_artikelen,artikelen]).where(and_(\ orders_verkoop_artikelen.c.ovbestelID == movbestnr, orders_verkoop_artikelen\ .c.artikelID == artikelen.c.artikelID)).order_by(orders_verkoop_artikelen.c.ovaID) rpova = con.execute(selova) mblad = 1 rgl = 0 if platform == 'win32': filename = '.\\forms\\Weborders_Facturen\\Weborder-factuur_' + str( rpc[0]) + '.txt' else: filename = './forms/Weborders_Facturen/Weborder-factuur_' + str( rpc[0]) + '.txt' adreskop=\ ('\n\n\n\n\n\n\nFACTUUR\n\n'+rpc[10]+' '+rpc[11]+' '+rpc[12]+' '+rpc[13]+',\n'+\ mstraat+' '+rpc[15]+rpc[16]+',\n'+\ rpc[14]+' '+mplaats+'.\n\n\n\n\n') open(filename, 'w').write(adreskop) kop=\ ('Ordernummer: '+ str(movbestnr)+' Datum: '+str(datetime.datetime.now())[0:10]+' Besteldatum: '+str(rpc[2])+' Blad : '+str(mblad)+'\n'+ '==============================================================================================\n'+ 'Artikelnr Omschrijving Eenheid Aantal Prijs Subtotaal BTW \n'+ '==============================================================================================\n') mtotaal = 0 for row in rpova: if rgl == 0 and mblad == 1: open(filename, 'w').write(adreskop) open(filename, 'a').write(kop) rgl = 16 elif rgl % 57 == 0: open(filename, 'a').write(kop) mblad += 1 msub = row[3] * row[5] open(filename,'a').write('{:<11d}'.format(row[2])+'{:<37.35s}'.format(row[11])+\ '{:>6s}'.format(row[14])+' '+'{:>6.2f}'.format(row[3])+'{:>10.2f}'.format(row[5])+\ ' '+'{:>10.2f}'.format(msub)+' '+'{:>10.2f}'.format(msub*21/121)+'\n') mtotaal = mtotaal + msub rgl += 1 tail =(\ '----------------------------------------------------------------------------------------------\n'+ 'Totaal factuurbedrag inclusief 21% BTW '+'{:10.2f}'.format(mtotaal)+' \n'+ '==============================================================================================\n') open(filename, 'a').write(tail) printGeg(filename, movbestnr) win = MyWindow(data_list, header) win.exec_() hoofdMenu(m_email)
def eigenBedrijf(m_email): class MyWindow(QDialog): def __init__(self, data_list, header, *args): QWidget.__init__( self, *args, ) self.setGeometry(50, 50, 1500, 900) self.setWindowTitle('Verkoopbedrijf opvragen') self.setWindowIcon(QIcon('./images/logos/logo.jpg')) self.setWindowFlags(self.windowFlags() | Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint) table_model = MyTableModel(self, data_list, header) table_view = QTableView() table_view.setModel(table_model) font = QFont("Arial", 10) table_view.setFont(font) table_view.resizeColumnsToContents() table_view.setSelectionBehavior(QTableView.SelectRows) table_view.clicked.connect(showBedrijf) layout = QVBoxLayout(self) layout.addWidget(table_view) self.setLayout(layout) class MyTableModel(QAbstractTableModel): def __init__(self, parent, mylist, header, *args): QAbstractTableModel.__init__(self, parent, *args) self.mylist = mylist self.header = header def rowCount(self, parent): return len(self.mylist) def columnCount(self, parent): return len(self.mylist[0]) def data(self, index, role): veld = self.mylist[index.row()][index.column()] if not index.isValid(): return None elif role == Qt.TextAlignmentRole and (type(veld) == float or type(veld) == int): return Qt.AlignRight | Qt.AlignVCenter elif role != Qt.DisplayRole: return None if type(veld) == float: return '{:12.2f}'.format(veld) else: return veld def headerData(self, col, orientation, role): if orientation == Qt.Horizontal and role == Qt.DisplayRole: return self.header[col] return None header = ['VerkoopbedrijfID','Bedrijfsnaam', 'Rechtsvorm','Afdeling', 'BTWNummer', 'KVKNummer',\ 'Telefoonnummer','Straat', 'Huisnummer', 'Toevoeging', 'Postcode', 'Woonplaats'] metadata = MetaData() kopers = Table('kopers', metadata, Column('koperID', Integer(), primary_key=True), Column('bedrijfsnaam', String), Column('rechtsvorm', String), Column('afdeling', String), Column('btwnummer', String), Column('kvknummer', String), Column('telnr', String), Column('huisnummer', String), Column('toevoeging', String), Column('postcode', String)) koper_accounts = Table( 'koper_accounts', metadata, Column('koperaccID', Integer, primary_key=True), Column('accountID', Integer, ForeignKey('accounts.accountID')), Column('koperID', Integer, ForeignKey('kopers.koperID'))) accounts = Table('accounts', metadata, Column('accountID', Integer, primary_key=True), Column('email', String)) engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem') conn = engine.connect() selkop = select([kopers, koper_accounts, accounts]).where(and_(kopers.c.koperID ==\ koper_accounts.c.koperID, koper_accounts.c.accountID == accounts.c.accountID,\ accounts.c.email == m_email)) rpkop = conn.execute(selkop) import postcode data_list = [] for row in rpkop: msp = postcode.checkpostcode(row[9], int(row[7])) mstraat = msp[0] mplaats = msp[1] data_list += [(row[0],row[1],row[2],row[3],row[4],row[5],\ row[6],mstraat,int(row[7]),row[8],row[9],mplaats)] def showBedrijf(idx): mbedrnr = idx.data() if idx.column() == 0: selkoper = select([kopers]).where(kopers.c.koperID == mbedrnr) rpkoper = conn.execute(selkoper).first() mpostcode = rpkoper[9] mhuisnr = int(rpkoper[7]) import postcode mstrtplts = postcode.checkpostcode(mpostcode, mhuisnr) mstraat = mstrtplts[0] mplaats = mstrtplts[1] class Widget(QDialog): def __init__(self, parent=None): super(Widget, self).__init__(parent) self.setWindowTitle("Opvragen verkoopbedrijven") self.setWindowIcon(QIcon('./images/logos/logo.jpg')) self.setFont(QFont('Arial', 10)) self.Bedrijfsnaam = QLabel() q3Edit = QLineEdit(rpkoper[1]) q3Edit.setFixedWidth(540) q3Edit.setFont(QFont("Arial", 10)) q3Edit.setDisabled(True) q3Edit.setStyleSheet( "QLineEdit { font-size: 10pt; font-family: Arial; color: black }" ) self.Afdeling = QLabel() q16Edit = QLineEdit(rpkoper[3]) q16Edit.setFixedWidth(540) q16Edit.setFont(QFont("Arial", 10)) q16Edit.setDisabled(True) q16Edit.setStyleSheet( "QLineEdit { font-size: 10pt; font-family: Arial; color: black }" ) self.Rechtsvorm = QLabel() q5Edit = QLineEdit(rpkoper[2]) q5Edit.setFixedWidth(100) q5Edit.setFont(QFont("Arial", 10)) q5Edit.setDisabled(True) q5Edit.setStyleSheet( "QLineEdit { font-size: 10pt; font-family: Arial; color: black }" ) self.BTWnummer = QLabel() q2Edit = QLineEdit(rpkoper[4]) q2Edit.setDisabled(True) q2Edit.setFixedWidth(170) q2Edit.setFont(QFont("Arial", 10)) q2Edit.setStyleSheet( "QLineEdit { font-size: 10pt; font-family: Arial; color: black }" ) self.KvKnummer = QLabel() q4Edit = QLineEdit(rpkoper[5]) q4Edit.setFixedWidth(110) q4Edit.setDisabled(True) q4Edit.setStyleSheet( "QLineEdit { font-size: 10pt; font-family: Arial; color: black }" ) self.Straat = QLabel() q1Edit = QLineEdit() q1Edit.setText(mstraat) q1Edit.setFixedWidth(540) q1Edit.setDisabled(True) q1Edit.setStyleSheet( "QLineEdit { font-size: 10pt; font-family: Arial; color: black }" ) self.Huisnummer = QLabel() q7Edit = QLineEdit(str(mhuisnr)) q7Edit.setFixedWidth(60) q7Edit.setAlignment(Qt.AlignRight) q7Edit.setFont(QFont("Arial", 10)) q7Edit.setDisabled(True) q7Edit.setStyleSheet( "QLineEdit { font-size: 10pt; font-family: Arial; color: black }" ) self.Toevoeging = QLabel() q8Edit = QLineEdit(rpkoper[8]) q8Edit.setFixedWidth(80) q8Edit.setFont(QFont("Arial", 10)) q8Edit.setDisabled(True) q8Edit.setStyleSheet( "QLineEdit { font-size: 10pt; font-family: Arial; color: black }" ) self.Postcode = QLabel() q6Edit = QLineEdit(mpostcode) q6Edit.setFixedWidth(80) q6Edit.setFont(QFont("Arial", 10)) q6Edit.setDisabled(True) q6Edit.setStyleSheet( "QLineEdit { font-size: 10pt; font-family: Arial; color: black }" ) self.Woonplaats = QLabel() q15Edit = QLineEdit(mplaats) q15Edit.setFixedWidth(400) q15Edit.setDisabled(True) q15Edit.setStyleSheet( "QLineEdit { font-size: 10pt; font-family: Arial; color: black }" ) self.Telefoonnr = QLabel() q13Edit = QLineEdit(rpkoper[6]) q13Edit.setFixedWidth(120) q13Edit.setFont(QFont("Arial", 10)) q13Edit.setDisabled(True) q13Edit.setStyleSheet( "QLineEdit { font-size: 10pt; font-family: Arial; color: black }" ) self.Bedrijfverkoopnummer = QLabel() q14Edit = QLineEdit(str(rpkoper[0])) q14Edit.setFixedWidth(120) q14Edit.setAlignment(Qt.AlignRight) q14Edit.setDisabled(True) q14Edit.setFont(QFont("Arial", 10)) q14Edit.setStyleSheet( "QLineEdit { font-size: 10pt; font-family: Arial; color: black }" ) grid = QGridLayout() grid.setSpacing(20) lbl = QLabel() pixmap = QPixmap('./images/logos/verbinding.jpg') lbl.setPixmap(pixmap) grid.addWidget(lbl, 0, 0) logo = QLabel() pixmap = QPixmap('./images/logos/logo.jpg') logo.setPixmap(pixmap) grid.addWidget(logo, 0, 1, 1, 2, Qt.AlignRight) self.setFont(QFont('Arial', 10)) grid.addWidget(QLabel('Verkoopbedrijven opvragen'), 0, 1) grid.addWidget(QLabel('Bedrijfsnaam'), 1, 0) grid.addWidget(q3Edit, 1, 1, 1, 3) grid.addWidget( QLabel('Afdelingsnaam/Kamer/\nKontaktpersoon'), 2, 0) grid.addWidget(q16Edit, 2, 1, 1, 3) grid.addWidget(QLabel('Rechtsvorm'), 3, 0) grid.addWidget(q5Edit, 3, 1) grid.addWidget(QLabel('BTWnummer'), 3, 1, 1, 1, Qt.AlignRight) grid.addWidget(q2Edit, 3, 2) grid.addWidget(QLabel('KvKnummer'), 4, 0) grid.addWidget(q4Edit, 4, 1) grid.addWidget(QLabel('Straat'), 5, 0) grid.addWidget(q1Edit, 5, 1, 1, 3) grid.addWidget(QLabel('Huisnummer'), 6, 0) grid.addWidget(q7Edit, 6, 1) grid.addWidget(QLabel('Toevoeging'), 6, 1, 1, 1, Qt.AlignRight) grid.addWidget(q8Edit, 6, 2) grid.addWidget(QLabel('Postcode Woonplaats'), 7, 0) grid.addWidget(q6Edit, 7, 1) grid.addWidget(q15Edit, 7, 1, 1, 2, Qt.AlignRight) grid.addWidget(QLabel('Telefoonnummer'), 8, 0) grid.addWidget(q13Edit, 8, 1) grid.addWidget(QLabel('Verkoopbedrijfnummer'), 9, 0) grid.addWidget(q14Edit, 9, 1) grid.addWidget( QLabel( '\u00A9 2017 all rights reserved [email protected]' ), 10, 1) terugBtn = QPushButton('Sluiten') terugBtn.clicked.connect(self.accept) grid.addWidget(terugBtn, 9, 2, 1, 1, Qt.AlignRight) terugBtn.setFont(QFont("Arial", 10)) terugBtn.setFixedWidth(100) terugBtn.setStyleSheet( "color: black; background-color: gainsboro") self.setLayout(grid) self.setGeometry(500, 100, 150, 150) mainWin = Widget() mainWin.exec_() win = MyWindow(data_list, header) win.exec_() hoofdMenu(m_email)
def bereken(m_email): jrwk = jaarweek() metadata = MetaData() resultaten = Table('resultaten', metadata, Column('resID', Integer(), primary_key=True), Column('boekweek', String)) engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() selc = select([resultaten]).where(resultaten.c.boekweek == jrwk) rpc = con.execute(selc).first() if rpc: berBestaat(jrwk, m_email) metadata = MetaData() werken = Table('werken', metadata, Column('werknummerID', Integer(), primary_key=True), Column('werkomschrijving', String), Column('aanneemsom', Float), Column('kosten_materialen', Float), Column('kosten_lonen', Float), Column('kosten_materieel', Float), Column('kosten_leiding', Float), Column('kosten_huisv', Float), Column('kosten_overig', Float), Column('kosten_vervoer', Float), Column('meerminderwerk', Float), Column('voortgangstatus', String), Column('statusweek', String), Column('betaald_bedrag', Float), Column('begr_huisv', Float), Column('begr_leiding', Float), Column('begr_overig', Float), Column('kosten_inhuur', Float), Column('beton_bvl', Float), Column('kabelwerk', Float), Column('grondverzet', Float), Column('begr_inhuur', Float), Column('begr_vervoer', Float), Column('begr_beton_bvl', Float), Column('begr_kabelwerk', Float), Column('begr_grondverzet', Float), Column('begr_materieel', Float), Column('begr_materialen', Float), Column('begr_lonen', Float), Column('startweek', String)) engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() jr = jrwk[0:4] sel = select([werken]).where(werken.c.statusweek.like(jr + '%')).order_by( werken.c.statusweek) rpwerken = con.execute(sel) msomA, msomB, msomC, msomD, msomE, msomF, msomG, msomH, mkosttot, mbetaald, mmeerwerk = ( 0, ) * 11 mkostB, mkostC, mkostD, mkostE, mkostF, mkostG, mkostH = (0, ) * 7 mwinstC, mwinstD, mwinstE, mwinstF, mwinstG, mwinstH = (0, ) * 6 mohwC, mohwD, mohwE, mohwF, mohwG, mohwH = (0, ) * 6 maantA, maantB, maantC, maantD, maantE, maantF, maantG, maantH = (0, ) * 8 mbetaaldB, mbetaaldC, mbetaaldD, mbetaaldE, mbetaaldF, mbetaaldG, mbetaaldH = ( 0, ) * 7 mmeerwB, mmeerwC, mmeerwD, mmeerwE, mmeerwF, mmeerwG, mmeerwH = (0, ) * 7 for row in rpwerken: #mwerknr = row[0] #mwerkomschr = row[1] mktotal = row[3] + row[4] + row[5] + row[6] + row[7] + row[8] + row[ 9] + row[17] + row[18] + row[19] + row[20] mmeerwerk = mmeerwerk + row[10] mkosttot = mkosttot + mktotal mbetaald = mbetaald + row[13] mvgangst = row[11] if mvgangst == 'A' and row[12][0:4] == jaarweek()[0:4]: msomA = msomA + row[2] maantA = maantA + 1 elif mvgangst == 'B': msomB = msomB + row[2] mkostB = mkostB+row[3]+row[4]+row[5]+row[6]+row[7]+row[8]+row[9]+row[10]+\ row[17]+row[18]+row[19]+row[20] maantB = maantB + 1 mbetaaldB = mbetaaldB + row[13] mmeerwB = mmeerwB + row[10] elif mvgangst == 'C' and row[12][0:4] == jaarweek()[0:4]: msomC = msomC + row[2] mkostC = mkostC+row[3]+row[4]+row[5]+row[6]+row[7]+row[8]+row[9]+row[10]+\ row[17]+row[18]+row[19]+row[20] maantC = maantC + 1 mbetaaldC = mbetaaldC + row[13] mmeerwC = mmeerwC + row[10] mmeerwerk = mmeerwerk + row[10] mwinstC = mwinstC + row[2] / 3 - mkostC mohwC = mohwC + mkostC - mbetaaldC elif mvgangst == 'D' and row[12][0:4] == jaarweek()[0:4]: msomD = msomD + row[2] mkostD = row[3]+row[4]+row[5]+row[6]+row[7]+row[8]+row[9]+row[10]+\ row[17]+row[18]+row[19]+row[20] mkostD += mkostD maantD = maantD + 1 mbetaaldD += mbetaaldD + row[13] mmeerwD += mmeerwD + row[10] mwinstD = mwinstD + row[2] / 3 - mkostD mohwD = mohwD + mkostD - mbetaaldD elif mvgangst == 'E' and row[12][0:4] == jaarweek()[0:4]: msomE = msomE + row[2] mkostE = mkostE+row[3]+row[4]+row[5]+row[6]+row[7]+row[8]+row[9]+row[10]+\ row[17]+row[18]+row[19]+row[20] maantE = maantE + 1 mbetaaldE += mbetaaldE + row[13] mmeerwE += mmeerwE + row[10] mwinstE = mwinstE + row[2] * 2 / 3 - mkostE mohwE = mohwE + mkostE - mbetaaldE elif mvgangst == 'F' and row[12][0:4] == jaarweek()[0:4]: msomF = msomF + row[2] mkostF = mkostF+row[3]+row[4]+row[5]+row[6]+row[7]+row[8]+row[9]+row[10]+\ row[17]+row[18]+row[19]+row[20] maantF = maantF + 1 mbetaaldF += mbetaaldF + row[13] mmeerwF += mmeerwF + row[10] mwinstF = mwinstF + row[2] * .8666 - mkostF mohwF = mohwF + mkostF - mbetaaldF elif mvgangst == 'G' and row[12][0:4] == jaarweek()[0:4]: msomG = msomG + row[2] mkostG = mkostG+row[3]+row[4]+row[5]+row[6]+row[7]+row[8]+row[9]+row[10]+\ row[17]+row[18]+row[19]+row[20] maantG = maantG + 1 mbetaaldG += mbetaaldG + row[13] mmeerwG += mmeerwG + row[10] mwinstG = mwinstG + row[2] - mkostG mohwG = mohwG + mkostG - mbetaaldG elif mvgangst == 'H' and row[12][0:4] == jaarweek()[0:4]: msomH = msomH + row[2] mkostH = mkostH+row[3]+row[4]+row[5]+row[6]+row[7]+row[8]+row[9]+row[10]+\ row[17]+row[18]+row[19]+row[20] maantH = maantH + 1 mbetaaldH += mbetaaldH + row[13] mmeerwH = mmeerwH + row[10] mwinstH = mwinstH + row[2] + mmeerwH - mkostH mohwH = mohwH + mkostH - mbetaaldH divBereken(row) metadata = MetaData() resultaten_status = Table('resultaten_status', metadata, Column('rID', Integer, primary_key=True), Column('status', String), Column('aanneemsom', Float), Column('kosten', Float), Column('aantal', Integer), Column('boekweek', String), Column('betaald', Float), Column('meerminderwerk', Float)) engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() selr = select([resultaten_status ]).where(resultaten_status.c.boekweek == jrwk) rpr = con.execute(selr).first() if not rpr: mrnr = (con.execute(select([func.max(resultaten_status.c.rID,\ type_=Integer).label('mrnr')])).scalar()) mrnr += 1 insres = insert(resultaten_status).values(rID = mrnr, status = 'A',\ aanneemsom = round(msomA,2), aantal = maantA, boekweek = jrwk) con.execute(insres) mrnr = (con.execute(select([func.max(resultaten_status.c.rID,\ type_=Integer).label('mrnr')])).scalar()) mrnr += 1 insres = insert(resultaten_status).values(rID = mrnr, status = 'B',\ aanneemsom = round(msomB,2), kosten = round(mkostB,2), aantal = maantB,\ betaald = mbetaaldB, boekweek = jrwk, meerminderwerk = mmeerwB) con.execute(insres) mrnr = (con.execute(select([func.max(resultaten_status.c.rID,\ type_=Integer).label('mrnr')])).scalar()) mrnr += 1 insres = insert(resultaten_status).values(rID = mrnr, status = 'C',\ aanneemsom = round(msomC,2), kosten = round(mkostC,2), aantal = maantC,\ betaald = mbetaaldC, boekweek = jrwk, meerminderwerk = mmeerwC) con.execute(insres) mrnr = (con.execute(select([func.max(resultaten_status.c.rID,\ type_=Integer).label('mrnr')])).scalar()) mrnr += 1 insres = insert(resultaten_status).values(rID = mrnr, status = 'D',\ aanneemsom = round(msomD,2), kosten = round(mkostD,2), aantal = maantD,\ betaald = mbetaaldD, boekweek = jrwk, meerminderwerk = mmeerwD) con.execute(insres) mrnr = (con.execute(select([func.max(resultaten_status.c.rID,\ type_=Integer).label('mrnr')])).scalar()) mrnr += 1 insres = insert(resultaten_status).values(rID = mrnr, status = 'E',\ aanneemsom = round(msomE,2), kosten = round(mkostE,2), aantal = maantE,\ betaald = mbetaaldE, boekweek = jrwk, meerminderwerk = mmeerwE) con.execute(insres) mrnr = (con.execute(select([func.max(resultaten_status.c.rID,\ type_=Integer).label('mrnr')])).scalar()) mrnr += 1 insres = insert(resultaten_status).values(rID = mrnr, status = 'F',\ aanneemsom = round(msomF,2), kosten = round(mkostF,2), aantal = maantF,\ betaald = mbetaaldF, boekweek = jrwk, meerminderwerk = mmeerwF) con.execute(insres) mrnr = (con.execute(select([func.max(resultaten_status.c.rID,\ type_=Integer).label('mrnr')])).scalar()) mrnr += 1 insres = insert(resultaten_status).values(rID = mrnr, status = 'G',\ aanneemsom = round(msomG,2), kosten = round(mkostG,2), aantal = maantG,\ betaald = mbetaaldG, boekweek = jrwk, meerminderwerk = mmeerwG) con.execute(insres) mrnr = (con.execute(select([func.max(resultaten_status.c.rID,\ type_=Integer).label('mrnr')])).scalar()) mrnr += 1 insres = insert(resultaten_status).values(rID = mrnr, status = 'H',\ aanneemsom = round(msomH,2), kosten = round(mkostH,2), aantal = maantH,\ betaald = mbetaaldH, boekweek = jrwk, meerminderwerk = mmeerwH) con.execute(insres) berGelukt() hoofdMenu(m_email)
def barcodeScan(m_email, mret): class widget(QDialog): def __init__(self): super(widget,self).__init__() self.setWindowTitle("Balieverkoop") self.setWindowIcon(QIcon('./images/logos/logo.jpg')) self.setWindowFlags(self.windowFlags()| Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint) self.setStyleSheet("background-color: #D9E1DF") self.setFont(QFont('Arial', 10)) q1Edit = QLineEdit('') q1Edit.setStyleSheet("color: black; background-color: #F8F7EE") q1Edit.setFont(QFont("Arial", 10)) q1Edit.setFixedWidth(130) q1Edit.setFocus(True) q1Edit.returnPressed.connect(lambda: set_barcodenr(q1Edit, qspin, view, tekst, nextBtn, closeBtn, printBtn, albl)) qspin = QSpinBox() qspin.setRange(1, 99) qspin.setValue(1) qspin.setFocusPolicy(Qt.NoFocus) qspin.lineEdit().setReadOnly(True) qspin.setFrame(True) qspin.setFont(QFont('Arial', 10)) qspin.setStyleSheet("color: black; background-color: #F8F7EE") qspin.setFixedSize(50, 30) def valuechange(): qspin.setValue(qspin.value()) qspin.valueChanged.connect(valuechange) grid = QGridLayout() grid.setSpacing(10) koplbl = QLabel('Pandora kassasysteem') koplbl.setStyleSheet("color:rgba(45, 83, 115, 255); font: 20pt Comic Sans MS") grid.addWidget(koplbl, 0, 0, 1, 4, Qt.AlignCenter) view = QTextEdit() view.setDisabled(True) view.setStyleSheet('color: black; background-color: #F8F7EE') tekst = 'Artikelnr Omschrijving\nAantal Prijs Subtotaal BTW\n\n' view.setText(tekst) view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) view.setFont(QFont("Arial", 9)) view.setFocusPolicy(Qt.NoFocus) view.setFixedSize(350, 120) grid.addWidget(view, 1 ,0, 1, 4, Qt.AlignCenter) albl = QLabel('') albl.setStyleSheet("font: bold 16px; color: red") grid.addWidget(albl, 2, 0, 1, 4, Qt.AlignCenter) lbl1 = QLabel('Barcodescan') lbl1.setFont(QFont("Arial", 10)) grid.addWidget(lbl1, 6, 1) grid.addWidget(q1Edit , 6, 2, 1, 1, Qt.AlignRight) lbl2 = QLabel('Aantal ') lbl2.setFont(QFont("Arial", 10)) grid.addWidget(lbl2, 7, 2, 1, 1, Qt.AlignCenter) grid.addWidget(qspin, 7, 2, 1, 1, Qt.AlignRight) if mret: plusminBtn = QPushButton('+') plusminBtn.setCheckable(True) plusminBtn.clicked.connect(lambda: plusminChange(qspin, plusminBtn)) grid.addWidget(plusminBtn, 7, 2) plusminBtn.setFocusPolicy(Qt.NoFocus) plusminBtn.setFixedSize(20, 30) plusminBtn.setStyleSheet("color: black; background-color: gainsboro") lbl = QLabel() pixmap = QPixmap('./images/logos/verbinding.jpg') lbl.setPixmap(pixmap) grid.addWidget(lbl , 4, 0, 1, 2) logo = QLabel() pixmap = QPixmap('./images/logos/logo.jpg') logo.setPixmap(pixmap) grid.addWidget(logo , 4, 2, 1 ,1, Qt.AlignRight) lbl3 = QLabel('\u00A9 2017 all rights reserved [email protected]') lbl3.setFont(QFont("Arial", 10)) grid.addWidget(lbl3, 10, 0, 1, 3, Qt.AlignCenter) printBtn = QPushButton('Printen') printBtn.clicked.connect(lambda: printBon()) grid.addWidget(printBtn, 9, 2, 1, 1, Qt.AlignRight) printBtn.setFont(QFont("Arial",10)) printBtn.setFocusPolicy(Qt.NoFocus) printBtn.setFixedWidth(100) printBtn.setStyleSheet("color: black; background-color: gainsboro") closeBtn = QPushButton('Sluiten') closeBtn.clicked.connect(lambda: windowSluit(self, m_email)) grid.addWidget(closeBtn, 9, 1, 1, 1, Qt.AlignRight) closeBtn.setFont(QFont("Arial",10)) closeBtn.setFocusPolicy(Qt.NoFocus) closeBtn.setFixedWidth(100) closeBtn.setStyleSheet("color: black; background-color: gainsboro") infoBtn = QPushButton('Informatie') infoBtn.clicked.connect(lambda: info()) grid.addWidget(infoBtn, 9, 0, 1, 1, Qt.AlignRight) infoBtn.setFont(QFont("Arial",10)) infoBtn.setFocusPolicy(Qt.NoFocus) infoBtn.setFixedWidth(100) infoBtn.setStyleSheet("color: black; background-color: gainsboro") nextBtn = QPushButton('Volgende Klant') nextBtn.clicked.connect(lambda: nextClient(nextBtn, closeBtn, printBtn)) grid.addWidget(nextBtn, 7, 0, 1, 2) nextBtn.setFont(QFont("Arial",10)) nextBtn.setFocusPolicy(Qt.NoFocus) nextBtn.setFixedWidth(210) nextBtn.setStyleSheet("color: black; background-color: gainsboro") self.setLayout(grid) self.setGeometry(600, 200, 150, 100) window = widget() window.exec_() hoofdMenu(m_email)
def toonGrafiek(m_email): mjrmnd = str(date.today())[0:7] mjrmndvj = str(int(str(date.today())[0:4]) - 1) + '-' + ('0' + str(int(str(date.today())[5:7])))[-2:] metadata = MetaData() magazijnvoorraad = Table('magazijnvoorraad', metadata, Column('jaarmaand', String, primary_key=True), Column('totaal', Float), Column('courant', Float), Column('incourant', Float)) engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() selvrd = select([magazijnvoorraad]).where( magazijnvoorraad.c.jaarmaand.between(mjrmndvj, mjrmnd)).order_by( magazijnvoorraad.c.jaarmaand) rpvrd = con.execute(selvrd).fetchall() class Window(QDialog): def __init__(self): QDialog.__init__(self) self.setWindowTitle("Printen grafiek magazijnvoorraad bedragen") self.setWindowIcon(QIcon('./images/logos/logo.jpg')) self.setWindowFlags(self.windowFlags() | Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint) self.chart = QChart() self.chart_view = QChartView(self.chart) self.chart_view.setRenderHint(QPainter.Antialiasing) self.buttonPreview = QPushButton('Afdrukvoorbeeld', self) self.buttonPreview.setStyleSheet( "color: black; background-color: gainsboro") self.buttonPreview.clicked.connect(self.handle_preview) self.buttonPrint = QPushButton('Printen', self) self.buttonPrint.setStyleSheet( "color: black; background-color: gainsboro") self.buttonPrint.clicked.connect(self.handle_print) self.sluiten = QPushButton('Sluiten', self) self.sluiten.setStyleSheet( "color: black; background-color: gainsboro") self.sluiten.clicked.connect(lambda: sluiten(self, m_email)) layout = QGridLayout(self) layout.addWidget(self.buttonPrint, 1, 1) layout.addWidget(self.sluiten, 1, 0) layout.addWidget(self.chart_view, 0, 0, 1, 3) layout.addWidget(self.buttonPreview, 1, 2) self.create_chart() def create_chart(self): self.chart.setTitle('Grafiek financieën magazijnvoorraad') font = QFont("Sans Serif", 10) font.setWeight(QFont.Bold) self.chart.setTitleFont(font) set0 = QBarSet('Totaal') set1 = QBarSet('Courant') set2 = QBarSet('Incourant') set0 << rpvrd[0][1] << rpvrd[1][1] << rpvrd[2][1] << rpvrd[3][ 1] << rpvrd[4][1] << rpvrd[5][1] << rpvrd[6][1] << rpvrd[7][ 1] << rpvrd[8][1] << rpvrd[9][1] << rpvrd[10][1] << rpvrd[ 11][1] set1 << rpvrd[0][2] << rpvrd[1][2] << rpvrd[2][2] << rpvrd[3][ 2] << rpvrd[4][2] << rpvrd[5][2] << rpvrd[6][2] << rpvrd[7][ 2] << rpvrd[8][2] << rpvrd[9][2] << rpvrd[10][2] << rpvrd[ 11][2] set2 << rpvrd[0][3] << rpvrd[1][3] << rpvrd[2][3] << rpvrd[3][ 3] << rpvrd[4][3] << rpvrd[5][3] << rpvrd[6][3] << rpvrd[7][ 3] << rpvrd[8][3] << rpvrd[9][3] << rpvrd[10][3] << rpvrd[ 11][3] barseries = QBarSeries() barseries.append(set0) barseries.append(set1) barseries.append(set2) categories = [rpvrd[0][0],rpvrd[1][0],rpvrd[2][0],rpvrd[3][0],rpvrd[4][0],\ rpvrd[5][0],rpvrd[6][0],rpvrd[7][0],rpvrd[8][0],rpvrd[9][0],\ rpvrd[10][0],rpvrd[11][0]] self.chart.addSeries(barseries) self.chart.axisX() self.chart.createDefaultAxes() axisX = QBarCategoryAxis() axisX.append(categories) axisX.setTitleText('Voortschrijdende periode over 12 maanden') self.chart.setAxisX(axisX, barseries) axisX.setRange(rpvrd[0][0], rpvrd[11][0]) axisX.setLabelsAngle(-90) def handle_print(self): printer = QPrinter(QPrinter.HighResolution) printer.setOrientation(QPrinter.Landscape) dialog = QPrintDialog(printer, self) if dialog.exec_() == QPrintDialog.Accepted: self.handle_paint_request(printer) def handle_preview(self): dialog = QPrintPreviewDialog() dialog.setWindowFlags(self.windowFlags() | Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint) dialog.setWindowIcon(QIcon('./images/logos/logo.jpg')) dialog.setWindowFlags(dialog.windowFlags() | Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint) dialog.resize(1200, 800) #dialog.setMinimumSize(1200, 800) dialog.paintRequested.connect(self.handle_paint_request) dialog.exec_() def handle_paint_request(self, printer): printer.setPageOrientation(QPageLayout.Landscape) painter = QPainter(printer) painter.setViewport(self.chart_view.rect()) painter.setWindow(self.chart_view.rect()) self.chart_view.render(painter) painter.end() window = Window() window.resize(1350, 900) window.exec_() hoofdMenu(m_email)
def magVoorraad(m_email): metadata = MetaData() metadata = MetaData() magazijnvoorraad = Table('magazijnvoorraad', metadata, Column('jaarmaand', String, primary_key=True), Column('totaal', Float), Column('courant', Float), Column('incourant', Float)) engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() selvrd = select([magazijnvoorraad]).order_by(magazijnvoorraad.c.jaarmaand) rpvrd = con.execute(selvrd) class MyWindow(QDialog): def __init__(self, data_list, header, *args): QWidget.__init__( self, *args, ) self.setGeometry(100, 50, 600, 900) self.setWindowTitle('Jaarverbruik afgelopen jaar') self.setWindowIcon(QIcon('./images/logos/logo.jpg')) self.setWindowFlags(self.windowFlags() | Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint) table_model = MyTableModel(self, data_list, header) table_view = QTableView() table_view.setModel(table_model) font = QFont("Arial", 10) table_view.setFont(font) table_view.resizeColumnsToContents() table_view.setSelectionBehavior(QTableView.SelectRows) layout = QVBoxLayout(self) layout.addWidget(table_view) self.setLayout(layout) class MyTableModel(QAbstractTableModel): def __init__(self, parent, mylist, header, *args): QAbstractTableModel.__init__(self, parent, *args) self.mylist = mylist self.header = header def rowCount(self, parent): return len(self.mylist) def columnCount(self, parent): return len(self.mylist[0]) def data(self, index, role): veld = self.mylist[index.row()][index.column()] if not index.isValid(): return None elif role == Qt.TextAlignmentRole and (type(veld) == float or type(veld) == int): return Qt.AlignRight | Qt.AlignVCenter elif role != Qt.DisplayRole: return None if type(veld) == float: return '{:12.2f}'.format(veld) else: return veld def headerData(self, col, orientation, role): if orientation == Qt.Horizontal and role == Qt.DisplayRole: return self.header[col] return None header = [ 'Jaar-Maand', 'Totaal Voorraad', 'Courante Voorraad', 'Incourante Voorraad' ] data_list = [] for row in rpvrd: data_list += [(row)] win = MyWindow(data_list, header) win.exec_() hoofdMenu(m_email)
def toonArtikellijst(m_email): metadata = MetaData() artikelen = Table('artikelen', metadata, Column('artikelID', Integer(), primary_key=True), Column('artikelomschrijving', String), Column('artikelprijs', Float), Column('art_voorraad', Float), Column('art_eenheid', String), Column('art_min_voorraad', Float), Column('bestelsaldo', Float), Column('bestelstatus', Boolean), Column('reserveringsaldo', Float), Column('categorie', Integer), Column('thumb_artikel', String), Column('art_bestelgrootte', Float)) engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem') conn = engine.connect() sel = select([artikelen]).where(or_(and_(artikelen.c.art_voorraad+artikelen.c.bestelsaldo\ -artikelen.c.reserveringsaldo < artikelen.c.art_min_voorraad, artikelen.c.categorie < 5),\ and_(artikelen.c.art_voorraad+artikelen.c.bestelsaldo < artikelen.c.reserveringsaldo,\ artikelen.c.categorie > 4))).order_by(artikelen.c.artikelID) rpartikelen = conn.execute(sel) updart = update(artikelen).where(and_(artikelen.c.art_voorraad+artikelen.c.bestelsaldo\ < artikelen.c.reserveringsaldo, artikelen.c.categorie > 4))\ .values(art_bestelgrootte = artikelen.c.reserveringsaldo \ - artikelen.c.art_voorraad - artikelen.c.bestelsaldo) conn.execute(updart) class MyWindow(QDialog): def __init__(self, data_list, header, *args): QWidget.__init__( self, *args, ) self.setGeometry(100, 50, 1800, 900) self.setWindowTitle('Artikelen bestellijst') self.setWindowIcon(QIcon('./images/logos/logo.jpg')) self.setWindowFlags(self.windowFlags() | Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint) table_model = MyTableModel(self, data_list, header) table_view = QTableView() table_view.setModel(table_model) font = QFont("Arial", 10) table_view.setFont(font) table_view.resizeColumnsToContents() table_view.setSelectionBehavior(QTableView.SelectRows) table_view.setItemDelegateForColumn(10, showImage(self)) table_view.setColumnWidth(10, 100) table_view.verticalHeader().setDefaultSectionSize(75) table_view.clicked.connect(showArtikel) layout = QVBoxLayout(self) layout.addWidget(table_view) self.setLayout(layout) class MyTableModel(QAbstractTableModel): def __init__(self, parent, mylist, header, *args): QAbstractTableModel.__init__(self, parent, *args) self.mylist = mylist self.header = header def rowCount(self, parent): return len(self.mylist) def columnCount(self, parent): return len(self.mylist[0]) def data(self, index, role): if not index.isValid(): return None #elif index.column() == 9 and role == Qt.DecorationRole: # alternatief picture echter # return QPixmap(index.data()) # met tekst rechts van path elif role != Qt.DisplayRole: return None return str(self.mylist[index.row()][index.column()]) def headerData(self, col, orientation, role): if orientation == Qt.Horizontal and role == Qt.DisplayRole: return self.header[col] return None class showImage(QStyledItemDelegate): def __init__(self, parent): QStyledItemDelegate.__init__(self, parent) def paint(self, painter, option, index): painter.fillRect(option.rect, QColor(255, 255, 255)) image = QImage(index.data()) pixmap = QPixmap(image) pixmap.scaled(256, 256) return (painter.drawPixmap(option.rect, pixmap)) header = ['Artikelnr', 'Omschrijving', 'Prijs', 'Voorraad', 'Eenheid','MinVrd',\ 'BestelSaldo', 'Bestelstatus', 'ReserveringSaldo', 'Categorie', 'Afbeelding',\ 'Te bestellen'] data_list = [] for row in rpartikelen: data_list += [(row)] def showArtikel(idx): martikelnr = idx.data() if idx.column() == 0: engine = create_engine( 'postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() sel = select([artikelen ]).where(artikelen.c.artikelID == martikelnr) rpartikel = con.execute(sel).first() class Widget(QDialog): def __init__(self, parent=None): super(Widget, self).__init__(parent) self.setWindowTitle("Artikelen Bestellijst") self.setWindowIcon(QIcon('./images/logos/logo.jpg')) self.setFont(QFont('Arial', 10)) self.Artikelnummer = QLabel() q1Edit = QLineEdit(str(rpartikel[0])) q1Edit.setFixedWidth(100) q1Edit.setDisabled(True) q1Edit.setFont(QFont("Arial", 10)) self.Artikelomschrijving = QLabel() q2Edit = QLineEdit(str(rpartikel[1])) q2Edit.setFixedWidth(400) q2Edit.setFont(QFont("Arial", 10)) q2Edit.setDisabled(True) self.Artikelprijs = QLabel() q3Edit = QLineEdit(str(rpartikel[2])) q3Edit.setFixedWidth(100) q3Edit.setFont(QFont("Arial", 10)) q3Edit.setDisabled(True) self.Artikelvoorraad = QLabel() q4Edit = QLineEdit(str(rpartikel[3])) q4Edit.setFixedWidth(100) q4Edit.setFont(QFont("Arial", 10)) q4Edit.setDisabled(True) self.Artikeleenheid = QLabel() q5Edit = QLineEdit(rpartikel[4]) q5Edit.setFixedWidth(100) q5Edit.setFont(QFont("Arial", 10)) q5Edit.setDisabled(True) self.Minimumvoorraad = QLabel() q6Edit = QLineEdit(str(rpartikel[5])) q6Edit.setFixedWidth(100) q6Edit.setFont(QFont("Arial", 10)) q6Edit.setDisabled(True) self.Bestelsaldo = QLabel() q16Edit = QLineEdit(str(rpartikel[6])) q16Edit.setFixedWidth(100) q16Edit.setFont(QFont("Arial", 10)) q16Edit.setDisabled(True) self.Bestelstatus = QLabel() q7Edit = QLineEdit(str(rpartikel[7])) q7Edit.setFixedWidth(100) q7Edit.setFont(QFont("Arial", 10)) q7Edit.setDisabled(True) self.Reserveringsaldo = QLabel() q12Edit = QLineEdit(str(rpartikel[8])) q12Edit.setFixedWidth(100) q12Edit.setFont(QFont("Arial", 10)) q12Edit.setDisabled(True) self.Categorie = QLabel() q8Edit = QLineEdit(str(rpartikel[9])) q8Edit.setFixedWidth(100) q8Edit.setFont(QFont("Arial", 10)) q8Edit.setDisabled(True) self.Bestelhoeveelheid = QLabel() if rpartikel[9] > 4: q9Edit = QLineEdit( str(rpartikel[8] - rpartikel[6] - rpartikel[3])) elif rpartikel[9] < 5: q9Edit = QLineEdit(str(rpartikel[11])) q9Edit.setFixedWidth(100) q9Edit.setFont(QFont("Arial", 10)) q9Edit.setDisabled(True) grid = QGridLayout() grid.setSpacing(20) lbl = QLabel() pixmap = QPixmap('./images/logos/verbinding.jpg') lbl.setPixmap(pixmap) grid.addWidget(lbl, 0, 0, 1, 2) logo = QLabel() pixmap = QPixmap('./images/logos/logo.jpg') logo.setPixmap(pixmap) grid.addWidget(logo, 0, 2, 1, 3, Qt.AlignRight) grid.addWidget(QLabel('Artikelnummer'), 1, 0, 2, 1) grid.addWidget(q1Edit, 1, 1, 2, 1) grid.addWidget(QLabel('Artikelomschrijving'), 3, 0) grid.addWidget(q2Edit, 3, 1, 1, 3) grid.addWidget(QLabel('Eenheid'), 5, 0) grid.addWidget(q5Edit, 5, 1) grid.addWidget(QLabel('Artikelprijs'), 5, 2) grid.addWidget(q3Edit, 5, 3) grid.addWidget(QLabel('Voorraad'), 6, 0) grid.addWidget(q4Edit, 6, 1) grid.addWidget(QLabel('Minimumvoorraad'), 6, 2) grid.addWidget(q6Edit, 6, 3) grid.addWidget(QLabel('Bestelsaldo'), 7, 0) grid.addWidget(q16Edit, 7, 1) grid.addWidget(QLabel('Reserveringsaldo '), 8, 0) grid.addWidget(q12Edit, 8, 1) grid.addWidget(QLabel('BestelStatus'), 7, 2) grid.addWidget(q7Edit, 7, 3) grid.addWidget(QLabel('Categorie'), 8, 2) grid.addWidget(q8Edit, 8, 3) grid.addWidget(QLabel('Te Bestellen'), 9, 0) grid.addWidget(q9Edit, 9, 1) pixmap = QPixmap(rpartikel[10]) lbl2 = QLabel(self) lbl2.setPixmap(pixmap) grid.addWidget(lbl2, 1, 2, 2, 2, Qt.AlignRight) grid.addWidget( QLabel( '\u00A9 2017 all rights reserved [email protected]' ), 11, 0, 1, 4, Qt.AlignCenter) cancelBtn = QPushButton('Sluiten') cancelBtn.clicked.connect(self.close) grid.addWidget(cancelBtn, 10, 2, 1, 1, Qt.AlignRight) cancelBtn.setFont(QFont("Arial", 10)) cancelBtn.setFixedWidth(100) cancelBtn.setStyleSheet( "color: black; background-color: gainsboro") bestelBtn = QPushButton('Bestelbrief') bestelBtn.clicked.connect( lambda: bestelBrief(rpartikel, bestelBtn)) grid.addWidget(bestelBtn, 10, 3, 1, 1, Qt.AlignRight) bestelBtn.setFont(QFont("Arial", 10)) bestelBtn.setFixedWidth(100) bestelBtn.setStyleSheet( "color: black; background-color: gainsboro") self.setLayout(grid) self.setGeometry(500, 100, 350, 300) window = Widget() window.exec_() win = MyWindow(data_list, header) win.exec_() hoofdMenu(m_email)
def koppelCalc(mcalnr, mwerknr, mwerkomschr, m_email): msgBox=QMessageBox() msgBox.setWindowIcon(QIcon('./images/logos/logo.jpg')) msgBox.setWindowTitle("Begroting Koppelen") msgBox.setIcon(QMessageBox.Warning) msgBox.setText('Omschrijving: '+mwerkomschr+'\nDeze calculatie alleen koppelen\nindien gegevens definitief zijn\nDoorgaan?') msgBox.setStandardButtons(QMessageBox.Yes) msgBox.addButton(QMessageBox.No) msgBox.setDefaultButton(QMessageBox.Yes) if(msgBox.exec_() == QMessageBox.Yes): metadata = MetaData() icalculaties = Table('icalculaties', metadata, Column('icalcID', Integer(), primary_key=True), Column('iclusterID', None, ForeignKey('iclusters.iclusterID')), Column('koppelnummer', Integer), Column('werkomschrijving', String), Column('verwerkt', Integer), Column('icalculatie', Integer), Column('omschrijving', String), Column('hoeveelheid', Float), Column('eenheid', String), Column('prijs', Float), Column('materialen', Float), Column('lonen', Float), Column('szagen', Float), Column('zagen', Float), Column('sschaven', Float), Column('schaven', Float), Column('ssteken', Float), Column('steken', Float), Column('sboren', Float), Column('boren', Float), Column('sfrezen', Float), Column('frezen', Float), Column('sdraaien_klein', Float), Column('draaien_klein', Float), Column('sdraaien_groot', Float), Column('draaien_groot', Float), Column('stappen', Float), Column('tappen', Float), Column('snube_draaien', Float), Column('nube_draaien', Float), Column('snube_bewerken', Float), Column('nube_bewerken', Float), Column('sknippen', Float), Column('knippen', Float), Column('skanten', Float), Column('kanten', Float), Column('sstansen', Float), Column('stansen', Float), Column('slassen_co2', Float), Column('lassen_co2', Float), Column('slassen_hand', Float), Column('lassen_hand', Float), Column('sverpakken', Float), Column('verpakken', Float), Column('sverzinken', Float), Column('verzinken', Float), Column('smoffelen', Float), Column('moffelen', Float), Column('sschilderen', Float), Column('schilderen', Float), Column('sspuiten', Float), Column('spuiten', Float), Column('sponsen', Float), Column('ponsen', Float), Column('spersen', Float), Column('persen', Float), Column('sgritstralen', Float), Column('gritstralen', Float), Column('smontage', Float), Column('montage', Float)) orders_intern = Table('orders_intern', metadata, Column('werkorderID', Integer(), primary_key=True), Column('werkomschrijving', String), Column('icalculatienummer', Integer), Column('begroot_totaal', Float), Column('begr_materialen', Float), Column('begr_lonen', Float), Column('hoeveelheid', Float), Column('szagen', Float), Column('bzagen', Float), Column('sschaven', Float), Column('bschaven', Float), Column('ssteken', Float), Column('bsteken', Float), Column('sboren', Float), Column('bboren', Float), Column('sfrezen', Float), Column('bfrezen', Float), Column('sdraaien_klein', Float), Column('bdraaien_klein', Float), Column('sdraaien_groot', Float), Column('bdraaien_groot', Float), Column('stappen', Float), Column('btappen', Float), Column('snube_draaien', Float), Column('bnube_draaien', Float), Column('snube_bewerken', Float), Column('bnube_bewerken', Float), Column('sknippen', Float), Column('bknippen', Float), Column('skanten', Float), Column('bkanten', Float), Column('sstansen', Float), Column('bstansen', Float), Column('slassen_co2', Float), Column('blassen_co2', Float), Column('slassen_hand', Float), Column('blassen_hand', Float), Column('sverpakken', Float), Column('bverpakken', Float), Column('sverzinken', Float), Column('bverzinken', Float), Column('smoffelen', Float), Column('bmoffelen', Float), Column('sschilderen', Float), Column('bschilderen', Float), Column('sspuiten', Float), Column('bspuiten', Float), Column('sponsen', Float), Column('bponsen', Float), Column('spersen', Float), Column('bpersen', Float), Column('sgritstralen', Float), Column('bgritstralen', Float), Column('smontage', Float), Column('bmontage', Float), Column('artikelID', Integer), Column('gereed', Float)) engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() selcal = select([icalculaties,orders_intern]).where(and_(icalculaties.c.icalculatie == mcalnr,\ icalculaties.c.verwerkt == 1, orders_intern.c.werkorderID == mwerknr)) rpcal = con.execute(selcal) for regel in rpcal: updcal = update(icalculaties).where(icalculaties.c.icalculatie == mcalnr)\ .values(koppelnummer = mwerknr, werkomschrijving = mwerkomschr, verwerkt = 2) con.execute(updcal) updwerk = update(orders_intern).where(orders_intern.c.werkorderID == mwerknr)\ .values(begroot_totaal = orders_intern.c.begroot_totaal+regel[9],\ begr_materialen = orders_intern.c.begr_materialen+regel[10],\ begr_lonen = orders_intern.c.begr_lonen+regel[11],\ szagen = orders_intern.c.szagen+regel[12],\ bzagen = orders_intern.c.bzagen+regel[13],\ sschaven = orders_intern.c.sschaven+regel[14],\ bschaven = orders_intern.c.bschaven+regel[15],\ ssteken = orders_intern.c.ssteken+regel[16],\ bsteken = orders_intern.c.bsteken+regel[17],\ sboren = orders_intern.c.sboren+regel[18],\ bboren = orders_intern.c.bboren+regel[19],\ sfrezen = orders_intern.c.sfrezen+regel[20],\ bfrezen = orders_intern.c.bfrezen+regel[21],\ sdraaien_klein = orders_intern.c.sdraaien_klein+regel[22],\ bdraaien_klein = orders_intern.c.bdraaien_klein+regel[23],\ sdraaien_groot = orders_intern.c.sdraaien_groot+regel[24] ,\ bdraaien_groot = orders_intern.c.bdraaien_groot+regel[25] ,\ stappen = orders_intern.c.stappen+regel[26],\ btappen = orders_intern.c.btappen+regel[27],\ snube_draaien = orders_intern.c.snube_draaien+regel[28],\ bnube_draaien = orders_intern.c.bnube_draaien+regel[29],\ snube_bewerken = orders_intern.c.snube_bewerken+regel[30],\ bnube_bewerken = orders_intern.c.bnube_bewerken+regel[31],\ sknippen = orders_intern.c.sknippen+regel[32],\ bknippen = orders_intern.c.bknippen+regel[33],\ skanten = orders_intern.c.skanten+regel[34],\ bkanten = orders_intern.c.bkanten+regel[35],\ sstansen = orders_intern.c.sstansen+regel[36],\ bstansen = orders_intern.c.bstansen+regel[37],\ slassen_co2 = orders_intern.c.slassen_co2+regel[38],\ blassen_co2 = orders_intern.c.blassen_co2+regel[39],\ slassen_hand = orders_intern.c.slassen_hand+regel[40],\ blassen_hand = orders_intern.c.blassen_hand+regel[41],\ sverpakken =orders_intern.c.sverpakken+regel[42],\ bverpakken =orders_intern.c.bverpakken+regel[43],\ sverzinken=orders_intern.c.sverzinken+regel[44],\ bverzinken=orders_intern.c.bverzinken+regel[45],\ smoffelen=orders_intern.c.smoffelen+regel[46],\ bmoffelen=orders_intern.c.bmoffelen+regel[47],\ sschilderen=orders_intern.c.sschilderen+regel[48],\ bschilderen=orders_intern.c.bschilderen+regel[49],\ sspuiten=orders_intern.c.sspuiten+regel[50],\ bspuiten=orders_intern.c.bspuiten+regel[51],\ sponsen=orders_intern.c.sponsen+regel[52],\ bponsen=orders_intern.c.bponsen+regel[53],\ spersen=orders_intern.c.spersen+regel[54],\ bpersen=orders_intern.c.bpersen+regel[55],\ sgritstralen=orders_intern.c.sgritstralen+regel[56],\ bgritstralen=orders_intern.c.bgritstralen+regel[57],\ smontage=orders_intern.c.smontage+regel[58], bmontage=orders_intern.c.bmontage+regel[59],\ icalculatienummer = mcalnr, hoeveelheid = regel[7]) con.execute(updwerk) materiaallijsten = Table('materiaallijsten', metadata, Column('matlijstID', Integer, primary_key=True), Column('icalculatie', Integer), Column('hoeveelheid', Float), Column('artikelID', None, ForeignKey('artikelen.artikelID')), Column('werknummerID', Integer), Column('orderinkoopID', Integer), Column('reserverings_datum', String), Column('levertijd_begin', String), Column('levertijd_end', String), Column('categorie', Integer)) artikelen = Table('artikelen', metadata, Column('artikelID', Integer(), primary_key=True), Column('artikelomschrijving', String), Column('art_eenheid', String), Column('reserveringsaldo', Float), Column('categorie', Integer), Column('bestelsaldo', Float), Column('artikelprijs', Float)) engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() selmat = select([materiaallijsten, artikelen]).where(and_(materiaallijsten.\ c.icalculatie == mcalnr, materiaallijsten.c.artikelID == artikelen.c.artikelID)) rpmat = con.execute(selmat) mboekd = str(datetime.datetime.now())[0:10] for row in rpmat: updres = update(materiaallijsten).where(and_(materiaallijsten.c.icalculatie == mcalnr,\ materiaallijsten.c.artikelID == artikelen.c.artikelID)).values(werknummerID = mwerknr,\ reserverings_datum = mboekd, categorie = artikelen.c.categorie) con.execute(updres) updart = update(artikelen).where(and_(materiaallijsten.c.artikelID ==\ artikelen.c.artikelID, materiaallijsten.c.icalculatie == mcalnr))\ .values(reserveringsaldo = artikelen.c.reserveringsaldo + materiaallijsten.c.hoeveelheid) con.execute(updart) params = Table('params', metadata, Column('paramID', Integer, primary_key=True), Column('tarief', Float), Column('item', String)) engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() selpar = select([params]).order_by(params.c.paramID) rppar = con.execute(selpar).fetchall() updprijs = update(artikelen).where(orders_intern.c.artikelID ==\ artikelen.c.artikelID).values(artikelprijs = (orders_intern.c.begroot_totaal/\ orders_intern.c.hoeveelheid)*(1+rppar[5][1])) con.execute(updprijs) gegevensOk() zoekBegroting(m_email) else: hoofdMenu(m_email)
def koppelCalc(mcalnr, mwerknr, mwerkomschr, m_email): msgBox = QMessageBox() msgBox.setWindowIcon(QIcon('./images/logos/logo.jpg')) msgBox.setWindowTitle("Begroting Koppelen") msgBox.setIcon(QMessageBox.Warning) msgBox.setText( 'Omschrijving: ' + mwerkomschr + '\nDeze calculatie alleen koppelen\nindien gegevens definitief zijn\nDoorgaan?' ) msgBox.setStandardButtons(QMessageBox.Yes) msgBox.addButton(QMessageBox.No) msgBox.setDefaultButton(QMessageBox.Yes) if (msgBox.exec_() == QMessageBox.Yes): metadata = MetaData() calculaties = Table( 'calculaties', metadata, Column('calcID', Integer(), primary_key=True), Column('clusterID', None, ForeignKey('clusters.clusterID')), Column('koppelnummer', Integer), Column('calculatie', Integer), Column('omschrijving', String), Column('hoeveelheid', Float), Column('eenheid', String), Column('prijs', Float), Column('materialen', Float), Column('lonen', Float), Column('diensten', Float), Column('materieel', Float), Column('inhuur', Float), Column('uren_constr', Float), Column('uren_mont', Float), Column('uren_retourlas', Float), Column('uren_telecom', Float), Column('uren_bfi', Float), Column('uren_voeding', Float), Column('uren_bvl', Float), Column('uren_spoorleg', Float), Column('uren_spoorlas', Float), Column('uren_inhuur', Float), Column('sleuvengraver', Float), Column('persapparaat', Float), Column('atlaskraan', Float), Column('kraan_groot', Float), Column('mainliner', Float), Column('hormachine', Float), Column('wagon', Float), Column('locomotor', Float), Column('locomotief', Float), Column('montagewagen', Float), Column('stormobiel', Float), Column('robeltrein', Float), Column('werkomschrijving', String), Column('verwerkt', Integer)) werken = Table('werken', metadata, Column('werknummerID', Integer(), primary_key=True), Column('aanneemsom', Float), Column('begr_materialen', Float), Column('begr_materieel', Float), Column('begr_inhuur', Float), Column('begr_constr_uren', Float), Column('begr_mont_uren', Float), Column('begr_retourlas_uren', Float), Column('begr_telecom_uren', Float), Column('begr_bfi_uren', Float), Column('begr_voeding_uren', Float), Column('begr_bvl_uren', Float), Column('begr_spoorleg_uren', Float), Column('begr_spoorlas_uren', Float), Column('begr_lonen', Float), Column('werkomschrijving', String), Column('calculatienummer', Integer)) engine = create_engine( 'postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() selcal = select([calculaties,werken]).where(and_(calculaties.c.calculatie == mcalnr,\ werken.c.werknummerID == mwerknr)) rpcal = con.execute(selcal) for regel in rpcal: updcal = update(calculaties).where(calculaties.c.calculatie == mcalnr)\ .values(koppelnummer = regel[37], werkomschrijving = regel[52], verwerkt = 2) con.execute(updcal) updwerk = update(werken).where(werken.c.werknummerID == mwerknr)\ .values(aanneemsom = werken.c.aanneemsom+regel[7],\ begr_materialen = werken.c.begr_materialen+regel[8],\ begr_materieel = werken.c.begr_materieel+regel[11],\ begr_lonen = werken.c.begr_lonen+regel[9],\ begr_inhuur = werken.c.begr_inhuur+regel[12],\ begr_constr_uren = werken.c.begr_constr_uren+regel[13],\ begr_mont_uren = werken.c.begr_mont_uren+regel[14],\ begr_retourlas_uren = werken.c.begr_retourlas_uren+regel[15],\ begr_telecom_uren = werken.c.begr_telecom_uren + regel[16],\ begr_bfi_uren = werken.c.begr_bfi_uren + regel[17],\ begr_voeding_uren = werken.c.begr_voeding_uren + regel[18],\ begr_bvl_uren = werken.c.begr_bvl_uren + regel[19] ,\ begr_spoorleg_uren = werken.c.begr_spoorleg_uren + regel[20],\ begr_spoorlas_uren = werken.c. begr_spoorlas_uren + regel[21],\ calculatienummer = mcalnr) con.execute(updwerk) materiaallijsten = Table( 'materiaallijsten', metadata, Column('matlijstID', Integer, primary_key=True), Column('calculatie', Integer), Column('hoeveelheid', Float), Column('artikelID', None, ForeignKey('artikelen.artikelID')), Column('werknummerID', Integer), Column('orderinkoopID', Integer), Column('reserverings_datum', String), Column('levertijd_begin', String), Column('levertijd_end', String), Column('categorie', Integer)) artikelen = Table('artikelen', metadata, Column('artikelID', Integer(), primary_key=True), Column('reserveringsaldo', Float), Column('categorie', Integer), Column('bestelsaldo', Float)) engine = create_engine( 'postgresql+psycopg2://postgres@localhost/bisystem') con = engine.connect() selmat = select([materiaallijsten, artikelen]).where(and_(materiaallijsten.\ c.calculatie == mcalnr, materiaallijsten.c.artikelID == artikelen.c.artikelID)) rpmat = con.execute(selmat) mboekd = str(datetime.datetime.now())[0:10] for row in rpmat: updres = update(materiaallijsten).where(and_(materiaallijsten.c.calculatie == mcalnr,\ materiaallijsten.c.artikelID == artikelen.c.artikelID)).values(werknummerID = mwerknr,\ reserverings_datum = mboekd, categorie = artikelen.c.categorie) con.execute(updres) updart = update(artikelen).where(and_(materiaallijsten.c.artikelID ==\ artikelen.c.artikelID, materiaallijsten.c.calculatie == mcalnr))\ .values(reserveringsaldo = artikelen.c.reserveringsaldo + materiaallijsten.c.hoeveelheid) con.execute(updart) gegevensOk() zoekBegroting(m_email) else: hoofdMenu(m_email)
def windowSluit(self, m_email): self.setAttribute(Qt.WA_DeleteOnClose) self.close() hoofdMenu(m_email)
def barcodeScan(m_email, mret): class widget(QDialog): def __init__(self): super(widget,self).__init__() self.setWindowTitle("Balieverkoop") self.setWindowIcon(QIcon('./images/logos/logo.jpg')) self.setWindowFlags(self.windowFlags()| Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint) self.setStyleSheet("background-color: #D9E1DF") self.setFont(QFont('Arial', 10)) self.q1Edit = QLineEdit('') self.q1Edit.setStyleSheet("color: black; background-color: #F8F7EE") self.q1Edit.setFont(QFont("Arial", 12)) self.q1Edit.setFixedSize(155, 30) self.q1Edit.setFocus(True) reg_ex = QRegExp("^[0-9]{13}$") input_validator = QRegExpValidator(reg_ex, self.q1Edit) self.q1Edit.setValidator(input_validator) self.q1Edit.returnPressed.connect(lambda: set_barcodenr(self)) self.qspin = QSpinBox() self.qspin.setRange(1, 99) self.qspin.setValue(1) self.qspin.setFocusPolicy(Qt.NoFocus) self.qspin.lineEdit().setReadOnly(True) self.qspin.setFrame(True) self.qspin.setFont(QFont('Arial', 12)) self.qspin.setStyleSheet("color: black; background-color: #F8F7EE") self.qspin.setFixedSize(60, 30) def valuechange(): self.qspin.setValue(self.qspin.value()) self.qspin.valueChanged.connect(valuechange) grid = QGridLayout() grid.setSpacing(10) koplbl = QLabel('Pandora kassasysteem') koplbl.setStyleSheet("color:rgba(45, 83, 115, 255); font: 30pt Comic Sans MS") grid.addWidget(koplbl, 1, 0, 1, 3, Qt.AlignCenter) self.view = QTextEdit() self.view.setDisabled(True) self.view.setStyleSheet('color: black; background-color: #F8F7EE') self.mlist = ['Artikelnr Omschrijving\nAantal Prijs Subtotaal BTW\n\n'] self.view.setText(self.mlist[0]) self.view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.view.setFont(QFont("Arial", 12)) self.view.setFocusPolicy(Qt.NoFocus) self.view.setFixedSize(550, 420) grid.addWidget(self.view, 2 ,0, 1, 3, Qt.AlignCenter) self.albl = QLabel('') self.albl.setStyleSheet("font: bold 18px; color: red") grid.addWidget(self.albl, 3, 0, 1, 3, Qt.AlignCenter) lbl1 = QLabel('Barcodescan') lbl1.setFont(QFont("Arial", 12)) grid.addWidget(lbl1, 6, 1, 1, 1, Qt.AlignRight) grid.addWidget(self.q1Edit , 6, 2, 1, 1, Qt.AlignRight) lbl2 = QLabel('Aantal ') lbl2.setFont(QFont("Arial", 12)) grid.addWidget(lbl2, 7, 2, 1, 1, Qt.AlignCenter) grid.addWidget(self.qspin, 7, 2, 1, 1, Qt.AlignRight) if mret: self.plusminBtn = QPushButton('+') self.plusminBtn.setCheckable(True) self.plusminBtn.clicked.connect(lambda: plusminChange(self)) grid.addWidget(self.plusminBtn, 7, 2) self.plusminBtn.setFocusPolicy(Qt.NoFocus) self.plusminBtn.setFixedSize(20, 30) self.plusminBtn.setStyleSheet("color: black; background-color: gainsboro") lbl = QLabel() pixmap = QPixmap('./images/logos/verbinding.jpg') lbl.setPixmap(pixmap) grid.addWidget(lbl , 0, 0, 1, 2) logo = QLabel() pixmap = QPixmap('./images/logos/logo.jpg') logo.setPixmap(pixmap) grid.addWidget(logo , 0, 2, 1 ,1, Qt.AlignRight) lbl3 = QLabel('\u00A9 2017 all rights reserved [email protected]') lbl3.setFont(QFont("Arial", 10)) grid.addWidget(lbl3, 10, 0, 1, 3, Qt.AlignCenter) self.printBtn = QPushButton('Printen') self.printBtn.clicked.connect(lambda: printBon(self)) grid.addWidget(self.printBtn, 9, 2, 1, 1, Qt.AlignRight) self.printBtn.setFont(QFont("Arial",12)) self.printBtn.setFocusPolicy(Qt.NoFocus) self.printBtn.setFixedWidth(100) self.printBtn.setStyleSheet("color: black; background-color: gainsboro") self.closeBtn = QPushButton('Sluiten') self.closeBtn.clicked.connect(lambda: windowSluit(self, m_email)) grid.addWidget(self.closeBtn, 9, 1, 1, 2, Qt.AlignCenter) self.closeBtn.setFont(QFont("Arial",12)) self.closeBtn.setFocusPolicy(Qt.NoFocus) self.closeBtn.setFixedWidth(100) self.closeBtn.setStyleSheet("color: black; background-color: gainsboro") infoBtn = QPushButton('Informatie') infoBtn.clicked.connect(lambda: info()) grid.addWidget(infoBtn, 9, 1) infoBtn.setFont(QFont("Arial",12)) infoBtn.setFocusPolicy(Qt.NoFocus) infoBtn.setFixedWidth(100) infoBtn.setStyleSheet("color: black; background-color: gainsboro") self.nextBtn = QPushButton('Volgende Klant') self.nextBtn.clicked.connect(lambda: nextClient(self)) grid.addWidget(self.nextBtn, 7, 1, 2, 1, Qt.AlignCenter) self.nextBtn.setFont(QFont("Arial",12)) self.nextBtn.setFocusPolicy(Qt.NoFocus) self.nextBtn.setFixedSize(160, 60) self.nextBtn.setStyleSheet("font: 12pt Arial; color:black;\ background-color: gainsboro") kassa = QLabel() pixmap = QPixmap('./images/logos/kassa.png') kassa.setPixmap(pixmap.scaled(150, 150)) grid.addWidget(kassa, 6, 0, 4, 1, Qt.AlignCenter) self.setLayout(grid) self.setGeometry(600, 100, 600, 300) window = widget() window.exec_() hoofdMenu(m_email)
def windowSluit(self, m_email): self.close() hoofdMenu(m_email)
def toonBest(rp_bestellingen, m_email): class MyWindow(QDialog): def __init__(self, data_list, header, *args): QWidget.__init__( self, *args, ) self.setGeometry(50, 50, 1500, 900) self.setWindowTitle('Besteloverzicht') self.setWindowIcon(QIcon('./images/logos/logo.jpg')) self.setWindowFlags(self.windowFlags() | Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint) table_model = MyTableModel(self, data_list, header) table_view = QTableView() table_view.setModel(table_model) font = QFont("Arial", 10) table_view.setFont(font) table_view.resizeColumnsToContents() table_view.setSelectionBehavior(QTableView.SelectRows) table_view.setColumnWidth(8, 100) table_view.verticalHeader().setDefaultSectionSize(75) table_view.setItemDelegateForColumn(8, showImage(self)) #table_view.clicked.connect(showBestelling) layout = QVBoxLayout(self) layout.addWidget(table_view) self.setLayout(layout) class MyTableModel(QAbstractTableModel): def __init__(self, parent, mylist, header, *args): QAbstractTableModel.__init__(self, parent, *args) self.mylist = mylist self.header = header def rowCount(self, parent): return len(self.mylist) def columnCount(self, parent): return len(self.mylist[0]) def data(self, index, role): veld = self.mylist[index.row()][index.column()] if not index.isValid(): return None elif role == Qt.TextAlignmentRole and (type(veld) == float or type(veld) == int): return Qt.AlignRight | Qt.AlignVCenter elif role != Qt.DisplayRole: return None if type(veld) == float: return '{:12.2f}'.format(veld) else: return veld def headerData(self, col, orientation, role): if orientation == Qt.Horizontal and role == Qt.DisplayRole: return self.header[col] return None class showImage(QStyledItemDelegate): def __init__(self, parent): QStyledItemDelegate.__init__(self, parent) def paint(self, painter, option, index): painter.fillRect(option.rect, QColor(255, 255, 255)) image = QImage(index.data()) pixmap = QPixmap(image) pixmap.scaled(256, 256) return (painter.drawPixmap(option.rect, pixmap)) header = ['Bestelnummer','Besteldatum', 'Betaaldatum','Leverdatum', 'Hoeveelheid',\ 'Artikelnummer','Omschrijving','Verkoopprijs', 'Afbeelding', 'Retour'] data_list = [] for row in rp_bestellingen: data_list += [(row)] win = MyWindow(data_list, header) win.exec_() hoofdMenu(m_email)