public function save(Pap_Contexts_Tracking $context) {
		$context->debug('Saving commissions started');

		$tier = 1;
		$currentUser = $context->getUserObject();
		$currentCommission = $context->getCommission($tier);

		while($currentUser != null && $tier < 100) {
			if ($currentCommission != null) {
				if ($currentUser->getStatus() != null && $currentUser->getStatus() != 'D') {
					$this->saveCommission($context, $currentUser, $currentCommission);
				} else {
					$context->debug('Commission is not saved, because user is declined');
                }
			} else {
			    $context->debug('Commission is not saved, because it is not defined in campaign or user has no multi tier commission');
			}
		    Gpf_Plugins_Engine::extensionPoint('Tracker.saveAllCommissions', new Pap_Common_SaveCommissionCompoundContext($context, $tier, $currentUser, $this ));

			$tier++;
			$currentUser = $this->userTree->getParent($currentUser);
			$currentCommission = $context->getCommission($tier);
		}

		Gpf_Plugins_Engine::extensionPoint('Tracker.saveCommissions', $context);

		$context->debug('Saving commissions ended');
		$context->debug("");
    }
Ejemplo n.º 2
0
    public function saveCommissions(Pap_Contexts_Tracking $context) {
        $context->debug('Saving recurring commissions started');

        $commissionType = $context->getCommissionTypeObject();
        if ($commissionType == null) {
            $context->debug('No commission type defined. Recurring commissions saving ended');
            return;
        }
        
        if ($commissionType->getRecurrencePresetId() == Pap_Db_CommissionType::RECURRENCE_NONE
           || $commissionType->getRecurrencePresetId() == null) {
               $context->debug('Saving recurring commissions ended - No recurring commissions defined');
               return;
        }

        $tier = 1;
        $currentUser = $context->getUserObject();
        $currentCommission = $context->getCommission($tier, Pap_Db_Table_Commissions::SUBTYPE_RECURRING);

        if ($currentUser == null || $currentCommission == null) {
            $context->debug('Saving recurring commissions ended - current user or current commission is null');
            return;
        }
        $recurringCommission = new Pap_Db_RecurringCommission();
        $relatedTransaction = $this->getTransaction($context);
        $recurringCommission->setOrderId($relatedTransaction->getOrderId());
        $recurringCommission->setTransactionId($relatedTransaction->getTransactionId());
        $recurringCommission->setRecurrencePresetId($commissionType->getRecurrencePresetId());
        $recurringCommission->setCommissionTypeId($commissionType->getId());
        $recurringCommission->setStatus($relatedTransaction->getStatus());
        $recurringCommission->setLastCommissionDate($relatedTransaction->getDateInserted());
        $recurringCommission->insert();
        $context->debug('Recurring commission successfully saved.');

        while($currentUser != null && $currentCommission != null && $tier < 100) {
            $rcEntry = new Pap_Db_RecurringCommissionEntry();
            $rcEntry->setRecurringCommissionId($recurringCommission->getId());
            $rcEntry->setUserId($currentUser->getId());
            $rcEntry->setTier($tier);
            $rcEntry->setCommission($currentCommission->getCommission($context->getRealTotalCost()));
            $rcEntry->insert();

            $tier++;
            $currentUser = $currentUser->getParentUser();
            $currentCommission = $context->getCommission($tier, Pap_Db_Table_Commissions::SUBTYPE_RECURRING);
        }


        $context->debug('Saving recurring commissions ended');
        $context->debug("");
    }