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

销售订单预收款查询功能的扩展

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

销售订单预收款查询功能的扩展

业务场景:

       有一些情况下在查询二开的收款单自定义字段,需要打开收款单才能查看,客户希望能在打开预收款查询时也能显示这些自定义的字段,并且能通过查询预收款明细双击打开对应的收款单。

        我们就先来看看系统预置的表单样式

image.webp

这里大家可以看到,在收款单明细里面是不能双击打开收款单,也不能看到我们自定义的字段的

小伙伴们,那下面跟着我一起动手操作起来吧!!!

第一步,需要打开BOS,在销售订单菜单集合和列表菜单里面分别新增按钮,这个步骤比较简单,我这里就不详细说明了。不懂的小伙伴可以在论坛里面搜一下,看看怎么新增菜单按钮的文章。

第二步,新增一个动态表单

image.webp

表单的样式可以参考系统的收款单明细列表进行增加字段,我这边分别设置了单据编号,业务日期,结算组织,预收款实收金额,订单关联预收单金额,币别,FID和收款项目(FID和收款项目这两个特别重要)

第三步,打开sql,通过查询语句构造出收款明细列表中的数据

SELECT  t1.FBILLNO,t1.FDATE,t1.FSETTLEORGID,t1.FCURRENCYID,t2.FASSTOTALAMOUNTFOR,t2.FASSTOTALAMOUNTFOR AS FASSTOTALAMOUNTFORBYTHISORDER FROM  T_AR_RECEIVEBILL t1

INNER JOIN dbo.T_AR_RECEIVEBILLENTRY t2 ON t1.FID=t2.FID

WHERE t2.FSALEORDERNO='XSDD000021' AND t2.FPURPOSEID=20011

UNION all

SELECT a2.FBILLNO,a2.FDATE,a2.FSETTLEORGID,a2.FCURRENCYID,a1.FASSAMOUNTFOR,a1.FASSAMOUNTFOR AS FASSTOTALAMOUNTFORBYTHISORDER FROM T_AR_ASSSALESORDER a1

INNER JOIN T_AR_RECEIVEBILL a2 ON a1.FENTRYID=a2.FID

INNER JOIN dbo.T_SAL_ORDER a3 ON a1.FASSBILLID=a3.FID

WHERE a3.FBILLNO='XSDD000021'

上面这段语名是和系统预置得到相同的查询,需要的小伙伴可以直接引用

第四步,打开我们的开发工具VS2015

image.webp

分别新建三个类,用于表单,列表和打开的动态表单

表单里面的代码如下

namespace Lind.BOS.SCM.Sal.Business.PlugIn

{

    [Description("销售订单表单查询预收款")]

    [Kingdee.BOS.Util.HotUpdate]

    public class SaleOrderForEdit:AbstractBillPlugIn

    {

        public override void BarItemClick(BarItemClickEventArgs e)

        {

            base.BarItemClick(e);

            if (e.BarItemKey.Equals("LindReceiveBill"))

            {

                DynamicFormShowParameter dy = new DynamicFormShowParameter();

                dy.FormId = "Lind_RecDetailList";

                var saleorderbillno = Convert.ToString(this.Model.GetValue("FBillNo"));

                dy.CustomParams.Add("FBillNo_is", saleorderbillno);

                this.View.ShowForm(dy);

             }

        }

    }

}

列表里面的代码如下

namespace Lind.BOS.SCM.Sal.Business.PlugIn

{

    [Description("销售订单列表查询预收款")]

    [Kingdee.BOS.Util.HotUpdate]

    public class SaleOrderListEdit:AbstractListPlugIn

    {

        public override void BarItemClick(BarItemClickEventArgs e)

        {

            base.BarItemClick(e);

            if(e.BarItemKey.Equals("LindReceiveBill"))

            {

                ListSelectedRowCollection selectRows = this.ListView.SelectedRowsInfo;                

                if(selectRows.Count==0)

                {

                    this.View.ShowMessage("请选择一条数据进行预收查询操作!",MessageBoxType.Error);

                }

                else if(selectRows.Count>1)

                {

                    this.View.ShowMessage("只能选择一条数据进行预收查询操作!", MessageBoxType.Error);

                }

                else

                {

                    DynamicFormShowParameter dy = new DynamicFormShowParameter();

                    dy.FormId = "Lind_RecDetailList";

                    var saleorderbillno = Convert.ToString(this.ListModel.GetData(selectRows)[0]["FBillNo"]);

                    dy.CustomParams.Add("FBillNo_is", saleorderbillno);

                    this.View.ShowForm(dy);

                }

            }

        }

    }

}

结果展示的动态表单内容如下

namespace Lind.BOS.SCM.Sal.Business.PlugIn

{

    [Description("收款单列表明细双击联查收款单实体")]

    [Kingdee.BOS.Util.HotUpdate]

    public class ReceiveBillDetailEdit : AbstractDynamicFormPlugIn

    {

        string billNo;

        public override void OnLoad(EventArgs e)

        {

            base.OnLoad(e);

            billNo = this.View.OpenParameter.GetCustomParameter("FBillNo_is").ToString();

            string sql = string.Format(@"/*dialect*/SELECT  t1.FBILLNO,t1.FDATE,t1.FSETTLEORGID,t1.FCURRENCYID,t2.FASSTOTALAMOUNTFOR,t2.FASSTOTALAMOUNTFOR AS FASSTOTALAMOUNTFORBYTHISORDER,t1.FID FROM  T_AR_RECEIVEBILL t1

                                        INNER JOIN dbo.T_AR_RECEIVEBILLENTRY t2 ON t1.FID=t2.FID

                                        WHERE t2.FSALEORDERNO='{0}' AND t2.FPURPOSEID=20011

                                        UNION ALL

                                        SELECT a2.FBILLNO,a2.FDATE,a2.FSETTLEORGID,a2.FCURRENCYID,a1.FASSAMOUNTFOR,a1.FASSAMOUNTFOR AS FASSTOTALAMOUNTFORBYTHISORDER,a1.FENTRYID AS FID FROM T_AR_ASSSALESORDER a1

                                        INNER JOIN T_AR_RECEIVEBILL a2 ON a1.FENTRYID=a2.FID

             

销售订单预收款查询功能的扩展

业务场景: 有一些情况下在查询二开的收款单自定义字段,需要打开收款单才能查看,客户希望能在打开预收款查询时也能显示这些自定义...
点击下载文档文档为doc格式

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

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