diff --git a/Application.cfc b/Application.cfc index ab47b40..2d4d27c 100644 --- a/Application.cfc +++ b/Application.cfc @@ -87,7 +87,7 @@ - + diff --git a/contract_ls.cfm b/contract_ls.cfm index 6b0226e..18869a5 100644 --- a/contract_ls.cfm +++ b/contract_ls.cfm @@ -21,10 +21,10 @@ select - d.__id + d.__id::text as __id d.agreement_id d.__name - d.company_uid + d.company_uid::text as company_uid k.__name as contragent k.id_klienta as wz d.date_of_aggrement @@ -33,15 +33,23 @@ c.__name as responsible c.email as responsible_email c.__status_status as responsible_status - (select count(*) from elma.additional_agreements a where a.contract_uid=d.__id AND a."__deletedAt" IS NULL) as aa_cnt + + a.aa_cntнас null вместо 0 совершенно устраивает from elma.aggrements d LEFT OUTER JOIN elma.companies k ON (d.company_uid=k.__id) LEFT OUTER JOIN elma.comp_users_ext c ON (k.responsible=c.__id) + LEFT OUTER JOIN ( + SELECT contract_uid, count(*) AS aa_cnt + FROM elma.additional_agreements + WHERE "__deletedAt" IS NULL + GROUP BY contract_uid + ) a ON (a.contract_uid = d.__id) where 1=1 order by + @@ -116,10 +124,10 @@ select count(*) as cnt from elma.aggrements d where 1=1 - + - + diff --git a/contragent_ls.cfm b/contragent_ls.cfm index 8a8aaa2..9ca3b8a 100644 --- a/contragent_ls.cfm +++ b/contragent_ls.cfm @@ -31,12 +31,30 @@ k."__createdAt" as __createdAt k."__updatedAt" as __updatedAt k."__deletedAt" as __deletedAt - (select count(*) from elma.deals d where d._companies=k.__id) as deal_cnt - (select count(*) from elma.aggrements d where d.company_uid=k.__id) as contract_cnt - (select count(*) from elma.additional_agreements g join elma.aggrements d on (g.contract_uid=d.__id) where d.company_uid=k.__id) as aa_cnt + COALESCE(dc.deal_cnt, 0) AS deal_cnt + COALESCE(cc.contract_cnt, 0) AS contract_cnt + COALESCE(aac.aa_cnt, 0) AS aa_cnt from elma.companies k LEFT OUTER JOIN elma.comp_users_ext c on (k.responsible=c.__id) + LEFT JOIN ( + SELECT _companies AS company_id, count(*) AS deal_cnt + FROM elma.deals + GROUP BY _companies + ) dc ON dc.company_id = k.__id + -- Считаем договоры + LEFT JOIN ( + SELECT company_uid, count(*) AS contract_cnt + FROM elma.aggrements + GROUP BY company_uid + ) cc ON cc.company_uid = k.__id + -- Считаем доп. соглашения + LEFT JOIN ( + SELECT d.company_uid, count(*) AS aa_cnt + FROM elma.additional_agreements g + JOIN elma.aggrements d ON g.contract_uid = d.__id + GROUP BY d.company_uid + ) aac ON aac.company_uid = k.__id where 1=1 --AND exists (select * from elma.deals d where d._companies=k.__id) order by @@ -109,7 +127,7 @@ select count(*) as cnt from elma.companies where 1=1 - + diff --git a/payg.cfm b/payg.cfm index d54ce3d..abfcc51 100644 --- a/payg.cfm +++ b/payg.cfm @@ -13,8 +13,12 @@ - + + + + + @@ -65,7 +69,7 @@ ,siv.end_customer as end_customer_uid ,z.id_klienta as end_customer_wz ,z.__name as end_customer_name - ,ft.free_tier + --,ft.free_tier ,s.probability_pc ,siv.__id::text as siv_uid from elma.deals d @@ -78,7 +82,7 @@ join elma.additional_agreements aa on (aa.__id = ANY(siv.additional_agreement)) join elma.aggrements a on (aa.contract_uid = a.__id) left outer join elma.companies z on (siv.end_customer=z.__id) - left outer join (values ('paas.s3.ceph.vol-m',1),('paas.s3.ceph.get-m',10),('paas.s3.ceph.put-m',1),('paas.s3.ceph.trf-m',100)) as ft(code,free_tier) ON (p.code=ft.code) + where p.type IN (2,3) AND aa.is_actual AND siv.date_nop < AND (siv.date_end > OR siv.date_end IS NULL)/*****/ @@ -487,7 +491,7 @@ SELECT s.component_quantity s.service_quantity s.service_discount - coalesce(s.free_tier,0) as free_tier + coalesce(ft.free_tier,0) as free_tier m.dimension1 s.type m.unit @@ -519,7 +523,13 @@ SELECT CASE s.type WHEN 1 THEN 'install' WHEN 2 THEN 'fix' WHEN 3 THEN 'payg' ELSE NULL END as pricing_model FROM qUnifiedMetric m -FULL JOIN qSpec s ON (m.wz=s.wz AND m.code=s.sku_code) -- сервис или компонент, но не цена с типом тарификации, суффикс типа тарификации отрезан + + +FULL + +JOIN qSpec s ON (m.wz=s.wz AND m.code=s.sku_code) -- сервис или компонент, но не цена с типом тарификации, суффикс типа тарификации отрезан +--left outer join (values ('paas.s3.ceph.vol-m',1),('paas.s3.ceph.get-m',10),('paas.s3.ceph.put-m',1),('paas.s3.ceph.trf-m',100)) as ft(code,free_tier) ON (m.code=ft.code) +left outer join (values ('paas.s3.ceph.vol',1),('paas.s3.ceph.get',10),('paas.s3.ceph.put',1),('paas.s3.ceph.trf',100)) as ft(code,free_tier) ON (m.code=ft.code) LEFT JOIN qContragent c ON ((coalesce(s.wz,m.wz))=(c.wz)) -- пробелы в составе WZ стоили нескольких часов работы --(поскольку trim слева в джойне катастрофически замедляет работу, делаем чистку выше при формировании исходных резалтсетов) WHERE 1=1 @@ -579,18 +589,22 @@ ORDER BY coalesce(coalesce(c.wz, m.wz), s.wz), coalesce(s.code, m.code)
Период с по -Только PAYG checked/> + checked/> + checked/> +    WZ по вхождению, с регистром +    Код по вхождению +   
Часов в периоде: #hours# Строк в отчете: #qCharge.recordCount#
Актуальность данных: -VCD Computing: class="err">>#dateFormat(qComputingAge.dt_load,'YYYY-MM-DD')# #timeFormat(qComputingAge.dt_load,'HH:mm:ss.lXX')# -VCD Storage: class="err">>#dateFormat(qStorageAge.dt_load,'YYYY-MM-DD')# #timeFormat(qStorageAge.dt_load,'HH:mm:ss.lXX')# -S3 хранение: class="err">>#dateFormat(qS3VolAge.dt_load,'YYYY-MM-DD')# #timeFormat(qS3VolAge.dt_load,'HH:mm:ss.lXX')# -S3 операции и трафик: class="err">>#dateFormat(qS3OpsTrfAge.dt_load,'YYYY-MM-DD')# #timeFormat(qS3OpsTrfAge.dt_load,'HH:mm:ss.lXX')# +VCD Computing: class="err">#dateFormat(qComputingAge.dt_load,'YYYY-MM-DD')# #timeFormat(qComputingAge.dt_load,'HH:mm:ss.lXX')# +VCD Storage: class="err">#dateFormat(qStorageAge.dt_load,'YYYY-MM-DD')# #timeFormat(qStorageAge.dt_load,'HH:mm:ss.lXX')# +S3 хранение: class="err">#dateFormat(qS3VolAge.dt_load,'YYYY-MM-DD')# #timeFormat(qS3VolAge.dt_load,'HH:mm:ss.lXX')# +S3 операции и трафик: class="err">#dateFormat(qS3OpsTrfAge.dt_load,'YYYY-MM-DD')# #timeFormat(qS3OpsTrfAge.dt_load,'HH:mm:ss.lXX')#
@@ -665,14 +679,15 @@ S3 операции и трафик: + - - + + class="gray"> #currentRow# @@ -718,25 +733,28 @@ S3 операции и трафик: + Итого #code#: - #round(final_metric_dimension_1,3)# + #accum_metric_dimension_1##round(final_metric_dimension_1,3)# #free_tier# #max(ceiling(final_metric_dimension_1) - free_tier, 0)# #unit# [#ed_izm#] #current_price# #gaussianRoundSafe(cost_dimension_1,2)# + + #request.roundSafe(accum_metric_dimension_1_all,3)# - + и Итого #wz# #contragent#: #accum_cost_svc#