Функції розрахунку зарплати
Шлях: Адміністрування / Функція розрахунку зарплати
Цей документ містить детальний опис усіх функцій розрахунку зарплати, які використовуються в налаштуваннях зарплатних елементів та звітів у системі SMART Payroll. Кожна функція має унікальний номер і виконує конкретну розрахункову операцію під час обчислення зарплатного документа.
Як читати цей документ
Кожна функція описана за єдиною структурою:
- Що робить — загальний опис призначення функції
- Параметри — які дані функція приймає та з яких таблиць
- Результат — що повертає функція та які поля рядка зарплатного документа заповнює
- Логіка розрахунку — покроковий алгоритм обчислення
*[ЗП]: Зарплатний (документ, елемент тощо) *[СЗ]: Середній заробіток *[ПДФО]: Податок на доходи фізичних осіб *[ЄСВ]: Єдиний соціальний внесок *[МЗП]: Мінімальна заробітна плата *[МРОТ]: Мінімальна заробітна плата (код у системі: MROT) *[YTD]: З початку року (Year-to-Date) *[LCY]: Локальна валюта (Local Currency)
Групи функцій
| Діапазон номерів | Опис | Кодуніт |
|---|---|---|
| 100–550 | Час і календар, ліміти, базові суми, діапазони, розподіл, оклади | SMA Payroll Document Calculate |
| 2002–2301 | Оподаткування, утримання, суми з початку року, оклади за період, стаж, аванси | SMA Payroll Document Calculate |
| 21094000–21094050 | Оклади на дату, лікарняні, індексація, валюта, нарахування за період | SMA Payroll Document Calculate |
| 21094051–21094112 | Відпустки, резерви, перевірки даних, баланси, нетто-розрахунок | SMA Payroll Document Calculate |
| 21094900–21094924 | Діапазони, стаж, базові суми, дати дій, позиції | SMA Payroll Document Calculate |
| 21094500–21094518 | Функції для звітів: статистика, суми | SMA Payroll Report Calculation |
Примітка: Функції з позначкою ЗАСТАРІЛА збережені для зворотної сумісності. Для нових налаштувань використовуйте рекомендовані заміни.
Функції розрахунку заробітної плати (Частина 1): Час, ліміти, базові суми, оклади, аванси (100–550, 2002–2301)
Цей розділ містить функції для роботи з часом і календарем, лімітами, базовими сумами, діапазонами, окладами, оподаткуванням та авансами. Кожна функція використовується у рядках розрахунку зарплатного елемента і викликається під час обчислення зарплатного документа.
Час, календар, ліміти, базові суми, розподіл, оклади (100–550)
Функція 100 — Розрахунок тривалості часу (CalcTimeMeasure)
Що робить: Універсальна конфігурована функція, яка повертає планові або фактичні дні чи години за обраний період. Залежно від параметрів може звертатися до зарплатного календаря (планові значення) або до табеля обліку робочого часу (фактичні значення).
Параметри:
| Параметр | Джерело | Опис |
|---|---|---|
| Код параметра | Рядок розрахунку (Parameter Code) | Обов'язковий. Визначає набір налаштувань функції у таблиці «Параметри функції розрахунку» |
| Тип тривалості часу | Параметр функції розрахунку (Time Measure Type) | Обов'язковий. Визначає, яке саме значення повертати. Можливі значення: Планові календарні дні, Планові робочі дні, Планові вихідні дні, Планові робочі години, Планові нічні години, Планові вечірні години, Планові святкові години, Офіційні версії цих же показників, Фактичні календарні дні, Фактичні години, Фактичні робочі дні, Фактичні календарні дні без свят, Планові робочі дні (за табелем) |
| Фільтр періоду | Параметр функції розрахунку (Period Filter) | Обов'язковий. Визначає діапазон дат. Можливі значення: За датами дії, За періодом оплати, За кодом періоду нарахування, За кодом періоду, За періодом премій, За датами входження, В поточному році, За періодом середнього заробітку |
| Використовувати фільтр вимірів | Параметр функції розрахунку (Use Dimensions Filter) | Необов'язковий. Якщо увімкнено, фільтрує дані табеля за вимірами (Код скороченого виміру 1, Код скороченого виміру 2) рядка ЗП документа |
| Група часових активностей | Рядок розрахунку (Time Activity Group) | Використовується для фільтрації даних табеля за групою часових активностей |
Результат:
- Повертає: Decimal -- кількість днів або годин відповідно до обраного типу міри часу
- Заповнює поля рядка ЗП документа: --
Логіка розрахунку:
- Завантажує параметр функції за кодом параметра з рядка розрахунку.
- Перевіряє обов'язковість полів «Тип тривалості часу» та «Фільтр періоду».
- Визначає діапазон дат (FromDate, ToDate) залежно від фільтра періоду:
- «За датами дії» -- бере дати дії з рядка документа.
- «За періодом оплати» -- бере початок та кінець періоду оплати документа.
- «За кодом періоду нарахування» -- бере дати періоду нарахування.
- «За кодом періоду» -- бере дати поточного зарплатного періоду.
- «За періодом премій» -- бере дати преміального періоду.
- «За датами входження» -- бере перетин дат дії з датами періоду.
- «В поточному році» -- від початку першог о періоду року до кінця року.
- «За періодом СЗ» -- бере дати періоду середнього заробітку.
- Залежно від типу тривалості часу:
- Для планових значень -- викликає CalendarMgt.GetPeriodInfo() з календарем працівника або офіційним календарем (для типів «Off.»).
- Для фактичних значень -- викликає TimesheetMgt.GetTimesheetInfo() або TimesheetMgt.GetTimesheetInfoWithDimension() (якщо увімкнено фільтр вимірів).
- Повертає отримане числове значення.
Функція 150 — Отримання ліміту зарплати (GetPayrollLimit)
Що робить: Повертає значення зарплатного ліміту із таблиці «Ліміти зарплати» за заданим типом ліміту та періодом.
Параметри:
| Параметр | Джерело | Опис |
|---|---|---|
| Код параметра | Рядок розрахунку (Parameter Code) | Обов'язковий. Визначає налаштування функції |
| Тип ліміту зарплати | Параметр функції розрахунку (Payroll Limit Type) | Визначає, який ліміт повертати. Можливі значення: МРОТ, Ліміт ЄСВ, Поріг індексації, Прожитковий мінімум, МРОТ погодинний, Компенсаційний коефіцієнт, Норма добових, Норма добових за кордоном |
| Фільтр періоду | Параметр функції розрахунку (Period Filter) | Обов'язковий. Визначає, який період використовувати для пошуку ліміту. Можливі значення: За кодом періоду, За кодом періоду нарахування, За періодом оплати, В поточному році, За датами дії, За датами входження, За періодом премій |
Результат:
- Повертає: Decimal -- сума ліміту з таблиці «Ліміти зарплати»
- Заповнює поля рядка ЗП документа: --
Логіка розрахунку:
- Завантажує параметр функції та перевіряє обов'язковість фільтра періоду.
- Визначає код періоду залежно від фільтра:
- «За кодом періоду» -- бере Period Code рядка документа.
- «За кодом періоду нарахування» -- бере Wage Period From.
- «За періодом оплати» -- бере період оплати документа.
- «В поточному році» -- бере код першого періоду року.
- «За датами дії» -- знаходить період за датою початку дії.
- «За датами входження» -- знаходить період за датою початку документа.
- «За періодом премій» -- бере код періоду премій.
- Шукає в таблиці «Ліміти зарплати» останній запис з типом ліміту та кодом періоду
<=визначеного. - Повертає поле Amount знайденого запису або 0, якщо запис не знайдено.
Функція 220 — Базова сума з поточного документа (BaseAmount)
Що робить: Підсумовує суми з рядків поточного зарплатного документа відповідно до налаштувань таблиці «Базова сума зарплати». Це основна функція для визначення бази нарахування або утримання.
Параметри:
| Параметр | Джерело | Опис |
|---|---|---|
| Код базової суми | Рядок розрахунку (Base Amount Code) | Обов'язковий. Визначає набір фільтрів у таблиці «Базова сума зарплати» |
Налаштування фільтрів у таблиці «Базова сума зарплати»:
| Параметр | Опис |
|---|---|
| Фільтр працівника (Employee Filter) | За працівником / За особою / За іншими працівниками |
| Фільтр періоду (Period Filter) | За кодом періоду / За кодом періоду нарахування / За преміальним періодом / За датами дії / За датами входження / За періодом оплати |
| Тип суми (Amount Type) | Сума зарплати / Корег. сума / Оподатковувана сума / Податковий відрахунок та інші |
| Фільтр коду елемента (Element Code Filter) | Фільтр за кодом зарплатного елемента |
| Фільтр типу елемента (Element Type Filter) | Фільтр за типом елемента |
| Фільтр групи елементів (Element Group Filter) | Фільтр за групою елементів |
| Фільтр бази ПДФО (Income Tax Base Filter) | Фільтр за базою оподаткування ПДФО |
| Фільтр бази ЄСВ (SSC Base Filter) | Фільтр за базою ЄСВ |
Результат:
- Повертає: Decimal -- сума відповідно до налаштованого типу суми
- Заповнює поля рядка ЗП документа: --
Логіка розрахунку:
- Завантажує налаштування базової суми за кодом елемента та кодом базової суми.
- Перевіряє обов'язковість поля «Тип суми».
- Визначає фільтр по працівнику:
- «За працівником» -- фільтрує за номером документа поточного рядка.
- «За особою» -- фільтрує за кодом особи серед усіх документів. Якщо група розрахунку має тип «Міжрозрахунковий» (Between), додатково агрегує дані з проведених документів інших розрахункових груп.
- «За іншими працівниками» -- фільтрує за кодом особи, виключаючи поточного працівника.
- Встановлює фільтри за базовою сумою (коди елементів, типи, групи тощо).
- Встановлює фільтр періоду згідно з налаштуванням.
- Підсумовує відповідний тип суми з відфільтрованих рядків документа.
- Повертає результат.
Функція 230 — Деталізована базова сума (DetailedBaseAmount)
Що робить: Повертає деталізовану базову суму для податків. На відміну від функції 220, працює з таблицею «Деталізована база для податку» та створює в ній записи для подальшого розподілу суми податку між джерелами.
Параметри:
| Параметр | Джерело | Опис |
|---|---|---|
| Код базової суми | Рядок розрахунку (Base Amount Code) | Обов'язковий. Визначає фільтри у таблиці «Базова сума зарплати» |
Результат:
- Повертає: Decimal -- деталізована базова сума відповідно до типу суми (Сума зарплати, Корег. сума або Податковий відрахунок)
- Заповнює поля рядка ЗП документа: --
Логіка розрахунку:
- Завантажує налаштування базової суми та перевіряє обов'язковість типу суми.
- Фільтрує таблицю «Деталізована база для податку» за номером документа бази та номером документа податку.
- Встановлює фільтр за кодом елемента зарплати та кодом елемента податку.
- Залежно від типу суми підсумовує відповідне поле (Корег. сума, Сума зарплати або Сума відрахування).
- Повертає підсумок.