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

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

    目录

    前置操作:功能解说

    步骤一:打开 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楼
    用户条款 | 隐私权政策