def get_endoso_id_blockchain(self, id_endoso): response = self.contract.functions.getEndosoById(id_endoso).call() print(response) if(response[0] == ''): return None endoso = Endoso() returnDict = endoso.from_blockchain(response) return returnDict
def get_endosos(): endosos = db.endosos.find() pagaresList = list(endosos) returnList = [] for e in pagaresList: endoso = Endoso() endoso.endosoFromDoc(e) returnList.append(vars(endoso)) return jsonify(returnList)
def get_endosos_by_pagare(id_pagare): endosos = db.endosos.find({'id_pagare': id_pagare}) pagaresList = list(endosos) returnList = [] for e in pagaresList: endoso = Endoso() endoso.endosoFromDoc(e) returnList.append(vars(endoso)) return jsonify(returnList)
def get_endoso_endosatario(id_endosatario): endosos = db.endosos.find({"id_endosatario": int(id_endosatario)}) pagaresList = list(endosos) returnList = [] for e in pagaresList: endoso = Endoso() endoso.endosoFromDoc(e) returnList.append(vars(endoso)) return jsonify(returnList)
def get_endoso_id(id_endoso): try: doc = db.endosos.find_one({"_id": ObjectId(id_endoso)}) except: return "El id es invalido", 400 if doc == None: return "Endoso no encontrado", 404 endoso = Endoso() endoso.endosoFromDoc(doc) return vars(endoso)
def crear_endoso_etapa_2(id_pagare): try: doc = db.pagares.find_one({"_id": ObjectId(id_pagare)}) except: return "El id es invalido", 400 if doc == None: return "Pagare no encontrado", 404 pagare = Pagare() pagare.pagareFromDoc(doc) endoso = Endoso() docEndoso = db.endosos.find_one({"id_pagare": id_pagare, "etapa": 1}) if docEndoso == None: print( "No existe un endoso pendiente (en etapa 1) para el pagare designado" ) return "No existe un endoso pendiente (en etapa 1) para el pagare designado", 401 endoso.endosoFromDoc(docEndoso) # Revisar que el endoso sea valido if not pagare.pendiente: print( "Error: El pagare {} no está pendiente, puede ser que está vencido o algo" .format(pagare._id)) return "Error: El pagare {} no está pendiente, puede ser que está vencido o algo".format( pagare._id) if pagare.ultimoEndoso == "null" and endoso.id_endosante != pagare.idAcreedor: print("Error: {} no es el acreedor actual del pagare {}".format( endoso.nombre_endosante, id_pagare)) return "Error: {} no es el acreedor actual del pagare {}".format( endoso.nombre_endosante, id_pagare), 401 if pagare.ultimoEndoso != "null": ultimoEndoso = Endoso() ultimoEndoso.endosoFromDoc( db.endosos.find_one({"_id": ObjectId(pagare.ultimoEndoso)})) if ultimoEndoso.id_endosatario != endoso.id_endosante: print("Error: {} no es el acreedor actual del pagare {}".format( endoso.nombre_endosante, id_pagare)) return "Error: {} no es el acreedor actual del pagare {}".format( endoso.nombre_endosante, id_pagare), 401 # agregar codigo de retiro endoso.codigo_retiro = request.json['codigo_retiro'] endoso.etapa = 2 # actualizar endoso db.endosos.update_one({'_id': ObjectId(endoso._id)}, { '$set': { "codigo_retiro": endoso.codigo_retiro, "etapa": endoso.etapa, } }) return vars(endoso)
def get_ultimo_endoso(id_pagare): try: doc = db.pagares.find_one({"_id": ObjectId(id_pagare)}) except: return "El id es invalido", 400 if doc == None: return "Pagare no encontrado", 404 pagare = Pagare() pagare.pagareFromDoc(doc) if pagare.ultimoEndoso == "null": return "El pagare {} no tiene endosos".format(pagare._id), 404 doc = db.endosos.find_one({"_id": ObjectId(pagare.ultimoEndoso)}) endoso = Endoso() endoso.endosoFromDoc(doc) return vars(endoso)
def crear_endoso_etapa_3(id_pagare): try: doc = db.pagares.find_one({"_id": ObjectId(id_pagare)}) except: return "El id es invalido", 400 if doc == None: return "Pagare no encontrado", 404 pagare = Pagare() pagare.pagareFromDoc(doc) anterior_endoso = pagare.ultimoEndoso endoso = Endoso() docEndoso = db.endosos.find_one({"id_pagare": id_pagare, "etapa": 2}) if docEndoso == None: return "No existe un endoso pendiente (en etapa 2) para el pagare designado", 401 endoso.endosoFromDoc(docEndoso) # Revisar que el endoso sea valido if not pagare.pendiente: return "Error: El pagare {} no está pendiente, puede ser que está vencido o algo".format( pagare._id) if pagare.ultimoEndoso == "null" and endoso.id_endosante != pagare.idAcreedor: return "Error: {} no es el acreedor actual del pagare {}".format( endoso.nombre_endosante, id_pagare), 401 if pagare.ultimoEndoso != "null": ultimoEndoso = Endoso() ultimoEndoso.endosoFromDoc( db.endosos.find_one({"_id": ObjectId(pagare.ultimoEndoso)})) if ultimoEndoso.id_endosatario != endoso.id_endosante: return "Error: {} no es el acreedor actual del pagare {}".format( endoso.nombre_endosante, id_pagare), 401 # Termina de llenar el endoso endoso.es_ultimo_endoso = True endoso.etapa = 3 endoso.firma = request.json['firma'] endoso.fecha = datetime.today() # Agregar Endoso a BC tx_hash = bca.endosar_pagare(endoso) endoso.hash_transaccion = tx_hash # Actualizar Pagare pagare.ultimoEndoso = endoso._id pagareUpdates = getUpdateStatement(pagare) db.pagares.update_one({'_id': ObjectId(id_pagare)}, {'$set': pagareUpdates}) # actualizar endoso db.endosos.update_one({'_id': ObjectId(endoso._id)}, { '$set': { "firma": endoso.firma, "fecha": endoso.fecha, "etapa": 3, "es_ultimo_endoso": True, "hash_transaccion": tx_hash } }) # Actualizar anterior endoso if anterior_endoso != "null": db.endosos.update_one({"_id": ObjectId(anterior_endoso)}, {"$set": { "es_ultimo_endoso": False }}) doc = db.endosos.find_one({'_id': ObjectId(endoso._id)}) endosoR = Endoso() endosoR.endosoFromDoc(doc) return vars(endosoR)
def endosar_etapa_1(id_pagare): try: doc = db.pagares.find_one({"_id": ObjectId(id_pagare)}) except: return "El id es invalido", 400 if doc == None: return "Pagare no encontrado", 404 pagare = Pagare() pagare.pagareFromDoc(doc) # Revisar que no exista endoso pendiente doc = db.endosos.find_one({"id_pagare": id_pagare, "etapa": 1}) doc2 = db.endosos.find_one({"id_pagare": id_pagare, "etapa": 2}) if doc != None: return "Ya existe un endoso con id {} en proceso para el pagare {}".format( doc["_id"], id_pagare), 401 if doc2 != None: return "Ya existe un endoso con id {} en proceso para el pagare {}".format( doc["_id"], id_pagare), 401 # Revisar legitimo tenedor if not pagare.pendiente: return "Error: El pagare {} no está pendiente, puede ser que está vencido o algo".format( pagare._id) if pagare.ultimoEndoso == "null" and request.json[ 'id_endosante'] != pagare.idAcreedor: return "Error: {} no es el acreedor actual del pagare {}".format( request.json['nombre_endosante'], id_pagare), 401 if pagare.ultimoEndoso != "null": ultimoEndoso = Endoso() ultimoEndoso.endosoFromDoc( db.endosos.find_one({"_id": ObjectId(pagare.ultimoEndoso)})) if ultimoEndoso.id_endosatario != request.json['id_endosante']: return "Error: {} no es el acreedor actual del pagare {}".format( request.json['nombre_endosante'], id_pagare), 401 # Crear endoso endoso = Endoso() endoso.etapa = 1 endoso.id_endosante = request.json['id_endosante'] endoso.id_endosatario = request.json['id_endosatario'] endoso.nombre_endosante = request.json['nombre_endosante'] endoso.nombre_endosatario = request.json['nombre_endosatario'] endoso.id_anterior_endoso = pagare.ultimoEndoso endoso.id_pagare = id_pagare # Send to DB inserted_id = db.endosos.insert_one(vars(endoso)).inserted_id # get the new endoso endoso._id = str(inserted_id) return vars(endoso)
def crear_endoso(id_pagare): try: doc = db.pagares.find_one({"_id": ObjectId(id_pagare)}) except: return "El id es invalido", 400 if doc == None: return "Pagare no encontrado", 404 pagare = Pagare() pagare.pagareFromDoc(doc) anterior_endoso = pagare.ultimoEndoso endoso = Endoso() endoso.endosoFromRequest(request, id_pagare, anterior_endoso) # Revisar que el endoso sea valido if not pagare.pendiente: return "Error: El pagare {} no está pendiente, puede ser que está vencido o algo".format( pagare._id) if pagare.ultimoEndoso == "null" and endoso.id_endosante != pagare.idAcreedor: return "Error: {} no es el acreedor actual del pagare {}".format( endoso.nombre_endosante, id_pagare), 401 if pagare.ultimoEndoso != "null": ultimoEndoso = Endoso() ultimoEndoso.endosoFromDoc( db.endosos.find_one({"_id": ObjectId(pagare.ultimoEndoso)})) if ultimoEndoso.id_endosatario != endoso.id_endosante: return "Error: {} no es el acreedor actual del pagare {}".format( endoso.nombre_endosante, id_pagare), 401 # Agregar endoso a db id_insertado = db.endosos.insert_one(vars(endoso)).inserted_id endoso._id = str(id_insertado) # Agregar Endoso a BC tx_hash = bca.endosar_pagare(endoso) endoso.hash_transaccion = tx_hash # Actualizar Pagare pagare.ultimoEndoso = endoso._id pagareUpdates = getUpdateStatement(pagare) db.pagares.update_one({'_id': ObjectId(id_pagare)}, {'$set': pagareUpdates}) # actualizar endoso db.endosos.update_one({'_id': ObjectId(endoso._id)}, {'$set': { 'hash_transaccion': tx_hash, }}) doc = db.endosos.find_one({'_id': ObjectId(endoso._id)}) endosoR = Endoso() endosoR.endosoFromDoc(doc) return vars(endosoR)