Отчёты для СОРМ 3

Skip to end of metadata
Go to start of metadata
Вы просматриваете старую версию данной страницы. Смотрите текущую версию. Сравнить с текущим  |   просмотр истории страницы

Выгрузка на СОРМ3

Для автоматизации передачи отчетов на СОРМ3 следует:

  1. Удалить в начале select '' from abonents UNION
  2. Открыть текстовый файл в редакторе и привести к следующему виду set heading off; <ТЕКСТ ЗАПРОСА>;, например:
    set heading off; select * from abonents;
  3. Сохранить в пределах контейнера /app/asr_billing, например /app/asr_billing/root/sorm3.sql
  4. Выполнить отчет следующей командой:
    chroot /app/asr_billing isql-fb 169.254.30.50:/var/db/billing.gdb -p servicem -u SYSDBA -i /root/sorm3.sql > /app/asr_billing/root/sorm3-export.csv
  5. Любым удобным способом наладить автоматическое выполнение и передачу результата запроса в СОРМ3 (например, с помощью cron отправлять файл утилитой curl)

Отчеты

1. Отчёт по заключенным договорам на оказание услуг связи c использованием только стандартных реквизитов.

select '' from abonents 
UNION 
select distinct '"' || 
U.LOGIN || '";"' || 
UF_IP2STRING(U.IP) || '";"' || 
U.MAC || '";"' ||  
CAST(lpad(EXTRACT(DAY FROM a.create_date),2,'0') AS varchar(2))||'.'|| CAST(lpad(EXTRACT(MONTH FROM a.create_date),2,'0') AS varchar(2))||'.'|| EXTRACT(YEAR FROM a.create_date) || ' 00:00:00' || '";"' || 
A.CONTRACT_NUMBER  || '";"' || 
case when a.id in (select distinct abonent_id from abonents_block where (b_own = 1 or b_admin = 1 or b_sys = 1 or b_own2 = 1)) then	'1' else '0' end || '";"' ||  
CAST(lpad(EXTRACT(DAY FROM a.activate_date),2,'0') AS varchar(2))||'.'|| CAST(lpad(EXTRACT(MONTH FROM a.activate_date),2,'0') AS varchar(2))||'.'|| EXTRACT(YEAR FROM a.activate_date) || ' 00:00:00";"' ||  
case 
	when a.id in (select distinct abonent_id from abonents_block where (b_own = 1 or b_admin = 1 or b_sys = 1 or b_own2 = 1)) then	
		(select first 1 CAST(lpad(EXTRACT(DAY FROM abb.b_date),2,'0') AS varchar(2))||'.'|| CAST(lpad(EXTRACT(MONTH FROM abb.b_date),2,'0') AS varchar(2))||'.'|| EXTRACT(YEAR FROM abb.b_date) || ' 00:00:00' from abonents_block abb where abb.abonent_id = a.id and (b_own = 1 or b_admin = 1 or b_sys = 1 or b_own2 = 1))
	else 
		'' end ||

'";"' || 
A.COMPANY || '";' || 

case when a.company=0 then

	'"1";"";"";"";"' || 
	A.NAME || '";"' || 
	coalesce(av22.attribute_value,'') || '";"1";"";"";"";"' || 

	iif(
		(coalesce(av14.attribute_value,'') || coalesce(av13.attribute_value,'') || coalesce(av16.attribute_value,'') || coalesce(av17.attribute_value,'')) <> '', iif(coalesce(av14.attribute_value,'') <> '', av14.attribute_value,'') || iif(coalesce(av13.attribute_value,'') <> '', ' ' || av13.attribute_value,'') || iif(coalesce(av16.attribute_value,'') <> '', ' ' || av16.attribute_value,'') || iif(coalesce(av17.attribute_value,'') <> '', ' ' || av17.attribute_value,'') || 
		iif(coalesce(av15.attribute_value,'') <> '', ' Адрес регистрации: ' || (select IIF(coalesce(h.CITY, '') <> '', h.CITY || ' ', '')  || IIF(coalesce(h.STREET,'') <> '',  h.STREET || ' ', '') ||  coalesce(h.S_NUMBER,'') || IIF(coalesce(h.S_LITER,'') <> '', '/' || h.S_LITER, '') || IIF(coalesce(a.A_HOME_NUMBER, '') <> '', ' ' ||  a.A_HOME_NUMBER,'') from homes h where h.id=av15.attribute_value),' Адрес регистрации не заполнен')
	, '-')

	|| '";"1";"' || coalesce(av7.attribute_value,'') || '";"' || coalesce(av6.attribute_value,'') || '";' 

else '"";"";"";"";"";"";"";"";"";"";"";"";"";"";"' end || 

case when a.company = 1 then

	coalesce(av2.attribute_value,'')  || '";"' || coalesce(av4.attribute_value,'')  || '";"' || coalesce(av32.attribute_value,'-') || '";"' || coalesce(av1.attribute_value,'') || '";"' || coalesce(av7.attribute_value,'') || '";"' || coalesce(av6.attribute_value,'') || coalesce(av6.attribute_value,'')  || ';'

else '"";"";"";"";"";"";' end

|| '"1";"";"";"";"";"";"";"";"";"";' || 
IIF(a.home_id > 0, '"' || IIF(coalesce(h.CITY, '') <> '', h.CITY || ' ', '')  || IIF(coalesce(h.STREET,'') <> '',  h.STREET || ' ', '') ||  coalesce(h.S_NUMBER,'') || IIF(coalesce(h.S_LITER,'') <> '', '/' || h.S_LITER, '') || IIF(coalesce(a.A_HOME_NUMBER, '') <> '', ' ' ||  a.A_HOME_NUMBER,'')  || '"', '"-"') || 
';"1";"";"";"";"";"";"";"";"";"";' ||
IIF(a.home_id > 0, '"' || IIF(coalesce(h.CITY, '') <> '', h.CITY || ' ', '')  || IIF(coalesce(h.STREET,'') <> '',  h.STREET || ' ', '') ||  coalesce(h.S_NUMBER,'') || IIF(coalesce(h.S_LITER,'') <> '', '/' || h.S_LITER, '') || IIF(coalesce(a.A_HOME_NUMBER, '') <> '', ' ' ||  a.A_HOME_NUMBER,'')  || '"', '"-"')

from ABONENTS A
left join USERS U on A.ID = U.ABONENT_ID
left join HOMES H on A.HOME_ID = H.ID
left join TARIF T on A.TARIF_ID=T.ID
left join ATTRIBUTE_VALUES as av1 on a.id=av1.ABONENT_ID and av1.ATTRIBUTE_ID=1
left join ATTRIBUTE_VALUES as av2 on a.id=av2.ABONENT_ID and av2.ATTRIBUTE_ID=2
left join ATTRIBUTE_VALUES as av4 on a.id=av4.ABONENT_ID and av4.ATTRIBUTE_ID=4
left join ATTRIBUTE_VALUES as av6 on a.id=av6.ABONENT_ID and av6.ATTRIBUTE_ID=6
left join ATTRIBUTE_VALUES as av7 on a.id=av7.ABONENT_ID and av7.ATTRIBUTE_ID=7
left join ATTRIBUTE_VALUES as av13 on a.id=av13.ABONENT_ID and av13.ATTRIBUTE_ID=13
left join ATTRIBUTE_VALUES as av14 on a.id=av14.ABONENT_ID and av14.ATTRIBUTE_ID=14
left join ATTRIBUTE_VALUES as av16 on a.id=av16.ABONENT_ID and av16.ATTRIBUTE_ID=16
left join ATTRIBUTE_VALUES as av17 on a.id=av17.ABONENT_ID and av17.ATTRIBUTE_ID=17
left join ATTRIBUTE_VALUES as av15 on a.id=av15.ABONENT_ID and av15.ATTRIBUTE_ID=15
left join ATTRIBUTE_VALUES as av22 on a.id=av22.ABONENT_ID and av22.ATTRIBUTE_ID=22
left join ATTRIBUTE_VALUES as av25 on a.id=av25.ABONENT_ID and av25.ATTRIBUTE_ID=25
left join ATTRIBUTE_VALUES as av32 on a.id=av32.ABONENT_ID and av32.ATTRIBUTE_ID=32
left join abonents_block ab on ab.abonent_id=a.id
where A.IS_FOLDER=0
and a.parent_id not in (244)
and a.deleted=0	
and a.id is not null

Тот же отчёт, в который попадает только информация, добавленная за последние сутки

select distinct '"' || 
U.LOGIN || '";"' || 
UF_IP2STRING(U.IP) || '";"' || 
U.MAC || '";"' ||  
CAST(lpad(EXTRACT(DAY FROM a.create_date),2,'0') AS varchar(2))||'.'|| CAST(lpad(EXTRACT(MONTH FROM a.create_date),2,'0') AS varchar(2))||'.'|| EXTRACT(YEAR FROM a.create_date) || ' 00:00:00' || '";"' || 
A.CONTRACT_NUMBER  || '";"' || 
case when a.id in (select distinct abonent_id from abonents_block where (b_own = 1 or b_admin = 1 or b_sys = 1 or b_own2 = 1)) then	'1' else '0' end || '";"' ||  
CAST(lpad(EXTRACT(DAY FROM a.activate_date),2,'0') AS varchar(2))||'.'|| CAST(lpad(EXTRACT(MONTH FROM a.activate_date),2,'0') AS varchar(2))||'.'|| EXTRACT(YEAR FROM a.activate_date) || ' 00:00:00";"' ||  
case 
	when a.id in (select distinct abonent_id from abonents_block where (b_own = 1 or b_admin = 1 or b_sys = 1 or b_own2 = 1)) then	
		(select first 1 CAST(lpad(EXTRACT(DAY FROM abb.b_date),2,'0') AS varchar(2))||'.'|| CAST(lpad(EXTRACT(MONTH FROM abb.b_date),2,'0') AS varchar(2))||'.'|| EXTRACT(YEAR FROM abb.b_date) || ' 00:00:00' from abonents_block abb where abb.abonent_id = a.id and (b_own = 1 or b_admin = 1 or b_sys = 1 or b_own2 = 1))
	else 
		'' end ||

'";"' || 
A.COMPANY || '";' || 

case when a.company=0 then

	'"1";"";"";"";"' || 
	A.NAME || '";"' || 
	coalesce(av22.attribute_value,'') || '";"1";"";"";"";"' || 

	iif(
		(coalesce(av14.attribute_value,'') || coalesce(av13.attribute_value,'') || coalesce(av16.attribute_value,'') || coalesce(av17.attribute_value,'')) <> '', iif(coalesce(av14.attribute_value,'') <> '', av14.attribute_value,'') || iif(coalesce(av13.attribute_value,'') <> '', ' ' || av13.attribute_value,'') || iif(coalesce(av16.attribute_value,'') <> '', ' ' || av16.attribute_value,'') || iif(coalesce(av17.attribute_value,'') <> '', ' ' || av17.attribute_value,'') || 
		iif(av15.attribute_value > 0, ' Адрес регистрации: ' || (select IIF(coalesce(h.CITY, '') <> '', h.CITY || ' ', '')  || IIF(coalesce(h.STREET,'') <> '',  h.STREET || ' ', '') ||  coalesce(h.S_NUMBER,'') || IIF(coalesce(h.S_LITER,'') <> '', '/' || h.S_LITER, '') || IIF(coalesce(a.A_HOME_NUMBER, '') <> '', ' ' ||  a.A_HOME_NUMBER,'') from homes h where h.id=av15.attribute_value),' Адрес регистрации не заполнен')
	, '-')

	|| '";"1";"' || coalesce(av7.attribute_value,'') || '";"' || coalesce(av6.attribute_value,'') || '";' 

else '"";"";"";"";"";"";"";"";"";"";"";"";"";"";"' end || 

case when a.company = 1 then

	coalesce(av2.attribute_value,'')  || '";"' || coalesce(av4.attribute_value,'')  || '";"' || coalesce(av32.attribute_value,'-') || '";"' || coalesce(av1.attribute_value,'') || '";"' || coalesce(av7.attribute_value,'') || '";"' || coalesce(av6.attribute_value,'') || coalesce(av6.attribute_value,'')  || ';'

else '"";"";"";"";"";"";' end

|| '"1";"";"";"";"";"";"";"";"";"";' || 
IIF(a.home_id > 0, '"' || IIF(coalesce(h.CITY, '') <> '', h.CITY || ' ', '')  || IIF(coalesce(h.STREET,'') <> '',  h.STREET || ' ', '') ||  coalesce(h.S_NUMBER,'') || IIF(coalesce(h.S_LITER,'') <> '', '/' || h.S_LITER, '') || IIF(coalesce(a.A_HOME_NUMBER, '') <> '', ' ' ||  a.A_HOME_NUMBER,'')  || '"', '"-"') || 
';"1";"";"";"";"";"";"";"";"";"";' ||
IIF(a.home_id > 0, '"' || IIF(coalesce(h.CITY, '') <> '', h.CITY || ' ', '')  || IIF(coalesce(h.STREET,'') <> '',  h.STREET || ' ', '') ||  coalesce(h.S_NUMBER,'') || IIF(coalesce(h.S_LITER,'') <> '', '/' || h.S_LITER, '') || IIF(coalesce(a.A_HOME_NUMBER, '') <> '', ' ' ||  a.A_HOME_NUMBER,'')  || '"', '"-"')

from ABONENTS A
left join USERS U on A.ID = U.ABONENT_ID
left join HOMES H on A.HOME_ID = H.ID
left join TARIF T on A.TARIF_ID=T.ID
left join ATTRIBUTE_VALUES as av1 on a.id=av1.ABONENT_ID and av1.ATTRIBUTE_ID=1
left join ATTRIBUTE_VALUES as av2 on a.id=av2.ABONENT_ID and av2.ATTRIBUTE_ID=2
left join ATTRIBUTE_VALUES as av4 on a.id=av4.ABONENT_ID and av4.ATTRIBUTE_ID=4
left join ATTRIBUTE_VALUES as av6 on a.id=av6.ABONENT_ID and av6.ATTRIBUTE_ID=6
left join ATTRIBUTE_VALUES as av7 on a.id=av7.ABONENT_ID and av7.ATTRIBUTE_ID=7
left join ATTRIBUTE_VALUES as av13 on a.id=av13.ABONENT_ID and av13.ATTRIBUTE_ID=13
left join ATTRIBUTE_VALUES as av14 on a.id=av14.ABONENT_ID and av14.ATTRIBUTE_ID=14
left join ATTRIBUTE_VALUES as av16 on a.id=av16.ABONENT_ID and av16.ATTRIBUTE_ID=16
left join ATTRIBUTE_VALUES as av17 on a.id=av17.ABONENT_ID and av17.ATTRIBUTE_ID=17
left join ATTRIBUTE_VALUES as av15 on a.id=av15.ABONENT_ID and av15.ATTRIBUTE_ID=15
left join ATTRIBUTE_VALUES as av22 on a.id=av22.ABONENT_ID and av22.ATTRIBUTE_ID=22
left join ATTRIBUTE_VALUES as av25 on a.id=av25.ABONENT_ID and av25.ATTRIBUTE_ID=25
left join ATTRIBUTE_VALUES as av32 on a.id=av32.ABONENT_ID and av32.ATTRIBUTE_ID=32
left join abonents_block ab on ab.abonent_id=a.id
where A.IS_FOLDER=0
and (u.login in (select uh.login from users_history uh where uh.time_changed between  (current_timestamp - 1) and current_timestamp) 
or a.id in (select ah.abonents_id from abonents_history ah where ah.time_changed between  (current_timestamp - 1) and current_timestamp))
and a.parent_id not in (244)
and a.deleted=0	
and a.id is not null

2. Активированные пользователями дополнительные услуги (услуги, не включенные в тариф) services без учета системных обещанных платежей.

Формат "логин";"номер договора";"идентификатор услуги";"дата и время подключения услуги";"дата и время отключения";""

set heading off; select distinct
     '"' || 
     (select first 1 U.LOGIN from users u where u.abonent_id = a.id) || '";"' || 
     A.CONTRACT_NUMBER || '";"' || 
     UU.USLUGA_ID || '";"' || 
     CAST(lpad(EXTRACT(DAY FROM  UU.ENABLE_DATE),2,'0') AS varchar(2))||'.'|| CAST(lpad(EXTRACT(MONTH FROM  UU.ENABLE_DATE),2,'0') AS varchar(2))||'.'|| EXTRACT(YEAR FROM  UU.ENABLE_DATE) || ' 00:00:00' || '";"'|| coalesce((CAST(lpad(EXTRACT(DAY FROM  UU.END_TIME),2,'0') AS varchar(2))||'.'|| CAST(lpad(EXTRACT(MONTH FROM  UU.END_TIME),2,'0') AS varchar(2))||'.'|| EXTRACT(YEAR FROM  UU.END_TIME) || ' ' || EXTRACT(HOUR FROM  UU.END_TIME) || ':' || '00:00' ), '') || '";""'
from ABONENTS A
left join  USERS_USLUGA UU on UU.ABONENT_ID=A.ID
where
	A.IS_FOLDER=0 and 
	A.PARENT_ID!=244 and 
	A.DELETED=0 and
	UU.ENABLE_DATE is not null and 
	UU.USLUGA_ID!=-4 and 
	UU.USLUGA_ID!=-3
order by A.NAME;

Тот же отчёт, который выводит только услуги подключенные за последний час

set heading off; select distinct
     '"' || 
     (select first 1 U.LOGIN from users u where u.abonent_id = a.id) || '";"' || 
     A.CONTRACT_NUMBER || '";"' || 
     UU.USLUGA_ID || '";"' || 
     CAST(lpad(EXTRACT(DAY FROM  UU.ENABLE_DATE),2,'0') AS varchar(2))||'.'|| CAST(lpad(EXTRACT(MONTH FROM  UU.ENABLE_DATE),2,'0') AS varchar(2))||'.'|| EXTRACT(YEAR FROM  UU.ENABLE_DATE) || ' 00:00:00' || '";"'|| coalesce((CAST(lpad(EXTRACT(DAY FROM  UU.END_TIME),2,'0') AS varchar(2))||'.'|| CAST(lpad(EXTRACT(MONTH FROM  UU.END_TIME),2,'0') AS varchar(2))||'.'|| EXTRACT(YEAR FROM  UU.END_TIME) || ' ' || EXTRACT(HOUR FROM  UU.END_TIME) || ':' || '00:00' ), '') || '";""'
from ABONENTS A
left join  USERS_USLUGA UU on UU.ABONENT_ID=A.ID
where
	A.IS_FOLDER=0 and 
	A.PARENT_ID!=244 and 
	A.DELETED=0 and
	UU.ENABLE_DATE is not null and 
	UU.USLUGA_ID!=-4 and 
	UU.USLUGA_ID!=-3
	and uu.id in (select uuh.users_usluga_id from users_usluga_history uuh where uuh.time_changed between  dateadd (-1 hour to current_timestamp) and current_timestamp)
order by A.NAME;

3. Пополнение баланса личного счета абонента обобщенная информация.

Отчёт выводит информацию в виде "1";"идентификатор способа оплаты";"номер договора ";"статический IP-адрес";"дата и время пополнения баланса";"сумма";""
Идентификаторы перечислены в "Справочнике способов оплаты (пополнения баланса)" (далее в статье) и учитывает все интегрированные в Carbon Billing платежные системы в стабильной ветке на 09.06.2017. Если на момент интеграции используемая Вами платежная система отсутствует с правочнике и не учитывается в отчете, обратитесь в техпожжержку по вопросы актуализации отчета.

set heading off; select
        '"1";"' ||
        coalesce(case
                when fo.operator_name = 'CITY_PAY' then '1'
                when fo.operator_name = 'EXPRESS_VOLGA' then '2'
                when fo.operator_name = 'ForwardMobile' then '3'
                when fo.operator_name = 'JCC' then '4'
                when fo.operator_name = 'Kassa24' then '5'
                when fo.operator_name = 'KAZKOMBANK' then '6'
                when fo.operator_name = 'Krasplat' then '7'
                when fo.operator_name = 'MINBANK' then '8'
                when fo.operator_name = 'MKB_OSMP' then '9'
                when fo.operator_name = 'OSMP_Amigo' then '10'
                when fo.operator_name = 'OSMP_CHECK' then '11'
                when fo.operator_name = 'OSMP_DELTAPAY' then '12'
                when fo.operator_name = 'OSMP_EXPRESS_OPLATA' then '13'
                when fo.operator_name = 'OSMP_INTERPAY' then '14'
                when fo.operator_name = 'OSMP_MOROZOV' then '15'
                when fo.operator_name = 'OSMP_QIWI' then '16'
                when fo.operator_name = 'OSMP_SBRF' then '17'
                when fo.operator_name = 'OSMP_SIPAY' then '18'
                when fo.operator_name = 'PAYANYWAY' then '19'
                when fo.operator_name = 'Payfon_phone' then '20'
                when fo.operator_name = 'PAYMASTER' then '21'
                when fo.operator_name = 'PAYNET_UZ' then '22'
                when fo.operator_name = 'QIWI_OSMP' then '23'
                when fo.operator_name = 'Qiwiwallet' then '24'
                when fo.operator_name = 'SBERBANK_ACQ' then '25'
                when fo.operator_name = 'SBRF_BS' then '26'
                when fo.operator_name = 'TelePay' then '27'
                when fo.operator_name = 'UBRIR' then '28'
                when fo.operator_name = 'UCS_ACQ' then '29'
                when fo.operator_name = 'Uniteller' then '30'
                when fo.operator_name = 'UnitellerAutopay' then '31'
                when fo.operator_name = 'XPLAT' then '32'
                when fo.operator_name is null then '33'
                else '-'
        end,'-')
         || '";"' ||
        a.contract_number || '";"' ||
        coalesce((select first 1 uf_ip2string(ip) from users u where u.abonent_id = a.id and u.ip is not null),'-') || '";"' ||
        CAST(lpad(EXTRACT(DAY FROM  fo.OP_DATE),2,'0') AS varchar(2))||'.'|| CAST(lpad(EXTRACT(MONTH FROM  fo.OP_DATE),2,'0') AS varchar(2))||'.'|| EXTRACT(YEAR FROM  fo.OP_DATE) || ' ' || CAST(lpad(EXTRACT(hour FROM  fo.OP_DATE),2,'0') AS varchar(2))||':'|| CAST(lpad(EXTRACT(minute FROM  fo.OP_DATE),2,'0') AS varchar(2))||':'|| '00";"' ||
        cast(fo.op_summa/10000000000.00 as varchar(40)) || '";"' ||
        coalesce(fo.DESCR,'') || '"'
from
        finance_operations fo
join
        abonents a
        on fo.abonent_id = a.id
where
        fo.abonent_id is not null and
        fo.op_type = 2 and
        fo.storno =  0 and
        a.deleted = 0
order by fo.op_date;

Тот же отчет, выводящий пополнения баланса за последний час

set heading off; select
        '"1";"' ||
        coalesce(case
                when fo.operator_name = 'CITY_PAY' then '1'
                when fo.operator_name = 'EXPRESS_VOLGA' then '2'
                when fo.operator_name = 'ForwardMobile' then '3'
                when fo.operator_name = 'JCC' then '4'
                when fo.operator_name = 'Kassa24' then '5'
                when fo.operator_name = 'KAZKOMBANK' then '6'
                when fo.operator_name = 'Krasplat' then '7'
                when fo.operator_name = 'MINBANK' then '8'
                when fo.operator_name = 'MKB_OSMP' then '9'
                when fo.operator_name = 'OSMP_Amigo' then '10'
                when fo.operator_name = 'OSMP_CHECK' then '11'
                when fo.operator_name = 'OSMP_DELTAPAY' then '12'
                when fo.operator_name = 'OSMP_EXPRESS_OPLATA' then '13'
                when fo.operator_name = 'OSMP_INTERPAY' then '14'
                when fo.operator_name = 'OSMP_MOROZOV' then '15'
                when fo.operator_name = 'OSMP_QIWI' then '16'
                when fo.operator_name = 'OSMP_SBRF' then '17'
                when fo.operator_name = 'OSMP_SIPAY' then '18'
                when fo.operator_name = 'PAYANYWAY' then '19'
                when fo.operator_name = 'Payfon_phone' then '20'
                when fo.operator_name = 'PAYMASTER' then '21'
                when fo.operator_name = 'PAYNET_UZ' then '22'
                when fo.operator_name = 'QIWI_OSMP' then '23'
                when fo.operator_name = 'Qiwiwallet' then '24'
                when fo.operator_name = 'SBERBANK_ACQ' then '25'
                when fo.operator_name = 'SBRF_BS' then '26'
                when fo.operator_name = 'TelePay' then '27'
                when fo.operator_name = 'UBRIR' then '28'
                when fo.operator_name = 'UCS_ACQ' then '29'
                when fo.operator_name = 'Uniteller' then '30'
                when fo.operator_name = 'UnitellerAutopay' then '31'
                when fo.operator_name = 'XPLAT' then '32'
                when fo.operator_name is null then '33'
                else '-'
        end,'-')
         || '";"' ||
        a.contract_number || '";"' ||
        coalesce((select first 1 uf_ip2string(ip) from users u where u.abonent_id = a.id and u.ip is not null),'-') || '";"' ||
        CAST(lpad(EXTRACT(DAY FROM  fo.OP_DATE),2,'0') AS varchar(2))||'.'|| CAST(lpad(EXTRACT(MONTH FROM  fo.OP_DATE),2,'0') AS varchar(2))||'.'|| EXTRACT(YEAR FROM  fo.OP_DATE) || ' ' || CAST(lpad(EXTRACT(hour FROM  fo.OP_DATE),2,'0') AS varchar(2))||':'|| CAST(lpad(EXTRACT(minute FROM  fo.OP_DATE),2,'0') AS varchar(2))||':'|| '00";"' ||
        cast(fo.op_summa/10000000000.00 as varchar(40)) || '";"' ||
        coalesce(fo.DESCR,'') || '"'
from
        finance_operations fo
join
        abonents a
        on fo.abonent_id = a.id
where
        fo.abonent_id is not null and
        fo.op_type = 2 and
        fo.storno =  0 and
        a.deleted = 0 and
        fo.op_date between  dateadd (-1 hour to current_timestamp) and current_timestamp
order by fo.op_date;

4. Отчёт выводит дополнительные услуги

Формат "идентификатор услуги ";"название/обозначение в Вашей системе";"дата создания услуги в биллинге";"";"описание";

set heading off;
select 
	'"' || 
	usl.id || '";"' ||
	usl.NAME || '";"' ||
	(select first 1 
		cast(lpad(extract(day from time_changed),2,'0') as varchar(2)) || '.' || 
		cast(lpad(extract(month from time_changed),2,'0') as varchar(2)) || '.' || 
		extract(year from time_changed) from usluga_history where usluga_id = usl.id) ||
		' 00:00:00";"' ||
	iif(usl.deleted > 0,
		(select first 1 
			cast(lpad(extract(day from time_changed),2,'0') as varchar(2)) || '.' || 
			cast(lpad(extract(month from time_changed),2,'0') as varchar(2)) || '.' || 
			extract(year from time_changed) from usluga_history where usluga_id = usl.id order by time_changed desc) ||
			' 00:00:00";"',
		'";"') ||
	coalesce(usl.comments,'') || '"'
from 
	usluga usl
where
	usl.system_type != 13 and
	usl.id in (select usluga_id from usluga_history union distinct select usluga_id from users_usluga where deleted = 0 and abonent_id is not null)
order by id;

Тот же отчёт, выводящий услуги, созданные за прошедшие сутки:

set heading off;
select 
	'"' || 
	usl.id || '";"' ||
	usl.NAME || '";"' ||
	(select first 1 
		cast(lpad(extract(day from time_changed),2,'0') as varchar(2)) || '.' || 
		cast(lpad(extract(month from time_changed),2,'0') as varchar(2)) || '.' || 
		extract(year from time_changed) from usluga_history where usluga_id = usl.id) ||
		' 00:00:00";"' ||
	iif(usl.deleted > 0,
		(select first 1 
			cast(lpad(extract(day from time_changed),2,'0') as varchar(2)) || '.' || 
			cast(lpad(extract(month from time_changed),2,'0') as varchar(2)) || '.' || 
			extract(year from time_changed) from usluga_history where usluga_id = usl.id order by time_changed desc) ||
			' 00:00:00";"',
		'";"') ||
	coalesce(usl.comments,'') || '"'
from 
	usluga usl
where
	usl.system_type != 13 and
	usl.id in (select usluga_id from usluga_history union distinct select usluga_id from users_usluga where deleted = 0 and abonent_id is not null) and
	(id in (select usluga_id from usluga_history where time_changed between  (current_timestamp - 1) and current_timestamp));
order by id;

Статичные данные для справочников

Некоторые данные, выгружаемые на СОРМ, невозможно получить по средством системы отчетов по по той или иной причине. Где-то это несоотвествие логики БД СОРМ3 и БД Carbon Billing. Так же часть данных статична и создавать для этого отчет нецелесообразно. Некоторые данные, как например план адресации или список шлюзов, могут в биллинге вообще не заполняться.

Справочник типов документов, удостоверяющих личность

В Carbon Billing 5 нет как такового справочника документов удостоверяющих личность. Для этого существуют [реквизиты].
Предустановленные реквизиты есть только для одного типа - Паспорт гражданина РФ. Ниже приведен пример содержимого csv с типами документов:

"1";"01.01.2017";"";"Паспорт РФ"

Справочник IP-плана адресации

Эти данные строго индивидуальны для каждого оператора связи. Теоретический, если справочник IP-пулов совпадает с планом адрессации, можно составить отчет (в даном примере не рассматривается)

"Серая сеть";"10.0.0.0";"8";"01.01.2017";"" 
"Белая сеть";"8.8.0.0";"16";"01.01.2017";""

Справочник способов оплаты (пополнения баланса)

Примечания:

  • Приход денежных средств в Carbon Billing - это тип финансовой операции.
  • Финансовые операции хранятся в таблице FINANCE_OPERATIONS, Приход - в поле OP_TYPE, значение = 2 (целочисленное).
  • При проведении платежа через платежную систему, поле DESCR заполняются соответствующим идентификатором, представляющим из себя мнемоническое обозначение оператора (название).
  • При проведении платежа через веб-кассу или интерфейс администратора биллинга, DESCR доступно для свободного редактирования.

Эта информация требуется для отчета о пополнении баланса, в которм требуется указать идентификатор типа оплаты, который должен представлять из себя число. В справочнике способов оплаты будут представлены всевозможные идентификаторы платежных систем. Последний идентификатор - пополнение наличными. В отчете о пополнении баланса все, что не подходит под тот или иной шаблон, будет учтено как пополнение наличными.

При заполнении описания подобно предустановленном идентификатору платежной системы, платеж НЕ будет считаться проведенным через эту платежную систему, в отчете будет использовано иное поле однозначно идентифицируеще платежную систему и недоступное для ручного изменения.
Во избежание возможной путаницы, инструктируйте сотрудников абонентского отдела что без необходимости так делать не следует

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

"1";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"CITY_PAY"
"2";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"EXPRESS_VOLGA"
"3";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"ForwardMobile"
"4";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"JCC"
"5";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"Kassa24"
"6";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"KAZKOMBANK"
"7";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"Krasplat"
"8";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"MINBANK"
"9";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"MKB_OSMP"
"10";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"OSMP_Amigo"
"11";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"OSMP_CHECK"
"12";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"OSMP_DELTAPAY"
"13";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"OSMP_EXPRESS_OPLATA"
"14";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"OSMP_INTERPAY"
"15";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"OSMP_MOROZOV"
"16";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"OSMP_QIWI"
"17";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"OSMP_SBRF"
"18";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"OSMP_SIPAY"
"19";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"PAYANYWAY"
"20";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"Payfon_phone"
"21";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"PAYMASTER"
"22";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"PAYNET_UZ"
"23";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"QIWI_OSMP"
"24";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"Qiwiwallet"
"25";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"SBERBANK_ACQ"
"26";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"SBRF_BS"
"27";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"TelePay"
"28";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"UBRIR"
"29";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"UCS_ACQ"
"30";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"Uniteller"
"31";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"UnitellerAutopay"
"32";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"XPLAT"
"33";"01.01.2017 00:00:00";""01.01.2017 00:00:00";"Поступление наличных"
Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.