模糊查询时显示库存量 C#(此插件只适用没有批次管理)原创
10人赞赏了该文章
655次浏览
未经作者许可,禁止转载编辑于2022年06月24日 20:19:39
思路:
物料上增加一个文本字段,例如“即时库存”。
模糊查询参数配置设置可以查询显示 "即时库存” 。
需要的单据或者基类单据编写表单插件实现AfterQuickGetData方法,根据传入的数据获取即时库存并更新数据包。
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS.Util;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Orm.DataEntity;
namespace YZJ.YCTD.BusinessPlugIn.yzj.yctd.Sale
{
[Kingdee.BOS.Util.HotUpdate]
public class Test : AbstractDynamicFormPlugIn
{
public override void AfterQuickGetData(AfterQuickGetDataEventArgs e)
{
base.AfterQuickGetData(e);
if (e.FieldKey.EqualsIgnoreCase("FMATERIALID") && e.DataSource != null && e.DataSource.Count > 0)
{
StringBuilder sb = new StringBuilder();
foreach (var item in e.DataSource)
{
sb.Append(item[e.FieldKey].ToString());
sb.Append(',');
}
string masterIds = sb.ToString().TrimEnd(',');
string sql = @" SELECT b.FMATERIALID,UnitL.FNAME,SUM(a.FBASEQTY) FBASEQTY
FROM T_STK_INVENTORY a
INNER JOIN T_BD_MATERIAL b ON a.fmaterialid = b.fmasterid
AND a.FSTOCKORGID = b.FUSEORGID
INNER JOIN dbo.T_BD_UNIT_L UnitL ON UnitL.FUNITID=a.FBASEUNITID
WHERE b.FMATERIALID IN (" + masterIds + ") AND a.FISEFFECTIVED = '1' AND a.FBASEQTY <> 0 " +
"GROUP BY b.FMATERIALID,UnitL.FNAME";
DynamicObjectCollection datas = DBUtils.ExecuteDynamicObject(this.Context, sql);
if (datas == null || datas.Count < 0)
return;
foreach (var item in e.DataSource)
{
DynamicObject MyWhere = datas.Where(t => t["FMATERIALID"].ToString() == item["FMATERIALID"].ToString()).FirstOrDefault();
if (MyWhere == null)
continue;
string FBASEQTY = MyWhere["FBASEQTY"].ToString();
string Flot = MyWhere["FNUMBER"].ToString();
item["F_SD_InvQty"] = FBASEQTY;
}
}
}
}
}
赞 10
10人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读
您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!
请选择打赏金币数 *
10金币20金币30金币40金币50金币60金币
可用金币: 0