def getRepo(self, status='openclose', portfolio='all', custodian='all', repo_code='all', broker='all', has_hair_cut='all'): if self.dbmode is None: raise DataStoreNotYetInitializeError( "Plase call initializeDatastore to initialize datastore") params = { "status": status, "portfolio": portfolio, "custodian": custodian, "repo_code": repo_code, "broker": broker, "has_hair_cut": has_hair_cut } v = AppValidatorFactory().get_validator("getRepo") #-- validate input fields if not v.validate(params): message = "Input validation error. Details: " + str(v.errors) self.logger.error(message) raise ValueError(message) transactions = self.repo_transaction_services.query(params) return transactions
def getUserTranIdsFromRepoName(self, repoName): if self.dbmode is None: raise DataStoreNotYetInitializeError( "Plase call initializeDatastore to initialize datastore") params = {"repo_code": repoName} v = AppValidatorFactory().get_validator("getUserTranIdsFromRepoName") #-- validate input fields if not v.validate(params): message = "Input validation error. Details: " + str(v.errors) self.logger.error(message) raise ValueError(message) transaction_ids = self.repo_transaction_services.getUserTranIdsFromRepoName( params) return transaction_ids
def getRepoTransactionHistory(self, userTranId): if self.dbmode is None: raise DataStoreNotYetInitializeError( "Plase call initializeDatastore to initialize datastore") params = {"transaction_id": userTranId} v = AppValidatorFactory().get_validator("getRepoTransactionHistory") #-- validate input fields if not v.validate(params): message = "Input validation error. Details: " + str(v.errors) self.logger.error(message) raise ValueError(message) transaction_histories = self.repo_transaction_history_services.query( params) return transaction_histories
def cancelRepoTransaction(self, transaction): if self.dbmode is None: raise DataStoreNotYetInitializeError( "Plase call initializeDatastore to initialize datastore") v = AppValidatorFactory().get_validator("cancelRepoTransaction") #-- validate input fields if not v.validate(transaction): message = "Input validation error. Details: " + str(v.errors) self.logger.error(message) raise ValueError(message) #-- create data model data_transaction = {"transaction_id": transaction["UserTranId1"]} self.repo_transaction_services.cancel(data_transaction) return 0
def closeRepoTransaction(self, transaction): if self.dbmode is None: raise DataStoreNotYetInitializeError( "Plase call initializeDatastore to initialize datastore") v = AppValidatorFactory().get_validator("closeRepoTransaction") #-- validate input fields if not v.validate(transaction): message = "Input validation error. Details: " + str(v.errors) self.logger.error(message) raise ValueError(message) #-- data parsing #-- maturity_date maturity_date = transaction["ActualSettleDate"][0:10] #-- create data model data_transaction = { "transaction_id": transaction["UserTranId1"], "maturity_date": maturity_date } self.repo_transaction_services.close(data_transaction) return 0
def addRepoMaster(self, master): if self.dbmode is None: raise DataStoreNotYetInitializeError( "Plase call initializeDatastore to initialize datastore") v = AppValidatorFactory().get_validator("addRepoMaster") if not v.validate(master): message = "Input validation error. Details: " + str(v.errors) self.logger.error(message) raise ValueError(message) #-- data parsing accrualDaysPerMonth = master["AccrualDaysPerMonth"] if master["AccrualDaysPerMonth"].lower() == "actual": accrualDaysPerMonth = "ACT" accrualDaysPerYear = master["AccrualDaysPerYear"] if master["AccrualDaysPerYear"].lower() == "actual": accrualDaysPerYear = "ACT" #-- create data model data_master = { "code": master["Code"], "currency": master["BifurcationCurrency"], "date_count": accrualDaysPerMonth + "/" + accrualDaysPerYear } self.repo_master_services.create(data_master) return 0
def addRepoTransaction(self, transaction): if self.dbmode is None: raise DataStoreNotYetInitializeError( "Plase call initializeDatastore to initialize datastore") v = AppValidatorFactory().get_validator("addRepoTransaction") #-- validate input fields if not v.validate(transaction): message = "Input validation error. Details: " + str(v.errors) self.logger.error(message) raise ValueError(message) #-- data parsing #-- get transaction_type transaction_type = "" if transaction["TransactionType"] == "Repo_InsertUpdate": transaction_type = "RP" elif transaction["TransactionType"] == "ReverseRepo_InsertUpdate": transaction_type = "RR" else: message = "Ipput validation error. TransactionType must be either Repo_InsertUpdate or ReverseRepo_InsertUpdate" self.logger.error(message) raise InvalidRepoTransactionTypeError(message) #-- get collaterial type and id investment_split = transaction["Investment"].split("=", 1) collateral_id_type = investment_split[0].upper() collateral_id = investment_split[1] is_open_repo = 0 #-- is_open_repo if "OpenEnded" in transaction and transaction["OpenEnded"].lower( ) == "calc": is_open_repo = 1 #-- maturity_date maturity_date = "" if transaction["ActualSettleDate"].lower() == "calc": if is_open_repo: maturity_date = "" else: maturity_date = "ERROR" else: maturity_date = transaction["ActualSettleDate"][0:10] #-- create data model data_transaction = { "transaction_id": transaction["UserTranId1"], "transaction_type": transaction_type, "portfolio": transaction["Portfolio"], "custodian": transaction["LocationAccount"], "collateral_id_type": collateral_id_type, "collateral_id": collateral_id, "collateral_global_id": "", "trade_date": transaction["EventDate"][0:10], "settle_date": transaction["SettleDate"][0:10], "is_open_repo": is_open_repo, "maturity_date": maturity_date, "quantity": float(transaction["Quantity"]), "currency": transaction["CounterInvestment"], "price": float(transaction["Price"]), "collateral_value": float(transaction["NetCounterAmount"]), "repo_code": transaction["RepoName"], "interest_rate": float(transaction["Coupon"]), "loan_amount": float(transaction["LoanAmount"]), "broker": transaction["Broker"], "haircut": 0, "status": Constants.REPO_TRANS_HISTORY_ACTION_OPEN } #-- add to repo_transaction and repo_transaction_history self.repo_transaction_services.create(data_transaction) return 0