def add(cls, id_mat, id_pd, cantidad, cant_ep, noClose=False): """ Añade un depósito a la BD. """ try: cls.abrir_conexion() #Obtengo ID EcoPuntos sql = ( "SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'ecoPuntos'" ) cls.cursor.execute(sql) id_ep = cls.cursor.fetchone()[0] #Guardo los EP DatosEcoPuntos.add(cant_ep) #Obtengo id Deposito para calcular el codigo sql = ( "SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'depositos'" ) cls.cursor.execute(sql) id_dep = cls.cursor.fetchone()[0] codigo = str(id_dep) + datetime.now().strftime( '%Y-%m-%d %H:%M:%S') + str(id_mat) codigo = Utils.encripta_codigo(codigo) today = datetime.now().strftime('%Y-%m-%d %H:%M:%S') #Guardo el deposito sql = ( "INSERT into depositos (codigo, cant, fechaReg, fechaDep, idMaterial, idUsuario,idPunto,idEcoPuntos,estado) values ('{}',{},{},'{}',{},{},{},{},\"no acreditado\")" ).format(codigo, cantidad, "NULL", today, id_mat, "NULL", id_pd, id_ep) cls.cursor.execute(sql) cls.db.commit() return codigo except Exception as e: raise custom_exceptions.ErrorDeConexion( origen="data_deposito.add()", msj=str(e), msj_adicional="Error agregando un deposito a la BD.") finally: if not (noClose): cls.cerrar_conexion()
def get_by_id(cls, id): """ Obtiene el depósito correspondiente a un ID. """ try: cls.abrir_conexion() sql = ( "Select idDeposito, codigo, fechaReg, fechaDep, idMaterial, idUsuario, idPunto, idEcoPuntos, cant, estado from depositos where idDeposito = {}" ).format(id) cls.cursor.execute(sql, ) dep = cls.cursor.fetchone() if dep == None: return False else: mat = CantMaterial(dep[8], dep[4]) ep = DatosEcoPuntos.get_by_id(dep[7]) ep.cantidad = int(ep.cantidad) try: fecha_reg = dep[2].strftime("%d/%m/%Y") except: fecha_reg = None return Deposito(dep[0], dep[1], mat, dep[6], dep[3].strftime("%d/%m/%Y"), ep, fecha_reg, dep[9]) except Exception as e: raise custom_exceptions.ErrorDeConexion( origen="data_deposito.get_by_id()", msj=str(e), msj_adicional= "Error obteniendo el depósito correspondiente a un ID.") finally: cls.cerrar_conexion()
def get_by_codigo(cls, cod, noClose=False): """ Obtiene los depósitos correspondientes a un código. """ try: cls.abrir_conexion() sql = ( "Select idDeposito, codigo, fechaReg, fechaDep, idMaterial, idUsuario, idPunto, idEcoPuntos, cant, estado from depositos where codigo = %s" ) values = (cod, ) cls.cursor.execute(sql, values) dep = cls.cursor.fetchone() if dep == None: return False else: mat = CantMaterial(dep[8], dep[4]) ep = DatosEcoPuntos.get_by_id(dep[7]) ep.cantidad = int(ep.cantidad) try: fecha_reg = dep[2].strftime("%d/%m/%Y") except: fecha_reg = None return Deposito(dep[0], dep[1], mat, dep[6], dep[3].strftime("%d/%m/%Y"), ep, fecha_reg, dep[9]) except Exception as e: raise custom_exceptions.ErrorDeConexion( origen="data_pedido.get_by_codigo()", msj=str(e), msj_adicional= "Obtiene los depósitos correspondientes a un código.") finally: if not (noClose): cls.cerrar_conexion()
def updateEps(cls,idEP,cant): try: if cant < 0: print("Advertencia: cant de ecopuntos a actualizar menor a 0: ",str(cant)) cant = 0 return DatosEcoPuntos.updateEps(idEP,cant) except Exception as e: raise e
def updateConfig(cls,config,value): date = datetime.now() if config=="EPs": p = DatosEcoPuntos.get_porcentaje_rec_EP() DatosEcoPuntos.updateValorEp(value,p,date) elif config=="Recs": e = DatosEcoPuntos.get_valor_EP() DatosEcoPuntos.updatePorcentajeRec(value,e,date)
def get_by_id_usuario(cls, uid, limit=False, noClose=False): """ Obtiene los depósitos correspondientes a un usuario por su ID. """ try: cls.abrir_conexion() if limit == False: sql = ( "Select idDeposito, codigo, fechaReg, fechaDep, idMaterial, idUsuario, idPunto, idEcoPuntos, cant, estado from depositos where idUsuario = %s order by fechaDep DESC" ) values = (uid, ) else: sql = ( "Select idDeposito, codigo, fechaReg, fechaDep, idMaterial, idUsuario, idPunto, idEcoPuntos, cant, estado from depositos where idUsuario = %s order by fechaDep DESC LIMIT %s" ) values = (uid, limit) cls.cursor.execute(sql, values) depositos_ = cls.cursor.fetchall() depositos = [] for dep in depositos_: mat = CantMaterial(dep[8], dep[4]) ep = DatosEcoPuntos.get_by_id(dep[7]) ep.cantidad = int(ep.cantidad) try: fecha_reg = dep[2].strftime("%d/%m/%Y") except: fecha_reg = None depositos.append( Deposito(dep[0], dep[1], mat, dep[6], dep[3].strftime("%d/%m/%Y"), ep, fecha_reg, dep[9])) return depositos except Exception as e: raise custom_exceptions.ErrorDeConexion( origen="data_pedido.get_by_id_usuario()", msj=str(e), msj_adicional= "Obtiene los depósitos correspondientes a un usuario por su ID." ) finally: if not (noClose): cls.cerrar_conexion()
def get_by_user_id(cls, uid, noClose=False): """ Obtiene todos los Depositos de la BD correspondientes a un usuario segun su id. """ try: cls.abrir_conexion() sql = ("SELECT idDeposito, \ codigo, \ idMaterial, \ cant, \ idPunto, \ fechaDep, \ idEcoPuntos, \ fechaReg, \ estado \ FROM depositos WHERE idUsuario=\"{}\"").format(uid) cls.cursor.execute(sql) depositos_ = cls.cursor.fetchall() depositos = [] for d in depositos_: material = CantMaterial(d[3], d[2]) ecopuntos = DatosEcoPuntos.get_by_id(d[6]) ecopuntos.cantidad = int(ecopuntos.cantidad) fecha_reg = None try: fecha_reg = d[7].strftime("%d/%m/%Y") except: fecha_reg = None d_ = Deposito(d[0], d[1], material, d[4], d[5].strftime("%d/%m/%Y"), ecopuntos, fecha_reg, d[8]) depositos.append(d_) return depositos except Exception as e: raise custom_exceptions.ErrorDeConexion( origen="data_deposito.get_by_user_id()", msj=str(e), msj_adicional="Error obtieniendo los depositos desde la BD.") finally: if not (noClose): cls.cerrar_conexion()
def get_all(cls): """ Obtiene todos los Depositos de la BD. """ try: cls.abrir_conexion() sql = ("SELECT idDeposito, \ codigo, \ idMaterial, \ cant, \ idPunto, \ fechaDep, \ idEcoPuntos, \ fechaReg, \ estado \ FROM depositos") cls.cursor.execute(sql) depositos_ = cls.cursor.fetchall() depositos = [] for d in depositos_: material = CantMaterial(d[3], d[2]) ecopuntos = DatosEcoPuntos.get_by_id(d[6]) ecopuntos.cantidad = int(ecopuntos.cantidad) try: fecha_reg = d[7].strftime("%d/%m/%Y") except: fecha_reg = None d_ = Deposito(d[0], d[1], material, d[4], d[5].strftime("%d/%m/%Y"), ecopuntos, fecha_reg, d[8]) depositos.append(d_) return depositos except Exception as e: raise custom_exceptions.ErrorDeConexion( origen="data_deposito.get_all()", msj=str(e), msj_adicional="Error obtieniendo los depositos desde la BD.") finally: cls.cerrar_conexion()
def get_valor_EP(cls): try: return DatosEcoPuntos.get_valor_EP() except Exception as e: raise e
def get_factores_recompensa(cls): try: return DatosEcoPuntos.get_factores_recompensa() except Exception as e: raise e
def get_factor_recompensa_EP(cls): try: return DatosEcoPuntos.get_porcentaje_rec_EP() except Exception as e: raise e