点击按钮,为明细单字段赋值,为子单据体字段赋值原创
金蝶云社区-袁袁袁袁袁袁袁
袁袁袁袁袁袁袁
10人赞赏了该文章 209次浏览 未经作者许可,禁止转载编辑于2024年06月17日 21:09:34


采购订单明细表上有个自定义字段,原计划下推到销售订单的时候,把这个字段赋值给销售订单明细的“销售数量”、“计价数量”两个字段。但是不会配置,所以在销售订单上加了个按钮,来读取采购订单的字段,读到之后按行号赋值给销售订单的“销售数量”、“计价数量”字段。

image.png



点击按钮,数字带过来了,但是保存报错。

后来发现原因是“交货明细”里的数量没更新。要想成功保存,交货明细里的每行的数量字段,也需要被更新成和明细表的销售数量、计价数量一样的值。


image.png




下面是按钮的代码,执行这段代码后,销售订单就能保存

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS;
using System.ComponentModel;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Util;
using Kingdee.BOS;
using Kingdee.BOS.App;
using Kingdee.BOS.Core;
using Kingdee.BOS.Orm.DataEntity;
using System.ComponentModel;
using Kingdee.BOS.DataEntity;
using Kingdee.BOS.Orm.Metadata.DataEntity;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Core.Metadata.EntityElement;
using System.Data;
using System.IO;
using System.Data;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Core.DynamicForm;
using System.Globalization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Kingdee.BOS;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Core.Report.PlugIn;
using Kingdee.BOS.Core.Report.PlugIn.Args;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Contracts.Report;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Orm.DataEntity;
using System.ComponentModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS;
using Kingdee.BOS.Core.Bill.PlugIn;
//添加引用后,缩写函数
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using System.ComponentModel;

using Kingdee.BOS;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.Bill.PlugIn;
using System.ComponentModel;

//数据库
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Core.DynamicForm;
using System.Data;


  [Description("销售订单按钮:点击事件(把采购订单的“应付单的计价数量”赋值给销售数量、计价数量,然后触发值更新事件)")]
    public class Class10 : AbstractBillPlugIn
    {
        //重写 ButtonClick 函数
        public override void ButtonClick(ButtonClickEventArgs e)
        {
            if (e.Key == "F_XLJR_BUTTON_QTR")
            {
                int iHeTongBianHao = Convert.ToInt32(this.View.Model.GetValue("F_PDXT_Integer_ht9"));
                int iXiangMuMingChengFID = Convert.ToInt32((this.View.Model.GetValue("F_PDXT_Base_apv") as DynamicObject)["id"]);

                // 读取单据体明细
                DynamicObject billObj = this.Model.DataObject;
                DynamicObjectCollection entityRows = billObj["SaleOrderEntry"] as DynamicObjectCollection;


                //查询采购订单行号、应付单的计价数量,当合同编号和项目名称FID等于当前单据
                string strSql = @"/*dialect*/select distinct   
                    T_PUR_POORDERENTRY.FSEQ,
                    T_PUR_POORDERENTRY.FMATERIALID,
                    T_PUR_POORDERENTRY.F_XLJR_QTY_RE5
                    from T_PUR_POORDERENTRY
                    join T_PUR_POORDER on T_PUR_POORDER.FID = T_PUR_POORDERENTRY.FID AND
                         T_PUR_POORDER.F_PDXT_INTEGER_HT9 = " + iHeTongBianHao + @" AND
                         T_PUR_POORDER.F_PDXT_BASE_XM9 = " + iXiangMuMingChengFID;
                DataTable dt = DBUtils.ExecuteDataSet(this.Context, strSql).Tables[0];


                // 更新明细单据体
                int iHang = 0;//行号
                foreach (var entityRow in entityRows)
                {
                    if (iHang < dt.Rows.Count)
                    {

                        entityRow["Qty"] = dt.Rows[iHang]["F_XLJR_QTY_RE5"].ToString();//销售数量字段赋值,绑定实体属性
                        entityRow["PriceUnitQty"] = dt.Rows[iHang]["F_XLJR_QTY_RE5"].ToString();//计价数量,绑定实体属性
                        this.View.InvokeFieldUpdateService("FTaxPrice", iHang);//含税单价,值更新,标识

                        //设置交货明细的数量字段
                        this.Model.SetEntryCurrentRowIndex("FSaleOrderEntry", iHang);//第一个参数是明细单的标识,不是明细单的实体属性。不是子单据体标识,不是子单据体实体属性。第二个参数是明细单的行号
                        this.Model.SetValue("FPlanQty", dt.Rows[iHang]["F_XLJR_QTY_RE5"].ToString());//第一个参数是子单据体的字段的标识,不是字段的实体属性。
                        iHang++;
                    }
                }


                //刷新
                this.View.UpdateView();


            }
        }
    }



下面是点击按钮后,各个字段的值就都带过来了

image.png


image.png


image.png




图标赞 10
10人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!