013 filters added

This commit is contained in:
msyu
2025-08-23 20:16:21 +03:00
parent 6c95109004
commit a380ec0234
13 changed files with 477 additions and 16 deletions
+1 -1
View File
@@ -99,7 +99,7 @@
<cfset request.RECORDS_PER_PAGE=500/> <cfset request.RECORDS_PER_PAGE=500/>
<cfset request.APP_VERSION="0.00.012"/> <cfset request.APP_VERSION="0.00.013"/>
<cfset request.STAND=getStand()/> <cfset request.STAND=getStand()/>
<cflock scope="application" type="readonly" timeout=3> <cflock scope="application" type="readonly" timeout=3>
+16
View File
@@ -101,6 +101,11 @@
<div class="td">#d.__name#</div> <div class="td">#d.__name#</div>
</div> </div>
<div class="tr">
<div class="th">Версия (index)</div>
<div class="td">#d.index#</div>
</div>
<div class="tr"> <div class="tr">
<div class="th">Договор</div> <div class="th">Договор</div>
<div class="td"><a href="contract.cfm?__id=#d.contract_uid#&#tr.fwx#"><b>#qDecoration.contract#</b> #dateFormat(qDecoration.date_of_aggrement,'DD.MM.YYYY')# <div class="td"><a href="contract.cfm?__id=#d.contract_uid#&#tr.fwx#"><b>#qDecoration.contract#</b> #dateFormat(qDecoration.date_of_aggrement,'DD.MM.YYYY')#
@@ -124,12 +129,23 @@
<div class="td"> <div class="td">
<a href="deal.cfm?__id=#d.deal_uid#&#tr.fwx#">#d.deal_uid#</a> <a href="deal.cfm?__id=#d.deal_uid#&#tr.fwx#">#d.deal_uid#</a>
<cfquery name="qDeal"> <cfquery name="qDeal">
with
s(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)
)
select d.__id::text select d.__id::text
, d.__name , d.__name
, d.__status_status
, s.status
, s.probability_pc
from elma.deals d from elma.deals d
left outer join s on (d.__status_status=s.status_id)
where d.__id=<cfqueryparam cfsqltype="cf_sql_other" value=#d.deal_uid#/> where d.__id=<cfqueryparam cfsqltype="cf_sql_other" value=#d.deal_uid#/>
</cfquery> </cfquery>
#qDeal.__name# #qDeal.__name#
(#qDeal.status#:
#qDeal.probability_pc#%)
</div> </div>
</div> </div>
+107
View File
@@ -0,0 +1,107 @@
<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="additional_agreement" accessObject="" lsPage="additional_agreement_ls" pageInfoOut="pageInfo" trackOut="tr"/>
<m:filter_settings target="additional_agreement_ls"><!---*** вводит в заблуждение--->
<m:filterparam filter=#filter# param="__name" ftype="string" compare="LIKE%" field="a.__name" default=""/>
<m:filterparam filter=#filter# param="index" ftype="numeric" compare="EQ" field="a.index" default=""/>
<m:filterparam filter=#filter# param="contract" ftype="string" compare="LIKE%" field="g.__name" default=""/>
<m:filterparam filter=#filter# param="agreement_id" ftype="string" compare="LIKE%" field="g.agreement_id" default=""/>
<m:filterparam filter=#filter# param="contragent" ftype="string" compare="LIKE%" field="k.__name" default=""/>
<m:filterparam filter=#filter# param="wz" ftype="string" compare="LIKE%" field="k.id_klienta" 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="__name" value="#__name#" size="50"/>
<i>#i18("по вхождению подстроки","by substring")#</i>
</div>
</div>
<div class="tr">
<div class="th">Версия</div>
<div class="td">
<input type="text" name="index" value="#index#" size="2"/>
<i></i>
</div>
</div>
<div class="tr">
<div class="th">Внут. н-р договора</div>
<div class="td">
<input type="text" name="agreement_id" value="#agreement_id#" size="50"/>
<i>#i18("по вхождению подстроки","by substring")#</i>
</div>
</div>
<div class="tr">
<div class="th">Договор</div>
<div class="td">
<input type="text" name="contract" value="#contract#" size="50"/>
<i>#i18("по вхождению подстроки","by substring")#</i>
</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">WZ</div>
<div class="td">
<input type="text" name="wz" value="#wz#" size="50"/>
<i>#i18("по вхождению подстроки","by substring")#</i>
</div>
</div>
</div><!--- detail --->
</cfoutput>
<layout:page section="footer" closeForm="Yes"/>
<!--- <cfdump var=#filter#> --->
+123
View File
@@ -0,0 +1,123 @@
<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">
<cffunction name="hideNonPositive">
<cfargument name="a"/>
<cfreturn (a GT 0)? a : ""/>
</cffunction>
<m:prepare_ls entity="additional_agreement" accessObject="" pageInfoOut="pageInfo" trackOut="tr"/>
<!--- <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.contract_class_type like ?) OR (p.division like ?) OR (p.performer_short like ?))" default=""/>
</m:filter_settings> --->
<!--- <cfset pageInfo.settings.filter=#filter#/> --->
<cftry>
<cfquery name="qRead" datasource="#request.DS#">
select
<d:field_set titleMapOut="titleMap" lengthOut="fieldCount">
<d:field title="ID" cfSqlType="CF_SQL_OTHER">a.__id</d:field>
<d:field title="Внут.номер">g.agreement_id</d:field>
<d:field title="Доп.соглашение">a.__name</d:field>
<d:field title="Версия">a.index</d:field>
<d:field title="Сделка">d.__name as deal</d:field>
<d:field title="Договор">g.__name as contract</d:field>
<d:field title="company_uid">g.company_uid</d:field>
<d:field title="Контрагент">k.__name as contragent</d:field>
<d:field title="WZ">k.id_klienta as wz</d:field>
<d:field title="Дата договора">g.date_of_aggrement</d:field>
<d:field title="Дата окончания">g.date_end_aggrement</d:field>
<d:field title="Тип договора">g.type_of_agreement</d:field>
</d:field_set>
from elma.additional_agreements a
left outer join elma.additional_agreements b on (b.__id=ANY(a.base_by))
left outer join elma.aggrements g on (a.contract_uid=g.__id)
left outer join elma.deals d on (a.deal_uid=d.__id)
left outer join elma.companies k on (g.company_uid=k.__id)
where 1=1 <m:filter_build filter=#pageInfo.settings.filter#/>
order by <m:order_build sortArray=#pageInfo.settings.sort.sortArray# fieldCount=#fieldCount#/>
</cfquery>
<cfcatch type="database">
<m:ls_catch catch=#cfcatch# status=#pageInfo.status#/>
</cfcatch>
</cftry>
<cfquery name="qCountTotal" datasource="#request.DS#">
select count(*) as cnt from elma.aggrements d where 1=1
</cfquery>
</m:silent><!---
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
---><cfif isDefined("output_xls")>
<layout:xml qRead=#qRead# titleMap=#titleMap# filename="#pageInfo.entity#.xml"/>
<cfabort/>
</cfif><cfif isDefined("output_json")>
<layout:json qRead=#qRead# titleMap=#titleMap# filename="#pageInfo.entity#.json"/>
<cfabort/>
</cfif><!---
---><layout:page section="header" pageInfo=#pageInfo#>
<layout:attribute name="title">
<cfoutput><b>Дополнительные соглашения</b></cfoutput>
</layout:attribute>
<!--- <layout:attribute name="controls"></layout:attribute> --->
</layout:page>
<cfif pageInfo.readPermitted() AND !pageInfo.status.errorState>
<layout:grid_summary
recordCount=#qRead.recordCount#
totalCount=#qCountTotal.cnt#
footerOut="gridFooter"
excelLink="Yes"
jsonLink="Yes"
/>
<!--- так довольно громоздко, но можно обойтись без Dynamic Evaluation --->
<cfset queryAddColumn(qRead,'f_link_view_edit')/>
<cfset titleMap.f_link_view_edit={ordinal=#StructCount(titleMap)+1#}/><!--- *** Это легко забыть, потому что TitleMap никак не сцеплен с qRead. Напрашивается: упаковать их в одну обертку (но тогда обращение станет длиннее). Еще идея - назвать qRead и TitleMap так, чтобы была видна их связь. --->
<!--- <cfdump var=#titleMap#/> --->
<cfset queryAddColumn(qRead,'f_link_del')/>
<cfset titleMap.f_link_del={ordinal=0}/>
<!--- <cfdump var=#titleMap#/> --->
<cfoutput query=#qRead# startRow=#pageInfo.nStart# maxRows=#pageInfo.recordsPerPage#>
<cfsavecontent variable="qRead.f_link_view_edit">
<a href="additional_agreement.cfm?__id=#__id#&#tr.fwx#" name="#__id#" title="просмотр" class="view"></a>
</cfsavecontent>
</cfoutput>
<c:table query=#qRead# recordsPerPage=#pageInfo.recordsPerPage# nStart=#pageInfo.nStart# titleMap=#titleMap# sortArray=#pageInfo.settings.sort.sortArray# class="worktable wide">
<c:column width="1%" sortable="false"><!---*** class="c" не пробрасывается --->
<c:td field="f_link_view_edit" class="c"/>
</c:column>
<c:column width="10%" field="__id"><c:td class="l"/></c:column>
<c:column width="10%" field="__name"/>
<c:column width="3%" field="index"/>
<c:column width="6%" field="contract"/>
<c:column width="6%" field="agreement_id"/>
<c:column width="10%" field="deal"/>
<c:column width="10%" field="contragent"/>
<c:column width="10%" field="wz"/>
<c:column width="10%" field="date_of_aggrement" formatter=#function(dt){return dateformat(dt,"YYYY-MM-DD");}#/>
<c:column width="10%" field="date_end_aggrement" formatter=#function(dt){return dateformat(dt,"YYYY-MM-DD");}#/>
<c:column width="10%" field="type_of_agreement"><c:td class="l"/></c:column>
</c:table>
<cfoutput>#gridFooter#</cfoutput>
</cfif>
<layout:page section="footer"/>
+16 -6
View File
@@ -38,7 +38,7 @@
<!--- decoration ---> <!--- decoration --->
<cfquery name="qDecoration" datasource="#request.DS#"> <cfquery name="qDecoration" datasource="#request.DS#">
select select
__name as contragent __name as contragent, id_klienta as wz
from elma.companies k from elma.companies k
where k.__id=<cfqueryparam cfsqltype="cf_sql_other" value=#d.company_uid# null=#!isValid('guid',d.company_uid)#/> where k.__id=<cfqueryparam cfsqltype="cf_sql_other" value=#d.company_uid# null=#!isValid('guid',d.company_uid)#/>
</cfquery> </cfquery>
@@ -85,17 +85,17 @@
<div class="tr"> <div class="tr">
<div class="th">Контрагент</div> <div class="th">Контрагент</div>
<div class="td">#qDecoration.contragent# [#d.company_uid#]</div> <div class="td">#qDecoration.contragent# #qDecoration.wz# [#d.company_uid#] </div>
</div> </div>
<div class="tr"> <div class="tr">
<div class="th">Дата договора</div> <div class="th">Дата договора</div>
<div class="td">#d.date_of_aggrement#</div> <div class="td">#dateFmt(d.date_of_aggrement)#</div>
</div> </div>
<div class="tr"> <div class="tr">
<div class="th">Дата окончания договора</div> <div class="th">Дата окончания договора</div>
<div class="td">#d.date_end_aggrement#</div> <div class="td">#dateFmt(d.date_end_aggrement)#</div>
</div> </div>
</div> </div>
@@ -107,14 +107,18 @@
<cfif len(d.__id)> <cfif len(d.__id)>
<cfquery name="qAdditionalAgreement"> <cfquery name="qAdditionalAgreement">
select select
__id::text a.__id::text
,__name ,a.__name
,contract_uid::text ,contract_uid::text
,is_actual ,is_actual
,last_aa ,last_aa
,index
,deal_uid::text ,deal_uid::text
,base_by::text ,base_by::text
,d.__name as deal
,d.__status_status as status_id
from elma.additional_agreements a from elma.additional_agreements a
left outer join elma.deals d on (a.deal_uid=d.__id)
where a.contract_uid=<cfqueryparam cfsqltype="cf_sql_other" value="#d.__id#"/> where a.contract_uid=<cfqueryparam cfsqltype="cf_sql_other" value="#d.__id#"/>
order by 1 order by 1
</cfquery> </cfquery>
@@ -129,10 +133,13 @@
<tr> <tr>
<th>__id</th> <th>__id</th>
<th>__name</th> <th>__name</th>
<th>index</th>
<th>contract_uid</th> <th>contract_uid</th>
<th>is_actual</th> <th>is_actual</th>
<th>last_aa</th> <th>last_aa</th>
<th>deal_uid</th> <th>deal_uid</th>
<th>deal</th>
<th>status</th>
<th>base_by</th> <th>base_by</th>
</tr> </tr>
</thead> </thead>
@@ -141,10 +148,13 @@
<td><a href="additional_agreement.cfm?__id=#__id#&#tr.fwx#">#__id#</a></td> <td><a href="additional_agreement.cfm?__id=#__id#&#tr.fwx#">#__id#</a></td>
<td>#__name#</td> <td>#__name#</td>
<td>#index#</td>
<td>#contract_uid#</td> <td>#contract_uid#</td>
<td>#is_actual#</td> <td>#is_actual#</td>
<td>#last_aa#</td> <td>#last_aa#</td>
<td><a href="deal.cfm?__id=#deal_uid#&#tr.fwx#">#deal_uid#</a></td> <td><a href="deal.cfm?__id=#deal_uid#&#tr.fwx#">#deal_uid#</a></td>
<td>#deal#</td>
<td>#status_id#</td>
<td>#base_by#</td> <td>#base_by#</td>
<!--- <td class="c"> <!--- <td class="c">
#dateFormat(dt_contract,'YYYY-MM-DD')# #dateFormat(dt_contract,'YYYY-MM-DD')#
+89
View File
@@ -0,0 +1,89 @@
<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="contract" accessObject="" lsPage="contract_ls" pageInfoOut="pageInfo" trackOut="tr"/>
<m:filter_settings target="contract_ls"><!---*** вводит в заблуждение--->
<m:filterparam filter=#filter# param="__name" ftype="string" compare="LIKE%" field="d.__name" default=""/>
<m:filterparam filter=#filter# param="agreement_id" ftype="string" compare="LIKE%" field="d.agreement_id" default=""/>
<m:filterparam filter=#filter# param="contragent" ftype="string" compare="LIKE%" field="k.__name" default=""/>
<m:filterparam filter=#filter# param="wz" ftype="string" compare="LIKE%" field="k.id_klienta" 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="__name" value="#__name#" size="50"/>
<i>#i18("по вхождению подстроки","by substring")#</i>
</div>
</div>
<div class="tr">
<div class="th">Внутренний номер</div>
<div class="td">
<input type="text" name="agreement_id" value="#agreement_id#" size="50"/>
<i>#i18("по вхождению подстроки","by substring")#</i>
</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">WZ</div>
<div class="td">
<input type="text" name="wz" value="#wz#" size="50"/>
<i>#i18("по вхождению подстроки","by substring")#</i>
</div>
</div>
</div><!--- detail --->
</cfoutput>
<layout:page section="footer" closeForm="Yes"/>
<!--- <cfdump var=#filter#> --->
+1 -1
View File
@@ -10,7 +10,7 @@
<cfreturn (a GT 0)? a : ""/> <cfreturn (a GT 0)? a : ""/>
</cffunction> </cffunction>
<m:prepare_ls entity="aggrements" accessObject="" pageInfoOut="pageInfo" trackOut="tr"/> <m:prepare_ls entity="contract" 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.contract_class_type like ?) OR (p.division like ?) OR (p.performer_short like ?))" default=""/> <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.contract_class_type like ?) OR (p.division like ?) OR (p.performer_short like ?))" default=""/>
+104
View File
@@ -0,0 +1,104 @@
<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="deal" accessObject="" lsPage="deal_ls" pageInfoOut="pageInfo" trackOut="tr"/>
<m:filter_settings target="deal_ls"><!---*** вводит в заблуждение--->
<m:filterparam filter=#filter# param="__name" ftype="string" compare="LIKE%" field="d.__name" default=""/>
<m:filterparam filter=#filter# param="contragent" ftype="string" compare="LIKE%" field="k.__name" default=""/>
<m:filterparam filter=#filter# param="wz" ftype="string" compare="LIKE%" field="k.id_klienta" default=""/>
<m:filterparam filter=#filter# param="status_id" ftype="numeric" compare="EQ" field="d.__status_status" 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="__name" value="#__name#" size="50"/>
<i>#i18("по вхождению подстроки","by substring")#</i>
</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">WZ</div>
<div class="td">
<input type="text" name="wz" value="#wz#" 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="qStatus" datasource="#request.DS#">
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)
)
select status_id, status, probability_pc
from status
order by status_id
</cfquery>
<c:combo
query=#qStatus#
combo="status_id"
id="status_id"
key="status_id"
displayf="##status_id## ##status## (##probability_pc##%)"
selected=#status_id#
empty=""
/>
</div>
</div>
</div><!--- detail --->
</cfoutput>
<layout:page section="footer" closeForm="Yes"/>
<!--- <cfdump var=#filter#> --->
+1 -1
View File
@@ -10,7 +10,7 @@
<cfreturn (a GT 0)? a : ""/> <cfreturn (a GT 0)? a : ""/>
</cffunction> </cffunction>
<m:prepare_ls entity="deals" accessObject="" pageInfoOut="pageInfo" trackOut="tr"/> <m:prepare_ls entity="deal" 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.contract_class_type like ?) OR (p.division like ?) OR (p.performer_short like ?))" default=""/> <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.contract_class_type like ?) OR (p.division like ?) OR (p.performer_short like ?))" default=""/>
+12 -4
View File
@@ -141,6 +141,11 @@
<div class="th">Сделка</div> <div class="th">Сделка</div>
<div class="td"> <div class="td">
<cfquery name="qDeal"> <cfquery name="qDeal">
with
s(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)
)
select select
d.__id::text d.__id::text
,d.__name ,d.__name
@@ -149,17 +154,20 @@
,d.__index ,d.__index
,d.__status_status ,d.__status_status
,c.id_klienta as wz ,c.id_klienta as wz
, s.status
, s.probability_pc
from elma.deals_services siv from elma.deals_services siv
join elma.deals d on (d.__id = ANY(siv.deal)) join elma.deals d on (d.__id = ANY(siv.deal))
left outer join elma.companies c on (d._companies=c.__id) left outer join elma.companies c on (d._companies=c.__id)
left outer join s on (d.__status_status=s.status_id)
where siv.__id=<cfqueryparam cfsqltype="cf_sql_other" value=#d.__id#/> where siv.__id=<cfqueryparam cfsqltype="cf_sql_other" value=#d.__id#/>
</cfquery> </cfquery>
<!--- <cfdump var=#qDeal#/> ---> <!--- <cfdump var=#qDeal#/> --->
<a href="deal.cfm?__id=#qDeal.__id#&#tr.fwx#">#qDeal.__id#</a> <a href="deal.cfm?__id=#qDeal.__id#&#tr.fwx#">#qDeal.__id#</a>
#qDeal.contragent# #qDeal.wz# #qDeal.contragent# | #qDeal.wz# |
#qDeal.__name# #qDeal.__name# |
_plannedDueDate: <b>#dateFormat(qDeal._plannedDueDate,'DD.MM.YYYY')#</b> _plannedDueDate: <cfif len(qDeal._plannedDueDate)><b>#dateFormat(qDeal._plannedDueDate,'DD.MM.YYYY')#</b><cfelse>--</cfif>
status: <b>#qDeal.__status_status#</b> <b>#qDeal.__status_status#: #qDeal.status# (#qDeal.probability_pc#%)</b>
</div> </div>
</div> </div>
+3 -1
View File
@@ -12,8 +12,10 @@
<li class="menu-title">Реестры</li> <li class="menu-title">Реестры</li>
<c:menu_item acl="" page="deal_ls.cfm" label="Сделки"/>
<c:menu_item acl="" page="contract_ls.cfm" label="Договоры"/> <c:menu_item acl="" page="contract_ls.cfm" label="Договоры"/>
<c:menu_item acl="" page="deal_ls.cfm" label="Сделки"/> <c:menu_item acl="" page="additional_agreement_ls.cfm" label="Доп. соглашения"/>
<!--- <!---
<c:menu_item acl="" page="specification_ls.cfm" label="Спецификации"/> <c:menu_item acl="" page="specification_ls.cfm" label="Спецификации"/>
<c:menu_item acl="" page="agreement_ls.cfm" label="Сделки"/> <c:menu_item acl="" page="agreement_ls.cfm" label="Сделки"/>
+2 -1
View File
@@ -1,4 +1,5 @@
<!--- version 2.01---><!---15:25 31.01.2019---> <!--- version 2.01---><!---15:25 31.01.2019--->
<!--- version 2.02---><!---2025-08-04 15:19:34 postgre specific ilike instead of like--->
<!--- build query filter string ---> <!--- build query filter string --->
<!--- пустые и некорректные значения параметров вызвыают пропуск параметра ---> <!--- пустые и некорректные значения параметров вызвыают пропуск параметра --->
<cfparam name="ATTRIBUTES.filter" type="struct"/> <cfparam name="ATTRIBUTES.filter" type="struct"/>
@@ -20,7 +21,7 @@
---><cfif i LT #len#><cfqueryparam cfsqltype="#getCfSqLType(fltr.ftype)#" list="#fltr.list#" value="#fltr.prefix##fltr.val##fltr.suffix#"/></cfif><!--- ---><cfif i LT #len#><cfqueryparam cfsqltype="#getCfSqLType(fltr.ftype)#" list="#fltr.list#" value="#fltr.prefix##fltr.val##fltr.suffix#"/></cfif><!---
---></cfloop><!--- ---></cfloop><!---
---><cfelse><!--- ---><cfelse><!---
---><cfoutput>#fltr.field#</cfoutput><cfswitch expression=#fltr.compare#><cfcase value="EQ"> = </cfcase><cfcase value="NE,NEQ"> <> </cfcase><cfcase value="LE"> <= </cfcase><cfcase value="LT"> < </cfcase><cfcase value="GE"> >= </cfcase><cfcase value="GT"> > </cfcase><cfcase value="LIKE"> LIKE </cfcase><cfcase value="NOTLIKE"> NOT LIKE </cfcase><cfcase value="LIKE%"> LIKE <cfqueryparam cfsqltype=#getCfSqLType(fltr.ftype)# value="%#fltr.val#%"/><cfcontinue/></cfcase><cfcase value="NOTLIKE%"> NOT LIKE <cfqueryparam cfsqltype=#getCfSqLType(fltr.ftype)# value="%#fltr.val#%"/><cfcontinue/></cfcase><cfcase value="IN"> IN (<cfqueryparam cfsqltype=#getCfSqLType(fltr.ftype)# list="#fltr.list#" value="#fltr.val#"/>)<cfcontinue/></cfcase><cfdefaultcase> = <cfoutput> #fltr.field#</cfoutput><cfcontinue/><!---***криво---></cfdefaultcase></cfswitch><cfqueryparam cfsqltype=#getCfSqLType(fltr.ftype)# value="#fltr.val#"/><cfcontinue/> ---><cfoutput>#fltr.field#</cfoutput><cfswitch expression=#fltr.compare#><cfcase value="EQ"> = </cfcase><cfcase value="NE,NEQ"> <> </cfcase><cfcase value="LE"> <= </cfcase><cfcase value="LT"> < </cfcase><cfcase value="GE"> >= </cfcase><cfcase value="GT"> > </cfcase><cfcase value="LIKE"> ILIKE </cfcase><cfcase value="NOTLIKE"> NOT ILIKE </cfcase><cfcase value="LIKE%"> ILIKE <cfqueryparam cfsqltype=#getCfSqLType(fltr.ftype)# value="%#fltr.val#%"/><cfcontinue/></cfcase><cfcase value="NOTLIKE%"> NOT ILIKE <cfqueryparam cfsqltype=#getCfSqLType(fltr.ftype)# value="%#fltr.val#%"/><cfcontinue/></cfcase><cfcase value="IN"> IN (<cfqueryparam cfsqltype=#getCfSqLType(fltr.ftype)# list="#fltr.list#" value="#fltr.val#"/>)<cfcontinue/></cfcase><cfdefaultcase> = <cfoutput> #fltr.field#</cfoutput><cfcontinue/><!---***криво---></cfdefaultcase></cfswitch><cfqueryparam cfsqltype=#getCfSqLType(fltr.ftype)# value="#fltr.val#"/><cfcontinue/>
</cfif> </cfif>
</cfloop> </cfloop>
+2 -1
View File
@@ -2,6 +2,7 @@
<cfimport prefix="m" taglib="../lib"/> <cfimport prefix="m" taglib="../lib"/>
<cfparam name="ATTRIBUTES.entity" type="string"/> <cfparam name="ATTRIBUTES.entity" type="string"/>
<cfparam name="ATTRIBUTES.accessObject" type="string" default=#ATTRIBUTES.entity#/>
<cfparam name="ATTRIBUTES.key" type="string" default="#ATTRIBUTES.entity#_id"/> <cfparam name="ATTRIBUTES.key" type="string" default="#ATTRIBUTES.entity#_id"/>
<cfparam name="ATTRIBUTES.pageInfoOut" type="string"/> <cfparam name="ATTRIBUTES.pageInfoOut" type="string"/>
<cfparam name="ATTRIBUTES.trackOut" type="string"/> <cfparam name="ATTRIBUTES.trackOut" type="string"/>
@@ -14,7 +15,7 @@
<m:settings key="#ATTRIBUTES.lsPage#" output="settings" action="get"/> <m:settings key="#ATTRIBUTES.lsPage#" output="settings" action="get"/>
<cfset pageInfo.settings=#settings#/> <cfset pageInfo.settings=#settings#/>
<m:ac obj="#ATTRIBUTES.entity#" act="#request.PERMISSION_READ#" output="readPermitted"/> <m:ac obj="#ATTRIBUTES.accessObject#" act="#request.PERMISSION_READ#" output="readPermitted"/>
<cfset pageInfo.readPermitted=#readPermitted#/> <cfset pageInfo.readPermitted=#readPermitted#/>