pageInfo=#pageInfo# id="#d.specification_id#" status=#pageInfo.status# trackOut="tr" idAttributesOut="id" /> 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#= select d.contract_id, d.contract, d.dt_contract, c.contragent_id, c.contragent from contract d left outer join contragent c on (d.contragent_id=c.contragent_id) where d.contract_id= Спецификация #d.specification# [#d.specification_id#]
#status.errorMessage#
Спецификация (номер)
Договор
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 1 />
Описание
Создано
#dateFormat(d.dt_created,'DD.MM.YYYY')# #timeFormat(d.dt_created,'HH:MM')# #qDecoration.creator# (#qDecoration.creator_shortname#)       Изменено #dateFormat(d.dt_updated,'DD.MM.YYYY')# #timeFormat(d.dt_updated,'HH:MM')# #qDecoration.updater# (#qDecoration.updater_shortname#)
select i.specification_item_uid ,svc.svc_id ,svc.svc ,svc.code ,s.specification_id ,s.contract_id ,i.pricing_model_id ,p.pricing_model_short ,(select siv.agreement_version from specification_item_version siv join agreement a on (siv.agreement_version=a.agreement_version AND a.contract_id=s.contract_id) where siv.specification_item_uid=i.specification_item_uid AND a.is_actual order by siv.agreement_version desc limit 1) as agreement_version ,(select a.agreement from specification_item_version siv join agreement a on (siv.agreement_version=a.agreement_version AND a.contract_id=s.contract_id) where siv.specification_item_uid=i.specification_item_uid AND a.is_actual order by siv.agreement_version desc limit 1) as agreement ,(select a.probability_perc from specification_item_version siv join agreement a on (siv.agreement_version=a.agreement_version AND a.contract_id=s.contract_id) where siv.specification_item_uid=i.specification_item_uid AND a.is_actual order by siv.agreement_version desc limit 1) as probability_perc ,(select a.is_actual from specification_item_version siv join agreement a on (siv.agreement_version=a.agreement_version AND a.contract_id=s.contract_id) where siv.specification_item_uid=i.specification_item_uid AND a.is_actual order by siv.agreement_version desc limit 1) as is_actual ,(select a.dt_agreement from specification_item_version siv join agreement a on (siv.agreement_version=a.agreement_version AND a.contract_id=s.contract_id) where siv.specification_item_uid=i.specification_item_uid AND a.is_actual order by siv.agreement_version desc limit 1) as dt_agreement ,(select siv.specification_item_version from specification_item_version siv join agreement a on (siv.agreement_version=a.agreement_version AND a.contract_id=s.contract_id) where siv.specification_item_uid=i.specification_item_uid AND a.is_actual order by siv.agreement_version desc limit 1) as specification_item ,(select siv.quantity from specification_item_version siv join agreement a on (siv.agreement_version=a.agreement_version AND a.contract_id=s.contract_id) where siv.specification_item_uid=i.specification_item_uid AND a.is_actual order by siv.agreement_version desc limit 1) as quantity ,(select siv.price from specification_item_version siv join agreement a on (siv.agreement_version=a.agreement_version AND a.contract_id=s.contract_id) where siv.specification_item_uid=i.specification_item_uid AND a.is_actual order by siv.agreement_version desc limit 1) as price ,(select siv.price*siv.quantity from specification_item_version siv join agreement a on (siv.agreement_version=a.agreement_version AND a.contract_id=s.contract_id) where siv.specification_item_uid=i.specification_item_uid AND a.is_actual order by siv.agreement_version desc limit 1) as cost ,(select siv.price*siv.quantity*a.probability_perc/100 from specification_item_version siv join agreement a on (siv.agreement_version=a.agreement_version AND a.contract_id=s.contract_id) where siv.specification_item_uid=i.specification_item_uid AND a.is_actual order by siv.agreement_version desc limit 1) as cost_p ,(select siv.dt_from from specification_item_version siv join agreement a on (siv.agreement_version=a.agreement_version AND a.contract_id=s.contract_id) where siv.specification_item_uid=i.specification_item_uid AND a.is_actual order by siv.agreement_version desc limit 1) as dt_from ,(select siv.dt_to from specification_item_version siv join agreement a on (siv.agreement_version=a.agreement_version AND a.contract_id=s.contract_id) where siv.specification_item_uid=i.specification_item_uid AND a.is_actual order by siv.agreement_version desc limit 1) as dt_to ,(select count(*) from specification_item_version siv where siv.specification_item_uid=i.specification_item_uid) as item_version_count from specification_item i join pricing_model p on (i.pricing_model_id=p.pricing_model_id) join specification s on (i.specification_id=s.specification_id) --left outer join () left outer join svc on (i.svc_id=svc.svc_id) where i.specification_id= order by 2 select sum(cost) as cost, sum(cost_p) as cost_p from qItem

Фактура - строки спецификации, актуальная версия (#qItem.recordCount#)

(количество, цена, даты актуальности, версия/соглашение, имя для печати - для последней актуальной версии)
Ключ строки Код услуги Услуга Имя для печати Модель Количество Цена Стоимость Ст-сть с вер.   Версий Тек. соглашение Тек. версия Дата с Дата по
#specification_item_uid# #code# #svc# #specification_item# #pricing_model_short# #quantity# #price# #cost# #cost_p# #item_version_count# #agreement# /#dateFormat(dt_agreement,'DD.MM.YYYY')# #probability_perc#% #agreement_version# #dateFormat(dt_from,'DD.MM.YYYY')# #dateFormat(dt_to,'DD.MM.YYYY')#
#cost# #cost_p#
Можно собрать версию спецификации на произвольную дату, а можно по версии определенного соглашения (это возможно, потому что соглашение меняет каждую строку не более 1 раза) Отображаеммая спецификация по версии соглашения не учитывает флаг is_actual этого соглашения, но учитывает флаги is_actual предыдущих *** Собственно, нам нужно для илюстрации версионности как раз синтезировать спецификацию на дату и спецификацию по версии согдашения select a.agreement ,a.dt_agreement ,a.agreement_version ,a.probability_perc ,a.is_actual ,(select count(*) from specification_item si join specification_item_version iv on (si.specification_item_uid=iv.specification_item_uid) where si.specification_id= AND iv.agreement_version=a.agreement_version ) as changed_item_cnt from agreement a where a.contract_id= /*AND exists ( select * from specification_item si join specification_item_version iv on (si.specification_item_uid=iv.specification_item_uid) where si.specification_id=s.specification_id AND iv.agreement_version=a.agreement_version )*/ order by a.agreement_version

Версии спецификации (#qVersion.recordCount#)

Соглашение (имя) Дата согл. Н-р согл. Вероятность % Действует Строк изменено
#agreement# #dateFormat(dt_agreement,'DD.MM.YYYY')# #agreement_version# #probability_perc# #changed_item_cnt#