347 lines
13 KiB
Plaintext
347 lines
13 KiB
Plaintext
<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="Yes">
|
||
|
||
<cffunction name="plain2HtmClean">
|
||
<cfargument name="s" type="string"/>
|
||
<cfreturn request.plain2htm(request.cleanHtm(s))/>
|
||
</cffunction>
|
||
|
||
<cffunction name="cleanInput">
|
||
<cfargument name="s" type="string"/>
|
||
<cfreturn htmlEditFormat(s)/>
|
||
</cffunction>
|
||
|
||
<m:prepare_detail entity="service" key="service_id" pageInfoOut="pageInfo"/>
|
||
|
||
<cfparam name="service_id" type="numeric"/>
|
||
<cfparam name="modifier_id" type="numeric" default=-1/>
|
||
<cfset new_service_id=-1/>
|
||
|
||
<cfif isDefined ("save") OR isDefined("saveAndClose")>
|
||
|
||
<cfif pageInfo.writePermitted()>
|
||
|
||
<cfquery name="qService" datasource="#request.DS#">
|
||
insert into service (
|
||
abstract_service_id,modifier_id,descr,measure_id,precision
|
||
--,base_price
|
||
)
|
||
select
|
||
abstract_service_id
|
||
,<cfqueryparam cfsqltype="cf_sql_integer" value="#modifier_id#" null=#(modifier_id EQ -1)#/>
|
||
,descr
|
||
,measure_id
|
||
,precision
|
||
--,base_price
|
||
from service
|
||
where service_id=<cfqueryparam cfsqltype="cf_sql_integer" value="#service_id#"/>;
|
||
|
||
<!--- MMSQL: select scope_identity() as new_service_id --->
|
||
<!---*** PostgreSQL incompatible hack --->
|
||
select LASTVAL() as new_service_id;
|
||
</cfquery>
|
||
<cfset new_service_id=qService.new_service_id/>
|
||
|
||
<cfquery datasource="#request.DS#">
|
||
insert into service_param (
|
||
service_id,abstract_service_param_class_id,param_id,descr
|
||
)
|
||
select
|
||
<cfqueryparam cfsqltype="cf_sql_integer" value="#qService.new_service_id#"/>
|
||
,abstract_service_param_class_id
|
||
,param_id
|
||
,descr
|
||
from service_param
|
||
where service_id=<cfqueryparam cfsqltype="cf_sql_integer" value="#service_id#"/>;
|
||
</cfquery>
|
||
|
||
</cfif>
|
||
|
||
</cfif>
|
||
|
||
<d:bean readonly=true table="#pageInfo.entity#" datasource="#request.DS#" output="d" status="status">
|
||
<d:param field="service_id" type="integer" key autoincrement/>
|
||
<d:param field="abstract_service_id" type="integer"/>
|
||
<d:param field="modifier_id" type="integer" forNull=""/>
|
||
<!--- <d:param field="measure_id" type="integer" forNull=""/>
|
||
<d:param field="precision" type="integer" forNull=""/> --->
|
||
<!--- <d:param field="base_price" type="numeric" forNull=""/> --->
|
||
<d:param field="descr" type="varchar" preprocessor=#plain2HtmClean#/>
|
||
|
||
<d:param field="creator_id" type="integer" value="#request.usr_id#" skipUpdate/>
|
||
<d:param field="updater_id" type="integer" value="#request.usr_id#" />
|
||
<d:param field="dt_created" type="timestamp" value="#Now()#" skipUpdate/>
|
||
<d:param field="dt_updated" type="timestamp" value="#Now()#"/>
|
||
</d:bean>
|
||
|
||
<m:dispatch_detail
|
||
usePRG="No"<!---*** --->
|
||
pageInfo=#pageInfo#
|
||
id="#new_service_id#"
|
||
status=#pageInfo.status#
|
||
trackOut="tr"
|
||
idAttributesOut="id"
|
||
/>
|
||
|
||
<cfquery name="qDecoration" datasource="#request.DS#">
|
||
select
|
||
a.login as creator, a.shortname as creator_shortname, m.login as updater, m.shortname as updater_shortname
|
||
from #pageInfo.entity# e
|
||
left outer join usr a on (e.creator_id=a.usr_id)
|
||
left outer join usr m on (e.updater_id=m.usr_id)
|
||
where e.#pageInfo.key#=<cfqueryparam attributeCollection=#id#/>
|
||
</cfquery>
|
||
|
||
</m:silent><!---
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
---><layout:page section="header" pageInfo=#pageInfo#>
|
||
<layout:attribute name="title">
|
||
<cfoutput>
|
||
Клонирование варианта услуги (конкретной услуги)
|
||
<cfif d.service_id GT 0>
|
||
[#d.service_id#]
|
||
</cfif>
|
||
</cfoutput>
|
||
</layout:attribute>
|
||
<!--- controls override example--->
|
||
<layout:attribute name="controls">
|
||
<cfoutput>
|
||
<button type="submit" name="saveAndClose" value="Клонировать и закрыть" class="maincontrol"<cfif NOT pageInfo.writePermitted()> disabled</cfif>>#request.i18("Клонировать и закрыть","Clone and Close")#</button>
|
||
<button type="button" name="close" value="Закрыть" onClick="document.location.href='#tr.backUrl#'" class="maincontrol">#request.i18("Закрыть","Close")#</button>
|
||
</cfoutput>
|
||
</layout:attribute>
|
||
</layout:page>
|
||
|
||
<cfif status.errorState GT 0>
|
||
<cfoutput><div class="err">#status.errorMessage#</div></cfoutput>
|
||
</cfif>
|
||
|
||
<cfoutput>
|
||
<input type="hidden" name="service_id" value="#d.service_id#"/>
|
||
<input type="hidden" name="track" value="#tr.self#"/>
|
||
<input type="hidden" name="pass" value=""/><!--- pass marker to prevent save on submit --->
|
||
|
||
<div class="detail">
|
||
|
||
|
||
<div class="tr">
|
||
<div class="th">Услуга по каталогу (абстрактная)</div>
|
||
<div class="td">
|
||
<cfquery name="qList" datasource="#request.DS#">
|
||
select abstract_service_id, abstract_service, code
|
||
from abstract_service
|
||
order by 3,2
|
||
</cfquery>
|
||
<c:combo
|
||
query=#qList#
|
||
combo="abstract_service_id"
|
||
id="abstract_service_id"
|
||
key="abstract_service_id"
|
||
selected="#d.abstract_service_id#"
|
||
displayf="##code## ##abstract_service##"
|
||
empty=""
|
||
class=""
|
||
<!---onchange="submit();"--->
|
||
/>
|
||
<!--- <cfif d.abstract_service_id GT 0>
|
||
<c:link_view_edit canWrite=#pageInfo.writePermitted()# entity="abstract_service" id=#d.abstract_service_id# fwx=#tr.fwx#/>
|
||
</cfif>--->
|
||
</div>
|
||
</div>
|
||
|
||
<div class="tr">
|
||
<div class="th">Класс характеристики</div>
|
||
<div class="td">
|
||
<cfquery name="qAbstractService" datasource="#request.DS#">
|
||
select mc.modifier_class_id, mc.modifier_class
|
||
from abstract_service a
|
||
left outer join modifier_class mc on (a.modifier_class_id=mc.modifier_class_id)
|
||
where a.abstract_service_id=<cfqueryparam cfsqltype="cf_sql_integer" value="#d.abstract_service_id#"/>
|
||
</cfquery>
|
||
#qAbstractService.modifier_class#
|
||
<!--- <cfif qAbstractService.modifier_class_id GT 0>
|
||
<c:link_view_edit canWrite=#pageInfo.writePermitted()# entity="modifier_class" id=#qAbstractService.modifier_class_id# fwx=#tr.fwx#/>
|
||
</cfif>--->
|
||
</div>
|
||
</div>
|
||
|
||
<div class="tr">
|
||
<div class="th">Характеристика</div>
|
||
<div class="td">
|
||
<cfquery name="qList" datasource="#request.DS#">
|
||
select m.modifier_id, m.modifier
|
||
from modifier m
|
||
join abstract_service a on (m.modifier_class_id=a.modifier_class_id)
|
||
where a.abstract_service_id=<cfqueryparam cfsqltype="cf_sql_integer" value="#d.abstract_service_id#"/>
|
||
order by 2
|
||
</cfquery>
|
||
<cfquery name="qFreeModifier" datasource="#request.DS#">
|
||
select m.modifier_id, m.modifier
|
||
from modifier m
|
||
join abstract_service a on (m.modifier_class_id=a.modifier_class_id)
|
||
where a.abstract_service_id=<cfqueryparam cfsqltype="cf_sql_integer" value="#d.abstract_service_id#"/>
|
||
AND NOT exists (select * from service s where s.modifier_id=m.modifier_id AND s.abstract_service_id=a.abstract_service_id)
|
||
order by 2
|
||
limit 1
|
||
</cfquery>
|
||
<c:combo
|
||
query=#qList#
|
||
combo="modifier_id"
|
||
id="modifier_id"
|
||
key="modifier_id"
|
||
selected=#qFreeModifier.modifier_id#
|
||
displayf="##modifier##"
|
||
empty=""
|
||
class=""
|
||
/>
|
||
<!---<cfif d.modifier_id GT 0>
|
||
<c:link_view_edit canWrite=#pageInfo.writePermitted()# entity="modifier" id=#d.modifier_id# fwx=#tr.fwx#/>
|
||
</cfif>--->
|
||
Необходимо выбрать новое уникальное значение характеристики, иначе будет ошибка
|
||
</div>
|
||
</div>
|
||
|
||
<!--- *** Пока решил не уточнять единицу измерения в конкретной услуге, а оставить на абстрактной --->
|
||
<!--- <div class="tr">
|
||
<div class="th">Единица измерения</div>
|
||
<div class="td">
|
||
|
||
<cfquery name="qMeasure" datasource="#request.DS#">
|
||
select measure_id, measure_short
|
||
from measure
|
||
order by 2
|
||
</cfquery>
|
||
<c:combo
|
||
query=#qMeasure#
|
||
combo="measure_id"
|
||
id="measure_id"
|
||
key="measure_id"
|
||
selected="#d.measure_id#"
|
||
displayf="##measure_short##"
|
||
empty=""
|
||
class=""
|
||
readonly=true
|
||
/>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="tr">
|
||
<div class="th">Точность</div>
|
||
<div class="td">
|
||
<input type="text" name="precision" value="#d.precision#" size="1" readonly/>
|
||
</div>
|
||
</div>--->
|
||
|
||
<!--- <div class="tr">
|
||
<div class="th">Цена без НДС, ₽</div>
|
||
<div class="td">
|
||
<input type="text" name="base_price" id="base_price" value="#d.base_price#" size="10" readonly/>
|
||
<i>для композитных услуг указывать не следует</i>
|
||
</div>
|
||
</div>--->
|
||
|
||
<div class="tr">
|
||
<div class="th">Описание</div>
|
||
<div class="td">
|
||
<textarea name="descr" rows="10" cols="100" readonly>#request.htm2plain(d.descr)#</textarea>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="tr">
|
||
<div class="th">Создано</div>
|
||
<div class="td">
|
||
#dateFormat(d.dt_created,'DD.MM.YYYY')# #timeFormat(d.dt_created,'HH:MM')#
|
||
#qDecoration.creator# <cfif len(qDecoration.creator_shortname)>(#qDecoration.creator_shortname#)</cfif>
|
||
|
||
Изменено
|
||
#dateFormat(d.dt_updated,'DD.MM.YYYY')# #timeFormat(d.dt_updated,'HH:MM')#
|
||
#qDecoration.updater# <cfif len(qDecoration.updater_shortname)>(#qDecoration.updater_shortname#)</cfif>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</cfoutput>
|
||
|
||
<layout:page section="extension" closeForm="Yes"/>
|
||
|
||
<!--- ------------------------------------------------------------------------------- --->
|
||
<!--- ------------------------------------------------------------------------------- --->
|
||
<!--- ------------------------------------------------------------------------------- --->
|
||
<cfif d.service_id GT 0>
|
||
<cfquery name="qServiceParam" datasource="#request.DS#">
|
||
select
|
||
sp.service_param_id
|
||
,ac.param_class_id
|
||
,sp.param_id
|
||
,p.param
|
||
,c.param_class
|
||
,(select count(*) from service_param_price spp where spp.service_param_id=sp.service_param_id) as price_count
|
||
from service_param sp
|
||
left outer join abstract_service_param_class ac on (sp.abstract_service_param_class_id=ac.abstract_service_param_class_id)
|
||
left outer join param_class c on (ac.param_class_id=c.param_class_id)
|
||
left outer join param p on (sp.param_id=p.param_id)
|
||
where sp.service_id=<cfqueryparam cfsqltype="cf_sql_integer" value="#d.service_id#"/>
|
||
order by p.param, c.param_class
|
||
</cfquery>
|
||
|
||
|
||
<cfoutput>
|
||
<p>Компоненты (#qServiceParam.recordCount#)
|
||
<cfif pageInfo.writePermitted()>
|
||
<cfoutput>
|
||
<cfset addUrl="service_param.cfm?service_param_id=-1&service_id=#d.service_id#&#tr.fwx#"/>
|
||
<button type="button" class="maincontrol" onclick="document.location.href='#addUrl#'">
|
||
<a href="#addUrl#">Добавить</a>
|
||
</button>
|
||
</cfoutput>
|
||
</cfif>
|
||
</p>
|
||
</cfoutput>
|
||
|
||
|
||
<table class="worktable">
|
||
<thead>
|
||
<tr>
|
||
<th></th>
|
||
<th>Компонент</th>
|
||
<th>Вариант компонента</th>
|
||
<th>Цен для прайс-листа (вариантов)</th>
|
||
<th></th>
|
||
</tr>
|
||
</thead>
|
||
<cfoutput query="qServiceParam">
|
||
<tr>
|
||
<td>
|
||
<!---<c:link_view_edit canWrite=#pageInfo.writePermitted()# entity="service_param" id=#service_param_id# fwx=#tr.fwx#/>--->
|
||
</td>
|
||
<td>
|
||
<cfif param_class_id GT 0><a href="param_class.cfm?param_class_id=#param_class_id#&#tr.fwx#">#param_class#</a></cfif>
|
||
</td>
|
||
<td>
|
||
<cfif param_id GT 0><a href="param.cfm?param_id=#param_id#&#tr.fwx#">#param_class# / #param#</cfif></a>
|
||
</td>
|
||
<td class="c">
|
||
<cfif price_count GT 0>#price_count#</cfif>
|
||
</td>
|
||
<td class="c">
|
||
<!---<c:link_del canWrite=#pageInfo.writePermitted()# entity="service_param" id=#service_param_id# fwx=#tr.fwx#/>--->
|
||
</td>
|
||
</tr>
|
||
</cfoutput>
|
||
</table>
|
||
<!---
|
||
Если задан вариант компонента (param), а не компонент (param_class), то в колонке Цен для прайс-листа (вариантов) должна быть ровно единица--->
|
||
</cfif>
|
||
<!--- ------------------------------------------------------------------------------- --->
|
||
<!--- ------------------------------------------------------------------------------- --->
|
||
<!--- ------------------------------------------------------------------------------- --->
|
||
<layout:page section="footer"/> |