Guest User

Untitled

a guest
Aug 10th, 2018
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.05 KB | None | 0 0
  1. import sys
  2. from cx_Freeze import Executable,setup
  3.  
  4.  
  5. build_op = {
  6. "packages":['os','firebase_01','firebase_admin','idna','requests'],
  7. 'include_files':[
  8. 'Busqueda.py',
  9. 'Firebase_load.py',
  10. 'Inicio.py',
  11. 'Inventario.py',
  12. 'Login.py',
  13. 'Registro.py',
  14. 'Sqlite.py',
  15. 'Traspasos.py',
  16. 'C:/Users/Angel/Desktop/N_Proyect/Db',
  17. 'C:/Users/Angel/Desktop/N_Proyect/fire',
  18. 'C:/Users/Angel/Desktop/N_Proyect/Images',
  19. 'C:/Users/Angel/Desktop/N_Proyect/Interfaces',
  20. ]
  21. }
  22.  
  23. setup(
  24. name = "Exe_PointSale",
  25. version = "1.0.0",
  26. description = "Punto de Venta",
  27. executables = [Executable("Login.py",base="Win32GUI")],
  28. options = {"build_exe":build_op}
  29. )
  30.  
  31. from PyQt5.QtWidgets import QMainWindow, QApplication
  32. from PyQt5 import uic, QtCore, Qt
  33. from Inicio import Inicio
  34. from Firebase_load import *
  35.  
  36. class Principal(QMainWindow):
  37. def __init__(self):
  38. QMainWindow.__init__(self)
  39. uic.loadUi("Interfaces/Login.ui",self)
  40.  
  41. self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
  42. self.setAttribute(QtCore.Qt.WA_TranslucentBackground,True)
  43. self.setAttribute(QtCore.Qt.WA_NoSystemBackground,False)
  44.  
  45. self.closed.clicked.connect(lambda:self.close())
  46. self.mostrar_hora()
  47.  
  48. self.timer = QtCore.QTimer(self)
  49. self.timer.setInterval(1000)
  50. self.timer.timeout.connect(self.mostrar_hora)
  51. self.timer.start()
  52.  
  53. def mostrar_hora(self):
  54. self.hora.setText(QtCore.QDateTime.currentDateTime().toString("hh:mm:ss AP"))
  55.  
  56.  
  57.  
  58. class Dato(Principal):
  59. def __init__(self):
  60. Principal.__init__(self)
  61. self.b_login.clicked.connect(self.validate_User)
  62.  
  63. def validate_User(self):
  64. user = self.l_usuario.text()
  65.  
  66. if user == '':
  67. self.l_status.setText('No se ingreso un usuario')
  68. else:
  69. ref = db.reference("/usuarios")
  70. res = ref.get()
  71.  
  72. for key in res.items():
  73. if key[1]['usuario'] == user:
  74. ref_pass = key[0] #nombre
  75. self.l_status.setText('')
  76. self.validate_password(ref_pass)
  77. break
  78. else:
  79. self.l_status.setText("El usuario "+ user +" no fue encontrado")
  80. break
  81.  
  82. def validate_password(self,user):
  83. password = self.l_password.text()
  84.  
  85. refp = db.reference("/usuarios/"+user)
  86. res = refp.get()
  87.  
  88. for key in res.items():
  89. if key[0] == 'password':
  90. if key[1] == password:
  91. self.other()
  92. self.l_status.setText("login")
  93. pass
  94. else:
  95. self.l_password.setText('')
  96. self.l_status.setText("Invalidate Password")
  97.  
  98.  
  99.  
  100. def other(self):
  101. self.close()
  102. self.inicio = Inicio()
  103. self.inicio.user.setText(self.l_usuario.text())
  104. self.inicio.show()
  105.  
  106. def mousePressEvent(self,event):
  107. if event.button() == QtCore.Qt.LeftButton:
  108. self.dragPosition = event.globalPos() - self.frameGeometry().topLeft()
  109. event.accept()
  110. def mouseMoveEvent(self,event):
  111. if event.buttons() == QtCore.Qt.LeftButton:
  112. self.move(event.globalPos()-self.dragPosition)
  113. event.accept()
  114.  
  115. app = QApplication([])
  116. p = Dato()
  117. p.show()
  118. app.exec_()
  119.  
  120. from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog, QTableWidgetItem
  121. from PyQt5 import uic, QtCore, QtNetwork, QtCore, QtGui, Qt, QtWidgets
  122. import webbrowser
  123. from Firebase_load import *
  124. from Registro import Registro
  125. from Busqueda import Secundaria
  126. from Inventario import mostrar
  127. from Traspasos import Traspasos
  128.  
  129. class Inicio(QMainWindow):
  130. def __init__(self):
  131. QMainWindow.__init__(self)
  132. uic.loadUi("Interfaces/Inicio.ui",self)
  133.  
  134.  
  135. self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
  136. self.setAttribute(QtCore.Qt.WA_TranslucentBackground,True)
  137. self.setAttribute(QtCore.Qt.WA_NoSystemBackground,False)
  138.  
  139. self.l_busqueda.setFocus()
  140. self.l_busqueda.installEventFilter(self)
  141. self.b_busqueda.clicked.connect(self.busqueda)
  142. self.add.clicked.connect(self.add_data)
  143. self.remove.clicked.connect(lambda:self.tabla.removeRow(self.tabla.currentRow()))
  144. self.Vender.clicked.connect(self.Vender_pro)
  145. self.Actualizar.clicked.connect(lambda:mostrar(self.tabla2))
  146.  
  147. self.closed.clicked.connect(lambda:self.close())
  148. self.minim.clicked.connect(lambda:self.showMinimized())
  149. self.Maxim.clicked.connect(self.tamano_Principal)
  150. self.Limpiar.clicked.connect(self.clear_all)
  151. self.Registro.clicked.connect(lambda:Imagen_clas().show())
  152. self.Consulta.clicked.connect(lambda:Secundaria().show())
  153. self.Ventas.clicked.connect(lambda:self.stackedWidget.setCurrentIndex(0))
  154. self.Inventario.clicked.connect(lambda:self.stackedWidget.setCurrentIndex(1))
  155. self.Traspasos.clicked.connect(lambda:Traspasos().show())
  156.  
  157.  
  158. self.ag.clicked.connect(lambda:webbrowser.open('https://www.agelectronica.com/vs/'))
  159. self.cva.clicked.connect(lambda:webbrowser.open('https://www.grupocva.com/page/'))
  160. self.mitzu.clicked.connect(lambda:webbrowser.open('https://www.mitzu.com/'))
  161. self.steren.clicked.connect(lambda:webbrowser.open('https://www.steren.com.mx/'))
  162.  
  163. self.b_steren.clicked.connect(lambda:webbrowser.open('https://www.steren.com.mx/catalogsearch/result/?q='+self.l_steren.text()))
  164.  
  165. self.timer = QtCore.QTimer(self)
  166. self.timer.setInterval(1000)
  167. self.timer.timeout.connect(self.mostrar_hora)
  168. self.timer.start()
  169.  
  170. def clear_all(self):
  171. lista = [self.l_busqueda,self.l_producto,self.l_precio,self.l_marca,self.x1,self.x2,self.x3,self.l_imagen]
  172. for item in lista:
  173. item.clear()
  174. self.tabla.setRowCount(0)
  175.  
  176. def eventFilter(self,obj,event):
  177. if event.type() == QtCore.QEvent.KeyPress:
  178. if event.key() == QtCore.Qt.Key_Return:
  179. self.busqueda()
  180. return True
  181. return QtWidgets.QMainWindow.eventFilter(self,obj,event)
  182.  
  183. def tamano_Principal(self):
  184. if self.isMaximized():
  185. self.showNormal()
  186. else:
  187. self.showMaximized()
  188.  
  189. def mostrar_hora(self):
  190. t_now = QtCore.QDateTime.currentDateTime().toString("hh:mm:ss")
  191. if t_now == '15:00:00':
  192. QMessageBox.information(None,"Recordatorio","Realizar corte de caja "+t_now,QMessageBox.Ok)
  193. elif t_now == '17:00:00':
  194. QMessageBox.information(None,"Recordatorio","Realizar corte de caja "+t_now,QMessageBox.Ok)
  195. elif t_now == '20:59:00':
  196. QMessageBox.information(None,"Recordatorio","Realizar corte de caja "+t_now,QMessageBox.Ok)
  197.  
  198. self.hora.setText(QtCore.QDateTime.currentDateTime().toString("hh:mm:ss AP"))
  199.  
  200. def busqueda(self):
  201. codigo = self.l_busqueda.text()
  202. if len(codigo) > 4:
  203. self.busqueda_bar(codigo)
  204.  
  205. else:
  206. ref = db.reference('/Productos_Bar')
  207. r1 = ref.get()
  208. for key in r1.items():
  209. respuesta = key[1]['id']
  210. if respuesta == codigo:
  211. nueva_ref = key[0]
  212. self.busqueda_bar(nueva_ref)
  213. self.l_busqueda.setText(codigo)
  214. break
  215. else:
  216. self.l_busqueda.setText('ID no encontrado')
  217.  
  218. def busqueda_bar(self,code):
  219. ref_bus = db.reference('/Productos_Bar/'+str(code))
  220. refb = ref_bus.get()
  221. try:
  222. for key in refb.items():
  223. if key[0] == 'producto':
  224. self.l_producto.setText(key[1])
  225. elif key[0] == 'precio':
  226. self.l_precio.setText('$ '+str(key[1]))
  227. elif key[0] == 'marca':
  228. self.l_marca.setText(key[1])
  229. elif key[0] == 'exe1':
  230. self.x1.setText(str(key[1]))
  231. elif key[0] == 'exe2':
  232. self.x2.setText(str(key[1]))
  233. elif key[0] == 'exe3':
  234. self.x3.setText(str(key[1]))
  235. elif key[0] == 'url':
  236. url = key[1]
  237. manager = QtNetwork.QNetworkAccessManager(self)
  238. manager.finished.connect(self.onFinished)
  239. manager.get(QtNetwork.QNetworkRequest(QtCore.QUrl(url)))
  240. elif key[0] == 'id':
  241. global _id
  242. _id = key[1]
  243. except:
  244. self.l_busqueda.setText('Bar_code no definido')
  245. self.add_data()
  246. self.l_busqueda.setText('')
  247.  
  248. @QtCore.pyqtSlot(QtNetwork.QNetworkReply)
  249. def onFinished(self,reply):
  250. image = QtGui.QImage.fromData(reply.readAll())
  251. if not image.isNull():
  252. pixi = QtGui.QPixmap.fromImage(image).scaled(150,150)
  253. self.l_imagen.setPixmap(pixi)
  254. self.l_imagen.resize(150,150)
  255.  
  256. def add_data(self):
  257. try:
  258. self.tabla.insertRow(self.tabla.rowCount())
  259. item = QTableWidgetItem(_id)
  260. item.setTextAlignment(QtCore.Qt.AlignCenter)
  261. item2 = QTableWidgetItem(self.l_producto.text())
  262. item2.setTextAlignment(QtCore.Qt.AlignCenter)
  263. item3 = QTableWidgetItem(self.l_marca.text())
  264. item3.setTextAlignment(QtCore.Qt.AlignCenter)
  265. item4 = QTableWidgetItem(self.l_precio.text())
  266. item4.setTextAlignment(QtCore.Qt.AlignCenter)
  267. self.tabla.setItem(self.tabla.rowCount()-1,0,item)
  268. self.tabla.setItem(self.tabla.rowCount()-1,1,item2)
  269. self.tabla.setItem(self.tabla.rowCount()-1,2,item3)
  270. self.tabla.setItem(self.tabla.rowCount()-1,3,item4)
  271.  
  272.  
  273. except:
  274. self.l_busqueda.setText("Error undefinited")
  275.  
  276. def Vender_pro(self):
  277.  
  278. precio = self.l_precio.text()
  279. prec = precio.lstrip('$ ')
  280. global sucursal
  281. sucursal = self.combo.currentText()
  282. acount =0
  283. result = 0
  284. venta = []
  285. global lista1
  286. lista1 = []
  287. global lista2
  288. lista2 = []
  289. global lista3
  290. lista3 = []
  291.  
  292. if acount == 0:
  293. s = self.tabla.rowCount()
  294. for i in range(0,s):
  295. v = self.tabla.item(i,3).text()
  296. v1 = float(v.lstrip('$ '))
  297. venta.append(v1)
  298. lista1.append(self.tabla.item(i,0).text())
  299. lista2.append(self.tabla.item(i,1).text())
  300. lista3.append(prec)
  301. for vs in venta:
  302. result = result+vs
  303. acount = s
  304. elif acount !=0:
  305. venta.clear()
  306. s = self.tabla.rowCount() - acount
  307. for i in range(0,s):
  308. v = self.tabla.item(i,3).text()
  309. v1 = float(v.lstrip('$ '))
  310. venta.append(v1)
  311. lista1.append(self.tabla.item(i,0).text())
  312. lista2.append(self.tabla.item(i,1).text())
  313. for vs in venta:
  314. result = result+vs
  315. acount = 0
  316.  
  317. ticket = Ticket()
  318. ticket.total(result)
  319. ticket.exec_()
  320.  
  321. def mousePressEvent(self,event):
  322. if event.button() == QtCore.Qt.LeftButton:
  323. self.dragPosition = event.globalPos() - self.frameGeometry().topLeft()
  324. event.accept()
  325. def mouseMoveEvent(self,event):
  326. if event.buttons() == QtCore.Qt.LeftButton:
  327. self.move(event.globalPos()-self.dragPosition)
  328. event.accept()
  329.  
  330. class Ticket(QDialog):
  331. def __init__(self):
  332. QDialog.__init__(self)
  333. uic.loadUi("Interfaces/Venta.ui",self)
  334. self.b_Venta.clicked.connect(self.productos)
  335. self.b_Cancelar.clicked.connect(lambda:self.close())
  336.  
  337. self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
  338. self.setAttribute(QtCore.Qt.WA_TranslucentBackground,True)
  339. self.setAttribute(QtCore.Qt.WA_NoSystemBackground,False)
  340.  
  341.  
  342. def total(self,total1):
  343. global n
  344. n = total1
  345. tr = round(n, 2)
  346. self.Total.setText('$ {}'.format(str(tr)))
  347. self.Cantidad.setFocus()
  348. self.Cantidad.installEventFilter(self)
  349.  
  350. def eventFilter(self,obj,event):
  351. if obj is self.Cantidad and event.type() == QtCore.QEvent.KeyPress:
  352. if event.key() == QtCore.Qt.Key_Return:
  353. self.Calculo()
  354. return True
  355. return QDialog.eventFilter(self,obj,event)
  356.  
  357. def Calculo(self):
  358. pago = float(self.Cantidad.text())
  359. operacion = pago-n
  360. opf = round(operacion, 2)
  361. op = str(opf)
  362. self.Cambio.setText('$ {}'.format(op))
  363.  
  364. def productos(self):
  365. for i in lista1:
  366. self.producto_especifico_id(i,sucursal)
  367.  
  368. def producto_especifico_id(self,identi,suc):
  369. try:
  370. if len(identi) > 4:
  371. self.producto_especifico_bar(identi,suc)
  372. else:
  373. ref = db.reference('/Productos_Bar')
  374. r1 = ref.get()
  375. for key in r1.items():
  376. res = key[1]['id']
  377. if res == identi:
  378. new_ref = key[0]
  379. self.producto_especifico_bar(new_ref,sucursal)
  380. break
  381. else:
  382. pass
  383. except:
  384. pass
  385.  
  386. def producto_especifico_bar(self,bar,sucursal):
  387. new_total = 0
  388. ref = db.reference('/Productos_Bar/'+str(bar))
  389. r0 = ref.get()
  390. total = 0
  391. try:
  392. for key in r0.items():
  393. if sucursal == 'exe1':
  394. if key[0] == 'exe1':
  395. val = key[1]
  396. total = val
  397. if total == 0:
  398. self.Cambio.setText('Producto sin inventario')
  399. break
  400. else:
  401. new_val = total -1
  402. ref.update({
  403. 'exe1':new_val
  404. })
  405.  
  406. elif sucursal == 'exe2':
  407. if key[0] == 'exe2':
  408. val = key[1]
  409. total = val
  410. if total == 0:
  411. self.Cambio.setText('Producto sin inventario')
  412. break
  413. else:
  414. new_val = total -1
  415. ref.update({
  416. 'exe2':new_val
  417. })
  418. elif sucursal == 'exe3':
  419. if key[0] == 'exe3':
  420. val = key[1]
  421. total = val
  422. if total == 0:
  423. self.Cambio.setText('Producto sin inventario')
  424. break
  425. else:
  426. new_val = total -1
  427. ref.update({
  428. 'exe3':new_val
  429. })
  430.  
  431. except:
  432. pass
  433. self.close()
  434.  
  435.  
  436.  
  437. #app = QApplication([])
  438. #i = Inicio()
  439. #i.show()
  440. #app.exec_()
Add Comment
Please, Sign In to add comment