Типы договоров

Материал из GB wiki
Перейти к: навигация, поиск


Виды типов договоров

Типы договоров делятся на системные и несистемные, за это отвечает свойство System в типе договора.

Договор системного типа не нужно выбирать на документе, он будет работать всегда. Договор обычного типа (не системного) обязательно должен быть выбран в документе в поле Contract.

С каждым партнером может быть связан набор договоров, некоторые из которых могут быть системными. Для любых типов договоров можно определять управляющие воздействия, которые могут изменять процесс работы с документами. При наличии действующего системного договора (на дату документа) нельзя изменять партнера.

Воздействия

Каждое воздействие описывается 4 параметрами:

  • Момент воздействия
    Определены следующие моменты воздействия договора:
    • Изменение документа
    • Отгрузка документов (группировка по партнеру)
    • Выбор товара
    • Выбор партнера
    • Выбор договора
    • Поиск товара
    • Открытие документа
    • Управляющее воздействие для модемного сервера
    • Отгрузка документа
    • Изменение количества товара
    • Отгрузка документа (проверка товаров)
    • Изменение цены товара
    • Пользовательское
    • Выбор склада
  • Условие - логическое выражение, при выполнении которого срабатывает воздействие.
  • Воздействие – определяет поведение системы при срабатывании условия.
    Специфические функции для воздействий договоров:
    Общие
    • WARN – выдает окошко для подтверждения действия
    • DENY – запрещает выполнение действия
    Функции для персональных цен:
    • DISCOUNT Задает скидку для товара
    • SETSPECIALPRICE Задает цену для товара
    • APPLYCONTRACTCONDITIONS Применяет скидки, отсрочку платежа и прайс-лист из договора
    • CONTRACTPARAM Получает значение из товарного наполнения договора
    Функции для взаимодействия разных договоров:
    • BLOCKEFFECT Блокирует выполнение воздействия для заданного типа договора
    • APPLYNEXTEFFECT Принудительно осуществляет поиск и исполнение воздействий того же типа
  • Приоритет – у одного типа договора на один и тот же момент воздействия может быть определено несколько воздействий с разными приоритетами. Правила их совместной работы:
    • Если ни в одном типе договоров нет воздействия с функцией BLOCKEFFECT, то срабатывает только одно воздействие с максимальным приоритетом, и для вызова следующего по порядку нужно вызвать функцию APPLYNEXTEFFECT. Данный режим сохранен только для совместимости, мы настоятельно не рекоммендуем его использовать
    • Если хотя бы в одном типе договора есть воздействие с функцией BLOCKEFFECT (в установках, где это не требуется, настоятельно рекоммендуется добавить фальшивое воздействие с условеим 0!), то срабатывают все воздействия в порядке убывания приоритета, и пропускаются те, выполнение которых было заблокировано вызовом BLOCKEFFECT.

Пример совместной работы воздействий

Предположим, нам нужно запретить продажу товаров из определенной группы всем покупателям, не имеющим лицензии. Такой запрет делается при помощи двух типов договоров:

1. Запрет продажи без лицензии, системный

Id=Z

Воздействие:

Момент Условие Воздействие Приоритет
Выбор товара Проверка принадлежности товара папке DENY(`Запрещена отгрузка без лицензии`) 1

Создается 1 договор данного типа на партнера 0 (тип договора, закладка "Общие договора") - таким образом, этот договор будет действовать для всех партнеров.

2. Лицензия, системный или нет - в зависимости от того, хотим ли мы его выбирать в документе.

Воздействие:

Момент Условие Воздействие Приоритет
Выбор товара Проверка принадлежности товара папке BLOCKEFFECT(Z) 2

Создается для каждого партнера, которому нужно разрешить отгрузку. Поскольку приоритет 2>1, то воздействие выполнится первым и заблокирует запрет выписки

Персональные цены

При помощи воздействий договоров реализуются системы персональных цен и скидок