def crear(self): """ Da de alta un cliente nuevo y lo almacena en la base de datos. :return: """ if ValidarDatos.validarCamposVacios(self.camposRequeridos): cliente = ClienteModel( str(self.lineDni.text()), str(self.lineNombre.text()), str(self.lineApellido.text()), str(self.lineDireccion.text()), str(self.lineTelefono.text()), ) if cliente.guardar(self.sesion): QtGui.QMessageBox.information(self, "Info", "El Cliente fue dado de alta.", "Aceptar") self.limpiarCampos() self.objectCreated.emit() else: cliente = ClienteModel.buscar(ClienteModel.dni, self.sesion, str(self.lineDni.text())).first() if cliente.getBaja(): cliente.setBaja(False) cliente.modificar(self.sesion) QtGui.QMessageBox.information(self, "Info", "El Cliente fue dado de alta.", "Aceptar") self.limpiarCampos() self.objectCreated.emit() else: QtGui.QMessageBox.critical(self, "Error", "El Cliente ya existe.", "Aceptar") else: QtGui.QMessageBox.warning(self, "Atención", "Hay datos obligatorios que no fueron completados.", "Aceptar")
def crear(self): """ Da de alta un cliente nuevo y lo almacena en la base de datos. :return: """ if ValidarDatos.validarCamposVacios(self.camposRequeridos): cliente = ClienteModel(str(self.lineDni.text()), str(self.lineNombre.text()), str(self.lineApellido.text()), str(self.lineDireccion.text()), str(self.lineTelefono.text())) if cliente.guardar(self.sesion): self.showMsjEstado("El Cliente fue dado de alta.") self.limpiarCampos() self.objectCreated.emit() else: cliente = ClienteModel.buscar( ClienteModel.dni, self.sesion, str(self.lineDni.text())).first() if cliente.getBaja(): cliente.setBaja(False) cliente.modificar(self.sesion) self.showMsjEstado("El Cliente fue dado de alta.") self.limpiarCampos() self.objectCreated.emit() else: QtGui.QMessageBox.critical(self, 'Error', 'El Cliente ya existe.', 'Aceptar') else: self.showMsjEstado( "Hay datos obligatorios que no fueron completados.")
def modificar(self): """ Modifica los datos del cliente seleccionado. :return: """ itemActual = self.tableClientes.currentItem() if itemActual != None: if ValidarDatos.validarCamposVacios(self.camposRequeridos): row = itemActual.row() dni = str(self.tableClientes.item(row, 0).text()) query = ClienteModel.buscarAlta(ClienteModel.dni, self.sesion, dni) for instance in query.all(): self.cliente = instance self.cliente.setNombre(str(self.lineNombre.text())) self.cliente.setApellido(str(self.lineApellido.text())) self.cliente.setDireccion(str(self.lineDireccion.text())) self.cliente.setTelefono(str(self.lineTelefono.text())) self.cliente.modificar(self.sesion) self.showMsjEstado("El cliente fue modificado") self.objectModified.emit() self.actualizar() else: self.showMsjEstado( "Hay datos obligatorios que no fueron completados.") else: self.showMsjEstado("No se ha seleccionado un Cliente de la tabla")
def eliminar(self): """ Da de baja el cliente selecionado. :return: """ itemActual = self.tableClientes.currentItem() if itemActual == None: self.showMsjEstado( "No se ha seleccionado ningun Cliente de la tabla") else: row = itemActual.row() dni = str(self.tableClientes.item(row, 0).text()) if self.bajaValida(dni): query = ClienteModel.buscarAlta(ClienteModel.dni, self.sesion, dni) for instance in query.all(): self.cliente = instance self.cliente.borrar(self.sesion) self.showMsjEstado("El Cliente ha sido dado de baja") self.tableClientes.removeRow(row) self.objectDeleted.emit() self.actualizar() else: QtGui.QMessageBox.critical( self, 'Error', 'Existen remitos pendientes de pago para dicho ' 'Cliente.', 'Aceptar')
def modificar(self): """ Modifica los datos del cliente seleccionado. :return: """ itemActual = self.tableClientes.currentItem() if itemActual != None: if ValidarDatos.validarCamposVacios(self.camposRequeridos): row = itemActual.row() dni = str(self.tableClientes.item(row, 0).text()) query = ClienteModel.buscarAlta(ClienteModel.dni, self.sesion, dni) for instance in query.all(): self.cliente = instance self.cliente.setNombre(str(self.lineNombre.text())) self.cliente.setApellido(str(self.lineApellido.text())) self.cliente.setDireccion(str(self.lineDireccion.text())) self.cliente.setTelefono(str(self.lineTelefono.text())) self.cliente.modificar(self.sesion) QtGui.QMessageBox.information(self, "Info", "El cliente fue modificado.", "Aceptar") self.objectModified.emit() self.actualizar() else: QtGui.QMessageBox.warning( self, "Atención", "Hay datos obligatorios que no fueron completados.", "Aceptar" ) else: QtGui.QMessageBox.warning(self, "Atención", "No se ha seleccionado un Cliente de la tabla.", "Aceptar")
def eliminar(self): """ Da de baja el cliente selecionado. :return: """ itemActual = self.tableClientes.currentItem() if itemActual == None: QtGui.QMessageBox.warning( self, "Atención", "No se ha seleccionado ningún Cliente de la tabla.", "Aceptar" ) else: row = itemActual.row() dni = str(self.tableClientes.item(row, 0).text()) if self.bajaValida(dni): query = ClienteModel.buscarAlta(ClienteModel.dni, self.sesion, dni) for instance in query.all(): self.cliente = instance self.cliente.borrar(self.sesion) QtGui.QMessageBox.information(self, "Info", "El Cliente ha sido dado de baja.", "Aceptar") self.tableClientes.removeRow(row) self.objectDeleted.emit() self.actualizar() else: QtGui.QMessageBox.critical( self, "Error", "Existen remitos pendientes de pago para dicho " "Cliente.", "Aceptar" )
def cargarClientes(self): """ Carga los datos de los clientes en las tablas de las ventanas (Baja y Modificación). :return: """ self.cargarObjetos( self.tableClientes, ClienteModel.buscarTodos("dni", self.sesion).all(), ("dni", "nombre", "apellido", "direccion", "telefono"))
def cargarClientes(self): """ Carga los datos de los clientes en las tablas de las ventanas (Baja y Modificación). :return: """ self.cargarObjetos(self.tableClientes, ClienteModel.buscarTodos("dni", self.sesion).all(), ("dni", "nombre", "apellido", "direccion", "telefono") )
def buscar(self): """ Busca al cliente de acuerdo a la información ingresada y carga los datos en la tabla (Baja y Modificaión). :return: """ obj = self.sender().objectName() if obj == 'lineDni': clientes = ClienteModel.buscarAlta(ClienteModel.dni, self.sesion, str(self.lineDni.text())).all() elif obj == 'lineNombre': clientes = ClienteModel.buscarLike(ClienteModel.nombre, self.sesion, str(self.lineNombre.text())).all() elif obj == 'lineApellido': clientes = ClienteModel.buscarLike(ClienteModel.apellido, self.sesion, str(self.lineApellido.text())).all() elif obj == 'btnBuscar': if str(self.lineDni.text()) != "": clientes = ClienteModel.buscarAlta(ClienteModel.dni, self.sesion, str(self.lineDni.text())).all() elif str(self.lineNombre.text()) != "": clientes = ClienteModel.buscarLike(ClienteModel.nombre, self.sesion, str(self.lineNombre.text())).all() elif str(self.lineApellido.text()) != "": clientes = ClienteModel.buscarLike(ClienteModel.apellido, self.sesion, str(self.lineApellido.text())).all() else: self.showMsjEstado("Ingrese DNI, Nombre o Apellido del Cliente para realizar la" " busqueda.") return self.limpiarTabla(self.tableClientes) self.cargarObjetos(self.tableClientes, clientes, ("dni", "nombre", "apellido", "direccion", "telefono") )
def Listar(self): """ Genera el listado correspondiente de acuerdo a la opción seleccionada. :return: """ self.listado = self.cbTipoListado.currentText() if (self.listado=="Facturas Liquidadas Pendientes de Cobro"): pass elif (self.listado=="Productos en Stock"): if self.rbtnExcel.isChecked(): self.generarExcelProductos() else: lote_producto = LoteProducto.buscarTodos("id_lote", self.sesion).all() f = open('reportes/listadoProductosStock.html','w') data = self.productosStock(lote_producto) self.diagramaBarras(data) message = self.htmlProductosStock(lote_producto) f.write(message) f.close() pdfkit.from_file('reportes/listadoProductosStock.html', 'reportes/list.pdf') os.system('evince reportes/list.pdf &') elif (self.listado=="Ventas Realizadas"): if self.rbtnExcel.isChecked(): self.generarExcelVentas() else: facturas = Factura.buscarTodos(Factura.numero, self.sesion).all() remitos = Remito.buscarTodos(Remito.numero, self.sesion).all() data = self.cantidadVentas(facturas, remitos) #self.diagramaLinea(data) f = open('reportes/listadoVentas.html','w') ventas = self.cantidadVentas(facturas, remitos) message = self.htmlVentas(ventas) f.write(message) f.close() pdfkit.from_file('reportes/listadoVentas.html', 'reportes/list.pdf') os.system('evince reportes/list.pdf &') else: if self.rbtnExcel.isChecked(): self.generarExcelClientes() else: clientes = Cliente.buscarTodos(Cliente.dni, self.sesion).all() f = open('reportes/listadoClientes.html','w') message = self.htmlCliente(clientes) f.write(message) f.close() pdfkit.from_file('reportes/listadoClientes.html', 'reportes/list.pdf') os.system('evince reportes/list.pdf &')
def eliminar(self): """ Da de baja el cliente selecionado. :return: """ itemActual=self.tableClientes.currentItem() if itemActual==None: self.showMsjEstado("No se ha seleccionado ningun Cliente de la tabla") else: row = itemActual.row() dni = str(self.tableClientes.item(row, 0).text()) if self.bajaValida(dni): query = ClienteModel.buscarAlta(ClienteModel.dni, self.sesion, dni) for instance in query.all(): self.cliente = instance self.cliente.borrar(self.sesion) self.showMsjEstado("El Cliente ha sido dado de baja") self.tableClientes.removeRow(row) self.objectDeleted.emit() self.actualizar() else: QtGui.QMessageBox.critical(self, 'Error', 'Existen remitos pendientes de pago para dicho ' 'Cliente.', 'Aceptar')
def generarExcelClientes(self): """ Genera el documento Excel correspondiente a los clientes de la farmacia :return: None """ datosClientes=[] for cliente in (ClienteModel.buscarTodos("dni",self.sesion).all()): datosUnCliente=[] datosUnCliente.append(cliente.dni) datosUnCliente.append(cliente.nombre) datosUnCliente.append(cliente.apellido) datosUnCliente.append(cliente.direccion) datosUnCliente.append(cliente.telefono) datosClientes.append(datosUnCliente) documento=xlsxwriter.Workbook(Listar.path_excel_files + "/Clientes.xlsx") hoja=documento.add_worksheet('Clientes') bold = documento.add_format({'bold': 1,}) bold.set_align('center') hoja.write('A1', 'DNI', bold) hoja.write('B1', 'Nombre', bold) hoja.write('C1', 'Apellido', bold) hoja.write('D1', 'Direccion', bold) hoja.write('E1', 'Telefono', bold) i = 2 for cliente in datosClientes: row = 'A%(numero)d' % {"numero":i} hoja.write_row(row, cliente) i += 1 documento.close() QtGui.QMessageBox.information(self, "Listado", "El listado ha sido generado con exito")
def Listar(self): """ Genera el listado correspondiente de acuerdo a la opción seleccionada. :return: """ self.listado = self.cbTipoListado.currentText() if (self.listado=="Productos en Stock"): if self.rbtnExcel.isChecked(): self.generarExcelProductos() else: lote_producto = LoteProducto.buscarTodos("id_lote", self.sesion).all() self.listarProductos(lote_producto) data = self.productosStock(lote_producto) self.diagramaBarras(data) pdfkit.from_file('reportes/listadoProductosStock.html', 'reportes/list.pdf') os.system('evince reportes/list.pdf &') elif (self.listado=="Ventas Realizadas"): fechaDesde = self.deFechaDesde.dateTime().toPyDateTime().date() fechaHasta = self.deFechaHasta.dateTime().toPyDateTime().date() if fechaDesde > fechaHasta: QtGui.QMessageBox.information(self,"Aviso","La fecha Desde es mayor a la fecha Hasta") else: if self.rbtnExcel.isChecked(): self.generarExcelVentas(fechaDesde, fechaHasta) else: self.listarVentas(fechaDesde, fechaHasta) pdfkit.from_file('reportes/listadoVentas.html', 'reportes/list.pdf') os.system('evince reportes/list.pdf &') else: if self.rbtnExcel.isChecked(): self.generarExcelClientes() else: clientes = Cliente.buscarTodos(Cliente.dni, self.sesion).all() self.listarClientes(clientes) pdfkit.from_file('reportes/listadoClientes.html', 'reportes/list.pdf') os.system('evince reportes/list.pdf &')
def buscar(self): """ Busca al cliente de acuerdo a la información ingresada y carga los datos en la tabla (Baja y Modificaión). :return: """ obj = self.sender().objectName() if obj == 'lineDni': clientes = ClienteModel.buscarAlta(ClienteModel.dni, self.sesion, str(self.lineDni.text())).all() elif obj == 'lineNombre': clientes = ClienteModel.buscarLike( ClienteModel.nombre, self.sesion, str(self.lineNombre.text())).all() elif obj == 'lineApellido': clientes = ClienteModel.buscarLike( ClienteModel.apellido, self.sesion, str(self.lineApellido.text())).all() elif obj == 'btnBuscar': if str(self.lineDni.text()) != "": clientes = ClienteModel.buscarAlta( ClienteModel.dni, self.sesion, str(self.lineDni.text())).all() elif str(self.lineNombre.text()) != "": clientes = ClienteModel.buscarLike( ClienteModel.nombre, self.sesion, str(self.lineNombre.text())).all() elif str(self.lineApellido.text()) != "": clientes = ClienteModel.buscarLike( ClienteModel.apellido, self.sesion, str(self.lineApellido.text())).all() else: self.showMsjEstado( "Ingrese DNI, Nombre o Apellido del Cliente para realizar la" " busqueda.") return self.limpiarTabla(self.tableClientes) self.cargarObjetos( self.tableClientes, clientes, ("dni", "nombre", "apellido", "direccion", "telefono"))