Руководство по настройке altAwin:Калькуляция стоимости
Подраздел «Калькуляция стоимости»
В подразделе Калькуляция стоимостикалькуляция стоимости задаются позиции калькуляции, которые указывают, каким образом должны определяться количественные значения, которые будут использоваться для определения конечной стоимости сущностей, составляющих заказ.
В левой части экрана расположено дерево папок, соответствующее разным объектам калькуляции (строение дерева жёстко определено программой):
- Стоимость изделия конструкции;
- Стоимость стеклопакета;
- Стоимость сэндвича;
- Стоимость москитной сетки;
- Стоимость набора компонентов;
- Стоимость компонента;
- Стоимость ламинации профиля;
- Стоимость гибки профиля;
- Стоимость услуги к заказу;
- Стоимость заказакалькуляция:заказа.
Таблица отражает содержание выбранного узла дерева. Каждая строка таблицы, представляющая отдельную позицию калькуляции, содержит формулу расчёта для определённого ценообразующего фактора.
Например, для того чтобы настроить калькуляцию стоимости для стеклопакета, необходимо создать строку с данными в папке Стоимость стеклопакета.
Кроме того, в табличных представлениях, соответствующих папкам Cтоимость изделия конструкции и Cтоимость заказа, можно настроить расчёт в целом для конструкции или заказа.
Для определения конечной стоимости элемента заказа используется принцип линейного расчёта — расчёт начинается с первой позиции таблицы, а результатом его является последняя позиция. В связи с этим расположение строк внутри таблицы весьма существенно. Строка, расположенная ниже, может включать в свою формулу значения, полученные при обработке строк, расположенных выше
Для перемещения строк внутри таблицы предназначены кнопки Вверх и Вниз на контекстной панели инструментов.
Таким образом:
- значение, рассчитанное по формуле последней строки папки Стоимость изделия конструкции, умножается на число изделий в рассчитываемой конструкции; полученное произведение, cуммируясь со значениями калькуляции стоимости других составляющих частей заказа, определяет его конечную стоимость, отображаемую на вкладке Общие данные формы заказа.
Окно отдельного значения калькуляции стоимости
Окно значения калькуляции стоимости (рис. 4.19) содержит следующие поля:
- Часть калькуляции — [Стоимость изделия конструкции] заполняется автоматически исходя из выбранной позиции в дереве частей калькуляции.
- Наименование — наименование позиции;
- Тип калькуляцйии — Расчёт значения или Переоценка изделий. Доступно для калькуляции стоимости заказа;
- Имя переменной — идентификатор для использования данного вычисленного значения калькуляции в позициях, расположенных ниже в таблице (будет отображено в качестве наименования переменной в дизайнере выражений и условий в разделе Внешние параметры);
- Элемент калькуляции — элемент калькуляции, присваиваемый этой позиции (выбирается из справочника Элементы калькуляции, см. РНА:Элементы калькуляции). Различным позициям может быть присвоен один и тот же элемент калькуляции;
- Сохранять в БД — флаг показывает, следует ли сохранять данную позицию в БД;
- Сохранять в дилере — флаг отвечает за то, будет ли производиться сохранение данной позиции калькуляции на дилерском месте;
- Условие — условие, при соблюдении которого программа будет рассчитывать эту позицию (подробнее о процедуре установки условия см. РНА:Система настраиваемых вычислений);
- Условие применения значения калькуляции можно быстро удалить непосредственно из представления при помощи кнопки панели инструментов Обнуление условия.
- Формула вычисления значения позиции — формула расчёта, которая может включать в себя:
- параметры, заданные в подразделе Параметры состава, ветвь Калькуляция (см. РНА:Параметры состава#Ветвь «Калькуляция»);
- позиции калькуляции, расположенные выше по списку в справочнике Значения калькуляции;
- РНА:Внутренние параметры
- встроенные функции;
- вводимые вручную цифры и арифметические знаки.
О процедуре установки формулы см. РНА:Система настраиваемых вычислений.
При составлении формул нередко требуется группировка материалов. Ранее для этого использовалась функция CondSum, которая возвращала сумму всех полей, удовлетворяющих условию. Функция имела следующий синтаксис:
function CondSum(const Field: string; const Value: string; NonStrict: Boolean = False; WithDiscount: Boolean = False): Double;
В версии AltAwin 3.3 было введено понятие тега компонента и расширен набор полей массива компонентов Stuffs.
Список рассчитанных компонентов, представленный массивом Stuffs (доступен в числе переменных калькуляции Стоимость изделия, Стоимость ламинации, Трудоёмкость ламинации) содержит дополнительные поля, которые могут использоваться при составлении формул для вычисления финальной стоимости:
- PurchasingPrice — закупочная цена с переоценкой;
- PurchasingPriceWithWaste — закупочная цена с переоценкой и отходом;
- PurchasingPriceWithWasteAndCharge — закупочная цена с переоценкой, отходом и наценкой;
- RetailPrice — продажная цена = отпускная цена или PurchasingPriceWithWasteAndCharge.
Функция FilterByTag возвращает список компонентов, отфильтрованных по тегу (см. РНА:Теги компонентов):
- function FilterByTag(TagCode: string): IStuffSummaryList;
Функция FilterByType возвращает список компонентов, отфильтрованных по типу (см. РНА:Типы компонентов):
- function FilterByType(TypeCode: string): IStuffSummaryList;
Следующий примёр вернет сумму закупочных цен с переоценкой для всех компонентов с кодом тега tag1:
Stuffs.FilterByTag('tag1').PurchasingPrice;
Переоценка изделий заказа
В калькуляции стоимости заказа предусмотрена возможность создания элементов с типом калькуляции Переоценка. Расчёт позиций калькуляции переоценки позволяет добиться изменения рассчитанных цен изделий заказа.
Переоценка изделий производится при помощи функций SetUnitPrice и GetUnitPrice, которые предназначены для установки и получения новой цены изделия соответственно. После выполнения переоценки собственные калькуляции изделий будут дополнены строчками со всеми переоценками, а также получат новую стоимость. Новые цены изделий будут учтены в зависимых переменных калькуляции.
Результатом вычисления позиции калькуляции переоценки будет суммарная разница между старой и новой ценами всех переоценённых изделий.
Например, для применения скидки 25 % на все изделия может быть использована следующая формула калькуляции:
for I := 0 to OrderUnits.Count - 1 do
SetUnitPrice(OrderUnits[I], OrderUnits[I].Price * 0.75);