143 lines
6.1 KiB
C#
143 lines
6.1 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
|
|
|