def get_by_id(cls,id): """ Busca un depósito según su ID de la BD. """ try: return DatosDeposito.get_by_id(id) except Exception as e: raise e
def get_info_cancelar(cls, id): errores = {"EP":-1,"Stock":0} dep = DatosDeposito.get_by_id(id) if dep.isAcreditado(): errores["EP"] = 0 user_id = cls.get_user_id(id) user = NegocioUsuario.get_by_id(user_id) if user.totalEcopuntos < dep.ecoPuntos.cantidad: errores["EP"] = dep.ecoPuntos.cantidad-user.totalEcopuntos material = DatosMaterial.get_by_id(dep.material.idMaterial) if material.stock < dep.material.cantidad: errores["Stock"] = dep.material.cantidad-material.stock return errores
def cancelar(cls,id): """ Cancela un depósito. Si el depósito ha sido acreditado, los EP se le restan al usuario. Si el usuario no tiene suficientes EP para restar, se lo deja en 0 EP. Se descuenta, asimismo, el stock de materiales generado por el deposito. Si no hay suficiente stock para restar, se genera una entrada correspondiente al stock faltante """ try: dep = DatosDeposito.get_by_id(id) DatosDeposito.update_estado(id,"cancelado") if dep.isAcreditado(): user_id = cls.get_user_id(id) NegocioUsuario.descontarEPDeposito(user_id,dep.ecoPuntos.cantidad) material = DatosMaterial.get_by_id(dep.material.idMaterial) if material.stock >= dep.material.cantidad: DatosMaterial.updateStock(material.id,material.stock - dep.material.cantidad) else: DatosMaterial.updateStock(material.id,0) restante = dep.material.cantidad-material.stock DatosEntradaExterna.add_one(material.id,restante,"Compensación por cancelación de depósito número "+str(id)+".",datetime.now()) except Exception as e: raise e