TreeviewCopyright © aleen42 all right reserved, powered by aleen42
赠品计算
一、背景
- 赠品档案和赠品规则作为基本档案,为赠品计算奠定基础
- 赠品计算需要实现从销售订单拉取数据-》计算赠品-》修改销售订单子表记录的功能,大概效果如下图
二、实体
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、新建一主多子页面-【赠品计算】
效果如下
3.2、【赠品计算列表】页面调整
删除所有按钮,增加一个按钮,更改多语标题为销售订单,动作绑定打开模态框事件,效果如下
function (event) {
var viewModel = this;
let data = {
billtype: 'VoucherList',// 单据类型
billno: 'd0a22d9d',// 单据号
params: {
mode: 'browse',
}
};
//打开一个单据,并在当前页面显示
cb.loader.runCommandLine('bill', data, viewModel);
}
思路:通过点击销售订单按钮,弹出一个模态框,调用开放平台销售订单列表接口。实现清单的展示。点击确定按钮,新增一条赠品计算记录 具体操作请点击下面链接
3.3、【赠品计算】页面调整
删除表格所有按钮,增加一个按钮,更改多语标题为计算赠品 删除表格头部栏右侧按钮,新增一个按钮,更改多语标题为发送至销售订单 效果如下
思路:通过点击计算赠品,弹出一个模态框,显示当前单据所有符合条件的赠品,点击确定,将选择解决渲染至父页面。然后点击【发送至销售订单】,新增一条销售订单子表赠品记录
具体操作请点击下面链接
3.4、【赠品计算】页面调整二-发送销售订单事件
后端脚手架编写
发送至销售订单按钮增加点击事件
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");
}
});
}