Функції розрахунку зарплати
Шлях: Адміністрування / Функція розрахунку зарплати
Цей документ містить детальний опис усіх функцій розрахунку зарплати, які використовуються в налаштуваннях зарплатних елементів та звітів у системі 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 -- деталізована базова сума відповідно до типу суми (Сума зарплати, Корег. сума або Податковий відрахунок)
- Заповнює поля рядка ЗП документа: --
Логіка розрахунку:
- Завантажує налаштування базової суми та перевіряє обов'язковість типу суми.
- Фільтрує таблицю «Деталізована база для податку» за номером документа бази та номером документа податку.
- Встановлює фільтр за кодом елемента зарплати та кодом елемента податку.
- Залежно від типу суми підсумовує відповідне поле (Корег. сума, Сума зарплати або Сума відрахування).
- Повертає підсумок.
Функція 247 — Базовий баланс з книги операцій (BaseBalance)
Що робить: Повертає суму з проведених операцій зарплати (таблиця «Книга операцій зарплати»). На відміну від функції 220, яка працює з поточним документом, ця функція читає дані з уже проведених документів.
Параметри:
| Параметр | Джерело | Опис |
|---|---|---|
| Код базової суми | Рядок розрахунку (Base Amount Code) | Обов'язковий. Визначає фільтри у таблиці «Базова сума зарплати» |
Фільтри аналогічні функції 220, але застосовуються до таблиці «Книга операцій зарплати».
Результат:
- Повертає: Decimal -- сума з проведених операцій зарплати
- Заповнює поля рядка ЗП документа: --
Логіка розрахунку:
- Завантажує налаштування базової суми та перевіряє обов'язковість типу суми.
- Встановлює фільтри базової суми на таблицю «Книга операцій зарплати».
- Визначає фільтр по працівнику (За працівником / За особою / За іншими працівниками).
- Визначає фільтр періоду:
- «За кодом періоду» -- може використовувати попередній період (якщо увімкнено прапорець «Використовувати попередній період»).
- «За кодом періоду нарахування» -- фільтрує за Wage Period From.
- Інші фільтри аналогічні функції 220.
- Підсумовує відповідний тип суми з відфільтрованих операцій.
- Повертає результат.
Функція 249 — Утримання за діапазоном (Deduction)
Що робить: Розраховує суму утримання на основі рядків діапазону (шкали). Функція використовується для розрахунку утримань, що залежать від суми та мають прогресивну або табличну структуру.
Параметри:
| Параметр | Джерело | Опис |
|---|---|---|
| Заголовок діапазону | Визначається автоматично (GetRangeHeader) | Завантажується за кодом елемента, типом діапазону та кодом діапазону з рядка розрахунку |
| Тип діапазону | Рядок розрахунку (Range Type) | Тип діапазону зарплати |
| Код діапазону | Рядок розрахунку (Range Code) | Код конкретного діапазону |
Результат:
- Повертає: Decimal -- сума утримання, розрахована за рядками діапазону
- Заповнює поля рядка ЗП документа: --
Логіка розрахунку:
- Отримує кількість пільг із книги операцій елементів зарплати працівника.
- Фільтрує рядки діапазону за кодом елемента, кодом діапазону, кодом періоду.
- Додатково фільтрує за статтю працівника (якщо дозволено в заголовку), датою народження та статусом інвалідності.
- Перебирає рядки діапазону (від найбільшого до найменшого):
- Якщо рядок містить «Суму понад» -- перевіряє, чи перевищено цей поріг.
- Розраховує суму утримання = Сума + (Річна база * Відсоток / 100).
- Якщо увімкнено «На пільгу» -- множить на кількість пільг.
- Перевіряє мінімальну та максимальну суми рядка.
- Приводить результат до місячного значення (ділить на 12).
- Повертає підсумкову суму утримання.
Функція 250 — Базова сума з початку року (YTDBaseAmount)
Що робить: Повертає суму з книги операцій зарплати (проведених документів) з початку календарного року. Використовує ті ж самі фільтри базової суми, що і функція 220, але читає з проведених даних за період від першого періоду року.
Параметри:
| Параметр | Джерело | Опис |
|---|---|---|
| Код базової суми | Рядок розрахунку (Base Amount Code) | Обов'язковий. Визначає фільтри у таблиці «Базова сума зарплати» |
Результат:
- Повертає: Decimal -- сума з початку року з книги операцій зарплати
- Заповнює поля рядка ЗП документа: --
Логіка розрахунку:
- Завантажує налаштування базової суми та перевіряє тип суми.
- Встановлює фільтри базової суми на таблицю «Книга операцій зарплати».
- Визначає фільтр по працівнику (За працівником / За особою / За іншими).
- Визначає фільтр періоду:
- «За кодом періоду» -- від першого періоду року до поточного (або по переднього, якщо увімкнено).
- «За кодом періоду нарахування» -- аналогічно.
- «За періодом премій» -- фільтрує за преміальним періодом.
- «За датами дії» -- за діапазоном дат дії.
- «За датами входження» -- за вкладеними датами.
- «За періодом оплати» -- від першого періоду року до періоду оплати.
- Підсумовує відповідний тип суми та повертає результат.
Функція 252 — Мінімальне значення діапазону (Brackets Min)
Що робить: Повертає мінімальну суму з першого відповідного рядка діапазону зарплати. Використовується для отримання порогових значень з довідника діапазонів.
Параметри:
| Параметр | Джерело | Опис |
|---|---|---|
| Заголовок діапазону | Визначається автоматично (GetRangeHeader) | Завантажується за кодом елемента, типом та кодом діапазону |
| Тип діапазону | Рядок розрахунку (Range Type) | Тип діапазону |
| Код діапазону | Рядок розрахунку (Range Code) | Код діапазону |
Результат:
- Повертає: Decimal -- значення поля «Мін. сума» першого відповідного рядка діапазону
- Заповнює поля рядка ЗП документа: --
Логіка розрахунку:
- Отримує заголовок діапазону (GetRangeHeader).
- Фільтрує рядки діапазону за кодом діапазону, кодом елемента, кодом періоду.
- Додатково фільтрує за статтю (якщо дозволено) та датою народження працівника.
- Знаходить перший рядок та повертає значення поля «Min Amount».
- Якщо рядок не знайдено, повертає 0.
Функція 253 — Максимальне значення діапазону (Brackets Max)
Що робить: Повертає максимальну суму з першого відповідного рядка діапазону зарплати. Аналогічна функції 252, але повертає інше поле.
Параметри:
| Параметр | Джерело | Опис |
|---|---|---|
| Заголовок діапазону | Визначається автоматично (GetRangeHeader) | Завантажується за кодом елемента, типом та кодом діапазону |
| Тип діапазону | Рядок розрахунку (Range Type) | Тип діапазону |
| Код діапазону | Рядок розрахунку (Range Code) | Код діапазону |
Результат:
- Повертає: Decimal -- значення поля «Макс. сума» першого відповідного рядка діапазону
- Заповнює поля рядка ЗП документа: --
Логіка розрахунку:
- Отримує заголовок діапазону (GetRangeHeader).
- Фільтрує рядки діапазону за кодом діапазону, кодом елемента, кодом періоду.
- Додатково фільтрує за статтю та датою народження працівника.
- Знаходить перший рядок та повертає значення поля «Max Amount».
- Якщо рядок не знайдено, повертає 0.
Функція 255 — Кількість з діапазону (Brackets Quantity)
Що робить: Повертає значення поля «Кількість» з першого відповідного рядка діапазону зарплати.
Параметри:
| Параметр | Джерело | Опис |
|---|---|---|
| Заголовок діапазону | Визначається автоматично (GetRangeHeader) | Завантажується за кодом елемента, типом та кодом діапазону |
| Тип діапазону | Рядок розрахунку (Range Type) | Тип діапазону |
| Код діапазону | Рядок розрахунку (Range Code) | Код діапазону |
Результат:
- Повертає: Decimal -- значення поля «Quantity» першого відповідного рядка діапазону
- Заповнює поля рядка ЗП документа: --
Логіка розрахунку:
- Отримує заголовок діапазону (GetRangeHeader).
- Фільтрує рядки діапазону аналогічно функціям 252/253.
- Знаходить перший рядок та повертає значення поля «Quantity».
- Якщо рядок не знайдено, повертає 0.
Функція 261 — Баланс до дати (BalanceToDate)
Що робить: Повертає суму нарахувань зарплати з книги операцій для працівника та елемента з початку року до поточного періоду включно.
Параметри:
| Параметр | Джерело | Опис |
|---|---|---|
| Код працівника | Рядок документа ЗП (Employee No.) | Автоматично з поточного рядка |
| Тип елемента | Рядок документа ЗП (Element Type) | Автоматично з поточного рядка |
| Код елемента | Рядок документа ЗП (Element Code) | Автоматично з поточного рядка |
| Код періоду | Рядок документа ЗП (Period Code) | Автоматично з поточного рядка |
Результат:
- Повертає: Decimal -- сума зарплати (Payroll Amount) з книги операцій
- Заповнює поля рядка ЗП документа: --
Логіка розрахунку:
- Фільтрує книгу операцій за кодом працівника, типом та кодом елемента.
- Встановлює фільтр періоду від першого періоду року до поточного періоду рядка.
- Використовує FlowField «SMA Payroll Amount» картки працівника для підсумовування.
- Повертає підсумкову суму.
Функція 263 — Сума оподатковуваного податку з початку року (YTDTaxableIncomeTax)
Що робить: Повертає суму оподатковуваного доходу (Taxable Amount) з книги операцій зарплати для працівника, елемента та типу проведення з початку року до поточного періоду включно.
Параметри:
| Параметр | Джерело | Опис |
|---|---|---|
| Код працівника | Рядок документа ЗП (Employee No.) | Автоматично з поточного рядка |
| Тип елемента | Рядок документа ЗП (Element Type) | Автоматично |
| Тип проведення | Рядок документа ЗП (Posting Type) | Автоматично |
| Код елемента | Рядок документа ЗП (Element Code) | Автоматично |
| Код періоду | Рядок документа ЗП (Period Code) | Автоматично |
Результат:
- Повертає: Decimal -- оподатковувана сума з початку року
- Заповнює поля рядка ЗП документа: --
Логіка розрахунку:
- Фільтрує книгу операцій за працівником, типом елемента, типом проведення та кодом елемента.
- Встановлює фільтр періоду від першого періоду року до поточного періоду рядка (включно).
- Використовує FlowField «SMA Taxable Amount» для підсумовування.
- Повертає сум у оподатковуваного доходу.
Функція 270 — Отримання ліміту МРОТ (GetFSILimit MROT)
ЗАСТАРІЛА. Замінена функцією 150 (GetPayrollLimit) з відповідним типом ліміту.
Що робить: Повертає значення МРОТ (мінімального розміру оплати праці) з таблиці «Ліміти зарплати» за поточний період.
Параметри:
| Параметр | Джерело | Опис |
|---|---|---|
| Код періоду | Рядок документа ЗП (Period Code) | Автоматично з поточного рядка |
Результат:
- Повертає: Decimal -- значення МРОТ
- Заповнює поля рядка ЗП документа: --
Логіка розрахунку:
- Шукає в таблиці «Ліміти зарплати» запис з типом MROT та кодом періоду
<=поточного. - Повертає поле Amount або 0.