赠品计算

一、背景

  • 赠品档案和赠品规则作为基本档案,为赠品计算奠定基础
  • 赠品计算需要实现从销售订单拉取数据-》计算赠品-》修改销售订单子表记录的功能,大概效果如下图

二、实体

2.1、赠品计算

操作 描述
名称 赠品计算
编码 giftscalculate
表名 giftscalculate
父实体
引用接口 自动编码
属性 编码 名称 类型 引用
saleorderid 销售订单id 文本
vouchdate 单据日期 日期
salecode 单据编号 文本
agentId_name 客户名称 文本
agentId 客户id 文本
oriSum 含税金额 数值

2.2、订单详情

操作 描述
名称 订单详情
编码 orderDetails
表名 orderDetails
父实体 赠品计算
引用接口
属性 编码 名称 类型 引用
productId 商品编码 单选引用 物料
iProductAuxUnitId 销售单位 单选引用 物料计量单位
invExchRate 销售换算率 整数
subQty 销售数量 数值
invPriceExchRate 计价换算率 整数
priceQty 计价数量 数值
qty 数量 整数
orderProductType 商品售卖类型 文本
stockOrgId 库存组织 单选引用 库存组织
consignTime 计划发货日期 日期
settlementOrgId 开票组织 单选引用 会计主体
oriTaxUnitPrice 含税成交价 数值
oriSum 含税金额 数值
taxRate 税率 数值
oriTax 税额 数值
natTax 本币税额 数值
giftsrule 赠品规则 单选引用 赠品规则
giftsrule_name 赠品规则名称 文本
productUnit 物料计价单位 单选引用 物料计量单位

三、页面建模

3.1、新建一主多子页面-【赠品计算】

图1 图1

效果如下

图1

3.2、【赠品计算列表】页面调整

删除所有按钮,增加一个按钮,更改多语标题为销售订单,动作绑定打开模态框事件,效果如下

图1


function (event) {
  var viewModel = this;
  let data = {
    billtype: 'VoucherList',// 单据类型
    billno: 'd0a22d9d',// 单据号
    params: {
      mode: 'browse', 
    }
  };
  //打开一个单据,并在当前页面显示
  cb.loader.runCommandLine('bill', data, viewModel);
}

思路:通过点击销售订单按钮,弹出一个模态框,调用开放平台销售订单列表接口。实现清单的展示。点击确定按钮,新增一条赠品计算记录 具体操作请点击下面链接

3.3、【赠品计算】页面调整

删除表格所有按钮,增加一个按钮,更改多语标题为计算赠品 删除表格头部栏右侧按钮,新增一个按钮,更改多语标题为发送至销售订单 效果如下

图1

思路:通过点击计算赠品,弹出一个模态框,显示当前单据所有符合条件的赠品,点击确定,将选择解决渲染至父页面。然后点击【发送至销售订单】,新增一条销售订单子表赠品记录

具体操作请点击下面链接

3.4、【赠品计算】页面调整二-发送销售订单事件

后端脚手架编写

图1

发送至销售订单按钮增加点击事件

图1


function (event) {
  var viewModel = this;
  //获取表格赠品相关数据
  var gridModel = viewModel.get("orderDetailsList");
  var rows = gridModel.getRows();
  var giftRows = [];
  for(let i in rows){
    if(rows[i].orderProductType=="GIFT"&&rows[i].giftscalculate_id==undefined){
      giftRows.push(rows[i]);
    }
  }
  if(giftRows.length==0){
    cb.utils.alert("请计算赠品");
    return false;
  }
  //请求后台执行更新销售订单操作
  var proxy = cb.rest.DynamicProxy.create({
        settle: {
            url: 'salesOrder/update',
            method: 'POST'
        }
    });
    var reqParams = {
      'rows':giftRows,
      'saleorderid':viewModel.get("saleorderid").getValue()
    }
    proxy.settle(reqParams, function(err, res) {
        if (err) {
          cb.utils.alert(err.message);
          return;
        }else{
           cb.utils.alert("更新成功");
           //执行保存
           viewModel.get("btnSave").execute("click");
        }
    });
}

四、效果

图1

Copyright © 用友 -【生态技术部】 2021 all right reserved,powered by Gitbook修订时间: 2022-06-09 11:52:49

results matching ""

    No results matching ""