Пример #1
0
 public function modifyCommission(Pap_Common_SaveCommissionCompoundContext $compoundContext) {
     $context = $compoundContext->getContext();
     if (!($context instanceof Pap_Contexts_Action)) {
         $context->debug('PartnerCommission plugin not applied as Action/Sale is not saved');
         return;
     }
     $context->debug('PartnerCommission plugin begin');
     $user = $compoundContext->getUser();
     $tier = $compoundContext->getTier();
     $saveAllCommissions = $compoundContext->getSaveObject();
     if ($user->getParentUserId() == '') {
         $firstTransaction = $context->getTransactionObject(1);
         $transaction = $context->getTransactionObject($tier);
         if ($transaction != null) {
             $transaction->setCommission($transaction->getTotalCost() - $transaction->getFixedCost() - $this->sumOfCommissions($context, $tier));
             $context->debug('  PartnerCommission changed commission to: ' . $transaction->getCommission());
             $transaction->save();
         } else {
             $context->debug('  Commission does not exist.');
             $commission = new Pap_Tracking_Common_Commission($tier, Pap_Db_CommissionType::COMMISSION_FIXED, $firstTransaction->getTotalCost() - $firstTransaction->getFixedCost() - $this->sumOfCommissions($context, $tier));
             $commission->setStatusFromType($context->getCommissionTypeObject());
             $saveAllCommissions->saveCommission($context, $user, $commission);
         }
     }
     $context->debug('PartnerCommission plugin end');
 }
	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('');
	}