道一云按钮事件js小记

在采购单界面添加按钮的提交后增加代码,用于更新库存表记录

包含了查找表数据,添加表记录,修改表记录三个表单用法。分别是:

  1. 查找:$.form.getFormDocumentsByFieldNameAndValue(appId, formName, fieldMap); //找到的是个列表
  2. 添加:$.form.saveFormDocument(doc, appId);
  3. 修改:$.form.updateDocument(appId, formName, documentInfo);
  4. 按id查记录:$.form.getFormInstanceDocument(pFormModelId, type == 1 ? productCode : partCode, appId)
(function () {
    var appId = $.context.getCurrentApplicationId();
    var storageDoc = $.context.getCurrentDocument();
  
    var subOriginalDocuments = $.form.getSubFormDocumentsByName(storageDoc.id, "采购业务号", "采购明细", appId);

    var types = [{ value: 1, name: '商品编码' }, { value: 2, name: '配件编码' }];

    for (var index = 0; index < subOriginalDocuments.size(); index++) {
        var subOriginalDocument = subOriginalDocuments.get(index);
        var type = subOriginalDocument.getElementByName("类别").getValue();
        var productCode = subOriginalDocument.getElementByName("商品编码").getValue();
        var partCode = subOriginalDocument.getElementByName("配件编码").getValue();
        var num = subOriginalDocument.getElementByName("数量").getIntValue();
        var price = Number(subOriginalDocument.getElementByName("单价").getValue());

        for (var t = 0; t < types.length; t++) {
            var pType = types[t];
            if (pType.value == type) {
                //查询库存表中对应类别与编码的数据,如果没有找到就新增,如果找到就修改
                var fieldMap = new Packages.java.util.HashMap();
                fieldMap.put("类别", type);
                fieldMap.put(pType.name, type == 1 ? productCode : partCode);
                var formName = "库存表";
                //查询出的是个列表
                var productForm = $.form.getFormDocumentsByFieldNameAndValue(appId, formName, fieldMap);
                if (!productForm) {
                    //新增
                    var doc = $.form.createEmptyDocument(appId, formName);
                    doc.addElement("类别", type);
                    doc.addElement(pType.name, type == 1 ? productCode : partCode);
                    doc.addElement("数量", num);
                    doc.addElement("累计入库数量", num);
                    doc.addElement("最新成本价", price);
                    doc.addElement("累计入库金额", num * price);
           
                    var spNameName = type == 1 ? '商品名称' : '配件名称';
                    var spPName = type == 1 ? '商品品牌' : '配件品牌';

                    var pFormModelId = type == 1 ? '64c86c71af01af653ef79fec' : '64c867cbaf01af653ef79fda';//商品表、配件表模型id
					//外键关联记录,保存的是id值,应该每个表单都有一个默认的id值,所以要用id从关联表中取记录
                    var pSet = $.form.getFormInstanceDocument(pFormModelId, type == 1 ? productCode : partCode, appId);//商品或配件记录
                    var pName = pSet.getElementByName('商品名称').getValue();
                    doc.addElement(spNameName, pName); //写入商品名称或配件名称
                    var ppId = pSet.getElementByName('品牌').getValue();
                    var ppSet = $.form.getFormInstanceDocument("64c8670922d8af1b9faebb32", ppId, appId);//品牌记录
                    var ppName = ppSet.getElementByName('品牌名称').getValue();
                    doc.addElement(spPName, ppName);//写入品牌名称

                    $.log.info('新增:{}', $.json.objectToJsonString(doc));

                    $.form.saveFormDocument(doc, appId);
                } else {
                    var obj = productForm.get(0);
                    var id = obj.getId();
                    var hasNum = obj.getElementByName('数量').getIntValue();
                    var totalNum = obj.getElementByName('累计入库数量').getIntValue();
                    var totalMoney = Number(obj.getElementByName('累计入库金额').getValue());
                    hasNum += num;
                    totalNum += num;
                    totalMoney += Number((num * price).toFixed(2));
                    var avgPrice = Number((totalMoney / totalNum).toFixed(2));

                    var documentInfo = new Packages.java.util.HashMap();
                    //documentInfo必须存在id字段
                    documentInfo.put("id", id);
                    documentInfo.put("数量", hasNum);
                    documentInfo.put("累计入库数量", totalNum);
                    documentInfo.put("累计入库金额", totalMoney);
                    documentInfo.put("最新成本价", avgPrice);

                    $.log.info("修改:{}", documentInfo);
                    try {
                        $.form.updateDocument(appId, formName, documentInfo);
                    } catch (e) {
                        $.log.info("出错:{}", e)
                    }

                }
            }
        }

    }
})()

你可能感兴趣的:(js,javascript,前端,html)