Esempio n. 1
0
 def bajaValida(self, codigo_barra):
     """
     Verifica que el producto no figure en remitos pendientes de pago, facturas liquidadas pendientes de pago o
     facturas pendientes de liquidación.
     :param codigo_barra:
     :return:
     """
     detalleRemito = DetalleRemitoModel.buscarAlta(DetalleRemitoModel.producto,
                                                   self.sesion, codigo_barra).all()
     for dr in detalleRemito:
         remito = RemitoModel.buscarAlta(RemitoModel.numero, self.sesion, dr.getIdRemito()).first()
         if remito.getCobrado() == None:
             QtGui.QMessageBox.critical(self, 'Error', 'Existen remitos pendientes de pago '
                                                       'en los que figura dicho Producto.', 'Aceptar')
             return False
     detalleFactura = DetalleFacturaModel.buscar(DetalleFacturaModel.producto,
                                                   self.sesion, codigo_barra).all()
     for df in detalleFactura:
         if df.getDescuento() > 0:
             facturaLiquidacion = FacturaLiquidacionModel.buscar(FacturaLiquidacionModel.nro_factura,
                                                 self.sesion, df.getIdFactura()).first()
             if facturaLiquidacion:
                 cobroObraSocial = CobroObraSocialModel.buscar(
                                                 CobroObraSocialModel.id_factura_liquidacion, self.sesion,
                                                 facturaLiquidacion.getNumero()).first()
                 if cobroObraSocial == None:
                     QtGui.QMessageBox.critical(self, 'Error', 'Existen facturas liquidadas pendientes'
                                                         ' de cobro a la obra social en las que figura '
                                                         'dicho Producto.', 'Aceptar')
                     return False
             else:
                 QtGui.QMessageBox.critical(self, 'Error', 'Existen facturas pendientes de liquidación'
                                                         ' en las que figura dicho Producto.', 'Aceptar')
                 return False
     return True
Esempio n. 2
0
 def bajaValida(self, dni):
     """
     Verifica que el cliente no posea remitos sin pagar.
     :param dni: DNI del cliente para el cual se realiza la verificación.
     :return: bool
     """
     remito = RemitoModel.buscarAlta(RemitoModel.cliente, self.sesion, dni).all()
     for r in remito:
         if not r.getCobrado():
             return False
     return True
Esempio n. 3
0
 def bajaValida(self, dni):
     """
     Verifica que el cliente no posea remitos sin pagar.
     :param dni: DNI del cliente para el cual se realiza la verificación.
     :return: bool
     """
     remito = RemitoModel.buscarAlta(RemitoModel.cliente, self.sesion,
                                     dni).all()
     for r in remito:
         if r.getCobrado() == None:
             return False
     return True
Esempio n. 4
0
    def generarExcelVentas(self,fechaDesde, fechaHasta):
        """
            Crea el documento Excel correspondiente a las ventas realizadas en
            un periodo de tiempo dado
        :param fechaDesde Fecha de inicio:
        :param fechaHasta Fecha de fin
        :return None :
        """
        ventas={}
        for factura in (FacturaModel.buscarTodos("numero",self.sesion).all()):
            if factura.fecha_emision>= fechaDesde and factura.fecha_emision <= fechaHasta:
                if (factura.fecha_emision in ventas):
                    ventas[factura.fecha_emision]+=1
                else:
                    ventas[factura.fecha_emision]=1
        for remito in (RemitoModel.buscarTodos("numero",self.sesion).all()):
            if (remito.fecha_emision in ventas):
                ventas[remito.fecha_emision]+=1
            else:
                ventas[remito.fecha_emision]=1

        documento=xlsxwriter.Workbook(Listar.path_excel_files + "/Ventas.xlsx")
        hoja=documento.add_worksheet('Ventas')
        bold = documento.add_format({'bold': 1,})
        date_format = documento.add_format({'num_format': 'yyyy/mm/dd'})
        bold.set_align('center')
        hoja.set_column(0,0,45)
        hoja.set_column(1,1,15)
        ##Añado un grafico al documento
        grafico = documento.add_chart({'type':'line'})
        fechas=list(ventas.keys())
        cantidades=list(ventas.values())
        hoja.write('A1','Fecha',bold)
        hoja.write('B1','Cantidad Vtas',bold)
        hoja.write_column('A2',fechas,date_format)
        hoja.write_column('B2',cantidades)
        grafico.add_series({
                'categories':[hoja.name,1,0,len(fechas),0],
                'values': [hoja.name,1,1,len(cantidades),1]
        })
        grafico.set_x_axis({
            'name':'Fechas',
            'name-font':{'size':16,'bold':True},
            'num_font':{'italic':True},
        })
        hoja.insert_chart('E3', grafico)
        documento.close()

        QtGui.QMessageBox.information(self, "Listado" , "El listado ha sido generado con exito")
Esempio n. 5
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 &')
Esempio n. 6
0
 def bajaValida(self, codigo_barra):
     """
     Verifica que el producto no figure en remitos pendientes de pago, facturas liquidadas pendientes de pago o
     facturas pendientes de liquidación.
     :param codigo_barra:
     :return:
     """
     detalleRemito = DetalleRemitoModel.buscarAlta(
         DetalleRemitoModel.producto, self.sesion, codigo_barra).all()
     for dr in detalleRemito:
         remito = RemitoModel.buscarAlta(RemitoModel.numero, self.sesion,
                                         dr.getIdRemito()).first()
         if remito.getCobrado() == None:
             QtGui.QMessageBox.critical(
                 self, 'Error', 'Existen remitos pendientes de pago '
                 'en los que figura dicho Producto.', 'Aceptar')
             return False
     detalleFactura = DetalleFacturaModel.buscar(
         DetalleFacturaModel.producto, self.sesion, codigo_barra).all()
     for df in detalleFactura:
         if df.getDescuento() > 0:
             facturaLiquidacion = FacturaLiquidacionModel.buscar(
                 FacturaLiquidacionModel.nro_factura, self.sesion,
                 df.getIdFactura()).first()
             if facturaLiquidacion:
                 cobroObraSocial = CobroObraSocialModel.buscar(
                     CobroObraSocialModel.id_factura_liquidacion,
                     self.sesion, facturaLiquidacion.getNumero()).first()
                 if cobroObraSocial == None:
                     QtGui.QMessageBox.critical(
                         self, 'Error',
                         'Existen facturas liquidadas pendientes'
                         ' de cobro a la obra social en las que figura '
                         'dicho Producto.', 'Aceptar')
                     return False
             else:
                 QtGui.QMessageBox.critical(
                     self, 'Error',
                     'Existen facturas pendientes de liquidación'
                     ' en las que figura dicho Producto.', 'Aceptar')
                 return False
     return True
Esempio n. 7
0
    def listarVentas(self, fechaDesde,fechaHasta):
        """
        Genera el html usado para generar el pdf final del listado de las Ventas realizadas.
        :return:
        """
        facturas = filter(lambda x: x.fecha_emision >= fechaDesde and x.fecha_emision <= fechaHasta,
                          Factura.buscarTodos(Factura.numero, self.sesion).all())
        remitos = filter(lambda x: x.fecha_emision >= fechaDesde and x.fecha_emision <= fechaHasta,
                         Remito.buscarTodos(Remito.numero, self.sesion).all())
        ventasFact = self.cantidadVentasContado(facturas)
        ventasRem = self.cantidadVentasRemito(remitos)

        archivo = open("PlantillasListados/ventas.html", "r")
        contenido = archivo.read()
        archivo.close()

        tableFact = ""

        for fecha, cant in ventasFact:
            cadena = """<tr>

                <td><strong>{fecha}</strong></td>
                <td class="text-right">{cantidad}</td>
                </tr>""".format(fecha=str(fecha), cantidad=str(cant))
            tableFact += cadena

        tableRem = ""

        for fecha, cant in ventasRem:
            cadena = """<tr>

                <td><strong>{fecha}</strong></td>
                <td class="text-right">{cantidad}</td>
                </tr>""".format(fecha=str(fecha), cantidad=str(cant))
            tableRem += cadena

        contenido_nuevo = contenido.format(contenidoFact=tableFact, contenidoRem=tableRem)

        archivo = open("reportes/listadoVentas.html", "w")
        archivo.write(contenido_nuevo)
        archivo.close()