Example #1
0
 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")
Example #2
0
 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.")
Example #3
0
 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")
Example #4
0
 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')
Example #5
0
 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")
Example #6
0
 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"
             )
Example #7
0
 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"))
Example #8
0
 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")
     )
Example #9
0
 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")
     )
Example #10
0
    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 &')
Example #11
0
 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')
Example #12
0
    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")
Example #13
0
 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 &')
Example #14
0
 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"))