public function createCommissions() {
        $comissionEntry = new Pap_Db_RecurringCommissionEntry();
        $comissionEntry->setRecurringCommissionId($this->getId());
        try {
            $parentTransaction = $this->getTransaction();
        } catch (Gpf_Exception $e) {
            $parentTransaction = null;
        }
        foreach ($comissionEntry->loadCollection() as $comissionEntry) {
            if (!$this->isExistsUser($comissionEntry->getUserId())) {
                Gpf_log::error('Recurring commissions - createCommissions: user does not exist: ' . $comissionEntry->getUserId());
                if ($comissionEntry->getTier() == '1') {
                    return;
                } else {
                    continue;
                }
            }
            $transaction = new Pap_Common_Transaction();
            $transaction->setDateInserted(Gpf_Common_DateUtils::now());
            $transaction->setType(Pap_Common_Constants::TYPE_RECURRING);
            $transaction->setTier($comissionEntry->getTier());
            $transaction->setUserId($comissionEntry->getUserId());
            $transaction->setCommissionTypeId($this->getCommissionTypeId());
            $transaction->setParentTransactionId($this->getTransactionId());
            $transaction->setCommission($comissionEntry->getCommission());
            $transaction->setPayoutStatus(Pap_Common_Transaction::PAYOUT_UNPAID);
            $transaction->setStatus(Pap_Common_Constants::STATUS_APPROVED);
            $transaction->setOrderId($this->getOrderId());

            if ($parentTransaction != null) {
                if ($transaction->getOrderId() == '') {
                    $transaction->setOrderId($parentTransaction->getOrderId());
                }
                $transaction->setProductId($parentTransaction->getProductId());
                $transaction->setTotalCost($parentTransaction->getTotalCost());
                $transaction->setCampaignId($parentTransaction->getCampaignId());
                $transaction->setBannerId($parentTransaction->getBannerId());
                $transaction->setParentBannerId($parentTransaction->getParentBannerId());
                $transaction->setCountryCode($parentTransaction->getCountryCode());
                $transaction->setData1($parentTransaction->getData1());
                $transaction->setData2($parentTransaction->getData2());
                $transaction->setData3($parentTransaction->getData3());
                $transaction->setData4($parentTransaction->getData4());
                $transaction->setData5($parentTransaction->getData5());
            }

            $transaction->save();
        }
    }
示例#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("");
    }