-Софт»

«АТП: Путевые листы»

Руководство по настройке видов оплат

Санкт-Петербург

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» сгенерировался несколько раз, то результат будет сведен в одну позицию, поля «сумма» и «количество» будут при этом просуммированы (см. сложение и замещение вида оплаты).