def compute(self, base, precision=None):
        '''
        Computes the amount of the treatment.
        @param base:float Gross
        @return: Decimal
        '''
        if base <= ZERO:
            return ZERO

        if self.rate_type == RATE_TYPE_FIXED:
            if not self.interval or base >= self.interval.lower:
                return quantize(self.rate, precision)
            return ZERO

        if not self.interval:
            return quantize(base * self.rate / 100, precision)

        if base > self.interval.lower:
            base = min(base, self.interval.upper) - self.interval.lower
            return quantize(base * self.rate / 100, precision)

        return ZERO
def compute ( self , base , precision = None ) : if base <= ZERO : return ZERO if self . rate_type == RATE_TYPE_FIXED : if not self . interval or base >= self . interval . lower : return quantize ( self . rate , precision ) return ZERO if not self . interval : return quantize ( base * self . rate / 100 , precision ) if base > self . interval . lower : base = min ( base , self . interval . upper ) - self . interval . lower return quantize ( base * self . rate / 100 , precision ) return ZERO
Computes the amount of the treatment.
        @param base:float Gross
        @return: Decimal