pageInfo=#pageInfo# id="#d.__id#" status=#pageInfo.status# trackOut="tr" idAttributesOut="id" /> Отчет по контрагенту #d.__name# [#d.__id#]
ID
#d.__id#
Контрагент
ИНН
#d._inn#
КПП
#d._kpp#
WZ
#d.id_klienta#
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) ) ,line AS ( SELECT siv.__id AS siv_uid ,siv.discount ,siv.type AS line_pricing_model_id ,siv.hash AS line_key ,siv.is_actual AS siv_is_actual ,siv.version::NUMERIC AS line_version ,siv.modifier_code ,siv.abstractive_service_code ,siv.__index AS siv_index ,d.__index AS deal_index ,d._companies ,a.index AS agreement_version ,siv.date_nop::DATE AS dt_from ,siv.date_end::DATE AS dt_to ,siv.is_easy AS is_simple ,siv.cnt ,s.probability_pc ,a.__id AS additional_agreement_uid ,a.contract_uid ,a.is_actual AS additional_agreement_is_actual ,a.deal_uid ,a.__name AS additional_agreement ,d.__name AS deal ,d.__status_status AS deal_status_id ,siv.user_description -- ,siv.params 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 JOIN elma.additional_agreements a ON (a.__id = ANY (siv.additional_agreement)) WHERE siv.is_actual AND siv."__deletedAt" IS NULL AND d."__deletedAt" IS NULL AND a."__deletedAt" IS NULL AND s.probability_pc >= 50 --and a.is_actual *** возможно, схема версионности противоречива AND siv.type IN (2, 3) AND d._companies = ) ,component AS ( SELECT cnt ,code ,__id ,price ,ed_izm ,discount ,name FROM elma.service_parametrs WHERE "__deletedAt" IS NULL ) ,stair AS ( SELECT * FROM ( SELECT * ,MIN(dt_from) OVER ( PARTITION BY line_key ORDER BY deal_index DESC ) running_min_dt ,COALESCE(( LEAD(dt_from) OVER ( PARTITION BY line_key ORDER BY dt_from ,deal_index ) ), ( SELECT CURRENT_TIMESTAMP + INTERVAL '1 day' )) dt_next FROM line WHERE probability_pc > 0 ) t WHERE t.dt_from = t.running_min_dt --AND ( t.dt_to > CURRENT_TIMESTAMP OR t.dt_to IS NULL ) ) SELECT d.siv_uid::text as siv_uid ,d.siv_index ,d.deal ,d.user_description ,d.discount ,d.cnt ,d.modifier_code ,d.abstractive_service_code ,d.additional_agreement_is_actual ,d.line_pricing_model_id ,d.line_key ,d.deal_index ,d.dt_from ,d.dt_to ,d.dt_next ,d.is_simple ,d.additional_agreement_uid::text as additional_agreement_uid ,d.additional_agreement ,d.deal_index ,d.deal_uid::text as deal_uid ,s.probability_pc ,s.status_id ,s.STATUS ,p.price ,p.cnt as p_cnt ,p.ed_izm ,p.code ,p.discount as p_discount ,p.__id::text as p_uid ,p.name FROM stair d JOIN status s ON (d.deal_status_id = s.status_id) LEFT JOIN LATERAL unnest(d.params) AS arr(param_id) ON TRUE JOIN component p ON (p.__id = arr.param_id) WHERE d.dt_from <= CURRENT_TIMESTAMP AND (CURRENT_TIMESTAMP < d.dt_next)

Услуги по данным CRM (версии строк спецификации, только актуальные на сегодня, сделки с вероятностью от 50% (начиная с тестирования)

class="gray">
__index Код Пользовательское наименование Компоненты Кол-во Сумма Модель оплаты Дата НОУ date_end Вер.% Дополнительное соглашение Ключ строки
#siv_index# #abstractive_service_code#.#modifier_code# #user_description#
#code# #name# #p_cnt# #ed_izm# #nFmt(price*p_cnt*(100-(isNumeric(p_discount)?p_discount:0))/100, 2)#
#cnt# #nFmt(cost*cnt*(100-(isNumeric(discount)?discount:0))/100)# install fix payg (#line_pricing_model_id#) #dateFormat(dt_from,'YYYY-MM-DD')# #dateFormat(dt_to,'YYYY-MM-DD')# #probability_pc# #additional_agreement# (#status_id# #status#) #line_key#
select c."Organization_UUID"::text ,c."Organization" ,c."VDC" ,c."VDC_CPU_Reserv" ,"Cluster" , round(sum(c."VM_RAM_Allocated")) as ram , round(sum(CASE WHEN "VM_is_ON" > 0 THEN c."VM_RAM_Allocated" ELSE 0 END)) as ram_on , round(sum(c."VM_vCPU_count")) as cpu , round(sum(CASE WHEN "VM_is_ON" > 0 THEN c."VM_vCPU_count" ELSE 0 END)) as cpu_on , round(avg(c."VDC_CPU_Speed")::numeric,1) as ghz FROM vmreports.compute c WHERE ts=(select max(ts) from vmreports.compute) AND lower(c."WZ")=lower() GROUP BY c."Organization_UUID", c."Organization", c."VDC", c."VDC_CPU_Reserv", c."Cluster" select sum(ram) as ram ,sum(ram_on) as ram_on ,sum(cpu) as cpu ,sum(cpu_on) as cpu_on FROM qCompute

Compute факт

Организация VDC Резерв % Кластер GHz CPU cores CPU_ON cores RAM GB RAM_ON GB
#Organization# #VDC# #VDC_CPU_Reserv# #qCompute.Cluster# #ghz# #cpu# #cpu_on# #ram# #ram_on#
Итого: #cpu# #cpu_on# #ram# #ram_on#
select "Organization_UUID"::text ,"Organization" ,"VDC" ,"Cluster" ,"Storage_Policy" , round(sum(c."Disk_Allocated")) as disk_alloc , round(sum(c."Disk_Used")) as disk_used FROM vmreports.storage c WHERE ts=(select max(ts) from vmreports.storage) AND lower(c."WZ")=lower() GROUP BY c."Organization_UUID",c."Organization",c."VDC",c."Cluster",c."Storage_Policy" select sum(disk_alloc) as disk_alloc ,sum(disk_used) as disk_used FROM qStorage

Storage факт

Организация VDC Кластер Политика хранения Выделено GB Используется GB
#Organization# #VDC# #qCompute.Cluster# #Storage_Policy# #disk_alloc# #disk_used#
Итого: #disk_alloc# #disk_used#
select "Object_UUID"::text ,"Org" ,"OrgStatus" ,"OrgVDC" ,(select STRING_AGG(DISTINCT "Cluster",',') FROM vmreports.compute c WHERE ts=(select max(ts) from vmreports.compute) AND g."Org"=c."Organization") as org_cluster ,"Name" ,"GPU" FROM vmreports.vm_gpu g WHERE ts=(select max(ts) from vmreports.vm_gpu) AND lower(g."ClientID")=lower()

GPU факт

Организация Статус организации VDC Кластер VM GPU
#Org# #OrgStatus# #OrgVDC# #org_cluster# #Name# #GPU#


добавить реестр GPU и VDC для поиска потеряшек