功能介紹:當店面前臺點擊批號時,會自動過濾掉物料在庫存中不存在的批號,彈出的批號主當列表中顯示的只是在庫的批號,如果不存在批號列表顯示空
插件代碼如下:
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;
}
}
}