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 c.contract_id, c.contract, c.dt_contract from contract c 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 ,(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.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.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 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

Строки спецификации (#qItem.recordCount#)

(количество, цена, даты актуальности, версия/соглашение, имя для печати - для последней актуальной версии)
Ключ строки Услуга Код услуги Версий   Тек. соглашение Тек. версия Дата с Дата по Количество Цена Имя для печати
#specification_item_uid# #svc# #code# #item_version_count# #agreement# #dateFormat(dt_agreement,'DD.MM.YYYY')# #agreement_version# #dateFormat(dt_from,'DD.MM.YYYY')# #dateFormat(dt_to,'DD.MM.YYYY')# #quantity# #price# #specification_item#
Как сущности версии спецификации нет. Можно синтезировать версию спецификации на произвольную дату, а можно по версии определенного соглашения (это должно быть возмозно, потому что соглашение меняет каждую строку не более 1 раза ) Спецификация по версии соглашения не учитывает is_actual этого соглашения, но учитывает предыдущие *** Собственно, нам нужно для илюстрации версионности как раз синтезировать спецификацию на дату и спецификацию по версии согдашения select a.agreement ,a.dt_agreement ,a.agreement_version ,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 2

Версии (#qVersion.recordCount#)

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