Сложная формула расчёта стоимости дополнительной услуги в SPSM


Рассмотрим реальный пример применения сложной формулы для расчёта стоимости дополнительных услуг в программе расчёта заказов печати .


Формула расчёта стоимости подрамника и натяжки холста.


Шаги необходимые для добавления формулы показаны в примере простого расчета, в данном примере рассматривается только формула.

Изначально расчёт вёлся в Excel :


Sevit Print Shop Manager (SPSM): составление сложных формул расчёта, перевод существующей формулы из Excel


После того для как расчёта услуги натяжки на подрамник была использована программа SPSM натяжка была оформлена как дополнительная услуга. Формула расчёта стоимости услуги в программе выглядит так (расчёт был слегка изменён по сравнению с исходным):


(360*%SQUARE_PER_ITEM%)+40+
IF(%ONE_PERM%<=3,
    90*(%ONE_PERM%+%SMALL_SIDEM%)+20+80,
            IF(%ONE_PERM%<=4,
                111*(%ONE_PERM%+%SMALL_SIDEM%)+90+100,
                IF(%ONE_PERM%<=6,
                     126*(%BIG_SIDEM%*3+%SMALL_SIDEM%*3)+90+120,
                     126*(%BIG_SIDEM%*3+%SMALL_SIDEM%*4)+90+130
                    )
            )
)


Формула с расшифровкой переменных:


(360*"Площадь одной копии")+40+
IF("Периметр 1 экз. индив. заказа в метрах"<=3,
    90*("Периметр 1 экз. индив. заказа в метрах"+"Размер меньшей стороны в метрах")+20+80,
            IF("Периметр 1 экз. индив. заказа в метрах"<=4,
                111*("Периметр 1 экз. индив. заказа в метрах"+"Размер меньшей стороны в метрах")+90+100,
                IF("Периметр 1 экз. индив. заказа в метрах"<=6,
                     126*("Размер большей стороны в метрах"*3+"Размер меньшей стороны в метрах"*3)+90+120,
                     126*("Размер большей стороны в метрах"*3+"Размер меньшей стороны в метрах"*4)+90+130
                    )
            )
)


IF(<условие>,<значение1>,<значение2>) – функция-условие ЕСЛИ. Возвращает <значние1> если <условие> верно или <значение2> в противном случае.

К примеру вот эта часть формулы:


 IF(%ONE_PERM%<=6,
                     126*(%BIG_SIDEM%*3+%SMALL_SIDEM%*3)+90+120,
                     126*(%BIG_SIDEM%*3+%SMALL_SIDEM%*4)+90+130
                    )


Или


IF("Периметр 1 экз. индив. заказа в метрах"<=6,
                     126*("Размер большей стороны в метрах"*3+"Размер меньшей стороны в метрах"*3)+90+120,
                     126*("Размер большей стороны в метрах"*3+"Размер меньшей стороны в метрах"*4)+90+130
                    )


Означает следующее:


Если «Периметр 1 экз. индив. заказа в метрах» меньше или равен 6, то рассчитывать как 126*(«Размер большей стороны в метрах»*3+»Размер меньшей стороны в метрах»*3)+90+120, иначе рассчитывать как  126*(«Размер большей стороны в метрах»*3+»Размер меньшей стороны в метрах»*4)+90+130


Стоит обратить внимание что в данном случае клиент не посчитал нужным оформить суммы 90, 100 и пр. как переменные (условия расчёта), а ввёл их как постоянные значения. Это ограничило возможности клиента — в момент расчёта заказа нет возможности изменить эти цифры. 

Использование изменяемых условий расчёта (переменных) даёт такую возможность.