Source code for oscar.apps.checkout.calculators

from oscar.core import prices


[docs]class OrderTotalCalculator(object): """ Calculator class for calculating the order total. """ def __init__(self, request=None): # We store a reference to the request as the total may # depend on the user or the other checkout data in the session. # Further, it is very likely that it will as shipping method # always changes the order total. self.request = request def calculate(self, basket, shipping_charge, surcharges=None, **kwargs): excl_tax = basket.total_excl_tax + shipping_charge.excl_tax if basket.is_tax_known and shipping_charge.is_tax_known: incl_tax = basket.total_incl_tax + shipping_charge.incl_tax else: incl_tax = None if surcharges is not None: excl_tax += surcharges.total.excl_tax if incl_tax is not None: incl_tax += surcharges.total.incl_tax return prices.Price( currency=basket.currency, excl_tax=excl_tax, incl_tax=incl_tax )