+ #d.agreement_version# (некорректно, в одном месте версией называется номер, а в другом сущность, и это отразилось в именовании таблиц и полей)
+
+
+
+
+
Соглашение (номер для печати)
+
+
+
+
+
+
+
Дата соглашения
+
+
+
+ для упрощения можно позволить соглашению иметь обратную силу - то есть просто не проверять, что дата изменения строки спецификации не раньше даты соглашения
+
+
+
+
+
Действует
+
+ checked/>
+ если соглашение действует, это означает ровно то, что его правки учитываются при формировании спецификации на любую дату
+
+Соглашение просто объединяет правки строк спецификации в пакет и оформляет их документом (в случае с допником). То есть версии строк существуют не сами по себе, а связаны с конкретным соглашением. Между прочим, это означает, что в рамках одного доп. соглашения мы не можем сделать 2 изменения строки, например 2 разные цены с разных дат - нужно оформлять отдельными допниками.
+Можно назвать нулевое соглашение базовым, а остальные дополнительными. (наверное, можно было бы синтезировать базовое соглашение с NULL номером)
+Есть ли понятие текущего соглашения?
+Есть ли понятие действующего соглашения, или у нас все действуют, или строки из недействующего соглашения не должны участвовать в цепочке (тогда, видимо, не удастся активировать соглашение задним числом, цепочка может разрушиться)
+Если к соглашению нет измененных строк спецификации, в нем нет большого смысла (но изменения строк надо к чему-то приписывать).
+Надо было начать с моделирования данных в таблицах, до интерфейса?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#agreement_item_uid#
+
#svc#
+
#code#
+
#item_version_count#
+
+
+
+
+
+
+
+ --->
+
+
+
diff --git a/contract.cfm b/contract.cfm
index a1b3fdd..a11866e 100644
--- a/contract.cfm
+++ b/contract.cfm
@@ -30,6 +30,8 @@
+
+
pageInfo=#pageInfo#
@@ -146,6 +148,7 @@
s.specification_id
,s.specification
,(select count(*) from specification_item i where i.specification_id=s.specification_id) as item_cnt
+ ,(select count(*) from specification_version v where v.specification_id=s.specification_id) as version_cnt
from specification s
where s.contract_id=
order by 1
@@ -162,13 +165,14 @@
-
+ Как правило, в договоре 1 спецификация, а ее версии определяются дополнительными соглашениями
Номер спецификации
Строк
+
Версий
@@ -180,6 +184,9 @@
#specification#
#item_cnt#
+
+
+ #version_cnt#
@@ -187,6 +194,58 @@
+
+
+ select
+ a.contract_id
+ ,a.agreement_version
+ ,a.agreement
+ ,a.dt_agreement
+ ,a.is_actual
+ from agreement a
+ where a.contract_id=
+ order by 1
+
+
+
+
Соглашения (#qAgreement.recordCount#)
+
+
+
+
+
+
+
+
+
+
+
+
+
Номер соглашения (версия)
+
Название
+
Дата
+
Действует
+
+
+
+
+
+
+
+
+
#agreement_version#
+
#agreement#
+
#dateFormat(dt_agreement,'DD.MM.YYYY')#
+
+
+
+
+
+
+
+ любопытное последствие использования составного ключа: отпадает желание делать для сущности самостоятельный реестр (может быть, только если есть явная сущность-владелец, как договор для соглашения)
diff --git a/etc/db/spec.sql b/etc/db/spec.sql
index 959ab30..5aa8049 100644
--- a/etc/db/spec.sql
+++ b/etc/db/spec.sql
@@ -68,7 +68,7 @@ create table agreement (
--agreement_id int GENERATED BY DEFAULT AS IDENTITY NOT NULL PRIMARY KEY
--,
contract_id int NOT NULL
- ,agreement_version int NOT NULL
+ ,agreement_version int NOT NULL -- ,
,agreement varchar(255) NULL --
,dt_agreement timestamptz NOT NULL -- , ( , )
,is_actual boolean NOT NULL -- , 1 - , , ,
@@ -101,6 +101,7 @@ insert into specification (specification,contract_id) values ('first spec',1);
--
+-- , - , - , ,
drop table if exists specification_version CASCADE;
create table specification_version (
specification_id int
diff --git a/lib/dispatch_detail.cfm b/lib/dispatch_detail.cfm
index 30bffcd..5c18fcb 100644
--- a/lib/dispatch_detail.cfm
+++ b/lib/dispatch_detail.cfm
@@ -8,16 +8,16 @@
-
+
-
+
-
+
-
+
diff --git a/lib/generic_page_info.cfc b/lib/generic_page_info.cfc
index 08c50d3..a9171fe 100644
--- a/lib/generic_page_info.cfc
+++ b/lib/generic_page_info.cfc
@@ -1,6 +1,6 @@
-
+
@@ -11,7 +11,7 @@
-
+
diff --git a/lib/prepare_detail.cfm b/lib/prepare_detail.cfm
index c98e9bc..ef083f5 100644
--- a/lib/prepare_detail.cfm
+++ b/lib/prepare_detail.cfm
@@ -1,4 +1,7 @@
-
+
+
+
+
@@ -8,7 +11,9 @@
+
+
@@ -18,7 +23,7 @@
-
+
diff --git a/specification.cfm b/specification.cfm
index 7d2d518..2d90f91 100644
--- a/specification.cfm
+++ b/specification.cfm
@@ -179,7 +179,7 @@