如何实现备用金及其流水明细效果

场景描述:

有些行业会有客户有“预付款”、“预收款”的情况,这里暂且统称为“备用金”。客户有订单产生后,对应的“应付金额”或者“应收金额”会优先在备用金里面自动抵扣,直到备用金的金额变为0为止后不再扣除。

 

前期准备

以供应商的“预付款”为例。数据表结构简单表示,可以根据实际需要自行调整。

在白码低代码开发平台上创建一张订单表、供应商表、备用金流水记录表。

功能实现:

1. 创建一个“新增供应商”功能,用于录入供应商信息。

单个功能效果:

2. 创建一个“添加备用金”的功能,用于添加备用金金额。

本次添加金额步骤直接用备用金流水记录表来体现:

其属性选项卡设置:

添加后的金额步骤:

单个功能效果:

3. 创建一个“新增订单”功能,用于订单信息录入,同时处理备用金。

订单信息步骤属性选项卡设置:

备用金处理编程步骤:

示例代码:

async function runProcess($model = model, $plugin = plugin, $params = params) {
    let order = $params.order;//获取订单信息
    let user = await $plugin.data.getUser();//获取当前用户
    let date = await $plugin.moment().format("YYYY-MM-DD HH-mm-ss");//获取当前时间
    //获取供应商信息
    let supplier = await $plugin.data.getData("60b08c47b6c7d5637c90ac77", order["60b0893d0cbcf66375d0e0d0"]);
    let imprest = supplier["60b0893d0cbcf66375d0e0d0"];//供应商的备用金
    let amount_payable = order["60b08cce4ba5ab636e2f5c10"];//应付金额
    if (new Number(imprest) > 0) {//如果备用金大于0
        if (new Number(imprest) - new Number(amount) > 0) {//备用金-订单应付金额>0,说明备用金足够扣除本次应付金额
            //更新订单信息
            await $plugin.data.updateData("60b08c47b6c7d5637c90ac77", order._id, {
                "60b08cfacec155636dbe6b4a": new Number(amount_payable),//更新订单的已付金额
                "60b08e930cbcf66375d0f721": "备用金付全款",//更新订单的付款说明
            });
            //更新供应商的备用金
            await $plugin.data.updateData("60b08c47b6c7d5637c90ac77", supplier._id, {
                "60b0893d0cbcf66375d0e0d0": new Number(imprest) - new Number(amount_payable),//备用金=原本备用金-订单应付金额
            })
            //添加备用金流水记录
            await $plugin.data.saveData("60b08b0c0cbcf66375d0e0f2", {
                "60b08b47cec155636dbe6b3f": supplier._id,//供应商
                "60b08b124ba5ab636e2f5be9": date,//时间
                "60b08b544ba5ab636e2f5beb": new Number(imprest),//操作前的金额
                "60b08b600cbcf66375d0e0f3": - new Number(amount_payable),//操作金额
                "60b08b6d0cbcf66375d0e0f4": new Number(imprest) - new Number(amount_payable),//操作后的金额=原本备用金-订单应付金额
                "60b08b7b0cbcf66375d0e0f6": user._id,//操作人是当前用户
            })
        } else {
            //更新订单信息
            await $plugin.data.updateData("60b08c47b6c7d5637c90ac77", order._id, {
                "60b08cfacec155636dbe6b4a": new Numberimprest(imprest),//更新订单的已付金额=剩余备用金
                "60b08e930cbcf66375d0f721": "备用金抵扣部分",//更新订单的付款说明
            });
            //更新供应商的备用金
            await $plugin.data.updateData("60b08c47b6c7d5637c90ac77", supplier._id, {
                "60b0893d0cbcf66375d0e0d0": 0//备用金抵扣后为0
            })
            //添加备用金流水记录
            await $plugin.data.saveData("60b08b0c0cbcf66375d0e0f2", {
                "60b08b47cec155636dbe6b3f": supplier._id,//供应商
                "60b08b124ba5ab636e2f5be9": date,//时间
                "60b08b544ba5ab636e2f5beb": new Number(imprest),//操作前的金额
                "60b08b600cbcf66375d0e0f3": - new Number(imprest),//操作金额
                "60b08b6d0cbcf66375d0e0f4": 0,//操作后的金额=0
                "60b08b7b0cbcf66375d0e0f6": user._id,//操作人是当前用户
            })
        }
    }
}

 

功能效果示例:

备用金足够抵扣时:

备用金抵扣部分时:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值