예제 #1
0
 /**
  * Покупка списка услуг ожидающих оплаты
  * 
  * @todo: рекомендуется не использовать данный метод
  * 
  * @param integer $gid     Ид пользователя
  * @param integer $op_code Ид услуги
  */
 public function buyOrdersList($gid, $op_code, $login = "")
 {
     $log = new log("billing/deposit-" . SERVER . '-%d%m%Y.log', 'a', "%d.%m.%Y %H:%M:%S:\r\n");
     $log->writeln("deposit: login:{$login}, uid:{$gid}, code:{$op_code}\r\n");
     if (!$gid) {
         return false;
     }
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/billing.php';
     session_start();
     $this->GetInfo($gid);
     $ac_sum = $this->sum;
     $log->write("start account_sum:{$ac_sum}\r\n");
     if (in_array($op_code, billing::$op_code_transfer_money)) {
         // Деньги поступают на счет смотрим что можно оплатить
         $bill = new billing($gid);
         $reserve_operations = $bill->getReserveOperationsByStatus();
         if (!empty($reserve_operations)) {
             ob_start();
             var_dump($reserve_operations);
             $out = ob_get_clean();
             $log->write($out . "\r\n");
             //$mail_reserved = array();
             $reserved_ids = array_map(create_function('$array', 'return $array["id"];'), $reserve_operations);
             $bill->startReserved($reserved_ids);
             // Блокируем услуги для изменений
             foreach ($reserve_operations as $reserve) {
                 //$ret[$reserve['id']] = $reserve;
                 $log->write("reserve {$reserve['id']} : {$ac_sum} >= {$reserve['ammount']}\r\n");
                 //if($ac_sum >= $reserve['ammount']) { // Пытаемся оплатить список услуг
                 //$mail_reserved[] = $reserve['id'];
                 $bill->transaction = $bill->account->start_transaction($bill->user['uid'], 0);
                 $success = $bill->completeOrders($reserve['id']);
                 $log->write("{$reserve['id']} ({$reserve['ammount']}) : {$success}\r\n");
                 if ($success) {
                     $bill->account->commit_transaction($bill->transaction, $bill->user['uid'], NULL);
                     $ac_sum = $ac_sum - $reserve['ammount'];
                 }
                 $log->write("set account_sum: {$ac_sum}\r\n---\r\n");
                 //}
             }
             $bill->stopReserved($reserved_ids);
             // Разблокируем услуги для изменений
             $log->write("done\r\n---------------------------------\r\n\r\n");
             /*
             require_once($_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php');
             if (substr($bill->user['subscr'], 15, 1) == 1) {
                 //$smail = new smail();
                 //$smail->sendReservedOrders($ret, $mail_reserved);
             }
             */
         }
         $_SESSION['ac_sum'] = $ac_sum;
     }
 }