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(''); }