Слияние кода завершено, страница обновится автоматически
from login import hoofdMenu
from postcode import checkpostcode
import datetime
from PyQt5.QtCore import Qt, QRegExp, QAbstractTableModel
from PyQt5.QtGui import QFont, QPixmap, QRegExpValidator, QIcon
from PyQt5.QtWidgets import QLabel, QPushButton, QCheckBox, QVBoxLayout,\
QMessageBox, QLineEdit, QGridLayout, QDialog, QWidget,QTableView
from sqlalchemy import (Table, Column, Integer, String, Float, Boolean,\
MetaData, create_engine, ForeignKey)
from sqlalchemy.sql import select, update, insert, func, and_
def art_refresh(koppelnr, m_email, self):
self.close()
artikelAfroep(koppelnr, m_email)
def raap_refresh(koppelnr, self):
self.close()
raapLijst(koppelnr)
def _11check(mcontr):
number = str(mcontr)
total = 0
fullnumber = number
for i in range(8):
total += int(fullnumber[i])*(9-i)
checkdigit = total % 11
if checkdigit == 10:
checkdigit = 0
if checkdigit == int(fullnumber[8]):
return True
else:
return False
def windowSluit(self, m_email):
self.close()
hoofdMenu(m_email)
def foutWerknr():
msg = QMessageBox()
msg.setStyleSheet("color: black; background-color: gainsboro")
msg.setIcon(QMessageBox.Warning)
msg.setText('Werknummer niet gevonden\nWerknummer bestaat niet!')
msg.setWindowTitle('Gegevens!')
msg.exec_()
def foutPostcode():
msg = QMessageBox()
msg.setStyleSheet("color: black; background-color: gainsboro")
msg.setIcon(QMessageBox.Warning)
msg.setText('Postcode/huisnummer combinatie bestaat niet!')
msg.setWindowTitle('Artikel afroepen')
msg.exec_()
def invoerOK():
msg = QMessageBox()
msg.setStyleSheet("color: black; background-color: gainsboro")
msg.setIcon(QMessageBox.Information)
msg.setText('Invoer gelukt!')
msg.setWindowTitle('Artikel afroepen')
msg.exec_()
def negVoorraad():
msg = QMessageBox()
msg.setStyleSheet("color: black; background-color: gainsboro")
msg.setWindowIcon(QIcon('./images/logos/logo.jpg'))
msg.setIcon(QMessageBox.Critical)
msg.setText('Te weinig voorraad\nvoor de transactie!')
msg.setWindowTitle('Artikel afroepen')
msg.exec_()
def foutHoev():
msg = QMessageBox()
msg.setStyleSheet("color: black; background-color: gainsboro")
msg.setWindowIcon(QIcon('./images/logos/logo.jpg'))
msg.setIcon(QMessageBox.Warning)
msg.setText('Geen wijzigingen\ndoorgevoerd!')
msg.setWindowTitle('Artikel afroepen')
msg.exec_()
def werkGereed():
msg = QMessageBox()
msg.setStyleSheet("color: black; background-color: gainsboro")
msg.setWindowIcon(QIcon('./images/logos/logo.jpg'))
msg.setIcon(QMessageBox.Warning)
msg.setText('Werknummer is afgemeld,\nboekingen niet meer mogelijk!')
msg.setWindowTitle('Artikel afroepen')
msg.exec_()
def geenRaaplijst(koppelnr):
msg = QMessageBox()
msg.setStyleSheet("color: black; background-color: gainsboro; font: 10pt Arial")
msg.setWindowIcon(QIcon('./images/logos/logo.jpg'))
msg.setIcon(QMessageBox.Warning)
msg.setText('Geen raapregels van werk '+str(koppelnr)+' aanwezig!')
msg.setWindowTitle('Raaplijst opvragen')
msg.exec_()
def zoekWerk(m_email, soort):
class Widget(QDialog):
def __init__(self, parent=None):
super(Widget, self).__init__(parent)
if soort == 0:
self.setWindowTitle("Werken intern wijzigen.")
else:
self.setWindowTitle("Werken extern wijzigen.")
self.setWindowIcon(QIcon('./images/logos/logo.jpg'))
self.setFont(QFont('Arial', 10))
self.Werknummer = QLabel()
werknEdit = QLineEdit()
werknEdit.setFixedWidth(100)
werknEdit.setFont(QFont("Arial",10))
werknEdit.textChanged.connect(self.werknChanged)
if soort == 0:
reg_ex = QRegExp('^[7]{1}[0-9]{8}$')
else:
reg_ex = QRegExp('^[8]{1}[0-9]{8}$')
input_validator = QRegExpValidator(reg_ex, werknEdit)
werknEdit.setValidator(input_validator)
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, 1, 1, 1, Qt.AlignRight)
grid.addWidget(QLabel('Werknummer'), 1, 0, 1, 1, Qt.AlignRight)
grid.addWidget(werknEdit, 1, 1)
zoekBtn = QPushButton('Zoeken')
zoekBtn.clicked.connect(self.accept)
grid.addWidget(zoekBtn, 2, 1)
zoekBtn.setFont(QFont("Arial",10))
zoekBtn.setFixedWidth(100)
zoekBtn.setStyleSheet("color: black; background-color: gainsboro")
sluitBtn = QPushButton('Sluiten')
sluitBtn.clicked.connect(lambda: windowSluit(self, m_email))
grid.addWidget(sluitBtn, 2, 0, 1, 1, Qt.AlignRight)
sluitBtn.setFont(QFont("Arial",10))
sluitBtn.setFixedWidth(100)
sluitBtn.setStyleSheet("color: black; background-color: gainsboro")
grid.addWidget(QLabel('\u00A9 2017 all rights reserved dj.jansen@casema.nl'), 3, 0, 1, 2, Qt.AlignCenter)
self.setLayout(grid)
self.setGeometry(500, 300, 150, 150)
def werknChanged(self, text):
self.Werknummer.setText(text)
def returnwerkn(self):
return self.Werknummer.text()
@staticmethod
def getData(parent=None):
dialog = Widget(parent)
dialog.exec_()
return [dialog.returnwerkn()]
window = Widget()
data = window.getData()
if data[0]:
koppelnr = data[0]
else:
zoekWerk(m_email, soort)
metadata = MetaData()
if koppelnr[0] == '8':
werken = Table('werken', metadata,
Column('werknummerID', Integer(), primary_key=True),
Column('voortgangstatus', String))
engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem')
conn = engine.connect()
s = select([werken]).where(werken.c.werknummerID == int(koppelnr))
rp = conn.execute(s).first()
elif koppelnr[0] == '7':
orders_intern = Table('orders_intern', metadata,
Column('werkorderID', Integer(), primary_key=True),
Column('voortgangstatus', String))
engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem')
conn = engine.connect()
s =select([orders_intern]).where(orders_intern.c.werkorderID == int(koppelnr))
rp = conn.execute(s).first()
if not rp:
foutWerknr()
zoekWerk(m_email, soort)
elif rp[1] == 'H':
werkGereed()
zoekWerk(m_email, soort)
else:
koppelnr = int(koppelnr)
artikelAfroep(koppelnr, m_email)
def raapLijst(koppelnr):
class MyWindow(QDialog):
def __init__(self, data_list, header, *args):
QWidget.__init__(self, *args,)
self.setGeometry(50, 50, 1000, 900)
self.setWindowTitle('Raaplijst 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.setColumnHidden(11, True)
table_view.setColumnHidden(12, True)
#table_view.clicked.connect(selectRow)
table_view.clicked.connect(opvraagAfroep)
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
metadata = MetaData()
raaplijst = Table('raaplijst', metadata,
Column('lijstID', Integer,primary_key=True),
Column('artikelID', Integer),
Column('werkorder', Integer),
Column('afroep', Float),
Column('leverdatum', String),
Column('geleverd', Float),
Column('meerwerk', Boolean),
Column('postcode', String),
Column('huisnummer', String),
Column('toevoeging', String),
Column('alternatief', String),
Column('straat', String),
Column('woonplaats', String))
engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem')
con = engine.connect()
header = ['LijstID','Artikelnr','Werkorder','Afroep','Leverdatum','Geleverd',\
'Meerwerk','Postcode', 'Huisnummer','Toevoeging', 'Alternatief Adres',\
'Straat', 'Woonplaats']
selafr = select([raaplijst]).where(and_(raaplijst.c.werkorder == koppelnr,\
raaplijst.c.afroep != 0)).order_by(raaplijst.c.werkorder, raaplijst.c.leverdatum)
if con.execute(selafr).fetchone():
rpafr = con.execute(selafr)
else:
geenRaaplijst(koppelnr)
return
data_list=[]
for row in rpafr:
data_list += [(row)]
def opvraagAfroep(idx):
mlijstnr = idx.data()
if idx.column() == 0:
metadata = MetaData()
raaplijst = Table('raaplijst', metadata,
Column('lijstID', Integer,primary_key=True),
Column('artikelID', Integer),
Column('werkorder', Integer),
Column('afroep', Float),
Column('leverdatum', String),
Column('geleverd', Float),
Column('meerwerk', Boolean),
Column('postcode', String),
Column('huisnummer', String),
Column('toevoeging', String),
Column('alternatief', String))
if str(koppelnr)[0] == '7':
materiaallijsten = Table('materiaallijsten', metadata,
Column('artikelID', Integer),
Column('icalculatie', Integer),
Column('afroep', Float),
Column('resterend', Float))
icalculaties = Table('icalculaties', metadata,
Column('icalculatie', Integer),
Column('koppelnummer', Integer))
engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem')
con = engine.connect()
selmc = select([raaplijst, materiaallijsten,icalculaties]).where(and_(raaplijst\
.c.lijstID == mlijstnr, raaplijst.c.werkorder == icalculaties.c.koppelnummer,\
icalculaties.c.icalculatie == materiaallijsten.c.icalculatie,\
raaplijst.c.artikelID == materiaallijsten.c.artikelID))
rpmc = con.execute(selmc).first()
elif str(koppelnr)[0] == '8':
materiaallijsten = Table('materiaallijsten', metadata,
Column('artikelID', Integer),
Column('calculatie', Integer),
Column('afroep', Float),
Column('resterend', Float))
calculaties = Table('calculaties', metadata,
Column('calculatie', Integer),
Column('koppelnummer', Integer))
engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem')
con = engine.connect()
selmc = select([raaplijst, materiaallijsten,calculaties]).where(and_(raaplijst\
.c.lijstID == mlijstnr, raaplijst.c.werkorder == calculaties.c.koppelnummer,\
calculaties.c.calculatie == materiaallijsten.c.calculatie,\
raaplijst.c.artikelID == materiaallijsten.c.artikelID))
rpmc = con.execute(selmc).first()
engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem')
con = engine.connect()
selrl = select([raaplijst]).where(and_(raaplijst.c.lijstID==mlijstnr,\
raaplijst.c.werkorder == koppelnr))
rprl = con.execute(selrl).first()
mresterend = rpmc[14]
mmmstatus = rprl[6]
mlever = rprl[4]
mafroep = rprl[3]
mgeleverd = rprl[5]
mpostcode = rprl[7]
mhuisnr = rprl[8]
mtoev = rprl[9]
maltern = rprl[10]
if mhuisnr != '':
mstrpl = checkpostcode(mpostcode,int(mhuisnr))
mstraat = mstrpl[0]
mplaats = mstrpl[1]
class Widget(QDialog):
def __init__(self, parent=None):
super(Widget, self).__init__(parent)
self.setWindowTitle("Materiaalafroep opvragen")
self.setWindowIcon(QIcon('./images/logos/logo.jpg'))
self.setFont(QFont('Arial', 10))
self.Werknummer = QLabel()
zkwerknEdit = QLineEdit(str(koppelnr))
zkwerknEdit.setAlignment(Qt.AlignRight)
zkwerknEdit.setFixedWidth(100)
zkwerknEdit.setStyleSheet("QLineEdit { font-size: 10pt; font-family: Arial; color: black }")
zkwerknEdit.setDisabled(True)
self.Artikelnummer = QLabel()
artEdit = QLineEdit(str(rpmc[1]))
artEdit.setAlignment(Qt.AlignRight)
artEdit.setFixedWidth(100)
artEdit.setStyleSheet("QLineEdit { font-size: 10pt; font-family: Arial; color: black }")
artEdit.setDisabled(True)
self.Leverdatum = QLabel()
leverEdit = QLineEdit(str(mlever))
leverEdit.setFixedWidth(100)
leverEdit.setStyleSheet("QLineEdit { font-size: 10pt; font-family: Arial; color: black }")
leverEdit.setDisabled(True)
self.Afroep = QLabel()
afroepEdit = QLineEdit('{:12.2f}'.format(mafroep))
afroepEdit.setFixedWidth(80)
afroepEdit.setAlignment(Qt.AlignRight)
afroepEdit.setStyleSheet("QLineEdit { font-size: 10pt; font-family: Arial; color: black }")
afroepEdit.setDisabled(True)
self.Geleverd = QLabel()
geleverdEdit = QLineEdit('{:12.2f}'.format(mgeleverd))
geleverdEdit.setFixedWidth(80)
geleverdEdit.setAlignment(Qt.AlignRight)
geleverdEdit.setStyleSheet("QLineEdit { font-size: 10pt; font-family: Arial; color: black }")
geleverdEdit.setDisabled(True)
self.Resterend = QLabel()
restEdit = QLineEdit('{:12.2f}'.format(mresterend))
restEdit.setFixedWidth(80)
restEdit.setAlignment(Qt.AlignRight)
restEdit.setStyleSheet("QLineEdit { font-size: 10pt; font-family: Arial; color: black }")
restEdit.setDisabled(True)
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, 2, 1, 1, Qt.AlignRight)
lbl1 = QLabel('Werknummer')
lbl1.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
grid.addWidget(lbl1, 1, 0)
grid.addWidget(zkwerknEdit, 1, 1)
lbl2 = QLabel('Artikelnummer')
lbl2.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
grid.addWidget(lbl2, 2, 0)
grid.addWidget(artEdit, 2, 1)
lbl3 = QLabel('Leverdatum')
lbl3.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
grid.addWidget(lbl3, 3, 0)
grid.addWidget(leverEdit, 3 , 1)
lbl4 = QLabel('Afroep')
lbl4.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
grid.addWidget(lbl4, 4, 0)
grid.addWidget(afroepEdit, 4 , 1)
if mmmstatus:
grid.addWidget(QLabel('Meerwerk'), 4, 2)
lbl5 = QLabel('Geleverd')
lbl5.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
grid.addWidget(lbl5, 5, 0)
grid.addWidget(geleverdEdit, 5 , 1)
if mmmstatus:
grid.addWidget(QLabel('Meerwerk'), 5, 2)
lbl6 = QLabel('Resterend')
lbl6.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
grid.addWidget(lbl6, 6, 0)
grid.addWidget(restEdit, 6 , 1)
if mpostcode and mhuisnr:
grid.addWidget(QLabel('Afleveradres: '+mstraat+' '+str(mhuisnr)+' '+mtoev), 7, 0, 1 ,3)
grid.addWidget(QLabel('Woonplaats: '+mpostcode+' '+mplaats), 8, 0, 1, 3)
if maltern:
grid.addWidget(QLabel('Alternatief adres: '+maltern), 9, 0, 1 ,3)
self.setLayout(grid)
self.setGeometry(500, 300, 150, 150)
cancelBtn = QPushButton('Sluiten')
cancelBtn.clicked.connect(self.accept)
cancelBtn.setStyleSheet("color: black; background-color: gainsboro")
grid.addWidget(cancelBtn,10, 2)
cancelBtn.setFont(QFont("Arial",10))
cancelBtn.setFixedWidth(100)
grid.addWidget(QLabel('\u00A9 2017 all rights reserved dj.jansen@casema.nl'), 11, 0, 1, 3, Qt.AlignCenter)
window = Widget()
window.exec_()
return(koppelnr)
win = MyWindow(data_list, header)
win.exec_()
def artikelAfroep(koppelnr, m_email):
class MyWindow(QDialog):
def __init__(self, data_list, header, *args):
QWidget.__init__(self, *args,)
self.setWindowTitle('Afroepen Materialen')
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.setColumnHidden(2,True)
table_view.setColumnHidden(3,True)
table_view.setColumnHidden(5,True)
#table_view.clicked.connect(selectRow)
table_view.clicked.connect(artAfroep)
grid.addWidget(table_view, 0, 0, 1, 8)
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, 7, 1, 1, Qt.AlignRight)
freshBtn = QPushButton('Verversen')
freshBtn.clicked.connect(lambda: art_refresh(koppelnr, m_email, self))
freshBtn.setFont(QFont("Arial",10))
freshBtn.setFixedWidth(100)
freshBtn.setStyleSheet("color: black; background-color: gainsboro")
grid.addWidget(freshBtn, 1, 6, 1, 1, Qt.AlignRight)
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, 5)
grid.addWidget(QLabel('\u00A9 2017 all rights reserved dj.jansen@casema.nl'), 1, 2)
self.setLayout(grid)
self.setGeometry(50, 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):
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
metadata = MetaData()
if str(koppelnr)[0] == '7':
soort = 0
materiaallijsten = Table('materiaallijsten', metadata,
Column('matlijstID', Integer, primary_key=True),
Column('icalculatie', Integer),
Column('hoeveelheid', Float),
Column('artikelID', None, ForeignKey('artikelen.artikelID')),
Column('resterend', Float),
Column('afroep', Float))
artikelen = Table('artikelen', metadata,
Column('artikelID', Integer, primary_key=True),
Column('artikelomschrijving', String))
icalculaties = Table('icalculaties', metadata,
Column('icalcID', Integer, primary_key=True),
Column('icalculatie', Integer),
Column('koppelnummer', Integer))
orders_intern = Table('orders_intern', metadata,
Column('werkorderID', Integer, primary_key=True))
engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem')
con = engine.connect()
selcl = select([icalculaties]).where(icalculaties.c.koppelnummer == koppelnr)
rpcl = con.execute(selcl).first()
selam = select([artikelen, materiaallijsten, orders_intern]).where(and_(artikelen.c.\
artikelID==materiaallijsten.c.artikelID, materiaallijsten.c.icalculatie == rpcl[1],\
orders_intern.c.werkorderID == koppelnr))
rpam = con.execute(selam)
elif str(koppelnr)[0] == '8':
soort = 1
materiaallijsten = Table('materiaallijsten', metadata,
Column('matlijstID', Integer, primary_key=True),
Column('calculatie', Integer),
Column('hoeveelheid', Float),
Column('artikelID', None, ForeignKey('artikelen.artikelID')),
Column('resterend', Float),
Column('afroep', Float))
artikelen = Table('artikelen', metadata,
Column('artikelID', Integer, primary_key=True),
Column('artikelomschrijving', String))
calculaties = Table('calculaties', metadata,
Column('calcID', Integer, primary_key=True),
Column('calculatie', Integer),
Column('koppelnummer', Integer))
werken = Table('werken', metadata,
Column('werknummerID', Integer, primary_key=True))
engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem')
con = engine.connect()
selcl = select([calculaties]).where(calculaties.c.koppelnummer == koppelnr)
rpcl = con.execute(selcl).first()
selam = select([artikelen, materiaallijsten, werken]).where(and_(artikelen.c.\
artikelID==materiaallijsten.c.artikelID, materiaallijsten.c.calculatie == rpcl[1],\
werken.c.werknummerID == koppelnr)).order_by(materiaallijsten.c.artikelID)
rpam = con.execute(selam)
header = ['Artikelnr','Artikelomschrijving','-','-','Hoeveelheid','-',\
'Resterend','Afroep', 'Werknummer']
data_list=[]
for row in rpam:
data_list += [(row)]
def artAfroep(idx):
martnr = idx.data()
if idx.column() == 0:
class Widget(QDialog):
def __init__(self, parent=None):
super(Widget, self).__init__(parent)
self.setWindowTitle("Materialen afroepen")
self.setWindowIcon(QIcon('./images/logos/logo.jpg'))
self.setFont(QFont('Arial', 10))
self.Werkorder = QLabel()
zkwerknEdit = QLineEdit(str(koppelnr))
zkwerknEdit.setAlignment(Qt.AlignRight)
zkwerknEdit.setFixedWidth(100)
zkwerknEdit.setStyleSheet("QLineEdit { font-size: 10pt; font-family: Arial; color: black }")
zkwerknEdit.setDisabled(True)
self.Artikelnummer = QLabel()
artEdit = QLineEdit(str(martnr))
artEdit.setAlignment(Qt.AlignRight)
artEdit.setFixedWidth(100)
artEdit.setStyleSheet("QLineEdit { font-size: 10pt; font-family: Arial; color: black }")
artEdit.setDisabled(True)
self.Hoeveelheid = QLabel()
hoevEdit = QLineEdit()
hoevEdit.setFixedWidth(80)
hoevEdit.setFont(QFont("Arial",10))
hoevEdit.textChanged.connect(self.hoevChanged)
reg_ex = QRegExp("^[-+]?[0-9]*\.?[0-9]+$")
input_validator = QRegExpValidator(reg_ex, hoevEdit)
hoevEdit.setValidator(input_validator)
self.Postcode = QLabel()
pcEdit = QLineEdit()
pcEdit.setFixedWidth(80)
font = QFont("Arial",10)
font.setCapitalization(QFont.AllUppercase)
pcEdit.setFont(font)
pcEdit.textChanged.connect(self.pcChanged)
reg_ex = QRegExp("^[0-9]{4}[A-Za-z]{2}$")
input_validator = QRegExpValidator(reg_ex, pcEdit)
pcEdit.setValidator(input_validator)
self.Huisnummer = QLabel()
hnoEdit = QLineEdit()
hnoEdit.setFixedWidth(60)
hnoEdit.setFont(QFont("Arial",10))
hnoEdit.textChanged.connect(self.hnoChanged)
reg_ex = QRegExp("^[0-9]{1,5}$")
input_validator = QRegExpValidator(reg_ex, hnoEdit)
hnoEdit.setValidator(input_validator)
self.Toevoeging = QLabel()
toevEdit = QLineEdit()
toevEdit.setFixedWidth(50)
toevEdit.setFont(QFont("Arial",10))
toevEdit.textChanged.connect(self.toevChanged)
reg_ex = QRegExp("^.{0,20}$")
input_validator = QRegExpValidator(reg_ex, toevEdit)
toevEdit.setValidator(input_validator)
self.Alternatief = QLabel()
altEdit = QLineEdit()
altEdit.setFixedWidth(280)
altEdit.setFont(QFont("Arial",10))
altEdit.textChanged.connect(self.altChanged)
reg_ex = QRegExp("^.{0,30}$")
input_validator = QRegExpValidator(reg_ex, altEdit)
altEdit.setValidator(input_validator)
grid = QGridLayout()
grid.setSpacing(20)
lbl = QLabel()
pixmap = QPixmap('./images/logos/verbinding.jpg')
lbl.setPixmap(pixmap)
grid.addWidget(lbl ,0, 0)
lbl4 = QLabel('Afroepen materialen samenstellen')
lbl4.setStyleSheet("font: 12pt Comic Sans MS")
grid.addWidget(lbl4, 0, 1)
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 dj.jansen@casema.nl'), 9, 0, 1, 3, Qt.AlignCenter)
lbl1 = QLabel('Werknummer')
lbl1.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
grid.addWidget(lbl1, 1, 0)
grid.addWidget(zkwerknEdit, 1, 1)
lbl2 = QLabel('Artikelnummer')
lbl2.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
grid.addWidget(lbl2, 2, 0)
grid.addWidget(artEdit, 2, 1)
lbl3 = QLabel('Afroep')
lbl3.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
grid.addWidget(lbl3, 3, 0)
grid.addWidget(hoevEdit, 3 ,1)
cBox = QCheckBox('Meerwerk')
cBox.stateChanged.connect(self.cBoxChanged)
grid.addWidget(cBox, 3, 2)
lbl8 = QLabel('Afleveradres')
lbl8.setStyleSheet("font: 12pt Comic Sans MS")
grid.addWidget(lbl8, 4, 1)
lbl4 = QLabel('Postcode')
lbl4.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
grid.addWidget(lbl4, 5, 0)
grid.addWidget(pcEdit, 5 , 1)
lbl5 = QLabel('Huisnummer')
lbl5.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
grid.addWidget(lbl5, 6, 0)
grid.addWidget(hnoEdit, 6 , 1)
lbl6 = QLabel('Toevoeging')
grid.addWidget(lbl6, 6, 0, 1, 2, Qt.AlignRight)
grid.addWidget(toevEdit, 6, 2)
lbl7 = QLabel('Alternatief adres')
lbl7.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
grid.addWidget(lbl7, 7, 0)
grid.addWidget(altEdit, 7 , 1, 1, 3)
self.setLayout(grid)
self.setGeometry(500, 300, 150, 150)
applyBtn = QPushButton('Muteren')
applyBtn.setStyleSheet("color: black; background-color: gainsboro")
applyBtn.clicked.connect(self.accept)
grid.addWidget(applyBtn, 8, 2, 1 , 1, Qt.AlignRight)
applyBtn.setFont(QFont("Arial",10))
applyBtn.setFixedWidth(100)
sluitBtn = QPushButton('Sluiten')
sluitBtn.setStyleSheet("color: black; background-color: gainsboro")
sluitBtn.clicked.connect(self.close)
grid.addWidget(sluitBtn, 8, 0, 1, 3, Qt.AlignCenter)
sluitBtn.setFont(QFont("Arial",10))
sluitBtn.setFixedWidth(100)
opvrBtn = QPushButton('Raaplijst')
opvrBtn.setStyleSheet("color: black; background-color: gainsboro")
opvrBtn.clicked.connect(lambda: raapLijst(koppelnr))
grid.addWidget(opvrBtn, 8, 1, 1, 1, Qt.AlignRight)
opvrBtn.setFont(QFont("Arial",10))
opvrBtn.setFixedWidth(100)
def hoevChanged(self,text):
self.Hoeveelheid.setText(text)
state = False
def cBoxChanged(self, state):
if state == Qt.Checked:
self.state = True
def pcChanged(self,text):
self.Postcode.setText(text)
def hnoChanged(self,text):
self.Huisnummer.setText(text)
def altChanged(self,text):
self.Alternatief.setText(text)
def toevChanged(self,text):
self.Toevoeging.setText(text)
def returnhoev(self):
return self.Hoeveelheid.text()
def returncBox(self):
return self.state
def returnpc(self):
return self.Postcode.text()
def returnhno(self):
return self.Huisnummer.text()
def returntoev(self):
return self.Toevoeging.text()
def returnalt(self):
return self.Alternatief.text()
@staticmethod
def getData(parent=None):
dialog = Widget(parent)
dialog.exec_()
return [dialog.returnhoev(), dialog.returncBox(), dialog.returnpc(),\
dialog.returnhno(), dialog.returntoev(), dialog.returnalt()]
window = Widget()
data = window.getData()
mhoev = 0
martikelnr = int(martnr)
metadata = MetaData()
if str(koppelnr)[0] == '7':
orders_intern = Table('orders_intern', metadata,
Column('werkorderID', Integer, primary_key=True),
Column('voortgangstatus', String))
engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem')
con = engine.connect()
selwerk = select([orders_intern]).where(orders_intern.c.werkorderID == koppelnr)
rpwerk = con.execute(selwerk).first()
materiaallijsten = Table('materiaallijsten', metadata,
Column('matlijstID', Integer, primary_key=True),
Column('icalculatie', Integer),
Column('hoeveelheid', Float),
Column('artikelID', None, ForeignKey('artikelen.artikelID')),
Column('resterend', Float),
Column('afroep', Float))
artikelen = Table('artikelen', metadata,
Column('artikelID', Integer, primary_key=True),
Column('artikelomschrijving', String))
icalculaties = Table('icalculaties', metadata,
Column('icalcID', Integer, primary_key=True),
Column('icalculatie', Integer),
Column('koppelnummer', Integer))
raaplijst = Table('raaplijst', metadata,
Column('lijstID', Integer,primary_key=True),
Column('artikelID', Integer),
Column('werkorder', Integer),
Column('afroep', Float),
Column('leverdatum', String),
Column('geleverd', Float),
Column('meerwerk', Boolean),
Column('postcode', String),
Column('huisnummer', Integer),
Column('toevoeging', String),
Column('alternatief', String),
Column('straat', String),
Column('woonplaats', String))
if rpwerk[1] == 'H':
werkGereed()
return()
mlevdat = str(datetime.datetime.now()+datetime.timedelta(days=7))[0:10]
engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem')
con = engine.connect()
sel = select([icalculaties]).where(icalculaties.c.koppelnummer == koppelnr)
rpsel = con.execute(sel).first()
elif str(koppelnr)[0] == '8':
werken = Table('werken', metadata,
Column('werknummerID', Integer, primary_key=True),
Column('voortgangstatus', String))
engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem')
con = engine.connect()
selwerk = select([werken]).where(werken.c.werknummerID == koppelnr)
rpwerk = con.execute(selwerk).first()
materiaallijsten = Table('materiaallijsten', metadata,
Column('matlijstID', Integer, primary_key=True),
Column('calculatie', Integer),
Column('hoeveelheid', Float),
Column('artikelID', None, ForeignKey('artikelen.artikelID')),
Column('resterend', Float),
Column('afroep', Float))
artikelen = Table('artikelen', metadata,
Column('artikelID', Integer, primary_key=True),
Column('artikelomschrijving', String))
calculaties = Table('calculaties', metadata,
Column('calcID', Integer, primary_key=True),
Column('calculatie', Integer),
Column('koppelnummer', Integer))
raaplijst = Table('raaplijst', metadata,
Column('lijstID', Integer,primary_key=True),
Column('artikelID', Integer),
Column('werkorder', Integer),
Column('afroep', Float),
Column('leverdatum', String),
Column('geleverd', Float),
Column('meerwerk', Boolean),
Column('postcode', String),
Column('huisnummer', Integer),
Column('toevoeging', String),
Column('alternatief', String),
Column('straat', String),
Column('woonplaats', String))
if rpwerk[1] == 'H':
werkGereed()
return()
mlevdat = str(datetime.datetime.now()+datetime.timedelta(days=7))[0:10]
engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem')
con = engine.connect()
sel = select([calculaties]).where(calculaties.c.koppelnummer == koppelnr)
rpsel = con.execute(sel).first()
if data[0]:
mhoev = float(data[0])
else:
return()
if data[1]:
mmmstatus = True
else:
mmmstatus = False
if data[3]:
mhuisnr = int(data[3])
else:
mhuisnr = 0
if data[2] and data[3]:
mpostcode = data[2].upper()
mstrpl = checkpostcode(mpostcode, mhuisnr)
if mstrpl[0]:
mstraat = mstrpl[0]
mplaats = mstrpl[1]
else:
mpostcode = ''
mhuisnr = ''
mstraat = ''
mplaats = ''
foutPostcode()
return()
else:
mpostcode = ''
mhuisnr = ''
mstraat = ''
mplaats = ''
if data[4]:
mtoev = data[4]
else:
mtoev = ''
if data[5]:
maltern = data[5]
else:
maltern = ''
if mhoev != 0:
if str(koppelnr)[0] == '7':
selmatl = select([materiaallijsten]).where(and_(materiaallijsten.c.icalculatie ==\
rpsel[1], materiaallijsten.c.artikelID == artikelen.c.artikelID,\
materiaallijsten.c.artikelID == martikelnr))
rpmatl = con.execute(selmatl).first()
mresterend = rpmatl[4]
if mresterend < mhoev:
class Button(QDialog):
def __init__(self, parent=None):
super(Button, self).__init__(parent)
msgBox = QMessageBox()
msgBox.setWindowTitle("Artikelafroep")
msgBox.setWindowIcon(QIcon('./images/logos/logo.jpg'))
msgBox.setStyleSheet("color: black; background-color: gainsboro; font-size: 16px;height: 20px; width: 50px")
msgBox.setText('De afroep '+str(mhoev)+' is groter dan nog te leveren '+str(round(mresterend,3)))
msgBox.addButton(QPushButton('Doorgaan'), QMessageBox.YesRole)
msgBox.addButton(QPushButton('Stoppen'), QMessageBox.RejectRole)
retour = msgBox.exec_()
if retour:
artAfroep(idx)
else:
updmatl = update(materiaallijsten).where(and_(materiaallijsten.c.icalculatie ==\
rpsel[1], materiaallijsten.c.artikelID == artikelen.c.artikelID,\
materiaallijsten.c.artikelID == martikelnr)).values(afroep = mhoev,\
resterend=materiaallijsten.c.resterend - round(mhoev,4))
con.execute(updmatl)
mlijstnr=(con.execute(select([func.max(raaplijst.c.lijstID, type_=Integer)\
.label('mlijstnr')])).scalar())
mlijstnr += 1
insrl = insert(raaplijst).values(lijstID = mlijstnr, artikelID = martikelnr,\
werkorder = koppelnr, afroep = mhoev, leverdatum = mlevdat,\
meerwerk = mmmstatus, postcode = mpostcode, huisnummer = mhuisnr,\
toevoeging = mtoev, alternatief = maltern, straat = mstraat, woonplaats = mplaats)
con.execute(insrl)
invoerOK()
btn = Button()
btn.show()
else:
updmatl = update(materiaallijsten).where(and_(materiaallijsten.c.icalculatie ==\
rpsel[1], materiaallijsten.c.artikelID == artikelen.c.artikelID,\
materiaallijsten.c.artikelID == martikelnr)).values(afroep = mhoev,\
resterend=materiaallijsten.c.resterend - round(mhoev,4))
con.execute(updmatl)
mlijstnr=(con.execute(select([func.max(raaplijst.c.lijstID, type_=Integer)\
.label('mlijstnr')])).scalar())
mlijstnr += 1
insrl = insert(raaplijst).values(lijstID = mlijstnr, artikelID = martikelnr,\
werkorder = koppelnr, afroep = mhoev, leverdatum = mlevdat,\
meerwerk = mmmstatus, postcode = mpostcode, huisnummer = mhuisnr,\
toevoeging = mtoev, alternatief = maltern, straat = mstraat, woonplaats = mplaats)
con.execute(insrl)
invoerOK()
elif str(koppelnr)[0] == '8':
selmatl = select([materiaallijsten]).where(and_(materiaallijsten.c.calculatie ==\
rpsel[1], materiaallijsten.c.artikelID == artikelen.c.artikelID,\
materiaallijsten.c.artikelID == martikelnr))
rpmatl = con.execute(selmatl).first()
mresterend = rpmatl[4]
if mresterend < mhoev:
class Button(QDialog):
def __init__(self, parent=None):
super(Button, self).__init__(parent)
msgBox = QMessageBox()
msgBox.setWindowTitle("Artikelafroep")
msgBox.setWindowIcon(QIcon('./images/logos/logo.jpg'))
msgBox.setStyleSheet("color: black; background-color: gainsboro; font-size: 10pt")
msgBox.setText('De afroep '+str(mhoev)+' is groter dan nog te leveren '+str(round(mresterend,3)))
msgBox.addButton(QPushButton('Doorgaan'), QMessageBox.YesRole)
msgBox.addButton(QPushButton('Stoppen'), QMessageBox.RejectRole)
retour = msgBox.exec_()
if retour:
artAfroep(idx)
else:
updmatl = update(materiaallijsten).where(and_(materiaallijsten.c.calculatie ==\
rpsel[1], materiaallijsten.c.artikelID == artikelen.c.artikelID,\
materiaallijsten.c.artikelID == martikelnr)).values(afroep = mhoev,\
resterend=materiaallijsten.c.resterend - round(mhoev,4))
con.execute(updmatl)
mlijstnr=(con.execute(select([func.max(raaplijst.c.lijstID, type_=Integer)\
.label('mlijstnr')])).scalar())
mlijstnr += 1
insrl = insert(raaplijst).values(lijstID = mlijstnr, artikelID = martikelnr,\
werkorder = koppelnr, afroep = mhoev, leverdatum = mlevdat,\
meerwerk = mmmstatus, postcode = mpostcode, huisnummer = mhuisnr,\
toevoeging = mtoev, alternatief = maltern, straat = mstraat, woonplaats = mplaats)
con.execute(insrl)
invoerOK()
btn = Button()
btn.show()
else:
updmatl = update(materiaallijsten).where(and_(materiaallijsten.c.calculatie ==\
rpsel[1], materiaallijsten.c.artikelID == artikelen.c.artikelID,\
materiaallijsten.c.artikelID == martikelnr)).values(afroep = mhoev,\
resterend=materiaallijsten.c.resterend - round(mhoev,4))
con.execute(updmatl)
mlijstnr=(con.execute(select([func.max(raaplijst.c.lijstID, type_=Integer)\
.label('mlijstnr')])).scalar())
mlijstnr += 1
insrl = insert(raaplijst).values(lijstID = mlijstnr, artikelID = martikelnr,\
werkorder = koppelnr, afroep = mhoev, leverdatum = mlevdat,\
meerwerk = mmmstatus, postcode = mpostcode, huisnummer = mhuisnr,\
toevoeging = mtoev, alternatief = maltern, straat = mstraat, woonplaats = mplaats)
con.execute(insrl)
invoerOK()
win = MyWindow(data_list, header)
win.exec_()
zoekWerk(m_email, soort)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )