BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 29 мар 2024, 14:10

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 25 ] 
Автор Сообщение
 Заголовок сообщения: Детальный баланс
СообщениеДобавлено: 12 июн 2016, 00:25 
Не в сети

Зарегистрирован: 29 апр 2016, 13:00
Сообщения: 60
Карма: 0
Добрый день
Получаю детальный баланс:
Код:
$year = date('Y');
$month = '05';
$url = "http://127.0.0.1:8080/bgbilling/executer/json/ru.bitel.bgbilling.kernel.contract.balance/BalanceService";
$data = json_encode(array(
    "method" => "balanceDetailList",
    "user" => array(
        "user" => "admin",
        "pswd" => "sipadmin125"
    ),
    "params" => array(
        "contractId" => $contract_id,
        "period" => array("year" => $year, "month" => $month, "day_from" => "1", "day_to" => "31"),
        "available" => false
    )
));

echo "<br>Запрос: ".$data."<br><br>";

curl_setopt_array($myCurl, array(
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => $data
));
$response = curl_exec($myCurl);
curl_close($myCurl);

echo "Ответ: ".$response."<br><br>";

Но сколько не меняю месяц в периоде, все равно выдает последний месяц. Так и должно быть?
Код:
  Клиент: вер. 7.0.813 / 10.06.2016 16:56:23
    os: Windows 10; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91
  Сервер: вер. 7.0.1051 / 10.06.2016 16:57:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_92


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 13 июн 2016, 18:18 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
ну а как у вас баланс на договоре распределён и какие месяцы вы ставите? может вы вперёд месяц двигаете?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 14 июн 2016, 14:34 
Не в сети

Зарегистрирован: 29 апр 2016, 13:00
Сообщения: 60
Карма: 0
Ну я не тупее паровоза, конечно назад, и договор 1, без субдоговоров.
В запросе вы видете прошлый месяц, а выводит последний.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 14 июн 2016, 16:14 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
месяцы с нуля считаются...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 15 июн 2016, 17:09 
Не в сети

Зарегистрирован: 29 апр 2016, 13:00
Сообщения: 60
Карма: 0
Спасибо, теперь ясно.
Вот только не работает, все равно последний выводит


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 15 июн 2016, 17:20 
Не в сети
Клиент

Зарегистрирован: 02 авг 2011, 13:24
Сообщения: 607
Карма: 42
Пробовал этот скрипт на 6.2 и та же самая ситуация - выводит только текущий месяц.

_________________
Работаем на 6.0 (Inet)
Подготовка к переходу на 6.2


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 15 июн 2016, 17:47 
Не в сети

Зарегистрирован: 29 апр 2016, 13:00
Сообщения: 60
Карма: 0
Если это так и задумано, тогда вопрос, зачем период требуется?
Если ошибка, то неплохо бы поправить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 15 июн 2016, 18:44 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
нет судя по коду период там читается, но если период кривой, то берётся текущий месяц

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 15 июн 2016, 19:25 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
вы где этот код взяли? а так точно должно работать?
Код:
"period" => array("year" => $year, "month" => $month, "day_from" => "1", "day_to" => "31"),

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 15 июн 2016, 19:43 
Не в сети
Клиент

Зарегистрирован: 02 авг 2011, 13:24
Сообщения: 607
Карма: 42
dimOn писал(а):
вы где этот код взяли? а так точно должно работать?
Код:
"period" => array("year" => $year, "month" => $month, "day_from" => "1", "day_to" => "31"),

Я так понимаю отсюда:
Код:
balanceDetailList
java.util.List<BalanceDetailItem> balanceDetailList(int contractId,
                                                    Period period,
                                                    boolean available)
                                             throws ru.bitel.bgbilling.common.BGException
Получнение списка для детализированного баланса, как с учетом резервов, так и нет. Метод максимально соответсвует старому акшену( ActionContractBalanceDetail );
Parameters:
contractId - - код договора.
period - - период, шагом является месяц.
available - если = true, то вернет с учетом резервов, то есть с учетом доступной суммы.
Returns:
список в хронологическом порядке(ну кроме нароботков) приходов, расходов, нароботков, резервов(если available=true) за период.
Throws:
ru.bitel.bgbilling.common.BGException
И отсюда:
Код:
Period
public Period(int year,
              int month,
              int day_from,
              int day_to)
Создает период по году, месяцу, дню начала и окончания.
Parameters:
year - - год
month - - 0-based месяц (то есть январю соответствует 0)
day_from - - день начала
day_to - - день окончания (если взять заведомо большое, то обрежется до актуального максимума этого месяца)

_________________
Работаем на 6.0 (Inet)
Подготовка к переходу на 6.2


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 15 июн 2016, 20:16 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Ну код я как раз сам видел. Не уверен именно что можно таким образом period создать.
А изучать код ещё json-велосипеда не очень хочется.
Подобная работа с периодом где-то описана?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 16 июн 2016, 21:40 
Не в сети

Зарегистрирован: 29 апр 2016, 13:00
Сообщения: 60
Карма: 0
А что могут сказать господа разработчики?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 16 июн 2016, 23:18 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
AlexNVZ писал(а):
А что могут сказать господа разработчики?


Код:
package ru.bitel.common.model;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import javax.xml.bind.annotation.XmlAttribute;

import bitel.billing.common.TimeUtils;

/**
 * Класс-модель "период".
 */
public class Period
    implements Comparable<Period>
{
    private Date dateFrom;
    private Date dateTo;

   public Period()
   {}

   public Period( Date fromDate, Date toDate )
   {
      this.dateFrom = fromDate;
      this.dateTo = toDate;
   }
   
   /**
    * Создает период по году, месяцу, дню начала и окончания.
    * @param year - год
    * @param month - 0-based месяц (то есть январю соответствует 0)
    * @param day_from - день начала
    * @param day_to - день окончания (если взять заведомо большое, то обрежется до актуального максимума этого месяца)
    */
   public Period( int year, int month, int day_from, int day_to )
    {
      GregorianCalendar cal1 =  new GregorianCalendar( year, month, 1 );
      cal1.set( Calendar.DAY_OF_MONTH, Math.max( day_from, cal1.getActualMinimum( Calendar.DAY_OF_MONTH ) ) );
       this.dateFrom = cal1.getTime();
       cal1.set( Calendar.DAY_OF_MONTH, Math.min( day_to, cal1.getActualMaximum( Calendar.DAY_OF_MONTH ) ) );
       this.dateTo = cal1.getTime();
    }


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 17 июн 2016, 03:38 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Гыгыгы.
Читаю
AlexNVZ писал(а):
А что могут сказать господа разработчики?

и думаю "ну вон же тебе Димон сказал, что период возможно не так создается", чем его ответ то не нравится.
И только потом догоняю, что дело то в цвете :D

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 17 июн 2016, 23:00 
Не в сети

Зарегистрирован: 29 апр 2016, 13:00
Сообщения: 60
Карма: 0
Скрипт это конечно хорошо, но где не правильность в моем коде, вроде все по написанному в описании создания периода.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 17 июн 2016, 23:43 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
AlexNVZ писал(а):
Скрипт это конечно хорошо, но где не правильность в моем коде, вроде все по написанному в описании создания периода.


это описание для создания периода из Java кода, т.е. если передать в Java конструктор класса указанные параметры то будет запущен КОД (см. выше) который создаст объект с двумя полями типа "дата" (эти поля будут вычислены на основании переданных данных), вы же из своего вызова должны передать уже ГОТОВЫЙ объект типа Period с установленными полями датами...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 22 июн 2016, 12:18 
Не в сети

Зарегистрирован: 29 апр 2016, 13:00
Сообщения: 60
Карма: 0
Спасибо, но к сожалению не смогу воспользоваться советом, я в Java как свинья в апельсинах. Не представляю где находится этот конструктор и как туда передать данные а затем еще посмотреть чего получилось. Потому и пишу на PHP. Буду признателен, если вы мне подскажете готовый ответ, какой объект получится на выходе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 22 июн 2016, 13:57 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
AlexNVZ писал(а):
Спасибо, но к сожалению не смогу воспользоваться советом, я в Java как свинья в апельсинах. Не представляю где находится этот конструктор и как туда передать данные а затем еще посмотреть чего получилось. Потому и пишу на PHP. Буду признателен, если вы мне подскажете готовый ответ, какой объект получится на выходе.


к сожалению я не пиши на php и как вызвать из php сервис понятия не имею...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 22 июн 2016, 14:03 
Не в сети

Зарегистрирован: 29 апр 2016, 13:00
Сообщения: 60
Карма: 0
Цитата:
к сожалению я не пиши на php и как вызвать из php сервис понятия не имею...

Но вы по крайней мере можете выполнить запрос своим способом, и получить ожидаемый объект.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 22 июн 2016, 20:02 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Попробуйте так:
Код:
"period" => array("dateFrom" => "2016-06-01", "dateTo" => "2016-06-01")
или
Код:
"period" => array("dateFrom" => "2016-06-01T00:00:00.000Z", "dateTo" => "2016-06-01T00:00:00.000Z")


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 22 июн 2016, 20:52 
Не в сети
Клиент

Зарегистрирован: 02 авг 2011, 13:24
Сообщения: 607
Карма: 42
Amir писал(а):
Попробуйте так:
Код:
"period" => array("dateFrom" => "2016-06-01", "dateTo" => "2016-06-01")
или
Код:
"period" => array("dateFrom" => "2016-06-01T00:00:00.000Z", "dateTo" => "2016-06-01T00:00:00.000Z")
Спасибо.
По обоим вариантам начало учитывать даты на 6.2.

_________________
Работаем на 6.0 (Inet)
Подготовка к переходу на 6.2


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 23 июн 2016, 19:26 
Не в сети

Зарегистрирован: 29 апр 2016, 13:00
Сообщения: 60
Карма: 0
Присоединяюсь, спасибо огромное.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 05 май 2017, 11:07 
Не в сети

Зарегистрирован: 25 фев 2016, 06:57
Сообщения: 74
Карма: 0
Amir писал(а):
Попробуйте так:
Код:
"period" => array("dateFrom" => "2016-06-01", "dateTo" => "2016-06-01")
или
Код:
"period" => array("dateFrom" => "2016-06-01T00:00:00.000Z", "dateTo" => "2016-06-01T00:00:00.000Z")


Добавлю момент один, что в данном случае нельзя использовать неправильную дату, например 31 апреля, чтобы было проще, как в mysql, например.

Код:
"period" => array("dateFrom" => "2017-04-01", "dateTo" => "2017-04-31")
выдаст за текущий месяц, а не за указанный, поэтому придется количество дней рассчитывать.

_________________
Сервер: вер. 7.1.1118 / 16.04.2019 22:18:28
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_202


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 05 май 2017, 12:00 
Не в сети

Зарегистрирован: 25 фев 2016, 06:57
Сообщения: 74
Карма: 0
Подскажите, может кто пишет на Ruby On Rails. В этом же случае как посте, на PHP всё работает, а с Ruby никак не получается передать период.

Код:
params = {
      contractId: contractId,
      period: {:dateFrom => "2017-04-01", :dateTo => "2017-04-30"},
      available: false
}


Пробовал по разному:
Код:
      period: {:dateFrom => "2017-04-01", :dateTo => "2017-04-30"}
      period: [{:dateFrom => "2017-04-01", :dateTo => "2017-04-30"}]
      period: [{:dateFrom => "2017-04-01"}, {:dateTo => "2017-04-30"}]
      period: [{"dateFrom" => "2017-04-01"}, {"dateTo" => "2017-04-30"}]
      period: [:dateFrom => ["2017-03-01"], :dateTo => ["2017-03-30"]]

и другие версии этих

_________________
Сервер: вер. 7.1.1118 / 16.04.2019 22:18:28
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_202


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Детальный баланс
СообщениеДобавлено: 07 май 2017, 16:47 
Не в сети

Зарегистрирован: 29 апр 2016, 13:00
Сообщения: 60
Карма: 0
Цитата:
Добавлю момент один, что в данном случае нельзя использовать неправильную дату, например 31 апреля, чтобы было проще, как в mysql, например.

Код:
"period" => array("dateFrom" => "2017-04-01", "dateTo" => "2017-04-31")
выдаст за текущий месяц, а не за указанный, поэтому придется количество дней рассчитывать.

Это решается так:
Код:
$date_yy = date('Y');
$date_mm = date('m');

$day = new DateTime($date_yy.'-'.$date_mm.'-01');
$day = $day->format('t');    //Последний день в месяце

$datefrom = $date_yy.'-'.$date_mm.'-01';
$dateto = $date_yy.'-'.$date_mm.'-'.$day;


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 25 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.121s | 70 Queries | GZIP : On ]