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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user