DECLARE
t_num NUMBER;
t_type NUMBER;
t_name varchar2(20);
t_tv varchar2(20);
abon_inet NUMBER; --абонентская плата за интернет
abon_paket NUMBER; -- абонентская плата за интернет при работе по пакету
abon_tv_optik NUMBER; -- абонентская плата за ТВ по оптике
abon_tv_gpon NUMBER; -- абонплата за ТВ по G-Pon-у
port_rezerv NUMBER; -- сумма за резервирование порта
add_abon NUMBER; -- если больше 0 то абонент подключился в этом месяце
add_abon_sum NUMBER; -- сумма за подключение
del_abon NUMBER; -- если больше 0 то абонент отключился в этом месяце
del_abon_type varchar2(20); -- тип технологии отключенного абонента в этом месяце
add_ktv NUMBER; -- если больше 0 то был наряд на подключение КТВ
add_ktv_sum NUMBER; -- сумма за подключение КТВ
del_ktv NUMBER; -- если больше 0 то был наряд на сняте КТВ
ktv_all NUMBER; -- полная сумма всех начислений по КТВ
inet_all NUMBER; -- полная сумма всех начислений по Интернету
x NUMBER;
z NUMBER;
zz NUMBER;
god NUMBER; -- Начальные установки - год
mes1 NUMBER; -- Начальные установки - месяц
mes2 NUMBER; -- Начальные установки - месяц
dat1 DATE; -- Начальные установки - 1 день месяца
dat2 DATE; -- Начальные установки - 1 день месяца + 1
type_unlim NUMBER; -- тип последней безлимитки
cursor one IS
SELECT p.id FROM shura.population p ORDER BY p.id; --получаем список л\с
BEGIN
-- Начальные установки
mes1:=1;
mes2:=7;
god:=2018;
dat1:=to_date('01-'||to_char(mes1)||'-'||to_char(god),'dd-mm-yyyy');
dat2:=ADD_MONTHS(dat1,1);
UPDATE shura.pev_big_rep SET type_1=0, type_2=0,type_3=0, type_4=0, type_5=0;
DELETE shura.pev_big_rep WHERE gr_id>10;
commit;
FOR c IN one loop --пробегаем по всем л\счетам физиков
--dbms_output.put_line(to_char(c.id));
-- получаем полную сумму начислений за Интернет
inet_all:=0;
SELECT SUM(aa) INTO inet_all FROM (
SELECT nvl(SUM(b.balance),0) aa FROM shura.balance b, shura.tarifficator tt WHERE
b.population_id=c.id AND b.month>=mes1 AND b.month<mes2 AND b.year=god
AND b.tarifficator_id IS NOT NULL AND b.tarifficator_id=tt.id AND tt.one_service_id IN (SELECT os.id FROM shura.one_service os WHERE os.service_type_id=1)
UNION ALL
SELECT nvl(SUM(e.summa),0) aa FROM shura.extra e WHERE e.population_id=c.id
AND e.extra_date>=dat1 AND e.extra_date<dat2 AND e.one_service_id IN (SELECT os.id FROM shura.one_service os WHERE os.service_type_id=1)
UNION ALL
SELECT nvl(SUM(r.summa),0) aa FROM shura.recomp r WHERE r.population_id=c.id
AND r.recomp_date>=dat1 AND r.recomp_date<dat2 AND r.one_service_id IN (SELECT os.id FROM shura.one_service os WHERE os.service_type_id=1)
);
-- рассчитываем, попадает ли клиент в список отключенных в текущем месяце
SELECT COUNT(1) INTO del_abon
FROM shura.inet_drop_order s, shura.port p, shura.router r
WHERE s.execute_date>=dat1 AND s.execute_date<dat2
AND s.population_id=c.id AND s.port_id=p.id AND p.router_id NOT IN (45,7,24) AND p.router_id=r.id;
IF del_abon=1 THEN -- абонент отключился в этом месяце, определяем его тип
dbms_output.put_line(to_char(c.id));
SELECT nvl((SELECT pr.val FROM shura.props pr WHERE pr.props_name_id='УДК Технология' AND pr.object_name='ROUTER_TYPE' AND pr.object_id=r.router_type_id),'-') INTO del_abon_type
FROM shura.inet_drop_order s, shura.port p, shura.router r
WHERE s.execute_date>=dat1 AND s.execute_date<dat2
AND s.population_id=c.id AND s.port_id=p.id AND p.router_id NOT IN (45,7,24) AND p.router_id=r.id;
-- определяем тип безлимитки чтобы в случае пакетной изменить соответсвующе поля
type_unlim:=0;
SELECT COUNT(1) INTO type_unlim FROM (
SELECT a.extra_date dd , a.one_service_id s FROM shura.extra a
WHERE a.extra_date>=add_months(dat1,-8) AND a.extra_date<dat2
AND a.population_id=c.id AND a.summa>0 AND a.one_service_id IN (SELECT iot.one_service_id FROM shura.inet_unlim_type iot) AND a.arch IN ('A','B')
ORDER BY a.extra_date DESC
) WHERE rownum=1;
IF type_unlim=1 THEN
type_unlim:=0;
SELECT ss INTO type_unlim FROM (
SELECT a.extra_date dd , a.one_service_id ss FROM shura.extra a
WHERE a.extra_date>=add_months(dat1,-8) AND a.extra_date<dat2
AND a.population_id=c.id AND a.summa>0 AND a.one_service_id IN (SELECT iot.one_service_id FROM shura.inet_unlim_type iot) AND a.arch IN ('A','B')
ORDER BY a.extra_date DESC
) WHERE rownum=1;
END IF;
IF del_abon_type='Оптика' THEN
UPDATE shura.pev_big_rep SET type_1=type_1+1 WHERE npp=8; --обновляем счетчик кол-ва отключенных клиентов
IF type_unlim IN (453,501,533) THEN -- если оптика по пакету
UPDATE shura.pev_big_rep SET type_1=type_1+1 WHERE npp=17; --обновляем счетчик кол-ва отключенных клиентов
END IF;
END IF;
IF del_abon_type='Смешанный тип' THEN
UPDATE shura.pev_big_rep SET type_2=type_2+1 WHERE npp=8; --обновляем счетчик кол-ва отключенных клиентов
END IF;
IF del_abon_type='Радиоканал' THEN
UPDATE shura.pev_big_rep SET type_3=type_3+1 WHERE npp=8; --обновляем счетчик кол-ва отключенных клиентов
END IF;
IF del_abon_type='Gpon' THEN
UPDATE shura.pev_big_rep SET type_4=type_4+1 WHERE npp=8; --обновляем счетчик кол-ва отключенных клиентов
IF type_unlim IN (519,520) THEN
UPDATE shura.pev_big_rep SET type_4=type_4+1 WHERE npp=17; --обновляем счетчик кол-ва отключенных клиентов
END IF;
END IF;
IF del_abon_type NOT IN ('Оптика','Gpon','Смешанный тип','Радиоканал') THEN
UPDATE shura.pev_big_rep SET type_5=type_5+1 WHERE npp=8; --обновляем счетчик кол-ва отключенных клиентов
END IF;
commit;
END IF;
-- расчитаем попадаем ли этот абонент в подключенные в этом месяце и посчитаем стоимость подключения
SELECT COUNT (1) INTO add_abon FROM shura.inet_set_order s
WHERE s.execute_date>=dat1 AND s.execute_date<dat2 AND s.population_id=c.id AND s.net_plan_id NOT IN (364);
add_abon_sum:=0;
IF add_abon>0 THEN -- если нарядов на установку больше 0, то Считаем сумму подключения
--dbms_output.put_line(to_char(c.id));
SELECT nvl(SUM(ss),0) INTO add_abon_sum FROM (
SELECT nvl(SUM(s.summa),0) ss FROM shura.inet_set_order s
WHERE s.execute_date>=dat1 AND s.execute_date<dat2 AND s.population_id=c.id AND s.net_plan_id NOT IN (364)
UNION ALL
SELECT nvl(SUM(e.summa),0) ss FROM shura.extra e WHERE e.extra_date>=dat1 AND e.extra_date<dat2 AND e.population_id=c.id
AND e.one_service_id IN (340,522,523,114) -- разовые услуги за подключения
);
add_abon:=1; -- один абонент пришел
END IF;
SELECT COUNT(1) INTO t_num -- если есть порт на л\с и это физический порт для интернета, то
FROM shura.port_plan pp, shura.port p, shura.router r, shura.router_type rt
WHERE pp.set_date<=dat2 AND (pp.del_date>=dat2 OR pp.del_date IS NULL )
AND pp.port_id=p.id AND p.router_id=r.id --and r.del_date is null
AND r.router_type_id=rt.id AND r.router_type_id NOT IN (28,5,6) -- убираем криптошлюз и безлимитные порты
AND pp.population_id=c.id AND rownum=1;
IF t_num=0 AND (add_abon=1 OR inet_all<>0)THEN
UPDATE shura.pev_big_rep SET type_5=type_5+inet_all WHERE npp=10; --обновляем сумму ИТОГО для странных абонентов
UPDATE shura.pev_big_rep SET type_5=type_5+1 WHERE npp=9; --обновляем кол-во странных абонентов
UPDATE shura.pev_big_rep SET type_5=type_5+add_abon WHERE npp=7; -- увеличиваем кол-во притока за счет странных абонентов
UPDATE shura.pev_big_rep SET type_5=type_5+add_abon_sum WHERE npp=2; -- увеличиваем сумму за подключение для странных абонентов
INSERT INTO shura.pev_big_rep (GR_ID,type_5) VALUES(c.id,inet_all);
END IF;
IF t_num>0 THEN
-- расчитываем абонентскую плату клиента, чтобы потом подставить в столбец соответсвующий типу подключения С УЧЕТОМ ПЕРЕРАСЧЕТОВ
SELECT SUM(ss) INTO abon_inet FROM (
SELECT nvl(SUM(e.summa),0) ss FROM shura.extra e WHERE e.extra_date>=dat1 AND e.extra_date<dat2
AND e.population_id=c.id AND e.one_service_id IN (SELECT iot.one_service_id FROM shura.inet_unlim_type iot) AND e.arch IN ('A','B')
UNION ALL
SELECT nvl(SUM(e.summa),0) ss FROM shura.recomp e WHERE e.recomp_date>=dat1 AND e.recomp_date<dat2
AND e.population_id=c.id AND e.one_service_id IN (SELECT iot.one_service_id FROM shura.inet_unlim_type iot)
);
--dbms_output.put_line(to_char(abon_inet));
-- расчитываем абонентскую плату клиента если он работает по пакету услуг, чтобы потом подставить в столбец соответсвующий типу подключения
SELECT SUM(ss) INTO abon_paket FROM (
SELECT nvl(SUM(e.summa),0) ss FROM shura.extra e WHERE e.extra_date>=dat1 AND e.extra_date<dat2
AND e.population_id=c.id AND e.one_service_id IN (SELECT iot.one_service_id FROM shura.inet_unlim_type iot) AND e.one_service_id IN (453,501,533,520) AND e.arch IN ('A','B')
UNION ALL
SELECT nvl(SUM(e.summa),0) ss FROM shura.recomp e WHERE e.recomp_date>=dat1 AND e.recomp_date<dat2
AND e.population_id=c.id AND e.one_service_id IN (SELECT iot.one_service_id FROM shura.inet_unlim_type iot) AND e.one_service_id IN (453,501,533,520)
);
---Придумать что делать если абонплата 0 - машина времени
--вообщем, нужно найти тип безлимитки с максимальной датой за последние 6 месяцев - это и будет признаком пакет или нет!
-- получаем тип последней за 6 месяцев безлимитки клиента.
type_unlim:=0;
SELECT COUNT(1) INTO type_unlim FROM (
SELECT a.extra_date dd , a.one_service_id s FROM shura.extra a
WHERE a.extra_date>=add_months(dat1,-8) AND a.extra_date<dat2
AND a.population_id=c.id AND a.summa>0 AND a.one_service_id IN (SELECT iot.one_service_id FROM shura.inet_unlim_type iot) AND a.arch IN ('A','B')
ORDER BY a.extra_date DESC
) WHERE rownum=1;
IF type_unlim=1 THEN
type_unlim:=0;
SELECT ss INTO type_unlim FROM (
SELECT a.extra_date dd , a.one_service_id ss FROM shura.extra a
WHERE a.extra_date>=add_months(dat1,-8) AND a.extra_date<dat2
AND a.population_id=c.id AND a.summa>0 AND a.one_service_id IN (SELECT iot.one_service_id FROM shura.inet_unlim_type iot) AND a.arch IN ('A','B')
ORDER BY a.extra_date DESC
) WHERE rownum=1;
END IF;
--Считаем Резервирование порта
SELECT nvl(SUM(e.summa),0) INTO port_rezerv FROM shura.extra e WHERE e.extra_date>=dat1 AND e.extra_date<dat2 AND e.population_id=c.id AND e.one_service_id=336;
-- Получаем тип порта клиента
SELECT nvl((SELECT pr.val FROM shura.props pr WHERE pr.props_name_id='УДК Технология' AND pr.object_name='ROUTER_TYPE' AND pr.object_id=rt.id),'-') INTO t_name
FROM shura.port_plan pp, shura.port p, shura.router r, shura.router_type rt
WHERE pp.set_date<=dat2 AND (pp.del_date>=dat2 OR pp.del_date IS NULL ) -- ,было and (pp.del_date>=last_day(dat1)
AND pp.port_id=p.id AND p.router_id=r.id --and r.del_date is null
AND r.router_type_id=rt.id AND r.router_type_id NOT IN (28,5,6) -- убираем криптошлюз и безлимитные порты
AND pp.population_id=c.id AND rownum=1;
IF t_name NOT IN ('Оптика','Gpon','Смешанный тип','Радиоканал') THEN
UPDATE shura.pev_big_rep SET type_5=type_5+inet_all WHERE npp=10; --обновляем сумму ИТОГО для странных абонентов
UPDATE shura.pev_big_rep SET type_5=type_5+1 WHERE npp=9; --обновляем кол-во странных абонентов
INSERT INTO shura.pev_big_rep (GR_ID,type_5) VALUES(c.id,inet_all);
END IF;
-- Если тип подключения ОПТИКА
IF t_name='Оптика' THEN
UPDATE shura.pev_big_rep SET type_1=type_1+1 WHERE npp=9; --обновляем счетчик кол-ва клиентов по оптике
UPDATE shura.pev_big_rep SET type_1=type_1+abon_inet WHERE npp=3; -- увеличиваем абонплату
UPDATE shura.pev_big_rep SET type_1=type_1+port_rezerv WHERE npp=5; -- увеличиваем резервирование порта
UPDATE shura.pev_big_rep SET type_1=type_1+add_abon WHERE npp=7; -- увеличиваем кол-во притока
UPDATE shura.pev_big_rep SET type_1=type_1+add_abon_sum WHERE npp=2; -- увеличиваем сумму за подключение
UPDATE shura.pev_big_rep SET type_1=type_1+inet_all WHERE npp=10; -- увеличиваем итоговую сумму
-- select count(1) into t_num from shura.extra e where e.extra_date>=dat1 and e.extra_date<dat2 and e.one_service_id in (453,501,533) and e.summa>0 and e.population_id=c.id;
-- Если клиент работает по пакету
IF type_unlim IN (453,501,533) THEN
UPDATE shura.pev_big_rep SET type_1=type_1+1 WHERE npp=18; -- обновляем счетчик кол-ва клиентов по ПАКЕТУ
UPDATE shura.pev_big_rep SET type_1=type_1+abon_paket WHERE npp=12; -- увеличиваем абонплату если у клиента пакет
UPDATE shura.pev_big_rep SET type_1=type_1+port_rezerv WHERE npp=14; -- увеличиваем резервирование порта по пакету но такого быть не должно обычно
UPDATE shura.pev_big_rep SET type_1=type_1+add_abon WHERE npp=16; -- увеличиваем кол-во притока
UPDATE shura.pev_big_rep SET type_1=type_1+add_abon_sum WHERE npp=11; -- увеличиваем сумму за подключение
UPDATE shura.pev_big_rep SET type_1=type_1+inet_all WHERE npp=19; -- увеличиваем итоговую сумму
END IF;
END IF;
----------------------------------------------------------
-- Если тип подключения G-PON
IF t_name='Gpon' THEN
UPDATE shura.pev_big_rep SET type_4=type_4+1 WHERE npp=9;--обновляем счетчик кол-ва клиентов по G-PON
UPDATE shura.pev_big_rep SET type_4=type_4+abon_inet WHERE npp=3; -- увеличиваем абонплату
UPDATE shura.pev_big_rep SET type_4=type_4+port_rezerv WHERE npp=5; -- увеличиваем резервирование порта
UPDATE shura.pev_big_rep SET type_4=type_4+add_abon WHERE npp=7; -- увеличиваем кол-во притока
UPDATE shura.pev_big_rep SET type_4=type_4+add_abon_sum WHERE npp=2; -- увеличиваем сумму за подключение
UPDATE shura.pev_big_rep SET type_4=type_4+inet_all WHERE npp=10; -- увеличиваем итоговую сумму
-- select count(1) into t_num from shura.extra e where e.extra_date>=dat1 and e.extra_date<dat2 and e.one_service_id in (519,520) and e.summa>0 and e.population_id=c.id;
-- Если клиент работает по пакету
IF type_unlim IN (519,520) THEN
UPDATE shura.pev_big_rep SET type_4=type_4+1 WHERE npp=18;-- обновляем счетчик кол-ва клиентов по ПАКЕТУ
UPDATE shura.pev_big_rep SET type_4=type_4+abon_paket WHERE npp=12; -- увеличиваем абонплату если у клиента пакет
UPDATE shura.pev_big_rep SET type_4=type_4+port_rezerv WHERE npp=14; -- увеличиваем резервирование порта по пакету но такого быть не должно обычно
UPDATE shura.pev_big_rep SET type_4=type_4+add_abon WHERE npp=16; -- увеличиваем кол-во притока
UPDATE shura.pev_big_rep SET type_4=type_4+add_abon_sum WHERE npp=11; -- увеличиваем сумму за подключение
UPDATE shura.pev_big_rep SET type_4=type_4+inet_all WHERE npp=19; -- увеличиваем итоговую сумму
END IF;
END IF;
----------------------------------------------------------
-- Если тип подключения Смешенный
IF t_name='Смешанный тип' THEN
UPDATE shura.pev_big_rep SET type_2=type_2+1 WHERE npp=9;-- обновляем счетчик кол-ва клиентов по Смешанному типу
UPDATE shura.pev_big_rep SET type_2=type_2+abon_inet WHERE npp=3; -- увеличиваем абонплату
UPDATE shura.pev_big_rep SET type_2=type_2+port_rezerv WHERE npp=5; -- увеличиваем резервирование порта
UPDATE shura.pev_big_rep SET type_2=type_2+add_abon WHERE npp=7; -- увеличиваем кол-во притока
UPDATE shura.pev_big_rep SET type_2=type_2+add_abon_sum WHERE npp=2; -- увеличиваем сумму за подключение
UPDATE shura.pev_big_rep SET type_2=type_2+inet_all WHERE npp=10; -- увеличиваем итоговую сумму
END IF;
----------------------------------------------------------
-- Если тип подключения Радиоканал
IF t_name='Радиоканал' THEN
UPDATE shura.pev_big_rep SET type_3=type_3+1 WHERE npp=9;-- обновляем счетчик кол-ва клиентов по Радиоканалу
UPDATE shura.pev_big_rep SET type_3=type_3+abon_inet WHERE npp=3; -- увеличиваем абонплату
UPDATE shura.pev_big_rep SET type_3=type_3+port_rezerv WHERE npp=5; -- увеличиваем резервирование порта
UPDATE shura.pev_big_rep SET type_3=type_3+add_abon WHERE npp=7; -- увеличиваем кол-во притока
UPDATE shura.pev_big_rep SET type_3=type_3+add_abon_sum WHERE npp=2; -- увеличиваем сумму за подключение
UPDATE shura.pev_big_rep SET type_3=type_3+inet_all WHERE npp=10; -- увеличиваем итоговую сумму
END IF;
----------------------------------------------------------
END IF;
commit;
----------------------------------------------------------
-------------------------БЛОК ТВ--------------------------
----------------------------------------------------------
--- Проверяем, а не было ли в месяце наряда на установку КТВ, если был, то получаем стоимость подключения
SELECT COUNT(1) INTO add_ktv FROM shura.set_order a WHERE a.execute_date>=dat1 AND a.execute_date<dat2
AND a.population_id=c.id AND a.tarifficator_id IN (78,181); -- тарифы на подключение по оптике и GPON
add_ktv_sum:=0;
-- если был наряд на подключение, то определяем сумму подключения
IF add_ktv>0 THEN
SELECT SUM(ss) INTO add_ktv_sum FROM (
SELECT nvl(SUM(a.summa),0) ss FROM shura.set_order a WHERE a.execute_date>=dat1 AND a.execute_date<dat2 AND a.population_id=c.id
AND a.tarifficator_id IN (78,181) -- тарифы на подключение по оптике и GPON
UNION ALL
SELECT nvl(SUM(e.summa),0) ss FROM shura.extra e WHERE e.extra_date>=dat1 AND e.extra_date<dat2 AND e.population_id=c.id
AND e.one_service_id IN (343,342,344,256) -- разовые услуги за подключения
);
END IF;
--- Проверяем, а не было ли в месяце наряда на снятие КТВ
SELECT COUNT(1) INTO del_ktv FROM shura.drop_order a WHERE a.execute_date>=dat1 AND a.execute_date<dat2 AND a.population_id=c.id
AND a.tarifficator_id IN (78); -- тарифы на подключение по оптике
IF del_ktv>0 THEN -- если был наряд на сняте
UPDATE shura.pev_big_rep SET type_1=type_1+1 WHERE npp=26;-- Увеличиваем счетчик клиентов
END IF;
SELECT COUNT(1) INTO del_ktv FROM shura.drop_order a WHERE a.execute_date>=dat1 AND a.execute_date<dat2 AND a.population_id=c.id
AND a.tarifficator_id IN (181); -- тарифы на подключение по G-Pon
IF del_ktv>0 THEN -- если был наряд на сняте
UPDATE shura.pev_big_rep SET type_4=type_4+1 WHERE npp=26;-- Увеличиваем счетчик клиентов
END IF;
-- Считаем количество услуг КТВ на л\с абонента
SELECT COUNT(1) INTO t_num FROM shura.month_extra me WHERE me.tarifficator_id IN (78,81,87,88,162,181) AND
--(78,98,139,140,141,147,153,154,162,176,181) and
--78,81,87,88,162,181) and
me.set_date<=last_day(dat1) AND (me.del_date>=last_day(dat1) OR me.del_date IS NULL ) AND me.population_id=c.id AND rownum=1;
-- если услуги есть, то у него КТВ подключено
IF t_num>0 THEN
-- получаем общую сумму всех начислений
ktv_all:=0;
SELECT SUM(aa) INTO ktv_all FROM (
SELECT nvl(SUM(b.balance),0) aa FROM shura.balance b, shura.tarifficator tt WHERE
b.population_id=c.id AND b.month>=mes1 AND b.month<mes2 AND b.year=god
AND b.tarifficator_id IS NOT NULL AND b.tarifficator_id=tt.id AND tt.one_service_id IN (SELECT os.id FROM shura.one_service os WHERE os.service_type_id=3)
UNION ALL
SELECT nvl(SUM(e.summa),0) aa FROM shura.extra e WHERE e.population_id=c.id
AND e.extra_date>=dat1 AND e.extra_date<dat2 AND e.one_service_id IN (SELECT os.id FROM shura.one_service os WHERE os.service_type_id=3)
UNION ALL
SELECT nvl(SUM(r.summa),0) aa FROM shura.recomp r WHERE r.population_id=c.id
AND r.recomp_date>=dat1 AND r.recomp_date<dat2 AND r.one_service_id IN (SELECT os.id FROM shura.one_service os WHERE os.service_type_id=3)
);
-- определяем КТВ по оптике или G-Pon
SELECT nvl((CASE WHEN me.tarifficator_id=181 THEN 'GPON КТВ' ELSE 'Оптика КТВ' END),'-') INTO t_tv
FROM shura.month_extra me WHERE me.tarifficator_id IN (78,81,87,88,162,181) AND me.set_date<=last_day(dat1) AND (me.del_date>=last_day(dat1) OR me.del_date IS NULL )
AND me.population_id=c.id AND rownum=1;
-- Если КТВ по оптике
IF t_tv='Оптика КТВ' THEN
--считаем абонплату с учетом перерасчетов
SELECT SUM(ss) INTO abon_tv_optik FROM (
SELECT nvl(SUM(b.balance),0) ss FROM shura.balance b
WHERE b.month>=mes1 AND b.month<mes2 AND b.year=god AND b.population_id=c.id AND b.tarifficator_id IN (78,81,87,88,162)
UNION ALL
SELECT nvl(SUM(r.summa),0) ss FROM shura.recomp r
WHERE r.recomp_date>=dat1 AND r.recomp_date<dat2 AND r.population_id=c.id AND
r.one_service_id IN (SELECT t.one_service_id FROM shura.tarifficator t WHERE t.id IN (78,81,87,88,162))
);
UPDATE shura.pev_big_rep SET type_1=type_1+1 WHERE npp=27;-- Увеличиваем счетчик клиентов
UPDATE shura.pev_big_rep SET type_1=type_1+abon_tv_optik WHERE npp=21;-- Увеличиваем абонплату
UPDATE shura.pev_big_rep SET type_1=type_1+(ktv_all-(abon_tv_optik+add_ktv_sum)) WHERE npp=22;-- Увеличиваем прочие услуги
UPDATE shura.pev_big_rep SET type_1=type_1+add_ktv WHERE npp=25;-- Увеличиваем счетчик притока
UPDATE shura.pev_big_rep SET type_1=type_1+add_ktv_sum WHERE npp=20;-- Увеличиваем сумму за подключение
commit;
END IF;
----------------------------------------------------------
-- Если КТВ по G-Pon-у
IF t_tv='GPON КТВ' THEN
--считаем абонплату с учетом перерасчетов
SELECT SUM(ss) INTO abon_tv_gpon FROM (
SELECT nvl(SUM(b.balance),0) ss FROM shura.balance b
WHERE b.month>=mes1 AND b.month<mes2 AND b.year=god AND b.population_id=c.id AND b.tarifficator_id IN (181)
UNION ALL
SELECT nvl(SUM(r.summa),0) ss FROM shura.recomp r
WHERE r.recomp_date>=dat1 AND r.recomp_date<dat2 AND r.population_id=c.id
AND r.one_service_id IN (SELECT t.one_service_id FROM shura.tarifficator t WHERE t.id IN (181))
);
UPDATE shura.pev_big_rep SET type_4=type_4+1 WHERE npp=27;-- Увеличиваем счетчик клиентов
UPDATE shura.pev_big_rep SET type_4=type_4+abon_tv_gpon WHERE npp=21;-- Увеличиваем счетчик клиентов
UPDATE shura.pev_big_rep SET type_4=type_4+(ktv_all-(abon_tv_gpon+add_ktv_sum)) WHERE npp=22;-- Увеличиваем прочие услуги
UPDATE shura.pev_big_rep SET type_4=type_4+add_ktv WHERE npp=25;-- Увеличиваем счетчик притока
UPDATE shura.pev_big_rep SET type_4=type_4+add_ktv_sum WHERE npp=20;-- Увеличиваем сумму за подключение
commit;
END IF;
END IF;
END loop;
SELECT SUM(type_1) INTO x FROM shura.pev_big_rep WHERE npp IN (2,3,5);
SELECT type_1 INTO z FROM shura.pev_big_rep WHERE npp=10;
UPDATE shura.pev_big_rep SET type_1=z-x WHERE npp=4;
SELECT SUM(type_2) INTO x FROM shura.pev_big_rep WHERE npp IN (2,3,5);
SELECT type_2 INTO z FROM shura.pev_big_rep WHERE npp=10;
UPDATE shura.pev_big_rep SET type_2=z-x WHERE npp=4;
SELECT SUM(type_3) INTO x FROM shura.pev_big_rep WHERE npp IN (2,3,5);
SELECT type_3 INTO z FROM shura.pev_big_rep WHERE npp=10;
UPDATE shura.pev_big_rep SET type_3=z-x WHERE npp=4;
SELECT SUM(type_4) INTO x FROM shura.pev_big_rep WHERE npp IN (2,3,5);
SELECT type_4 INTO z FROM shura.pev_big_rep WHERE npp=10;
UPDATE shura.pev_big_rep SET type_4=z-x WHERE npp=4;
SELECT SUM(type_1) INTO x FROM shura.pev_big_rep WHERE npp IN (11,12,14);
SELECT type_1 INTO z FROM shura.pev_big_rep WHERE npp=19;
UPDATE shura.pev_big_rep SET type_1=z-x WHERE npp=13;
SELECT SUM(type_4) INTO x FROM shura.pev_big_rep WHERE npp IN (11,12,14);
SELECT type_4 INTO z FROM shura.pev_big_rep WHERE npp=19;
UPDATE shura.pev_big_rep SET type_4=z-x WHERE npp=13;
--корректируем кол-во абонентов на конец месяца
SELECT type_1 INTO x FROM shura.pev_big_rep WHERE npp=8;
SELECT type_1 INTO z FROM shura.pev_big_rep WHERE npp=9;
UPDATE shura.pev_big_rep SET type_1=z-x WHERE npp=9;
--то же самое для Пакетных
SELECT type_1 INTO x FROM shura.pev_big_rep WHERE npp=17;
SELECT type_1 INTO z FROM shura.pev_big_rep WHERE npp=18;
UPDATE shura.pev_big_rep SET type_1=z-x WHERE npp=18;
SELECT type_1 INTO x FROM shura.pev_big_rep WHERE npp=7;
SELECT type_1 INTO z FROM shura.pev_big_rep WHERE npp=8;
SELECT type_1 INTO ZZ FROM shura.pev_big_rep WHERE npp=9;
UPDATE shura.pev_big_rep SET type_1=zz-x+z WHERE npp=6;
SELECT type_2 INTO x FROM shura.pev_big_rep WHERE npp=7;
SELECT type_2 INTO z FROM shura.pev_big_rep WHERE npp=8;
SELECT type_2 INTO ZZ FROM shura.pev_big_rep WHERE npp=9;
UPDATE shura.pev_big_rep SET type_2=zz-x+z WHERE npp=6;
SELECT type_3 INTO x FROM shura.pev_big_rep WHERE npp=7;
SELECT type_3 INTO z FROM shura.pev_big_rep WHERE npp=8;
SELECT type_3 INTO ZZ FROM shura.pev_big_rep WHERE npp=9;
UPDATE shura.pev_big_rep SET type_3=zz-x+z WHERE npp=6;
SELECT type_4 INTO x FROM shura.pev_big_rep WHERE npp=7;
SELECT type_4 INTO z FROM shura.pev_big_rep WHERE npp=8;
SELECT type_4 INTO ZZ FROM shura.pev_big_rep WHERE npp=9;
UPDATE shura.pev_big_rep SET type_4=zz-x+z WHERE npp=6;
SELECT type_1 INTO x FROM shura.pev_big_rep WHERE npp=16;
SELECT type_1 INTO z FROM shura.pev_big_rep WHERE npp=17;
SELECT type_1 INTO ZZ FROM shura.pev_big_rep WHERE npp=18;
UPDATE shura.pev_big_rep SET type_1=zz-x+z WHERE npp=15;
SELECT type_4 INTO x FROM shura.pev_big_rep WHERE npp=16;
SELECT type_4 INTO z FROM shura.pev_big_rep WHERE npp=17;
SELECT type_4 INTO ZZ FROM shura.pev_big_rep WHERE npp=18;
UPDATE shura.pev_big_rep SET type_4=zz-x+z WHERE npp=15;
SELECT type_1 INTO x FROM shura.pev_big_rep WHERE npp=25;
SELECT type_1 INTO z FROM shura.pev_big_rep WHERE npp=26;
SELECT type_1 INTO ZZ FROM shura.pev_big_rep WHERE npp=27;
UPDATE shura.pev_big_rep SET type_1=zz-x+z WHERE npp=24;
SELECT type_4 INTO x FROM shura.pev_big_rep WHERE npp=25;
SELECT type_4 INTO z FROM shura.pev_big_rep WHERE npp=26;
SELECT type_4 INTO ZZ FROM shura.pev_big_rep WHERE npp=27;
UPDATE shura.pev_big_rep SET type_4=zz-x+z WHERE npp=24;
SELECT type_1 INTO x FROM shura.pev_big_rep WHERE npp=20;
SELECT type_1 INTO z FROM shura.pev_big_rep WHERE npp=21;
SELECT type_1 INTO ZZ FROM shura.pev_big_rep WHERE npp=22;
UPDATE shura.pev_big_rep SET type_1=zz+x+z WHERE npp=28;
SELECT type_4 INTO x FROM shura.pev_big_rep WHERE npp=20;
SELECT type_4 INTO z FROM shura.pev_big_rep WHERE npp=21;
SELECT type_4 INTO ZZ FROM shura.pev_big_rep WHERE npp=22;
UPDATE shura.pev_big_rep SET type_4=zz+x+z WHERE npp=28;
commit;
END;
/