Слияние кода завершено, страница обновится автоматически
from login import hoofdMenu
import os, datetime
from PyQt5.QtCore import Qt, QRegExp, QAbstractTableModel
from PyQt5.QtGui import QFont, QPixmap, QRegExpValidator, QIcon
from PyQt5.QtWidgets import QLabel, QPushButton,\
QMessageBox, QLineEdit, QGridLayout, QDialog, QWidget,QTableView, QComboBox
from sqlalchemy import (Table, Column, Integer, String, Float, Boolean,\
MetaData, create_engine, CheckConstraint, ForeignKey)
from sqlalchemy.sql import select, update, insert, func, and_
from sqlalchemy.exc import IntegrityError
def refresh(keuze, zoekterm, m_email, route, self):
self.close()
raapLijst(keuze, zoekterm, m_email, route)
def windowSluit(self, m_email):
self.close()
hoofdMenu(m_email)
def ongInvoer():
msg = QMessageBox()
msg.setStyleSheet("color: black; background-color: gainsboro")
msg.setWindowIcon(QIcon('./images/logos/logo.jpg'))
msg.setIcon(QMessageBox.Warning)
msg.setText('Foutieve invoer\nzoekterm opnieuw invoeren s.v.p.!')
msg.setWindowTitle('Materialen uitgeven/ printen')
msg.exec_()
def geenRecord():
msg = QMessageBox()
msg.setStyleSheet("color: black; background-color: gainsboro")
msg.setWindowIcon(QIcon('./images/logos/logo.jpg'))
msg.setIcon(QMessageBox.Warning)
msg.setText('Geen record gevonden\nmaak een andere selektie s.v.p.!')
msg.setWindowTitle('Materialen uitgeven/ printen')
msg.exec_()
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 printing():
msg = QMessageBox()
msg.setStyleSheet("color: black; background-color: gainsboro")
msg.setWindowIcon(QIcon('./images/logos/logo.jpg'))
msg.setIcon(QMessageBox.Information)
msg.setText('Ogenblik afdrukken wordt gestart!')
msg.setWindowTitle('AFDRUKKEN')
msg.exec_()
def printGeg(filename):
from sys import platform
msgBox=QMessageBox()
msgBox.setStyleSheet("color: black; background-color: gainsboro")
msgBox.setWindowIcon(QIcon('./images/logos/logo.jpg'))
msgBox.setWindowTitle("Printen raaplijst")
msgBox.setIcon(QMessageBox.Information)
msgBox.setText("Wilt U de raaplijst 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()
def foutWerknr():
msg = QMessageBox()
msg.setStyleSheet("color: black; background-color: gainsboro")
msg.setIcon(QMessageBox.Critical)
msg.setText('Werknummer niet gevonden\nWerknummer bestaat niet!')
msg.setWindowTitle('Gegevens!')
msg.exec_()
def invoerOK():
msg = QMessageBox()
msg.setStyleSheet("color: black; background-color: gainsboro")
msg.setIcon(QMessageBox.Information)
msg.setText('Invoer gelukt!')
msg.setWindowTitle('RAAPLIJST')
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('VOORRAAD ONVOLDOENDE')
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('INVOERFOUT')
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('Gegevens!')
msg.exec_()
def eindProgram():
msg = QMessageBox()
msg.setStyleSheet("color: black; background-color: gainsboro")
msg.setWindowIcon(QIcon('./images/logos/logo.jpg'))
msg.setIcon(QMessageBox.Information)
msg.setText('Programma afgesloten.\nTot ziens!')
msg.setWindowTitle('BESTELLINGEN')
msg.exec_()
def printRaaplijst(keuze, zoekterm, m_email, route):
import validZt
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', Integer),
Column('toevoeging', String),
Column('alternatief', String),
Column('boekdatum', String),
Column('straat', String),
Column('woonplaats', String))
artikelen = Table('artikelen', metadata,
Column('artikelID', Integer(), primary_key=True),
Column('artikelomschrijving', String),
Column('locatie_magazijn', String))
engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem')
con = engine.connect()
if route < 2:
if keuze == 1:
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.geleverd < raaplijst.c.afroep,\
raaplijst.c.artikelID == artikelen.c.artikelID)).order_by(raaplijst.c.werkorder, raaplijst.c.leverdatum)
kop1 = 'Raaplijst Alle Afroepen '
tekst1 = ''
elif keuze == 2:
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.werkorder < 800000000,\
raaplijst.c.geleverd < raaplijst.c.afroep, raaplijst.c.artikelID ==\
artikelen.c.artikelID)).order_by(raaplijst.c.leverdatum)
kop1 = ''
tekst1 = 'Raaplijst Werkorders '
elif keuze == 3:
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.werkorder > 800000000,\
raaplijst.c.geleverd < raaplijst.c.afroep, raaplijst.c.artikelID ==\
artikelen.c.artikelID)).order_by(raaplijst.c.leverdatum)
kop1 = ''
tekst1 = 'Raaplijst Werknummers '
elif keuze == 4 and validZt.zt(zoekterm, 15):
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.werkorder == int(zoekterm),\
raaplijst.c.geleverd < raaplijst.c.afroep, raaplijst.c.artikelID ==\
artikelen.c.artikelID)).order_by(raaplijst.c.leverdatum)
kop1 = ''
tekst1 = 'Raaplijst Ordernummer '
elif keuze == 5 and validZt.zt(zoekterm, 2):
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.artikelID == int(zoekterm),\
raaplijst.c.geleverd < raaplijst.c.afroep, raaplijst.c.artikelID ==\
artikelen.c.artikelID)).order_by(raaplijst.c.leverdatum)
kop1 = ''
tekst1 = 'Raaplijst Artikelnummer '
elif keuze == 6 and validZt.zt(zoekterm, 10):
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.leverdatum.like(zoekterm+'%'),
raaplijst.c.geleverd < raaplijst.c.afroep, raaplijst.c.artikelID ==\
artikelen.c.artikelID)).order_by(raaplijst.c.leverdatum, raaplijst.c.werkorder)
kop1 = ''
tekst1 = 'Raaplijst Leverdatum '
elif keuze == 7 and validZt.zt(zoekterm, 9):
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.postcode.ilike(zoekterm+'%'),\
raaplijst.c.geleverd < raaplijst.c.afroep, raaplijst.c.artikelID ==\
artikelen.c.artikelID)).order_by(raaplijst.c.leverdatum, raaplijst.c.werkorder)
kop1 = ''
tekst1 = 'Raaplijst Postcode '
elif keuze == 8:
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.geleverd >= raaplijst.c.afroep,\
raaplijst.c.afroep > 0, raaplijst.c.artikelID == artikelen.c.artikelID))\
.order_by(raaplijst.c.werkorder, raaplijst.c.leverdatum)
kop1 = 'Uitgeleverd '
tekst1 = ''
else:
ongInvoer()
kiesSelektie(route, m_email)
elif route == 2:
if keuze == 2:
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.werkorder < 800000000,\
raaplijst.c.geleverd < raaplijst.c.afroep, raaplijst.c.artikelID ==\
artikelen.c.artikelID)).order_by(raaplijst.c.leverdatum)
kop1 = ''
tekst1 = 'Raaplijst Werkorders '
elif keuze == 4 and validZt.zt(zoekterm, 15):
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.werkorder < 800000000,\
raaplijst.c.werkorder == int(zoekterm), raaplijst.c.geleverd < raaplijst.c.afroep,\
raaplijst.c.artikelID == artikelen.c.artikelID)).order_by(raaplijst.c.leverdatum)
kop1 = ''
tekst1 = 'Raaplijst Werkorder '
elif keuze == 5 and validZt.zt(zoekterm, 2):
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.werkorder < 800000000,\
raaplijst.c.artikelID == int(zoekterm), raaplijst.c.geleverd < raaplijst.c.afroep,\
raaplijst.c.artikelID == artikelen.c.artikelID)).order_by(raaplijst.c.leverdatum)
kop1 = ''
tekst1 = 'Raaplijst Artikelnummer '
elif keuze == 6 and validZt.zt(zoekterm, 10):
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.werkorder < 800000000,\
raaplijst.c.leverdatum.like(zoekterm+'%'), raaplijst.c.geleverd < raaplijst.c.afroep,\
raaplijst.c.artikelID == artikelen.c.artikelID)).order_by(raaplijst.c.leverdatum,\
raaplijst.c.werkorder)
kop1 = ''
tekst1 = 'Raaplijst Leverdatum '
elif keuze == 7 and validZt.zt(zoekterm, 9):
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.werkorder < 800000000,\
raaplijst.c.postcode.ilike(zoekterm+'%'),raaplijst.c.geleverd < raaplijst.c.afroep,\
raaplijst.c.artikelID == artikelen.c.artikelID)).order_by(raaplijst.c.leverdatum,\
raaplijst.c.werkorder)
kop1 = ''
tekst1 = 'Raaplijst Postcode '
elif keuze == 8:
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.werkorder < 800000000,\
raaplijst.c.geleverd >= raaplijst.c.afroep, raaplijst.c.afroep > 0,\
raaplijst.c.artikelID == artikelen.c.artikelID)).order_by(raaplijst.c.werkorder,\
raaplijst.c.leverdatum)
kop1 = 'Uitgeleverd '
tekst1 = ''
else:
ongInvoer()
kiesSelektie(route, m_email)
elif route == 3:
if keuze == 3:
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.werkorder > 800000000,\
raaplijst.c.geleverd < raaplijst.c.afroep, raaplijst.c.artikelID ==\
artikelen.c.artikelID)).order_by(raaplijst.c.leverdatum)
kop1 = ''
tekst1 = 'Raaplijst Werknummers '
elif keuze == 4 and validZt.zt(zoekterm, 15):
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.werkorder > 800000000,\
raaplijst.c.werkorder == int(zoekterm), raaplijst.c.geleverd < raaplijst.c.afroep,\
raaplijst.c.artikelID == artikelen.c.artikelID)).order_by(raaplijst.c.leverdatum)
kop1 = ''
tekst1 = 'Raaplijst Werknummer '
elif keuze == 5 and validZt.zt(zoekterm, 2):
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.werkorder > 800000000,\
raaplijst.c.artikelID == int(zoekterm), raaplijst.c.geleverd < raaplijst.c.afroep,\
raaplijst.c.artikelID == artikelen.c.artikelID)).order_by(raaplijst.c.leverdatum)
kop1 = ''
tekst1 = 'Raaplijst Artikelnummer '
elif keuze == 6 and validZt.zt(zoekterm, 10):
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.werkorder > 800000000,\
raaplijst.c.leverdatum.like(zoekterm+'%'), raaplijst.c.geleverd < raaplijst.c.afroep,\
raaplijst.c.artikelID == artikelen.c.artikelID)).order_by(raaplijst.c.leverdatum,\
raaplijst.c.werkorder)
kop1 = ''
tekst1 = 'Raaplijst Leverdatum '
elif keuze ==7 and validZt.zt(zoekterm, 9):
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.werkorder > 800000000,\
raaplijst.c.postcode.ilike(zoekterm+'%'), raaplijst.c.geleverd < raaplijst.c.afroep,\
raaplijst.c.artikelID == artikelen.c.artikelID)).order_by(raaplijst.c.leverdatum,\
raaplijst.c.werkorder)
kop1 = ''
tekst1 = 'Raaplijst Postcode '
elif keuze == 8:
selrl = select([raaplijst, artikelen]).where(and_(raaplijst.c.werkorder > 800000000,\
raaplijst.c.geleverd >= raaplijst.c.afroep, raaplijst.c.afroep > 0,\
raaplijst.c.artikelID == artikelen.c.artikelID)).order_by(raaplijst.c.werkorder,\
raaplijst.c.leverdatum)
kop1 = 'Uitgeleverd '
tekst1 = ''
else:
ongInvoer()
kiesSelektie(route, m_email)
if con.execute(selrl).fetchone():
rprl = con.execute(selrl)
else:
geenRecord()
kiesSelektie(route, m_email)
mblad = 1
rgl = 0
for row in rprl:
from sys import platform
if rgl == 0 or rgl%57 == 0:
kop4=\
(tekst1+str(kop1)+' Datum: '+str(datetime.datetime.now())[0:10]+' Blad : '+str(mblad)+' '+
'Afleveradres '+row[12]+' '+str(row[8])+row[9]+', '+row[7]+' '+row[13]+'.\n'+
'=============================================================================================\n'+
'Artikelnr Omschrijving Afroep Geleverd Leverdatum Werkorder Locatie \n'+
'=============================================================================================\n')
kop5=\
(tekst1+str(kop1)+' Datum: '+str(datetime.datetime.now())[0:10]+' Blad : '+str(mblad)+'\n'+
'=============================================================================================\n'+
'Artikelnr Omschrijving Afroep Geleverd Leverdatum Werkorder Locatie \n'+
'=============================================================================================\n')
if keuze == 2:
kop1 = row[2]
kop = kop5
elif keuze == 3:
kop1 = row[2]
kop = kop5
elif keuze == 4:
kop1 = row[2]
kop = kop4
elif keuze == 5:
kop1 = row[1]
kop = kop5
elif keuze == 6:
kop1 = row[4]
kop = kop5
elif keuze == 7:
kop1 = row[7]
kop = kop4
else:
kop = kop5
if platform == 'win32':
filename = '.\\forms\\Raaplijsten\\raaplijst-'+str(kop1)+'-'+str(datetime.datetime.now())[0:10]+'.txt'
else:
filename = './forms/Raaplijsten/raaplijst-'+str(kop1)+'-'+str(datetime.datetime.now())[0:10]+'.txt'
if rgl == 0:
open(filename, 'w').write(kop)
elif rgl%57 == 0:
open(filename, 'a').write(kop)
mblad += 1
open(filename,'a').write('{:<11d}'.format(row[1])+'{:<37.35s}'.format(row[15])\
+'{:>6.2f}'.format(row[3])+'{:>6.2f}'.format(row[5])+' '+\
'{:10s}'.format(row[4])+' '+'{:<10d}'.format(row[2])+' '+'{:<10s}'.format(row[16])+'\n')
rgl += 1
printGeg(filename)
kiesSelektie(route, m_email)
def kiesSelektie(route, m_email):
class Widget(QDialog):
def __init__(self, parent=None):
super(Widget, self).__init__(parent)
if route == 0:
self.setWindowTitle("Raaplijst materialen uitgifte")
else:
self.setWindowTitle("Raaplijst printen")
self.setWindowIcon(QIcon('./images/logos/logo.jpg'))
self.setFont(QFont('Arial', 10))
if route < 2:
self.Keuze = QLabel()
k0Edit = QComboBox()
k0Edit.setFixedWidth(240)
k0Edit.setFont(QFont("Arial",10))
k0Edit.setStyleSheet("color: black; background-color: #F8F7EE")
k0Edit.addItem(' Sorteersleutel voor zoeken')
k0Edit.addItem('1. Alle afroepen')
k0Edit.addItem('2. Interne werkorders')
k0Edit.addItem('3. Externe werknummers')
k0Edit.addItem('4. Per ordernummer')
k0Edit.addItem('5. Per artikelnummer')
k0Edit.addItem('6. Op leverdatum')
k0Edit.addItem('7. Op Poscode ivm Transport')
k0Edit.addItem('8. Uitgeleverde afroepen')
k0Edit.activated[str].connect(self.k0Changed)
elif route == 2:
self.Keuze = QLabel()
k0Edit = QComboBox()
k0Edit.setFixedWidth(240)
k0Edit.setFont(QFont("Arial",10))
k0Edit.setStyleSheet("color: black; background-color: #F8F7EE")
k0Edit.addItem(' Sorteersleutel voor zoeken')
k0Edit.addItem('2. Interne werkorders')
k0Edit.addItem('4. Per ordernummer')
k0Edit.addItem('5. Per artikelnummer')
k0Edit.addItem('6. Op leverdatum')
k0Edit.addItem('7. Op Poscode ivm Transport')
k0Edit.addItem('8. Uitgeleverde afroepen')
k0Edit.activated[str].connect(self.k0Changed)
elif route == 3:
self.Keuze = QLabel()
k0Edit = QComboBox()
k0Edit.setFixedWidth(240)
k0Edit.setFont(QFont("Arial",10))
k0Edit.setStyleSheet("color: black; background-color: #F8F7EE")
k0Edit.addItem(' Sorteersleutel voor zoeken')
k0Edit.addItem('3. Externe werknummers')
k0Edit.addItem('4. Per ordernummer')
k0Edit.addItem('5. Per artikelnummer')
k0Edit.addItem('6. Op leverdatum')
k0Edit.addItem('7. Op Poscode ivm Transport')
k0Edit.addItem('8. Uitgeleverde afroepen')
k0Edit.activated[str].connect(self.k0Changed)
self.Zoekterm = QLabel()
zktermEdit = QLineEdit()
zktermEdit.setFixedWidth(240)
zktermEdit.setFont(QFont("Arial",10))
zktermEdit.textChanged.connect(self.zktermChanged)
grid = QGridLayout()
grid.setSpacing(20)
lbl = QLabel()
pixmap = QPixmap('./images/logos/verbinding.jpg')
lbl.setPixmap(pixmap)
grid.addWidget(lbl , 0, 0, 1, 2)
if route == 0:
grid.addWidget(QLabel('Keuzemenu voor het uitgeven van materialen'), 1, 0, 1, 3, Qt.AlignCenter)
else:
grid.addWidget(QLabel('Keuzemenu voor het printen van raaplijsten'), 1, 0, 1, 3, Qt.AlignCenter)
logo = QLabel()
pixmap = QPixmap('./images/logos/logo.jpg')
logo.setPixmap(pixmap)
grid.addWidget(logo , 0, 1, 1, 1, Qt.AlignRight)
grid.addWidget(k0Edit, 2, 1)
lbl1 = QLabel('Zoekterm')
lbl1.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
grid.addWidget(lbl1, 3, 0)
grid.addWidget(zktermEdit, 3, 1)
self.setLayout(grid)
self.setGeometry(500, 300, 150, 150)
grid.addWidget(QLabel('\u00A9 2017 all rights reserved dj.jansen@casema.nl'), 5, 0, 1, 3, Qt.AlignCenter)
applyBtn = QPushButton('Zoeken')
applyBtn.clicked.connect(self.accept)
grid.addWidget(applyBtn, 4, 1, 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, 4, 1)
cancelBtn.setFont(QFont("Arial",10))
cancelBtn.setFixedWidth(100)
cancelBtn.setStyleSheet("color: black; background-color: gainsboro")
def k0Changed(self, text):
self.Keuze.setText(text)
def zktermChanged(self, text):
self.Zoekterm.setText(text)
def returnk0(self):
return self.Keuze.text()
def returnzkterm(self):
return self.Zoekterm.text()
@staticmethod
def getData(parent=None):
dialog = Widget(parent)
dialog.exec_()
return [dialog.returnk0(), dialog.returnzkterm()]
window = Widget()
data = window.getData()
if not data[0] or data[0][0] == ' ':
keuze = 0
elif data[0]:
keuze = int(data[0][0])
else:
keuze = 0
if data[1]:
zoekterm = data[1].upper()
else:
zoekterm = ''
if route == 0:
raapLijst(keuze,zoekterm, m_email, route)
else:
printRaaplijst(keuze, zoekterm, m_email, route)
def raapLijst(keuze, zoekterm, m_email, route):
class MyWindow(QDialog):
def __init__(self, data_list, header, *args):
QWidget.__init__(self, *args,)
self.setWindowTitle('Raaplijst Opvragen / Muteren')
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(boekAfroep)
grid.addWidget(table_view, 0, 0, 1, 13)
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, 12, 1, 1, Qt.AlignRight)
freshBtn = QPushButton('Verversen')
freshBtn.clicked.connect(lambda: refresh(keuze, zoekterm, m_email, route, self))
freshBtn.setFont(QFont("Arial",10))
freshBtn.setFixedWidth(100)
freshBtn.setStyleSheet("color: black; background-color: gainsboro")
grid.addWidget(freshBtn, 1, 11, 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, 10)
grid.addWidget(QLabel('\u00A9 2017 all rights reserved dj.jansen@casema.nl'), 1, 0, 1, 13, Qt.AlignCenter)
self.setLayout(grid)
self.setGeometry(50, 50, 1500, 900)
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', Integer),
Column('toevoeging', String),
Column('alternatief', String),
Column('boekdatum', 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',\
'Boekdatum','Straat','Woonplaats']
import validZt
if keuze == 1:
selafr = select([raaplijst]).where(raaplijst.c.geleverd < raaplijst.c.afroep)\
.order_by(raaplijst.c.werkorder, raaplijst.c.leverdatum)
elif keuze == 2:
selafr = select([raaplijst]).where(and_(raaplijst.c.werkorder < 800000000,\
raaplijst.c.geleverd < raaplijst.c.afroep)).order_by(raaplijst.c.leverdatum)
elif keuze == 3:
selafr = select([raaplijst]).where(and_(raaplijst.c.werkorder > 800000000,
raaplijst.c.geleverd < raaplijst.c.afroep)).order_by(raaplijst.c.leverdatum)
elif keuze == 4 and validZt.zt(zoekterm, 15):
selafr = select([raaplijst]).where(and_(raaplijst.c.werkorder == int(zoekterm),\
raaplijst.c.geleverd < raaplijst.c.afroep)).order_by(raaplijst.c.leverdatum.desc())
elif keuze == 5 and validZt.zt(zoekterm, 2):
selafr = select([raaplijst]).where(and_(raaplijst.c.artikelID == int(zoekterm),\
raaplijst.c.geleverd < raaplijst.c.afroep)).order_by(raaplijst.c.leverdatum.desc())
elif keuze == 6 and validZt.zt(zoekterm, 10):
selafr = select([raaplijst]).where(and_(raaplijst.c.leverdatum.like(zoekterm+'%'),
raaplijst.c.geleverd < raaplijst.c.afroep))\
.order_by(raaplijst.c.leverdatum, raaplijst.c.werkorder)
elif keuze == 7 and validZt.zt(zoekterm, 9):
selafr = select([raaplijst]).where(and_(raaplijst.c.postcode.ilike(zoekterm+'%'),\
raaplijst.c.geleverd < raaplijst.c.afroep))\
.order_by(raaplijst.c.leverdatum, raaplijst.c.werkorder)
elif keuze == 8:
selafr = select([raaplijst]).where(and_(raaplijst.c.geleverd >= raaplijst.c.afroep,\
raaplijst.c.afroep > 0))\
.order_by(raaplijst.c.werkorder, raaplijst.c.leverdatum)
else:
ongInvoer()
kiesSelektie(0, m_email)
if con.execute(selafr).fetchone():
rpafr = con.execute(selafr)
else:
geenRecord()
kiesSelektie(0, m_email)
data_list=[]
for row in rpafr:
data_list += [(row)]
def boekAfroep(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', Integer),
Column('toevoeging', String),
Column('alternatief', String),
Column('boekdatum', String),
Column('straat', String),
Column('woonplaats', String))
engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem')
con = engine.connect()
selrlr = select([raaplijst]).where(raaplijst.c.lijstID == mlijstnr)
rprlr = con.execute(selrlr).first()
mwerknr = rprlr[2]
martnr = rprlr[1]
mleverdat = rprlr[4]
mmmstatus = rprlr[6]
mafroep = rprlr[3]
mgeleverd = rprlr[5]
class Widget(QDialog):
def __init__(self, parent=None):
super(Widget, self).__init__(parent)
self.setWindowTitle("Materiaaluitgifte muteren")
self.setWindowIcon(QIcon('./images/logos/logo.jpg'))
self.setFont(QFont('Arial', 10))
self.Werknummer = QLabel()
zkwerknEdit = QLineEdit(str(mwerknr))
zkwerknEdit.setFont(QFont("Arial",10))
zkwerknEdit.setDisabled(True)
zkwerknEdit.setStyleSheet("color:black")
zkwerknEdit.setAlignment(Qt.AlignRight)
zkwerknEdit.textChanged.connect(self.zkwerknChanged)
reg_ex = QRegExp("^[8]{1}[0-9]{8}$")
input_validator = QRegExpValidator(reg_ex, zkwerknEdit)
zkwerknEdit.setValidator(input_validator)
self.Artikelnummer = QLabel()
artEdit = QLineEdit(str(martnr))
artEdit.setFixedWidth(150)
artEdit.setFont(QFont("Arial",10))
artEdit.setDisabled(True)
artEdit.setStyleSheet("color:black")
artEdit.setAlignment(Qt.AlignRight)
artEdit.textChanged.connect(self.artChanged)
reg_ex = QRegExp("^[2]{1}[0-9]{8}$")
input_validator = QRegExpValidator(reg_ex, artEdit)
artEdit.setValidator(input_validator)
self.Hoeveelheid = QLabel()
hoevEdit = QLineEdit()
hoevEdit.setFixedWidth(150)
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)
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)
lbl4 = QLabel('Afroep: '+ str(mafroep)+ ' - Reeds geleverd: '+str(mgeleverd))
grid.addWidget(lbl4, 3, 0, 1, 3, Qt.AlignCenter)
lbl3 = QLabel('Uitgifte')
lbl3.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
grid.addWidget(lbl3, 4, 0)
grid.addWidget(hoevEdit, 4 , 1)
if mmmstatus:
grid.addWidget(QLabel('Meerwerk'), 4, 2)
grid.addWidget(QLabel('Leverdatum'), 5, 0, Qt.AlignRight)
grid.addWidget(QLabel(mleverdat), 5, 1)
self.setLayout(grid)
self.setGeometry(500, 300, 150, 150)
applyBtn = QPushButton('Muteren')
applyBtn.clicked.connect(self.accept)
grid.addWidget(applyBtn, 6, 2, 1 , 1, Qt.AlignRight)
applyBtn.setFont(QFont("Arial",10))
applyBtn.setFixedWidth(100)
applyBtn.setStyleSheet("color: black; background-color: gainsboro")
sluitBtn = QPushButton('Sluiten')
sluitBtn.clicked.connect(self.close)
grid.addWidget(sluitBtn, 6, 0, 1, 2, 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'), 7, 0, 1, 3, Qt.AlignCenter)
def zkwerknChanged(self, text):
self.Werknummer.setText(text)
def artChanged(self,text):
self.Artikelnummer.setText(text)
def hoevChanged(self,text):
self.Hoeveelheid.setText(text)
def returnzkwerkn(self):
return self.Werknummer.text()
def returnart(self):
return self.Artikelnummer.text()
def returnhoev(self):
return self.Hoeveelheid.text()
@staticmethod
def getData(parent=None):
dialog = Widget(parent)
dialog.exec_()
return [dialog.returnzkwerkn(), dialog.returnart(), dialog.returnhoev()]
window = Widget()
data = window.getData()
mhoev = 0
if data[0] and len(data[0]) == 9 and _11check(data[0]):
mwerknr = int(data[0])
elif not data[0] and len(str(mwerknr)) == 9 and _11check(mwerknr):
mwerknr = int(mwerknr)
else:
foutWerknr()
return('')
if str(mwerknr)[0] == '7':
metadata = MetaData()
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 == mwerknr)
rpwerk = con.execute(selwerk).first()
metadata = MetaData()
orders_intern = Table('orders_intern', metadata,
Column('werkorderID',Integer(), primary_key=True),
Column('werk_materialen', Float),
Column('meerminderwerk', Float))
artikelmutaties = Table('artikelmutaties', metadata,
Column('mutatieID', Integer, primary_key=True),
Column('artikelID', None, ForeignKey('artikelen.artikelID')),
Column('werkorderID', None, ForeignKey('orders_intern.werkorderID')),
Column('orderinkoopID', None, ForeignKey('orders_inkoop.orderinkoopID')),
Column('hoeveelheid', Float),
Column('boekdatum', String),
Column('tot_mag_prijs', Float),
Column('btw_hoog', Float),
Column('mmstatus', Boolean))
elif str(mwerknr)[0] == '8':
metadata = MetaData()
werken = Table('werken', metadata,
Column('werknummerID', Integer, primary_key=True),
Column('voortgangstatus', String),
Column('kosten_materialen', Float),
Column('meerminderwerk', Float))
artikelmutaties = Table('artikelmutaties', metadata,
Column('mutatieID', Integer, primary_key=True),
Column('artikelID', None, ForeignKey('artikelen.artikelID')),
Column('werknummerID', None, ForeignKey('werken.werknoID')),
Column('orderinkoopID', None, ForeignKey('orders_inkoop.orderinkoopID')),
Column('hoeveelheid', Float),
Column('boekdatum', String),
Column('tot_mag_prijs', Float),
Column('btw_hoog', Float),
Column('mmstatus', Boolean))
engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem')
con = engine.connect()
selwerk = select([werken]).where(werken.c.werknummerID == mwerknr)
rpwerk = con.execute(selwerk).first()
if rpwerk[1] == 'H':
werkGereed()
return(mwerknr)
if data[2]:
mhoev = float(data[2])
else:
return(mwerknr)
metadata = MetaData()
artikelen = Table('artikelen', metadata,
Column('artikelID', Integer(), primary_key=True),
Column('artikelomschrijving', String),
Column('artikelprijs', Float),
Column('art_voorraad', Float, CheckConstraint('art_voorraad >= 0')),
Column('art_min_voorraad', Float),
Column('art_bestelgrootte', Float),
Column('bestelstatus', Boolean),
Column('mutatiedatum', String),
Column('reserveringsaldo', Float),
Column('jaarverbruik_1', Float),
Column('jaarverbruik_2', Float))
engine = create_engine('postgresql+psycopg2://postgres@localhost/bisystem')
con = engine.connect()
sel = select([artikelen]).where(artikelen.c.artikelID == martnr)
transaction = con.begin()
result = con.execute(sel).first()
martprijs = result[2]
martvrd = result[3]
martminvrd = result[4]
mboekd = str(datetime.datetime.now())[0:10]
mjaar = int(str(datetime.datetime.now())[0:4])
if martvrd - mhoev <= martminvrd:
martbestst = False
else:
martbestst = True
if mhoev <= 0:
foutHoev()
return('')
try:
if mjaar%2 == 0: #even jaartal
stmt = update(artikelen).where(artikelen.c.artikelID == martnr).values(\
art_voorraad = artikelen.c.art_voorraad - mhoev, bestelstatus = martbestst,\
mutatiedatum = mboekd, reserveringsaldo = artikelen.c.reserveringsaldo - mhoev,\
jaarverbruik_1 = artikelen.c.jaarverbruik_1 + mhoev)
con.execute(stmt)
mwaarde = martprijs*1.1*mhoev
con = engine.connect()
elif mjaar%2 == 1: #oneven jaartal
stmt = update(artikelen).where(artikelen.c.artikelID == martnr).values(\
art_voorraad = artikelen.c.art_voorraad - mhoev, bestelstatus = martbestst,\
mutatiedatum = mboekd, reserveringsaldo = artikelen.c.reserveringsaldo - mhoev,\
jaarverbruik_2 = artikelen.c.jaarverbruik_2 + mhoev)
con.execute(stmt)
mwaarde = martprijs*1.1*mhoev
con = engine.connect()
if mmmstatus:
mmeerminder = mwaarde
else:
mmeerminder = 0
if str(mwerknr)[0] == '8':
stmt = update(werken).where(werken.c.werknummerID == mwerknr).values(\
kosten_materialen = werken.c.kosten_materialen + mwaarde,\
meerminderwerk = werken.c.meerminderwerk + mmeerminder)
con.execute(stmt)
mutatienr=(con.execute(select([func.max(artikelmutaties.c.mutatieID,\
type_=Integer).label('mutatienr')])).scalar())
mutatienr += 1
ins = insert(artikelmutaties).values(mutatieID = mutatienr, artikelID =\
martnr, werknummerID = mwerknr, hoeveelheid = -mhoev, boekdatum = mboekd,\
tot_mag_prijs = mhoev*martprijs, btw_hoog = .21*mhoev*martprijs,\
mmstatus = mmmstatus)
con.execute(ins)
elif str(mwerknr)[0] == '7':
stmt = update(orders_intern).where(orders_intern.c.werkorderID == mwerknr).values(\
werk_materialen = orders_intern.c.werk_materialen + mwaarde,\
meerminderwerk = orders_intern.c.meerminderwerk + mmeerminder)
con.execute(stmt)
mutatienr=(con.execute(select([func.max(artikelmutaties.c.mutatieID,\
type_=Integer).label('mutatienr')])).scalar())
mutatienr += 1
ins = insert(artikelmutaties).values(mutatieID = mutatienr, artikelID =\
martnr, werkorderID = mwerknr, hoeveelheid = -mhoev, boekdatum = mboekd,\
tot_mag_prijs = mhoev*martprijs, btw_hoog = .21*mhoev*martprijs,\
mmstatus = mmmstatus)
con.execute(ins)
updrl = update(raaplijst).where(raaplijst.c.lijstID == mlijstnr).\
values(geleverd = raaplijst.c.geleverd+mhoev, boekdatum = mboekd )
con.execute(updrl)
transaction.commit()
invoerOK()
except IntegrityError:
transaction.rollback()
negVoorraad()
con.close
return(mwerknr)
win = MyWindow(data_list, header)
win.exec_()
kiesSelektie(route, m_email)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )