学习中心
遇到问题了吗?不用担心,答案都在这。
全站搜索

如何在薪资单中获取员工代垫款

目录

前置操作:功能解说

步骤一:打开 JavaScript 工作流程编辑器

步骤二:选择 Installed Sheet Scope

步骤三:贴上程序代码

步骤四:更改里面的表单以及字段设置

步骤五:修改表单设计

在 Ragic 中如果有自行制作的薪资单,可以利用程序帮助你获取“费用报支”(可于应用商店 > “行政”安装)内的员工代垫款。

前置操作:功能解说

请先确保有“薪资单”跟“费用报支”两张表单,再透过此功能在“薪资单”点选单击钮去找“费用报支”表单里该月份该员工代垫且公司已付还(所以才会出现于“薪资单”中)的款项,程序识别的依据为对应两张表单的员工 Email,找到与“薪资单”相同月份的代垫款项,将这些已付还的代垫款相加总,并生成费用于薪资单中。

举个例子来说,如果员工小明本月有:

1. 出国出差,花机票钱来回共 6 万

2. 影印店打印文档,花 350 块

3. 邮寄,花 25 块

他在“费用报支”表单就会有三笔数据,三笔数据的总金额字段的字段值分别为 $60000、$350 以及 $25

“薪资单”的单击钮就会找到这三笔数据并加总显示代垫款总金额为:$60000+$350+$25=$60375

注意事项:

1. 另外加上程序前请确保两张表单都有纪录 Email 以及年月份的字段,并提醒填单人一定要填(或将这些字段设为必填,然后两边的年月份格式要相同,“薪资单”的月份为“2020/07”,“费用报支”的月份(默认为意见栏字段)也要为“2020/07”,不可为其他格式,如果只有月份的话会将历年同月份的费用加总,算出来就不对了。

2. 单击钮是只会加总“已付还?”字段有勾选“Yes”的数据,所以发薪人员记得先到“费用报支”表单勾选有付还的费用

另外也要确保“已付还?”的字段型态为打勾选项

再来请依如下步骤设置:

步骤一:打开 JavaScript 工作流程编辑器

在找到“薪资单”,对该表单单击下右键,并选择 JavaScript 工作流程

步骤二:选择 Installed Sheet Scope

步骤三:贴上程序代码

将以下程序代码择一拷贝贴上并保存:

1. 如果你的“薪资单”将加减项以及金额设计在子表格的话:

请贴上以下程序代码:

function generateReimburse(recordId) { 

var employeePayrollSheet = db.getAPIQuery("薪资单表单路径"); //括号里换成薪资单sheet path
var expenseSheet = db.getAPIQuery("费用报支单表单路径"); //括号里换成费用报支sheet path
var thisEntry = employeePayrollSheet.getAPIEntry(recordId); 
var thisEmployeeEmail = thisEntry.getFieldValue([员工email]字段ID); //括号里换成薪资单[员工email]字段ID
var thisMonth = thisEntry.getFieldValue([该月份]字段ID); //括号里换成薪资单[该月份]字段ID 
expenseSheet.addFilter(3000338, '=', thisEmployeeEmail); //括号中第一个参数换成费用报支[员工email]字段ID,如未修改我们模板这里不需修改。 
expenseSheet.addFilter(费用报支[该月份]字段ID, '=', thisMonth); //括号中第一个参数换成费用报支[该月份]字段ID 
expenseSheet.addFilter(3000335, '=', 'Yes'); //括号中第一个参数换成费用报支[已付还]字段ID,如未修改我们模板这里不需修改。 
var results = expenseSheet.getAPIResultList(); 
var thisMonthEmployPay = 0; 

for (var i = 0; i < results.length; i++) {
var entry = results[i];
thisMonthEmployPay = thisMonthEmployPay + Number(entry.getFieldValue(3000352)); //括号中字段ID换成费用报支[总金额]字段ID,如未修改我们模板这里不需修改。 
};

thisEntry.setSubtableFieldValue(子表格中[金额]字段ID, -100, thisMonthEmployPay); //括号中第一个参数换成薪资单子表格中[金额]字段ID。 
thisEntry.setSubtableFieldValue(子表格中[加项项目名称]字段ID, -100, '代垫款'); //括号中第一个参数换成薪资单子表格中[加项项目名称]字段ID。 
//括号中第三个参数单引号中的字可以自行修改,可以改成 '员工该月代垫款' 之类的。
thisEntry.recalculateAllFormulas(); 
thisEntry.save(); 

response.setMessage('已生成该员工该月代垫款'); //括号中单引号中的字可以自行修改,可以改成 '运行完成' 之类的。
response.setStatus('SUCCESS'); 

}

2. 如果你的“薪资单”将代垫款设为独立字段的话:

请贴上以下程序代码:

function generateReimburse(recordId) { 

var employeePayrollSheet = db.getAPIQuery("薪资单表单路径"); //括号里换成薪资单sheet path
var expenseSheet = db.getAPIQuery("费用报支单表单路径"); //括号里换成费用报支sheet path
var thisEntry = employeePayrollSheet.getAPIEntry(recordId); 
var thisEmployeeEmail = thisEntry.getFieldValue([员工email]字段ID); //括号里换成薪资单[员工email]字段ID
var thisMonth = thisEntry.getFieldValue([该月份]字段ID); //括号里换成薪资单[该月份]字段ID 
expenseSheet.addFilter(3000338, '=', thisEmployeeEmail); //括号中第一个参数换成费用报支[员工email]字段ID,如未修改我们模板这里不需修改
expenseSheet.addFilter(费用报支[该月份]字段ID, '=', thisMonth); //括号中第一个参数换成费用报支[该月份]字段ID
expenseSheet.addFilter(3000335, '=', 'Yes'); //括号中第一个参数换成费用报支[已付还]字段ID,如未修改我们模板这里不需修改 
var results = expenseSheet.getAPIResultList(); 
var thisMonthEmployPay = 0; 

for (var i = 0; i < results.length; i++) {
var entry = results[i];
thisMonthEmployPay = thisMonthEmployPay + Number(entry.getFieldValue(3000352)); //括号中字段ID换成费用报支[总金额]字段ID,如未修改我们模板这里不需修改
};

thisEntry.setFieldValue([代垫款]字段ID, thisMonthEmployPay); //括号中第一个参数换成薪资单中的[代垫款]字段ID。 
thisEntry.recalculateAllFormulas(); 
thisEntry.save(); 

response.setMessage('已生成该员工该月代垫款'); //括号中单引号中的字可以自行修改,可以改成 '运行完成' 之类的。
response.setStatus('SUCCESS'); 

}

步骤四:更改里面的表单以及字段设置

1. 更改表单路径

若“薪资单”表单路径为:https://www.ragic.com/accountname/ragicadministration/1

那么请将这行改成:

var employeePayrollSheet = db.getAPIQuery("/ragicadministration/1"); 

若“费用报支”表单路径为:https://www.ragic.com/accountname/ragicadministration/25

那么请将下一行改成:

var expenseSheet = db.getAPIQuery("/ragicadministration/20005");

2. 更改字段 ID

(1) 找到以下程序代码:

var thisEmployeeEmail = thisEntry.getFieldValue([员工email]字段ID);

将“薪资单”员工 “email” 字段 ID 改成真的字段 ID,如员工 “email”字段 ID 为 1013791:

请将这行改成:

var thisEmployeeEmail = thisEntry.getFieldValue(1013791);

(2) 承上一点做法,将下一行“薪资单”的“该月份” 字段 ID 改成真的字段 ID,例:

var thisMonth = thisEntry.getFieldValue(1013790); 

(3) 找到以下三行:

expenseSheet.addFilter(3000338, '=', thisEmployeeEmail); 
expenseSheet.addFilter(费用报支[该月份]字段ID, '=', thisMonth); 
expenseSheet.addFilter(3000335, '=', 'Yes'); 

第一行的 3000338 为“费用报支”模块的“电邮”字段 ID,如果没有删除该字段的话可以直接保留这行不用做修改,如果删除或是想用其他电邮字段的话请改成其他电邮字段的字段 ID,例如其他电邮字段的字段 ID 为 1000234 的话可以改成:

expenseSheet.addFilter(1000234, '=', thisEmployeeEmail);

第三行的 3000335 为“费用报支”模块的“已付还?”字段 ID,修改逻辑同第一行。

第二行比较特别,设计逻辑上是希望薪资单的年月份会抓到该月份的代垫款,所以“费用报支”也需要有记录年月份的字段,完全不改模块不额外新增字段的话,可以选择“商业用途”或是“意见栏”字段。

选择“商业用途”的话就可以改成:

expenseSheet.addFilter(3000355, '=', thisMonth); 

也可以自行新增“年月份”字段,并填上“年月份”字段 ID

(4) 承上一点,找到以下这行,3000352 为“费用报支”的“总金额”字段 ID,有改表单设计再修改即可:

thisMonthEmployPay = thisMonthEmployPay + Number(entry.getFieldValue(3000352));

(5) 如果你的“薪资单”将加减项以及金额设计在子表格的话请找到以下这两行:

thisEntry.setSubtableFieldValue(子表格中[金额]字段ID, -100, thisMonthEmployPay); 
thisEntry.setSubtableFieldValue(子表格中[加项项目名称]字段ID, -100, '代垫款');

并找到子表格中的对应字段替换上去,替换完会像是这样:

thisEntry.setSubtableFieldValue(1013786, -100, thisMonthEmployPay); 
thisEntry.setSubtableFieldValue(1013785, -100, '代垫款');

如果你的“薪资单”将代垫款设为独立字段的话,请找到以下这行:

thisEntry.setFieldValue([代垫款]字段ID, thisMonthEmployPay);

并找到对应代垫款字段替换上去,替换完会像是这样:

thisEntry.setFieldValue(1013793, thisMonthEmployPay);

3. 更改填入项目名称以及显示信息

这个功能的设计为单击完单击钮会显示信息:

而图中的信息是可以修改的,也可以选择不修改,要修改的话请找到以下这行:

response.setMessage('已生成该员工该月代垫款'); 

将单引号中的字改成想要的字即可,例如:

response.setMessage('已生成本月代垫款');

同样道理,如果你的“薪资单”将加减项以及金额设计在子表格的话填入的项目名称也可以做修改,欲修改的话可以找到以下这行:

thisEntry.setSubtableFieldValue(子表格中[加项项目名称]字段ID, -100, '代垫款');

将单引号中的:代垫款,改成其他字,例如:

thisEntry.setSubtableFieldValue(子表格中[加项项目名称]字段ID, -100, '本月员工代垫款');

最后编辑完成后请务必点选左上角保存,程序修改才会生效喔。

步骤五:修改表单设计

进到“薪资单”表单页修改设计,找到左侧的表单设置 > 动作单击钮,单击钮名称可以自取,单击钮类型选:JS Workflow,然后在动作贴上:generateReimburse({id})

最后点选:新增单击钮即可。

修改完记得也要保存设计喔。

提供回馈给 Ragic

请告诉我们您的意见:(多选, 必填)

请针对上方勾选项目提供详细说明:

截屏能够让我们更清楚了解您的建议:

感谢您的宝贵意见!
    加载中...

    马上登记
    免费试用 Ragic!

    用 Google 帐号登记

    立即科技 Ragic, Inc.
    02-7728-8692
    info@ragic.com
    台北市中正区南昌路二段81号9楼
    用户条款 | 隐私权政策