Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from cx_Freeze import Executable,setup
- build_op = {
- "packages":['os','firebase_01','firebase_admin','idna','requests'],
- 'include_files':[
- 'Busqueda.py',
- 'Firebase_load.py',
- 'Inicio.py',
- 'Inventario.py',
- 'Login.py',
- 'Registro.py',
- 'Sqlite.py',
- 'Traspasos.py',
- 'C:/Users/Angel/Desktop/N_Proyect/Db',
- 'C:/Users/Angel/Desktop/N_Proyect/fire',
- 'C:/Users/Angel/Desktop/N_Proyect/Images',
- 'C:/Users/Angel/Desktop/N_Proyect/Interfaces',
- ]
- }
- setup(
- name = "Exe_PointSale",
- version = "1.0.0",
- description = "Punto de Venta",
- executables = [Executable("Login.py",base="Win32GUI")],
- options = {"build_exe":build_op}
- )
- from PyQt5.QtWidgets import QMainWindow, QApplication
- from PyQt5 import uic, QtCore, Qt
- from Inicio import Inicio
- from Firebase_load import *
- class Principal(QMainWindow):
- def __init__(self):
- QMainWindow.__init__(self)
- uic.loadUi("Interfaces/Login.ui",self)
- self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
- self.setAttribute(QtCore.Qt.WA_TranslucentBackground,True)
- self.setAttribute(QtCore.Qt.WA_NoSystemBackground,False)
- self.closed.clicked.connect(lambda:self.close())
- self.mostrar_hora()
- self.timer = QtCore.QTimer(self)
- self.timer.setInterval(1000)
- self.timer.timeout.connect(self.mostrar_hora)
- self.timer.start()
- def mostrar_hora(self):
- self.hora.setText(QtCore.QDateTime.currentDateTime().toString("hh:mm:ss AP"))
- class Dato(Principal):
- def __init__(self):
- Principal.__init__(self)
- self.b_login.clicked.connect(self.validate_User)
- def validate_User(self):
- user = self.l_usuario.text()
- if user == '':
- self.l_status.setText('No se ingreso un usuario')
- else:
- ref = db.reference("/usuarios")
- res = ref.get()
- for key in res.items():
- if key[1]['usuario'] == user:
- ref_pass = key[0] #nombre
- self.l_status.setText('')
- self.validate_password(ref_pass)
- break
- else:
- self.l_status.setText("El usuario "+ user +" no fue encontrado")
- break
- def validate_password(self,user):
- password = self.l_password.text()
- refp = db.reference("/usuarios/"+user)
- res = refp.get()
- for key in res.items():
- if key[0] == 'password':
- if key[1] == password:
- self.other()
- self.l_status.setText("login")
- pass
- else:
- self.l_password.setText('')
- self.l_status.setText("Invalidate Password")
- def other(self):
- self.close()
- self.inicio = Inicio()
- self.inicio.user.setText(self.l_usuario.text())
- self.inicio.show()
- def mousePressEvent(self,event):
- if event.button() == QtCore.Qt.LeftButton:
- self.dragPosition = event.globalPos() - self.frameGeometry().topLeft()
- event.accept()
- def mouseMoveEvent(self,event):
- if event.buttons() == QtCore.Qt.LeftButton:
- self.move(event.globalPos()-self.dragPosition)
- event.accept()
- app = QApplication([])
- p = Dato()
- p.show()
- app.exec_()
- from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog, QTableWidgetItem
- from PyQt5 import uic, QtCore, QtNetwork, QtCore, QtGui, Qt, QtWidgets
- import webbrowser
- from Firebase_load import *
- from Registro import Registro
- from Busqueda import Secundaria
- from Inventario import mostrar
- from Traspasos import Traspasos
- class Inicio(QMainWindow):
- def __init__(self):
- QMainWindow.__init__(self)
- uic.loadUi("Interfaces/Inicio.ui",self)
- self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
- self.setAttribute(QtCore.Qt.WA_TranslucentBackground,True)
- self.setAttribute(QtCore.Qt.WA_NoSystemBackground,False)
- self.l_busqueda.setFocus()
- self.l_busqueda.installEventFilter(self)
- self.b_busqueda.clicked.connect(self.busqueda)
- self.add.clicked.connect(self.add_data)
- self.remove.clicked.connect(lambda:self.tabla.removeRow(self.tabla.currentRow()))
- self.Vender.clicked.connect(self.Vender_pro)
- self.Actualizar.clicked.connect(lambda:mostrar(self.tabla2))
- self.closed.clicked.connect(lambda:self.close())
- self.minim.clicked.connect(lambda:self.showMinimized())
- self.Maxim.clicked.connect(self.tamano_Principal)
- self.Limpiar.clicked.connect(self.clear_all)
- self.Registro.clicked.connect(lambda:Imagen_clas().show())
- self.Consulta.clicked.connect(lambda:Secundaria().show())
- self.Ventas.clicked.connect(lambda:self.stackedWidget.setCurrentIndex(0))
- self.Inventario.clicked.connect(lambda:self.stackedWidget.setCurrentIndex(1))
- self.Traspasos.clicked.connect(lambda:Traspasos().show())
- self.ag.clicked.connect(lambda:webbrowser.open('https://www.agelectronica.com/vs/'))
- self.cva.clicked.connect(lambda:webbrowser.open('https://www.grupocva.com/page/'))
- self.mitzu.clicked.connect(lambda:webbrowser.open('https://www.mitzu.com/'))
- self.steren.clicked.connect(lambda:webbrowser.open('https://www.steren.com.mx/'))
- self.b_steren.clicked.connect(lambda:webbrowser.open('https://www.steren.com.mx/catalogsearch/result/?q='+self.l_steren.text()))
- self.timer = QtCore.QTimer(self)
- self.timer.setInterval(1000)
- self.timer.timeout.connect(self.mostrar_hora)
- self.timer.start()
- def clear_all(self):
- lista = [self.l_busqueda,self.l_producto,self.l_precio,self.l_marca,self.x1,self.x2,self.x3,self.l_imagen]
- for item in lista:
- item.clear()
- self.tabla.setRowCount(0)
- def eventFilter(self,obj,event):
- if event.type() == QtCore.QEvent.KeyPress:
- if event.key() == QtCore.Qt.Key_Return:
- self.busqueda()
- return True
- return QtWidgets.QMainWindow.eventFilter(self,obj,event)
- def tamano_Principal(self):
- if self.isMaximized():
- self.showNormal()
- else:
- self.showMaximized()
- def mostrar_hora(self):
- t_now = QtCore.QDateTime.currentDateTime().toString("hh:mm:ss")
- if t_now == '15:00:00':
- QMessageBox.information(None,"Recordatorio","Realizar corte de caja "+t_now,QMessageBox.Ok)
- elif t_now == '17:00:00':
- QMessageBox.information(None,"Recordatorio","Realizar corte de caja "+t_now,QMessageBox.Ok)
- elif t_now == '20:59:00':
- QMessageBox.information(None,"Recordatorio","Realizar corte de caja "+t_now,QMessageBox.Ok)
- self.hora.setText(QtCore.QDateTime.currentDateTime().toString("hh:mm:ss AP"))
- def busqueda(self):
- codigo = self.l_busqueda.text()
- if len(codigo) > 4:
- self.busqueda_bar(codigo)
- else:
- ref = db.reference('/Productos_Bar')
- r1 = ref.get()
- for key in r1.items():
- respuesta = key[1]['id']
- if respuesta == codigo:
- nueva_ref = key[0]
- self.busqueda_bar(nueva_ref)
- self.l_busqueda.setText(codigo)
- break
- else:
- self.l_busqueda.setText('ID no encontrado')
- def busqueda_bar(self,code):
- ref_bus = db.reference('/Productos_Bar/'+str(code))
- refb = ref_bus.get()
- try:
- for key in refb.items():
- if key[0] == 'producto':
- self.l_producto.setText(key[1])
- elif key[0] == 'precio':
- self.l_precio.setText('$ '+str(key[1]))
- elif key[0] == 'marca':
- self.l_marca.setText(key[1])
- elif key[0] == 'exe1':
- self.x1.setText(str(key[1]))
- elif key[0] == 'exe2':
- self.x2.setText(str(key[1]))
- elif key[0] == 'exe3':
- self.x3.setText(str(key[1]))
- elif key[0] == 'url':
- url = key[1]
- manager = QtNetwork.QNetworkAccessManager(self)
- manager.finished.connect(self.onFinished)
- manager.get(QtNetwork.QNetworkRequest(QtCore.QUrl(url)))
- elif key[0] == 'id':
- global _id
- _id = key[1]
- except:
- self.l_busqueda.setText('Bar_code no definido')
- self.add_data()
- self.l_busqueda.setText('')
- @QtCore.pyqtSlot(QtNetwork.QNetworkReply)
- def onFinished(self,reply):
- image = QtGui.QImage.fromData(reply.readAll())
- if not image.isNull():
- pixi = QtGui.QPixmap.fromImage(image).scaled(150,150)
- self.l_imagen.setPixmap(pixi)
- self.l_imagen.resize(150,150)
- def add_data(self):
- try:
- self.tabla.insertRow(self.tabla.rowCount())
- item = QTableWidgetItem(_id)
- item.setTextAlignment(QtCore.Qt.AlignCenter)
- item2 = QTableWidgetItem(self.l_producto.text())
- item2.setTextAlignment(QtCore.Qt.AlignCenter)
- item3 = QTableWidgetItem(self.l_marca.text())
- item3.setTextAlignment(QtCore.Qt.AlignCenter)
- item4 = QTableWidgetItem(self.l_precio.text())
- item4.setTextAlignment(QtCore.Qt.AlignCenter)
- self.tabla.setItem(self.tabla.rowCount()-1,0,item)
- self.tabla.setItem(self.tabla.rowCount()-1,1,item2)
- self.tabla.setItem(self.tabla.rowCount()-1,2,item3)
- self.tabla.setItem(self.tabla.rowCount()-1,3,item4)
- except:
- self.l_busqueda.setText("Error undefinited")
- def Vender_pro(self):
- precio = self.l_precio.text()
- prec = precio.lstrip('$ ')
- global sucursal
- sucursal = self.combo.currentText()
- acount =0
- result = 0
- venta = []
- global lista1
- lista1 = []
- global lista2
- lista2 = []
- global lista3
- lista3 = []
- if acount == 0:
- s = self.tabla.rowCount()
- for i in range(0,s):
- v = self.tabla.item(i,3).text()
- v1 = float(v.lstrip('$ '))
- venta.append(v1)
- lista1.append(self.tabla.item(i,0).text())
- lista2.append(self.tabla.item(i,1).text())
- lista3.append(prec)
- for vs in venta:
- result = result+vs
- acount = s
- elif acount !=0:
- venta.clear()
- s = self.tabla.rowCount() - acount
- for i in range(0,s):
- v = self.tabla.item(i,3).text()
- v1 = float(v.lstrip('$ '))
- venta.append(v1)
- lista1.append(self.tabla.item(i,0).text())
- lista2.append(self.tabla.item(i,1).text())
- for vs in venta:
- result = result+vs
- acount = 0
- ticket = Ticket()
- ticket.total(result)
- ticket.exec_()
- def mousePressEvent(self,event):
- if event.button() == QtCore.Qt.LeftButton:
- self.dragPosition = event.globalPos() - self.frameGeometry().topLeft()
- event.accept()
- def mouseMoveEvent(self,event):
- if event.buttons() == QtCore.Qt.LeftButton:
- self.move(event.globalPos()-self.dragPosition)
- event.accept()
- class Ticket(QDialog):
- def __init__(self):
- QDialog.__init__(self)
- uic.loadUi("Interfaces/Venta.ui",self)
- self.b_Venta.clicked.connect(self.productos)
- self.b_Cancelar.clicked.connect(lambda:self.close())
- self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
- self.setAttribute(QtCore.Qt.WA_TranslucentBackground,True)
- self.setAttribute(QtCore.Qt.WA_NoSystemBackground,False)
- def total(self,total1):
- global n
- n = total1
- tr = round(n, 2)
- self.Total.setText('$ {}'.format(str(tr)))
- self.Cantidad.setFocus()
- self.Cantidad.installEventFilter(self)
- def eventFilter(self,obj,event):
- if obj is self.Cantidad and event.type() == QtCore.QEvent.KeyPress:
- if event.key() == QtCore.Qt.Key_Return:
- self.Calculo()
- return True
- return QDialog.eventFilter(self,obj,event)
- def Calculo(self):
- pago = float(self.Cantidad.text())
- operacion = pago-n
- opf = round(operacion, 2)
- op = str(opf)
- self.Cambio.setText('$ {}'.format(op))
- def productos(self):
- for i in lista1:
- self.producto_especifico_id(i,sucursal)
- def producto_especifico_id(self,identi,suc):
- try:
- if len(identi) > 4:
- self.producto_especifico_bar(identi,suc)
- else:
- ref = db.reference('/Productos_Bar')
- r1 = ref.get()
- for key in r1.items():
- res = key[1]['id']
- if res == identi:
- new_ref = key[0]
- self.producto_especifico_bar(new_ref,sucursal)
- break
- else:
- pass
- except:
- pass
- def producto_especifico_bar(self,bar,sucursal):
- new_total = 0
- ref = db.reference('/Productos_Bar/'+str(bar))
- r0 = ref.get()
- total = 0
- try:
- for key in r0.items():
- if sucursal == 'exe1':
- if key[0] == 'exe1':
- val = key[1]
- total = val
- if total == 0:
- self.Cambio.setText('Producto sin inventario')
- break
- else:
- new_val = total -1
- ref.update({
- 'exe1':new_val
- })
- elif sucursal == 'exe2':
- if key[0] == 'exe2':
- val = key[1]
- total = val
- if total == 0:
- self.Cambio.setText('Producto sin inventario')
- break
- else:
- new_val = total -1
- ref.update({
- 'exe2':new_val
- })
- elif sucursal == 'exe3':
- if key[0] == 'exe3':
- val = key[1]
- total = val
- if total == 0:
- self.Cambio.setText('Producto sin inventario')
- break
- else:
- new_val = total -1
- ref.update({
- 'exe3':new_val
- })
- except:
- pass
- self.close()
- #app = QApplication([])
- #i = Inicio()
- #i.show()
- #app.exec_()
Add Comment
Please, Sign In to add comment