015 probability A B
This commit is contained in:
parent
0634f4b6c7
commit
7d0e2abc0f
@ -69,7 +69,7 @@
|
||||
<!--- <cfset this.datasources["#this.datasource#"]=getDS("#this.datasource#","datasource_#this.datasource#")/> --->
|
||||
|
||||
<cfset request.RECORDS_PER_PAGE=500/>
|
||||
<cfset request.APP_VERSION="0.00.014"/>
|
||||
<cfset request.APP_VERSION="0.00.015"/>
|
||||
|
||||
<cflock scope="application" type="readonly" timeout=3>
|
||||
<cfset request.APP_NAME=this.Name/>
|
||||
|
@ -32,12 +32,14 @@ from (
|
||||
--install
|
||||
DATE_TRUNC('month', dayscale.dt)::date as m
|
||||
,dayscale.dt::date
|
||||
,sum(siv.price*siv.quantity*a.probability_perc/100) as income_install
|
||||
,sum(siv.price*siv.quantity*a.probability_perc/100
|
||||
+ COALESCE(siv0.price*siv0.quantity*(100-a.probability_perc)/100, 0)
|
||||
) as income_install
|
||||
,0 as income_recurring
|
||||
from (SELECT dd::date as dt FROM generate_series(
|
||||
'2023-01-01'::timestamp
|
||||
, '2029-12-31'::timestamp
|
||||
, '1 day'::interval) dd
|
||||
,'2029-12-31'::timestamp
|
||||
,'1 day'::interval) dd
|
||||
) dayscale
|
||||
join specification_item_version siv on (dayscale.dt=siv.dt_from)
|
||||
join specification_item si on (siv.specification_item_uid=si.specification_item_uid AND si.pricing_model_id in (1))
|
||||
@ -47,11 +49,22 @@ from (
|
||||
join specification isp on (ii.specification_id=isp.specification_id)
|
||||
join agreement ia on (isp.contract_id=ia.contract_id AND iiv.agreement_version=ia.agreement_version)
|
||||
where iiv.specification_item_uid=si.specification_item_uid
|
||||
AND ia.is_actual
|
||||
--AND ia.is_actual
|
||||
))
|
||||
join contract d on s.contract_id=d.contract_id
|
||||
join contragent k on d.contragent_id=k.contragent_id
|
||||
join svc on (si.svc_id=svc.svc_id)
|
||||
left outer join agreement a0 on (s.contract_id=a0.contract_id AND siv.agreement_version=a0.agreement_version AND a0.agreement_version=(select max(iiv.agreement_version) from specification_item_version iiv
|
||||
join specification_item ii on (iiv.specification_item_uid=ii.specification_item_uid)
|
||||
join specification isp on (ii.specification_id=isp.specification_id)
|
||||
join agreement ia on (isp.contract_id=ia.contract_id AND iiv.agreement_version=ia.agreement_version)
|
||||
where iiv.specification_item_uid=si.specification_item_uid
|
||||
AND ia.agreement_version < a.agreement_version
|
||||
AND ia.is_actual
|
||||
))
|
||||
left outer join specification_item_version siv0 on (siv0.specification_item_uid=si.specification_item_uid
|
||||
AND siv0.agreement_version=a0.agreement_version)
|
||||
where 1=1 <m:filter_build filter=#pageInfo.settings.filter#/>
|
||||
group by dayscale.dt
|
||||
|
||||
union all
|
||||
@ -61,13 +74,15 @@ from (
|
||||
DATE_TRUNC('month', dayscale.dt)::date as m
|
||||
,dayscale.dt::date
|
||||
,0
|
||||
,sum(siv.price*siv.quantity*a.probability_perc/100/dayscale.days)
|
||||
,sum(siv.price*siv.quantity*a.probability_perc/100/dayscale.days
|
||||
+ COALESCE(siv0.price*siv0.quantity*(100-a.probability_perc)/100/dayscale.days, 0)
|
||||
)
|
||||
from (SELECT dd::date as dt
|
||||
, DATE_PART('days', DATE_TRUNC('month', dd) + '1 MONTH'::INTERVAL - '1 DAY'::INTERVAL) days
|
||||
FROM generate_series(
|
||||
'2023-01-01'::timestamp
|
||||
, '2029-12-31'::timestamp
|
||||
, '1 day'::interval) dd
|
||||
'2023-01-01'::timestamp
|
||||
,'2029-12-31'::timestamp
|
||||
,'1 day'::interval) dd
|
||||
) dayscale
|
||||
join specification_item_version siv on (dayscale.dt >= siv.dt_from AND (siv.dt_to >= dayscale.dt OR siv.dt_to IS NULL))
|
||||
join specification_item si on (siv.specification_item_uid=si.specification_item_uid AND si.pricing_model_id in (2,3))
|
||||
@ -77,17 +92,28 @@ from (
|
||||
join specification isp on (ii.specification_id=isp.specification_id)
|
||||
join agreement ia on (isp.contract_id=ia.contract_id AND iiv.agreement_version=ia.agreement_version)
|
||||
where iiv.specification_item_uid=si.specification_item_uid
|
||||
AND ia.is_actual
|
||||
--AND ia.is_actual
|
||||
))
|
||||
join contract d on s.contract_id=d.contract_id
|
||||
join contragent k on d.contragent_id=k.contragent_id
|
||||
join svc on (si.svc_id=svc.svc_id)
|
||||
left outer join agreement a0 on (s.contract_id=a0.contract_id AND siv.agreement_version=a0.agreement_version AND a0.agreement_version=(select max(iiv.agreement_version) from specification_item_version iiv
|
||||
join specification_item ii on (iiv.specification_item_uid=ii.specification_item_uid)
|
||||
join specification isp on (ii.specification_id=isp.specification_id)
|
||||
join agreement ia on (isp.contract_id=ia.contract_id AND iiv.agreement_version=ia.agreement_version)
|
||||
where iiv.specification_item_uid=si.specification_item_uid
|
||||
AND ia.agreement_version < a.agreement_version
|
||||
AND ia.is_actual
|
||||
))
|
||||
left outer join specification_item_version siv0 on (siv0.specification_item_uid=si.specification_item_uid
|
||||
AND siv0.agreement_version=a0.agreement_version)
|
||||
where 1=1 <m:filter_build filter=#pageInfo.settings.filter#/>
|
||||
group by dayscale.dt
|
||||
) install_fix_payg
|
||||
order by dt
|
||||
<!--- where 1=1 <m:filter_build filter=#pageInfo.settings.filter#/>
|
||||
order by <m:order_build sortArray=#pageInfo.settings.sort.sortArray# fieldCount=#fieldCount#/> --->
|
||||
|
||||
</cfquery>
|
||||
<!--- <cfdump var=#pageInfo.settings.filter#/> --->
|
||||
|
||||
|
||||
|
||||
@ -112,10 +138,10 @@ select count(*) as cnt from specification_item where 1=1
|
||||
<layout:attribute name="title">
|
||||
<cfoutput><b>Выручка по дням 2023-01-01 .. 2029-12-31</b></cfoutput>
|
||||
</layout:attribute>
|
||||
<layout:attribute name="controls">
|
||||
<!---skip filter link, filter is not implemented--->
|
||||
<!---<layout:language_switch/>--->
|
||||
</layout:attribute>
|
||||
<!--- <layout:attribute name="controls">
|
||||
skip filter link, filter is not implemented
|
||||
<layout:language_switch/>
|
||||
</layout:attribute> --->
|
||||
</layout:page>
|
||||
|
||||
<cfif pageInfo.readPermitted() AND !pageInfo.status.errorState>
|
||||
|
@ -12,10 +12,10 @@
|
||||
|
||||
<m:prepare_ls entity="specification_item" accessObject="" pageInfoOut="pageInfo" trackOut="tr"/>
|
||||
|
||||
<!--- <m:filter_settings target="#pageInfo.entity#_ls">
|
||||
<m:filter_settings target="#pageInfo.entity#_ls">
|
||||
<m:filterparam filter=#filter# param="quickfilter" ftype="string" prefix="%" suffix="%" expression="((p.project like ?) OR (p.customer like ?) OR (p.customer_alias like ?) OR (p.specification_item_class_type like ?) OR (p.division like ?) OR (p.performer_short like ?))" default=""/>
|
||||
</m:filter_settings> --->
|
||||
<!--- <cfset pageInfo.settings.filter=#filter#/> --->
|
||||
</m:filter_settings>
|
||||
<cfset pageInfo.settings.filter=#filter#/>
|
||||
|
||||
|
||||
<cfquery name="qRead" datasource="#request.DS#">
|
||||
@ -30,59 +30,84 @@ from (
|
||||
select
|
||||
--install
|
||||
DATE_TRUNC('month', dayscale.dt)::date as m
|
||||
,sum(siv.price*siv.quantity*a.probability_perc/100) as income_install
|
||||
,sum(siv.price*siv.quantity*a.probability_perc/100
|
||||
+ COALESCE(siv0.price*siv0.quantity*(100-a.probability_perc)/100, 0)
|
||||
) as income_install
|
||||
,0 as income_recurring
|
||||
from
|
||||
(SELECT dd::date as dt FROM generate_series
|
||||
( '2023-01-01'::timestamp
|
||||
, '2029-12-31'::timestamp
|
||||
, '1 day'::interval) dd) dayscale
|
||||
join specification_item_version siv on (dayscale.dt=siv.dt_from)
|
||||
join specification_item si on (siv.specification_item_uid=si.specification_item_uid AND si.pricing_model_id in (1))
|
||||
join specification s on (si.specification_id=s.specification_id)
|
||||
join agreement a on (s.contract_id=a.contract_id AND siv.agreement_version=a.agreement_version AND a.agreement_version=(select max(iiv.agreement_version) from specification_item_version iiv
|
||||
join specification_item ii on (iiv.specification_item_uid=ii.specification_item_uid)
|
||||
join specification isp on (ii.specification_id=isp.specification_id)
|
||||
join agreement ia on (isp.contract_id=ia.contract_id AND iiv.agreement_version=ia.agreement_version)
|
||||
where iiv.specification_item_uid=si.specification_item_uid
|
||||
AND ia.is_actual
|
||||
))
|
||||
join contract d on s.contract_id=d.contract_id
|
||||
join contragent k on d.contragent_id=k.contragent_id
|
||||
join svc on (si.svc_id=svc.svc_id)
|
||||
group by DATE_TRUNC('month', dayscale.dt)
|
||||
from
|
||||
(SELECT dd::date as dt FROM generate_series
|
||||
( '2023-01-01'::timestamp
|
||||
, '2029-12-31'::timestamp
|
||||
, '1 day'::interval) dd) dayscale
|
||||
join specification_item_version siv on (dayscale.dt=siv.dt_from)
|
||||
join specification_item si on (siv.specification_item_uid=si.specification_item_uid AND si.pricing_model_id in (1))
|
||||
join specification s on (si.specification_id=s.specification_id)
|
||||
join agreement a on (s.contract_id=a.contract_id AND siv.agreement_version=a.agreement_version AND a.agreement_version=(select max(iiv.agreement_version) from specification_item_version iiv
|
||||
join specification_item ii on (iiv.specification_item_uid=ii.specification_item_uid)
|
||||
join specification isp on (ii.specification_id=isp.specification_id)
|
||||
join agreement ia on (isp.contract_id=ia.contract_id AND iiv.agreement_version=ia.agreement_version)
|
||||
where iiv.specification_item_uid=si.specification_item_uid
|
||||
--AND ia.is_actual
|
||||
))
|
||||
join contract d on s.contract_id=d.contract_id
|
||||
join contragent k on d.contragent_id=k.contragent_id
|
||||
join svc on (si.svc_id=svc.svc_id)
|
||||
left outer join agreement a0 on (s.contract_id=a0.contract_id AND siv.agreement_version=a0.agreement_version AND a0.agreement_version=(select max(iiv.agreement_version) from specification_item_version iiv
|
||||
join specification_item ii on (iiv.specification_item_uid=ii.specification_item_uid)
|
||||
join specification isp on (ii.specification_id=isp.specification_id)
|
||||
join agreement ia on (isp.contract_id=ia.contract_id AND iiv.agreement_version=ia.agreement_version)
|
||||
where iiv.specification_item_uid=si.specification_item_uid
|
||||
AND ia.agreement_version < a.agreement_version
|
||||
AND ia.is_actual
|
||||
))
|
||||
left outer join specification_item_version siv0 on (siv0.specification_item_uid=si.specification_item_uid
|
||||
AND siv0.agreement_version=a0.agreement_version)
|
||||
where 1=1 <m:filter_build filter=#pageInfo.settings.filter#/>
|
||||
group by DATE_TRUNC('month', dayscale.dt)
|
||||
|
||||
union all
|
||||
|
||||
select
|
||||
select
|
||||
DATE_TRUNC('month', dayscale.dt)::date as m
|
||||
,0
|
||||
,sum(siv.price*siv.quantity*a.probability_perc/100/dayscale.days)
|
||||
from
|
||||
(SELECT dd::date as dt, DATE_PART('days',
|
||||
DATE_TRUNC('month', dd) + '1 MONTH'::INTERVAL - '1 DAY'::INTERVAL
|
||||
) days FROM generate_series
|
||||
( '2023-01-01'::timestamp
|
||||
, '2029-12-31'::timestamp
|
||||
, '1 day'::interval) dd) dayscale
|
||||
join specification_item_version siv on (dayscale.dt >= siv.dt_from AND (siv.dt_to >= dayscale.dt OR siv.dt_to IS NULL))
|
||||
join specification_item si on (siv.specification_item_uid=si.specification_item_uid AND si.pricing_model_id in (2,3))
|
||||
join specification s on (si.specification_id=s.specification_id )
|
||||
join agreement a on (s.contract_id=a.contract_id AND siv.agreement_version=a.agreement_version AND a.agreement_version=(select max(iiv.agreement_version) from specification_item_version iiv
|
||||
join specification_item ii on (iiv.specification_item_uid=ii.specification_item_uid)
|
||||
join specification isp on (ii.specification_id=isp.specification_id)
|
||||
join agreement ia on (isp.contract_id=ia.contract_id AND iiv.agreement_version=ia.agreement_version)
|
||||
where iiv.specification_item_uid=si.specification_item_uid
|
||||
AND ia.is_actual
|
||||
))
|
||||
join contract d on s.contract_id=d.contract_id
|
||||
join contragent k on d.contragent_id=k.contragent_id
|
||||
join svc on (si.svc_id=svc.svc_id)
|
||||
|
||||
group by DATE_TRUNC('month', dayscale.dt)
|
||||
,sum(siv.price*siv.quantity*a.probability_perc/100/dayscale.days
|
||||
+ COALESCE(siv0.price*siv0.quantity*(100-a.probability_perc)/100/dayscale.days, 0)
|
||||
)
|
||||
from
|
||||
(SELECT dd::date as dt, DATE_PART('days',
|
||||
DATE_TRUNC('month', dd) + '1 MONTH'::INTERVAL - '1 DAY'::INTERVAL
|
||||
) days FROM generate_series
|
||||
( '2023-01-01'::timestamp
|
||||
, '2029-12-31'::timestamp
|
||||
, '1 day'::interval) dd) dayscale
|
||||
join specification_item_version siv on (dayscale.dt >= siv.dt_from AND (siv.dt_to >= dayscale.dt OR siv.dt_to IS NULL))
|
||||
join specification_item si on (siv.specification_item_uid=si.specification_item_uid AND si.pricing_model_id in (2,3))
|
||||
join specification s on (si.specification_id=s.specification_id )
|
||||
join agreement a on (s.contract_id=a.contract_id AND siv.agreement_version=a.agreement_version AND a.agreement_version=(select max(iiv.agreement_version) from specification_item_version iiv
|
||||
join specification_item ii on (iiv.specification_item_uid=ii.specification_item_uid)
|
||||
join specification isp on (ii.specification_id=isp.specification_id)
|
||||
join agreement ia on (isp.contract_id=ia.contract_id AND iiv.agreement_version=ia.agreement_version)
|
||||
where iiv.specification_item_uid=si.specification_item_uid
|
||||
--AND ia.is_actual
|
||||
))
|
||||
join contract d on s.contract_id=d.contract_id
|
||||
join contragent k on d.contragent_id=k.contragent_id
|
||||
join svc on (si.svc_id=svc.svc_id)
|
||||
left outer join agreement a0 on (s.contract_id=a0.contract_id AND siv.agreement_version=a0.agreement_version AND a0.agreement_version=(select max(iiv.agreement_version) from specification_item_version iiv
|
||||
join specification_item ii on (iiv.specification_item_uid=ii.specification_item_uid)
|
||||
join specification isp on (ii.specification_id=isp.specification_id)
|
||||
join agreement ia on (isp.contract_id=ia.contract_id AND iiv.agreement_version=ia.agreement_version)
|
||||
where iiv.specification_item_uid=si.specification_item_uid
|
||||
AND ia.agreement_version < a.agreement_version
|
||||
AND ia.is_actual
|
||||
))
|
||||
left outer join specification_item_version siv0 on (siv0.specification_item_uid=si.specification_item_uid
|
||||
AND siv0.agreement_version=a0.agreement_version)
|
||||
where 1=1 <m:filter_build filter=#pageInfo.settings.filter#/>
|
||||
group by DATE_TRUNC('month', dayscale.dt)
|
||||
) install_fix_payg
|
||||
order by 1
|
||||
<!--- where 1=1 <m:filter_build filter=#pageInfo.settings.filter#/>
|
||||
<!---
|
||||
order by <m:order_build sortArray=#pageInfo.settings.sort.sortArray# fieldCount=#fieldCount#/> --->
|
||||
</cfquery>
|
||||
|
||||
@ -109,10 +134,7 @@ select count(*) as cnt from specification_item where 1=1
|
||||
<layout:attribute name="title">
|
||||
<cfoutput><b>Выручка по месяцам 2023-01-01 .. 2029-12-31</b></cfoutput>
|
||||
</layout:attribute>
|
||||
<layout:attribute name="controls">
|
||||
<!---skip filter link, filter is not implemented--->
|
||||
<!---<layout:language_switch/>--->
|
||||
</layout:attribute>
|
||||
|
||||
</layout:page>
|
||||
|
||||
<cfif pageInfo.readPermitted() AND !pageInfo.status.errorState>
|
||||
|
119
specification_item_filter.cfm
Normal file
119
specification_item_filter.cfm
Normal file
@ -0,0 +1,119 @@
|
||||
<cfsilent>
|
||||
<cfimport prefix="m" taglib="lib"/>
|
||||
<cfimport prefix="c" taglib="lib/controls"/>
|
||||
<cfimport prefix="d" taglib="lib/data"/>
|
||||
<cfimport prefix="layout" taglib="layout"/>
|
||||
</cfsilent><m:silent silent="No">
|
||||
|
||||
<m:prepare_filter entity="specification_item" pageInfoOut="pageInfo" trackOut="tr"/>
|
||||
<m:filter_settings target="specification_item_ls">
|
||||
|
||||
<!--- <m:filterparam filter=#filter# param="service_type_id" ftype="numeric" compare="EQ" field="a.service_type_id" default=""/> --->
|
||||
<m:filterparam filter=#filter# param="contragent_id" ftype="numeric" compare="EQ" field="d.contragent_id" default=""/>
|
||||
<m:filterparam filter=#filter# param="contract_id" ftype="numeric" compare="EQ" field="d.contract_id" default=""/>
|
||||
|
||||
<!--- <m:filterparam filter=#filter# param="is_deleted" ftype="numeric" compare="EQ" field="case when e.is_deleted then 1 else 0 end" default=""/> ---><!--- *** Сделать дефолтом Нет --->
|
||||
<!--- --->
|
||||
|
||||
</m:filter_settings>
|
||||
|
||||
<cfif isDefined("resetAndClose") or isDefined("saveAndClose")>
|
||||
<cflocation url="#tr.backUrl#" addtoken="No"/>
|
||||
</cfif>
|
||||
|
||||
</m:silent><!--- ----------------------------------------------------------------------------
|
||||
---------------------------------------------------------------------------------------------
|
||||
---------------------------------------------------------------------------------------------
|
||||
---><layout:page section="header" pageInfo=#pageInfo#>
|
||||
<layout:attribute name="title"><cfoutput>Строки спецификаций - фильтр</cfoutput></layout:attribute>
|
||||
</layout:page>
|
||||
<!---<script type="text/javascript"/>
|
||||
$(document).ready(function() {
|
||||
|
||||
try {
|
||||
$("#customer_id").searchable({maxMultiMatch: 50});
|
||||
$("#service_manager_id").searchable({maxMultiMatch: 50});
|
||||
} catch (e) {alert(e)}
|
||||
});
|
||||
</script>--->
|
||||
<cfoutput>
|
||||
<input type="hidden" name="track" value="#tr.self#"/>
|
||||
|
||||
<div class="detail">
|
||||
|
||||
<div class="tr">
|
||||
<div class="th"></div>
|
||||
<div class="td">
|
||||
<button type="button" name="reset" onClick="document.location.href='#request.thisPage#?reset=yes&track=#tr.self#'">#i18("Очистить","Clear")#</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!--- <div class="tr">
|
||||
<div class="th">Контрагент</div>
|
||||
<div class="td">
|
||||
<input type="text" name="contragent" value="#contragent#" size="50"/>
|
||||
<i>#i18("по вхождению подстроки","by substring")#</i>
|
||||
</div>
|
||||
</div> --->
|
||||
|
||||
<div class="tr">
|
||||
<div class="th">Контрагент</div>
|
||||
<div class="td" style="vertical-align:top;">
|
||||
<cfquery name="qList" datasource="#request.DS#">
|
||||
select contragent_id, contragent
|
||||
from contragent
|
||||
order by contragent
|
||||
</cfquery>
|
||||
|
||||
<c:combo
|
||||
query=#qList#
|
||||
combo="contragent_id"
|
||||
id="contragent_id"
|
||||
key="contragent_id"
|
||||
displayf="##contragent##"
|
||||
selected=#contragent_id#
|
||||
empty=""
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tr">
|
||||
<div class="th">Договор</div>
|
||||
<div class="td" style="vertical-align:top;">
|
||||
<cfquery name="qList" datasource="#request.DS#">
|
||||
select d.contract_id, d.contract, d.dt_contract, k.contragent
|
||||
from contract d
|
||||
join contragent k on (d.contragent_id=k.contragent_id)
|
||||
order by contract
|
||||
</cfquery>
|
||||
|
||||
<c:combo
|
||||
query=#qList#
|
||||
combo="contract_id"
|
||||
id="contract_id"
|
||||
key="contract_id"
|
||||
displayf="##contract## ##dateFormat(dt_contract,'DD.MM.YYYY')## [##contract_id##] ##contragent##"
|
||||
selected=#contract_id#
|
||||
empty=""
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--- <div class="tr">
|
||||
<div class="th">Вкл</div>
|
||||
<div class="td">
|
||||
<input type="radio" name="is_enabled" id="is_enabled_1" value="1"<cfif #is_enabled# GT 0> checked</cfif>/><label for="is_enabled_1">Да</label>
|
||||
<input type="radio" name="is_enabled" id="is_enabled_0" value="0"<cfif #is_enabled# EQ 0> checked</cfif>/><label for="is_enabled_0">Нет</label>
|
||||
<input type="radio" name="is_enabled" id="is_enabled_" value=""<cfif #is_enabled# EQ ""> checked</cfif>/><label for="is_enabled_">Может быть</label>
|
||||
<i></i>
|
||||
</div>
|
||||
</div> --->
|
||||
|
||||
|
||||
</div><!--- detail --->
|
||||
|
||||
</cfoutput>
|
||||
|
||||
<layout:page section="footer" closeForm="Yes"/>
|
||||
<!--- <cfdump var=#filter#> --->
|
Loading…
Reference in New Issue
Block a user