金蝶云插件:列表插件单元格格式化事件FormatCellValue --- 采购申请单--列表自动刷新即时库存2024.11.15

region << 版 本 注 释 >>采购申请单--列表自动刷新即时库存

/*===================================================

  • 类名称: PUR_Requisition_ListJSKCQTY
  • 类描述:采购申请单--列表自动刷新即时库存
  • 创建人: luohong
  • 创建时间: 2024/11/15 14:59:47
  • 电子邮箱:it_luo@finecables.com
  • 修改人:
  • 修改时间:
  • 版本: @version 1.0
    =====================================================*/

endregion << 版 本 注 释 >>

using Kingdee.BOS;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DependencyRules;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.Core.List.PlugIn.Args;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.ConvertElement;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Orm;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;

namespace Lyh.Kingdee.Demo.Develop.Plugin.CGGL
{
///


/// Description: 列表插件单元格格式化事件FormatCellValue --- 采购申请单--列表自动刷新即时库存
/// 1、明细中增加即时库存的字段;
/// 2、即时库存的显示为默认列表显示
/// 3、获取当前列表的对应的物料代码;然后去匹配查询即时库存表的对应的库存信息;
/// 4、查询到有即时库存,则更新,没有则默认为0
///

[Description("241115采购申请单--列表自动刷新即时库存"), HotUpdate]
public class PUR_Requisition_ListJSKCQTY:AbstractListPlugIn
{

    //列表插件单元格格式化事件FormatCellValue 列表显示即时库存
    public override void FormatCellValue(FormatCellValueArgs args)
    {
        base.FormatCellValue(args);

        //1.首先要判断是否存在此所要显示的字段
        if (args.Header.FieldName.EqualsIgnoreCase("F_QUYL_JSKCQTY"))
        {                
            //2.获取列表中涉及到的物料内码信息
            //{[FMaterialId_Id, 105168]}
            string FMaterialId=  args.DataRow["FMaterialId_Id"].ToString();
            //3.查询即时库存的语句  ----建议使用视图来调用,方便日后相关规则的变动
            string sql = string.Format("select  FMATERIALID, sum(FBASEQTY) FKSKCQTY " +
                " from T_STK_INVENTORY  " +
                " where FMATERIALID ='{0}'" +
                " group by FMATERIALID", FMaterialId);
            //4.执行查询是否存在库存
            DynamicObjectCollection dysqls = DBUtils.ExecuteDynamicObject(this.Context, sql);
            if (dysqls.Count > 0)  //查询到有库存,则格式化数据
            {
                foreach (DynamicObject dysql in dysqls)
                {                        
                    args.FormateValue = dysql["FKSKCQTY"].ToString();
                }
            }
            else   //没有即时库存的物料,则默认修改为0
            {
                args.FormateValue ="0";
            }
        }
    }
}

}

posted on 2024-11-15 16:05  lyh1719  阅读(3)  评论(0编辑  收藏  举报

导航