From c7986e3385d2c1c1e342dfc7004d8d3f8cc00514 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 11 Dec 2025 15:39:53 +0300 Subject: [PATCH] 126 tenant metadata --- Application.cfc | 2 +- additional_agreement.cfm.bak | 307 ------------------- contract.cfm.bak | 210 ------------- contract_ls.cfm.bak | 131 -------- contragent.cfm.bak | 488 ------------------------------ deal.cfm.bak | 317 -------------------- deal_filter.cfm.bak | 126 -------- deal_service.cfm.bak | 562 ----------------------------------- index.cfm.bak | 456 ---------------------------- payg.cfm | 106 +++++-- 10 files changed, 87 insertions(+), 2618 deletions(-) delete mode 100644 additional_agreement.cfm.bak delete mode 100644 contract.cfm.bak delete mode 100644 contract_ls.cfm.bak delete mode 100644 contragent.cfm.bak delete mode 100644 deal.cfm.bak delete mode 100644 deal_filter.cfm.bak delete mode 100644 deal_service.cfm.bak delete mode 100644 index.cfm.bak diff --git a/Application.cfc b/Application.cfc index 9c8352e..d2f6834 100644 --- a/Application.cfc +++ b/Application.cfc @@ -97,7 +97,7 @@ - + diff --git a/additional_agreement.cfm.bak b/additional_agreement.cfm.bak deleted file mode 100644 index 7d7ad3c..0000000 --- a/additional_agreement.cfm.bak +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pageInfo=#pageInfo# - id="#d.__id#" - status=#pageInfo.status# - trackOut="tr" - idAttributesOut="id" -/> - - - - select - c.__name as contract - ,c.date_of_aggrement - ,c.date_end_aggrement - ,k.__name as contragent - ,k.id_klienta as wz - from elma.aggrements c - left outer join elma.companies k on (c.company_uid=k.__id) - where c.__id= - - - - - - - Дополнительное соглашение - - #d.__name# - [#d.__id#] - - - - - - - - - - - -
- -
-
__id
-
#d.__id#    __index #d.__index#
-
- -
-
Название
-
#d.__name#
-
- -
-
Версия (index)
-
#d.index#
-
- -
-
Версии
-
- - with - s(status, status_id, probability_pc) as (VALUES - ('Закрыта неуспешно',7,0),('Закрыта успешно',6,100),('Договор подписан',5,100),('Договор на подписании',15,90),('Договор на согласовании',12,70), - ('Тестирование',8,50),('Отправлено ТКП',10,20),('Внутреннее согласование',37,10),('Проработка решения',4,10),('Сбор потребностей',1,0) - ) - select - index - , a.__id::text - , d.__id::text as deal_uid - , a.__name - , d.__status_status - , s.status - , s.probability_pc - from elma.additional_agreements a - left outer join elma.deals d on (a.deal_uid=d.__id) - left outer join s on (d.__status_status=s.status_id) - where a.contract_uid= - order by index - - - - #index#: #__name# - - #index#: #__name# - - (#__status_status#: #probability_pc#%) - | - -
-
- -
-
Договор
- -
- -
-
is_actual
-
#d.is_actual#
-
- -
-
Последнее в цепочке
-
#d.last_aa#
-
- -
-
Сделка
-
- - #d.deal_uid# - - with - s(status, status_id, probability_pc) as (VALUES - ('Закрыта неуспешно',7,0),('Закрыта успешно',6,100),('Договор подписан',5,100),('Договор на подписании',15,90),('Договор на согласовании',12,70), - ('Тестирование',8,50),('Отправлено ТКП',10,20),('Внутреннее согласование',37,10),('Проработка решения',4,10),('Сбор потребностей',1,0) - ) - select d.__id::text - , d.__name - , d.__status_status - , s.status - , s.probability_pc - from elma.deals d - left outer join s on (d.__status_status=s.status_id) - where d.__id= - - #qDeal.__name# - (#qDeal.status#: - #qDeal.probability_pc#%) - -
-
- -
-
Услуги
-
- - select services_::text - from elma.additional_agreements a - where a.__id= - - #qService_.services_# (обратная ссылка) -
-
- -
-
base_by
-
- - select b.__id::text - , b.__name - from elma.additional_agreements a - join elma.additional_agreements b on (b.__id = ANY(a.base_by)) - where a.__id= - - #qBaseBy.__id# - #qBaseBy.__name# -
-
- -
- -
- - - - - - select - siv.__id - ,siv.__name - ,siv.user_description - ,siv.discount - ,siv.cnt - ,siv.modifier_code - ,siv.abstractive_service_code - ,siv.is_actual - ,siv.type - ,siv.hash - ,siv.version - ,siv.name_version - ,siv.date_accept - ,siv.__index - ,siv.date_nop - ,siv.date_end - ,siv.is_easy - ,siv.params::text - from elma.deals_services siv - where =ANY(siv.additional_agreement) - order by type - - - -

Услуги (строки спецификации) (#qService.recordCount#)

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
__iduser_descriptionКол-воСкидкаabstractive_service_codemodifier_codeis_actualtypehashversionname_versiondate_accept__indexdate_nopdate_endis_easyparams
#__id##user_description##cnt##discount##abstractive_service_code##modifier_code##is_actual##type##hash##version##name_version##date_accept##__index##dateFormat(date_nop,'YYYY-MM-DD')##dateFormat(date_end,'YYYY-MM-DD')#ПростаяКомпозитная#params#
-
- - - \ No newline at end of file diff --git a/contract.cfm.bak b/contract.cfm.bak deleted file mode 100644 index d8221e4..0000000 --- a/contract.cfm.bak +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pageInfo=#pageInfo# - id="#d.__id#" - status=#pageInfo.status# - trackOut="tr" - idAttributesOut="id" -/> - - - - select - __name as contragent, id_klienta as wz - from elma.companies k - where k.__id= - - - - - - - Договор - - #d.__name# - [#d.__id#] - - - - - - - - - - - -
- -
-
__id
-
#d.__id#
-
- -
-
Номер договора
-
#d.__name#
-
- - - -
-
Дата договора
-
#dateFmt(d.date_of_aggrement)#
-
- -
-
Дата окончания договора
-
#dateFmt(d.date_end_aggrement)#
-
- -
- -
- - - - - - with - s(status, status_id, probability_pc) as (VALUES - ('Закрыта неуспешно',7,0),('Закрыта успешно',6,100),('Договор подписан',5,100),('Договор на подписании',15,90),('Договор на согласовании',12,70), - ('Тестирование',8,50),('Отправлено ТКП',10,20),('Внутреннее согласование',37,10),('Проработка решения',4,10),('Сбор потребностей',1,0) - ) - select - a.__id::text - ,a.__name - ,a.__index - ,a.contract_uid::text - ,a.is_actual - ,a.last_aa - ,a.index - ,a.deal_uid::text - ,a.base_by[1]::text as base_by_uid - ,b.__name as base_by_name - ,b.__index as base_by_index - ,d.__name as deal - ,d.__status_status as status_id - ,s.status - ,s.probability_pc - from elma.additional_agreements a - left outer join elma.deals d on (a.deal_uid=d.__id) - left outer join s on (d.__status_status=s.status_id) - left outer join elma.additional_agreements b on (a.base_by[1]=b.__id) - where a.contract_uid= - order by 1 - - - -

Дополнительные соглашения (#qAdditionalAgreement.recordCount#)

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
__index__id__nameверсияis_actuallast_aadeal_uiddealstatus_idstatusвер-тьbase_by_indexbase_by_uidbase_by_name
#__index##__id##__name##index##is_actual##last_aa##deal_uid##deal##status_id##status##probability_pc##base_by_index##base_by_uid##base_by_name#
-
-
- Мы не показываем тут сделки, поскольку связь со сделкой у договора не прямая и не обязательная. Сделки относятся к контрагенту, а не к договору. Сделка может быть связана с договором через дополнительное соглашение (включая нулевое соглашение, по умолчанию) - - - - \ No newline at end of file diff --git a/contract_ls.cfm.bak b/contract_ls.cfm.bak deleted file mode 100644 index 3876eb3..0000000 --- a/contract_ls.cfm.bak +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - - - - - - - - - - - - - select - - d.__id - d.agreement_id - d.__name - d.company_uid - k.__name as contragent - k.id_klienta as wz - d.date_of_aggrement - d.date_end_aggrement - d.type_of_agreement - (select count(*) from elma.additional_agreements a where a.contract_uid=d.__id AND a."_deletedAt" IS NULL) as aa_cnt - - from elma.aggrements d - left outer join elma.companies k on (d.company_uid=k.__id) - where 1=1 - order by - - - - - - - - - -select count(*) as cnt from elma.aggrements d where 1=1 - - - - - - - - - - - - Договоры - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #__name# - - - - #contragent# - - - - - - - - - - - - - - - - - - - - - - #gridFooter# - - - diff --git a/contragent.cfm.bak b/contragent.cfm.bak deleted file mode 100644 index e48a8e0..0000000 --- a/contragent.cfm.bak +++ /dev/null @@ -1,488 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pageInfo=#pageInfo# - id="#d.__id#" - status=#pageInfo.status# - trackOut="tr" - idAttributesOut="id" -/> - - - - - - - - - Контрагент - - #d.__name# - [#d.__id#] - - - - - - - - - - - -
- -
-
__id
-
#d.__id#
-
- -
-
__name
-
#d.__name#
-
- -
-
_inn
-
#d._inn#
-
- -
-
_kpp
-
#d._kpp#
-
- -
-
id_klienta
-
#d.id_klienta#
-
- - - - - -
- -
-сюда добавить сделок, договоров и т.д. - - - - - - - select - - d.__id - d.agreement_id - d.__name - d.company_uid - d.date_of_aggrement - d.date_end_aggrement - d.type_of_agreement - d.__index - - from elma.aggrements d - where d.company_uid= - - - -

Договоры (#qContract.recordCount#)

-
- - - - - - - - - - - - - - - - - - - - - -
__idНомерВнут. номерДатаДата оконч.Тип договора
#__id##__name##agreement_id##dateFormat(date_of_aggrement,"YYYY-MM-DD")##dateFormat(date_end_aggrement,"YYYY-MM-DD")##type_of_agreement#
- - - - with - s(status, status_id, probability_pc) as (VALUES - ('Закрыта неуспешно',7,0),('Закрыта успешно',6,100),('Договор подписан',5,100),('Договор на подписании',15,90),('Договор на согласовании',12,70), - ('Тестирование',8,50),('Отправлено ТКП',10,20),('Внутреннее согласование',37,10),('Проработка решения',4,10),('Сбор потребностей',1,0) - ), - component as (select siv.deal as deal_uids, siv.type, (siv.cnt*(100-COALESCE(siv.discount,0))/100*p.price*p.cnt*(100-COALESCE(p.discount,0))) as param_cost - from elma.deals_services siv - join elma.service_parametrs p on (p.__id = ANY(siv.params)) - where p."__deletedAt" IS NULL AND siv."__deletedAt" IS NULL AND siv.is_actual - ) - select - a.__id::text - ,a.__name as additional_agreement - ,a.__index - ,a.contract_uid::text - ,a.is_actual - ,a.last_aa - ,a.deal_uid::text - ,c.__name as contract - ,c.agreement_id - ,c.date_of_aggrement - ,d.__id as deal_uid - ,d.__name as deal - ,d.__status_status - ,s.status - ,s.probability_pc - ,u.__name as owner - ,(select sum(param_cost) - from component p - where d.__id = p.deal_uids[1] AND p.type IN (1) - ) as install - ,(select sum(param_cost) - from component p - where d.__id = p.deal_uids[1] AND p.type IN (2) - ) as periodical - ,(select sum(param_cost) - from component p - where d.__id = p.deal_uids[1] AND p.type IN (3) - ) as metered - from elma.additional_agreements a - join elma.aggrements c on (a.contract_uid=c.__id) - join elma.deals d on (a.deal_uid=d.__id) - left outer join s on (d.__status_status=s.status_id) - left outer join elma.comp_users_ext u on (d._owner=c.__id) - where c.company_uid= - AND s.probability_pc > 0 - order by a.__index - - - - -

Доп. соглашения (#qAdditionalAgreement.recordCount#) - - исключены соглашения, сделки которых имеют нулевую вероятность -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
__id__indexДоп. соглашениеВнут. н-р дог.Дата договораСделкаСтатус сделкиВер-ть %ОтветственныйИнсталлЕжемесТариф.
#__id##__index##additional_agreement##agreement_id##dateFormat(date_of_aggrement,"YYYY-MM-DD")##deal##status##probability_pc##owner##nFmt(install)##nFmt(periodical)##nFmt(metered)#
- - - - - - - with - status(status, status_id, probability_pc) as (VALUES - ('Закрыта неуспешно',7,0),('Закрыта успешно',6,100),('Договор подписан',5,100),('Договор на подписании',15,90),('Договор на согласовании',12,70), - ('Тестирование',8,50),('Отправлено ТКП',10,20),('Внутреннее согласование',37,10),('Проработка решения',4,10),('Сбор потребностей',1,0) - ), - component as (select siv.deal as deal_uids, siv.type, (siv.cnt*(100-COALESCE(siv.discount,0))/100*p.price*p.cnt*(100-COALESCE(p.discount,0))) as param_cost - from elma.deals_services siv - join elma.service_parametrs p on (p.__id = ANY(siv.params)) - where p."__deletedAt" IS NULL AND siv."__deletedAt" IS NULL AND siv.is_actual - ) - select - - d.__id - d.__index - d.__name - d._companies - d."__createdAt" as __createdAt - k.__name as contragent - k.__id as contragent_uid - k.id_klienta as wz - d.__status_status - s.status - s.probability_pc - c.__name as owner - a.__name as additional_agreement - a.__id as additional_agreement_uid - g.__name as contract - g.__id as contract_uid - g.date_of_aggrement - g.agreement_id - g.date_of_aggrement as dt_contract - (select sum(param_cost) - from component - where d.__id = ANY(component.deal_uids) AND component.type IN (1) - ) as install - - (select sum(param_cost) - from component - where d.__id = ANY(component.deal_uids) AND component.type IN (2) - ) as periodical - - (select sum(param_cost) - from component - where d.__id = ANY(component.deal_uids) AND component.type IN (3) - ) as metered - - - from elma.deals d - left outer join elma.companies k on (d._companies=k.__id) - left outer join status s on (d.__status_status=s.status_id) - left outer join elma.comp_users_ext c on (d._owner=c.__id) - left outer join elma.additional_agreements a on (d.__id=a.deal_uid) - left outer join elma.aggrements g on (a.contract_uid = g.__id) - where d._companies= - AND s.probability_pc > 0 - order by d.__index - - - -

Сделки (#qDeal.recordCount#) - исключены сделки с нулевой вероятностью

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
__id__indexСделкаСтатус сделкиВер-ть %ОтветственныйДопникДоговорВнут. н-р дог.Дата договораИнсталлЕжемесТариф.
#__id##__index##__name##status##probability_pc##owner##additional_agreement##contract##agreement_id##dateFormat(date_of_aggrement,"YYYY-MM-DD")##nFmt(install)##nFmt(periodical)##nFmt(metered)#
- - - - - - - - with - status(status, status_id, probability_pc) as (VALUES - ('Закрыта неуспешно',7,0),('Закрыта успешно',6,100),('Договор подписан',5,100),('Договор на подписании',15,90),('Договор на согласовании',12,70), - ('Тестирование',8,50),('Отправлено ТКП',10,20),('Внутреннее согласование',37,10),('Проработка решения',4,10),('Сбор потребностей',1,0) - ) - select - siv.__id - ,siv.__name - ,siv.user_description - ,siv.discount - ,siv.cnt - ,siv.modifier_code - ,siv.abstractive_service_code - ,siv.is_actual - ,siv.type - ,siv.hash - ,siv.version - ,siv.name_version - ,siv.date_accept - ,siv.__index - ,siv.date_nop - ,siv.date_end - ,siv.is_easy - ,siv.params::text - ,a.__id::text as additional_agreement_uid - ,a.__name as additional_agreement - ,(select - sum(siv.cnt*(100-COALESCE(siv.discount,0))/100*p.price*p.cnt*(100-COALESCE(p.discount,0))/100) - from elma.service_parametrs p - where p.__id = ANY (siv.params) - AND p."__deletedAt" IS NULL - ) as line_cost - ,(select count(*) - from elma.service_parametrs p - where p.__id = ANY (siv.params) - AND p."__deletedAt" IS NULL - ) as param_cnt - ,s.probability_pc - ,d.__index - ,d.__id as deal_uid - from elma.deals_services siv - join elma.deals d on d.__id=ANY(siv.deal) - join status s on (d.__status_status=s.status_id) - left outer join elma.additional_agreements a on (a.__id=ANY(siv.additional_agreement)) - where d._companies= - and siv.is_actual - order by version::int - - - -

Услуги (версии строк спецификации, только актуальные) (#qService.recordCount#) *** здесь не учтено дублирование строк в новых версиях

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
__indexuser_descriptionКол-воСкидка%СуммаКодtypeis_actualhashversionname_versiondate_accept__indexdate_nopdate_endis_easyКомпонентовadditional_agreement
#__index##user_description##cnt##discount##nFmt(line_cost)# - #abstractive_service_code#.#modifier_code# - #type##is_actual##hash##version##name_version##date_accept##__index##dateFormat(date_nop,'YYYY-MM-DD')##dateFormat(date_end,'YYYY-MM-DD')##is_easy##param_cnt##additional_agreement#
- -
- \ No newline at end of file diff --git a/deal.cfm.bak b/deal.cfm.bak deleted file mode 100644 index c7a274a..0000000 --- a/deal.cfm.bak +++ /dev/null @@ -1,317 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pageInfo=#pageInfo# - id="#d.__id#" - status=#pageInfo.status# - trackOut="tr" - idAttributesOut="id" -/> - - - - with - s(status, status_id, probability_pc) as (VALUES - ('Закрыта неуспешно',7,0),('Закрыта успешно',6,100),('Договор подписан',5,100),('Договор на подписании',15,90),('Договор на согласовании',12,70), - ('Тестирование',8,50),('Отправлено ТКП',10,20),('Внутреннее согласование',37,10),('Проработка решения',4,10),('Сбор потребностей',1,0) - ), - component as (select siv.deal as deal_uids, siv.type, (siv.cnt*(100-COALESCE(siv.discount,0))/100*p.price*p.cnt*(100-COALESCE(p.discount,0))) as param_cost - from elma.deals_services siv - join elma.service_parametrs p on (p.__id = ANY(siv.params)) - ) - - select - k.__name as contragent - ,k.id_klienta as wz - ,k.__index as contragent_index - ,d."_plannedDueDate" as _plannedDueDate - ,d."__createdAt" - ,d."__index" as deal_index - ,s.status - ,s.probability_pc - ,c.__name as owner - ,(select sum(param_cost) - from component - where d.__id = ANY(component.deal_uids) AND component.type IN (1) - ) as install - ,(select sum(param_cost) - from component - where d.__id = ANY(component.deal_uids) AND component.type IN (2) - ) as periodical - ,(select sum(param_cost) - from component - where d.__id = ANY(component.deal_uids) AND component.type IN (3) - ) as metered - from elma.deals d - left outer join elma.companies k on (d._companies=k.__id) - left outer join elma.comp_users_ext c on (d._owner=c.__id) - left outer join s on (d.__status_status=s.status_id) - where d.__id= - - - - - - - Сделка - - #d.__name# - [#d.__id#] - - - - - - - - - - - -
- -
-
__id
-
- #d.__id# - index:#qDecoration.deal_index# -
-
- -
-
Название
-
#d.__name#
-
- - - -
-
_plannedDueDate
-
#dateFormat(qDecoration._plannedDueDate,'YYYY-MM-DD')# - Паразитное поле, не использовать в расчетах -
-
- -
-
Статус
-
- #d.__status_status#: #qDecoration.status# (#qDecoration.probability_pc#%) -
-
- -
-
Доп.соглашение
-
- - select - a.__id - ,a.__name - ,g.__id as contract_uid - ,g.__name as contract - ,g.date_of_aggrement - from elma.additional_agreements a - join elma.aggrements g on (a.contract_uid=g.__id) - where a.deal_uid= - - - #__name# - #contract# #dateFmt(date_of_aggrement)# - -
-
- -
-
is_corrective_transaction
-
#d.is_corrective_transaction#
-
- -
-
dt_load
-
#dateTimeFormat(d.dt_load,"yyyy-MM-dd HH:nn:ss.SSSZ")#
-
- -
-
__createdAt
-
#dateFormat(qDecoration.__createdAt,"YYYY-MM-DD")#
-
- -
-
Ответственный
-
#qDecoration.owner#
-
- -
-
Инсталл
-
#numFmt(qDecoration.install,2)#
-
- -
-
Ежемес
-
#numFmt(qDecoration.periodical,2)#
-
- -
-
Тарифицируемые
-
#numFmt(qDecoration.metered,2)#
-
- - -
- -
- - - - - - select - siv.__id - ,siv.__name - ,siv.user_description - ,siv.discount - ,siv.cnt - ,siv.modifier_code - ,siv.abstractive_service_code - ,siv.is_actual - ,siv.type - ,siv.hash - ,siv.version - ,siv.name_version - ,siv.date_accept - ,siv.__index - ,siv.date_nop - ,siv.date_end - ,siv.is_easy - ,siv.params::text - ,a.__id::text as additional_agreement_uid - ,a.__name as additional_agreement - ,(select - sum(siv.cnt*(100-COALESCE(siv.discount,0))/100*p.price*p.cnt*(100-COALESCE(p.discount,0))/100) - from elma.service_parametrs p - where p.__id = ANY (siv.params) - ) as line_cost - ,(select count(*) - from elma.service_parametrs p - where p.__id = ANY (siv.params) - ) as param_cnt - from elma.deals_services siv - left outer join elma.additional_agreements a on (a.__id=ANY(siv.additional_agreement)) - where =ANY(siv.deal) - and siv.is_actual - order by version::int - - - -

Услуги (версии строк спецификации, только актуальные) (#qService.recordCount#)

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
__indexuser_descriptionКол-воСкидка%СуммаКодtypeis_actualhashversionname_versiondate_acceptdate_nopdate_endis_easyКомпонентовadditional_agreement
#__index##user_description##cnt##discount##nFmt(line_cost)# - #abstractive_service_code#.#modifier_code# - #type# ( - i - f - m - )#is_actual##hash##version##name_version##date_accept##dateFormat(date_nop,'YYYY-MM-DD')##dateFormat(date_end,'YYYY-MM-DD')#ПростаяКомпозитнаяis_easy=#is_easy##param_cnt##additional_agreement#
-
- - - \ No newline at end of file diff --git a/deal_filter.cfm.bak b/deal_filter.cfm.bak deleted file mode 100644 index 85d77a8..0000000 --- a/deal_filter.cfm.bak +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - Сделки - фильтр - - - - - - - -
- -
-
-
- -
-
- -
-
Название сделки
-
- - #i18("по вхождению подстроки","by substring")# -
-
- -
-
Контрагент
-
- - #i18("по вхождению подстроки","by substring")# -
-
- -
-
WZ
-
- - #i18("по вхождению подстроки","by substring")# -
-
- -
-
Контрагент
-
- - select __id::text as __id, __name, id_klienta - from elma.companies - order by __name - - - - -
-
- -
-
Статус
-
- - with - status (status, status_id, probability_pc) as (VALUES - ('Закрыта неуспешно',7,0),('Закрыта успешно',6,100),('Договор подписан',5,100),('Договор на подписании',15,90),('Договор на согласовании',12,70), - ('Тестирование',8,50),('Отправлено ТКП',10,20),('Внутреннее согласование',37,10),('Проработка решения',4,10),('Сбор потребностей',1,0) - ) - select status_id, status, probability_pc - from status - order by status_id - - - -
-
-
- добавить сюда множественный выбор статуса - -
- - - \ No newline at end of file diff --git a/deal_service.cfm.bak b/deal_service.cfm.bak deleted file mode 100644 index 1581c64..0000000 --- a/deal_service.cfm.bak +++ /dev/null @@ -1,562 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pageInfo=#pageInfo# - id="#d.__id#" - status=#pageInfo.status# - trackOut="tr" - idAttributesOut="id" -/> - - - - select - ds."__createdAt" - from elma.deals_services ds - where ds.__id= - - - - - - - Версия строки спецификации - - #d.__name# - [#d.__id#] - - - - - - - - - - - -
- -
-
__id
-
- #d.__id# -       - __index #d.__index# -       - __createdAt #dateTimeFormat(qDecoration.__createdAt,"yyyy-MM-dd HH:nn:ss.SSSZ")# -
-
- -
-
-
-
- -
-
Ключ строки
-
#d.hash#
-
- -
-
Тип периодичности
-
#d.type#
-
- -
-
Код
-
#d.abstractive_service_code#.#d.modifier_code#
-
- -
-
Пользовательское описание
-
#d.user_description#
-
- -
-
Количество
-
#d.cnt#
-
- -
-
Скидка
-
#d.discount# %
-
- -
-
Сумма
-
- - select - sum(p.price*p.cnt*(100-COALESCE(p.discount,0))/100) as param_cost - ,sum(siv.cnt*(100-COALESCE(siv.discount,0))/100*p.price*p.cnt*(100-COALESCE(p.discount,0))/100) as line_cost - from elma.service_parametrs p - join elma.deals_services siv on (p.__id = ANY (siv.params)) - where siv.__id= - AND p."__deletedAt" IS NULL - - #nFmt(qParamCost.line_cost)# по строке, с количеством и скидкой (#nFmt(qParamCost.param_cost)# по компонентам) -
-
- -
-
Версия
-
- #d.version# вообще не понимаю, какой смысл вкладывается в эту цифру... -
-
- -
-
Версии
-
- - - with - status(status, status_id, probability_pc) as (VALUES - ('Закрыта неуспешно',7,0),('Закрыта успешно',6,100),('Договор подписан',5,100),('Договор на подписании',15,90),('Договор на согласовании',12,70), - ('Тестирование',8,50),('Отправлено ТКП',10,20),('Внутреннее согласование',37,10),('Проработка решения',4,10),('Сбор потребностей',1,0) - ) - select siv.__id::text, siv.__index, siv.version - , siv.date_nop, siv.date_end, siv.user_description - , siv.type, siv.is_easy, siv.cnt, siv.discount - , siv.is_actual, siv."__createdAt" - , d.__id::text as deal_uid, d.__index as deal_index, d.__name as deal, d.__status_status - , a.__id::text as aa_uid, a.index as aa_version, a.__name as additional_agreement - , status.status, status.probability_pc - ,(select - sum(siv.cnt*(100-COALESCE(siv.discount,0))/100*p.price*p.cnt*(100-COALESCE(p.discount,0))/100) - from elma.service_parametrs p - where p.__id = ANY (siv.params) - ) as line_cost - from elma.deals_services siv - left outer join elma.additional_agreements a on (a.__id = ANY(siv.additional_agreement)) - join elma.deals d on (d.__id = ANY(siv.deal)) - left outer join status on (d.__status_status = status.status_id) - where hash= - AND siv.is_actual - order by d.__index --siv.__index, siv.version - - - - #aa_version#:#version#[#__index#] - - #aa_version#:#version#[#__index#] - - - (версия_дс : версия_строки [индекс_сделки], только актуальные и со сделкой) -
-
- -
-
is_actual
-
#d.is_actual#
-
- -
-
Начало тарификации
-
#dateFormat(d.date_nop,'DD.MM.YYYY')#
-
- -
-
Окончание тарификации
-
#dateFormat(d.date_end,'DD.MM.YYYY')#
-
- -
-
Сделка
-
- - with - s(status, status_id, probability_pc) as (VALUES - ('Закрыта неуспешно',7,0),('Закрыта успешно',6,100),('Договор подписан',5,100),('Договор на подписании',15,90),('Договор на согласовании',12,70), - ('Тестирование',8,50),('Отправлено ТКП',10,20),('Внутреннее согласование',37,10),('Проработка решения',4,10),('Сбор потребностей',1,0) - ) - select - d.__id::text - ,d.__name - ,c.__name as contragent - ,c.__id as contragent_uid - ,d."_plannedDueDate" - ,d.__index - ,d.__status_status - ,c.id_klienta as wz - ,s.status - ,s.probability_pc - from elma.deals_services siv - join elma.deals d on (d.__id = ANY(siv.deal)) - left outer join elma.companies c on (d._companies=c.__id) - left outer join s on (d.__status_status=s.status_id) - where siv.__id= - - - - #qDeal.__index# #qDeal.__id# | - #qDeal.contragent# #qDeal.wz# | - #qDeal.__name# | - - #qDeal.__status_status#: #qDeal.status# (#qDeal.probability_pc#%) - -
-
- -
-
Доп. соглашение
-
- - select - a.__id::text - ,a.__index - ,a.__name as additional_agreement - ,a2.__id::text as base_by_uid - ,a2.__index - ,a2.__name as base_by - ,a.contract_uid::text - ,a.is_actual - ,a.last_aa - ,a.deal_uid::text - ,a2.deal_uid::text as deal2_uid - ,d2.__name as deal2 - ,c.__name as contract - ,c.agreement_id - ,c.date_of_aggrement - ,z.__name as contragent - ,z.__id as contragent_uid - ,z.id_klienta as wz - from elma.deals_services siv - join elma.additional_agreements a on (a.__id = ANY(siv.additional_agreement)) - left outer join elma.additional_agreements a2 on (a2.__id = ANY(a.base_by)) - left outer join elma.deals d2 on (a2.deal_uid = d2.__id) - left outer join elma.aggrements c on (a.contract_uid=c.__id) - left outer join elma.companies z on (c.company_uid=z.__id) - where siv.__id= - - - - - #qAdditionalAgreement.__index# #qAdditionalAgreement.__id# #qAdditionalAgreement.additional_agreement# - | - - #qAdditionalAgreement.contragent# #qAdditionalAgreement.wz# - | - Договор - - #qAdditionalAgreement.contract# (#qAdditionalAgreement.agreement_id#) - #dateFormat(qAdditionalAgreement.date_of_aggrement,"YYYY-MM-DD")# - - -
- is_actual: #qAdditionalAgreement.is_actual# - last_aa: #qAdditionalAgreement.last_aa# - base_by: - #qAdditionalAgreement.base_by_uid# - #qAdditionalAgreement.base_by# - - ( - #qAdditionalAgreement.deal2_uid# - #qAdditionalAgreement.deal2# - ) -
-
-
- - - - - - - - -
- -
- - - - - - select - p.__id - ,p.__index - ,p.__name - ,p.type - ,p.price - ,p.code - ,p.cnt - ,p.name - ,p.ed_izm - ,p.discount - ,p.deal::text - ,p.__index - ,(p.price*p.cnt*(100-COALESCE(p.discount,0))/100) as param_cost - from elma.service_parametrs p - join elma.deals_services siv on (p.__id = ANY (siv.params)) - where siv.__id= - order by type - - - select - sum(param_cost) as total_cost - from qParam - - - -

Параметры (компоненты) (#qParam.recordCount#)

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
__indextypecodenameКол-воЕд.изм.ЦенаСкидка %Ст-ть__id
#__index##type##code##name##cnt##ed_izm##price##discount##nFmt(param_cost)##__id#
Итого#nFmt(total_cost)#
-
- - - - with - status(status, status_id, probability_pc) as (VALUES - ('Закрыта неуспешно',7,0),('Закрыта успешно',6,100),('Договор подписан',5,100),('Договор на подписании',15,90),('Договор на согласовании',12,70), - ('Тестирование',8,50),('Отправлено ТКП',10,20),('Внутреннее согласование',37,10),('Проработка решения',4,10),('Сбор потребностей',1,0) - ) - select siv.__id::text, siv.__index, siv.version - , siv.date_nop, siv.date_end, siv.user_description - , siv.type, siv.is_easy, siv.cnt, siv.discount - , siv.is_actual, siv."__createdAt" - , d.__id::text as deal_uid, d.__index as deal_index, d.__name as deal, d.__status_status - , a.__id::text as aa_uid, a.index as aa_version, a.__name as additional_agreement - , status.status, status.probability_pc - ,(select - sum(siv.cnt*(100-COALESCE(siv.discount,0))/100*p.price*p.cnt*(100-COALESCE(p.discount,0))/100) - from elma.service_parametrs p - where p.__id = ANY (siv.params) - ) as line_cost - from elma.deals_services siv - left outer join elma.additional_agreements a on (a.__id = ANY(siv.additional_agreement)) - left outer join elma.deals d on (d.__id = ANY(siv.deal)) - left outer join status on (d.__status_status = status.status_id) - where hash= - order by d.__index - - - - select * from qVer where is_actual > 0 - - - - select * from qVer where is_actual = 0 OR is_actual IS NULL - - - - -

Версии строки без черновиков (#qVerActual.recordCount#)

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Индекс версииСозданаВерс. доп.с.Версия строкиis actualНОУКОУUser DescriptiontypeКол-воСкид­ка%Ст-тьСделкаСтатусВер.Доп.с.
- - #__index# - - #__index# - - #dateFormat(__createdAt,"YYYY-MM-DD")##aa_version##version##is_actual##dateFormat(date_nop,"YYYY-MM-DD")##dateFormat(date_end,"YYYY-MM-DD")##user_description##type##cnt##discount##nFmt(line_cost)##deal##__status_status##probability_pc##additional_agreement#
- - - -

Версии строки - черновики (#qVerDraft.recordCount#)

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Индекс версииСозданаВерс. доп.с.Версия строкиis actualНОУКОУUser DescriptiontypeКол-воСкид­ка%Ст-тьСделкаСтатусВер.Доп.с.
- - #__index# - - #__index# - - #dateFormat(__createdAt,"YYYY-MM-DD")##aa_version##version##is_actual##dateFormat(date_nop,"YYYY-MM-DD")##dateFormat(date_end,"YYYY-MM-DD")##user_description##type##cnt##discount##nFmt(line_cost)##deal##__status_status##probability_pc##additional_agreement#
- - - - - - - - \ No newline at end of file diff --git a/index.cfm.bak b/index.cfm.bak deleted file mode 100644 index 10b6c61..0000000 --- a/index.cfm.bak +++ /dev/null @@ -1,456 +0,0 @@ - - - - - -Внимание! округление вверх при расчете метрик - - - - - - - - - select distinct p.code - from elma.deals d - join elma.deals_services siv on (d.__id=ANY(siv.deal)) - join elma.service_parametrs p on (p.__id = ANY(siv.params)) - join elma.companies k on (d._companies=k.__id) - join elma.additional_agreements aa on (aa.__id = ANY(siv.additional_agreement)) - join elma.aggrements a on (aa.contract_uid = a.__id) - where p.type=3 AND aa.is_actual - order by p.code - - - - - select k.id_klienta as wz, p.code, p.price, p.discount, k.__name as contragent, a.__name as contract, d.__name as deal, siv.abstractive_service as abstract_service, siv.modifier, siv.user_description - ,p.__name as metric, p.ed_izm - --, aa.is_actual - from elma.deals d - join elma.deals_services siv on (d.__id=ANY(siv.deal)) - join elma.service_parametrs p on (p.__id = ANY(siv.params)) - join elma.companies k on (d._companies=k.__id) - join elma.additional_agreements aa on (aa.__id = ANY(siv.additional_agreement)) - join elma.aggrements a on (aa.contract_uid = a.__id) - where p.type=3 AND aa.is_actual - order by k.id_klienta, p.code - - - - - - - select 'WZ'||to_char(tenant.wzcode,'FM00000') as wz, vdc.name as vdc_name, - case - when vdc.name like '%-v1cl1%' then 'iaas.ngc.i29' - when vdc.name like '%-v1cl2%' then 'iaas.ngc.i31' - when vdc.name like '%-v1cl4%' then 'iaas.ngc.a28' - when vdc.name like '%-v1cl6%' then 'iaas.ngc.i28' - else '['||vdc.name||']' end as code, - sum(cpu_used/cpu_speed)/4. as core_h, - sum(mem_used)/1024/4. as gb_h - from ngcloud_ru.capacity_resource - join ngcloud_ru.vdc on capacity_resource.vdc_id=vdc.id - join ngcloud_ru.tenant on tenant.id=vdc.tenant_id - where tenant.wzcode > 0 - AND capacity_resource.timestamp >= - AND capacity_resource.timestamp < - group by tenant.wzcode, vdc.name - order by tenant.wzcode, vdc.name; - - - - - - select 'WZ'||to_char(tenant.wzcode,'FM00000') as wz, vdc.name as vdc_name, - case - WHEN vdc.name LIKE '%-v1cl1%' THEN 'iaas.ngc.i29' - WHEN vdc.name LIKE '%-v1cl2%' THEN 'iaas.ngc.i31' - WHEN vdc.name LIKE '%-v1cl4%' THEN 'iaas.ngc.a28' - WHEN vdc.name LIKE '%-v1cl6%' THEN 'iaas.ngc.i28' - ELSE '['||vdc.name||']' END - || CASE - WHEN storage_profile_types.name ILIKE '%-SSD%' THEN '.ssd-m' - WHEN storage_profile_types.name ILIKE '%-SAS' THEN '.sas-m' - WHEN storage_profile_types.name ILIKE '%-SATA' THEN '.sata-m' - ELSE '.['|| storage_profile_types.name ||']' END - as code, - storage_profile_types.name, -- *** это не тип, а профайл - sum("limit")/1024./4 as gb_h_limit, -- 4 потому, что сбор раз в 15 минут - sum(used)/1024./4 as gb_h_used - from ngcloud_ru.capacity_storage - join ngcloud_ru.vdc on capacity_storage.vdc_id=vdc.id - join ngcloud_ru.tenant on tenant.id=vdc.tenant_id - join ngcloud_ru.storage_profile_types on capacity_storage.storage_profile_types_id=storage_profile_types.id - where tenant.wzcode > 0 - AND capacity_storage.timestamp >= - AND capacity_storage.timestamp < - group by tenant.wzcode, vdc.name, storage_profile_types.name - order by tenant.wzcode, vdc.name, storage_profile_types.name; - - - - - - - select /* *** ниже дублирование кода агрегации - round ceil etc, обратить внимание при правке */ - (sum(bucket_stat.usage_rgw_main_size_actual)/) as vol_B - ,round(sum(bucket_stat.usage_rgw_main_size_actual)//1024/1024/1024) as vol_GB - ,greatest(round(sum(bucket_stat.usage_rgw_main_size_actual)/ - /1024/1024/1024)- - case when bucket_stat.placement_id = 1 then 1 else 0 end, 0) as vol_GB_free_tier_subtracted /*считается не в точности так, как в функции*/ - - ,case - when bucket_stat.placement_id = 1 then 'paas.s3.ceph' - when bucket_stat.placement_id = 2 then 'paas.s3.cphc' - else '['|| TO_CHAR(bucket_stat.placement_id,'FM9') ||']' end as code - --,bucket_stat.placement_id - ,'WZ'||lpad(bucket_stat.owner, 5, '0') as wz -- *** здесь не число, а строка, поэтому другая формула обратной сборки WZ - - from s3billing.bucket_stat - join s3billing.placement ON s3billing.placement.id=bucket_stat.placement_id - join s3billing.bucket_info ON bucket_info.id=bucket_stat.bucket_id - where bucket_stat.placement_id in (1,2) - AND bucket_stat.timestamp_addition >= - AND bucket_stat.timestamp_addition < - group by bucket_stat.owner, bucket_stat.placement_id - order by bucket_stat.owner, bucket_stat.placement_id; - - - - -select - sum( - CASE WHEN - (category.name LIKE 'get%' - OR category.name LIKE 'head%' - OR category.name LIKE 'options%' - ) THEN ops ELSE 0 END - ) as get - ,ceil(sum( - CASE WHEN - (category.name LIKE 'get%' - OR category.name LIKE 'head%' - OR category.name LIKE 'options%' - ) THEN ops ELSE 0 END - )/10000) as get_10k - ,greatest(ceil(sum( - CASE WHEN - (category.name LIKE 'get%' - OR category.name LIKE 'head%' - OR category.name LIKE 'options%' - ) THEN ops ELSE 0 END - )/10000) - CASE WHEN bucket_info.placement_id = 1 THEN 10 ELSE 0 END, 0 - ) as get_10k_free_tier_subtracted - - ,sum( - CASE WHEN - (category.name LIKE 'put%' - OR category.name LIKE 'post%' - OR category.name LIKE 'patch%' - OR category.name LIKE 'list%' - ) THEN ops ELSE 0 END - ) as put - ,ceil(sum( - CASE WHEN - (category.name LIKE 'put%' - OR category.name LIKE 'post%' - OR category.name LIKE 'patch%' - OR category.name LIKE 'list%' - ) THEN ops ELSE 0 END - )/10000) as put_10k - ,greatest(ceil(sum( - CASE WHEN - (category.name LIKE 'put%' - OR category.name LIKE 'post%' - OR category.name LIKE 'patch%' - OR category.name LIKE 'list%' - ) THEN ops ELSE 0 END - )/10000) - CASE WHEN bucket_info.placement_id = 1 THEN 1 ELSE 0 END, 0 - ) as put_10k_free_tier_subtracted - - ,(sum(bytes_sent)) as bytes_sent - ,ceil(sum(bytes_sent)/1024/1024/1024) as bytes_sent_GB - ,greatest(ceil(sum(bytes_sent)/1024/1024/1024) - CASE WHEN bucket_info.placement_id = 1 THEN 100 ELSE 0 END, 0 - ) as bytes_sent_GB_free_tier_subtracted - - ,case - when bucket_info.placement_id = 1 then 'paas.s3.ceph' - when bucket_info.placement_id = 2 then 'paas.s3.cphc' - else '['|| TO_CHAR(bucket_info.placement_id,'FM9') ||']' end as code --*** зачем делать там ключ bigint - ,bucket_info.placement_id - --category.name, bucket_info.name - ,'WZ'||lpad(user_info.name, 5, '0') as wz - from s3billing.usage_bucket_by_user - join s3billing.user_info on usage_bucket_by_user.user_id=user_info.id - join s3billing.category on usage_bucket_by_user.category_id=category.id - join s3billing.bucket_info on usage_bucket_by_user.bucketid=bucket_info.id - join s3billing.placement on bucket_info.placement_id=placement.id - where 1=1 - AND usage_bucket_by_user.time >= - AND usage_bucket_by_user.time < - group by user_info.name, bucket_info.placement_id - order by user_info.name, bucket_info.placement_id; - - - - -select wz, code || '.cpu-m' as code, core_h as raw_metric, core_h as metric, core_h as chargeable_metric from qComputing -union all -select wz, code || '.ram-m' as code, gb_h as raw_metric, gb_h as metric, gb_h as chargeable_metric from qComputing -union all -select wz, code, gb_h_used as raw_metric, gb_h_used as metric, gb_h_used as chargeable_metric from qStorage -union all -select wz, code || '.vol', vol_b as raw_metric, vol_gb as metric, vol_GB_free_tier_subtracted as chargeable_metric from qS3Vol -union all -select wz, code || '.get', get as raw_metric, get_10k as metric, get_10k_free_tier_subtracted as chargeable_metric from qS3OpsTrf -union all -select wz, code || '.put', put as raw_metric, put_10k as metric, put_10k_free_tier_subtracted as chargeable_metric from qS3OpsTrf -union all -select wz, code || '.trf', bytes_sent as raw_metric, bytes_sent_gb as metric, bytes_sent_gb_free_tier_subtracted as chargeable_metric from qS3OpsTrf - - - - -SELECT - wz -,code -,price -,discount -,contragent -,contract -,deal -,abstract_service -,modifier -,user_description -,ed_izm -FROM qSpec as s, qUnifiedMetric as m WHERE s.wz=m.wz AND s.code=m.code - - - - - - - - - - - - - - - - diff --git a/payg.cfm b/payg.cfm index 313fb4d..8d7039d 100644 --- a/payg.cfm +++ b/payg.cfm @@ -17,7 +17,7 @@ - + select distinct p.code from elma.deals d @@ -30,7 +30,13 @@ order by p.code + + select k.id_klienta as wz, k.__id::text as contragent_uid, k.__name as contragent + from elma.companies k + where k."__deletedAt" IS NULL + + select k.id_klienta as wz, k.__id::text as contragent_uid, p.code, p.price, p.discount, k.__name as contragent, a.__name as contract, a.__id::text as contract_uid, d.__name as deal, d.__id::text as deal_uid, siv.abstractive_service as abstract_service, siv.modifier, siv.user_description, siv.hash as line_key ,siv.date_nop as dt_from, siv.date_end as dt_to @@ -47,6 +53,7 @@ AND (siv.date_end > OR siv.date_end IS NULL) order by k.id_klienta, p.code + select max(dt_load) as dt_load from elma.deals_services @@ -58,7 +65,7 @@ - select 'WZ'||to_char(tenant.wzcode,'FM00000') as wz, vdc.name as vdc_name, + select m.clientid as wz, vdc.name as vdc_name, case when vdc.name like '%-v1cl1%' then 'iaas.ngc.i29' when vdc.name like '%-v1cl2%' then 'iaas.ngc.i31' @@ -69,12 +76,18 @@ sum(mem_used)/1024/4. as gb_h from ngcloud_ru.capacity_resource join ngcloud_ru.vdc on capacity_resource.vdc_id=vdc.id - join ngcloud_ru.tenant on tenant.id=vdc.tenant_id - where tenant.wzcode > 0 + join ngcloud_ru.tenant t on (t.id=vdc.tenant_id) + left outer join + (select tenant_id, ts, metadata_id, + ROW_NUMBER() OVER (PARTITION BY tenant_id ORDER BY ts desc, metadata_id desc) as rn + from ngcloud_ru.tenant_metadata + ) tm on (t.id = tm.tenant_id AND tm.rn = 1) + left outer join ngcloud_ru.metadata m on (tm.metadata_id=m.id) + where length(m.clientid) > 0 AND capacity_resource.timestamp >= AND capacity_resource.timestamp < - group by tenant.wzcode, vdc.name - order by tenant.wzcode, vdc.name; + group by m.clientid, vdc.name + order by m.clientid, vdc.name; @@ -89,7 +102,7 @@ - select 'WZ'||to_char(tenant.wzcode,'FM00000') as wz, vdc.name as vdc_name, + select m.clientid as wz, vdc.name as vdc_name, case WHEN vdc.name LIKE '%-v1cl1%' THEN 'iaas.ngc.i29' WHEN vdc.name LIKE '%-v1cl2%' THEN 'iaas.ngc.i31' @@ -107,13 +120,19 @@ sum(used)/1024./4 as gb_h_used from ngcloud_ru.capacity_storage join ngcloud_ru.vdc on capacity_storage.vdc_id=vdc.id - join ngcloud_ru.tenant on tenant.id=vdc.tenant_id + join ngcloud_ru.tenant t on t.id=vdc.tenant_id + left outer join + (select tenant_id, ts, metadata_id, + ROW_NUMBER() OVER (PARTITION BY tenant_id ORDER BY ts desc, metadata_id desc) as rn + from ngcloud_ru.tenant_metadata + ) tm on (t.id = tm.tenant_id AND tm.rn = 1) + left outer join ngcloud_ru.metadata m on (tm.metadata_id=m.id) join ngcloud_ru.storage_profile_types on capacity_storage.storage_profile_types_id=storage_profile_types.id - where tenant.wzcode > 0 + where length(m.clientid) > 0 AND capacity_storage.timestamp >= AND capacity_storage.timestamp < - group by tenant.wzcode, vdc.name, storage_profile_types.name - order by tenant.wzcode, vdc.name, storage_profile_types.name; + group by m.clientid, vdc.name, storage_profile_types.name + order by m.clientid, vdc.name, storage_profile_types.name; select max(capacity_storage.timestamp) as dt_load from ngcloud_ru.capacity_storage @@ -267,11 +286,11 @@ select wz, code || '.trf-m', bytes_sent as raw_metric, bytes_sent_gb as metric, - + SELECT - s.wz - s.code + c.wz + m.code m.chargeable_metric s.ed_izm s.price*(100-s.discount)/100 as discounted_price @@ -283,8 +302,8 @@ SELECT s.discount m.raw_metric m.metric - s.contragent - s.contragent_uid + c.contragent + c.contragent_uid s.contract s.contract_uid s.additional_agreement @@ -296,10 +315,48 @@ SELECT s.component s.user_description -FROM qSpec as s, qUnifiedMetric as m WHERE s.wz=m.wz AND s.code=m.code -order by s.wz, s.code +FROM qUnifiedMetric m, qContragent c, qSpec s WHERE m.wz=c.wz AND m.wz=s.wz AND m.code=s.code - + + +SELECT + + c.wz + m.code + m.chargeable_metric + null as ed_izm + null discounted_price + 0 as charge + null as dt_from + null as dt_to + null as line_key + null as price + null as discount + m.raw_metric + m.metric + c.contragent + c.contragent_uid + null as contract + null as contract_uid + null as additional_agreement + null as additional_agreement_uid + null as deal + null as deal_uid + null as abstract_service + null as modifier + null as component + null as user_description + +FROM qUnifiedMetric m, qContragent c WHERE m.wz=c.wz AND m.wz NOT IN (#listQualify(listRemoveDuplicates(ValueList(qChargeInner.wz)),"'")#) + + + +select * from qChargeInner +union +select * from qChargeOuter +order by wz,code + + @@ -408,7 +465,7 @@ S3 операции и трафик: #dateFormat(qS3OpsTrfAge.dt_load,'YYYY-M #dateFormat(dt_to,'YYYY-MM-DD')# #line_key# - #raw_metric# + #raw_metric# #metric# #contract# #additional_agreement# @@ -431,3 +488,12 @@ S3 операции и трафик: #dateFormat(qS3OpsTrfAge.dt_load,'YYYY-M + \ No newline at end of file