Интеграция с СОРМ3 VasExperts

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (1)

просмотр истории страницы
and a.id >0;
{code}
Тот же отчёт, в который попадает только информация, добавленная за последний час.
*/app/asr_billing/cfg/sorm3/subscribers_v2-periodic.sql*
{code}
set heading off;select distinct '"0";"' || --стандарт связи абонента--
A.ID || '";"' || --id абонента --
A.ID || '";"' || --логин--
A.CONTRACT_NUMBER || '";"' || --номер договора--
case when A.DELETED=1 then '1' --текущий статус абонента, справочник, 0 – подключен 1 - отключен--
else '0' end || '";"' ||
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) || '";"' || --дата заключения договора--
case when A.DELETED=1 then
(select first 1 CAST(lpad(EXTRACT(DAY FROM AH.TIME_CHANGED),2,'0') AS varchar(2))||'.'|| CAST(lpad(EXTRACT(MONTH FROM AH.TIME_CHANGED),2,'0') AS varchar(2))||'.'|| EXTRACT(YEAR FROM AH.TIME_CHANGED) from abonents_history ah where ah.abonents_id = a.id and ah.deleted=1)
else '' end || '";"'|| --дата расторжения договора, дата, формат DD.mm.YYYY, для активных абонентов пустая строка--
coalesce(A.COMPANY,'0') || '";"' || --тип абонента, справочник, 0 - физическое лицо, 1 - юридическое лицо--
case when coalesce(A.COMPANY,'0')=0 then '1' --тип данных по ФИО, справочник, 0 - структурированные данные, 1 -неструктурированные, обязателен для физических лиц--
else ' ' end || '";"' ||
'' || '";"' ||
'' || '";"' ||
'' || '";"' ||
case when A.COMPANY=0 then A.NAME || '";"' ||--неструктурированное ФИО--
--iif (position('.19' in av1020.attribute_value) !=0, coalesce(left(replace(replace (replace(av1020.attribute_value, '«', ''),'»',''), ' ', ''),10),''), '') --дата рождения --
iif (coalesce(av22.attribute_value,'')='','',av22.attribute_value) --дата рождения
else '";"' end || '";"' ||
--паспортные данные --
case when A.COMPANY=0 then
'0' || '";"' ||
coalesce(av14.attribute_value, '') || '";"' || --паспорт серия
coalesce(av13.attribute_value, '') || '";"' || --паспорт номер
--coalesce(av17.attribute_value, '') || '";"' || --когда выдан
iif (av17.attribute_value like '%-%',substring(av17.attribute_value from 9 for 2) || '.' || substring (av17.attribute_value from 6 for 2) || '.' || substring (av17.attribute_value from 1 for 4) ,coalesce(av17.attribute_value, '')) || '";"' || --паспорт когда выдан--
iif (coalesce(av16.attribute_value, '') <> '', av16.attribute_value || ' ', '')|| '";"' || --кем выдан

''|| '";"' || --неструктурированные паспортные данные, зарезервировано на будущее - пустая строка--
'Паспорт РФ' || '";"' || --тип документа--
coalesce(av7.attribute_value,'') || '";"' ||--банк абонента--
coalesce(av6.attribute_value,'') --р/с абонента --
else '";"";"";"";"";"";"";"";"' end || '";"' ||
case when A.COMPANY=1 then A.NAME || '";"' || --название ЮР лица --
coalesce(av4.attribute_value,'') || '";"' || '";"' || '";"' ||coalesce(av7.attribute_value,'') || '";"' || coalesce(av6.attribute_value,'') --ИНН,контакты,банк,р/с юр.лица --
else '";"";"";"";"";"' end || '";"' ||
case when a.company=1 then
'1' || '";"' || --тип данных адреса абонента--
'' || '";"' || --индекс--
'' || '";"' || --страна--
'' || '";"' || --тип области--
'' || '";"' || --область--
'' || '";"' || --тип района--
'' || '";"' || --район--
'' || '";"' || --тип города--
'' || '";"' || --город--
'' || '";"' || --тип улицы--
'' || '";"' || --улица--
'' || '";"' || --номер дома--
'' || '";"' || --корпус--
'' || '";"' || --тип квартиры--
'' || '";"' || --квартира--
coalesce(av25.attribute_value,'') --адрес юр лица--
else iif(coalesce(av15.attribute_value,'') <> '' and char_length(av15.attribute_value) between 4 and 5, '0' || '";"' || (select IIF(coalesce(h.ZIP_CODE, '') <> '', h.zip_code, '') || '";"'
|| IIF(coalesce(h.country, '') <> '', h.country, 'Россия') || '";"' || iif(coalesce(h.region_type_id, '') <> '',htn_region.SHORT, '') || '";"' || IIF(coalesce(h.REGION, '') <> '', h.REGION, '')
|| '";"' || iif(coalesce(h.DISTRICT_type_id, '') <> '',htn_district.SHORT, '') || '";"' || IIF(coalesce(h.DISTRICT, '') <> '', h.DISTRICT, '') || '";"'
|| iif(coalesce(h.city_type_id, '') <> '',htn_city.SHORT, 'г') || '";"' || IIF(coalesce(h.CITY, '') <> '', h.CITY, '') || '";"'
|| iif(coalesce(h.street_type_id, '') <> '',htn_street.SHORT, 'ул')|| '";"' || 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
left join home_type_name htn_region on h.REGION_TYPE_ID=htn_region.id
left join home_type_name htn_district on h.DISTRICT_TYPE_ID=htn_district.id
left join home_type_name htn_city on h.CITY_TYPE_ID =htn_city.id
left join home_type_name htn_street on h.STREET_TYPE_ID =htn_street.id
where h.id=av15.attribute_value),'0";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"' || coalesce(av26.attribute_value,''))
end || '";"' ||
'1' || '";"' || --тип данных адреса абонента--
'' || '";"' || --индекс--
'' || '";"' || --страна--
'' || '";"' || --тип области--
'' || '";"' || --область--
'' || '";"' || --тип района--
'' || '";"' || --район--
'' || '";"' || --тип города--
'' || '";"' || --город--
'' || '";"' || --тип улицы--
'' || '";"' || --улица--
'' || '";"' || --номер дома--
'' || '";"' || --корпус--
'' || '";"' || --тип квартиры--
'' || '";"' || --квартира--
coalesce(av26.attribute_value,'') || --адрес установки оборудования --

'' || '";"' ||
'1' || '";"' || --тип данных адреса абонента--
'' || '";"' || --индекс--
'' || '";"' || --страна--
'' || '";"' || --тип области--
'' || '";"' || --область--
'' || '";"' || --тип района--
'' || '";"' || --район--
'' || '";"' || --тип города--
'' || '";"' || --город--
'' || '";"' || --тип улицы--
'' || '";"' || --улица--
'' || '";"' || --номер дома--
'' || '";"' || --корпус--
'' || '";"' || --тип квартиры--
'' || '";"' || --квартира--
coalesce(av27.attribute_value,'') || --почтовый адрес абонента --

'' || '";"' ||
'1' || '";"' || --тип данных адреса абонента--
'' || '";"' || --индекс--
'' || '";"' || --страна--
'' || '";"' || --тип области--
'' || '";"' || --область--
'' || '";"' || --тип района--
'' || '";"' || --район--
'' || '";"' || --тип города--
'' || '";"' || --город--
'' || '";"' || --тип улицы--
'' || '";"' || --улица--
'' || '";"' || --номер дома--
'' || '";"' || --корпус--
'' || '";"' || --тип квартиры--
'' || '";"' || --квартира--
coalesce(av27.attribute_value,'') || --адрес доставки счета --
'";"' ||
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) || 'T'
|| CAST(lpad(EXTRACT(HOUR FROM a.create_date),2,'0')AS varchar(2)) ||':'|| CAST(lpad(EXTRACT(MINUTE FROM a.create_date),2,'0') AS varchar(2))||':'|| SUBSTRING(a.create_date from 18 for 2)|| '";"' || --дата начала интервала, на котором актуальна информация--
case when A.DELETED=1 then
(select first 1 CAST(lpad(EXTRACT(DAY FROM AH.TIME_CHANGED),2,'0') AS varchar(2))||'.'|| CAST(lpad(EXTRACT(MONTH FROM AH.TIME_CHANGED),2,'0') AS varchar(2))||'.'||
EXTRACT(YEAR FROM AH.TIME_CHANGED) || 'T00:00:00' from abonents_history ah where ah.abonents_id = a.id and ah.deleted=1)
else '' end || '"' --дата расторжения договора, дата, формат DD.mm.YYYY, для активных абонентов пустая строка--
from ABONENTS A
left join USERS U on A.ID = U.ABONENT_ID
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 av15 on a.id=av15.ABONENT_ID and av15.ATTRIBUTE_ID=15
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 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 av26 on a.id=av26.ABONENT_ID and av26.ATTRIBUTE_ID=26
left join ATTRIBUTE_VALUES as av27 on a.id=av27.ABONENT_ID and av27.ATTRIBUTE_ID=27
left join ATTRIBUTE_VALUES as av34 on a.id=av34.ABONENT_ID and av34.ATTRIBUTE_ID=34
left join ATTRIBUTE_VALUES as av1011 on a.id=av1011.ABONENT_ID and av1011.ATTRIBUTE_ID=1011
left join ATTRIBUTE_VALUES as av1019 on a.id=av1019.ABONENT_ID and av1019.ATTRIBUTE_ID=1019
left join ATTRIBUTE_VALUES as av1020 on a.id=av1020.ABONENT_ID and av1020.ATTRIBUTE_ID=1020
where A.IS_FOLDER=0
and a.parent_id not in (2,244)
and a.id is not null
and a.id >0
and (u.login in (select uh.login from users_history uh where uh.time_changed between dateadd (-1 hour to current_timestamp) and current_timestamp)
or a.id in (select ah.abonents_id from abonents_history ah where ah.time_changed between dateadd (-1 hour to current_timestamp) and current_timestamp));
{code}
h2. 2. Выгрузка номенклатуры услуг оператора
*/app/asr_billing/cfg/sorm3/service_list.sql *