class ventana_punto_de_venta(QDialog, Ui_dialogo_pdeventa): def __init__(self): QDialog.__init__(self) self.setupUi(self) self.resize(1024, 728) self.line_codigo.setFocus() self.venta = Venta(-1) self.venta.nueva_venta(1) self.line_codigo.returnPressed.connect(self.agregar_producto) self.fecha = QDate.currentDate().toString() self.lbl_fecha.setText(self.fecha) self.hora = QTime.currentTime().toString() self.lbl_hora.setText(self.hora) self.timer = QTimer() self.timer.setInterval(500) self.timer.timeout.connect(self.actualizar_hora) self.timer.start() self.table_productos.setColumnCount(6) cabecera = (u"Código", "Producto", "Precio", "#", "Dcto", "Subtotal") self.table_productos.setHorizontalHeaderLabels(cabecera) self.pb_pagar.clicked.connect(self.efectuar_venta) self.pb_buscar.clicked.connect(self.mostrar_buscar_productos) icon = QIcon() icon.addPixmap(QPixmap("imagenes/enviar.png"), QIcon.Normal, QIcon.Off) self.pb_pagar.setIcon(icon) self.pb_buscar.setIcon(QIcon("imagenes/buscar.png")) self.pb_borrar.setIcon(QIcon("imagenes/borrar.png")) self.pb_pagar.setMinimumSize(10, 48) self.pb_borrar.setMinimumSize(10, 48) self.pb_buscar.setMinimumSize(10, 48) self.table_productos.setColumnWidth(0, 120) self.table_productos.setColumnWidth(1, 310) self.table_productos.setColumnWidth(2, 120) self.table_productos.setColumnWidth(3, 50) self.table_productos.setColumnWidth(4, 75) self.table_productos.setColumnWidth(5, 250) self.lbl_logo.setPixmap(QPixmap("imagenes/logo.png")) self.lbl_logo.setScaledContents(True) self.lbl_logo.setMinimumSize(617, 10) self.actualizar_productos() self.reproducir_video() self.usuario_id = 0 #self.vp_comercial.setMinimumSize(200, 150) style = """QDialog{background:white; border:solid; padding:10px} QCommandLinkButton{background:white}""" self.setStyleSheet(style) self.clb_cliente.clicked.connect(self.mostrar_clientes) self.pb_borrar.clicked.connect(self.eliminar_producto) self.clb_usuario.clicked.connect(self.logout) def mostrar_clientes(self): from ventanaClientes import ventana_clientes self.vmc = ventana_clientes(self.venta) self.vmc.show() def mostrar_buscar_productos(self): self.vbpp = ventana_buscar_producto() self.vbpp.show() def reproducir_video(self): #self.vp_comercial.play(phonon.Phonon.MediaSource("video.mp4")) pass def actualizar_cliente(self, cliente_id): self.venta.cliente_id = cliente_id query = QSqlQuery() sql = "select nombre from clientes where cliente_id=%d" % self.venta.cliente_id if query.exec_(sql): query.next() nombre = query.value(0).toString() self.clb_cliente.setText("Cliente: " + nombre) self.venta.cliente = nombre def efectuar_venta(self): self.vpagar = ventana_pagar(self.venta) self.vpagar.show() def actualizar_usuario(self): query = QSqlQuery() sql = "select nombre from usuarios where usuario_id=%d" % self.usuario_id if query.exec_(sql): query.next() nombre = query.value(0).toString() self.clb_usuario.setText("Atiende: %s" % nombre) self.venta.usuario = nombre self.venta.usuario_id = self.usuario_id self.actualizar_cliente(self.venta.cliente_id) def actualizar_hora(self): global paso_producto self.hora = QTime.currentTime().toString() self.lbl_hora.setText(self.hora) if not self.venta.es_nueva: self.venta = Venta(-1) self.venta.cliente_id = 1 self.actualizar_productos() if not paso_producto == "": self.line_codigo.setText(self.line_codigo.text() + paso_producto) paso_producto = "" self.line_codigo.setFocus() self.actualizar_cliente(self.venta.cliente_id) def agregar_producto(self): codigo = self.line_codigo.text() if len(codigo) < 3: self.line_codigo.clear() return cantidad = 1 if len(codigo.split('*')) == 1: cantidad = 1 else: cantidad = int(codigo.split('*')[0]) codigo = str(codigo.split('*')[1]) descuento = 0 if len(codigo.split('/')) == 2: descuento = int(codigo.split('/')[0]) codigo = str(codigo.split('/')[1]) if producto(codigo).existe: resultado = self.venta.agregar_producto(codigo, cantidad, descuento) if resultado == 0: gg = QMessageBox() gg.setText("Error al agregar producto, no existe o la cantidad excedio la existencia") gg.setStandardButtons(gg.Ok) gg.setWindowTitle("CopyTodo - Advertencia") gg.exec_() self.line_codigo.clear() self.line_codigo.setFocus() else: self.line_codigo.clear() self.line_codigo.setFocus() self.actualizar_productos() else: gg = QMessageBox() gg.setText("Producto no existe desea Agregarlo??") gg.setStandardButtons(gg.Ok | gg.Cancel) gg.setWindowTitle("CopyTodo - Producto Nuevo?") gg.exec_() if gg.result() == gg.Ok: self.vap = ventana_nuevo_producto() self.vap.line_codigo.setText(codigo) self.vap.line_codigo.setEnabled(False) self.vap.llamado = True self.vap.show() else: self.line_codigo.setFocus() self.line_codigo.clear() def actualizar_productos(self): numero_productos = len(self.venta.productos.keys()) self.table_productos.setRowCount(numero_productos) cont = 0 for i in self.venta.productos.keys(): g = self.venta.productos[i] qcod = QTableWidgetItem(g.codigo) self.table_productos.setItem(cont, 0, qcod) qnom = QTableWidgetItem(g.nombre) qpre = QTableWidgetItem(str(g.precio)) qcan = QTableWidgetItem(str(g.cantidad)) qdes = QTableWidgetItem(str(g.descuento)) qsub = QTableWidgetItem(str(g.subtotal)) self.table_productos.setItem(cont, 1, qnom) self.table_productos.setItem(cont, 2, qpre) self.table_productos.setItem(cont, 3, qcan) self.table_productos.setItem(cont, 4, qdes) self.table_productos.setItem(cont, 5, qsub) cont += 1 self.venta.actualizar_total() self.lbl_total.setText("$ " + str(self.venta.total)) if self.venta.total <= 0: self.pb_pagar.setEnabled(False) else: self.pb_pagar.setEnabled(True) def eliminar_producto(self): codigo = str(self.table_productos.itemAt(0, self.table_productos.currentIndex().row()).text()) self.venta.borrar_producto(codigo) self.actualizar_productos() def logout(self): from login import ventana_login self.vlo = ventana_login() self.vlo.show() self.close()