開發一、k3cloud內服務工單過濾在庫批號

  功能介紹:當店面前臺點擊批號時,會自動過濾掉物料在庫存中不存在的批號,彈出的批號主當列表中顯示的只是在庫的批號,如果不存在批號列表顯示空

image.png


插件代碼如下:

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 Kingdee.BOS.Orm.DataEntity;

using Kingdee.BOS.Core.SqlBuilder;

using Kingdee.BOS.Core.Metadata;

using System.ComponentModel;

using Kingdee.BOS.App.Data;

using Kingdee.BOS.ServiceHelper;

using Kingdee.BOS.Util;

using Kingdee.K3.SCM.ServiceHelper;


namespace YaTai.k3.AfterSales.GD.BusinessPlugIn.SaleWorker

{

    [Kingdee.BOS.Util.HotUpdate]

    [Description("過濾在庫批號")]

    public class InventoryLot : AbstractBillPlugIn

    {

        /// <summary>

        /// 顯示基礎資料列表之前調用

        /// 通過重載本事件,可以設置必要的過濾條件,以限定檢索範圍;

        /// </summary>

        /// <param name="e"></param>

        public override void BeforeF7Select(BeforeF7SelectEventArgs e)

        {

            switch (e.FieldKey.ToUpperInvariant())

            {

                case "F_PAEZ_LOT":

                    string forgId = "";

                   if((forgId=(this.View.Model.GetValue("F_PAEZ_OrgId") as DynamicObject)["Id"].ToString())!="")

                    {

                        //通過字段的Key[大寫]來區分不同的基礎資料

                        DynamicObjectCollection doc = GetQueryDatas(forgId,(this.View.Model.GetValue("F_PAEZ_BASE5", e.Row) as DynamicObject)["msterID"].ToString());

                        if (doc.Count > 0)

                        {

                            List<string> lot = new List<string>();

                            foreach (DynamicObject item in doc)

                            {

                                lot.Add(item["FLOT"].ToString());

                            }

                            string lots = string.Join(",", lot.ToArray());

                            e.ListFilterParameter.Filter = string.Format("FlotId in({0})", lots); //過濾的字段使用對應基礎資料的字段的Key,支持ksql語法

                        }

                        else

                        {

                            e.ListFilterParameter.Filter ="1=2";

                        }

                    }

                   else

                    {

                        this.View.ShowMessage("庫存組織是必填項!");

                    }

                   

                    break;

                case "":

                    break;

                default:

                    break;

            }

        }  

        /// <summary>

        /// queryservice取數方案,通過業務對象來獲取數據,推薦使用

        /// </summary>

        /// <returns></returns>

        public DynamicObjectCollection GetQueryDatas(string forgId,string F_PAEZ_BASE5)

        {

            QueryBuilderParemeter paramCatalog = new QueryBuilderParemeter()

            {

                FormId = "STK_Inventory",//取數的業務對象

                FilterClauseWihtKey = string.Format(" FStockOrgId={0} and FMaterialId={1} and fbaseqty>0", forgId, F_PAEZ_BASE5),//過濾條件,通過業務對象的字段Key拼裝過濾條件

                SelectItems = SelectorItemInfo.CreateItems("FLOT", "FMaterialName", "Fid"),//要篩選的字段【業務對象的字段Key】,可以多個,如果要取主鍵,使用主鍵名

            };


            DynamicObjectCollection dyDatas = Kingdee.BOS.ServiceHelper.QueryServiceHelper.GetDynamicObjectCollection(this.Context, paramCatalog);

            return dyDatas;

        }

    }



}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章