protected function _get_sum_positive_balances_partners()
 {
     $sum = 0;
     $user = new iuser();
     $users = $user->select($count, array('filter' => array('min_balance' => 0, 'profile_id' => 10)));
     // Берем только включенных партнеров
     foreach ($users as $user) {
         $sum += $user->get('balance');
     }
     return $sum;
 }
 public function clicks2billsAction()
 {
     $user = new iuser();
     $stat = new stat();
     $pp = new project_partner();
     $partners = $pp->select($count, array('filter' => array('status' => 1)));
     foreach ($partners as $partner) {
         $add_cpc2click = 0;
         // Костыль для переноса стоимости клика из одного счета на клики из другого
         echo $partner->get('id') . ') ' . $partner->get('name') . '<br>';
         $billings = $user->get_billings($partner->get('user_id'), array('min_sum' => 0, 'min_unclosed' => 0, 'mindate' => '2013-10-01 00:00:00'));
         if (is_array($billings) && count($billings)) {
             echo 'Billings: ' . count($billings) . '<br>';
             foreach ($billings as $bill) {
                 echo $bill->id . ' ' . $bill->sum . ' ' . $bill->sum_closed . '<br><br>';
                 $clicks = $stat->select($count, array('filter' => array('partner_id' => $partner->get('id'), 'bill_id' => 0, 'dt_start_full' => date('Y-m-01 00:00:01', strtotime($bill->dt_operation)), 'dt_finish' => date('Y-m-d', time() - 60 * 60 * 24 * 2), 'double' => true), 'order' => '`datetime`', 'limit' => intval($bill->sum / 4)));
                 if (is_array($clicks) && count($clicks)) {
                     $ids = array();
                     foreach ($clicks as $id => $click) {
                         if ($add_cpc2click > 0) {
                             // Если деньги остались с прошлого раза - переносим
                             $click->cpc += $add_cpc2click;
                             $stat->set_cpc($click->id, $click->cpc);
                             $add_cpc2click = 0;
                         }
                         if ($bill->sum < $bill->sum_closed + $click->cpc) {
                             // Если текущий клик перекрывает счет
                             $add_cpc2click = $click->cpc - ($bill->sum - $bill->sum_closed);
                             // В следующий клик добавим разницу
                             $click->cpc = $bill->sum - $bill->sum_closed;
                             $stat->set_cpc($click->id, $click->cpc);
                         }
                         $ids[] = $id;
                         $bill->sum_closed += $click->cpc;
                         if ($bill->sum_closed == $bill->sum) {
                             break;
                         }
                         if ($click->id % 10 == 0) {
                             echo $bill->id . ' ' . $bill->sum . ' ' . $bill->sum_closed . '<br>';
                         }
                     }
                     if (is_array($ids) && count($ids)) {
                         $stat->set_bill_id($ids, $bill->id);
                         $user->update_sum_closed($bill->id, $bill->sum_closed);
                         echo $bill->id . ' ' . $bill->sum . ' ' . $bill->sum_closed . '<br><br>';
                     }
                 }
             }
         }
     }
     die('ok');
 }