給与
このトピックでは、給与プロセスの導入に関する注意事項を示します。
給与の変更
通常は、このような場合にフィールド値のデフォルト設定と検証を使用できます。
- ライン・マネージャが給与変更を提示するときに、従業員雇用主がVisionの場合に提示給与ベースをデフォルト設定します。
- ライン・マネージャが給与変更を提案する際、有効日を現在の日付に、次回給与レビュー日を有効日の1年後にデフォルト設定します。
- ライン・マネージャが給与変更を提案するときに、アサイメント・フレックスフィールドに基づいて給与ベースをデフォルト設定します。
- 米国および特定の等級に属するフル・タイム従業員のデフォルト給与ベースです。
- 日付が過去でないことを検証します。
- 給与額が最小値を下回っていないことを検証します。
- 開始日が翌月の1日であることを確認します。
- ユーザーが料金コンポーネントの値を変更していないことを確認します。
この表は、「給与の変更」ページでサポートされる属性、例外および実装の推奨事項を示しています。
これは、「自分のチーム」タブと「自分のクライアント・グループ」タブの両方のページに適用されます。
条件内 | フィールド値のデフォルト設定 | フィールド値の検証 | 実装ガイドライン |
---|---|---|---|
|
|
|
デフォルト設定
|
給与履歴
通常は、このような場合にフィールド値のデフォルト設定と検証を使用できます。
- 報酬マネージャが給与変更を提示するときに、従業員の雇用主に基づいて提示給与ベースをデフォルト設定します。
- ライン・マネージャが給与変更を提示するときに、有効日を翌月の初日に、次回給与レビュー日を有効日の1年後にデフォルト設定します。
- 給与変更の提案時に、アサイメント・フレックスフィールドに基づいて給与ベースをデフォルト設定します。
- ユーザーが遡及給与変更を入力していないことを確認します。
- 給与の変更が月の初日に発生することを確認します。
- 給与額が最小値を超えていることを確認します。
- ユーザーが簡易コンポーネント値を変更していないことを確認します。
- ユーザーが簡易コンポーネントにゼロ値を入力していないことを確認します。
- 特定の簡易コンポーネントの合計が式に基づいていることを検証します(調整は、すべてのコンポーネントの合計から生活費を差し引いたものである必要があります)。
この表は、「給与履歴」に対してサポートされている属性、例外および実装に関する推奨事項を示しています。
これは、「自分のクライアント・グループ」タブからアクセスする給与履歴の管理ページに適用されます。
値のデフォルト設定の条件内 | フィールド値のデフォルト設定 | 値の検証の条件内 | フィールド値の検証 | 実装ガイドライン |
---|---|---|---|---|
|
|
|
該当なし |
|
例
ユーザーが料金コンポーネント値を変更していないことを検証
拡張式
/* eslint-disable dot-notation */
define([], () => {
'use strict';
/**
*
* @param {object} context
* @return {boolean}
*/
function runCondition(context) {
const { $componentContext, $fields, $modules, $user } = context;
let salBasisType = $fields.compensationSalaries.SalaryBasisType.$value();
if(salBasisType == 'R'){
let newSalaryBasisId = $fields.compensationSalaries.SalaryBasisId.$value();
let curSalaryBasisId = $fields.compensationSalaries.SalaryBasisId.$initialValue();
if(newSalaryBasisId != curSalaryBasisId){
return false;
}
let curValue = 0;
let newValue = 0;
let curComponentsArray = $fields.compensationSalaries.salaryPayRateComponents.$initialValue().items;
for(let i in curComponentsArray){
let cmpt=curComponentsArray[i];
if(cmpt.Name == 'ZCMP GSP RATE BASE'){
curValue = Number(cmpt.RateAmount);
}
}
let componentsArray = $fields.compensationSalaries.salaryPayRateComponents.$value().items;
for(let j in componentsArray){
let cmpt=componentsArray[j];
if(cmpt.Name == 'ZCMP GSP RATE BASE'){
newValue = Number(cmpt.RateAmount);
}
}
if(curValue != newValue){
return true;
}
}
return false;
}
return { runCondition };
});
料金コンポーネントに値が指定されていることを検証
拡張式
/* eslint-disable dot-notation */
define([], () => {
'use strict';
/**
*
* @param {object} context
* @return {boolean}
*/
function runCondition(context) {
const { $objectContext, $fields, $modules, $user, $value } = context;
let salary = $fields['compensationSalaries'].$value();
let payRateComponents = salary['salaryPayRateComponents'];
if (payRateComponents) {
let componentsArray = payRateComponents.items;
if (componentsArray) {
for (let i = 0; i < componentsArray.length; i++) {
let element = componentsArray[i];
if (element.Name === 'ZCMP RTS USVS ARS Base Salary' && element.RateAmount == 0) {
return true;
}
}
}
}
return false;
}
return { runCondition };
});
「特定の簡易コンポーネントの合計が算式に基づいている必要があることを検証」 (調整は、すべてのコンポーネントの合計から生計費を引いた値である必要があります)
拡張式
/* eslint-disable dot-notation */
define([], () => {
'use strict';
/**
*
* @param {object} context
* @return {boolean}
*/
function runCondition(context) {
const { $componentContext, $fields, $modules, $user } = context;
let salBasisType = $fields.compensationSalaries.SalaryBasisType.$value();
let sum = 0;
let result = 0;
let difference = 0;
if(salBasisType == 'C'){
let componentsArray = $fields.compensationSalaries.salaryComponents.$value().items;
for(let i in componentsArray){
let cmpt=componentsArray[i];
if(cmpt.ComponentReasonCode == 'ADJUSTMENT'){
result = Number(cmpt.AdjustmentAmount);
}
else if(cmpt.ComponentReasonCode == 'COST_OF_LIVING'){
difference += Number(cmpt.AdjustmentAmount);
}
else{
sum += Number(cmpt.AdjustmentAmount);
}
}
if(result != sum - difference){
return true;
}
}
return false;
}
return { runCondition };
});
ライン・マネージャが給与変更を提示する場合、有効日を現在の日付に、次回給与レビュー日を有効日の1年後にデフォルト設定
拡張式
/* eslint-disable dot-notation */
define([], () => {
'use strict';
/**
* Default value expression for whenAndWhy.StartDate
* @param {object} context
* @return {date}
*/
function getWhenAndWhyStartDate(context) {
const { $objectContext, $fields, $modules, $user } = context;
let date = new Date();
let firstDay = new Date(date.getFullYear(), date.getMonth()+1, 1);
let year = firstDay.toLocaleString("default", { year: "numeric" });
let month = firstDay.toLocaleString("default", { month: "2-digit" });
let day = firstDay.toLocaleString("default", { day: "2-digit" });
return (year + "-" + month + "-" + day);
}
return { getWhenAndWhyStartDate };
});
ユーザーが簡易コンポーネント値を変更していないことを検証
拡張式
/* eslint-disable dot-notation */
define([], () => {
'use strict';
/**
*
* @param {object} context
* @return {boolean}
*/
function runCondition(context) {
const { $componentContext, $fields, $modules, $user } = context;
let salBasisType = $fields.compensationSalaries.SalaryBasisType.$value();
if(salBasisType == 'ORA_SIMPLE_COMPONENTS'){
let newSalaryBasisId = $fields.compensationSalaries.SalaryBasisId.$value();
let curSalaryBasisId = $fields.compensationSalaries.SalaryBasisId.$initialValue();
if(newSalaryBasisId != curSalaryBasisId){
return false;
}
let curValue = 0;
let newValue = 0;
let curComponentsArray = $fields.compensationSalaries.salarySimpleComponents.$initialValue().items;
for(let i in curComponentsArray){
let cmpt=curComponentsArray[i];
if(cmpt.ComponentCode == 'ORA_WAGE_PROGRESSION_RATE'){
curValue = Number(cmpt.Amount);
}
}
let componentsArray = $fields.compensationSalaries.salarySimpleComponents.$value().items;
for(let j in componentsArray){
let cmpt=componentsArray[j];
if(cmpt.ComponentCode == 'ORA_WAGE_PROGRESSION_RATE'){
newValue = Number(cmpt.Amount);
}
}
if(curValue != newValue){
return true;
}
}
return false;
}
return { runCondition };
});
ユーザーが簡易コンポーネントにゼロ値を入力していないことを検証
拡張式
/* eslint-disable dot-notation */
define([], () => {
'use strict';
/**
*
* @param {object} context
* @return {boolean}
*/
function runCondition(context) {
const { $componentContext, $fields, $modules, $user } = context;
let salBasisType = $fields.compensationSalaries.SalaryBasisType.$value();
if(salBasisType == 'ORA_SIMPLE_COMPONENTS'){
let componentsArray = $fields.compensationSalaries.salarySimpleComponents.$value().items;
for(let i in componentsArray){
let cmpt=componentsArray[i];
//To Check if specific component has 0 amount value
// if(cmpt.ComponentCode == 'ORA_WAGE_PROGRESSION_RATE' && cmpt.Amount==0){
// return true;
// }
//To Check if any component has 0 amount value
if(cmpt.Amount==0){
return true;
}
}
}
return false;
}
return { runCondition };
});