Jump to content
Калькуляторы

Lanbilling отчет "Акт" оставить в акте только АП и внутригородские звонки

Всем привет.

 

Переделываю шаблон ланбиллинга 2.0.18 для "Акта выполненных работ" под свою специфику для юр. лиц, убираю лишние категории звонков (входящую и все кроме внутригородских) и их начисления в отчете соответственно.

 

Сумму оплаты по одной учетной записи теперь считает правильно, а вот все сумму за все учетные записи не могу сделать верную (с учетом минуса тех категорий, которые убрал).

Не могу понять, как выкинуть из цикла переменную %total%, и суммировать по каждой учетной записи ее. Общую сумму хочу описать теперь как %total2%.

В *sql не шарю, может быть кто подскажет куда копать.

 

Код исходника (act.txt) и мой вариант (act2.txt) оставляю ниже в файлах.

act.txt

act2.txt

Share this post


Link to post
Share on other sites

Не могу понять, как выкинуть из цикла переменную %total%, и суммировать по каждой учетной записи ее.

в цикл добавь vg_id из curent_report, будет по учетным записям цикл делать

Share this post


Link to post
Share on other sites

vg_id уже в цикл, по учетным записям все делит, тут проблем нет. Мне же надо чтобы переменную %total% (это сумма всех услуг по одной учетной записи) в цикле при прохождении каждой учетной записи можно было вынести и потом ее суммировать по всем учетным записям.

Т.к. я минусанул в отчете лишние для меня услуги, то общая сумма по всем учетным записям не будет равна %total_summ%, забыл о ней сказать, это сумма всех услуг по всем учетным записям, которая описывается как round(o.curr_summ*@RATE,2) из таблицы orders, ее мне и надо актуализировать из-за выборки.

Share this post


Link to post
Share on other sites

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 by himikrzn

Share this post


Link to post
Share on other sites

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

 

Пример приведу ниже.

 

Есть договор на нём 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 by tokone

Share this post


Link to post
Share on other sites

Guest
This topic is now closed to further replies.