七巧低代码开发——场景案例:控制用户提单费用对应并且预算限制

控制用户提单费用对应并且预算限制
客户需求
员工可提出差报销单进行出差费用的报销,同时需满足以下需求:
1)不同职位的员工对不同的科目不同城市有不同的报销额度,当报销金额超出时不允许提交并提示
2)成本中心每年有预算限制,当可用预算不足时不允许提交并提示去申请预算
3)每个季度平分当年的成本中心额度,当每季度的预算使用完毕时发送站内信提示
实现方式/思路(关键信息):
1)先用函数获取当前表单数据
2)再根据当前表单的数据查询当前员工的职位、科目报销限制、成本中心的额度
3)用查询到的数据编写IF逻辑做对比,符合条件的通过,不符合条件的调用报错函数或站内信提示
(function () {
    var appId = $.context.getCurrentApplicationId();
    var doc = $.context.getCurrentDocument();
    var position = doc.getElementByName("申请人职位").getValue();
    var subDocs = doc.getElementByName("明细").getSubDocuments();
    var costCenter = doc.getElementByName("所属成本中心").getValue();
    var tripCity = doc.getElementByName("出差城市").getValue();
    var day = doc.getElementByName("实际出差天数").getIntValue();
    //遍历子表单数据
    for (var i = 0; i < subDocs.size(); i++) {
        var subDoc = subDocs.get(i);
        var subject = subDoc.getElementByName("科目_复制").getValue();
        var category = subDoc.getElementByName("预算大类复制").getValue();
        var count = subDoc.getElementByName("单价").getDoubleValue();
        if (subject != "研发费用-差旅费住宿" && subject != "管理费用-差旅费住宿" && subject != "销售费用-差旅费-住宿") {
            //表单名称
            var formName = "职位单次报销限制";
            //控件值键对
            var conditionMap = new Packages.java.util.HashMap();
            conditionMap.put("职位名称", position);
            conditionMap.put("科目名称_复制", subject);
            var limits = $.form.getDocumentsByCondition(appId, formName, conditionMap);
            if (limits != null && limits.size() > 0) {
                for (var k = 0; k < limits.size(); k++) {
                    var limit = limits.get(k);
                    var amount = limit.getElementByName("单次最高报销金额").getDoubleValue();
                    if (amount < count) {
                        var message = $.validate.create();
                        message.addError(subject + "222超额,请调整发票金额");
                        return message;
                    }
                }
            }
        } else {
            if (tripCity == "1") {
                if (day * 500 < count) {
                    var message = $.validate.create();
                    message.addError(subject + "超额,请调整发票金额");
                    return message;
                }
            }
            if (tripCity == "2") {
                if (day * 300 < count) {
                    var message = $.validate.create();
                    message.addError(subject + "超额,请调整发票金额");
                    return message;
                }
            }
        }

        //表单名称
        var formNametwo = "预算明细";
        //控件值键对
        var filedMap = new Packages.java.util.HashMap();
        filedMap.put("成本中心名称", costCenter);
        filedMap.put("预算大类名称", category);
        var budgets = $.form.getDocumentsByCondition(appId, formNametwo, filedMap);
        if (budgets != null && budgets.size() > 0) {
            for (var j = 0; j < budgets.size(); j++) {
                var budget = budgets.get(j);
                var availableBudget = budget.getElementByName("可用预算").getDoubleValue();
                if (availableBudget < count) {
                    var message = $.validate.create();
                    message.addError(category + "可用金额不足,请去申请预算后填写");
                    return message;
                }
            }
        }
    }
    var appId = $.context.getCurrentApplicationId();
    var doc = $.context.getCurrentDocument();
    //var departmentId = doc.getElementByName("申请人部门").getValue();
    var time = doc.getElementByName("单据日期").getValue();
    var center = doc.getElementByName("所属成本中心").getValue();
    var centerCode = doc.getElementByName("成本中心编码").getValue();
    var subDocuments = doc.getElementByName("明细").getSubDocuments();
    //var departmentManagers = $.contact.listDepartmentManagersByDepartmentId(departmentId);


    var timestamp = time;
    //获取日期对象
    var dateObject1 = $.date.timestampToDate(timestamp);
    //日期格式
    var format = "MM-dd";
    //获取日期字符串
    var dateStr = $.date.dateToString(dateObject1, format);


    for (var i = 0; i < subDocuments.size(); i++) {
        var subDocument = subDocuments.get(i);
        var budget = subDocument.getElementByName("预算大类复制").getValue();
        //表单名称
        var formName = "预算明细";
        //控件值键对
        var conditionMap = new Packages.java.util.HashMap();
        conditionMap.put("预算大类名称", budget);
        conditionMap.put("成本中心名称", center);
        // conditionMap.put("成本中心编码",centerCode);
        var aggregates = $.form.getDocumentsByCondition(appId, formName, conditionMap);
        for (var j = 0; j < aggregates.size(); j++) {
            var aggregate = aggregates.get(j);
            var available = aggregate.getElementByName("已使用预算").getIntValue();
            var one = aggregate.getElementByName("第一季度").getIntValue();
            var two = aggregate.getElementByName("第二季度").getIntValue();
            var three = aggregate.getElementByName("第三季度").getIntValue();
            var four = aggregate.getElementByName("第四季度").getIntValue();
            var a = one + two;
            var b = one + two + three;
            var c = one + two + three + four;
            if ("01-01" <= dateStr <= "03-31") {
                if (available > one) {
                    //站内信标题
                    var subject = "站内信的标题";
                    //站内信正文
                    var context = "第一季度预算已使用完毕";
                    //接收用户id集合
                    var receiveUserIds = $.context.getCurrentUserId();
                    //发送站内信
                    $.message.sendGeneralStationMessage(subject, context, receiveUserIds);
                }
                if (available > a) {
                    //站内信标题
                    var subject = "站内信的标题";
                    //站内信正文
                    var context = "第二季度预算已使用完毕";
                    //接收用户id集合
                    var receiveUserIds = $.context.getCurrentUserId();
                    //发送站内信
                    $.message.sendGeneralStationMessage(subject, context, receiveUserIds);
                }
                if (available > b) {
                    //站内信标题
                    var subject = "站内信的标题";
                    //站内信正文
                    var context = "第三季度预算已使用完毕";
                    //接收用户id集合
                    var receiveUserIds = $.context.getCurrentUserId();
                    //发送站内信
                    $.message.sendGeneralStationMessage(subject, context, receiveUserIds);
                }
                if (available > c) {
                    //站内信标题
                    var subject = "站内信的标题";
                    //站内信正文
                    var context = "第四季度预算已使用完毕";
                    //接收用户id集合
                    var receiveUserIds = $.context.getCurrentUserId();
                    //发送站内信
                    $.message.sendGeneralStationMessage(subject, context, receiveUserIds);
                }
            }
            if ("04-01" <= dateStr <= "06-30") {
                if (available > a) {
                    //站内信标题
                    var subject = "站内信的标题";
                    //站内信正文
                    var context = "第二季度预算已使用完毕";
                    //接收用户id集合
                    var receiveUserIds = $.context.getCurrentUserId();
                    //发送站内信
                    $.message.sendGeneralStationMessage(subject, context, receiveUserIds);
                }
                if (available > b) {
                    //站内信标题
                    var subject = "站内信的标题";
                    //站内信正文
                    var context = "第三季度预算已使用完毕";
                    //接收用户id集合
                    var receiveUserIds = $.context.getCurrentUserId();
                    //发送站内信
                    $.message.sendGeneralStationMessage(subject, context, receiveUserIds);
                }
                if (available > c) {
                    //站内信标题
                    var subject = "站内信的标题";
                    //站内信正文
                    var context = "第四季度预算已使用完毕";
                    //接收用户id集合
                    var receiveUserIds = $.context.getCurrentUserId();
                    //发送站内信
                    $.message.sendGeneralStationMessage(subject, context, receiveUserIds);
                }
            }
            if ("07-01" <= dateStr <= "09-30") {
                if (available > b) {
                    //站内信标题
                    var subject = "站内信的标题";
                    //站内信正文
                    var context = "第三季度预算已使用完毕";
                    //接收用户id集合
                    var receiveUserIds = $.context.getCurrentUserId();
                    //发送站内信
                    $.message.sendGeneralStationMessage(subject, context, receiveUserIds);
                }
                if (available > c) {
                    //站内信标题
                    var subject = "站内信的标题";
                    //站内信正文
                    var context = "第四季度预算已使用完毕";
                    //接收用户id集合
                    var receiveUserIds = $.context.getCurrentUserId();
                    //发送站内信
                    $.message.sendGeneralStationMessage(subject, context, receiveUserIds);
                }
            }
            if ("10-01" <= dateStr <= "12-31") {
                if (available > c) {
                    //站内信标题
                    var subject = "站内信的标题";
                    //站内信正文
                    var context = "第四季度预算已使用完毕";
                    //接收用户id集合
                    var receiveUserIds = $.context.getCurrentUserId();
                    //发送站内信
                    $.message.sendGeneralStationMessage(subject, context, receiveUserIds);
                }
            }
        }
    }
})()
  • 发表于 2024-03-29 17:09
  • 阅读 ( 480 )
  • 分类:专题案例

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
七小妹
七小妹

12 篇文章

作家榜 »

  1. 七小妹 12 文章
  2. 你是猴子派来的吧 3 文章
  3. 七巧低代码 2 文章
  4. 低代码小刘 2 文章
  5. 彭杏怡 0 文章
  6. 林友景 0 文章
  7. 0 文章
  8. 赵泽伟 0 文章