def updatePanel(self): #Create or Update data according to PID and ANo in Status if (self.data == None): self.data = TCAData(Status.PId,Status.ANo) self.data.loadTCAData() if (Status.PId != self.data.pid)or(Status.ANo != self.data.ano): self.data = TCAData(Status.PId,Status.ANo) self.data.loadTCAData()
def resetTCA(self): query = """SELECT AlternativeProposalNo,ShortName FROM salternatives WHERE ProjectID = %s""" query = query % (self.data.pid) results = Status.DB.sql_query(query) anos = [] for result in results: if (result[0]>=0): anos.append([result[0],result[1]]) #print "reset:" #print anos for ano in anos: # ano = [ Number, Name ] !!! data = TCAData(Status.PId,ano[0]) data.resetTCAData() self.data = TCAData(Status.PId,Status.ANo) self.data.loadTCAData()
def runTCAModule(self): self.updatePanel() self.result = [] #get cashflow for the current process DataOfCurrentProcess = TCAData(Status.PId,0) DataOfCurrentProcess.loadTCAData() #set parameters InterestRate = DataOfCurrentProcess.NIR - DataOfCurrentProcess.Inflation DiscountRate = DataOfCurrentProcess.CSDR - DataOfCurrentProcess.Inflation #PrimaryEnergyDemand = data.PETel + data.PETFuels ProjectLifetime = DataOfCurrentProcess.TimeFrame DataOfCurrentProcess = self.calculateCashFlow(DataOfCurrentProcess) DataOfCurrentProcess.storeCurrentProcessInformationToCGeneral() old = DataOfCurrentProcess.cashflow #print "current" #print old.CF() #get all proposal numbers and names query = """SELECT AlternativeProposalNo,ShortName FROM salternatives WHERE ProjectID = %s""" query = query % (Status.PId) results = Status.DB.sql_query(query) self.anos = [] for result in results: if (result[0]>0): self.anos.append([result[0],result[1]]) #calculate result for each proposal in project for ano in self.anos: # ano = [ Number, Name ] !!! try: name = ano[1] #load data for alternative data = TCAData(Status.PId,ano[0]) data.loadTCAData() #newdata = data #calculate cashflow for alternative data = self.calculateCashFlow(data) current = data.cashflow #print name #print current.CF() #set the default display option (1=display) display = 1 #set for the current proposal if (Status.ANo == ano[0]): display = 1 #calculate the results npv = NPV(current.CF(), old.CF(), InterestRate) #print "npv--------------------------------" #print npv mirr = MIRR(current.CF(), old.CF(), InterestRate, DiscountRate) #print "mirr--------------------------------" #print mirr bcr = BCR(current.CF(), old.CF(), InterestRate) #print "bcr--------------------------------" #print bcr annuity = ANNUITY(current.TotalInvestmentCapital,InterestRate,ProjectLifetime) pp = payback_period(npv) energycostCurrentProcess = DataOfCurrentProcess.getTotalEnergyCost() energycostNewProcess = data.getTotalEnergyCost() opcostCurrentProcess = DataOfCurrentProcess.totalopcost opcostNewProcess = data.totalopcost energydemandCurrentProcess = DataOfCurrentProcess.getTotalEnergyDemand() energydemandNewProcess = data.getTotalEnergyDemand() additionalcost = annuity+opcostNewProcess+energycostNewProcess-opcostCurrentProcess-energycostCurrentProcess try: additionalcostpersavePE = additionalcost/(energydemandNewProcess-energydemandCurrentProcess) except: additionalcostpersavePE = 0.0 #print additionalcost #set the results in data, store data in result list data.setResult(name,npv,mirr,bcr,annuity,pp,additionalcost,additionalcostpersavePE,display) self.result.append(data) data.storeResultToCGeneralData() except Exception, inst: print type(inst) print inst.args print inst data.setResultInvalid(name,display) self.result.append(data) logWarning((_("TCA: No result for %s") % ano[1]))