电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

二开实战:如何在移动表单中自动优先级取价

来源:金蝶云社区作者:金蝶2024-09-238

二开实战:如何在移动表单中自动优先级取价

## 二开实战:如何在移动表单中自动优先级取价 > 本实战根据如下二开方案中的**1.自动优先级取价**,演示如何从销售订单、基础资料客户、基础资料物料等数据源获取数据并赋值给取价参数,从而完成取价逻辑 > 二开方案:如何在移动表单中调用接口获取销售价目表、销售折扣表(https://vip.kingdee.com/article/449530620910173440) ### 1. 前提准备 目前已维护好相关价目表数据,已打开自动优先级取价(参数设置-供应链-销售管理-取价)。PC端创建一张销售订单,测试当前物料取价是否正常:在分录中输入好物料信息,当输入数量后,自动带出对应价格(如下图) ![image.webp](/download/01001a7dac7d203741adb10d248836f7c22f.webp) 此时,将所有分录的含税单价全部清空(如下图),然后暂存该单据,测试根据二开方案是否可以进行自动优先级取价 ![image.webp](/download/01002199123785c54348b0ee805b43d0e682.webp) ### 2. 模拟取价 操作步骤: 1. 查询到当前销售订单的主键ID备用(通过T_SAL_ORDER表) 2. 编写插件,根据需要实例化取价参数,然后调用SaleGetPriceAutoHelper.GetSalePriceRustltByAuto完成取价 3. 创建移动表单,增加按钮用于触发取价即可,将插件注册到该表单并启用 ![image.webp](/download/010013fe1107f60d4fb09006cedf24bce86c.webp) 代码参考如下: ``` using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Mobile.PlugIn; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.ServiceHelper; using Kingdee.K3.Core.Mobile.Utils; using Kingdee.K3.Core.SCM.Args; using Kingdee.K3.SCM.ServiceHelper; using System; using System.Collections.Generic; using System.Linq; namespace YourNamespace { public class PriceDemo : AbstractMobilePlugin { public override void ButtonClick(ButtonClickEventArgs e) { base.ButtonClick(e); if (e.Key == "FBUTTON") { OrdersPriceMapping(); } } public void OrdersPriceMapping() { // 获取销售订单元数据 var salOrderMetadata = MetaDataServiceHelper.GetFormMetaData(this.Context, "SAL_SaleOrder"); // 销售订单数据包 // 备注:当前以某个订单(主键=101158)举例,你在使用时根据需要灵活赋值各项即可 DynamicObject doSalOrder = BusinessDataServiceHelper.Load(this.Context, new object[] { 101158 }, salOrderMetadata.BusinessInfo.GetDynamicObjectType()).FirstOrDefault(); // 财务信息子单据头数据 DynamicObject doSaleOrderFinance = (doSalOrder["SaleOrderFinance"] as DynamicObjectCollection).FirstOrDefault(); // 结算币别 long settleCurrId = doSaleOrderFinance.GetPropertyValue<long>("SettleCurrId_Id"); // 销售组 long saleGroupId = doSalOrder.GetPropertyValue<long>("SaleGroupId_Id"); // 销售组织 long saleOrgId = doSalOrder.GetPropertyValue<long>("SaleOrgId_Id"); // 销售部门 long saleDeptId = doSalOrder.GetPropertyValue<long>("SaleDeptId_Id"); // 销售员 long salerId = doSalOrder.GetPropertyValue<long>("SalerId_Id"); // 基础资料-客户 var doCust = doSalOrder["CustId"] as DynamicObject; // 客户ID long custId = doCust.GetPropertyValue<long>("Id"); // 客户类别 string custTypeId = doCust.GetPropertyValue<string>("CustTypeId_Id"); // 客户分组:由于默认的销售订单上的客户字段的引用属性不包含 客户基础资料里的【基本信息.客户分组】,因此需要根据custId加载BD_Customer数据包,拿到客户分组 var customerMetadata = MetaDataServiceHelper.GetFormMetaData(this.Context, "BD_Customer"); var doCustomer = BusinessDataServiceHelper.Load(this.Context, new object[] { custId }, customerMetadata.BusinessInfo.GetDynamicObjectType()).FirstOrDefault(); long custGroupId = doCustomer.GetPropertyValue<long>("FGroup_Id"); // 日期 DateTime date = doSalOrder.GetPropertyValue<DateTime>("Date"); // 是否含税 bool isIncludedTax = doSaleOrderFinance.GetPropertyValue<bool>("IsIncludedTax"); // 价目表 long priceListId = doSaleOrderFinance.GetPropertyValue<long>("PriceListId_Id"); // 订单明细分录 DynamicObject[] entryData = (doSalOrder["SaleOrderEntry"] as DynamicObjectCollection).ToArray(); // 取价参数List List<GetPriceArgs> list = new List<GetPriceArgs>(); // 循环加入子项 for (var i = 0; i < entryData.Length; i++) { //销售订单订单明细中的该分录行数据 var data = entryData[i]; //该分录行的物料数据 var material = data["MaterialId"] as DynamicObject; // 构建单个取价参数 var args = new GetPriceArgs { // 源单据(从销售订单)中的结算币别ID、销售组ID、销售组织ID等 SettleCurrId = settleCurrId,

二开实战:如何在移动表单中自动优先级取价

## 二开实战:如何在移动表单中自动优先级取价> 本实战根据如下二开方案中的**1.自动优先级取价**,演示如何从销售订单、基础资料客户、...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信