Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
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)
Esempio n. 4
0
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)
Esempio n. 5
0
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)
Esempio n. 8
0
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)
Esempio n. 12
0
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)
Esempio n. 13
0
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)
Esempio n. 14
0
def windowSluit(m_email, self):
    self.close()
    hoofdMenu(m_email)
Esempio n. 15
0
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)
Esempio n. 16
0
def sluiten(self, m_email):
    self.close()
    hoofdMenu(m_email)
Esempio n. 17
0
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)
Esempio n. 18
0
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)
Esempio n. 20
0
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)
Esempio n. 21
0
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)
Esempio n. 22
0
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)
Esempio n. 23
0
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)
Esempio n. 24
0
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)
Esempio n. 25
0
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)
Esempio n. 26
0
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)
Esempio n. 28
0
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)
Esempio n. 29
0
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)