大数跨境

「重度用户分享」教你如何快速实现根据业绩自动计算提成!

「重度用户分享」教你如何快速实现根据业绩自动计算提成! 白码
2021-05-20
0

点击蓝字


关注我们

上次重度用户分享的文章发布后,我们收到了很多其他用户编写的使用心得分享。我们精选了其中的一篇,一起来看看他们是怎么运用白码平台来便捷开发的吧!


根据业绩确定提成比例并计算提成

Function Description

来自  白码用户 @Up  的分享

描述

根据当月订单的成交量计算业务员的当月的业绩总额,确定业务员当月的提成档次,得出提成比例,并在月底自动算出业务员当月成交订单的所有提成。


前期准备

创建业务员表、提成阶级表、订单表、业绩提成表。

其中业务员表集合提成阶级表,提成阶级表字段:“业绩左区间(元)”表示大于等于这个数值,例如“业绩左区间(元)”填50000,即表示大于等于50000元;“业绩右区间”表示小于这个数值,例如“业绩右区间(元)”填100000,即表示小于100000元。订单表则简单表示。

业务员表

提成阶级表

订单表

业绩提成表


实现步骤

1.新建一个“新增业务员”功能,录入业务员的基础信息,以及最重要的“提成阶级”。

新增业务员功能

提成阶级步骤属性选项卡设置

示例效果:


2. 新建一个“新增订单”功能,录入对应的订单数据;在新建一条订单数据的时候,会同步创建一条对应业务员的业绩提成信息。

新增订单功能

提成阶级步骤属性选项卡设置

业绩步骤属性选项卡设置

示例效果:

功能效果

订单提交后效果

订单提交后业绩提成效果


3. 新建一个“单个业务员提成计算”功能,用于统计单个业务员的月累计业绩,从而在该业务员的提成阶级中获取到业绩总额对应的提成比例,算出当月所有提成并更新到业绩提成表上。

单个业务员提成计算


新加一个“交互”类型的步骤,“操作”选为“输入”,并在属性选项卡里“添加属性”,别名设为“当前时间”

计算业绩步骤是“编程”类型,效果如下:

代码:


向上滑动阅览


async function runProcess($model = model, $plugin = plugin, $params) {

    let commission_list = $params.commission_list;//获取业务员提成阶级

    let salesman = $params.salesman; //获取业务员

    let date = new Date();

    date.setMonth(date.getMonth()-1);//上个月

    date.setDate(1);//上个月1号

    let params = await $model.getValue("6077ed6363070c5016868574");

    let now_str = params["field_1618472308212"];//当前日期YYYY-MM-DD

    let YY = date.getFullYear();

    let MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1);

    let DD = (date.getDate() + 1 <= 10 ? '0' + date.getDate() : date.getDate());

    let time = YY + "-" + MM + "-" + DD;//上个月1号日期str

    await $model.log("now:" + now_str);

    await $model.log("time:" + time);

    let achievement_list = await $plugin.data.queryData("607656e51221966e7625ae4c", {

        "$and": [{

            "6076578923ebd46e75f74344": salesman._id,     //业务员id

            "607657951221966e7625ae4d": { "$gte": time }  //大于等于上月1号

        }, {

            "6076578923ebd46e75f74344": salesman._id,     //业务员id

            "607657951221966e7625ae4d": { "$lt": now_str } //小于当前日期(1号)

        }

        ]

    }, {

        all: true

    });//查询该业务员上个月的所有业绩

    await $model.log(achievement_list.length);//获取到业务员业务提成数据量

    let total_amount = await $plugin.data.summaryData("607656e51221966e7625ae4c""6076573e23ebd46e75f74341","6076578923ebd46e75f74344",{

        "$and": [{

            "6076578923ebd46e75f74344": salesman._id,     //业务员id

            "607657951221966e7625ae4d": { "$gte": time }  //大于等于上月1号

        }, {

            "6076578923ebd46e75f74344": salesman._id,     //业务员id

            "607657951221966e7625ae4d": { "$lt": now_str } //小于当前日期(1号)

        }

        ]

    });//统计当月销售业绩

    total_amount = total_amount[0]["sum"];//合计销售业绩

    await $model.log("total:" + total_amount);//打印总业绩

    for (let i = 0; i < commission_list.length; i++) {

        if (total_amount >= commission_list[i]["6075506114b72e6e88545005"] && total_amount < commission_list[i]["60755074cbbb586e7aa6b5ec"]) {//找到对应的提成区间,大于等于左区间,小于右区间

            let rate = commission_list[i]["60755081e609b06e81432714"];//对应提成阶级的比例

            for (let j = 0; j < achievement_list.length; j++) {

                await $plugin.data.updateData("607656e51221966e7625ae4c", achievement_list[j]._id, {

                    "6076575823ebd46e75f74342": new Number(rate),

                    "6076576723ebd46e75f74343": achievement_list[j]["6076573e23ebd46e75f74341"] * new Number(rate) * 0.01 //业绩提成=业绩金额*提成比例*0.01

                });//循环计算出业绩提成

            }

        }

    }

 

}




4. 新建一个“自动计算提成功能”,获取到所有的业务员,并用编程代码调用3步骤中的“单个业务员提成计算”功能,循环算出所有业务员的所有业绩提成。

自动计算提成功能

循环计算业务员提成步骤是“编程”类型,效果如下:

代码:

async function runProcess($model = model, $plugin = plugin, $params) {

    let list = $params.list;//获取所有的业务员

    for (let i = 0; i < list.length; i++) {

        await $plugin.program.exec("6076d0f41221966e7625b4ae", {//调用计算提成功能id

            "6077eb7263070c5016868568": { //被调用功能,选择业务员步骤的步骤id

                "_id": list[i]._id

            }

        });

    }

}

其中,被调用功能的id可在其功能画布里边去获取

获取选择业务员业务员步骤的id


5. 创建定时任务,设置好执行的功能及其执行时间

创建定时任务

开启定时任务

至此功能的实现步骤全部完成。


功能效果



再次感谢白码用户@Up 的精彩分享~

也欢迎各位白码用户可以根据文章内容,自己实操感受一下,有发现更好的解决方法也可以发出来和我们分享,与白码其他用户一起交流~


往期 · 推荐

3天从零搭建CRM系统

调用或跳转已实现的功能

多层级关联选择的快速实现

金额数值的千分位显示格式

低代码快速实现MRP运算

白码

扫二维码|添加小助理微信

有任何问题

都可以咨询小助理哦

这里“阅读原文”,了解更多白码信息

【声明】内容源于网络
0
0
白码
白码无代码 | 低代码开发平台可以帮助开发者和企业技术开发团队增加软件开发速度,降低开发成本,达到降本增效的目的。用户可以通过白码,按照企业所需自行定制ERP,CRM,OA等软件;成为白码开发者,把想法快速变成软件吧。
内容 125
粉丝 0
白码 白码无代码 | 低代码开发平台可以帮助开发者和企业技术开发团队增加软件开发速度,降低开发成本,达到降本增效的目的。用户可以通过白码,按照企业所需自行定制ERP,CRM,OA等软件;成为白码开发者,把想法快速变成软件吧。
总阅读0
粉丝0
内容125