private function addCpmCommissionToCampaigns() {
     $campaign = new Pap_Db_Campaign();
     $campaigns = $campaign->loadCollection();
     foreach ($campaigns as $campaign) {
         $commissionType = new Pap_Db_CommissionType();
         $commissionType->setCampaignId($campaign->getId());
         $commissionType->setType(Pap_Common_Constants::TYPE_CPM);
         try {
             $commissionType->loadFromData();
         } catch (Gpf_DbEngine_NoRowException $e) {
             $commissionType->setStatus(Pap_Db_CommissionType::STATUS_DISABLED);
             $commissionType->setRecurrencePresetId(Pap_Db_CommissionType::RECURRENCE_NONE);
             $commissionType->setApproval(Pap_Db_CommissionType::APPROVAL_AUTOMATIC);
             $commissionType->setZeroOrdersCommission(Gpf::NO);
             $commissionType->setSaveZeroCommission(Gpf::NO);
             $commissionType->insert();
         }
     }
 }
    public function insertCommissionType($type) {
        $commissionType = new Pap_Db_CommissionType();
        $commissionType->setCampaignId($this->getId());
        $commissionType->setType($type);
        $commissionType->setStatus(Pap_Db_CommissionType::STATUS_ENABLED);
        $commissionType->setApproval(Pap_Db_CommissionType::APPROVAL_AUTOMATIC);
        $commissionType->setRecurrencePresetId(Pap_Db_CommissionType::RECURRENCE_NONE);
        $commissionType->setZeroOrdersCommission(Gpf::NO);
        $commissionType->setSaveZeroCommission(Gpf::NO);
        $commissionType->insert();

        return $commissionType->getId();
    }
	protected function insertCommissionType($campaignId, $recurringCommission, $recurringDateType, $pap4CommType) {
		$obj = new Pap_Db_CommissionType();
		$obj->setType($pap4CommType);
		$obj->setStatus(Pap_Common_Constants::ESTATUS_ENABLED);

		// set commission type approval
		$pap3ApprovalStatus = '';
		if($pap4CommType == Pap_Common_Constants::TYPE_CLICK) {
			$pap3ApprovalStatus = $this->getPap3Setting($campaignId, 'Aff_camp_clickapproval');
		} else {
			$pap3ApprovalStatus = $this->getPap3Setting($campaignId, 'Aff_camp_saleapproval');
		}
		if($pap3ApprovalStatus == 2) {
			$obj->setApproval(Pap_Db_CommissionType::APPROVAL_AUTOMATIC);
		} else {
			$obj->setApproval(Pap_Db_CommissionType::APPROVAL_MANUAL);
		}

		// set recurring type
		if($recurringCommission == 0 || $recurringDateType == 0) {
			$obj->setRecurrencePresetId(Pap_Db_CommissionType::RECURRENCE_NONE);
		} else {
			switch($recurringDateType) {
				case Pap3Compatibility_Migration_Pap3Constants::RECURRINGTYPE_WEEKLY:
					$obj->setRecurrencePresetId(Pap_Db_CommissionType::RECURRENCE_WEEKLY); break;

				case Pap3Compatibility_Migration_Pap3Constants::RECURRINGTYPE_MONTHLY:
					$obj->setRecurrencePresetId(Pap_Db_CommissionType::RECURRENCE_MONTHLY); break;

				case Pap3Compatibility_Migration_Pap3Constants::RECURRINGTYPE_QUARTERLY:
					$obj->setRecurrencePresetId(Pap_Db_CommissionType::RECURRENCE_QUARTERLY); break;

				case Pap3Compatibility_Migration_Pap3Constants::RECURRINGTYPE_BIANNUALLY:
					$obj->setRecurrencePresetId(Pap_Db_CommissionType::RECURRENCE_SEMIANNUALLY); break;

				case Pap3Compatibility_Migration_Pap3Constants::RECURRINGTYPE_YEARLY:
					$obj->setRecurrencePresetId(Pap_Db_CommissionType::RECURRENCE_YEARLY); break;
				default:
					$obj->setRecurrencePresetId(Pap_Db_CommissionType::RECURRENCE_NONE);
			}
		}

		$obj->setZeroOrdersCommission(Gpf::YES);
        $obj->setSaveZeroCommission(Gpf::YES);
		$obj->setCampaignId($campaignId);
		$obj->save();

		$this->countCommTypes++;
		return $obj;
	}
 private function createReferralCommissionType() {
     $commissionType = new Pap_Db_CommissionType();
     $commissionType->setType(Pap_Common_Constants::TYPE_REFERRAL);
     $commissionType->setStatus(Pap_Db_CommissionType::STATUS_ENABLED);
     $commissionType->setApproval(Pap_Db_CommissionType::APPROVAL_AUTOMATIC);
     $commissionType->setZeroOrdersCommission(Gpf::NO);
     $commissionType->setSaveZeroCommission(Gpf::NO);
     $commissionType->insert();
 }
    private function getCommissionTypeAndValue($campaignId, $userId, $commissionTypeId, $tier = null) {
        if (is_null($tier) || $tier == '') {
            $tier = 1;
        }

        // getting user
        if($userId == '') {
            $this->errorMsg = $this->_("User is not valid!");
            return false;
        }
        $user = new Pap_Common_User();
        $user->setPrimaryKeyValue($userId);
        try {
            $user->load();
        } catch (Gpf_DbEngine_NoRowException $e) {
            $this->errorMsg = $this->_("User is not valid!");
            return false;
        }

        // getting campaign
        $campaign = new Pap_Common_Campaign();
        $campaign->setId($campaignId);
        try {
            $campaign->load();
        } catch (Gpf_DbEngine_NoRowException $e) {
            $this->errorMsg = $this->_("Campaign is not valid!");
            return false;
        }
        // getting commission type
        try {
            $commissionType = new Pap_Db_CommissionType();
            $commissionType->setId($commissionTypeId);
            $commissionType->setStatus(Pap_Db_CommissionType::STATUS_ENABLED);
            $commissionType->loadFromData();
        } catch (Gpf_DbEngine_NoRowException $e) {
            $this->errorMsg = $this->_("Transaction type is not valid or doesn't exist in this campaign!");
            return false;
        }
        $fixedcostType = $commissionType->getFixedcostType();
        $fixedcostValue = $commissionType->getFixedcostValue();
        // getting commission group
        $commGroupId = $campaign->getCommissionGroupForUser($userId);
        if($commGroupId == false) {
            $this->errorMsg = $this->_("Cannot recognize commission group for this user in campaign!");
            return false;
        }

        $rsCommissions = $campaign->getCommissionsCollection($commGroupId, $commissionType->getId());
        $commType = null;
        $commValue = null;
        foreach($rsCommissions as $record) {
            if($record->get('tier') == $tier && $record->get('subtype') == 'N') {
                $commType = $record->get('commissiontype');
                $commValue = $record->get('commissionvalue');
                break;
            }
        }

        if($commType == null) {
            $this->errorMsg = $this->_("Error getting commission settings!");
            return false;
        }

        return array('type' => $commType, 'value' => $commValue, 'fixedcostValue' => $fixedcostValue, 'fixedcostType' => $fixedcostType);
    }