Changeset 3036 for pykota/trunk/pykota/storage.py
- Timestamp:
- 10/13/06 23:51:14 (18 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
pykota/trunk/pykota/storage.py
r3033 r3036 308 308 self.isDirty = True 309 309 310 def computeJobPrice(self, jobsize ) :310 def computeJobPrice(self, jobsize, inkusage=[]) : 311 311 """Computes the job price as the sum of all parent printers' prices + current printer's ones.""" 312 312 totalprice = 0.0 … … 314 314 if self.User.OverCharge != 0.0 : # optimization, but TODO : beware of rounding errors 315 315 for upq in [ self ] + self.ParentPrintersUserPQuota : 316 price = (float(upq.Printer.PricePerPage or 0.0) * jobsize) + float(upq.Printer.PricePerJob or 0.0) 317 totalprice += price 316 totalprice += float(upq.Printer.PricePerJob or 0.0) 317 pageprice = float(upq.Printer.PricePerPage or 0.0) 318 if not inkusage : 319 totalprice += (jobsize * pageprice) 320 else : 321 for pageindex in range(jobsize) : 322 try : 323 usage = inkusage[pageindex] 324 except IndexError : 325 self.parent.tool.logdebug("No ink usage information. Using base cost of %f credits for page %i." % (pageprice, pageindex+1)) 326 totalprice += pageprice 327 else : 328 coefficients = self.Printer.Coefficients 329 for (ink, value) in usage.items() : 330 coefvalue = coefficients.get(ink, 1.0) 331 coefprice = (coefvalue * pageprice) / 100.0 332 inkprice = coefprice * value 333 self.parent.tool.logdebug("Applying coefficient %f for color %s (used at %f%% on page %i) to base cost %f gives %f" % (coefvalue, ink, value, pageindex+1, pageprice, inkprice)) 334 totalprice += coefprice 318 335 if self.User.OverCharge != 1.0 : # TODO : beware of rounding errors 319 336 overcharged = totalprice * self.User.OverCharge 320 self.parent.tool.logdebug("Overcharging %s by a factor of %s ===> User %s will be charged for %s units." % (totalprice, self.User.OverCharge, self.User.Name, overcharged))337 self.parent.tool.logdebug("Overcharging %s by a factor of %s ===> User %s will be charged for %s credits." % (totalprice, self.User.OverCharge, self.User.Name, overcharged)) 321 338 return overcharged 322 339 else : 323 340 return totalprice 324 341 325 def increasePagesUsage(self, jobsize ) :342 def increasePagesUsage(self, jobsize, inkusage=[]) : 326 343 """Increase the value of used pages and money.""" 327 jobprice = self.computeJobPrice(jobsize )344 jobprice = self.computeJobPrice(jobsize, inkusage) 328 345 if jobsize : 329 346 if jobprice :