diff --git a/Application.cfc b/Application.cfc index 6820f8f..3e28d77 100644 --- a/Application.cfc +++ b/Application.cfc @@ -69,7 +69,7 @@ - + diff --git a/agreement.cfm b/agreement.cfm index e6daf8f..3e735c9 100644 --- a/agreement.cfm +++ b/agreement.cfm @@ -69,6 +69,17 @@ where d.contract_id= + + select + a.agreement + ,a.dt_agreement + ,a.agreement_version + ,a.is_actual + from agreement a + where a.contract_id= + order by a.agreement_version + + - select + select iv.specification_item_uid ,iv.agreement_version /*лучше читается, когда все одинаково берется из резалтсета*/ ,i.svc_id @@ -219,7 +244,11 @@ ,ver.quantity as prev_quantity ,ver.dt_from as prev_dt_from ,ver.dt_to as prev_dt_to - ,case when ver.agreement_version IS NULL then 'new' else 'change' end as change_type /*удалить услугу нельзя, можно только завершить ее оказание (после этого в более поздних версиях она должна стать незаметной)*/ + ,case + when ver.agreement_version = iv.agreement_version then '' + when ver.agreement_version IS NULL then 'new' + else 'changed' + end as change_type /*удалить услугу нельзя, можно только завершить ее оказание (после этого в более поздних версиях она должна стать незаметной)*/ ,COALESCE(iv.price*iv.quantity,0) - COALESCE(ver.price*ver.quantity,0) as cost_diff from specification_item_version iv @@ -229,7 +258,7 @@ join contract d on (s.contract_id=d.contract_id) join contragent k on (d.contragent_id=k.contragent_id) left outer join svc on (i.svc_id=svc.svc_id) - left outer join (select + left outer join (select /*предыдущая версия*/ siv.agreement_version ,siv.specification_item_uid ,a.agreement @@ -255,9 +284,17 @@ AND ia.is_actual AND ia.agreement_version < ) - ) ver on (iv.specification_item_uid=ver.specification_item_uid AND ver.specification_id=s.specification_id) + ) ver on (iv.specification_item_uid=ver.specification_item_uid AND ver.specification_id=s.specification_id) /*а тут не будет замножения впр*/ where s.contract_id= - AND iv.agreement_version= + AND iv.agreement_version=(select max(iiv.agreement_version) + from specification_item_version iiv + join specification_item ii on (iiv.specification_item_uid=ii.specification_item_uid) + join specification isp on (ii.specification_id=isp.specification_id) + join agreement ia on (isp.contract_id=ia.contract_id AND iiv.agreement_version=ia.agreement_version) + where iiv.specification_item_uid=i.specification_item_uid + AND ia.is_actual + AND iiv.agreement_version <= + ) order by i.specification_id @@ -267,17 +304,19 @@

- + + - - + + + @@ -299,8 +338,8 @@ - - + + + + + - - + + @@ -344,8 +384,8 @@ +
Специф-я Договор Контрагент Стабильный ключ строкиУслугаМодельКод услугиУслуга Имя для печатиМодель Дата с Дата по
"edit""view"> @@ -312,13 +351,14 @@ #contragent# #specification_item_uid# - #code# #svc# - #pricing_model_short##code# #specification_item_version##pricing_model_short# #dateFormat(dt_from,'DD.MM.YYYY')# #dateFormat(dt_to,'DD.MM.YYYY')#
- Может быть, сюда для ясности добавить не измененые строки спецификаций?
diff --git a/contract.cfm b/contract.cfm index a5711e9..7765ee3 100644 --- a/contract.cfm +++ b/contract.cfm @@ -149,9 +149,13 @@ ,a.agreement ,a.dt_agreement ,a.is_actual + ,(select count(*) from specification_item_version iv + join specification_item i on (iv.specification_item_uid=i.specification_item_uid AND iv.agreement_version=a.agreement_version) + join specification s on (i.specification_id=s.specification_id AND s.contract_id=a.contract_id) + ) as items_changed from agreement a where a.contract_id= - order by 1 + order by a.agreement_version @@ -176,6 +180,7 @@ Название Дата Действует + Строк изменено @@ -188,6 +193,7 @@ #agreement# #dateFormat(dt_agreement,'DD.MM.YYYY')# + #items_changed# diff --git a/specification.cfm b/specification.cfm index 9eacf3d..d2d6f9e 100644 --- a/specification.cfm +++ b/specification.cfm @@ -96,8 +96,9 @@
Договор
- select c.contract_id, c.contract, c.dt_contract - from contract c + 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 @@ -208,7 +209,7 @@

- Фактура. Строки спецификации (#qItem.recordCount#) + Фактура - строки спецификации, актуальная версия (#qItem.recordCount#) @@ -253,7 +254,7 @@ #code# #item_version_count# - #agreement# #dateFormat(dt_agreement,'DD.MM.YYYY')# + #agreement# /#dateFormat(dt_agreement,'DD.MM.YYYY')# #agreement_version# @@ -271,15 +272,12 @@ - Как сущности версии спецификации нет. - Можно синтезировать версию спецификации на произвольную дату, а можно по версии определенного соглашения (это должно быть возмозно, потому что соглашение меняет каждую строку не более 1 раза - ) - Спецификация по версии соглашения не учитывает is_actual этого соглашения, но учитывает предыдущие + Можно собрать версию спецификации на произвольную дату, а можно по версии определенного соглашения (это возможно, потому что соглашение меняет каждую строку не более 1 раза) + + Отображаеммая спецификация по версии соглашения не учитывает флаг is_actual этого соглашения, но учитывает флаги is_actual предыдущих *** Собственно, нам нужно для илюстрации версионности как раз синтезировать спецификацию на дату и спецификацию по версии согдашения - - - + select @@ -305,7 +303,7 @@

- Версии (#qVersion.recordCount#) + Версии спецификации (#qVersion.recordCount#) select @@ -198,7 +199,7 @@ left join contract d on (s.contract_id=d.contract_id) left join agreement a on (siv.agreement_version=a.agreement_version AND s.contract_id=a.contract_id) where siv.specification_item_uid= - order by siv.agreement_version desc + order by siv.agreement_version diff --git a/specification_item_ls.cfm b/specification_item_ls.cfm index 2495e3a..2418c1c 100644 --- a/specification_item_ls.cfm +++ b/specification_item_ls.cfm @@ -92,7 +92,7 @@ join agreement ia on (isp.contract_id=ia.contract_id AND iiv.agreement_version=ia.agreement_version) where iiv.specification_item_uid=si.specification_item_uid AND ia.is_actual - ) + ) diff --git a/specification_item_version.cfm b/specification_item_version.cfm index 50c22a0..f4b40de 100644 --- a/specification_item_version.cfm +++ b/specification_item_version.cfm @@ -97,6 +97,14 @@ where i.specification_item_uid= + + select + iv.agreement_version + from specification_item_version iv + where iv.specification_item_uid= + order by 1 + + @@ -222,6 +230,18 @@ #qDecoration.updater# (#qDecoration.updater_shortname#) + + + + #agreement_version# + + #agreement_version# + +   + + номера соглашений, в которых данная строка изменялась + +