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 @@
|
-
-
+
+
"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')# |
@@ -344,8 +384,8 @@
+
- Может быть, сюда для ясности добавить не измененые строки спецификаций?
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#
+
+
+
+ номера соглашений, в которых данная строка изменялась
+
+
|