forum.bitel.ru http://forum.bitel.ru/ |
|
Получение невыгруженных счетов из биллинга. http://forum.bitel.ru/viewtopic.php?f=14&t=10588 |
Страница 1 из 2 |
Автор: | Steper [ 05 июн 2015, 14:56 ] |
Заголовок сообщения: | Получение невыгруженных счетов из биллинга. |
Здравствуйте! Для выгрузки счетов из биллинга в 1с использую bitel.billing.server.bill.action.ActionBill После выгрузки в таблице bill_data планирую ставить у счёта unload_status = 1 (как я понял этот параметр для этого создан) Так, вот, подскажите, пожалуйста, можно как-нибудь выгружать счета, у которых unload_status = 0(только те, которые раньше не выгружались), дабы не передавать и не парсить очень большую XML? В самом ActionBill принимается некий параметр из запроса unloadType. Но далее он нигде не применяется и его передача в запросе никак не влияет на результат. Подскажите, пожалуйста, как быть? Клиент: вер. 6.0 сборка 1380 от 14.05.2015 13:24:14 |
Автор: | Steper [ 08 июн 2015, 13:13 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
Неужели только собственный экшен писать? |
Автор: | skn [ 08 июн 2015, 15:41 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
в хелпдеск |
Автор: | vkulakov [ 08 июн 2015, 16:09 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
Вы хотите сказать, что в стандартной поставке этот функционал не реализован и нужно заказывать доработку через HD? |
Автор: | stark [ 08 июн 2015, 16:42 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
неизвестно , лень разбираться с этим в рамках форума. |
Автор: | dimOn [ 08 июн 2015, 19:31 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
в экшене передаётся unload_type но не используется, всё верно. почему-неизвестно. таким же образом оно и далее не используется. для bill оно и не обновляется никогда (для invoice вроде всё полноценно работает) по всей видимости это ошибка или лишний код (т.е. для bill сразу не предусматривалось), я записал в ближайшее время посмотреть, но если надо срочно - пишите в HD |
Автор: | Steper [ 08 июн 2015, 20:07 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
Всё верно, для invoice работает корректно. |
Автор: | skn [ 08 июн 2015, 20:12 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
vkulakov писал(а): Вы хотите сказать, что в стандартной поставке этот функционал не реализован и нужно заказывать доработку через HD? какой именно функционал? |
Автор: | dimOn [ 08 июн 2015, 20:17 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
Этот параметр вообще какой-то непонятный. Что где откуда и для чего он и где его концы в клиенте биллинга, и почему не доделано - неизвестно. Возможно, его сделали когда-то именно для связи с какими-то внешними системами. Но как минимум с 2007 года его никто не трогал и никто про него не спрашивал. Что делать с ним - непонятно. Пока думаю, что сделать надо работающий фильтр, раз он там предусмотрен и оставить заметку для дальнейших разборов. |
Автор: | Steper [ 08 июн 2015, 20:33 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
На вики есть статья о том, как его выставлять, значит кто-то, да задавался) Действительно, фильтр - самый необходимый функционал для работы с ним на данный момент. |
Автор: | Steper [ 08 июн 2015, 20:39 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
К стати в статье очень смущает строчка "Данную функцию исполняет стандартный акшен: bitel.billing.server.bill.action.ActionSetPayed", которую добавил Admin и выделил красным... |
Автор: | stark [ 08 июн 2015, 20:54 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
Steper писал(а): На вики есть статья о том, как его выставлять, значит кто-то, да задавался) Действительно, фильтр - самый необходимый функционал для работы с ним на данный момент. А вы спросите автора - Cromeshnic. |
Автор: | stark [ 08 июн 2015, 21:04 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
А про это я вообще не понял: Цитата: "Данную функцию исполняет стандартный акшен: bitel.billing.server.bill.action.ActionSetPayed Почему это ActionSetPayed? Это пометка счета оплаченным. Это поле в этом action-е никак не трогается. |
Автор: | Steper [ 08 июн 2015, 21:11 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
stark писал(а): А про это я вообще не понял: Цитата: "Данную функцию исполняет стандартный акшен: bitel.billing.server.bill.action.ActionSetPayed Почему это ActionSetPayed? Это пометка счета оплаченным. Это поле в этом action-е никак не трогается. Так и я о том же... А автор этой строки Admin... |
Автор: | dimOn [ 08 июн 2015, 21:12 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
Это ошибочная строка добавлена |
Автор: | dimOn [ 08 июн 2015, 21:14 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
вы на вики отменяли сначала, обратно зачем-то вернули |
Автор: | Steper [ 08 июн 2015, 21:15 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
dimOn писал(а): вы на вики отменяли сначала, обратно зачем-то вернули Я новичок тут, смотрю - ерунда написана - убрал, потом посмотрел - админ писал, подумал, может чего я не понимаю, отменил ![]() |
Автор: | dimOn [ 09 июн 2015, 13:01 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
выложится вскоре. там значения этого параметра в экшене 1, 2, 3 если что: Код: public static final int UT_NOTUNLOADED = 1;
public static final int UT_UNLOADED = 2; public static final int UT_ALL = 3; |
Автор: | Steper [ 09 июн 2015, 16:11 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
Спасибо! |
Автор: | Steper [ 16 июн 2015, 21:31 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
Возник ещё один вопрос: есть необходимость загружать все невыгруженные счета, а не за какой-то определённый месяц. Но при удалении из запроса параметров "m" и "y" запрос ничего не возвращает. Даже если указываю &from=14.06.2015 &until=16.06.2015&date_type=1. Такой способ вроде бы работал до обновления. Похоже, что теперь при отсутствии параметров y и m неверно формируется SQL. P.S. Мне кажется, что если Код: if ((period.getDateFrom() != null) && (period.getDateTo() != null)) { date = "(" + tDate + ">=? AND " + tDate + "<=?)AND("; } else if ((period.getDateFrom() != null) && (period.getDateTo() == null)) { date = "(" + tDate + ">=?)AND("; } else if ((period.getDateFrom() == null) && (period.getDateTo() != null)) { date = "(" + tDate + "<=?)AND("; } query.append(date); if ((yy > 0) && (mm >= 0)) { query.append("yy=? AND mm=?)"); } поменять на Код: if ((period.getDateFrom() != null) && (period.getDateTo() != null)) { date = "(" + tDate + ">=? AND " + tDate + "<=?)"; } else if ((period.getDateFrom() != null) && (period.getDateTo() == null)) { date = "(" + tDate + ">=?)"; } else if ((period.getDateFrom() == null) && (period.getDateTo() != null)) { date = "(" + tDate + "<=?)"; } query.append(date); if ((yy > 0) && (mm >= 0)) { query.append("AND(yy=? AND mm=?)"); } То всё должно заработать |
Автор: | dimOn [ 16 июн 2015, 22:13 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
т.е. если указать unload_status, то вываливается ошибка? вроде проверял... завтра с утра проверю ещё раз. |
Автор: | Steper [ 17 июн 2015, 12:45 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
Нет, ошибка вываливается, когда НЕ указаны параметры "m" и "y" (месяц и год). |
Автор: | dimOn [ 17 июн 2015, 13:29 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
нет, там перед этим кодом что вы цитировали стоит: Код: query.append( " WHERE (" ); это совсем неправильно: Код: if ((period.getDateFrom() != null) && (period.getDateTo() != null)) { date = "(" + tDate + ">=? AND " + tDate + "<=?)"; } else if ((period.getDateFrom() != null) && (period.getDateTo() == null)) { date = "(" + tDate + ">=?)"; } else if ((period.getDateFrom() == null) && (period.getDateTo() != null)) { date = "(" + tDate + "<=?)"; } потому что тут собирается date, обратите внимание, а не query. последние изменения это не сломали, я проверил ещё раз, так всегда было, потому исправляться не будет. Потому что непонятно что нужно исправить, там переписать весь огромный запрос надо, и в 6.0 по крайней мере это безумие. |
Автор: | vkulakov [ 17 июн 2015, 14:27 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
Думаю, много переписывать не нужно. Можно попробовать заменить такой код: Код: if ((yy > 0) && (mm >= 0)) { query.append("yy=? AND mm=?)"); } на такой Код: if ((yy > 0) && (mm >= 0)) { query.append("yy=? AND mm=?)"); } else { query.append("1=1)"); } т. е., если месяц и год не указаны, то условие yy=? AND mm=? заменится на 1=1, которое всегда true. Костыль, конечно, но никаких побочных эффектов быть не должно. |
Автор: | Steper [ 17 июн 2015, 14:57 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
Прошу прощения за настойчивость, но получение счетов без обязательной привязки к дате или хотя бы без обязательной привязке к конкретному месяцу - очень нужный и довольно разумный функционал. Код: String date = "("; //скобки на условие с датими открываются в любом случае String tDate; if (dateType == 1) { tDate = "create_dt"; } else { tDate = "pay_dt"; } //далее будет добавлено условие с периодом только если указан хотябы один атрибут из запроса (&from=) или (&until=) //соответственно строка перетирается, но скобка всё равно будет открыта "AND(" if ((period.getDateFrom() != null) && (period.getDateTo() != null)) { date = "(" + tDate + ">=? AND " + tDate + "<=?)AND("; } else if ((period.getDateFrom() != null) && (period.getDateTo() == null)) { date = "(" + tDate + ">=?)AND("; } else if ((period.getDateFrom() == null) && (period.getDateTo() != null)) { date = "(" + tDate + "<=?)AND("; } query.append(date); //тут добавляем наше условие к запросу //итого на этом этапе мы имееем или просто "WHERE ((" в случае, если нет переода //или WHERE ((create_dt >=? AND create_dt <=?)AND( // т.е. скобка в любом случае останется открыта, ожидая, что её закроет следующий if // собственно закрываем скобку, при условии, что указан месяц и год, без указания - ошибка синтаксиса if ((yy > 0) && (mm >= 0)) { query.append("yy=? AND mm=?)"); } // ну и соответственно далее следует код, который начинается с "AND", занчит условие какое-то должно быть обязательно, инчаче - ошибка синтаксиса vkulakov написал простое решение, возможно можно добавить пару else if для выборки счетов только по году или месяцу, например Код: if ((yy > 0) && (mm >= 0)) { query.append("yy=? AND mm=?)"); } else if (yy > 0) { query.append("yy=?)"); } else if (mm >= 0) { query.append("mm>=?)"); } else { query.append("1=1)"); } P.S. прошу прощения за предложение с ошибкой в прошлом посте. |
Автор: | dimOn [ 17 июн 2015, 15:33 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
слишком много переписывать в 6.0 - неправильно, ну вариант vkulakov теоретически возможен именно что там получается местами лишняя скобка, т.к. не расчитывалось что не придёт ни даты ни год-месяц |
Автор: | vkulakov [ 17 июн 2015, 16:49 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
А зачем тогда проверки для yy и mm, если не расчитывалось, что они не придут??? Может исправите? Тем более в соседней ветке точно править нужно и обновление выкладывать. |
Автор: | Steper [ 18 июн 2015, 16:12 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
Ребят, ну серьёзно, данный баг сильно искусственно ограничивает возможности модуля. Нет возможности выгрузить счета кроме как за один конкретный месяц, в таблице куча параметров, а всё замыкается на месяце выставления. Не говоря уже о том, что при отсутствие параметра выскакивает эксепшен, который никак не обрабатывается, несмотря на то, что проверка этого параметра присутствует. |
Автор: | stark [ 18 июн 2015, 16:52 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
Исправлено. будет в следующем обновлении. |
Автор: | dimOn [ 19 июн 2015, 15:39 ] |
Заголовок сообщения: | Re: Получение невыгруженных счетов из биллинга. |
Цитата: данный баг сильно искусственно ограничивает возможности модуля Это даже близко не является багом. Вы просто используете экшен способом, которым не предусматривалось
|
Страница 1 из 2 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |