大数跨境

「重度用户分享」在企业微信上快捷审批报价的方法就在这里了!

「重度用户分享」在企业微信上快捷审批报价的方法就在这里了! 白码
2021-08-20
0

点击蓝字


关注我们

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


如何在企业微信上快捷审批报价

Function Description

来自  白码用户 @ttzmb的分享

场景描述

在客户关系管理系统中,销售人员新增的报价后,会给到他的上级领导进行审核,报价信息将通过企业微信企业号发送卡片消息到上级领导的企业微信号中,领导通过卡片消息查看报价信息,并且进行审核操作。


实现效果

新增报价后发送消息卡片至上级领导的企业微信中,上级领导可在企业微信上进行审批操作。


前期准备

实现此功能模块需要以下6个数据表。

1.公司表:存储公司(客户)信息,其中公司联系人可能会存在多个的情况,因此这个字段的类型为集合。


2.联系人表:用于记录联系人的基本信息。其中,公司字段关联的是客户(公司),联系人则是此公司的客户代表,一个公司可以有多个联系人,因此字段类型为集合。销售归属人是跟进此联系人的销售人员的关联字段。


3.报价表:用于记录报价信息,包括产品明细以及审核记录,所属的客户(公司)以及联系人。


4.审核记录表:用于记录审核信息,包括审核人,审核时间等。


5.产品明细表:用于记录报价单中的产品(包括数量、单价、明细金额等)


6.用户表:用于记录系统用户信息,包括部门,上级领导,客户数上线,企业微信userid等字段。


实现步骤

1.创建发送企业微信消息卡片(报价信息)的云函数。

配置API参数:

编程代码:


向上滑动阅览


async function run($input, $output, $modules = modules) {

    /**发送应用文本消息

       * 官方API:https://work.weixin.qq.com/api/doc/90000/90135/90236

       * 错误码查询工具:https://open.work.weixin.qq.com/devtool/query?e=

       * 

       * touser、toparty、totag不能同时为空

       */

    const wxworkThirdApi = $modules.wxworkThirdApi;

    let agentid = await wxworkThirdApi.getAgentId();

    let title = $input.title;//任务标题

    let description = $input.description;

    let task_id = $input.task_id;

    let offer_url = await $modules.helper.getConfig("offer_url");

    let order_url = await $modules.helper.getConfig("order_url");

    let url = $input.title.includes("报价") ? offer_url : order_url;

    let data = {

        touser:$input.touser,

        msgtype:"interactive_taskcard",//任务卡片消息

        agentid,

        interactive_taskcard:{

            title,

            description,

            url,

            task_id,

            btn:[

                {

                    key:"approve",

                    name:"通过",

                    color:"blue",

                    is_bold:false,

                },

                {

                    key:"reject",

                    name:"拒绝",

                    color:"red",

                    is_bold:false,

                }

            ],

        },

    };

    //发送

    let task_card_message = await wxworkThirdApi.request({

        method: "post",

        url: "message/send",

        data

    });

    /**

     * 如果部分接收人无权限或不存在,发送仍然执行,但会返回无效的部分(即invaliduser或invalidparty或invalidtag),常见的原因是接收人不在应用的可见范围内。

     * 如果全部接收人无权限或不存在,则本次调用返回失败,errcode为81013。

     * 返回包中的userid,不区分大小写,统一转为小写

     */

    $output.invaliduser = task_card_message.invaliduser;

    $output.invalidparty = task_card_message.invalidparty;

    $output.invalidtag = task_card_message.invalidtag;

    $output.res = task_card_message;

}



2. 创建一个“新增报价”功能,用于录入报价单信息。并且将生成的报价信息通过企业微信发送卡片消息给上级领导进行审核。

(1) 选择联系人:筛选销售归属人为当前用户的联系人。

(2)新增报价:新增一条报价单数据。

(3)新增产品明细:新增报价单中的产品明细集合,设置好明细中各种金额的计算。

(4)获取当前系统用户:

(5)获取上级领导:筛选出当前用户从属的上级领导。

(6)获取联系人公司:做一个筛选,获取联系人所属的公司(客户)。

(7)计算参数:将上方步骤中的数据进行整合,输出。


向上滑动阅览


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

    let contact_name = $params.contact_name;//联系人名称

    let company_name = $params.company_name;//联系人公司名称

    company_name = company_name || "个人"

    let project_name = $params.project_name;//项目名称

    let detail_total = $params.detail_total;//明细总额

    let preferential_amount = $params.preferential_amount;//优惠金额

    let final_amount = $params.final_amount;//最终金额

    let time = new Date().getTime();//当前时间戳

    let date = $params.date;

    let desc = 

    `客户:${company_name} ${contact_name}\n项目名称:${project_name}\n明细总额:${detail_total}\n优惠金额:${preferential_amount}\n最终金额:${final_amount}\n创建日期:${date}`

    $model.output["desc"] = desc;

    $model.output["task_id"] = `offer_${$params.offer._id}_${time}`

    $model.output["title"] = `${$params.name}的报价申请`

}


(8)发送企业微信消息卡片:调用云函数,设置好模板中的输入参数。


3.创建一个“审核报价”功能,用于审核报价单

(1)选择报价:选择需要进行审核的报价,需要筛选状态为“审核中”的报价单数据。

(2)报价状态判断:若报价单状态不为“审核中”,则无法进行审核且无法提交。若为审核中则可以进行审核意见输入,并且在系统中新增一条审核记录。

(3)新增审核记录:对当前报价审核操作进行记录,其中“审核人”设为当前用户。

(4)审核后状态判断:若报价通过,则更新报价状态为“已通过”,若不通过,则更新报价状态为“已拒绝”。

(5)更新报价状态(已通过/已拒绝):

已通过

已拒绝

(6)更新任务卡片消息状态:调用云函数,审核操作完成后,更新消息卡片上的审核意见信息。


4.创建更新消息卡片的云函数

配置API参数:

编程代码:


向上滑动阅览


async function run($input,$output,$modules = modules){

    const wxworkThirdApi = $modules.wxworkThirdApi;

    let agentid = await wxworkThirdApi.getAgentId();

    let data = {

        userids:[$input.userid],

        agentid,

        task_id:$input.task_id,

        replace_name:$input.replace_name

    };

    let res = await wxworkThirdApi.request({

        method: "post",

        url: "message/update_taskcard",

        data

    });

    $output.invaliduser = res;

}




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

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


往期 · 推荐

快速实现记账功能

快速实现备用金及其流水明细

快速实现自动化绩效考核评分

将白码上的数据存储到MySQL数据库

通过SQL数据库对接功能改进原系统


白码科技 · BAIMA

扫描二维码添加客服微信

有任何问题都可以询问客服哦~

点击“阅读原文”了解更多白码资讯!

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