def listarProductos(self, lote_producto): """ Genera el html usado para generar el pdf final del listado de los productos en stock. :param lote_producto: arreglo que contiene todos los productos y sus diferentes lotes. :return: """ archivo = open("PlantillasListados/productosStock.html", "r") contenido = archivo.read() archivo.close() body = "" i = 0 for lp in lote_producto: if (lp.getCantidad() > 0): i += 1 producto = Producto.buscar(Producto.codigo_barra, self.sesion, lp.getIdProducto()).first() nr_prod = str(i) id_lote = str(lp.getIdLote()) desc = str(producto.getIdMedicamento()) + """ """ + str(producto.getIdPresentacion()) cant = str(lp.getCantidad()) cadena = """<tr> <td><strong>{producto}</strong></td> <td class="text-right">{lote}</td> <td><strong>{descripcion}</strong></td> <td class="text-right">{cantidad}</td> </tr>""".format(producto=nr_prod, lote=id_lote, descripcion=desc, cantidad=cant) body += cadena contenido_nuevo = contenido.format(contenido=body) archivo = open("reportes/listadoProductosStock.html", "w") archivo.write(contenido_nuevo) archivo.close()
def validarLote(self, producto): if self.lote != None: loteProd = LoteProductoModel.buscar(LoteProductoModel.id_lote, self.sesion, self.lote.getCodigo()).all() if loteProd.__len__() == 1: for lp in loteProd: prod = ProductoModel.buscar(ProductoModel.codigo_barra, self.sesion, lp.getIdProducto()).first() if prod.getIdMedicamento() != producto.getIdMedicamento(): return False return True
def productosStock(self, lote_producto): """ Devuelve un los datos de los productos y su/s lote/s de aquellos que tengan una cantidad mayor a 0 en stock. :param lote_producto: arreglo de todos los lotes/productos almacenados en la base de datos. :return: data """ data = [] for lp in lote_producto: if (lp.getCantidad() > 0): producto = Producto.buscar(Producto.codigo_barra, self.sesion, lp.getIdProducto()).first() descripcion = str(producto.getIdMedicamento()) + " " + str (producto.getIdPresentacion()) data.append((descripcion, lp.getCantidad())) return data
def htmlProductosStock(self, lote_producto): """ Genera el html usado para generar el pdf final del listado de los productos en stock. :param lote_producto: arreglo que contiene todos los productos y sus diferentes lotes. :return: hmtl """ #TODO esta bien q se de de baja un producto para el q hay stock??? # hay q listar los dados de baja?? esto depende de la resp a la preg anterior. i = 0 html = """<html> <head> </head> <body> <div id="contenedor"> <header id="encabezado"> <h1 align="center">Listado Productos en Stock</h1> </header> <div id="items"> <table border width="100%"> <th bgcolor="#38B0DE">Producto</th> <th bgcolor="#38B0DE">Nro Lote</th> <th bgcolor="#38B0DE">Descripción</th> <th bgcolor="#38B0DE">Cantidad</th>""" for lp in lote_producto: if (lp.getCantidad() > 0): i += 1 producto = Producto.buscar(Producto.codigo_barra, self.sesion, lp.getIdProducto()).first() html += """<tr><td width="10%">""" + str(i) html += """</td><td width="10%">""" + str(lp.getIdLote()) html += """</td><td width="70%">""" + str(producto.getIdMedicamento()) \ + """ """ + str(producto.getIdPresentacion()) html += """</td><td width="10%">""" + str(lp.getCantidad()) html += """</td></tr>""" html += """</table></div></div></body></html>""" html += """<img src="diagBarra.png">""" return html