forum.bitel.ru http://forum.bitel.ru/ |
|
Детальный баланс http://forum.bitel.ru/viewtopic.php?f=19&t=11684 |
Страница 1 из 1 |
Автор: | AlexNVZ [ 12 июн 2016, 00:25 ] |
Заголовок сообщения: | Детальный баланс |
Добрый день Получаю детальный баланс: Код: $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 |
Автор: | dimOn [ 13 июн 2016, 18:18 ] |
Заголовок сообщения: | Re: Детальный баланс |
ну а как у вас баланс на договоре распределён и какие месяцы вы ставите? может вы вперёд месяц двигаете? |
Автор: | AlexNVZ [ 14 июн 2016, 14:34 ] |
Заголовок сообщения: | Re: Детальный баланс |
Ну я не тупее паровоза, конечно назад, и договор 1, без субдоговоров. В запросе вы видете прошлый месяц, а выводит последний. |
Автор: | skn [ 14 июн 2016, 16:14 ] |
Заголовок сообщения: | Re: Детальный баланс |
месяцы с нуля считаются... |
Автор: | AlexNVZ [ 15 июн 2016, 17:09 ] |
Заголовок сообщения: | Re: Детальный баланс |
Спасибо, теперь ясно. Вот только не работает, все равно последний выводит |
Автор: | nik247 [ 15 июн 2016, 17:20 ] |
Заголовок сообщения: | Re: Детальный баланс |
Пробовал этот скрипт на 6.2 и та же самая ситуация - выводит только текущий месяц. |
Автор: | AlexNVZ [ 15 июн 2016, 17:47 ] |
Заголовок сообщения: | Re: Детальный баланс |
Если это так и задумано, тогда вопрос, зачем период требуется? Если ошибка, то неплохо бы поправить. |
Автор: | dimOn [ 15 июн 2016, 18:44 ] |
Заголовок сообщения: | Re: Детальный баланс |
нет судя по коду период там читается, но если период кривой, то берётся текущий месяц |
Автор: | dimOn [ 15 июн 2016, 19:25 ] |
Заголовок сообщения: | Re: Детальный баланс |
вы где этот код взяли? а так точно должно работать? Код: "period" => array("year" => $year, "month" => $month, "day_from" => "1", "day_to" => "31"),
|
Автор: | nik247 [ 15 июн 2016, 19:43 ] |
Заголовок сообщения: | Re: Детальный баланс |
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 - - день окончания (если взять заведомо большое, то обрежется до актуального максимума этого месяца) |
Автор: | dimOn [ 15 июн 2016, 20:16 ] |
Заголовок сообщения: | Re: Детальный баланс |
Ну код я как раз сам видел. Не уверен именно что можно таким образом period создать. А изучать код ещё json-велосипеда не очень хочется. Подобная работа с периодом где-то описана? |
Автор: | AlexNVZ [ 16 июн 2016, 21:40 ] |
Заголовок сообщения: | Re: Детальный баланс |
А что могут сказать господа разработчики? |
Автор: | skn [ 16 июн 2016, 23:18 ] |
Заголовок сообщения: | Re: Детальный баланс |
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(); } |
Автор: | Phricker [ 17 июн 2016, 03:38 ] |
Заголовок сообщения: | Re: Детальный баланс |
Гыгыгы. Читаю AlexNVZ писал(а): А что могут сказать господа разработчики? и думаю "ну вон же тебе Димон сказал, что период возможно не так создается", чем его ответ то не нравится. И только потом догоняю, что дело то в цвете ![]() |
Автор: | AlexNVZ [ 17 июн 2016, 23:00 ] |
Заголовок сообщения: | Re: Детальный баланс |
Скрипт это конечно хорошо, но где не правильность в моем коде, вроде все по написанному в описании создания периода. |
Автор: | skn [ 17 июн 2016, 23:43 ] |
Заголовок сообщения: | Re: Детальный баланс |
AlexNVZ писал(а): Скрипт это конечно хорошо, но где не правильность в моем коде, вроде все по написанному в описании создания периода. это описание для создания периода из Java кода, т.е. если передать в Java конструктор класса указанные параметры то будет запущен КОД (см. выше) который создаст объект с двумя полями типа "дата" (эти поля будут вычислены на основании переданных данных), вы же из своего вызова должны передать уже ГОТОВЫЙ объект типа Period с установленными полями датами... |
Автор: | AlexNVZ [ 22 июн 2016, 12:18 ] |
Заголовок сообщения: | Re: Детальный баланс |
Спасибо, но к сожалению не смогу воспользоваться советом, я в Java как свинья в апельсинах. Не представляю где находится этот конструктор и как туда передать данные а затем еще посмотреть чего получилось. Потому и пишу на PHP. Буду признателен, если вы мне подскажете готовый ответ, какой объект получится на выходе. |
Автор: | skn [ 22 июн 2016, 13:57 ] |
Заголовок сообщения: | Re: Детальный баланс |
AlexNVZ писал(а): Спасибо, но к сожалению не смогу воспользоваться советом, я в Java как свинья в апельсинах. Не представляю где находится этот конструктор и как туда передать данные а затем еще посмотреть чего получилось. Потому и пишу на PHP. Буду признателен, если вы мне подскажете готовый ответ, какой объект получится на выходе. к сожалению я не пиши на php и как вызвать из php сервис понятия не имею... |
Автор: | AlexNVZ [ 22 июн 2016, 14:03 ] |
Заголовок сообщения: | Re: Детальный баланс |
Цитата: к сожалению я не пиши на php и как вызвать из php сервис понятия не имею... Но вы по крайней мере можете выполнить запрос своим способом, и получить ожидаемый объект. |
Автор: | Amir [ 22 июн 2016, 20:02 ] |
Заголовок сообщения: | Re: Детальный баланс |
Попробуйте так: Код: "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")
|
Автор: | nik247 [ 22 июн 2016, 20:52 ] |
Заголовок сообщения: | Re: Детальный баланс |
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. |
Автор: | AlexNVZ [ 23 июн 2016, 19:26 ] |
Заголовок сообщения: | Re: Детальный баланс |
Присоединяюсь, спасибо огромное. |
Автор: | igimux [ 05 май 2017, 11:07 ] |
Заголовок сообщения: | Re: Детальный баланс |
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") выдаст за текущий месяц, а не за указанный, поэтому придется количество дней рассчитывать.
|
Автор: | igimux [ 05 май 2017, 12:00 ] |
Заголовок сообщения: | Re: Детальный баланс |
Подскажите, может кто пишет на 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"]] и другие версии этих |
Автор: | AlexNVZ [ 07 май 2017, 16:47 ] |
Заголовок сообщения: | Re: Детальный баланс |
Цитата: Добавлю момент один, что в данном случае нельзя использовать неправильную дату, например 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; |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |