tokone Posted July 7, 2016 · Report post Всем привет. Переделываю шаблон ланбиллинга 2.0.18 для "Акта выполненных работ" под свою специфику для юр. лиц, убираю лишние категории звонков (входящую и все кроме внутригородских) и их начисления в отчете соответственно. Сумму оплаты по одной учетной записи теперь считает правильно, а вот все сумму за все учетные записи не могу сделать верную (с учетом минуса тех категорий, которые убрал). Не могу понять, как выкинуть из цикла переменную %total%, и суммировать по каждой учетной записи ее. Общую сумму хочу описать теперь как %total2%. В *sql не шарю, может быть кто подскажет куда копать. Код исходника (act.txt) и мой вариант (act2.txt) оставляю ниже в файлах. act.txt act2.txt Share this post Link to post Share on other sites More sharing options...
himikrzn Posted July 7, 2016 · Report post Не могу понять, как выкинуть из цикла переменную %total%, и суммировать по каждой учетной записи ее. в цикл добавь vg_id из curent_report, будет по учетным записям цикл делать Share this post Link to post Share on other sites More sharing options...
tokone Posted July 7, 2016 · Report post vg_id уже в цикл, по учетным записям все делит, тут проблем нет. Мне же надо чтобы переменную %total% (это сумма всех услуг по одной учетной записи) в цикле при прохождении каждой учетной записи можно было вынести и потом ее суммировать по всем учетным записям. Т.к. я минусанул в отчете лишние для меня услуги, то общая сумма по всем учетным записям не будет равна %total_summ%, забыл о ней сказать, это сумма всех услуг по всем учетным записям, которая описывается как round(o.curr_summ*@RATE,2) из таблицы orders, ее мне и надо актуализировать из-за выборки. Share this post Link to post Share on other sites More sharing options...
himikrzn Posted July 8, 2016 (edited) · Report post vg_id уже в цикл, по учетным записям все делит, тут проблем нет. Мне же надо чтобы переменную %total% (это сумма всех услуг по одной учетной записи) в цикле при прохождении каждой учетной записи можно было вынести и потом ее суммировать по всем учетным записям. Т.к. я минусанул в отчете лишние для меня услуги, то общая сумма по всем учетным записям не будет равна %total_summ%, забыл о ней сказать, это сумма всех услуг по всем учетным записям, которая описывается как round(o.curr_summ*@RATE,2) из таблицы orders, ее мне и надо актуализировать из-за выборки. тогда попробуй до всех циклов :set @alltotal = 0 в цикле или @total: select %total% :set @alltotal = @alltotal + @total или замени %total% на @total, где присваеваешь значение этой переменной. а потом в цикле %total%: select @total :set @alltotal = @alltotal + @total (во втором примере точно будет работать) и после цикла %alltotal%:select replace(@alltotal,'.',',') или можно без replace %alltotal%:select @alltotal Edited July 8, 2016 by himikrzn Share this post Link to post Share on other sites More sharing options...
tokone Posted July 11, 2016 (edited) · Report post Я уже так делал, только начинается, если в одной учетной записи несколько услуг, то каждая обсчитывается заново и прибавляется к ней еще и сама сумма. Пример приведу ниже. Есть договор на нём 4 учетных записи, назовем их уз1, уз2, уз3, уз4, в каждой из них свои услуги, абонентская плата(ап) и внутигородские звонки(вг), где-то есть, где-то нету. Сумму "ап*" и "вг*" опишем как "сум*", далее: в уз1 есть ап1=сум1 в уз2 есть ап2 и вг2 в уз3 есть ап3 и вг3 в уз4 есть ап4=сум4 Наш запрос выдает почему-то следующие сложения ап+(ап2+вг2+cум2)+(ап3+вг3+cум3)+ап4=сум1+2сум2+2сум3+сум4=Итоговая сумму (которая мне нужна). Получается если в учетной записи больше одной услуги он начинает делать суммирование внутри цикла самой учетной записи. Хотя сумму %total% ("сум*") внутри учетной записи он считает верно, то есть ап2+вг3=сум3. Поэтому хотел вынести сумму по каждой учетной записи, в php можно описать это как $x +=, в sql я даже не знаю. Думаю надо делать дополнительную проверку чтобы он не делал цикл суммирования внутри учетной записи, только не понимаю как еще. Пока писал, нашел косяк, тут два цикла, я делал сумму во второму, который описывает услуги по учетной записи, вывел в первый, теперь все ок, спасибо himikrzn за наводки. итоговый в act4.txt act3.txt act4.txt Edited July 11, 2016 by tokone Share this post Link to post Share on other sites More sharing options...