Показать сообщение отдельно
Старый 13.09.2017, 09:54   #4  
DAX.Company is offline
DAX.Company
Участник
 
296 / 97 (4) ++++
Регистрация: 24.11.2016
С Навом не работал. Но во всех системах одно и тоже. Я бы делал так. Во-первых, никакой программисткой мешанины. Все должно быть прозрачно для пользователей. Т.е. должна быть возможность легко увидеть/распечатать Текущий договор (обязательства), основной договор, все доп соглашения.
Вводим enum (перечисление): Текущий договор, Основной договор, Доп. соглашение. Все основано на сущности договор (Customer Agreement и Customer Agreement Lines). Сначала пользователь создает Текущий договор (это просто болванка для будущего заполнения). Далее по кнопке нажимает Основной договор. Появляется та же форма с Договорами. Водит шапку/строки. По некоему апруву данные из основного договора заполняются в шапку Текущего договора. В том числе копируются строки. Далее из Текущего договора так же по кнопке можно ввести Доп. соглашения. В доп соглашении надо ввести новые строки, а так же выбрать какие строки удалить из Текущего договора (Основной договор при этом никак не меняется!). Тут не надо заморачиваться с корректировкой строк. Просто удаляем и создаем новые. По апруву удаляем выбранные строки в Текущем договоре и создаем из доп. соглашения новые строки. Доп. соглашений можно создавать много. Ес-но у Основного договора и Доп. соглашений есть ссылка на Текущий договор. В операциях в системе (создание Заказов, выставление счета и прочее) используется только Текущий договор. Так же можно организовать иерархию на форме договоров. Достаточно фильтровать по Типу и Дате договора. Т.е. на форме будет идти Текущий договор, Основной договор, потом все Доп. соглашения. Так же есть такое понятие как Рамочный договор. Его тоже легко вписать в эту концепция.
Сам так не делал. Не судите строго. Чисто мысли как я бы сделал.