diff --git a/Application.cfc b/Application.cfc index 72b0047..d3f85af 100644 --- a/Application.cfc +++ b/Application.cfc @@ -77,7 +77,7 @@ - + diff --git a/mod/payg.cfm b/mod/payg.cfm index 54910fe..2ca1bf9 100644 --- a/mod/payg.cfm +++ b/mod/payg.cfm @@ -26,7 +26,7 @@ - + #getTickCount() - request.startTickCount# @@ -48,7 +48,7 @@ #getTickCount() - request.startTickCount# - + @@ -71,22 +71,34 @@ - + + -select catalogName as svc, component, fullCode as code, measureShort as unit -, priceWVat as price, (discount + serviceDiscount - discount*serviceDiscount/100) as discount -,serviceStart, serviceEnd, serviceHash -from qSpecification +select s.catalogName as svc, s.component, s.fullCode as code, s.measureShort as unit +, s.priceWVat as price, (s.discount + s.serviceDiscount - s.discount*s.serviceDiscount/100) as discount +,s.serviceStart, s.serviceEnd, s.serviceHash, s.serviceCustomName, f.free_tier +from qSpecification s, qFreeTier f +WHERE s.fullCode=f.code + +UNION + +select s.catalogName as svc, s.component, s.fullCode as code, s.measureShort as unit +, s.priceWVat as price, (s.discount + s.serviceDiscount - s.discount*s.serviceDiscount/100) as discount +,s.serviceStart, s.serviceEnd, s.serviceHash, s.serviceCustomName, 0 +from qSpecification s +WHERE s.fullCode NOT IN () + - - - + @@ -98,15 +110,16 @@ from qSpecification 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 + sum(mem_used)/1024/4. as gb_h, + capacity_resource.timestamp::date as dt 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 = - AND capacity_resource.timestamp::date = - - group by tenant.wzcode, vdc.name - order by tenant.wzcode, vdc.name; + AND capacity_resource.timestamp::date >= + AND capacity_resource.timestamp::date <= + group by tenant.wzcode, vdc.name, capacity_resource.timestamp::date + order by tenant.wzcode, vdc.name, capacity_resource.timestamp::date; @@ -132,15 +145,17 @@ from qSpecification as code, storage_profile_types.name, -- *** это не тип, а профайл sum("limit")/1024./4 as gb_h_limit, -- 4 потому, что сбор раз в 15 минут - sum(used)/1024./4 as gb_h_used + sum(used)/1024./4 as gb_h_used, + capacity_storage.timestamp::date as dt 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 = - AND capacity_storage.timestamp ::date = - group by tenant.wzcode, vdc.name, storage_profile_types.name - order by tenant.wzcode, vdc.name, storage_profile_types.name; + AND capacity_storage.timestamp::date >= + AND capacity_storage.timestamp::date <= + group by tenant.wzcode, vdc.name, storage_profile_types.name, capacity_storage.timestamp::date + order by tenant.wzcode, vdc.name, storage_profile_types.name, capacity_storage.timestamp::date; @@ -162,16 +177,16 @@ from qSpecification 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 - + ,bucket_stat.timestamp_addition::date as dt 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.owner = - AND bucket_stat.timestamp_addition::date = - - group by bucket_stat.owner, bucket_stat.placement_id - order by bucket_stat.owner, bucket_stat.placement_id; + AND bucket_stat.timestamp_addition::date >= + AND bucket_stat.timestamp_addition::date <= + group by bucket_stat.owner, bucket_stat.placement_id, bucket_stat.timestamp_addition::date + order by bucket_stat.owner, bucket_stat.placement_id, bucket_stat.timestamp_addition::date; @@ -243,6 +258,7 @@ from qSpecification ,bucket_info.placement_id --category.name, bucket_info.name ,'WZ'||lpad(user_info.name, 5, '0') as wz + ,usage_bucket_by_user.time::date as dt 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 @@ -250,9 +266,10 @@ from qSpecification join s3billing.placement on bucket_info.placement_id=placement.id where 1=1 AND user_info.name = - AND usage_bucket_by_user.time::date = - group by user_info.name, bucket_info.placement_id - order by user_info.name, bucket_info.placement_id; + AND usage_bucket_by_user.time::date >= + AND usage_bucket_by_user.time::date <= + group by user_info.name, bucket_info.placement_id, usage_bucket_by_user.time::date + order by user_info.name, bucket_info.placement_id, usage_bucket_by_user.time::date; @@ -263,22 +280,24 @@ from qSpecification - select wz, code || '.vcpu-m' as code, core_h as raw_metric, core_h as metric, core_h as chargeable_metric from qComputing + select dt, wz, code || '.vcpu-m' as code, core_h as raw_metric, core_h as 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 + select dt, wz, code || '.ram-m' as code, gb_h as raw_metric, gb_h as 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 + select dt, wz, code, gb_h_used as raw_metric, gb_h_used as metric from qStorage union all - select wz, code || '.vol-m', vol_b as raw_metric, vol_gb as metric, vol_GB_free_tier_subtracted as chargeable_metric from qS3Vol + select dt, wz, code || '.vol-m', vol_b as raw_metric, vol_gb as metric from qS3Vol union all - select wz, code || '.get-m', get as raw_metric, get_10k as metric, get_10k_free_tier_subtracted as chargeable_metric from qS3OpsTrf + select dt, wz, code || '.get-m', get as raw_metric, get_10k as metric from qS3OpsTrf union all - select wz, code || '.put-m', put as raw_metric, put_10k as metric, put_10k_free_tier_subtracted as chargeable_metric from qS3OpsTrf + select dt, wz, code || '.put-m', put as raw_metric, put_10k as metric from qS3OpsTrf union all - select wz, code || '.trf-m', bytes_sent as raw_metric, bytes_sent_gb as metric, bytes_sent_gb_free_tier_subtracted as chargeable_metric from qS3OpsTrf + select dt, wz, code || '.trf-m', bytes_sent as raw_metric, bytes_sent_gb as metric from qS3OpsTrf + + order by dt, code - + #getTickCount() - request.startTickCount# @@ -296,39 +315,80 @@ from qSpecification - - SELECT - - s.code - m.code as m_code - s.svc - s.component - m.chargeable_metric - s.unit - s.price*(100-s.discount)/100 as discounted_price - s.price*(100-s.discount)/100*m.chargeable_metric as charge - - - s.price - s.discount - m.raw_metric - m.metric - s.serviceStart - s.serviceEnd - s.serviceHash - as dt - - - FROM qSpec as s, qUnifiedMetric as m - WHERE m.wz= AND s.code=m.code - AND s.serviceStart <= - AND ( <= s.serviceEnd OR s.serviceEnd IS NULL) - order by s.code + + + + + SELECT + + s.code + m.code as m_code + s.svc + s.component + s.unit + s.price*(100-s.discount)/100 as discounted_price + s.price + s.discount + m.raw_metric + m.metric + s.serviceStart + s.serviceEnd + s.serviceHash + s.serviceCustomName + m.dt + s.free_tier + + FROM qSpec as s, qUnifiedMetric as m + WHERE m.wz= + AND s.code=m.code + AND s.serviceStart <= m.dt + AND (m.dt <= s.serviceEnd OR s.serviceEnd IS NULL) + + UNION + SELECT NULL, m.code, NULL, NULL, NULL, NULL, NULL, NULL, m.raw_metric, m.metric, NULL, NULL, NULL, NULL, m.dt, 0 + FROM qUnifiedMetric as m where m.code NOT IN () + + UNION + SELECT s.code, NULL, s.svc, s.component, s.unit, s.price*(100-s.discount)/100, s.price, s.discount, NULL, NULL, s.serviceStart, s.serviceEnd, s.serviceHash, s.serviceCustomName, NULL, 0 + FROM qSpec as s where s.code NOT IN () + + order by m.dt, s.code + + SELECT + + code + m_code + svc + component + unit + discounted_price + sum(raw_metric) as raw_metric + sum(metric) as metric + sum(metric) - free_tier as chargeable_metric + (sum(metric) - free_tier)*discounted_price as charge + serviceStart + serviceEnd + serviceHash + serviceCustomName + free_tier + year(dt) as year + month(dt) as month + + from qChargeDaily + group by code, m_code, svc, serviceCustomName, component, unit, discounted_price, serviceStart, ServiceEnd, serviceHash, free_tier, year(dt), month(dt) + order by year(dt), month(dt), code, m_code + + + + + + + + - + + + #getTickCount() - request.startTickCount# - + #getTickCount() - request.startTickCount# - - @@ -359,7 +419,7 @@ from qSpecification - + diff --git a/payg.cfm b/payg.cfm index 49e11e5..69140bd 100644 --- a/payg.cfm +++ b/payg.cfm @@ -85,14 +85,15 @@ S3 операции и трафик: #dateFormat(report.qS3OpsTrfAge.dt_load, Артикул Кол-во (метрика) Оплачиваемый объем - Ед.изм. + Цена ₽ с НДС Стоимость ₽ с НДС -     +     - Услуга - Компонент + Услуга + Компонент + Ед.изм. - - - - - - #svc# - - - - - - - #currentRow# - - #code# - #metric# - #chargeable_metric# - #unit# - #discounted_price# - #charge# - - - - #svc# - #component# - - - - - - + + + + #year#-#numberFormat(month,"00")# + + + + + + #svc# + (#serviceCustomName#) + (не найдено в договоре) + + + + + + + + #currentRow# + + #code# (#m_code#) + #metric# + #chargeable_metric# + + #discounted_price# + #numberFormat(charge,".00")# + + + + #svc# + #component# + #unit# + + + + + + + + + Итого     #svc#: + #NumFmt(acc,2)# + + + - - - Итого #svc#: - #NumFmt(acc,2)# - -