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; } }
/** * 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; }