public function recognize(Pap_Contexts_Tracking $context, $customStatus = null) {
		$context->debug('Recognizing commission settings started');

		$campaign = $context->getCampaignObject();
		if($campaign == null) {
			$context->debug('    Error, campaign cannot be null!');
			return;
		}
			
		$commissionType = $context->getCommissionTypeObject();

		if ($commissionType == null) {
			$context->debug('    No commission type found for this action');
			return;
		}

		try {
			$commissionCollection = $this->getCommissionsCollection($context);
			foreach($commissionCollection as $dbCommission) {
				$commission = new Pap_Tracking_Common_Commission();
				$commission->loadFrom($dbCommission);
				$commission->setStatusFromType($commissionType);
				if ($customStatus != null) {
					$commission->setStatus($customStatus);
				}
				$context->addCommission($commission);
			}
			$context->debug('    Commission settings loaded, # of tiers: ' . $commissionCollection->getSize());
		} catch(Exception $e) {
			$context->debug('    EXCEPTION, STOPPING. Exception message: '.$e->getMessage());
			return;
		}
			
		$context->debug('Recognizing commission settings ended');
		$context->debug('');
	}
    public function computeCustomCommissions(Pap_Contexts_Action $context) {
        $context->debug('Custom commission computing started');

        $commission = $context->getCustomCommissionFromRequest();
        if($commission != '') {
            $context->debug("        Found custom commission: ".$commission.", decoding");

            $type = $this->getParameterType($commission);
            $commission = $this->makeCorrections($commission);

            $value = '';
            if(is_numeric($commission) && $commission >= 0) {
                $value = $commission;
            }

            if($value != '') {
                $context->debug("        Custom commission is $type $value");
                $i = 1;
                while ($context->getCommission($i) != null) {
                    $context->removeCommission($i++);
                }
                $newCommission = new Pap_Tracking_Common_Commission(1, $type, $value);
                $newCommission->setStatus($this->recognizeStatus($context->getCommissionTypeObject()));
                $context->addCommission($newCommission);

                if ($type!='%'){
                    $this->recognizeCurrency->computeCustomCommission($context);
                }
            } else {
                $context->debug("        Custom commission has bad format");
            }
        } else {
        	$context->debug('No custom commission defined');
        }

        $context->debug('Checking for forced commissions ended');

        $context->debug('Custom commission computing ended');
        $context->debug("");
    }