1
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Xml;
|
||||
using BGP.K3.BOS.Core.Xml;
|
||||
using BGP.K3.GSP.Core.Gsp;
|
||||
using Kingdee.BOS;
|
||||
using Kingdee.BOS.App.Data;
|
||||
using Kingdee.BOS.Core.Bill.PlugIn;
|
||||
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
|
||||
using Kingdee.BOS.Orm.DataEntity;
|
||||
using Kingdee.BOS.Orm.Metadata.DataEntity;
|
||||
using Kingdee.BOS.ServiceHelper;
|
||||
using Kingdee.BOS.Util;
|
||||
|
||||
namespace GZ.BGP.K3.GSP.Business.PlugIn.BaseData
|
||||
{
|
||||
[Description("BGP供应商表单插件")]
|
||||
[HotUpdate]
|
||||
public class BGPSUPPLIEREDIT : AbstractBillPlugIn
|
||||
{
|
||||
public override void AfterButtonClick(AfterButtonClickEventArgs e)
|
||||
{
|
||||
base.AfterButtonClick(e);
|
||||
if (e.Key == "F_BGP_BUTTON")
|
||||
{
|
||||
AddEntryMasterId();
|
||||
}
|
||||
}
|
||||
|
||||
private void AddEntryMasterId()
|
||||
{
|
||||
string text = $"SELECT FID,FKERNELXML FROM T_META_OBJECTTYPE WHERE FID='{Model.BusinessInfo.GetForm().Id}'";
|
||||
DynamicObjectCollection source = DBServiceHelper.ExecuteDynamicObject(base.Context, text, (IDataEntityType)null, (IDictionary<string, Type>)null, CommandType.Text, new SqlParam[0]);
|
||||
DynamicObject dynamicObject = source.FirstOrDefault();
|
||||
if (dynamicObject != null)
|
||||
{
|
||||
string text2 = dynamicObject["FKERNELXML"].ToString();
|
||||
XmlDocument val = XmlUtility.ConvertStringToXmlDocument(text2);
|
||||
XmlElement elementsNode = XmlUtility.GetElementsNode(val);
|
||||
XmlElement appearancesNode = XmlUtility.GetAppearancesNode(val);
|
||||
((XmlNode)elementsNode).AppendChild(TextFieldNode(val, "FSupplierContact"));
|
||||
((XmlNode)appearancesNode).AppendChild(TextTextFieldAppearance(val, "FSupplierContact"));
|
||||
if (SaveMasterIdMetadata(Model.BusinessInfo.GetForm().Id, ((XmlNode)val).OuterXml))
|
||||
{
|
||||
addCloumm("BGP_t_Cust_Entry100249", "FSupplierContact");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private XmlNode TextFieldNode(XmlDocument doc, string entryKey)
|
||||
{
|
||||
string value = $"F{entryKey}".ToUpperInvariant();
|
||||
XmlNode val = (XmlNode)(object)doc.CreateElement("TextField");
|
||||
CreateAttribute(doc, val, "ElementType", "1");
|
||||
CreateAttribute(doc, val, "ElementStyle", "0");
|
||||
CreateXmlNode(doc, val, "ConditionType", "0");
|
||||
CreateXmlNode(doc, val, "PropertyName", value);
|
||||
CreateXmlNode(doc, val, "EntityKey", entryKey.ToUpperInvariant());
|
||||
CreateXmlNode(doc, val, "FieldName", value);
|
||||
CreateXmlNode(doc, val, "ListTabIndex", "100");
|
||||
CreateXmlNode(doc, val, "Name", "分录MasterId");
|
||||
CreateXmlNode(doc, val, "Id", Guid.NewGuid().ToString("N").ToLowerInvariant());
|
||||
CreateXmlNode(doc, val, "Key", value);
|
||||
return val;
|
||||
}
|
||||
|
||||
private XmlNode TextTextFieldAppearance(XmlDocument doc, string entryKey)
|
||||
{
|
||||
string value = $"F{entryKey}".ToUpperInvariant();
|
||||
XmlNode val = (XmlNode)(object)doc.CreateElement("TextFieldAppearance");
|
||||
CreateAttribute(doc, val, "ElementType", "1");
|
||||
CreateAttribute(doc, val, "ElementStyle", "1");
|
||||
CreateAttribute(doc, CreateXmlNode(doc, val, "EmptyText", ""), "action", "setnull");
|
||||
CreateXmlNode(doc, val, "Key", value);
|
||||
CreateXmlNode(doc, val, "ListDefaultWidth", "100");
|
||||
CreateXmlNode(doc, val, "EntityKey", entryKey.ToUpperInvariant());
|
||||
CreateXmlNode(doc, val, "Tabindex", "100");
|
||||
CreateXmlNode(doc, val, "LabelWidth", "100");
|
||||
CreateXmlNode(doc, val, "Width", "100");
|
||||
CreateXmlNode(doc, val, "Visible", "1023");
|
||||
CreateXmlNode(doc, val, "VisibleExt", "100");
|
||||
CreateXmlNode(doc, val, "Caption", "分录MasterId");
|
||||
CreateXmlNode(doc, val, "Id", Guid.NewGuid().ToString("N").ToLowerInvariant());
|
||||
return val;
|
||||
}
|
||||
|
||||
private XmlAttribute CreateAttribute(XmlDocument doc, XmlNode node, string attributeName, string value)
|
||||
{
|
||||
XmlAttribute val = doc.CreateAttribute(attributeName);
|
||||
((XmlNode)val).Value = value;
|
||||
((XmlNamedNodeMap)node.Attributes).SetNamedItem((XmlNode)(object)val);
|
||||
return val;
|
||||
}
|
||||
|
||||
private XmlNode CreateXmlNode(XmlDocument doc, XmlNode Pnode, string nodeName, string value)
|
||||
{
|
||||
XmlNode val = (XmlNode)(object)doc.CreateElement(nodeName);
|
||||
SetInnerText(val, value);
|
||||
Pnode.AppendChild(val);
|
||||
return val;
|
||||
}
|
||||
|
||||
private void SetInnerText(XmlNode node, string txt)
|
||||
{
|
||||
if (node != null)
|
||||
{
|
||||
node.InnerText = txt;
|
||||
}
|
||||
}
|
||||
|
||||
private bool SaveMasterIdMetadata(string fid, string xml)
|
||||
{
|
||||
string strSQL = "UPDATE T_META_OBJECTTYPE SET FKERNELXML=@FKERNELXML WHERE FID=@FID";
|
||||
DBUtils.Execute(paramList: new SqlParam[2]
|
||||
{
|
||||
new SqlParam("@FID", KDDbType.String, fid),
|
||||
new SqlParam("@FKERNELXML", KDDbType.Xml, xml)
|
||||
}, ctx: base.Context, strSQL: strSQL);
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool addCloumm(string tablename, string entryKey)
|
||||
{
|
||||
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0023: Invalid comparison between Unknown and I4
|
||||
string arg = $"F{entryKey}".ToUpperInvariant();
|
||||
string strSQL = "";
|
||||
if ((int)GspDatabaseTypeHelper.GetGspDatabaseType(base.Context) == 1)
|
||||
{
|
||||
strSQL = string.Format("/*dialect*/\r\n IF NOT EXISTS (SELECT 1 FROM syscolumns INNER JOIN sysobjects ON sysobjects.id = syscolumns.id \r\n\t\t WHERE syscolumns.name = '{1}' AND sysobjects.name = '{0}')\r\n BEGIN\r\n ALTER TABLE {0} ADD {1} VARCHAR(50) null \r\n END", tablename, arg);
|
||||
}
|
||||
|
||||
DBUtils.Execute(base.Context, strSQL);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,115 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{3371CDA1-E2EF-4E6A-99F4-D6422A42A4D5}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>GZ.BGP.K3.GSP.Business.PlugIn</RootNamespace>
|
||||
<AssemblyName>GZ.BGP.K3.GSP.Business.PlugIn</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<Deterministic>true</Deterministic>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="BGP.K3.GSP.APP.Core">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.APP.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="BGP.K3.GSP.APP.Report">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.APP.Report.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="BGP.K3.GSP.APP.ServicePlugIn">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.APP.ServicePlugIn.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="BGP.K3.GSP.APP.Temp.ServicePlugIn">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.APP.Temp.ServicePlugIn.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="BGP.K3.GSP.Business.PlugIn">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.Business.PlugIn.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="BGP.K3.GSP.BusinessEntity">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.BusinessEntity.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="BGP.K3.GSP.Contracts">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.Contracts.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="BGP.K3.GSP.Core">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="BGP.K3.GSP.Report.PlugIn">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.Report.PlugIn.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="BGP.K3.GSP.ServiceHelper">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\BGP.K3.GSP.ServiceHelper.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Kingdee.BOS">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Kingdee.BOS.App">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.App.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Kingdee.BOS.App.Core">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.App.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Kingdee.BOS.BusinessEntity">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.BusinessEntity.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Kingdee.BOS.Contracts">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Contracts.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Kingdee.BOS.Core">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Kingdee.BOS.DataEntity">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.DataEntity.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Kingdee.BOS.Model">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Model.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Kingdee.BOS.ServiceHelper">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.ServiceHelper.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Kingdee.K3.Core">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="StorageAndMaintenance\AutoMaintPlanEdit.cs" />
|
||||
<Compile Include="StorageAndMaintenance\DrugMaintPlanEdit.cs" />
|
||||
<Compile Include="StorageAndMaintenance\DrugMaintPlanEdits.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="sql\提取一般药品养护.sql" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="BaseData\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// 有关程序集的一般信息由以下
|
||||
// 控制。更改这些特性值可修改
|
||||
// 与程序集关联的信息。
|
||||
[assembly: AssemblyTitle("BGP.K3.GSP.Business.PlugIn")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("BGP.K3.GSP.Business.PlugIn")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2024")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// 将 ComVisible 设置为 false 会使此程序集中的类型
|
||||
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
|
||||
//请将此类型的 ComVisible 特性设置为 true。
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||
[assembly: Guid("3371cda1-e2ef-4e6a-99f4-d6422a42a4d5")]
|
||||
|
||||
// 程序集的版本信息由下列四个值组成:
|
||||
//
|
||||
// 主版本
|
||||
// 次版本
|
||||
// 生成号
|
||||
// 修订号
|
||||
//
|
||||
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
|
||||
//通过使用 "*",如下所示:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@@ -0,0 +1,422 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Globalization;
|
||||
using Kingdee.BOS;
|
||||
using Kingdee.BOS.Core.Bill.PlugIn;
|
||||
using Kingdee.BOS.Core.Bill.PlugIn.Args;
|
||||
using Kingdee.BOS.Core.CommonFilter;
|
||||
using Kingdee.BOS.Core.DynamicForm;
|
||||
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
|
||||
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
|
||||
using Kingdee.BOS.Core.Metadata;
|
||||
using Kingdee.BOS.Core.Metadata.BarElement;
|
||||
using Kingdee.BOS.Core.Metadata.ControlElement;
|
||||
using Kingdee.BOS.Core.Metadata.EntityElement;
|
||||
using Kingdee.BOS.Core.Permission;
|
||||
using Kingdee.BOS.Core.SqlBuilder;
|
||||
using Kingdee.BOS.JSON;
|
||||
using Kingdee.BOS.Model.ListFilter;
|
||||
using Kingdee.BOS.Orm;
|
||||
using Kingdee.BOS.Orm.DataEntity;
|
||||
using Kingdee.BOS.Serialization;
|
||||
using Kingdee.BOS.ServiceHelper;
|
||||
using Kingdee.BOS.Util;
|
||||
|
||||
namespace GZ.BGP.K3.GSP.Business.PlugIn.StorageAndMaintenance
|
||||
{
|
||||
[HotUpdate]
|
||||
[Description("【自动生成养护监控方案配置】【表单插件】")]
|
||||
public class AutoMaintPlanEdit : AbstractBillPlugIn
|
||||
{
|
||||
private FilterMetaData _filterMetaData;
|
||||
|
||||
private object _compareTypes;
|
||||
|
||||
private object _logicData;
|
||||
|
||||
private ListFilterModel _listFilterModel;
|
||||
|
||||
private Dictionary<string, FormMetadata> dctObjectMetaData = new Dictionary<string, FormMetadata>();
|
||||
|
||||
protected DataRule _dataRule = new DataRule();
|
||||
|
||||
private bool isDataRuleSuccess = true;
|
||||
|
||||
private BusinessInfo _currBusinessInfo;
|
||||
|
||||
private LayoutInfo _currLayoutInfo;
|
||||
|
||||
private SetLayoutInfoArgs _ee;
|
||||
|
||||
protected virtual bool FromXML => true;
|
||||
|
||||
public override void AfterBarItemClick(AfterBarItemClickEventArgs e)
|
||||
{
|
||||
base.AfterBarItemClick(e);
|
||||
}
|
||||
|
||||
public override void OnSetBusinessInfo(SetBusinessInfoArgs e)
|
||||
{
|
||||
base.OnSetBusinessInfo(e);
|
||||
FormMetadata formMetadata = (FormMetadata)ObjectUtils.CreateCopy(base.View.OpenParameter.FormMetaData);
|
||||
_currBusinessInfo = formMetadata.BusinessInfo;
|
||||
_currLayoutInfo = formMetadata.GetLayoutInfo();
|
||||
}
|
||||
|
||||
public override void OnSetLayoutInfo(SetLayoutInfoArgs e)
|
||||
{
|
||||
base.OnSetLayoutInfo(e);
|
||||
e.LayoutInfo = _currLayoutInfo;
|
||||
e.BillLayoutInfo = _currLayoutInfo;
|
||||
_ee = e;
|
||||
base.View.SendDynamicFormAction(base.View);
|
||||
}
|
||||
|
||||
public override void OnInitialize(InitializeEventArgs e)
|
||||
{
|
||||
base.OnInitialize(e);
|
||||
InitialFilterMetaData();
|
||||
InitialFilterGrid();
|
||||
_currLayoutInfo.GetFormAppearance().Menu.GetBarItem("tbSplitButton_1");
|
||||
_currLayoutInfo.GetFormAppearance().Menu.GetBarItem("tbButton_1");
|
||||
_currLayoutInfo.GetFormAppearance().Menu.GetBarItem("tbSplitButton_1");
|
||||
base.View.GetMainBarItem("tbNew");
|
||||
BarButtonItem barButtonItem = new BarButtonItem();
|
||||
barButtonItem.Key = "tbDdd";
|
||||
barButtonItem.Name = "tbDdd";
|
||||
barButtonItem.Description = new LocaleValue("测试");
|
||||
barButtonItem.Caption = new LocaleValue("测试");
|
||||
barButtonItem.Style = EnumBarItemStyle.BarButtonItem;
|
||||
barButtonItem.IsShowTitle = true;
|
||||
barButtonItem.Visible = -1;
|
||||
barButtonItem.Seq = 16;
|
||||
_currLayoutInfo.GetFormAppearance().Menu.AddBarItem(barButtonItem);
|
||||
_currLayoutInfo.Appearances.Add(barButtonItem);
|
||||
_currLayoutInfo.GetFormAppearance().Menu.GetAllBarItems();
|
||||
_currLayoutInfo.GetFormAppearance().Menu.GetTopLevelBarItems();
|
||||
}
|
||||
|
||||
public static DynamicObject[] GetQueryDatas(Context ctx, string formId, string filter)
|
||||
{
|
||||
FormMetadata formMetadata = MetaDataServiceHelper.Load(ctx, formId, true) as FormMetadata;
|
||||
QueryBuilderParemeter queryBuilderParemeter = new QueryBuilderParemeter();
|
||||
queryBuilderParemeter.FormId = formId;
|
||||
queryBuilderParemeter.FilterClauseWihtKey = filter;
|
||||
queryBuilderParemeter.BusinessInfo = formMetadata.BusinessInfo;
|
||||
QueryBuilderParemeter queryBuilderParemeter2 = queryBuilderParemeter;
|
||||
return BusinessDataServiceHelper.Load(ctx, formMetadata.BusinessInfo.GetDynamicObjectType(), queryBuilderParemeter2);
|
||||
}
|
||||
|
||||
public override void BeforeUpdateValue(BeforeUpdateValueEventArgs e)
|
||||
{
|
||||
string text = ((e.Value != null) ? e.Value.ToString() : "");
|
||||
if (StringUtils.EqualsIgnoreCase(e.Key, "FObjectTypeId"))
|
||||
{
|
||||
FillFilterGridData(GetFieldData(e.Value));
|
||||
}
|
||||
|
||||
if (StringUtils.EqualsIgnoreCase(e.Key, "FFilterGrid"))
|
||||
{
|
||||
AnalyzeFilterSetting(text);
|
||||
base.View.GetControl("FFilterGrid");
|
||||
_listFilterModel.FilterObject.Setting = text;
|
||||
_listFilterModel.FilterObject.GetFilterSQLString(base.Context, TimeServiceHelper.GetSystemDateTime(base.Context));
|
||||
_listFilterModel.FilterObject.GetFilterRows();
|
||||
}
|
||||
|
||||
if (StringUtils.EqualsIgnoreCase(e.Key, "FEntitySelect"))
|
||||
{
|
||||
_dataRule.SelectEntitis = text;
|
||||
}
|
||||
|
||||
base.BeforeUpdateValue(e);
|
||||
}
|
||||
|
||||
public override void AfterCreateNewData(EventArgs e)
|
||||
{
|
||||
if (base.View.ParentFormView != null)
|
||||
{
|
||||
object customParameter = base.View.ParentFormView.OpenParameter.GetCustomParameter("FObjectTypeId");
|
||||
if (customParameter != null && !StringUtils.IsEmpty(customParameter.ToString()))
|
||||
{
|
||||
base.View.Model.SetValue("FObjectTypeId", customParameter);
|
||||
}
|
||||
}
|
||||
|
||||
base.AfterCreateNewData(e);
|
||||
}
|
||||
|
||||
public override void AfterBindData(EventArgs e)
|
||||
{
|
||||
object pKValue = base.View.Model.GetPKValue();
|
||||
_dataRule = new DataRule
|
||||
{
|
||||
Id = ((pKValue == null) ? "" : pKValue.ToString()),
|
||||
DataRuleTable = base.View.Model.BusinessInfo.GetEntity(0).TableName
|
||||
};
|
||||
_dataRule = PermissionServiceHelper.GetDataRule(base.Context, _dataRule);
|
||||
if (FromXML && !StringUtils.IsEmpty(_dataRule.CustomFilterSetting))
|
||||
{
|
||||
base.View.Model.DataObject = DeserializeCustomFilter(_dataRule.CustomFilterSetting);
|
||||
}
|
||||
|
||||
if (base.View.Model.DataObject["FObjectTypeId_Id"] != null)
|
||||
{
|
||||
FillFilterGridData(base.View.Model.DataObject["FObjectTypeId_Id"].ToString());
|
||||
}
|
||||
|
||||
if (base.View.Model.GetValue("FObjectTypeId") == null || string.IsNullOrWhiteSpace(base.View.Model.GetValue("FObjectTypeId").ToString()))
|
||||
{
|
||||
base.View.GetControl("FFilterGrid").Enabled = false;
|
||||
}
|
||||
|
||||
base.AfterBindData(e);
|
||||
}
|
||||
|
||||
private void InitialFilterMetaData()
|
||||
{
|
||||
if (_filterMetaData == null)
|
||||
{
|
||||
_filterMetaData = CommonFilterServiceHelper.GetFilterMetaData(base.Context, "");
|
||||
JSONObject jSONObject = _filterMetaData.ToJSONObject();
|
||||
jSONObject.TryGetValue(CommonFilterConst.JSONKey_CompareTypes, out _compareTypes);
|
||||
jSONObject.TryGetValue(CommonFilterConst.JSONKey_Logics, out _logicData);
|
||||
}
|
||||
}
|
||||
|
||||
private void InitialFilterGrid()
|
||||
{
|
||||
FilterGrid control = base.View.GetControl<FilterGrid>(CommonFilterConst.ControlKey_FilterGrid);
|
||||
control.SetCompareTypes(_compareTypes);
|
||||
control.SetLogicData(_logicData);
|
||||
}
|
||||
|
||||
private void InitialFilterGrid(ListFilterModel listFilterModel)
|
||||
{
|
||||
FilterGrid control = base.View.GetControl<FilterGrid>(CommonFilterConst.ControlKey_FilterGrid);
|
||||
JSONArray filterFields = GetFilterFields(listFilterModel);
|
||||
control.SetFilterFields(filterFields);
|
||||
if (StringUtils.IsEmpty(_dataRule.SelectEntitis))
|
||||
{
|
||||
_dataRule.SelectEntitis = listFilterModel.EntityObject.Setting;
|
||||
}
|
||||
|
||||
_listFilterModel.FilterObject.SetSelectEntity(_dataRule.SelectEntitis);
|
||||
control.SetSelectEntities(_dataRule.SelectEntitis);
|
||||
if (!StringUtils.IsEmpty(_dataRule.FilterSetting))
|
||||
{
|
||||
_listFilterModel.FilterObject.Setting = _dataRule.FilterSetting;
|
||||
control.SetFilterRows(_listFilterModel.FilterObject.GetFilterRows());
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual JSONArray GetFilterFields(ListFilterModel listFilterModel)
|
||||
{
|
||||
JSONArray jSONArray = new JSONArray();
|
||||
foreach (Entity entry in listFilterModel.BillBusinessInfo.Entrys)
|
||||
{
|
||||
if (entry is HeadEntity || entry is SubHeadEntity)
|
||||
{
|
||||
jSONArray.AddRange(listFilterModel.FilterObject.GetFilterFieldListByEntityKey(entry.Key));
|
||||
}
|
||||
}
|
||||
|
||||
return jSONArray;
|
||||
}
|
||||
|
||||
private void FillFilterGridData(string formid)
|
||||
{
|
||||
if (!StringUtils.IsEmpty(formid))
|
||||
{
|
||||
_listFilterModel = CreateListFilterModel(formid);
|
||||
base.View.GetControl<FilterGrid>(CommonFilterConst.ControlKey_FilterGrid);
|
||||
InitialFilterGrid(_listFilterModel);
|
||||
InitialEntitySelect(_listFilterModel);
|
||||
base.View.GetControl("FFilterGrid").Enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
protected string GetFieldData(object value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
if (value is DynamicObject)
|
||||
{
|
||||
return ((DynamicObject)value)["Id"].ToString();
|
||||
}
|
||||
|
||||
return value.ToString();
|
||||
}
|
||||
|
||||
private ListFilterModel CreateListFilterModel(string formid)
|
||||
{
|
||||
ListFilterModel listFilterModel = new ListFilterModel();
|
||||
FormMetadata bizObjectMetaData = GetBizObjectMetaData(formid);
|
||||
listFilterModel.FilterObject.FilterMetaData = _filterMetaData;
|
||||
listFilterModel.SetContext(base.Context, bizObjectMetaData.BusinessInfo, bizObjectMetaData.BusinessInfo.GetForm().GetFormServiceProvider());
|
||||
listFilterModel.InitFieldList(bizObjectMetaData, null);
|
||||
return listFilterModel;
|
||||
}
|
||||
|
||||
public override void BeforeFilterGridF7Select(BeforeFilterGridF7SelectEventArgs e)
|
||||
{
|
||||
base.BeforeFilterGridF7Select(e);
|
||||
e.CommonFilterModel = _listFilterModel;
|
||||
}
|
||||
|
||||
private void InitialEntitySelect(ListFilterModel listFilterModel)
|
||||
{
|
||||
EntitySelect control = base.View.GetControl<EntitySelect>(CommonFilterConst.ControlKey_EntitySelect);
|
||||
JSONArray allEntities = listFilterModel.EntityObject.GetAllEntities();
|
||||
InitEntitisSetting(listFilterModel, control, allEntities);
|
||||
JSONArray jSONArray = new JSONArray();
|
||||
jSONArray.Add("FFilterGrid");
|
||||
control.SetListeners(jSONArray);
|
||||
}
|
||||
|
||||
protected virtual void InitEntitisSetting(ListFilterModel listFilterModel, EntitySelect entityselect, JSONArray entities)
|
||||
{
|
||||
string headEntitiesKey = GetHeadEntitiesKey(listFilterModel);
|
||||
JSONArray jSONArray = new JSONArray();
|
||||
foreach (object entity in entities)
|
||||
{
|
||||
if (headEntitiesKey.Contains(((JSONObject)entity)["Key"].ToString()))
|
||||
{
|
||||
jSONArray.Add(entity);
|
||||
}
|
||||
}
|
||||
|
||||
entityselect.SetEntities(jSONArray);
|
||||
if (!StringUtils.IsEmpty(_dataRule.SelectEntitis))
|
||||
{
|
||||
listFilterModel.EntityObject.Setting = _dataRule.SelectEntitis;
|
||||
}
|
||||
|
||||
entityselect.SetSelectEntities(listFilterModel.EntityObject.Setting);
|
||||
}
|
||||
|
||||
private string GetHeadEntitiesKey(ListFilterModel listFilterModel)
|
||||
{
|
||||
string text = ",";
|
||||
foreach (Entity entry in listFilterModel.BillBusinessInfo.Entrys)
|
||||
{
|
||||
if (entry is HeadEntity || entry is SubHeadEntity)
|
||||
{
|
||||
text = text + entry.Key.ToUpper() + ",";
|
||||
}
|
||||
}
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
private void AnalyzeFilterSetting(string strFilterSetting)
|
||||
{
|
||||
isDataRuleSuccess = true;
|
||||
if (StringUtils.IsEmpty(strFilterSetting))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_dataRule.FilterSetting = strFilterSetting;
|
||||
if (_listFilterModel == null || _listFilterModel.FilterObject.AllFilterFieldList == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
string selectEntitis = _dataRule.SelectEntitis;
|
||||
if (!StringUtils.IsEmpty(selectEntitis))
|
||||
{
|
||||
_listFilterModel.FilterObject.SetSelectEntity(selectEntitis);
|
||||
}
|
||||
|
||||
_listFilterModel.FilterObject.Setting = strFilterSetting;
|
||||
try
|
||||
{
|
||||
string filterSQLString = _listFilterModel.FilterObject.GetFilterSQLString(base.Context, TimeServiceHelper.GetSystemDateTime(base.Context));
|
||||
_dataRule.FilterString = filterSQLString;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
base.View.ShowErrMessage(ex.Message);
|
||||
isDataRuleSuccess = false;
|
||||
}
|
||||
}
|
||||
|
||||
protected FormMetadata GetBizObjectMetaData(string strObjectTypeId)
|
||||
{
|
||||
if (dctObjectMetaData.ContainsKey(strObjectTypeId))
|
||||
{
|
||||
return dctObjectMetaData[strObjectTypeId];
|
||||
}
|
||||
|
||||
FormMetadata cachedFormMetaData = FormMetaDataCache.GetCachedFormMetaData(base.Context, strObjectTypeId);
|
||||
dctObjectMetaData[strObjectTypeId] = cachedFormMetaData;
|
||||
return cachedFormMetaData;
|
||||
}
|
||||
|
||||
public override void BeforeSave(BeforeSaveEventArgs e)
|
||||
{
|
||||
e.Cancel = !isDataRuleSuccess;
|
||||
base.BeforeSave(e);
|
||||
}
|
||||
|
||||
public override void AfterSave(AfterSaveEventArgs e)
|
||||
{
|
||||
_dataRule.CustomFilterSetting = SerializeCustomFilter();
|
||||
_dataRule.Id = base.View.Model.GetPKValue().ToString();
|
||||
_dataRule.DataRuleTable = base.View.Model.BusinessInfo.GetEntity(0).TableName;
|
||||
PermissionInnerServiceHelper.SaveDataRule(base.Context, _dataRule);
|
||||
base.AfterSave(e);
|
||||
}
|
||||
|
||||
private string GetString(object obj)
|
||||
{
|
||||
if (obj == null)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
return obj.ToString();
|
||||
}
|
||||
|
||||
private string SerializeCustomFilter()
|
||||
{
|
||||
base.View.GetControl("FFilterGrid");
|
||||
DcxmlBinder dcxmlBinder = new DynamicObjectDcxmlBinder(base.View.Model.BusinessInfo);
|
||||
dcxmlBinder.OnlyDbProperty = false;
|
||||
DcxmlSerializer dcxmlSerializer = new DcxmlSerializer(dcxmlBinder);
|
||||
CultureInfo culture = new CultureInfo(2052);
|
||||
dcxmlBinder.Culture = culture;
|
||||
string text = dcxmlSerializer.SerializeToString(base.View.Model.DataObject, null);
|
||||
if (!StringUtils.IsEmpty(text))
|
||||
{
|
||||
return text;
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
private DynamicObject DeserializeCustomFilter(string xml)
|
||||
{
|
||||
DcxmlBinder dcxmlBinder = new DynamicObjectDcxmlBinder(base.View.Model.BusinessInfo);
|
||||
dcxmlBinder.OnlyDbProperty = false;
|
||||
DcxmlSerializer dcxmlSerializer = new DcxmlSerializer(dcxmlBinder);
|
||||
CultureInfo culture = new CultureInfo(2052);
|
||||
dcxmlBinder.Culture = culture;
|
||||
DynamicObject dynamicObject = (DynamicObject)dcxmlSerializer.DeserializeFromString(xml);
|
||||
OrmUtils.DataEntityWalker(new DynamicObject[1] { dynamicObject }, dynamicObject.DynamicObjectType, delegate (DataEntityWalkerEventArgs e)
|
||||
{
|
||||
foreach (object dataEntity in e.DataEntities)
|
||||
{
|
||||
((DynamicObject)dataEntity).GetDataEntityType().SetFromDatabase(dataEntity);
|
||||
}
|
||||
});
|
||||
dynamicObject.GetDataEntityType().SetPkSnapshot(dynamicObject, base.View.Model.DataObject.GetDataEntityType().GetPkSnapshot(base.View.Model.DataObject));
|
||||
return dynamicObject;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using BGP.K3.GSP.Business.PlugIn.Template;
|
||||
using BGP.K3.GSP.Core.Gsp;
|
||||
using Kingdee.BOS;
|
||||
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
|
||||
using Kingdee.BOS.Core.Metadata.EntityElement;
|
||||
using Kingdee.BOS.Orm.DataEntity;
|
||||
using Kingdee.BOS.Orm.Metadata.DataEntity;
|
||||
using Kingdee.BOS.ServiceHelper;
|
||||
|
||||
namespace GZ.BGP.K3.GSP.Business.PlugIn.StorageAndMaintenance
|
||||
{
|
||||
[Description("药品养护计划表单插件")]
|
||||
public class DrugMaintPlanEdit : AbstractGspBillPlugIn
|
||||
{
|
||||
public override DynamicObject RequestOrg => Model.GetValue("F_BGP_OrgId") as DynamicObject;
|
||||
|
||||
public override string DeptFieldKey => "F_BGP_Department";
|
||||
|
||||
public override string EmpFieldKey => "F_BGP_Staff";
|
||||
|
||||
public override void BarItemClick(BarItemClickEventArgs e)
|
||||
{
|
||||
string barItemKey = e.BarItemKey;
|
||||
DynamicObject dataObject = Model.DataObject;
|
||||
if (barItemKey == "tbButtonComDraw" && dataObject["F_BGP_OrgId"] is DynamicObject dynamicObject)
|
||||
{
|
||||
DynamicObjectCollection dynamicObjectCollection = ReceivableDetail1(base.Context, dynamicObject[0]);
|
||||
Entity entity = base.View.BusinessInfo.GetEntity("FEntity");
|
||||
base.View.Model.GetEntityDataObject(entity);
|
||||
int entryRowCount = Model.GetEntryRowCount(entity.Key);
|
||||
for (int num = entryRowCount - 1; num > -1; num--)
|
||||
{
|
||||
base.View.Model.DeleteEntryRow("FEntity", num);
|
||||
}
|
||||
|
||||
int count = dynamicObjectCollection.Count;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
base.View.Model.CreateNewEntryRow("FEntity");
|
||||
base.View.Model.SetValue("F_BGP_MaterialNo", dynamicObjectCollection[i]["FMaterialId"], i);
|
||||
base.View.InvokeFieldUpdateService("FMaterialId", i);
|
||||
base.View.Model.SetValue("F_BGP_Warehouse", dynamicObjectCollection[i]["FSTOCKID"], i);
|
||||
base.View.Model.SetValue("F_BGP_Inventory", dynamicObjectCollection[i]["FBaseQty"], i);
|
||||
base.View.Model.SetValue("F_BGP_BatchNo", dynamicObjectCollection[i]["FLot"], i);
|
||||
base.View.Model.SetValue("F_BGP_Positions", dynamicObjectCollection[i]["FStockLocId"], i);
|
||||
base.View.Model.SetValue("F_BGP_OverTime", dynamicObjectCollection[i]["overday"], i);
|
||||
base.View.Model.SetValue("F_BGP_ShouldMainteDate", dynamicObjectCollection[i]["F_BGP_ShouldMainteDate"], i);
|
||||
base.View.Model.SetValue("F_BGP_MeasuringUnit", dynamicObjectCollection[i]["FStockUnitId"], i);
|
||||
base.View.Model.SetValue("F_BGP_UNITID", dynamicObjectCollection[i]["FBaseUnitId"], i);
|
||||
base.View.Model.SetValue("F_BGP_MAINTEPLANDATE", dynamicObjectCollection[i]["F_BGP_MAINTEPLANDATE"], i);
|
||||
base.View.Model.SetValue("F_BGP_MAINTECN", dynamicObjectCollection[i]["FBaseQty"], i);
|
||||
base.View.Model.SetValue("F_BGP_ProductDate", dynamicObjectCollection[i]["FPRODUCEDATE"], i);
|
||||
base.View.Model.SetValue("F_BGP_EffDate", dynamicObjectCollection[i]["FEXPIRYDATE"], i);
|
||||
base.View.Model.SetValue("F_BGP_BaseQty", dynamicObjectCollection[i]["FBaseQty"], i);
|
||||
base.View.Model.SetValue("F_BGP_InventoryState", dynamicObjectCollection[i]["FStockStatusId"], i);
|
||||
base.View.Model.SetValue("F_BGP_OwnerTypeId", dynamicObjectCollection[i]["FOwnerTypeId"], i);
|
||||
base.View.Model.SetValue("F_BGP_OwnerId", dynamicObjectCollection[i]["FOwnerId"], i);
|
||||
base.View.Model.SetValue("F_BGP_KeeperTypeId", dynamicObjectCollection[i]["FKeeperTypeId"], i);
|
||||
base.View.Model.SetValue("F_BGP_KeeperId", dynamicObjectCollection[i]["FKeeperId"], i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static DynamicObjectCollection ReceivableDetail1(Context cxt, object fOrg)
|
||||
{
|
||||
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
|
||||
StringBuilder stringBuilder = new StringBuilder("/*dialect*/ ");
|
||||
string gspDatabasetext = GspDatabaseTypeHelper.GetGspDatabasetext(cxt, "FORG");
|
||||
SqlParam[] array = new SqlParam[1]
|
||||
{
|
||||
new SqlParam(gspDatabasetext, KDDbType.String, fOrg)
|
||||
};
|
||||
if ((int)GspDatabaseTypeHelper.GetGspDatabaseType(cxt) == 0)
|
||||
{
|
||||
stringBuilder.AppendFormat(" SELECT i.FSTOCKID, i.FMaterialId, FLot, FStockUnitId, FBaseUnitId, FQty,FBaseQty, FStockStatusId, FStockLocId ,DATEDIFF(day,Maintdate ,getdate())-90 overday,dateadd(day,90.7,Maintdate) as F_BGP_ShouldMainteDate,isnull(l.FPRODUCEDATE,i.FPRODUCEDATE)FPRODUCEDATE, isnull(l.FEXPIRYDATE,i.FEXPIRYDATE)FEXPIRYDATE,getdate() F_BGP_MAINTEPLANDATE \r\n ,FOwnerTypeId ,FOwnerId ,FKeeperTypeId,FKeeperId,FStockStatusId\r\nFROM T_STK_INVENTORY i, T_BD_MATERIAL m,T_BGP_MaintainType mt,\r\n(select isnull(F_BGP_MaintDate,FInStockDate) Maintdate, FLOTID,FPRODUCEDATE,FEXPIRYDATE from T_BD_LOTMASTER) l\r\nWHERE i.FMaterialId = m.FMaterialId \r\nand F_BGP_MaintainClass=mt.FID\r\nand F_BGP_DAY=90\r\nand l.FLOTID=i.FLot\r\nand DATEDIFF(day,Maintdate ,getdate())>90 and i.FSTOCKORGID={0} and FBaseQty>0\r\nand m.FDOCUMENTSTATUS='C' and FStockStatusId=10000\r\n order by F_BGP_DosageForm,FSTOCKID,FMaterialId ", gspDatabasetext);
|
||||
}
|
||||
else
|
||||
{
|
||||
stringBuilder.AppendFormat(" SELECT i.FSTOCKID, i.FMaterialId, FLot, FStockUnitId, FBaseUnitId, FQty,FBaseQty, FStockStatusId, FStockLocId ,\r\n ROUND(TO_NUMBER(Maintdate-sysdate))-90 overday,\r\n /*dateadd(day,90.7,Maintdate)*/\r\n Maintdate+90.7 as F_BGP_ShouldMainteDate,\r\n NVL(l.FPRODUCEDATE,i.FPRODUCEDATE)FPRODUCEDATE, NVL(l.FEXPIRYDATE,i.FEXPIRYDATE)FEXPIRYDATE,\r\n sysdate F_BGP_MAINTEPLANDATE \r\n ,FOwnerTypeId ,FOwnerId ,FKeeperTypeId,FKeeperId,FStockStatusId\r\nFROM T_STK_INVENTORY i, T_BD_MATERIAL m,T_BGP_MaintainType mt,\r\n(select NVL(F_BGP_MaintDate,FInStockDate) Maintdate, FLOTID,FPRODUCEDATE,FEXPIRYDATE from T_BD_LOTMASTER) l\r\nWHERE i.FMaterialId = m.FMaterialId \r\nand F_BGP_MaintainClass=mt.FID\r\nand F_BGP_DAY=90\r\nand l.FLOTID=i.FLot\r\nand ROUND(TO_NUMBER(Maintdate-sysdate)) >90 \r\nand i.FSTOCKORGID={0} and FBaseQty>0\r\nand m.FDOCUMENTSTATUS='C' and FStockStatusId=10000\r\n order by F_BGP_DosageForm,FSTOCKID,FMaterialId", gspDatabasetext);
|
||||
}
|
||||
|
||||
return DBServiceHelper.ExecuteDynamicObject(cxt, stringBuilder.ToString(), (IDataEntityType)null, (IDictionary<string, Type>)null, CommandType.Text, array);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,267 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using BGP.K3.GSP.Business.PlugIn.Template;
|
||||
using BGP.K3.GSP.Contracts;
|
||||
using BGP.K3.GSP.Core.Text;
|
||||
using Kingdee.BOS;
|
||||
using Kingdee.BOS.Core.DynamicForm;
|
||||
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
|
||||
using Kingdee.BOS.Core.Metadata.EntityElement;
|
||||
using Kingdee.BOS.Orm.DataEntity;
|
||||
using Kingdee.BOS.ServiceHelper;
|
||||
using Kingdee.K3.Core.BD;
|
||||
|
||||
namespace GZ.BGP.K3.GSP.Business.PlugIn.StorageAndMaintenance
|
||||
{
|
||||
[Description("GSP药品养护计划表单插件")]
|
||||
public class DrugMaintPlanEdits : AbstractGspBillPlugIn
|
||||
{
|
||||
public override string FEntityKey => "FENTITY";
|
||||
|
||||
public override string FEntityorm => "T_BGP_MAINTEPLANB";
|
||||
|
||||
public override string Materialidorm => "F_BGP_MATERIALNO";
|
||||
|
||||
public override string MaterialidKey => "F_BGP_MATERIALNO";
|
||||
|
||||
public override string LOTorm => "F_BGP_BATCHNO";
|
||||
|
||||
public override string LOTKey => "F_BGP_BATCHNO";
|
||||
|
||||
public override string ProduceDateorm => "F_BGP_PRODUCTDATE";
|
||||
|
||||
public override string ApprovalNoMKey => "F_BGP_APPROVALNOM";
|
||||
|
||||
public override string ApprovalNoKey => "F_BGP_APPROVALNOALL";
|
||||
|
||||
public override bool ISadd => false;
|
||||
|
||||
public override bool ISback => true;
|
||||
|
||||
public override DynamicObject RequestOrg => Model.GetValue("F_BGP_OrgId") as DynamicObject;
|
||||
|
||||
public override string DeptFieldKey => "F_BGP_Department";
|
||||
|
||||
public override string EmpFieldKey => "F_BGP_Staff";
|
||||
|
||||
public override void BarItemClick(BarItemClickEventArgs e)
|
||||
{
|
||||
_ = e.BarItemKey;
|
||||
DynamicObject dataObject = Model.DataObject;
|
||||
string barItemKey;
|
||||
if ((barItemKey = e.BarItemKey) == null || !(barItemKey == "tbButtonComDraw"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
DynamicObject dynamicObject = dataObject["F_BGP_OrgId"] as DynamicObject;
|
||||
string leadtime = Model.GetValue("F_BGP_LeadTime").ToString();
|
||||
if (dynamicObject == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
DynamicObjectCollection dynamicObjectCollection = ReceivableDetail1(base.Context, dynamicObject[0], leadtime);
|
||||
Entity entity = base.View.BusinessInfo.GetEntity("FEntity");
|
||||
base.View.Model.GetEntityDataObject(entity);
|
||||
for (int num = Model.GetEntryRowCount(entity.Key) - 1; num > -1; num--)
|
||||
{
|
||||
base.View.Model.DeleteEntryRow("FEntity", num);
|
||||
}
|
||||
|
||||
int count = dynamicObjectCollection.Count;
|
||||
if (count < 1)
|
||||
{
|
||||
base.View.ShowNotificationMessage("无可提取数据!");
|
||||
}
|
||||
else
|
||||
{
|
||||
List<string> list = new List<string>();
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
if (!list.Contains(dynamicObjectCollection[i]["F_BGP_INVENTORYID"].ToString()))
|
||||
{
|
||||
list.Add(dynamicObjectCollection[i]["F_BGP_INVENTORYID"].ToString());
|
||||
base.View.Model.CreateNewEntryRow("FEntity");
|
||||
base.View.Model.SetValue("F_BGP_MaterialNo", dynamicObjectCollection[i]["FMaterialId"], i);
|
||||
base.View.InvokeFieldUpdateService("FMaterialId", i);
|
||||
base.View.Model.SetValue("F_BGP_Warehouse", dynamicObjectCollection[i]["FSTOCKID"], i);
|
||||
base.View.Model.SetValue("F_BGP_Inventory", dynamicObjectCollection[i]["FBaseQty"], i);
|
||||
base.View.Model.SetValue("F_BGP_BatchNo", dynamicObjectCollection[i]["FLot"], i);
|
||||
base.View.Model.SetValue("F_BGP_Positions", dynamicObjectCollection[i]["FStockLocId"], i);
|
||||
base.View.Model.SetValue("F_BGP_OverTime", dynamicObjectCollection[i]["overday"], i);
|
||||
if (ConvertExtensionMethods.Pstring(dynamicObjectCollection[i]["F_BGP_ShouldMainteDate"]) != "0001-01-01 00:00:00")
|
||||
{
|
||||
base.View.Model.SetValue("F_BGP_ShouldMainteDate", dynamicObjectCollection[i]["F_BGP_ShouldMainteDate"], i);
|
||||
}
|
||||
|
||||
base.View.Model.SetValue("F_BGP_MeasuringUnit", dynamicObjectCollection[i]["FStockUnitId"], i);
|
||||
base.View.Model.SetValue("F_BGP_UNITID", dynamicObjectCollection[i]["FBaseUnitId"], i);
|
||||
if (ConvertExtensionMethods.Pstring(dynamicObjectCollection[i]["F_BGP_MAINTEPLANDATE"]) != "0001-01-01 00:00:00")
|
||||
{
|
||||
base.View.Model.SetValue("F_BGP_MAINTEPLANDATE", dynamicObjectCollection[i]["F_BGP_MAINTEPLANDATE"], i);
|
||||
}
|
||||
|
||||
base.View.Model.SetValue("F_BGP_MAINTECN", dynamicObjectCollection[i]["FBaseQty"], i);
|
||||
if (ConvertExtensionMethods.Pstring(dynamicObjectCollection[i]["FPRODUCEDATE"]) != "0001-01-01 00:00:00")
|
||||
{
|
||||
base.View.Model.SetValue("F_BGP_ProductDate", dynamicObjectCollection[i]["FPRODUCEDATE"], i);
|
||||
}
|
||||
|
||||
if (ConvertExtensionMethods.Pstring(dynamicObjectCollection[i]["FEXPIRYDATE"]) != "0001-01-01 00:00:00")
|
||||
{
|
||||
base.View.Model.SetValue("F_BGP_EffDate", dynamicObjectCollection[i]["FEXPIRYDATE"], i);
|
||||
}
|
||||
|
||||
base.View.Model.SetValue("F_BGP_BaseQty", dynamicObjectCollection[i]["FBaseQty"], i);
|
||||
base.View.Model.SetValue("F_BGP_InventoryState", dynamicObjectCollection[i]["FStockStatusId"], i);
|
||||
base.View.Model.SetValue("F_BGP_OwnerTypeId", dynamicObjectCollection[i]["FOwnerTypeId"], i);
|
||||
base.View.Model.SetValue("F_BGP_OwnerId", dynamicObjectCollection[i]["FOwnerId"], i);
|
||||
base.View.Model.SetValue("F_BGP_KeeperTypeId", dynamicObjectCollection[i]["FKeeperTypeId"], i);
|
||||
base.View.Model.SetValue("F_BGP_KeeperId", dynamicObjectCollection[i]["FKeeperId"], i);
|
||||
base.View.Model.SetValue("F_BGP_AuxPropId", dynamicObjectCollection[i]["FAuxPropId"], i);
|
||||
base.View.Model.SetValue("F_BGP_SecUnitId", dynamicObjectCollection[i]["FSecUnitId"], i);
|
||||
base.View.Model.SetValue("F_BGP_SecQty", dynamicObjectCollection[i]["FSecQty"], i);
|
||||
base.View.Model.SetValue("F_BGP_MaintDate", dynamicObjectCollection[i]["Maintdate"], i);
|
||||
base.View.Model.SetValue("F_BGP_INVENTORYID", dynamicObjectCollection[i]["F_BGP_INVENTORYID"], i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
base.View.UpdateView("F_BGP_MaterialNo");
|
||||
base.View.UpdateView("FEntity");
|
||||
}
|
||||
|
||||
public override void EntryBarItemClick(BarItemClickEventArgs e)
|
||||
{
|
||||
string text;
|
||||
if ((text = e.BarItemKey.ToUpper()) != null && text == "TBLOTCR_BGP")
|
||||
{
|
||||
UpdateMaintDt();
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateMaintDt()
|
||||
{
|
||||
if (!(Model.DataObject["F_BGP_OrgId"] is DynamicObject dynamicObject))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
SqlParam[] array = new SqlParam[1]
|
||||
{
|
||||
new SqlParam("@FORG", KDDbType.String, dynamicObject[0])
|
||||
};
|
||||
stringBuilder.Append($" SELECT *from T_STK_INVENTORY where FSTOCKORGID=@FORG ");
|
||||
DynamicObjectCollection source = DBServiceHelper.ExecuteDynamicObject(base.Context, stringBuilder.ToString(), null, null, CommandType.Text, array);
|
||||
Entity entity = base.View.BusinessInfo.GetEntity("FEntity");
|
||||
DynamicObjectCollection subEntityRows = base.View.Model.GetEntityDataObject(entity);
|
||||
Model.GetEntryRowCount(entity.Key);
|
||||
List<DynamicObject> lidy = new List<DynamicObject>();
|
||||
List<int> liin = new List<int>();
|
||||
int num = 0;
|
||||
int num2 = 0;
|
||||
foreach (DynamicObject item in subEntityRows)
|
||||
{
|
||||
DynamicObject dynamicObject2 = source.Where((DynamicObject p) => p["fid"].ToString() == ConvertExtensionMethods.Pstring(item["F_BGP_INVENTORYID"])).FirstOrDefault();
|
||||
if (dynamicObject2 != null && ConvertExtensionMethods.Pdecimal(dynamicObject2["FBASEQTY"]) < ConvertExtensionMethods.Pdecimal(item["F_BGP_BaseQty"]) - ConvertExtensionMethods.Pdecimal(item["F_BGP_BaseMaintQty"]))
|
||||
{
|
||||
lidy.Add(dynamicObject2);
|
||||
liin.Add(num2);
|
||||
num++;
|
||||
}
|
||||
|
||||
num2++;
|
||||
}
|
||||
|
||||
if (num > 0)
|
||||
{
|
||||
base.View.ShowMessage("检验结果有" + num + "笔的库存数量已经小于是否需要自动校正数量,并留存变更记录,且自动下推(【是】=执行/【否】=取消)", MessageBoxOptions.YesNo, delegate (MessageBoxResult result)
|
||||
{
|
||||
if (result == MessageBoxResult.Yes)
|
||||
{
|
||||
UpdateDt(liin, subEntityRows, lidy);
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
base.View.ShowMessage("检验结果库存数量数据正常,无需调整");
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateDt(List<int> liseq, DynamicObjectCollection subEntityRows, List<DynamicObject> lidy)
|
||||
{
|
||||
int num = Model.GetEntryRowCount("F_BGP_FChangeRecord");
|
||||
IMaintInventoryService maintInventoryService = GspServiceFactory.GetMaintInventoryService(base.Context);
|
||||
Dictionary<string, UnitConvert> dictionary = new Dictionary<string, UnitConvert>();
|
||||
foreach (int item in liseq)
|
||||
{
|
||||
base.View.Model.CreateNewEntryRow("F_BGP_FChangeRecord");
|
||||
DynamicObject dynamicObject = lidy.Where((DynamicObject p) => p["fid"].ToString() == subEntityRows[item]["F_BGP_INVENTORYID"].ToString()).FirstOrDefault();
|
||||
base.View.Model.SetValue("F_BGP_MaterialNoCR", subEntityRows[item]["F_BGP_MaterialNo"], num);
|
||||
base.View.Model.SetValue("F_BGP_UnitIDCR", subEntityRows[item]["F_BGP_MeasuringUnit"], num);
|
||||
base.View.Model.SetValue("F_BGP_MainteCnOLD", subEntityRows[item]["F_BGP_MainteCn"], num);
|
||||
base.View.Model.SetValue("F_BGP_InventoryOld", subEntityRows[item]["F_BGP_Inventory"], num);
|
||||
base.View.Model.SetValue("F_BGP_UnitICR", subEntityRows[item]["F_BGP_UnitID"], num);
|
||||
base.View.Model.SetValue("F_BGP_BaseQtyOld", subEntityRows[item]["F_BGP_BaseQty"], num);
|
||||
base.View.Model.SetValue("F_BGP_DateCR", DateTime.Now, num);
|
||||
base.View.Model.SetValue("F_BGP_INVENTORYIDCR", subEntityRows[item]["F_BGP_INVENTORYID"], num);
|
||||
decimal num2 = ConvertExtensionMethods.Pdecimal(dynamicObject["FBaseQty"]);
|
||||
decimal num3 = ConvertExtensionMethods.Pdecimal(subEntityRows[item]["F_BGP_BaseMaintQty"]);
|
||||
decimal num4 = num2 + num3;
|
||||
decimal num5 = maintInventoryService.ExchangeUnitQty(base.Context, ConvertExtensionMethods.Pint64(subEntityRows[item]["F_BGP_MaterialNo_id"]), ConvertExtensionMethods.Pint64(subEntityRows[item]["F_BGP_MaterialNo_id"]), ConvertExtensionMethods.Pint64(subEntityRows[item]["F_BGP_UnitID_id"]), ConvertExtensionMethods.Pint64(subEntityRows[item]["F_BGP_MeasuringUnit_id"]), num4, ref dictionary);
|
||||
base.View.Model.SetValue("F_BGP_BaseQtyNew", num4, num);
|
||||
base.View.Model.SetValue("F_BGP_InventoryNew", num4, num);
|
||||
base.View.Model.SetValue("F_BGP_MainteCnNew", num5, num);
|
||||
base.View.Model.SetValue("F_BGP_MainteCn", num5, item);
|
||||
base.View.Model.SetValue("F_BGP_Inventory", num4, item);
|
||||
base.View.Model.SetValue("F_BGP_BaseQty", num4, item);
|
||||
num++;
|
||||
}
|
||||
|
||||
BusinessDataServiceHelper.Save(base.Context, base.View.BusinessInfo, base.View.Model.DataObject);
|
||||
base.View.ShowMessage("更新完毕");
|
||||
}
|
||||
|
||||
public static DynamicObjectCollection ReceivableDetail1(Context cxt, object fOrg, string leadtime)
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
SqlParam[] array = new SqlParam[1]
|
||||
{
|
||||
new SqlParam("@FORG", KDDbType.String, fOrg)
|
||||
};
|
||||
stringBuilder.Append($@"
|
||||
SELECT t0.fid F_BGP_INVENTORYID
|
||||
,t0.FSTOCKID,t1.FMaterialId,t0.FLot,t0.FStockUnitId,t0.FBaseUnitId
|
||||
,t0.FQty,t0.FBaseQty,t0.FStockStatusId,t0.FStockLocId
|
||||
,DATEDIFF(DAY,t3.Maintdate,GETDATE()) - t2.F_BGP_DAY + 1 overday
|
||||
,DATEADD(DAY,(t2.F_BGP_DAY + 0.7),t3.Maintdate) as F_BGP_ShouldMainteDate
|
||||
,ISNULL(t3.FPRODUCEDATE,t0.FPRODUCEDATE) FPRODUCEDATE
|
||||
,ISNULL(t3.FEXPIRYDATE,t0.FEXPIRYDATE) FEXPIRYDATE
|
||||
,GETDATE() F_BGP_MAINTEPLANDATE,FOwnerTypeId,FOwnerId,FKeeperTypeId,FKeeperId
|
||||
,FStockStatusId,FAuxPropId,FSecQty,FSecUnitId,t3.Maintdate
|
||||
FROM T_STK_INVENTORY t0
|
||||
INNER JOIN T_BD_MATERIAL t1 on t0.FMATERIALID = t1.FMASTERID AND t0.FSTOCKORGID = t1.FUSEORGID
|
||||
INNER JOIN T_BGP_MaintainType t2 on t1.F_BGP_MAINTAINCLASS = t2.FID AND t2.FNUMBER = '01'
|
||||
INNER JOIN (
|
||||
SELECT ISNULL(t3.F_BGP_MaintDate,t3.FInStockDate) Maintdate,t3.FLOTID,t3.FPRODUCEDATE,t3.FEXPIRYDATE
|
||||
FROM T_BD_LOTMASTER t3
|
||||
) t3 on t3.FLOTID=t0.FLot
|
||||
WHERE 1 = 1
|
||||
AND DATEDIFF(DAY,t3.Maintdate ,GETDATE()) > t2.F_BGP_DAY - {leadtime} AND t0.FSTOCKORGID = @FORG
|
||||
AND FBaseQty > 0 AND t1.FDOCUMENTSTATUS='C' AND FStockStatusId = 10000
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM T_BGP_MaintePlanB t4
|
||||
WHERE t4.F_BGP_BaseQty > t4.F_BGP_BaseMaintQty AND t4.F_BGP_INVENTORYID= t0.fid
|
||||
)
|
||||
ORDER BY F_BGP_DosageForm,FSTOCKID,FMaterialId ");
|
||||
return DBServiceHelper.ExecuteDynamicObject(cxt, stringBuilder.ToString(), null, null, CommandType.Text, array);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
declare @FORG int,@leatTime int
|
||||
set @FORG = 1
|
||||
SET @leatTime = 30
|
||||
SELECT t0.fid F_BGP_INVENTORYID
|
||||
,t0.FSTOCKID
|
||||
,t1.FMaterialId
|
||||
,FLot
|
||||
,FStockUnitId, FBaseUnitId, FQty,FBaseQty, FStockStatusId
|
||||
,FStockLocId ,DATEDIFF(DAY,Maintdate ,GETDATE())-89 overday
|
||||
,dateadd(DAY,90.7,Maintdate) as F_BGP_ShouldMainteDate
|
||||
,ISNULL(t3.FPRODUCEDATE,t0.FPRODUCEDATE) FPRODUCEDATE
|
||||
,ISNULL(t3.FEXPIRYDATE,t0.FEXPIRYDATE) FEXPIRYDATE
|
||||
,GETDATE() F_BGP_MAINTEPLANDATE
|
||||
,FOwnerTypeId
|
||||
,FOwnerId
|
||||
,FKeeperTypeId
|
||||
,FKeeperId
|
||||
,FStockStatusId
|
||||
,FAuxPropId
|
||||
,FSecQty
|
||||
,FSecUnitId
|
||||
,Maintdate
|
||||
FROM T_STK_INVENTORY t0
|
||||
,T_BD_MATERIAL t1
|
||||
,T_BGP_MaintainType t2
|
||||
,(SELECT ISNULL(F_BGP_MaintDate,FInStockDate) Maintdate
|
||||
,FLOTID,FPRODUCEDATE,FEXPIRYDATE
|
||||
FROM T_BD_LOTMASTER) t3
|
||||
WHERE t0.FMaterialId = t1.FMasterId
|
||||
AND F_BGP_MaintainClass=t2.FID
|
||||
AND t2.F_BGP_DAY = 90
|
||||
AND t3.FLOTID=t0.FLot
|
||||
AND DATEDIFF(DAY,Maintdate ,GETDATE()) > 90 - @leatTime
|
||||
AND t0.FSTOCKORGID = @FORG
|
||||
AND FBaseQty > 0
|
||||
AND t1.FDOCUMENTSTATUS='C'
|
||||
AND FStockStatusId = 10000
|
||||
AND t1.FuseORGID=@FORG
|
||||
AND NOT EXISTS(
|
||||
SELECT F_BGP_INVENTORYID
|
||||
FROM T_BGP_MaintePlanB mb
|
||||
WHERE F_BGP_BaseQty > F_BGP_BaseMaintQty AND F_BGP_INVENTORYID= t0.fid
|
||||
)
|
||||
ORDER BY F_BGP_DosageForm,FSTOCKID,FMaterialId
|
||||
@@ -0,0 +1,28 @@
|
||||
declare @FORG int,@leatTime int
|
||||
set @FORG = 1
|
||||
SET @leatTime = 30
|
||||
SELECT t0.fid F_BGP_INVENTORYID
|
||||
,t0.FSTOCKID,t1.FMaterialId,t0.FLot
|
||||
,t0.FStockUnitId,t0.FBaseUnitId,t0.FQty,t0.FBaseQty
|
||||
,t0.FStockStatusId,t0.FStockLocId
|
||||
,DATEDIFF(DAY,t3.Maintdate,GETDATE()) - t2.F_BGP_DAY + 1 overday
|
||||
,DATEADD(DAY,(t2.F_BGP_DAY + 0.7),t3.Maintdate) as F_BGP_ShouldMainteDate
|
||||
,ISNULL(t3.FPRODUCEDATE,t0.FPRODUCEDATE) FPRODUCEDATE
|
||||
,ISNULL(t3.FEXPIRYDATE,t0.FEXPIRYDATE) FEXPIRYDATE
|
||||
,GETDATE() F_BGP_MAINTEPLANDATE,FOwnerTypeId,FOwnerId,FKeeperTypeId,FKeeperId,FStockStatusId,FAuxPropId,FSecQty,FSecUnitId,t3.Maintdate
|
||||
FROM T_STK_INVENTORY t0
|
||||
INNER JOIN T_BD_MATERIAL t1 on t0.FMATERIALID = t1.FMASTERID AND t0.FSTOCKORGID = t1.FUSEORGID
|
||||
INNER JOIN T_BGP_MaintainType t2 on t1.F_BGP_MAINTAINCLASS = t2.FID AND t2.FNUMBER = '01'
|
||||
CROSS APPLY (
|
||||
SELECT ISNULL(t3.F_BGP_MaintDate,t3.FInStockDate) Maintdate,t3.FLOTID,t3.FPRODUCEDATE,t3.FEXPIRYDATE
|
||||
FROM T_BD_LOTMASTER t3
|
||||
WHERE t3.FLOTID=t0.FLot
|
||||
) t3
|
||||
WHERE 1 = 1
|
||||
AND DATEDIFF(DAY,t3.Maintdate ,GETDATE()) > t2.F_BGP_DAY - 30 AND t0.FSTOCKORGID = @FORG
|
||||
AND FBaseQty > 0 AND t1.FDOCUMENTSTATUS='C' AND FStockStatusId = 10000
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM T_BGP_MaintePlanB t4
|
||||
WHERE t4.F_BGP_BaseQty > t4.F_BGP_BaseMaintQty AND t4.F_BGP_INVENTORYID= t0.fid
|
||||
)
|
||||
ORDER BY F_BGP_DosageForm,FSTOCKID,FMaterialId
|
||||
@@ -0,0 +1,103 @@
|
||||
SELECT DATEDIFF(Day,ISNULL(T3.F_BGP_MAINTDATE,T3.FINSTOCKDATE),GETDATE()) AS DIFFDay
|
||||
,T2.F_BGP_DAY
|
||||
,ISNULL(T7.F_BGP_DAY,- 1) AS FNearDAY
|
||||
,T2.F_BGP_DAY - DATEDIFF(Day,ISNULL(T3.F_BGP_MAINTDATE,GETDATE()),GETDATE()) AS FEnableDay
|
||||
,T2.FNUMBER
|
||||
,T0.FSTOCKORGID
|
||||
,T1.FMATERIALID
|
||||
,T1.FNUMBER AS FMaterialNum
|
||||
,T1.F_BGP_ISCOLDCHAIN
|
||||
,T1.F_BGP_ISSPECIAL
|
||||
,T1.F_BGP_BIGCLASS
|
||||
,T6.FNAME AS F_BGP_BIGCLASS_Name
|
||||
,CONVERT(varchar(10),T1.F_BGP_FIRSTDATE,21) AS F_BGP_FirstDate
|
||||
,(CASE WHEN T1.F_BGP_FirstDate IS NULL THEN 0 WHEN DATEDIFF(Year,T1.F_BGP_FirstDate,GetDate()) > 1 THEN 0 ELSE 1 END) AS DIFFYear
|
||||
,(CASE WHEN T1.F_BGP_FirstDate IS NULL THEN 0 ELSE DATEDIFF(Year,T1.F_BGP_FirstDate,GetDate()) END) AS DIFFYear
|
||||
,T1.F_BGP_MAINTAINCLASS
|
||||
,'0' AS F_BGP_MainteState
|
||||
,T0.FSTOCKUNITID
|
||||
,T0.FBASEUNITID
|
||||
,T0.FQTY
|
||||
,T0.FBaseQty
|
||||
,CONVERT(varchar( 10),isnull(T0.FPRODUCEDATE,T3.FPRODUCEDATE),21) AS FPRODUCEDATE
|
||||
,CONVERT(varchar(10),isnull(T0.FEXPIRYDATE,T3.FEXPIRYDATE),21) AS FExpiryDate
|
||||
,T0.FLOT
|
||||
,T0.FSTOCKID
|
||||
,T0.FSTOCKLOCID
|
||||
,T5.FEXPUNIT
|
||||
,T5.FEXPPERIOD
|
||||
,CASE WHEN T5.FEXPUNIT = 'M' THEN T5.FExpPeriod
|
||||
WHEN T5.FEXPUNIT = 'Y' THEN T5.FExpPeriod * 12
|
||||
WHEN T5.FEXPUNIT = 'D' THEN T5.FExpPeriod / 30 ELSE 0 END AS FExpMonth
|
||||
,ISNULL(T3.F_BGP_MAINTDATE + CAST(T2.F_BGP_DAY AS int),GETDATE()) AS F_BGP_SHOULDMAINTEDATE
|
||||
,T3.FINSTOCKDATE
|
||||
,DATEDIFF(Month,T3.FINSTOCKDATE,GETDATE()) AS FInStockMonth
|
||||
,T0.FOWNERTYPEID
|
||||
,T0.FOWNERID
|
||||
,T0.FKEEPERTYPEID
|
||||
,T0.FKEEPERID
|
||||
,T0.FSTOCKSTATUSID
|
||||
,FAuxPropId
|
||||
,FSecQty
|
||||
,FSecUnitId
|
||||
,t10.FInStockDate FIRFInStockDate
|
||||
,F_BGP_FirstStatus
|
||||
,(Case WHEN T10.FInStockDate is null THEN 0 WHEN DateDiff(Year,T10.FInStockDate,GetDate()) > 1 THEN 0 else 1 end) FDIFFYear
|
||||
,F_BGP_INVENTORYID
|
||||
FROM (
|
||||
SELECT fid F_BGP_INVENTORYID
|
||||
,FSTOCKORGID
|
||||
,FMATERIALID
|
||||
,FBASEUNITID
|
||||
,FSTOCKUNITID
|
||||
,FLOT
|
||||
,FSTOCKID
|
||||
,FSTOCKLOCID
|
||||
,FPRODUCEDATE
|
||||
,FEXPIRYDATE
|
||||
,FOWNERTYPEID
|
||||
,FOWNERID
|
||||
,FKEEPERTYPEID
|
||||
,FKEEPERID
|
||||
,FSTOCKSTATUSID
|
||||
,SUM(FQTY) AS FQTY
|
||||
,SUM(FBASEQTY) AS FBaseQty
|
||||
,FAuxPropId
|
||||
,SUM(FSecQty)as FSecQty
|
||||
,FSecUnitId
|
||||
FROM dbo.T_STK_INVENTORY
|
||||
WHERE not exists(
|
||||
SELECT distinct F_BGP_INVENTORYID
|
||||
FROM T_BGP_MaintePlanB mb where F_BGP_BaseQty > F_BGP_BaseMaintQty AND F_BGP_INVENTORYID = T_STK_INVENTORY.fid )
|
||||
GROUP BY FSTOCKORGID
|
||||
,FMATERIALID
|
||||
,FBASEUNITID
|
||||
,FSTOCKUNITID
|
||||
,FLOT
|
||||
,FSTOCKID
|
||||
,FSTOCKLOCID
|
||||
,FPRODUCEDATE
|
||||
,FEXPIRYDATE
|
||||
,FOWNERTYPEID
|
||||
,FOWNERID
|
||||
,FKEEPERTYPEID
|
||||
,FKEEPERID
|
||||
,FSTOCKSTATUSID
|
||||
,FAuxPropId
|
||||
,FSecUnitId
|
||||
,fid
|
||||
) AS T0
|
||||
INNER JOIN dbo.T_BD_MATERIAL AS T1 ON T0.FMATERIALID = T1.FMASTERID AND T0.FSTOCKORGID = T1.FUSEORGID
|
||||
LEFT JOIN
|
||||
(
|
||||
SELECT FMATERIALID
|
||||
,MIN(FInStockDate)FInStockDate
|
||||
FROM T_BD_LotMaster
|
||||
GROUP BY FMATERIALID
|
||||
)T10 ON T1.FMATERIALID = T10.FMaterialID
|
||||
INNER JOIN dbo.T_BGP_MaintainType AS T2 ON T1.F_BGP_MAINTAINCLASS = T2.FID
|
||||
INNER JOIN dbo.T_BD_LOTMASTER AS T3 ON T0.FLOT = T3.FLOTID
|
||||
INNER JOIN dbo.T_BD_MATERIALSTOCK AS T5 ON T0.FMATERIALID = T5.FMATERIALID
|
||||
LEFT OUTER JOIN dbo.T_BGP_BigClass_L AS T6 ON T1.F_BGP_BIGCLASS = T6.FID
|
||||
LEFT OUTER JOIN dbo.T_BGP_EffectType AS T7 ON T1.F_BGP_EFFECTTYPE = T7.FID
|
||||
WHERE (T0.FBaseQty > 0)
|
||||
Reference in New Issue
Block a user