012 install separated, export
This commit is contained in:
parent
2a3781fcea
commit
c1242c2c0c
@ -69,12 +69,11 @@
|
|||||||
<!--- <cfset this.datasources["#this.datasource#"]=getDS("#this.datasource#","datasource_#this.datasource#")/> --->
|
<!--- <cfset this.datasources["#this.datasource#"]=getDS("#this.datasource#","datasource_#this.datasource#")/> --->
|
||||||
|
|
||||||
<cfset request.RECORDS_PER_PAGE=500/>
|
<cfset request.RECORDS_PER_PAGE=500/>
|
||||||
<cfset request.APP_VERSION="0.00.011"/>
|
<cfset request.APP_VERSION="0.00.012"/>
|
||||||
|
|
||||||
<cflock scope="application" type="readonly" timeout=3>
|
<cflock scope="application" type="readonly" timeout=3>
|
||||||
<cfset request.APP_NAME=this.Name/>
|
<cfset request.APP_NAME=this.Name/>
|
||||||
</cflock>
|
</cflock>
|
||||||
182 000,00
|
|
||||||
|
|
||||||
<cfset local = {} />
|
<cfset local = {} />
|
||||||
|
|
||||||
|
@ -19,11 +19,21 @@
|
|||||||
|
|
||||||
|
|
||||||
<cfquery name="qRead" datasource="#request.DS#">
|
<cfquery name="qRead" datasource="#request.DS#">
|
||||||
|
select
|
||||||
|
<d:field_set titleMapOut="titleMap" lengthOut="fieldCount">
|
||||||
|
<d:field title="Месяц" cfSqlType="CF_SQL_TIMESTAMP">m</d:field>
|
||||||
|
<d:field title="Дата" cfSqlType="CF_SQL_TIMESTAMP">dt</d:field>
|
||||||
|
<d:field title="Инсталл" cfSqlType="CF_SQL_NUMERIC">income_install</d:field>
|
||||||
|
<d:field title="Ежемес" cfSqlType="CF_SQL_NUMERIC">income_recurring</d:field>
|
||||||
|
<d:field title="Выручка" cfSqlType="CF_SQL_NUMERIC">income_install+income_recurring as income</d:field>
|
||||||
|
</d:field_set>
|
||||||
|
from (
|
||||||
select
|
select
|
||||||
--install
|
--install
|
||||||
DATE_TRUNC('month', dayscale.dt)::date as m,
|
DATE_TRUNC('month', dayscale.dt)::date as m
|
||||||
dayscale.dt::date,
|
,dayscale.dt::date
|
||||||
sum(siv.price*siv.quantity*a.probability_perc/100) as income
|
,sum(siv.price*siv.quantity*a.probability_perc/100) as income_install
|
||||||
|
,0 as income_recurring
|
||||||
from (SELECT dd::date as dt FROM generate_series(
|
from (SELECT dd::date as dt FROM generate_series(
|
||||||
'2023-01-01'::timestamp
|
'2023-01-01'::timestamp
|
||||||
, '2029-12-31'::timestamp
|
, '2029-12-31'::timestamp
|
||||||
@ -43,14 +53,15 @@
|
|||||||
join contragent k on d.contragent_id=k.contragent_id
|
join contragent k on d.contragent_id=k.contragent_id
|
||||||
join svc on (si.svc_id=svc.svc_id)
|
join svc on (si.svc_id=svc.svc_id)
|
||||||
group by dayscale.dt
|
group by dayscale.dt
|
||||||
|
|
||||||
|
|
||||||
union all
|
union all
|
||||||
|
|
||||||
--fix and payg
|
--fix and payg
|
||||||
select
|
select
|
||||||
DATE_TRUNC('month', dayscale.dt)::date as m,
|
DATE_TRUNC('month', dayscale.dt)::date as m
|
||||||
dayscale.dt::date,
|
,dayscale.dt::date
|
||||||
sum(siv.price*siv.quantity*a.probability_perc/100/dayscale.days)
|
,0
|
||||||
|
,sum(siv.price*siv.quantity*a.probability_perc/100/dayscale.days)
|
||||||
from (SELECT dd::date as dt
|
from (SELECT dd::date as dt
|
||||||
, DATE_PART('days', DATE_TRUNC('month', dd) + '1 MONTH'::INTERVAL - '1 DAY'::INTERVAL) days
|
, DATE_PART('days', DATE_TRUNC('month', dd) + '1 MONTH'::INTERVAL - '1 DAY'::INTERVAL) days
|
||||||
FROM generate_series(
|
FROM generate_series(
|
||||||
@ -72,8 +83,8 @@
|
|||||||
join contragent k on d.contragent_id=k.contragent_id
|
join contragent k on d.contragent_id=k.contragent_id
|
||||||
join svc on (si.svc_id=svc.svc_id)
|
join svc on (si.svc_id=svc.svc_id)
|
||||||
group by dayscale.dt
|
group by dayscale.dt
|
||||||
|
) install_fix_payg
|
||||||
order by 1
|
order by dt
|
||||||
<!--- where 1=1 <m:filter_build filter=#pageInfo.settings.filter#/>
|
<!--- where 1=1 <m:filter_build filter=#pageInfo.settings.filter#/>
|
||||||
order by <m:order_build sortArray=#pageInfo.settings.sort.sortArray# fieldCount=#fieldCount#/> --->
|
order by <m:order_build sortArray=#pageInfo.settings.sort.sortArray# fieldCount=#fieldCount#/> --->
|
||||||
</cfquery>
|
</cfquery>
|
||||||
@ -112,45 +123,64 @@ select count(*) as cnt from specification_item where 1=1
|
|||||||
|
|
||||||
|
|
||||||
<div style="display:inline-block; width:30%; vertical-align:top;">
|
<div style="display:inline-block; width:30%; vertical-align:top;">
|
||||||
|
<cfoutput><b>#qRead.recordCount#</b> записей</cfoutput>
|
||||||
|
<a href="?output_xls" title="экспорт в Excel" style="margin:.5em; height:100%;" target="_blank"><img src="img/xls.gif" style="vertical-align:text-bottom;"/></a>
|
||||||
|
<a href="?output_json" title="экспорт в json" style="margin:.5em; height:100%;" target="_blank"><img src="img/json.svg" style="vertical-align:text-bottom;" width="13" height="13"/></a>
|
||||||
|
<br/>
|
||||||
Дни и месяцы с нулевой суммой не показаны
|
Дни и месяцы с нулевой суммой не показаны
|
||||||
<table class="worktable">
|
<table class="worktable">
|
||||||
|
|
||||||
<thead>
|
<thead>
|
||||||
<th>Дата</th>
|
<tr>
|
||||||
<th>Выручка</th>
|
<th>Дата</th>
|
||||||
<th>Округл</th>
|
<th>Инсталл</th>
|
||||||
|
<th>Ежемес</th>
|
||||||
|
<th>Выручка</th>
|
||||||
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
<cfoutput query="qRead">
|
<cfoutput query="qRead">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="c">#dateFormat(dt,"DD.MM.YYYY")#</td>
|
<td class="c">#dateFormat(dt,"DD.MM.YYYY")#</td>
|
||||||
<td class="r">#income#</td>
|
<td class="r">#nFmt(income_install)#</td>
|
||||||
<td class="r">#round(income)#</td>
|
<td class="r">#nFmt(income_recurring)#</td>
|
||||||
|
<td class="r">#nFmt(income)#</td>
|
||||||
</tr>
|
</tr>
|
||||||
</cfoutput>
|
</cfoutput>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="display:inline-block; width:30%; vertical-align:top;">
|
<div style="display:inline-block; width:30%; vertical-align:top;">
|
||||||
<cfquery dbtype="query" name="qMonthly">
|
|
||||||
select m, sum(income) as income from qRead group by m order by m
|
|
||||||
</cfquery>
|
|
||||||
|
|
||||||
|
<cfquery dbtype="query" name="qMonthly">
|
||||||
|
select m
|
||||||
|
, sum(income_install) as income_install
|
||||||
|
, sum(income_recurring) as income_recurring
|
||||||
|
, sum(income) as income
|
||||||
|
from qRead
|
||||||
|
group by m
|
||||||
|
order by m
|
||||||
|
</cfquery>
|
||||||
|
<br/>
|
||||||
Суммировано по месяцам:
|
Суммировано по месяцам:
|
||||||
<table class="worktable">
|
<table class="worktable">
|
||||||
|
|
||||||
<thead>
|
<thead>
|
||||||
<th>Месяц</th>
|
<tr>
|
||||||
<th>Выручка</th>
|
<th>Месяц</th>
|
||||||
<th>Округл</th>
|
<th>Инсталл</th>
|
||||||
|
<th>Ежемес</th>
|
||||||
|
<th>Выручка</th>
|
||||||
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
<cfoutput query="qMonthly">
|
<cfoutput query="qMonthly">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="c">#dateFormat(m,"MM.YYYY")#</td>
|
<td class="c">#dateFormat(m,"MM.YYYY")#</td>
|
||||||
<td class="r">#income#</td>
|
<td class="r">#nFmt(income_install)#</td>
|
||||||
<td class="r">#round(income)#</td>
|
<td class="r">#nFmt(income_recurring)#</td>
|
||||||
|
<td class="r">#nFmt(income)#</td>
|
||||||
</tr>
|
</tr>
|
||||||
</cfoutput>
|
</cfoutput>
|
||||||
</table>
|
</table>
|
||||||
|
@ -17,12 +17,21 @@
|
|||||||
</m:filter_settings> --->
|
</m:filter_settings> --->
|
||||||
<!--- <cfset pageInfo.settings.filter=#filter#/> --->
|
<!--- <cfset pageInfo.settings.filter=#filter#/> --->
|
||||||
|
|
||||||
<cftry>
|
|
||||||
<cfquery name="qRead" datasource="#request.DS#">
|
<cfquery name="qRead" datasource="#request.DS#">
|
||||||
|
select
|
||||||
|
<d:field_set titleMapOut="titleMap" lengthOut="fieldCount">
|
||||||
|
<d:field title="Месяц" cfSqlType="CF_SQL_TIMESTAMP">m</d:field>
|
||||||
|
<d:field title="Инсталл" cfSqlType="CF_SQL_NUMERIC">income_install</d:field>
|
||||||
|
<d:field title="Ежемес" cfSqlType="CF_SQL_NUMERIC">income_recurring</d:field>
|
||||||
|
<d:field title="Выручка" cfSqlType="CF_SQL_NUMERIC">income_install+income_recurring as income</d:field>
|
||||||
|
</d:field_set>
|
||||||
|
from (
|
||||||
select
|
select
|
||||||
DATE_TRUNC('month', dayscale.dt)::date AS dt
|
--install
|
||||||
,sum(siv.price*siv.quantity*a.probability_perc/100) as income
|
DATE_TRUNC('month', dayscale.dt)::date as m
|
||||||
|
,sum(siv.price*siv.quantity*a.probability_perc/100) as income_install
|
||||||
|
,0 as income_recurring
|
||||||
from
|
from
|
||||||
(SELECT dd::date as dt FROM generate_series
|
(SELECT dd::date as dt FROM generate_series
|
||||||
( '2023-01-01'::timestamp
|
( '2023-01-01'::timestamp
|
||||||
@ -45,12 +54,10 @@
|
|||||||
|
|
||||||
union all
|
union all
|
||||||
|
|
||||||
select
|
select
|
||||||
|
DATE_TRUNC('month', dayscale.dt)::date as m
|
||||||
DATE_TRUNC('month', 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)
|
||||||
|
|
||||||
|
|
||||||
from
|
from
|
||||||
(SELECT dd::date as dt, DATE_PART('days',
|
(SELECT dd::date as dt, DATE_PART('days',
|
||||||
DATE_TRUNC('month', dd) + '1 MONTH'::INTERVAL - '1 DAY'::INTERVAL
|
DATE_TRUNC('month', dd) + '1 MONTH'::INTERVAL - '1 DAY'::INTERVAL
|
||||||
@ -73,17 +80,14 @@ select
|
|||||||
join svc on (si.svc_id=svc.svc_id)
|
join svc on (si.svc_id=svc.svc_id)
|
||||||
|
|
||||||
group by DATE_TRUNC('month', dayscale.dt)
|
group by DATE_TRUNC('month', dayscale.dt)
|
||||||
order by 1
|
) install_fix_payg
|
||||||
|
order by 1
|
||||||
<!--- where 1=1 <m:filter_build filter=#pageInfo.settings.filter#/>
|
<!--- where 1=1 <m:filter_build filter=#pageInfo.settings.filter#/>
|
||||||
order by <m:order_build sortArray=#pageInfo.settings.sort.sortArray# fieldCount=#fieldCount#/> --->
|
order by <m:order_build sortArray=#pageInfo.settings.sort.sortArray# fieldCount=#fieldCount#/> --->
|
||||||
</cfquery>
|
</cfquery>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<cfcatch type="database">
|
|
||||||
<m:ls_catch catch=#cfcatch# status=#pageInfo.status#/>
|
|
||||||
</cfcatch>
|
|
||||||
</cftry>
|
|
||||||
|
|
||||||
<cfquery name="qCountTotal" datasource="#request.DS#">
|
<cfquery name="qCountTotal" datasource="#request.DS#">
|
||||||
select count(*) as cnt from specification_item where 1=1
|
select count(*) as cnt from specification_item where 1=1
|
||||||
@ -112,25 +116,32 @@ select count(*) as cnt from specification_item where 1=1
|
|||||||
</layout:page>
|
</layout:page>
|
||||||
|
|
||||||
<cfif pageInfo.readPermitted() AND !pageInfo.status.errorState>
|
<cfif pageInfo.readPermitted() AND !pageInfo.status.errorState>
|
||||||
|
<cfoutput><b>#qRead.recordCount#</b> записей</cfoutput>
|
||||||
Месяцы с нулевой суммой не показаны
|
<a href="?output_xls" title="экспорт в Excel" style="margin:.5em; height:100%;" target="_blank"><img src="img/xls.gif" style="vertical-align:text-bottom;"/></a>
|
||||||
|
<a href="?output_json" title="экспорт в json" style="margin:.5em; height:100%;" target="_blank"><img src="img/json.svg" style="vertical-align:text-bottom;" width="13" height="13"/></a>
|
||||||
<table class="worktable">
|
<br/>
|
||||||
|
Месяцы с нулевой суммой не показаны
|
||||||
|
|
||||||
<thead>
|
<table class="worktable">
|
||||||
<th>Дата</th>
|
|
||||||
<th>Выручка</th>
|
<thead>
|
||||||
<th>Округл</th>
|
<tr>
|
||||||
</thead>
|
<th>Месяц</th>
|
||||||
|
<th>Инсталл</th>
|
||||||
<cfoutput query="qRead">
|
<th>Ежемес</th>
|
||||||
<tr>
|
<th>Выручка</th>
|
||||||
<td class="c">#dateFormat(dt,"MM.YYYY")#</td>
|
</tr>
|
||||||
<td class="r">#income#</td>
|
</thead>
|
||||||
<td class="r">#round(income)#</td>
|
|
||||||
</tr>
|
<cfoutput query="qRead">
|
||||||
</cfoutput>
|
<tr>
|
||||||
</table>
|
<td class="c">#dateFormat(m,"MM.YYYY")#</td>
|
||||||
|
<td class="r">#nFmt(income_install)#</td>
|
||||||
|
<td class="r">#nFmt(income_recurring)#</td>
|
||||||
|
<td class="r">#nFmt(income)#</td>
|
||||||
|
</tr>
|
||||||
|
</cfoutput>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
</cfif>
|
</cfif>
|
||||||
|
Loading…
Reference in New Issue
Block a user