-Софт»
«АТП: Путевые листы»
Руководство по настройке видов оплат
Санкт-Петербург
2006
Описание
Виды оплат (заработная плата по путевым листам) формируются в функции «Расчет зарплаты». Эта функция проводит расчет по пачке введенных путевых листов. Каждый путевой лист содержит список из водителя (водителей) и сопровождающих лиц, т. е. список сотрудников предприятия для этого путевого листа. В процессе расчета заработной платы по путевому листу пачки сначала выполняется цикл по работам путевого листа, внутри которого выполняется цикл по списку сотрудников. Для каждого сотрудника из списка далее выполняется цикл по видам оплат, запрограммированных в задаче. Цикл по видам оплат разделяется на уровни. Всего в задаче может быть задано 5 уровней генерации видов оплат. Как и для технологических операций, виды оплат полностью настраиваются. На первом уровне генерируются виды оплат в зависимости от технологических операций работы путевого листа и каких-либо условий, запрограммированных в задаче. Если в результате прохода первого уровня были сгенерированны какие-либо виды оплат, запускается генерация второго уровня, которая уже зависит не от технологических операций, а от сгенерированных видов оплат на первом уровне и каких-либо условий, запрограммированных в задаче. Если в результате прохода второго уровня были сгенерированны какие-либо виды оплат, запускается генерация третьего уровня, которая зависит от видов оплат второго уровня и каких-либо условий, запрограммированных в задаче. И так далее до пятого уровня. После окончания генерации видов оплат по уровням цикл расчета заработной платы переходит к следующей позиции списка сотрудников путевого листа, и снова запускает цикл по уровням. После окончания цикла по списку сотрудников расчет заработной платы переходит к следующей позиции работ путевого листа, и снова запускает цикл по сотрудникам.
За каждый уровень расчета видов оплат в задаче отвечает свой справочник (т. о. – технологическая операция; к. в.о. – код вида оплаты):
° 1 уровень (т. о. à к. в.о.) FN210;
° 2 уровень (к. в.о. à к. в.о.) FN211;
° 3 уровень (к. в.о. à к. в.о.) FN212;
° 4 уровень (к. в.о. à к. в.о.) FN213;
° 5 уровень (к. в.о. à к. в.о.) FN214.
Каждый такой справочник имеет следующие поля:
Имя поля | Описание |
Технологическая операция ИЛИ Код вида оплаты, предыдущий | Код, который порождает генерацию вида оплаты (для первого уровня – т. о.; для последующих – к. в.о.) |
Код | Код генерируемого вида оплаты |
Условие | Строка условия, при выполнении которого вид оплаты генерируется |
Поле «количество» | Что записывать в количество вида оплаты (часы) |
Поле «сумма» | Что записывать в сумму вида оплаты (рубли) |
Операторы, функции, константы
В полях условия, количества и суммы можно вводить составные выражения, используя следующие операторы, функции и константы:
Константы
strTn | Таб.№ текущего сотрудника на путевом листе |
strTn0 | Таб.№ водителя путевого листа |
datOut | Дата выезда |
strMark | Код марки |
strObor | Код оборудования |
numRol | Код роли из справочника ролей (обычно 1 – водитель; 3 – стажер) |
strRab | Код работы |
strZak | Код клиента |
strPrev | Код генерирующей т. о. (для первого уровня) или к. в.о. (для последующих) |
strKVO | Код вида оплаты |
numKolPrev | Количество генерирующей т. о. (для первого уровня) или генерирующего к. в.о. (для последующих), т. е. значение количества предыдущего уровня. |
numSumPrev | Сумма генерирующего к. в.о. (для всех уровней, кроме первого) |
numKol | Полученное количество (используется только в поле «сумма») |
Операторы
* | Умножение |
/ | Деление |
+ | Сложение |
- | Вычитание |
AND | Логическое И |
OR | Логическое ИЛИ |
! | Логическое НЕ |
Функции
getKol(<код>) | Возвращает количество с т. о. (если указан двухзначных код т. о.) или к. в.о. (если указан трехзначный к. в.о.), выписанных на предыдущих уровнях (не на текущем!) |
getTarif( strObor, strMark, strRab) | Возвращает тариф на парный код «оборудование» + «марка», плюс код работы (справочник тарифов см. Руководство по настройке НСИ») |
getPrem( strObor, strMark, strRab) | Возвращает процент премии премиальный тариф на парный код «оборудование» + «марка», плюс код работы (справочник тарифов см. Руководство по настройке НСИ») |
Сложение и замещение вида оплаты
Допустимо указывать один и тот же вид оплаты несколько раз в справочниках уровней генерации. При этом, если условие генерации истинно в нескольких случаях, то в результате генерации один и тот же вид оплаты может сгенерироваться несколько раз. Что бы этого избежать, в конце каждого цикла по уровню сгенерированный несколько раз вид оплаты сводится в одну строчку. Поля «количество» и «сумма» вида оплаты при этом принимают или суммарные значения по всем позициям повторяющегося вида оплаты, или последнее сгенерированное значение. Настройка производится в справочнике «Виды оплат (FN014)», см. Руководство по настройке НСИ.
Стандартные виды оплат
В справочниках видов оплат (FN014) и уровней генерации видов оплат (FN210, FN211, FN212, FN213, FN214) уже описаны некоторые стандартные виды оплат (справочник не очищается при сбросе базы данных). Рассмотрим их подробно.
«020» Повременная оплата
1 уровень (FN210)
Поле | Значение | Пояснение |
Т. о. | 52 | Порождающей этот вид оплаты является т. о. 52 (время в работе) |
Код | 020 | |
Условие | numRol=1 | Этот вид оплаты только для водителей |
Количество | numKolPrev | Количество по т. о. 52, т. е. часы в работе |
Сумма | getTarif(strObor, strMark) * numKol | Тариф по данному автомобилю (кодирование по паре «оборудование» + «марка») из справочника тарифов, умноженный на количество данного вида оплаты, т. е. на часы в работе |
Этот вид оплаты рассчитывается просто – время в работе, помноженное на почасовой тариф автомобиля (кодируется парным кодом «оборудование» + «марка», см. Руководство по настройке НСИ). Значение часов в работе можно получить сразу на первом уровне – это количество технологической операции «52». Соответственно, генерация этого вида оплаты – только на первом уровне.
«041» Ремонт оплачиваемый
1 уровень (FN210)
Поле | Значение | Пояснение |
Т. о. | 97 | Порождающей этот вид оплаты является т. о. 97 (время в ремонте) |
Код | 041 | |
Условие | numKolPrev > 0 | Количество по т. о. 97, т. е. время в ремонте, больше нуля |
Количество | numKolPrev | Количество по т. о. 97, т. е. часы ремонта |
Сумма | getTarif(strObor, strMark) * numKol | Тариф, помноженный на количество данного вида оплаты, т. е. на часы ремонта |
«040» Простой оплачиваемый
1 уровень (FN210)
Поле | Значение | Пояснение |
Т. о. | 98 | Порождающей этот вид оплаты является т. о. 98 (время в простое) |
Код | 040 | |
Условие | numKolPrev > 0 | Количество по т. о. 98, т. е. время в простое, больше нуля |
Количество | numKolPrev | Количество по т. о. 98, т. е. часы простоя |
Сумма | (2/3) * getTarif(strObor, strMark) * numKol | Две третьих тарифа, помноженные на количество данного вида оплаты, т. е. на часы простоя |
«022» Оплата стажеру
1 уровень (FN210)
Поле | Значение | Пояснение |
Т. о. | 86 | Порождающей этот вид оплаты является т. о. 86 (время работы стажера) |
Код | 022 | |
Условие | numRol=3 | Эта оплата – только стажеру |
Количество | numKolPrev | Количество по т. о. 86, т. е. часы работы стажера |
Сумма | 0.55 * getTarif(strObor, strMark) | 55% тарифа, помноженные на количество данного вида оплаты, т. е. на часы работы стажера |
«061» Доплата за праздничные
1 уровень (FN210)
Поле | Значение | Пояснение |
Т. о. | 61 | Порождающей этот вид оплаты является т. о. 61 (праздничные) |
Код | 061 | |
Условие | numKolPrev > 0 | Количество по т. о. 61, т. е. праздничных, больше нуля |
Количество | numKolPrev | Количество по т. о. 61, т. е. часы праздничных |
Сумма | getTarif(strObor, strMark) * numKol | Доплата – 100% от тарифа, помноженные на количество данного вида оплаты, т. е. на часы праздничных |
«342» Доплата за ночные
1 уровень (FN210)
Поле | Значение | Пояснение |
Т. о. | 34 | Порождающей этот вид оплаты является т. о. 34 (ночные) |
Код | 342 | |
Условие | numKolPrev > 0 | Количество по т. о. 34, т. е. ночных, больше нуля |
Количество | numKolPrev | Количество по т. о. 34, т. е. часы ночных |
Сумма | 0.35 * getTarif(strObor, strMark) * numKol | Доплата – 35% от тарифа, помноженные на количество данного вида оплаты, т. е. на часы ночных |
«440» Доплата водителю за стажера
1 уровень (FN210)
Поле | Значение | Пояснение |
Т. о. | 86 | Порождающей этот вид оплаты является т. о. 86 (время работы стажера) |
Код | 440 | |
Условие | numRol=1 | Только для водителя |
Количество | numKolPrev | Количество по т. о. 86, т. е. время работы стажера |
Сумма | 47 | Доплата фиксированная, 47 рублей |
«601» Премия
Премия начисляется на несколько видов оплат, и поэтому данные генерации находятся в справочнике второго уровня, причем для кода «601» существует несколько строчек:
2 уровень (FN211)
Поле | Значение | Пояснение |
Предыдущий код | 020 | Порождающей этот вид оплаты является к. в.о. 020 |
Код | 601 | |
Условие | numRol=1 | Только для водителя |
Количество | numKolPrev | Количество по к. в.о. 020 |
Сумма | 0.01 * getPrem(strObor, strMark) * numKolPrev | Доплата – процент премии (см. Руководство по настройке НСИ), помноженный на сумму по предыдущему виду оплаты. |
Предыдущий код | 341 | Порождающей этот вид оплаты является к. в.о. 342 |
Код | 601 | |
Условие | numRol=1 | Только для водителя |
Количество | numKolPrev | Количество по к. в.о. 342 |
Сумма | 0.01 * getPrem(strObor, strMark) * numKolPrev | Доплата – процент премии (см. Руководство по настройке НСИ), помноженный на сумму по предыдущему виду оплаты. |
Предыдущий код | 061 | Порождающей этот вид оплаты является к. в.о. 061 |
Код | 601 | |
Условие | numRol=1 | Только для водителя |
Количество | numKolPrev | Количество по к. в.о. 061 |
Сумма | 0.01 * getPrem(strObor, strMark) * numKolPrev | Доплата – процент премии (см. Руководство по настройке НСИ), помноженный на сумму по предыдущему виду оплаты. |
В случае если вид оплаты «601» сгенерировался несколько раз, то результат будет сведен в одну позицию, поля «сумма» и «количество» будут при этом просуммированы (см. сложение и замещение вида оплаты).


