Example #1
0
 public function executeIndex(sfWebRequest $request)
 {
     // System balance
     $this->sysBalance = BalanceSystem::getCurrentBalanceInstance();
     $this->balanceUser = BalanceUserTable::getInstance();
     // sorting
     if ($request->getParameter('sort') && $this->isValidSortColumn($request->getParameter('sort'))) {
         $this->setSort(array($request->getParameter('sort'), $request->getParameter('sort_type')));
     }
     // pager
     if ($request->getParameter('page')) {
         $this->setPage($request->getParameter('page'));
     }
     $this->pager = $this->getPager();
     $this->sort = $this->getSort();
 }
 public static function genMassPayWM($pay = true)
 {
     $max_id = Doctrine_Query::create()->select('max(bu.was_paid_id) as bu_max')->from('BalanceUser bu')->where('bu.was_paid > 0')->execute()->getFirst()->getBuMax();
     $q = Doctrine_Query::create()->select("bu.id_user, u.account_number as account_number, sum(bu.payable) as to_pay,\n                group_concat(p.date separator '|') as p_date, group_concat(bu.id separator '|') as for_ids")->from('BalanceUser bu')->innerJoin('bu.User u')->innerJoin('bu.Period p')->where('bu.was_paid = 0')->andWhere('bu.payable > 0')->andWhere("u.utype = 'puser'")->andWhere('bu.id_period != ?', Period::getCurrentPeriod()->getId())->groupBy('bu.id_user')->execute();
     $min_payout = (double) Setting::getValueByName('minPayout');
     $out = array();
     $out_num = 0;
     foreach ($q as $rec) {
         if (preg_match('/^R[0-9]{12}$/', $rec->getAccountNumber()) && $rec->getToPay() >= $min_payout) {
             if ($pay === true) {
                 $max_id = (int) $max_id + 1;
                 $bu_ids = explode('|', $rec->getForIds());
                 foreach ($bu_ids as $bu_id) {
                     $bu = BalanceUserTable::getInstance()->findOneById($bu_id);
                     $bu->setWasPaidId($max_id);
                     $bu->save();
                 }
                 $per = array();
                 $per_dates = explode('|', $rec->getPDate());
                 foreach ($per_dates as $p_date) {
                     $p_date_t = explode('-', $p_date);
                     $per[] = $p_date_t[1] . '/' . $p_date_t[0];
                 }
                 $row = array();
                 $row[] = $rec->getAccountNumber();
                 // номер кошелька
                 $row[] = $rec->getToPay();
                 // сумма тут надо разобраться с валютой
                 $row[] = mb_convert_encoding('Выплата за ', 'cp1251', 'utf-8') . join(', ', $per) . '. read2read.ru, payId:' . $max_id;
                 // комментарий к выплате
                 $row[] = $max_id;
                 // номер платежа
                 $out[] = join(';', $row);
             } else {
                 $out_num += $rec->getToPay();
             }
         }
     }
     if ($pay === true) {
         return join(PHP_EOL, $out);
     } else {
         return (int) $out_num;
     }
 }
Example #3
0
 /**
  * U_user purchase content: Transfer money from u_user to system
  *
  * @param <User> $user - instance of User purchased content
  * @param <int> $content_id - purchased article ID
  * @return bool
  */
 public function purchaseContent(User $u_user, $content_id)
 {
     $article = ContentTable::getInstance()->getArticleForSale($content_id);
     if (!is_object($article)) {
         return false;
     }
     $p_user = $article->getTranslator();
     $this->setOperation('purchase');
     $this->setPeriod(Period::getCurrentPeriod());
     $this->setAmount($article->getPrice());
     $r2r_price = (int) ($article->getPrice() * Setting::getR2RPercent()) / 100;
     $p_user_price = $article->getPrice() - $r2r_price;
     $this->setIdSender($u_user->getId());
     $this->setIdReceiver($p_user->getId());
     // Update U_User balance
     $this->setSenderBalanceBefore($u_user->getBalans());
     $u_user->setBalans($u_user->getBalans() - $this->getAmount());
     $this->setSenderBalanceAfter($u_user->getBalans());
     // Save U_User balance
     $u_user->save();
     $u_user = null;
     $p_user = null;
     // System balance
     if (!($systemBalance = BalanceSystem::getCurrentBalanceInstance())) {
         return false;
     }
     // u_user Charges
     $systemBalance->setChargesUser($systemBalance->getChargesUser() + $this->getAmount());
     // get p_user tariff plan
     $article_user_tariff = $article->getPUserTariff();
     // p_user to pay and stats adn R2R summ
     if ($article_user_tariff == 'standart') {
         $systemBalance->setToPayStandart($systemBalance->getToPayStandart() + $p_user_price);
         $systemBalance->setSalesStandart($systemBalance->getSalesStandart() + 1);
         $systemBalance->setR2rStandart($systemBalance->getR2rStandart() + $r2r_price);
     } elseif ($article_user_tariff == 'expert') {
         $systemBalance->setToPayExpert($systemBalance->getToPayExpert() + $p_user_price);
         $systemBalance->setSalesExpert($systemBalance->getSalesExpert() + 1);
         $systemBalance->setR2rExpert($systemBalance->getR2rExpert() + $r2r_price);
     } elseif ($article_user_tariff == 'super') {
         $systemBalance->setToPaySuper($systemBalance->getToPaySuper() + $p_user_price);
         $systemBalance->setSalesSuper($systemBalance->getSalesSuper() + 1);
         $systemBalance->setR2rSuper($systemBalance->getR2rSuper() + $r2r_price);
     }
     // Save system balance
     $systemBalance->save();
     $systemBalance = null;
     // BalanceUser u_user: update purchase stats
     if (!($userBalance = BalanceUserTable::getInstance()->getByUserIdAndPeriodId($this->getIdSender()))) {
         $userBalance = new BalanceUser();
         $userBalance->setPeriod(Period::getCurrentPeriod());
         $userBalance->setIdUser($this->getIdSender());
     }
     // Save U_User purchase stats
     $userBalance->setSellPurchaseCnt($userBalance->getSellPurchaseCnt() + 1);
     $userBalance->setAmount($userBalance->getAmount() + $this->getAmount());
     // save data
     $userBalance->save();
     $userBalance = null;
     // BalanceUser p_user: update sell stats
     // Receiver: P_User balance
     if (!($userBalance = BalanceUserTable::getInstance()->getByUserIdAndPeriodId($this->getIdReceiver()))) {
         $userBalance = new BalanceUser();
         $userBalance->setPeriod(Period::getCurrentPeriod());
         $userBalance->setIdUser($this->getIdReceiver());
     }
     // Transaction
     $this->setReceiverBalanceBefore($userBalance->getAmount());
     // p_user
     $userBalance->setSellPurchaseCnt($userBalance->getSellPurchaseCnt() + 1);
     $userBalance->setAmount($userBalance->getAmount() + $this->getAmount());
     $userBalance->setPayable($userBalance->getPayable() + $this->getAmount() - $r2r_price);
     // transaction
     $this->setReceiverBalanceAfter($userBalance->getAmount());
     // save data
     $userBalance->save();
     $userBalance = null;
     // Save transaction
     $this->save();
     return $this;
 }