diff --git a/Common/CommonHelper.cs b/Common/CommonHelper.cs new file mode 100644 index 0000000..1619a15 --- /dev/null +++ b/Common/CommonHelper.cs @@ -0,0 +1,149 @@ +using Kingdee.BOS.BusinessEntity.BusinessFlow; +using System; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Xceed.Document.NET; +using Xceed.Words.NET; +using System.Drawing; + +namespace GZ_LTHPilot_ORDER.Common +{ + public class CommonHelper + { + public static void DolondWord(string templatePath, DataSet data, string outputPath, string FType) + { + // 加载模板文档 + using (var document = DocX.Load(templatePath)) + { + //int n = data.Tables.Count; + var datatable = data.Tables[0]; + foreach (DataRow item in datatable.Rows) + { + document.ReplaceText("{" + Convert.ToString(item["Key"]) + "}", Convert.ToString(item["Value"])); + } + int x = document.Tables.Count; + if (FType == "D") + { + + } + else if (FType == "XNC") + { + // 假设模板中的表格是第一个表格 + var table = document.Tables[1]; + Row previousRow = (Row)table.Rows[1]; + table.Rows[1].Remove(); + var datatable2 = data.Tables[1]; + foreach (DataRow item in datatable2.Rows) + { + Row newRow = table.InsertRow(previousRow, table.Rows.Count - 3); + foreach (var cell in newRow.Cells) + { + { + // 注意:如果单元格中有多个段落或更复杂的结构,你可能需要遍历它们并分别复制样式 + Border Border = new Border() { Size = BorderSize.four, Color = Color.Black }; + cell.SetBorder(TableCellBorderType.Left, Border); + cell.SetBorder(TableCellBorderType.Right, Border); + cell.SetBorder(TableCellBorderType.Top, Border); + cell.SetBorder(TableCellBorderType.Bottom, Border); + } + } + for (int i = 0; i < datatable2.Columns.Count; i++) + { + newRow.Cells[i].ReplaceText("{" + i.ToString() + "}", Convert.ToString(item[i])); + } + } + } + //判断含施工费 + else if (FType == "XNSGCS" || FType == "XNTSCS") + { + #region 这里开始复制 + // 假设模板中的表格是第一个表格 + var table = document.Tables[3]; + //// 清空表格中的所有行(除了表头,如果有的话) + //// 注意:这里假设第一行是表头,不删除 + Row previousRowNew = (Row)table.Rows[1]; + Row previousRowthreeNew = (Row)table.Rows[2]; + Row previousRowfourNew = (Row)table.Rows[3]; + for (int i = 3; i >= 1; i--) + { + table.Rows[i].Remove(); + } + var datatable2 = data.Tables[2]; + + // 使用LINQ来获取去重后的FType字段 + var DistinctFTypes = datatable2.AsEnumerable() + .Select(row => row.Field("FType")) + .Distinct() + .ToList(); + int Index = DistinctFTypes.Count; + foreach (var item in DistinctFTypes) + { + Row previousRow = previousRowNew; + var previousRowthree = previousRowthreeNew; + var previousRowfour = previousRowfourNew; + //插入组合中具体的数据行 + var Rows = datatable2.AsEnumerable().Where(t => Convert.ToString(t["FType"]) == item).ToList(); + //插入一个组合 + #region + Row newRowfour = table.InsertRow(previousRowfour, 1); + newRowfour.Cells[1].ReplaceText("{9}", Convert.ToString(Rows[0][11])); + foreach (var Row in Rows) + { + Row newRowthree = table.InsertRow(previousRowthree, 1); + for (int i = 0; i < 9; i++) + { + newRowthree.Cells[i].ReplaceText("{" + i.ToString() + "}", Convert.ToString(Row[i])); + } + document.ReplaceText("{10}", Convert.ToString(Row[10])); + } + Row newRow = table.InsertRow(previousRow, 1); + newRow.Cells[0].ReplaceText("{0}", string.Format("{0}、{1}", ConvertToChineseUppercase(Index), Convert.ToString(item))); + #endregion + Index--; + + } + #endregion + } + if (!Directory.Exists(Path.GetDirectoryName(outputPath))) + { + Directory.CreateDirectory(Path.GetDirectoryName(outputPath)); + } + // 保存新文档 + document.SaveAs(outputPath); + } + } + + public static string ConvertToChineseUppercase(int number) + { + // 定义一个字典来存储数字到大写汉字的映射 + Dictionary numberToChineseMap = new Dictionary + { + { 0, "零" }, + { 1, "一" }, + { 2, "二" }, + { 3, "三" }, + { 4, "四" }, + { 5, "五" }, + { 6, "六" }, + { 7, "七" }, + { 8, "八" }, + { 9, "九" } + }; + + // 检查字典中是否包含该数字 + if (numberToChineseMap.ContainsKey(number)) + { + return numberToChineseMap[number]; + } + else + { + // 处理超出范围的情况,可以抛出异常或者返回默认值 + throw new ArgumentException("数字超出范围"); + } + } + } +} diff --git a/GZ_LTHPilot_ORDER.csproj b/GZ_LTHPilot_ORDER.csproj new file mode 100644 index 0000000..d736baf --- /dev/null +++ b/GZ_LTHPilot_ORDER.csproj @@ -0,0 +1,289 @@ + + + + + Debug + AnyCPU + {FC4B0055-BAB5-4E5F-84FF-02F4712BF1FE} + Library + Properties + GZ_LTHPilot_ORDER + GZ_LTHPilot_ORDER + v4.8 + 512 + true + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\AForge.Video.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\AForge.Video.DirectShow.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\Antlr3.Runtime.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\Aspose.Cells.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\BouncyCastle.Crypto.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\Castle.Core.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\DevExpress.Data.v13.1.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\DevExpress.Printing.v13.1.Core.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\DevExpress.Utils.v13.1.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\DevExpress.XtraEditors.v13.1.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\DocumentFormat.OpenXml.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\DocumentFormat.OpenXml.Framework.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\FarPoint.CalcEngine.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\FarPoint.Excel.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\FarPoint.Localization.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\FarPoint.PDF.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\FarPoint.PluginCalendar.WinForms.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\FarPoint.Win.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\FarPoint.Win.Chart.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\FarPoint.Win.Spread.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\ICSharpCode.SharpZipLib.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\IronPython.dll + + + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\JWT.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\K3Cloud.WebApi.Client.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.BOS.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.BOS.App.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.BOS.App.Core.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.BOS.ApprovalFlow.PlugIns.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.BOS.BusinessEntity.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.BOS.Contracts.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.BOS.Core.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.BOS.DataEntity.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.BOS.ServiceHelper.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.BOS.VerificationHelper.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.BOS.Web.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.BOS.WebApi.Client.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.BOS.WebApi.FormService.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.BOS.WebApi.ServicesStub.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.K3.Core.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.K3.FIN.App.Core.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.K3.FIN.CB.App.Report.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.K3.FIN.HS.App.Report.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.K3.MFG.App.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.K3.MFG.PLN.App.MrpModel.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.K3.SCM.App.dll + + + ..\..\..\Debug\Debug\Kingdee.K3.SCM.App.Core.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.K3.SCM.App.Credit.Core.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.K3.SCM.App.Sal.ServicePlugIn.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.K3.SCM.App.Stock.Report.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.K3.SCM.Business.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.K3.SCM.Common.BusinessEntity.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.K3.SCM.Contracts.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.K3.SCM.Core.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.K3.SCM.ServiceHelper.dll + + + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.K3.SCM.Stock.Business.PlugIn.dll + + + False + ..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Newtonsoft.Json.dll + + + packages\SkiaSharp.2.88.8\lib\net462\SkiaSharp.dll + + + + packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll + + + + + packages\System.Memory.4.5.5\lib\net461\System.Memory.dll + + + + packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll + + + packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll + + + + + + + + + False + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\Xceed.Document.NET.dll + + + False + ..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\Xceed.Words.NET.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。 + + + + + + \ No newline at end of file diff --git a/GZ_LTHPilot_ORDER.dll b/GZ_LTHPilot_ORDER.dll new file mode 100644 index 0000000..bac4fed Binary files /dev/null and b/GZ_LTHPilot_ORDER.dll differ diff --git a/GZ_LTHPilot_ORDER.sln b/GZ_LTHPilot_ORDER.sln new file mode 100644 index 0000000..79b6103 --- /dev/null +++ b/GZ_LTHPilot_ORDER.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.35731.53 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GZ_LTHPilot_ORDER", "GZ_LTHPilot_ORDER.csproj", "{FC4B0055-BAB5-4E5F-84FF-02F4712BF1FE}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {FC4B0055-BAB5-4E5F-84FF-02F4712BF1FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FC4B0055-BAB5-4E5F-84FF-02F4712BF1FE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FC4B0055-BAB5-4E5F-84FF-02F4712BF1FE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FC4B0055-BAB5-4E5F-84FF-02F4712BF1FE}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {5107B70F-023E-4B3F-BA05-A4A824586AB4} + EndGlobalSection +EndGlobal diff --git a/PRD_PPBOM/AuditPOM.cs b/PRD_PPBOM/AuditPOM.cs new file mode 100644 index 0000000..f194c39 --- /dev/null +++ b/PRD_PPBOM/AuditPOM.cs @@ -0,0 +1,77 @@ +using GZ_LTHPilot_ORDER.SqlManage; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.PRD_PPBOM +{ + [Description("服务插件1:生产用料清单审核触发,根据生产车间||生产组织,修改生产用料清单明细行"), HotUpdate] + public class AuditPOM : AbstractOperationServicePlugIn + { + public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) + { + base.BeforeExecuteOperationTransaction(e); + foreach (var Row in e.SelectedRows) + { + + string FWorkshopFname = "组装测试包装车间"; + //获取单据信息 + var Billobj = Row.DataEntity; + //获取生产用料清单的组织 + var PPBOMFPrdOrgFname = SqlManage.SqlManage.GetPRD_PPBOMFWorkshopID(this.Context, Convert.ToString(Billobj["ID"])); + if (PPBOMFPrdOrgFname[0]["OEGFNAME"].ToString() == "珠海派诺") + { + //获取生产用料清单的生产车间 + var PPBOMFWorkshopFname = SqlManage.SqlManage.GetPRD_PPBOMFWorkshopID(this.Context, Convert.ToString(Billobj["ID"])); + //根据仓库改编生产用料清单的明细信息 + if (PPBOMFWorkshopFname[0]["FNAME"].ToString() == FWorkshopFname) + { + //查询明细行的FENTRYID,仓库的名称 + var PPBOMFStockFNameS = SqlManage.SqlManage.GetPRD_PPBOMFStockID(this.Context, Convert.ToString(PPBOMFWorkshopFname[0]["FID"])); + foreach (var PPBOMFStockFName in PPBOMFStockFNameS) + { + if (PPBOMFStockFName["FNAME"].ToString() == "半成品仓") + { + SqlManage.SqlManage.UpdatePRD_PPBOMFIsKeyComponent(this.Context, Convert.ToString(PPBOMFStockFName["FENTRYID"])); + } + if (PPBOMFStockFName["FNAME"].ToString() == "包材仓") + { + SqlManage.SqlManage.UpdatePRD_PPBOMFIssueType(this.Context, Convert.ToString(PPBOMFStockFName["FENTRYID"])); + } + if (PPBOMFStockFName["FNAME"].ToString() == "包装结构件仓" || PPBOMFStockFName["FNAME"].ToString() == "装配结构件仓") + { + SqlManage.SqlManage.UpdatePRD_PPBOMFIssueTypeAndFBackFlushType(this.Context, Convert.ToString(PPBOMFStockFName["FENTRYID"]), Convert.ToString(PPBOMFWorkshopFname[0]["FPrdOrgId"])); + SqlManage.SqlManage.UpdateFSRCTRANSSTOCKID(this.Context, Convert.ToString(PPBOMFStockFName["FENTRYID"])); + SqlManage.SqlManage.UpdateFSTOCKID(this.Context, Convert.ToString(PPBOMFStockFName["FENTRYID"])); + } + } + //当物料为M开头,发料方式设置为调拨倒冲,倒冲时机设置为入库倒冲,拨出组织设置为珠海派诺,拨出组织为空, + //仓库设置为 : 68 + SqlManage.SqlManage.UpdatePRD_PPBOMLIkeM(this.Context, Convert.ToString(Billobj["Id"])); + } + } + + //获取生产用料清单的组织 + var PPBOMFPrdOrgFname1 = SqlManage.SqlManage.GetPRD_PPBOMFWorkshopID(this.Context, Convert.ToString(Billobj["ID"])); + if (PPBOMFPrdOrgFname1[0]["OEGFNAME"].ToString() == "珠海派诺") + { + if (PPBOMFPrdOrgFname[0]["FNAME"].ToString() == "焊接车间" || PPBOMFPrdOrgFname[0]["FNAME"].ToString() == "贴片车间" + || PPBOMFPrdOrgFname[0]["FNAME"].ToString() == "储能车间") + { + SqlManage.SqlManage.UpdatePRD_PPBOMFIDFIsKeyComponent(this.Context, PPBOMFPrdOrgFname[0]["FID"].ToString()); + } + } + + } + + } + + } + +} \ No newline at end of file diff --git a/PRD_PPBOMCHANGE/PLTH.cs b/PRD_PPBOMCHANGE/PLTH.cs new file mode 100644 index 0000000..0b065a1 --- /dev/null +++ b/PRD_PPBOMCHANGE/PLTH.cs @@ -0,0 +1,113 @@ +using DocumentFormat.OpenXml.Office2016.Drawing.ChartDrawing; +using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.Metadata.EntityElement; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.Util; +using Kingdee.K3.Core.Mobile.Utils; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Dynamic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.PRD_PPBOMCHANGE +{ + [Description("表单插件:生产用料清单变更单,点击批量替换#按钮实现批量复制行替换功能"), HotUpdate] + public class PLTH : AbstractDynamicFormPlugIn + { + public override void BarItemClick(BarItemClickEventArgs e) + { + base.BarItemClick(e); + //按钮点击事件 + if (e.BarItemKey.Equals("GZTH_PLTH", StringComparison.OrdinalIgnoreCase)) + { + string resultWlFID = ""; + //获取单据的生产组织的FID值 + var FPrdOrg = (Kingdee.BOS.Orm.DataEntity.DynamicObject)this.View.Model.GetValue("FPrdOrgId"); + if (FPrdOrg != null) + { + //获取生产组织ID值 + var FPrdOrgId = Convert.ToString(FPrdOrg["Id"]); + //打开动态表单,并对动态表单传值 + DynamicFormShowParameter parameter = new DynamicFormShowParameter(); + //动态表单ID值 + parameter.FormId = "VRYF_SCYLQDBGPLTH"; + parameter.MultiSelect = false; + //获取生产组织的FID值发送到打开的动态表单 + parameter.CustomComplexParams.Add("EntryPrimaryKeys", FPrdOrgId); + this.View.ShowForm(parameter, result => + { + if (result.ReturnData != null) + { + //记录动态窗口的返回值 + resultWlFID = result.ReturnData.ToString(); + //获取单据体数据包 + var entiy = this.View.BillBusinessInfo.GetEntryEntity("FEntity"); + var entityObjs = this.View.Model.GetEntityDataObject(entiy); + List FSEQ = new List(); + if (entityObjs != null) + { + foreach (var entityObj in entityObjs) + { + //当变更类型为变更前 + if (Convert.ToString(entityObj["ChangeType"]) == "2") + { + //记录序号。通过list记录 + var i = Convert.ToInt32(entityObj["Seq"]); + FSEQ.Add(i - 1); + } + } + } + //循环遍历,并且选中行,执行复制行操作 + for (int i = 0; i < FSEQ.Count; i++) + { + if (i == 0) + { + this.View.Model.CopyEntryRow("FEntity", FSEQ[i], FSEQ[i] + 2, true); + if (i + 1 != FSEQ.Count) + { + FSEQ[i + 1] = FSEQ[i] + 2; + } + } + else + { + this.View.Model.CopyEntryRow("FEntity", FSEQ[i] + 1, FSEQ[i] + 3, true); + if (i + 1 == FSEQ.Count) + { + FSEQ[i] = FSEQ[i] + 3; + } + else + { + FSEQ[i + 1] = FSEQ[i] + 3; + } + } + } + + /*复制行执行操作完毕后,因序号变更,对单据体需要再次循环执行重新赋值操作*/ + foreach (var entityObj in entityObjs) + { + /*遍历单据体,变更类型为变更前复制这一列并更改物料编码; + 变更类型为变更后,将分子赋值为0*/ + if (Convert.ToString(entityObj["ChangeType"]) == "3") + { + //变更类型为变更后,分子赋值为0 + this.View.Model.SetValue("FNumerator", 0, Convert.ToInt32(entityObj["Seq"]) - 1); + } + /*变更类型为新增,将物料编码替换为动态窗口选择的物料FID*/ + if (Convert.ToString(entityObj["ChangeType"]) == "1") + { + //对新增物料进行替换 + this.View.Model.SetValue("FMaterialID2", resultWlFID, Convert.ToInt32(entityObj["Seq"]) - 1); + } + } + } + }); + } + } + } + } +} diff --git a/PRD_PPBOMCHANGE/PLTHForm.cs b/PRD_PPBOMCHANGE/PLTHForm.cs new file mode 100644 index 0000000..f4a48d7 --- /dev/null +++ b/PRD_PPBOMCHANGE/PLTHForm.cs @@ -0,0 +1,42 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.PRD_PPBOMCHANGE +{ + [Description("动态窗口表单插件:生产用料清单表单批量替换按钮,返回选择物料编码"), HotUpdate] + public class PLTHForm : AbstractDynamicFormPlugIn + { + string FPrdOrgId; + public override void OnLoad(EventArgs e) + { + base.OnLoad(e); + //接受传过来的生产组织FID,并对窗口的组织字段进行赋值 + FPrdOrgId = Convert.ToString(this.View.OpenParameter.GetCustomParameter("EntryPrimaryKeys")); + this.View.Model.SetValue("F_OrgId_83g", FPrdOrgId); + } + + public override void BarItemClick(BarItemClickEventArgs e) + { + base.BarItemClick(e); + if (e.BarItemKey.Equals("YKQC_tbButton", StringComparison.OrdinalIgnoreCase)) + { + //点击确定按钮,将数据传回生产用料清单变更单 + var returnData = (DynamicObject)this.View.Model.GetValue("F_Base_qtr"); + if (returnData != null) + { + var WLFId = Convert.ToString(returnData["Id"]); + this.View.ReturnToParentWindow(WLFId); + } + } + } + + } +} diff --git a/PRD_PPBOMCHANGE/PLTHWL.cs b/PRD_PPBOMCHANGE/PLTHWL.cs new file mode 100644 index 0000000..1117f78 --- /dev/null +++ b/PRD_PPBOMCHANGE/PLTHWL.cs @@ -0,0 +1,68 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Kingdee.BOS.Core.DynamicForm.PlugIn; + +namespace GZ_LTHPilot_ORDER.PRD_PPBOMCHANGE +{ + [Description("表单插件:生产用料清单变更单,点击批量替换#按钮实现批量替换新增行物料的功能"), HotUpdate] + public class PLTHWL : AbstractDynamicFormPlugIn + { + public override void BarItemClick(BarItemClickEventArgs e) + { + base.BarItemClick(e); + //按钮点击事件 + if (e.BarItemKey.Equals("GZTH_PLTHWL", StringComparison.OrdinalIgnoreCase)) + { + string resultWlFID = ""; + //获取单据的生产组织的FID值 + var FPrdOrg = (Kingdee.BOS.Orm.DataEntity.DynamicObject)this.View.Model.GetValue("FPrdOrgId"); + if (FPrdOrg != null) + { + //获取生产组织ID值 + var FPrdOrgId = Convert.ToString(FPrdOrg["Id"]); + //打开动态表单,并对动态表单传值 + DynamicFormShowParameter parameter = new DynamicFormShowParameter(); + //动态表单ID值 + parameter.FormId = "VRYF_SCYLQDBGPLTH"; + parameter.MultiSelect = false; + //获取生产组织的FID值发送到打开的动态表单 + parameter.CustomComplexParams.Add("EntryPrimaryKeys", FPrdOrgId); + this.View.ShowForm(parameter, result => + { + if (result.ReturnData != null) + { + //记录动态窗口的返回值 + resultWlFID = result.ReturnData.ToString(); + //获取单据体数据包 + var entiy = this.View.BillBusinessInfo.GetEntity("FEntity"); + var entityObjs = this.View.Model.GetEntityDataObject(entiy); + List FSEQ = new List(); + if (entityObjs != null) + { + /*复制行执行操作完毕后,因序号变更,对单据体需要再次循环执行重新赋值操作*/ + foreach (var entityObj in entityObjs) + { + /*变更类型为新增,将物料编码替换为动态窗口选择的物料FID*/ + if (Convert.ToString(entityObj["ChangeType"]) == "1") + { + //对新增物料进行替换 + this.View.Model.SetItemValueByID("FMaterialID2", resultWlFID, Convert.ToInt32(entityObj["Seq"]) - 1); + } + } + + } + + } + }); + } + } + } + } +} diff --git a/PUR_POORDER/HQKC.cs b/PUR_POORDER/HQKC.cs new file mode 100644 index 0000000..1a6d06e --- /dev/null +++ b/PUR_POORDER/HQKC.cs @@ -0,0 +1,25 @@ +using Kingdee.BOS; +using Kingdee.BOS.Util; +using Kingdee.K3.SCM.App.Core; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.PUR_POORDER +{ + [Description("按钮插件:获取即时库存去掉组装测试包装车间"), HotUpdate] + public class HQKC : AbstractGetInvStockPlugIn + { + public override string RegexGetInvDataSql(bool usePLNReserve, string sql, List paras) + { + sql += string.Format(@" + INNER JOIN T_BD_STOCK stock ON t.FSTOCKID = stock.FSTOCKID + WHERE ( stock.FSTOCKPROPERTY <> 2) + "); + return base.RegexGetInvDataSql(usePLNReserve, sql, paras); + } + } +} diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ecb807c --- /dev/null +++ b/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("GZ_LTHPilot_ORDER")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("GZ_LTHPilot_ORDER")] +[assembly: AssemblyCopyright("Copyright © 2025")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("fc4b0055-bab5-4e5f-84ff-02f4712bf1fe")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RECEIVEBILL/ReceivebillAuditOrder.cs b/RECEIVEBILL/ReceivebillAuditOrder.cs new file mode 100644 index 0000000..16883d4 --- /dev/null +++ b/RECEIVEBILL/ReceivebillAuditOrder.cs @@ -0,0 +1,48 @@ +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Util; + +namespace GZ_LTHPilot_ORDER.RECEIVEBILL +{ + [Description("服务插件:收款单审核后反写销售订单表头累计核销字段"), HotUpdate] + public class ReceivebillAuditOrder : AbstractOperationServicePlugIn + { + public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) + { + base.AfterExecuteOperationTransaction(e); + foreach(var Row in e.SelectedRows) + { + //获取单据信息 + var Billobj = Row.DataEntity; + //获取非预收款单的销售出库单的销售出库单源单。 + var FSRCBILLNOS = + SqlManage.SqlManage.GetRECEIVEBILLFSRCBILLNOAndFREALRECAMOUNTFOR(this.Context,Convert.ToString(Billobj["Id"])); + if (FSRCBILLNOS.Count > 0) + { + foreach (var FSRCBILLNO in FSRCBILLNOS) + { + SqlManage.SqlManage.UpdateOrderF_AMOUNTNew(this.Context, FSRCBILLNO["FSoorDerno"].ToString(), FSRCBILLNO["FALLAMOUNTFOR_D"].ToString()); + } + } + //获取预收款的收款单的源单编号信息 + var OrderFbillnos = SqlManage.SqlManage.GetRECEIVEBILLFSRCBILLNOS(this.Context,Convert.ToString(Billobj["Id"])); + if(OrderFbillnos.Count > 0) + { + foreach (var OrderFbillno in OrderFbillnos) + { + SqlManage.SqlManage.UpdateOrderF_AMOUNTNew(this.Context, OrderFbillno["FSRCBILLNO"].ToString(), OrderFbillno["FREALRECAMOUNTFOR_S"].ToString()); + } + } + } + } + } +} diff --git a/RECEIVEBILL/ReceivebillCounterOrder.cs b/RECEIVEBILL/ReceivebillCounterOrder.cs new file mode 100644 index 0000000..44ab628 --- /dev/null +++ b/RECEIVEBILL/ReceivebillCounterOrder.cs @@ -0,0 +1,45 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.RECEIVEBILL +{ + [Description("服务插件:收款单反审核后反写销售订单表头累计核销字段"), HotUpdate] + public class ReceivebillCounterOrder : AbstractOperationServicePlugIn + { + public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) + { + base.AfterExecuteOperationTransaction(e); + foreach (var Row in e.SelectedRows) + { + //获取单据信息 + var Billobj = Row.DataEntity; + //获取反审核非预收款单的销售出库单的销售出库单源单。 + var FSRCBILLNOS = + SqlManage.SqlManage.GetRECEIVEBILLFSRCBILLNOAndFREALRECAMOUNTFOR(this.Context, Convert.ToString(Billobj["Id"])); + if (FSRCBILLNOS.Count > 0) + { + foreach (var FSRCBILLNO in FSRCBILLNOS) + { + SqlManage.SqlManage.UpdateOrderF_AMOUNTOld(this.Context, FSRCBILLNO["FSoorDerno"].ToString(), FSRCBILLNO["FALLAMOUNTFOR_D"].ToString()); + } + } + //获取反审核预收款的收款单的源单编号信息 + var OrderFbillnos = SqlManage.SqlManage.GetRECEIVEBILLFSRCBILLNOS(this.Context, Convert.ToString(Billobj["Id"])); + if (OrderFbillnos.Count > 0) + { + foreach (var OrderFbillno in OrderFbillnos) + { + SqlManage.SqlManage.UpdateOrderF_AMOUNTOld(this.Context, OrderFbillno["FSRCBILLNO"].ToString(), OrderFbillno["FREALRECAMOUNTFOR_S"].ToString()); + } + } + } + } + } +} diff --git a/REFUNDBILL/RefundbillAuditOrder.cs b/REFUNDBILL/RefundbillAuditOrder.cs new file mode 100644 index 0000000..d548370 --- /dev/null +++ b/REFUNDBILL/RefundbillAuditOrder.cs @@ -0,0 +1,35 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.REFUNDBILL +{ + [Description("服务插件:收款退款单审核后反写销售订单表头累计核销字段"), HotUpdate] + public class RefundbillAuditOrder : AbstractOperationServicePlugIn + { + public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) + { + base.AfterExecuteOperationTransaction(e); + foreach (var Row in e.SelectedRows) + { + // 获取单据信息 + var Billobj = Row.DataEntity; + //获取源单为应收单的收款退款单的源单编号信息 + var Fbillnos = SqlManage.SqlManage.GetREFUNDBILLFSRCBILLNOS(this.Context,Convert.ToString(Billobj["Id"])); + if (Fbillnos.Count > 0) + { + foreach (var Fbillno in Fbillnos) + { + SqlManage.SqlManage.UpdateOrderF_AMOUNTNew(this.Context, Fbillno["FOrderNo"].ToString(), Fbillno["FALLAMOUNTFOR_D"].ToString()); + } + } + } + } + } +} diff --git a/SAL_DELIVERYNOTICE/PushCeLue.cs b/SAL_DELIVERYNOTICE/PushCeLue.cs new file mode 100644 index 0000000..0feb40f --- /dev/null +++ b/SAL_DELIVERYNOTICE/PushCeLue.cs @@ -0,0 +1,27 @@ +using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn; +using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.SAL_DELIVERYNOTICE +{ + [Description("单据转换:发货通知单下推销售出库单校验"), HotUpdate] + public class PushCeLue : AbstractConvertPlugIn + { + public override void OnParseFilter(ParseFilterEventArgs e) + { + base.OnParseFilter(e); + e.FilterPolicySQL += $"AND (SELECT CASE WHEN (SELECT COUNT(*) FROM T_SAL_DELIVERYNOTICEENTRY A INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY' INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID WHERE C.FSaleOrgId = 100302 AND C.FSALEORGID <> C.F_SaleOrgId AND A.FENTRYID = t1.FENTRYID) > 0 THEN 1 WHEN (SELECT COUNT(*) FROM T_SAL_DELIVERYNOTICEENTRY A INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY' INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID INNER JOIN T_BD_MATERIAL E ON D.FMATERIALID = E.FMATERIALID WHERE C.FSaleOrgId = 100302 AND C.FSALEORGID = C.F_SaleOrgId AND NOT(E.FNUMBER LIKE 'H.10%' OR E.FNUMBER LIKE 'H.20%' OR E.FNUMBER LIKE 'H.30%') AND A.FENTRYID = t1.FENTRYID) > 0 THEN 1 WHEN (SELECT COUNT(*) FROM T_SAL_DELIVERYNOTICEENTRY A INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY' INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID WHERE C.FSaleOrgId <> 100302 AND A.FENTRYID = t1.FENTRYID) > 0 THEN 1 WHEN (SELECT COUNT(*) FROM T_SAL_DELIVERYNOTICEENTRY A INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY' INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID INNER JOIN T_BD_MATERIAL E ON D.FMATERIALID = E.FMATERIALID WHERE C.FSaleOrgId = 100302 AND C.FSALEORGID = C.F_SaleOrgId AND (E.FNUMBER LIKE 'H.10%' OR E.FNUMBER LIKE 'H.20%' OR E.FNUMBER LIKE 'H.30%') AND A.FENTRYID = t1.FENTRYID AND D.F_Allocatedquantity <> 0) > 0 THEN 1 ELSE (SELECT COUNT(*) FROM T_PRD_MO A INNER JOIN T_PRD_MOENTRY B ON A.FID = B.FID INNER JOIN T_PRD_MOENTRY_LK C ON B.FENTRYID = C.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY' WHERE A.FDocumentStatus = 'C' AND C.FSBILLID IN (SELECT C.FID FROM T_SAL_DELIVERYNOTICEENTRY A INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY' INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID INNER JOIN T_BD_MATERIAL E ON D.FMATERIALID = E.FMATERIALID WHERE C.FSaleOrgId = 100302 AND C.FSALEORGID = C.F_SaleOrgId AND (E.FNUMBER LIKE 'H.10%' OR E.FNUMBER LIKE 'H.20%' OR E.FNUMBER LIKE 'H.30%') AND A.FENTRYID = t1.FENTRYID)) END AS Result) > 0"; + e.PlugFilterDesc = "当销售订单的销售组织为珠海派诺且销售组织=备货组织时,销售订单需下推生产订单或包装工单处于审核状态后,才可由发货通知单下推销售出库"; + + e.FilterPolicySQL += $"AND (SELECT CASE WHEN (SELECT COUNT(*) FROM T_SAL_DELIVERYNOTICEENTRY A INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY' INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID WHERE C.FSaleOrgId = 100302 AND C.FSALEORGID <> C.F_SaleOrgId AND A.FENTRYID = t1.FENTRYID) > 0 THEN 1 WHEN (SELECT COUNT(*) FROM T_SAL_DELIVERYNOTICEENTRY A INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY' INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID WHERE C.FSaleOrgId <> 100302 AND A.FENTRYID = t1.FENTRYID) > 0 THEN 1 WHEN (SELECT COUNT(*) FROM T_PRD_MO A INNER JOIN T_PRD_MOENTRY B ON A.FID = B.FID INNER JOIN T_PRD_MOENTRY_LK C ON B.FENTRYID = C.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY' WHERE A.FDocumentStatus = 'C' AND C.FSBILLID IN (SELECT C.FID FROM T_SAL_DELIVERYNOTICEENTRY A INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY' INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID INNER JOIN T_BD_MATERIAL E ON D.FMATERIALID = E.FMATERIALID WHERE C.FSaleOrgId = 100302 AND C.FSALEORGID = C.F_SaleOrgId AND (E.FNUMBER NOT LIKE 'H.10%' OR E.FNUMBER NOT LIKE 'H.20%' OR E.FNUMBER NOT LIKE 'H.30%') AND A.FENTRYID = t1.FENTRYID)) > 0 THEN 1 ELSE (SELECT COUNT(*) FROM T_PRD_MO A INNER JOIN T_PRD_MOENTRY B ON A.FID = B.FID INNER JOIN T_PRD_MOENTRY_LK C ON B.FENTRYID = C.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY' WHERE A.FDocumentStatus = 'C' AND C.FSBILLID IN (SELECT C.FID FROM T_SAL_DELIVERYNOTICEENTRY A INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY' INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID INNER JOIN T_BD_MATERIAL E ON D.FMATERIALID = E.FMATERIALID WHERE C.FSaleOrgId = 100302 AND C.FSALEORGID = C.F_SaleOrgId AND (E.FNUMBER LIKE 'H.10%' OR E.FNUMBER LIKE 'H.20%' OR E.FNUMBER LIKE 'H.30%') AND A.FENTRYID = t1.FENTRYID)) END AS Result) > 0"; + e.PlugFilterDesc = "当销售订单的销售组织为珠海派诺且销售组织=备货组织时,销售订单需下推生产订单且生产订单处于审核状态后,才可由发货通知单下推销售出库"; + + } + } +} diff --git a/SAL_DELIVERYNOTICE/SaveYFH.cs b/SAL_DELIVERYNOTICE/SaveYFH.cs new file mode 100644 index 0000000..f5bb772 --- /dev/null +++ b/SAL_DELIVERYNOTICE/SaveYFH.cs @@ -0,0 +1,191 @@ +using System; +using Kingdee.BOS.Core.Bill.PlugIn; +using Kingdee.BOS.App.Data; +using System.ComponentModel; +using Kingdee.BOS.Core.Bill.PlugIn.Args; +using Kingdee.BOS.Util; +using Kingdee.BOS.WebApi.Client; +using Newtonsoft.Json.Linq; +using System.Net.Http; +using System.Text; +using Kingdee.BOS.WebApi.FormService; +using Newtonsoft.Json; + +namespace GZ_LthFHTZSava +{ + [Description("保存前触发,以收款条件和发货金额做判断01"), HotUpdate] + public class SaveYFH : AbstractBillPlugIn + { + private double F_Amount; + + //获取当前时间 + private DateTime now = DateTime.Now; + + public override void BeforeSave(BeforeSaveEventArgs e) + { + base.BeforeSave(e); + + //获取发货通知单的销售范围#字段 + var F_SalesRange = this.View.Model.GetValue("F_SalesRange"); + + //判断销售范围字段等于购销 + if (F_SalesRange.ToString() == "GX") + { + //获取发货通知单的源单编号字段 + var FSrcBillNo = this.View.Model.GetValue("FSrcBillNo", 0); + + //SQL查询获取销售订单的累计核销金额字段 + var F_AmountSql = string.Format(@"SELECT F_AMOUNT FROM T_SAL_ORDER WHERE FBILLNO = '{0}'", FSrcBillNo.ToString()); + var F_AmountDS = DBUtils.ExecuteDynamicObject(this.Context, F_AmountSql); + if (F_AmountDS.Count != 0) + { + F_Amount = Convert.ToDouble(F_AmountDS[0]["F_AMOUNT"]); + } + + //SQL以销售订单编号做查询,查询收款条件名称 + var SKTJFNameSql = string.Format(@"SELECT ISNULL(t3.FNAME,'') AS FNAME FROM T_SAL_ORDER t1 LEFT JOIN T_SAL_ORDERPLAN t2 on t1.FID = t2.FID LEFT JOIN T_BD_RECCONDITION_L t3 on t3.FID = t2.F_RecConditionId Where t1.FBILLNO = '{0}'", FSrcBillNo.ToString()); + var SKTJFNameDS = DBUtils.ExecuteDynamicObject(this.Context, SKTJFNameSql); + foreach (var SKTJFNameRow in SKTJFNameDS) + { + if (SKTJFNameRow["FNAME"].ToString() == "") + { + continue; + } + //判定收款条件是否为预付款 + string IFYFK = "预付"; + if (SKTJFNameRow["FNAME"].ToString().Contains(IFYFK)) + { + //SQL查询获取销售订单预付款的应收金额 + string FRecAdvanceAmountSql = string.Format(@"SELECT SUM(t1.FRecAdvanceAmount) AS FRecAdvanceAmount FROM T_SAL_ORDERPLAN t1 LEFT JOIN T_SAL_ORDER t2 on t1.FID = t2.FID LEFT JOIN T_BD_RECCONDITION_L t3 on t3.FID = t1.F_RECCONDITIONID WHERE t2.FBILLNO = '{0}' AND t3.FNAME like '%预付%'", FSrcBillNo); + var FRecAdvanceAmountDS = DBUtils.ExecuteDynamicObject(this.Context, FRecAdvanceAmountSql); + if (FRecAdvanceAmountDS.Count != 0) + { + double FRecAdvanceAmount = Convert.ToDouble(FRecAdvanceAmountDS[0]["FRecAdvanceAmount"]); + //判定收款条件为预付款时,是否为预发货 + if (F_Amount < FRecAdvanceAmount) + { + this.View.Model.SetValue("F_SFYFH", "是"); + this.View.Model.SetValue("F_VRYF_Date_83g", now); + this.View.UpdateView(); + } + else + { + this.View.Model.SetValue("F_SFYFH", "否"); + this.View.Model.SetValue("F_VRYF_Date_83g", now); + this.View.UpdateView(); + } + } + } + //判定条件是否为款到发货 + string IFKDFH = "款到发货"; + if (SKTJFNameRow["FNAME"].ToString().Contains(IFKDFH)) + { + //获取当前单据的发货金额 + double FBillAllAmount1 = Convert.ToDouble(this.View.Model.GetValue("FBillAllAmount")); + + string FBillAllAmountSql; + + //SQL查询累计发货金额 + if (this.View.Model.GetValue("FBillNo").IsNullOrEmpty()) + { + FBillAllAmountSql = string.Format(@"SELECT SUM(t1.FBillAllAmount) FBillAllAmount FROM T_SAL_DELIVERYNOTICEFIN t1 LEFT JOIN T_SAL_DELIVERYNOTICEENTRY t2 on t1.FID = t2.FID WHERE t2.FSRCBILLNO = '{0}'And t2.FID != 0", FSrcBillNo); + } + else + { + //获取发货通知单的FID + string FormTitle = this.View.Model.DataObject["Id"].ToString(); + + FBillAllAmountSql = string.Format(@"SELECT SUM(t1.FBillAllAmount) FBillAllAmount FROM T_SAL_DELIVERYNOTICEFIN t1 LEFT JOIN T_SAL_DELIVERYNOTICEENTRY t2 on t1.FID = t2.FID WHERE t2.FSRCBILLNO = '{0}' And t1.FID != '{1}'", FSrcBillNo, FormTitle); + } + + var FBillAllAmountDS = DBUtils.ExecuteDynamicObject(this.Context, FBillAllAmountSql); + if (FBillAllAmountDS.Count != 0) + { + double FBillAllAmount = Convert.ToDouble(FBillAllAmountDS[0]["FBillAllAmount"]); + if (F_Amount < FBillAllAmount + FBillAllAmount1) + { + this.View.Model.SetValue("F_SFYFH", "是"); + this.View.UpdateView(); + this.View.Model.SetValue("F_VRYF_Date_83g", now); + this.View.UpdateView(); + } + else + { + this.View.Model.SetValue("F_SFYFH", "否"); + this.View.UpdateView(); + this.View.Model.SetValue("F_VRYF_Date_83g", now); + this.View.UpdateView(); + } + } + } + ////判定条件是否为协议付款 + //string IFXYFK = "协议付款"; + //if (SKTJFNameRow["FNAME"].ToString().Contains(IFXYFK)) + //{ + // //SQL查询销售组织和客户编码 + // string FSaleOrgIdAndFCustIdSql = string.Format(@"SELECT t1.FSaleOrgId AS FSaleOrgId,t2.FNUMBER AS FNUMBER FROM T_SAL_ORDER t1 LEFT JOIN T_BD_CUSTOMER t2 on t1.FCUSTID = t2.FCUSTID WHERE FBILLNO = '{0}'", FSrcBillNo); + // var FSaleOrgIdAndFCustIdDS = DBUtils.ExecuteDynamicObject(this.Context, FSaleOrgIdAndFCustIdSql); + // if (FSaleOrgIdAndFCustIdDS.Count != 0) + // { + // //获取销售组织 + // string FSaleOrgId = FSaleOrgIdAndFCustIdDS[0]["FSaleOrgId"].ToString(); + // //获取客户编码 + // string FCustId = FSaleOrgIdAndFCustIdDS[0]["FNUMBER"].ToString(); + // //通过API获取客户剩余信用额度 + // var Json = "{\"FieldKeys\":\"FLIMITBALANCE\",\"SchemeId\":\"\",\"StartRow\":0,\"Limit\":2000,\"IsVerifyBaseDataField\":\"true\",\"FilterString\":[],\"Model\":{\"FSaleOrgList\":\"" + FSaleOrgId + "\",\"FObjectType\":\"BD_Customer\",\"FStartCustId\":{\"FNumber\":\"" + FCustId + "\"},\"FEndCustId\":{\"FNumber\":\"" + FCustId + "\"},\"FCreditStatus\":\"ALL\",\"FIsExceeds\":\"-1\",\"FMultiSelect\":false}}"; + + // var result = WebApiServiceCall.GetSysReportData(this.Context, "CRE_Rpt_CreditInfo", Json); + + // var resultJo = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(result)); + // var IsSuccess = resultJo["Result"]["IsSuccess"].Value(); + // if (IsSuccess == "True") + // { + // var RowCount = resultJo["Result"]["RowCount"].Value(); + // if (RowCount != 0) + // { + // JArray FLIMITBALANCEJArray = resultJo["Result"]["Rows"].Value(); + + // double FLIMITBALANCE = Convert.ToDouble(FLIMITBALANCEJArray[0][0]); + + // //查询当前发货通知单的发货金额 + // double FBillAllAmount = Convert.ToDouble(this.View.Model.GetValue("FBillAllAmount").ToString()); + // //发货金额大于剩余额度百分之九十,则判定为预发货 + // if (FBillAllAmount > FLIMITBALANCE * 0.9) + // { + // this.View.Model.SetValue("F_SFYFH", "是"); + // this.View.UpdateView(); + // this.View.Model.SetValue("F_VRYF_Date_83g", now); + // this.View.UpdateView(); + // } + // else + // { + // this.View.Model.SetValue("F_SFYFH", "否"); + // this.View.UpdateView(); + // this.View.Model.SetValue("F_VRYF_Date_83g", now); + // this.View.UpdateView(); + // } + // } + // else if (RowCount == 0) + // { + // this.View.Model.SetValue("F_SFYFH", "是"); + // this.View.UpdateView(); + // this.View.ShowErrMessage("客户编码: " + FCustId + ",未启用信用管理"); + // this.View.Model.SetValue("F_VRYF_Date_83g", now); + // this.View.UpdateView(); + // } + // else + // { + // this.View.Model.SetValue("F_SFYFH", "否"); + // this.View.UpdateView(); + // this.View.Model.SetValue("F_VRYF_Date_83g", now); + // this.View.UpdateView(); + // } + // } + // } + //} + + } + } + } + } +} diff --git a/SAL_ORDER/DataChage.cs b/SAL_ORDER/DataChage.cs new file mode 100644 index 0000000..273bd03 --- /dev/null +++ b/SAL_ORDER/DataChage.cs @@ -0,0 +1,49 @@ +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.SAL_ORDER +{ + [Description("[表单插件]销售订单--根据合同类型变化,更新备货组织"), HotUpdate] + public class DataChage : AbstractDynamicFormPlugIn + { + public override void DataChanged(DataChangedEventArgs e) + { + base.DataChanged(e); + + if (e.Field.Key == "F_Ordercategory") + { + string Sql = string.Format(@"SELECT FDATAVALUE FROM T_BAS_ASSISTANTDATAENTRY_L WHERE FENTRYID = '{0}'", e.NewValue.ToString()); + var SqlDS = DBUtils.ExecuteDynamicObject(this.Context, Sql); + if (SqlDS.Count > 0) + { + if (SqlDS[0]["FDATAVALUE"].ToString().Contains("充电桩")) + { + this.View.Model.SetValue("F_SaleOrgId", "100303"); + } + else if (SqlDS[0]["FDATAVALUE"].ToString().Contains("储能")) + { + this.View.Model.SetValue("F_SaleOrgId", "1467475"); + } + else if (SqlDS[0]["FDATAVALUE"].ToString().Contains("服务")) + { + var FSaleOrgId = this.View.Model.GetValue("FSaleOrgId"); + this.View.Model.SetValue("F_SaleOrgId", FSaleOrgId); + } + else + { + this.View.Model.SetValue("F_SaleOrgId", "100302"); + } + } + } + this.View.UpdateView("F_SaleOrgId"); + } + } +} diff --git a/SAL_ORDER/SaveF_VRYF_Combo-lsn.cs b/SAL_ORDER/SaveF_VRYF_Combo-lsn.cs new file mode 100644 index 0000000..b1b8673 --- /dev/null +++ b/SAL_ORDER/SaveF_VRYF_Combo-lsn.cs @@ -0,0 +1,28 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.SAL_ORDER +{ + [Description("服务插件:销售订单根据纸质合同号变更销售类型"), HotUpdate] + public class SaveF_VRYF_Combo_lsn : AbstractOperationServicePlugIn + { + public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) + { + base.AfterExecuteOperationTransaction(e); + foreach (var Row in e.SelectedRows) + { + // 获取单据信息 + var Billobj = Row.DataEntity; + //sql + SqlManage.SqlManage.UpdateSal_OrderF_VRYF_Combo_lsn(this.Context, Convert.ToString(Billobj["Id"])); + } + } + } +} diff --git a/SAL_ORDER/SaveWL.cs b/SAL_ORDER/SaveWL.cs new file mode 100644 index 0000000..4da1247 --- /dev/null +++ b/SAL_ORDER/SaveWL.cs @@ -0,0 +1,42 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.SAL_ORDER +{ + [Description("服务插件:销售订单根据物料编码做判断"), HotUpdate] + public class SaveWL : AbstractOperationServicePlugIn + { + public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) + { + base.BeforeExecuteOperationTransaction(e); + foreach (var Row in e.SelectedRows) + { + //获取单据信息 + var Billobj = Row.DataEntity; + //根据订单FID + var sqls = SqlManage.SqlManage.SaveOrder_GZTH(this.Context, Convert.ToString(Billobj["Id"])); + if (sqls != null) + { + foreach (var sql in sqls) + { + if (Convert.ToInt32(sql["SUMWL"]) == 0) + { + e.Cancel = true; + throw new Exception( + + string.Format(@"物料编码J.06.00开头,且订单日期大于2025/05/10,则明细物联网卡使用年份字段必填") + ); + } + } + } + } + } + } +} diff --git a/SAL_ORDERList/ListUpFJ.cs b/SAL_ORDERList/ListUpFJ.cs new file mode 100644 index 0000000..d1bd811 --- /dev/null +++ b/SAL_ORDERList/ListUpFJ.cs @@ -0,0 +1,27 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.List.PlugIn; +using Kingdee.BOS.Core.Metadata.FormElement; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.SAL_ORDERList +{ + [Description("列表插件:销售订单审批中支持上传附件"), HotUpdate] + public class ListUpFJ : AbstractListPlugIn + { + public override void BeforeDoOperation(BeforeDoOperationEventArgs e) + { + base.BeforeDoOperation(e); + //操作前出发判断 + if (e.Operation.FormOperation.OperationId == FormOperation.Operation_AttachmentMgr) + { + e.Option.SetVariableValue("ForceEnableAttachOperate", true); + } + } + } +} diff --git a/SAL_OUTSTOCK/AuditSal_Order.cs b/SAL_OUTSTOCK/AuditSal_Order.cs new file mode 100644 index 0000000..dbb48c8 --- /dev/null +++ b/SAL_OUTSTOCK/AuditSal_Order.cs @@ -0,0 +1,36 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.SAL_OUTSTOCK +{ + [Description("审核服务插件:销售出库单审核和反审核反写销售订单明细新旧系统未出库数量#字段"), HotUpdate] + public class AuditSal_Order : AbstractOperationServicePlugIn + { + public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) + { + base.AfterExecuteOperationTransaction(e); + foreach (var Row in e.SelectedRows) + { + //获取单据信息 + var Billobj = Row.DataEntity; + //根据销售出库单的FID,查询销售订单的FentryId + var Sal_OrderS = SqlManage.SqlManage.GetSal_ORderFEntryIdAndFid(this.Context, Convert.ToString(Billobj["ID"])); + if (Sal_OrderS.Count != 0) { + //根据销售订单的FENTRYID,计算新旧系统未出库数量=云星空剩余未出数量-K3已发货数量# + foreach (var Sal_Order in Sal_OrderS) + { + SqlManage.SqlManage.UpdateSal_OrderF_notoutQty(this.Context, + Convert.ToString(Sal_Order["FENTRYID"])); + } + } + } + } + } +} diff --git a/SAL_OUTSTOCK/ListDateForm.cs b/SAL_OUTSTOCK/ListDateForm.cs new file mode 100644 index 0000000..b5016dd --- /dev/null +++ b/SAL_OUTSTOCK/ListDateForm.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Util; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Util; +using System.ComponentModel; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.ServiceHelper; +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Core.List; +using Kingdee.BOS.Core.List.PlugIn; +using System.Data; + +namespace GZ_LTHPilot_ORDER.SAL_OUTSTOCK +{ + [Description("动态窗口插件:选择日期批量更新销售出库单列表插件"), HotUpdate] + public class ListDateForm : AbstractDynamicFormPlugIn + { + string ListFidS; + public override void OnLoad(EventArgs e) + { + base.OnLoad(e); + //接受传输的值 + ListFidS = Convert.ToString(this.View.OpenParameter.GetCustomParameter("EntryPrimaryKeys")); + } + public override void BarItemClick(BarItemClickEventArgs e) + { + base.BarItemClick(e); + if (e.BarItemKey.EqualsIgnoreCase("VRYF_tbButton")) + { + var Date = this.View.Model.GetValue("F_VRYF_Date_qtr"); + string sql = string.Format(@" + update T_SAL_OUTSTOCK + SET F_SigningTime = '{1}' + WHERE FID IN ({0}) + ", ListFidS,Date); + var result = DBServiceHelper.ExecuteDynamicObject(this.Context, sql.ToString(), null, null, CommandType.Text, null); + this.View.ShowMessage("更新成功"); + } + } + public override void BeforeClosed(BeforeClosedEventArgs e) + { + base.BeforeClosed(e); + var parentView = this.View.ParentFormView as IListView; + if (parentView == null) + { + return; + } + parentView.Refresh(); + } + } +} diff --git a/SAL_OUTSTOCK/ListHWDate.cs b/SAL_OUTSTOCK/ListHWDate.cs new file mode 100644 index 0000000..26bfb0c --- /dev/null +++ b/SAL_OUTSTOCK/ListHWDate.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Kingdee.BOS.Core.Bill; +using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.List; +using Kingdee.BOS.Core.List.PlugIn; +using Kingdee.BOS.Core.Metadata; +using Kingdee.BOS.Core.Permission; +using Kingdee.BOS.Util; + +namespace GZ_LTHPilot_ORDER.SAL_OUTSTOCK +{ + [Description("销售出库单批量更新货物日期#字段列表插件:点击按钮显示动态表单"), HotUpdate] + public class ListHWDate : AbstractListPlugIn + { + public override void BarItemClick(BarItemClickEventArgs e) + { + base.BarItemClick(e); + if (e.BarItemKey.EqualsIgnoreCase("VRYF_tbButton_3")) + { + + //获取选中行 + var listView = this.View as IListView; + var selectedRows = listView.SelectedRowsInfo; + if (selectedRows == null || selectedRows.Count == 0) + { + this.View.ShowMessage("列表中的销售出库单没有被选中"); + return; + } + //获取销售出库单的FID主键信息 + var FIDPrimaryKeys = selectedRows.Select(n=>n.PrimaryKeyValue); + var Params = string.Join(",",FIDPrimaryKeys); + DynamicFormShowParameter parameter = new DynamicFormShowParameter(); + parameter.OpenStyle.ShowType = ShowType.Floating; + //选择需要打开的窗体FID + parameter.FormId = "VRYF_QDRQ"; + parameter.MultiSelect = false; + //获取的FID以字符串发送到输出的窗体 + parameter.CustomComplexParams.Add("EntryPrimaryKeys",Params); + this.View.ShowForm(parameter); + } + } + } +} diff --git a/SAL_OUTSTOCK/ListSFDate.cs b/SAL_OUTSTOCK/ListSFDate.cs new file mode 100644 index 0000000..37d7dd8 --- /dev/null +++ b/SAL_OUTSTOCK/ListSFDate.cs @@ -0,0 +1,47 @@ + +using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.List; +using Kingdee.BOS.Core.List.PlugIn; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.SAL_OUTSTOCK +{ + [Description("销售出库单批量更新顺丰发货日期#字段列表插件:点击按钮显示动态表单"), HotUpdate] + public class ListSFDate : AbstractListPlugIn { + public override void BarItemClick(BarItemClickEventArgs e) + { + base.BarItemClick(e); + if (e.BarItemKey.EqualsIgnoreCase("VRYF_tbButton_5")) + { + + //获取选中行 + var listView = this.View as IListView; + var selectedRows = listView.SelectedRowsInfo; + if (selectedRows == null || selectedRows.Count == 0) + { + this.View.ShowMessage("列表中的销售出库单没有被选中"); + return; + } + //获取销售出库单的FID主键信息 + var FIDPrimaryKeys = selectedRows.Select(n => n.PrimaryKeyValue); + var Params = string.Join(",", FIDPrimaryKeys); + DynamicFormShowParameter parameter = new DynamicFormShowParameter(); + parameter.OpenStyle.ShowType = ShowType.Floating; + //选择需要打开的窗体FID + parameter.FormId = "VRYF_SFDate"; + parameter.MultiSelect = false; + //获取的FID以字符串发送到输出的窗体 + parameter.CustomComplexParams.Add("EntryPrimaryKeys", Params); + this.View.ShowForm(parameter); + } + } + } + +} diff --git a/SAL_OUTSTOCK/ListSFDateForm.cs b/SAL_OUTSTOCK/ListSFDateForm.cs new file mode 100644 index 0000000..fa7478d --- /dev/null +++ b/SAL_OUTSTOCK/ListSFDateForm.cs @@ -0,0 +1,52 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.List; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Linq; +using System.Text; +using Kingdee.BOS.ServiceHelper; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.SAL_OUTSTOCK +{ + [Description("动态窗口插件:选择日期批量更新销售出库单顺丰发货日期#列表插件"), HotUpdate] + public class ListSFDateForm : AbstractDynamicFormPlugIn + { + string ListFidS; + public override void OnLoad(EventArgs e) + { + base.OnLoad(e); + //接受传输的值 + ListFidS = Convert.ToString(this.View.OpenParameter.GetCustomParameter("EntryPrimaryKeys")); + } + public override void BarItemClick(BarItemClickEventArgs e) + { + base.BarItemClick(e); + if (e.BarItemKey.EqualsIgnoreCase("VRYF_tbButton")) + { + var Date = this.View.Model.GetValue("F_VRYF_Date_qtr"); + string sql = string.Format(@" + update T_SAL_OUTSTOCK + SET F_SFSignatureTime = '{1}' + WHERE FID IN ({0}) + ", ListFidS, Date); + var result = DBServiceHelper.ExecuteDynamicObject(this.Context, sql.ToString(), null, null, CommandType.Text, null); + this.View.ShowMessage("更新成功"); + } + } + public override void BeforeClosed(BeforeClosedEventArgs e) + { + base.BeforeClosed(e); + var parentView = this.View.ParentFormView as IListView; + if (parentView == null) + { + return; + } + parentView.Refresh(); + } + } +} diff --git a/SAL_QUOTATION/DownLoadFile.cs b/SAL_QUOTATION/DownLoadFile.cs new file mode 100644 index 0000000..e21dfaf --- /dev/null +++ b/SAL_QUOTATION/DownLoadFile.cs @@ -0,0 +1,170 @@ +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Core; +using Kingdee.BOS.Core.Bill.PlugIn; +using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.SAL_QUOTATION +{ + [Description("【表单插件】销售报价单-下载Word"), HotUpdate] + public class DownLoadFile : AbstractDynamicFormPlugIn + { + + public override void BarItemClick(BarItemClickEventArgs e) + { + base.BarItemClick(e); + if (e.BarItemKey.Equals("VRYF_tbButton")) + { + //this.View.ShowMessage("1233456"); + //获取时间戳 + var ts = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0); + var _TimeSpan = Convert.ToInt64(ts.TotalSeconds).ToString(); + DynamicObject FSaleOrgId = this.View.Model.GetValue("FSaleOrgId") as DynamicObject; + var oId = Convert.ToInt32(FSaleOrgId["Id"]); + //获取单据日期 + DateTime FDATE = Convert.ToDateTime(this.View.Model.GetValue("FDATE")); + //获取纸质合同号 + string F_cocntractnumber = Convert.ToString(this.View.Model.GetValue("F_contractnumber")); + //获取客户 + DynamicObject FCustId = this.View.Model.GetValue("FCustId") as DynamicObject; + //获取销售员 + DynamicObject FSalerId = this.View.Model.GetValue("FSalerId") as DynamicObject; + //获取是否含调试 + string FIsDebugging = this.View.Model.GetValue("FIsDebugging")?.ToString(); + //获取工程项目 + DynamicObject F_projectname = this.View.Model.GetValue("F_projectname") as DynamicObject; + //获取是否不含施工,含调试费# + String F_BHSGHTSF = this.View.Model.GetValue("F_BHSGHTSF")?.ToString(); + //判断是否含施工 + String F_HSG = this.View.Model.GetValue("F_HSG")?.ToString(); + + if (FCustId == null) + { + this.View.ShowErrMessage("客户不允许为空!"); + return; + } + + if (FSalerId == null) + { + this.View.ShowErrMessage("销售员不允许为空!"); + return; + } + + if (F_projectname == null && oId != 438223) + { + this.View.ShowErrMessage("工程项目不允许为空"); + return; + } + string projectname = ""; + string FCustIdprojectname = ""; + if (oId != 438223) + { + projectname = F_projectname["NAME"]?.ToString(); + //特殊符号平替解决方法: + projectname = projectname.Replace("/", "/"); + projectname = projectname.Replace("+", "➕"); + projectname = projectname.Replace("*", " "); + projectname = projectname.Replace(":", ":"); + projectname = projectname.Replace("\"", "“"); + + FCustIdprojectname = FCustId["NAME"]?.ToString(); + //特殊符号平替解决方法: + FCustIdprojectname = FCustIdprojectname.Replace("/", "/"); + FCustIdprojectname = FCustIdprojectname.Replace("+", "➕"); + FCustIdprojectname = FCustIdprojectname.Replace("*", " "); + FCustIdprojectname = FCustIdprojectname.Replace(":", ":"); + FCustIdprojectname = FCustIdprojectname.Replace("\"", "“"); + } + + string FPath = string.Format(@"D:\导出Word\{0}\{1}\{2}\{3}年\{4}月\{5}日\{6}.docx", this.Context.DataCenterName, "销售报价单", + this.View.Model.DataObject["Billno"], DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, string.Format("{0}-{1}-{2}-{3}-{4}", FDATE.ToString("yyyy-MM-dd"), F_cocntractnumber + , string.IsNullOrWhiteSpace(projectname) ? "":projectname,FCustIdprojectname, FSalerId == null ? "" : FSalerId["NAME"])); + + //获取金额 + string fBILLNO = this.View.Model.GetValue("FBILLNO").ToString(); + //获取销售报价单的合同类型,根据报价单合同类型获取模版 + string sql = string.Format(@"/*dialect*/ + EXEC GetSAL_QUOTATIONHT_GZTH '{0}' + ", fBILLNO); + var sqlList = DBUtils.ExecuteDynamicObject(Context, sql); + //取值合同类型 + var F_Ordercategory = Convert.ToString(sqlList[0]["FNUMBER"]); + String FOrdercategory = ""; + + //判断是哪个合同 + if (F_Ordercategory == "C") + { + FOrdercategory = "XNC"; + } + if(F_Ordercategory == "CS") + { + //判断含调试费 + if (F_BHSGHTSF == "True") + { + FOrdercategory = "XNSGCS"; + } + //判断含施工,不含调试费 + else if (F_HSG == "True") + { + FOrdercategory = "XNTSCS"; + } + } + if (F_Ordercategory == "CW") { + //判断是否按服务事件报价 + + } + + //获取模板地址 + var TempModelPath = SqlManage.SqlManage.GetTempModelPath(this.Context, FOrdercategory); + if (TempModelPath.Count == 0) + { + this.View.ShowErrMessage("找不到对应的word模板,CS模版需勾选是否不含施工或是否含施工复选框。"); + return; + } + //获取内容 + var TempModelData = SqlManage.SqlManage.GetTempModelData(this.Context, Convert.ToString(this.View.Model.DataObject["Id"]), FOrdercategory); + + // 提取文件名 + string fileProjectname = Path.GetFileName(FPath); + + // 在临时文件目录,生成一个完整的文件名: C:\Program Files\Kingdee\K3Cloud\WebSite\...\JD.xls + string filePath = PathUtils.GetPhysicalPath(KeyConst.TEMPFILEPATH, Path.GetFileName(FPath)); + // 生成一个供用户下载文件的url地址: http:\\localhost\K3Cloud\...\JD.xls + string fileUrl = PathUtils.GetServerPath(KeyConst.TEMPFILEPATH, Path.GetFileName(FPath)); + + //另存为word + Common.CommonHelper.DolondWord(Convert.ToString(TempModelPath[0]["FTempPath"]), TempModelData, FPath, FOrdercategory); + //另存为word + Common.CommonHelper.DolondWord(Convert.ToString(TempModelPath[0]["FTempPath"]), TempModelData, filePath, FOrdercategory); + + //下载word + if (!string.IsNullOrEmpty(FPath)) + { + //打开文件下载界面 + DynamicFormShowParameter showParameter = new DynamicFormShowParameter(); + showParameter.FormId = "BOS_FileDownload"; + showParameter.OpenStyle.ShowType = ShowType.Modal; + showParameter.CustomComplexParams.Add("url", fileUrl); + //显示 + this.View.ShowForm(showParameter); + } + } + //string opt = e.Operation.Operation; + + //if (opt == "Save" && e.OperationResult.IsSuccess) + //{ + // this.View.Refresh(); + //} + } + } +} diff --git a/SAL_RETURNSTOCK/AuditSal_Order.cs b/SAL_RETURNSTOCK/AuditSal_Order.cs new file mode 100644 index 0000000..e5a27c6 --- /dev/null +++ b/SAL_RETURNSTOCK/AuditSal_Order.cs @@ -0,0 +1,38 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Util; +using Kingdee.K3.Core; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.SAL_RETURNSTOCK +{ + [Description("审核服务插件:销售退货单审核和反审核反写销售订单明细新旧系统未出库数量#字段"), HotUpdate] + public class AuditSal_Order : AbstractOperationServicePlugIn + { + public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) + { + base.AfterExecuteOperationTransaction(e); + foreach (var Row in e.SelectedRows) + { + //获取单据信息 + var Billobj = Row.DataEntity; + //根据销售退货单的FID,查询销售订单的FentryId + var Sal_Orders = SqlManage.SqlManage.GETRETURNSTOCKSal_ORDERFidAndFentryid(this.Context, + Convert.ToString(Billobj["ID"])); + if (Sal_Orders.Count != 0) + { + foreach (var Sal_Order in Sal_Orders) + { + SqlManage.SqlManage.UpdateSal_OrderF_notoutQty(this.Context, + Convert.ToString(Sal_Order["FENTRYID"])); + } + } + } + } + } +} diff --git a/SQL/SqlManage.cs b/SQL/SqlManage.cs new file mode 100644 index 0000000..dd31740 --- /dev/null +++ b/SQL/SqlManage.cs @@ -0,0 +1,416 @@ +using FarPoint.Excel.EntityClassLibrary.SpreadsheetML; +using Kingdee.BOS; +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.ServiceHelper; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.SqlManage +{ + class SqlManage + { + //查询生产订单的FID和FENTRYID + public static DynamicObjectCollection GetPRD_MOFIDAndFENTRYID(Context ctx, string FID) + { + string sql = string.Format(@"/*dialect*/ + SELECT A.FID AS FID,B.FENTRYID AS FENTRYID + FROM T_PRD_MO A + INNER JOIN T_PRD_MOENTRY B ON A.FID = B.FID + WHERE A.FID = '{0}'", FID); + //返回对象 + return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + //根据生产用料清单的FID,查询生产用料清单生产车间字段信息 + public static DynamicObjectCollection GetPRD_PPBOMFWorkshopID(Context ctx, string FID) + { + string sql = string.Format(@"/*dialect*/ + SELECT C.FNAME AS FNAME, + A.FID AS FID, + A.FPrdOrgId AS FPrdOrgId, + D.FNAME AS OEGFNAME + FROM T_PRD_PPBOM A + INNER JOIN T_BD_DEPARTMENT_L C ON C.FDEPTID = A.FWORKSHOPID + INNER JOIN T_ORG_ORGANIZATIONS_L D ON A.FPRDORGID = D.FORGID + WHERE A.FID = {0} + ", FID); + //返回对象 + return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + //根据生产用料清单的FId,查询生产用料清单的明细;仓库名称;组织ID + public static DynamicObjectCollection GetPRD_PPBOMFStockID(Context ctx, string FID) + { + string sql = string.Format(@"/*dialect*/ + SELECT + B.FENTRYID AS FENTRYID, + CL.FNAME AS FNAME + FROM T_PRD_PPBOM A + INNER JOIN T_PRD_PPBOMENTRY_C B ON A.FID = B.FID --关联生产用料清单明细表 + INNER JOIN T_BD_STOCK C ON B.FSTOCKID = C.FSTOCKID + INNER JOIN T_BD_STOCK_L CL ON C.FSTOCKID = CL.FSTOCKID --关联仓库信息表,获取仓库名称 + WHERE A.FID = '{0}' + ", FID); + //返回对象 + return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + //生产用料清单明细为半成品仓,更改是否关键件字段 + public static void UpdatePRD_PPBOMFIsKeyComponent(Context ctx, string FENTRYID) + { + string sql = string.Format(@"/*dialect*/ + update T_PRD_PPBOMENTRY_C + SET FIsKeyComponent = '1' + WHERE FENTRYID = '{0}' + ", FENTRYID); + DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + //生产用料清单明细为包材仓,更改发料方式 + public static void UpdatePRD_PPBOMFIssueType(Context ctx, string FENTRYID) + { + string sql = string.Format(@"/*dialect*/ + update T_PRD_PPBOMENTRY_C + SET FIssueType = '7' + WHERE FENTRYID = '{0}' + ", FENTRYID); + DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + //生产用料清单明细为包装结构件仓和装配结构件仓,更改发料方式和倒冲时机,拨出组织 + public static void UpdatePRD_PPBOMFIssueTypeAndFBackFlushType(Context ctx, string FENTRYID, string ZZID) + { + string sql = string.Format(@"/*dialect*/ + update T_PRD_PPBOMENTRY_C + SET FIssueType = '4',FBackFlushType = '3',FSrcTransOrgId = '{1}' + WHERE FENTRYID = '{0}' + ", FENTRYID, ZZID); + DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + //生产用料清单明细为包装结构件仓和装配结构件仓,更改拔出仓库为仓库 + public static void UpdateFSRCTRANSSTOCKID(Context ctx, string FENTRYID) + { + string sql = string.Format(@"/*dialect*/ + update T_PRD_PPBOMENTRY_C + SET FSRCTRANSSTOCKID = FSTOCKID + WHERE FENTRYID = '{0}' + ", FENTRYID); + DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + //生产用料清单明细为包装结构件仓和装配结构件仓,更改完拔出仓库为仓库,修改仓库为仓库编码为68的 + public static void UpdateFSTOCKID(Context ctx, string FENTRYID) + { + string sql = string.Format(@"/*dialect*/ + update T_PRD_PPBOMENTRY_C + SET FSTOCKID = '1442951' + WHERE FENTRYID = '{0}' + ", FENTRYID); + DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + + //生产用料清单生产组织为珠海派诺,生产车间为:焊接车间、贴片车间、储能车间;生产车间,更改是否关键件字段,过滤条件为FID + public static void UpdatePRD_PPBOMFIDFIsKeyComponent(Context ctx, string FID) + { + string sql = string.Format(@"/*dialect*/ + update T_PRD_PPBOMENTRY_C + SET FIsKeyComponent = '1' + WHERE FID = '{0}' + ", FID); + DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + + //获取委外订单的FID和FENTRYID + public static DynamicObjectCollection GetSUB_REQORDERFIDAndFENTRYIDS(Context ctx, string FID) + { + string sql = string.Format(@"/*dialect*/ + SELECT A.FID AS FID, + B.FENTRYID AS FENTRYID + FROM T_SUB_REQORDER A + INNER JOIN T_SUB_REQORDERENTRY B ON A.FID = B.FID + WHERE A.FID = '{0}' + ", FID); + return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + + //获取委外用料清单的委外组织 + public static DynamicObjectCollection GetSUB_PPBOMFSubOrgId(Context ctx, string FID) + { + string sql = string.Format(@"/*dialect*/ + SELECT + A.FID AS FID, + B.FNAME AS FNAME + FROM T_SUB_PPBOM A + INNER JOIN T_ORG_ORGANIZATIONS_L B ON A.FSubOrgId = B.FORGID + WHERE A.FID = {0} + ", FID); + return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + + //根据委外用料清单的生产组织为珠海派诺,更改明细行是否关机键 + //生产用料清单生产组织为珠海派诺,生产车间为:焊接车间、贴片车间、储能车间;生产车间,更改是否关键件字段,过滤条件为FID + public static void UpdateSUB_PPBOMFIsKeyComponent(Context ctx, string FID) + { + string sql = string.Format(@"/*dialect*/ + update T_SUB_PPBOMENTRY_C + SET FIsKeyComponent = '1' + WHERE FID = '{0}' + ", FID); + DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + + //查询收款单源单明细的源单类型为应收单查询销售订单编号的SQL语句 + public static DynamicObjectCollection GetRECEIVEBILLFSRCBILLNOAndFREALRECAMOUNTFOR(Context ctx, string FID) + { + string sql = string.Format(@"/*dialect*/ + SELECT + G.FSoorDerno AS FSoorDerno --销售订单单据编号 + ,B.FREALRECAMOUNT AS FALLAMOUNTFOR_D --核销的价格 + FROM T_AR_RECEIVEBILL A + INNER JOIN T_AR_RECEIVEBILLSRCENTRY B ON A.FID = B.FID + INNER JOIN T_AR_RECEIVEBILLSRCENTRY_LK C ON B.FENTRYID = C.FENTRYID -- 关联收款单的LK表 + INNER JOIN T_AR_RECEIVABLE D ON C.FSBILLID = D.FID + INNER JOIN T_AR_RECEIVABLEENTRY E ON E.FID = D.FID + INNER JOIN T_AR_RECEIVABLEENTRY_LK F ON E.FENTRYID = F.FENTRYID AND F.FALLAMOUNTFOR_D <> 0 + INNER JOIN T_SAL_OUTSTOCKENTRY_R G ON G.FID = F.FSBILLID AND F.FSID = G.FENTRYID + WHERE A.FID = '{0}' AND B.FSRCBILLTYPEID = 'AR_receivable' AND A.FSALEORGID <> '100302' + ", FID); + return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + + //更新销售订单表头的累计核销金额 + public static void UpdateOrderF_AMOUNTNew(Context ctx, string Fbillno, string FREALRECAMOUNTFOR) + { + string sql = string.Format(@"/*dialect*/ + update T_SAL_ORDER + SET F_AMOUNT = F_AMOUNT+{1} + WHERE FBILLNO = '{0}' + ", Fbillno, FREALRECAMOUNTFOR); + DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + + //更新销售订单表头的累计核销金额 + public static void UpdateOrderF_AMOUNTOld(Context ctx, string Fbillno, string FREALRECAMOUNTFOR) + { + string sql = string.Format(@"/*dialect*/ + update T_SAL_ORDER + SET F_AMOUNT = F_AMOUNT-{1} + WHERE FBILLNO = '{0}' + ", Fbillno, FREALRECAMOUNTFOR); + DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + + //获取预收款单的销售订单源单编号 + public static DynamicObjectCollection GetRECEIVEBILLFSRCBILLNOS(Context ctx, string FID) + { + string sql = string.Format(@" + SELECT + B.FSRCBILLNO AS FSRCBILLNO, --源单单据编号 + B.FREALRECAMOUNTFOR AS FREALRECAMOUNTFOR_S --源单本次实收金额(本位币) + FROM T_AR_RECEIVEBILL A + INNER JOIN T_AR_RECEIVEBILLSRCENTRY B ON A.FID = B.FID + WHERE A.FID = '{0}' AND A.FSETTLEORGID != '100302' AND B.FREALRECAMOUNTFOR > 0 + AND B.FSRCBILLTYPEID = 'SAL_SaleOrder' + ", FID); + return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + + //获取应收单下推收款退款单的销售订单编号 + public static DynamicObjectCollection GetREFUNDBILLFSRCBILLNOS(Context ctx, string FID) + { + string sql = string.Format(@" + SELECT + G.FOrderNo AS FOrderNo --销售订单编号 + ,F.FALLAMOUNTFOR_D AS FALLAMOUNTFOR_D --核销金额 + FROM T_AR_REFUNDBILL A + INNER JOIN T_AR_REFUNDBILLSRCENTRY B ON A.FID = B.FID + INNER JOIN T_AR_REFUNDBILLSRCENTRY_LK C ON B.FENTRYID = C.FENTRYID -- 关联收款单的LK表 + INNER JOIN T_AR_RECEIVABLE D ON C.FSBILLID = D.FID + INNER JOIN T_AR_RECEIVABLEENTRY E ON D.FID = E.FID + INNER JOIN T_AR_RECEIVABLEENTRY_LK F On E.FENTRYID = F.FENTRYID AND F.FALLAMOUNTFOR_D <> 0 + INNER JOIN T_SAL_RETURNSTOCKENTRY G ON G.FID = F.FSBILLID AND F.FSID = G.FENTRYID + WHERE A.FID = '{0}' AND B.FSOURCETYPE = 'AR_receivable' AND A.FSALEORGID <> '100302' + ", FID); + return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + + //获取销售报价单下载WORD内容 + public static DataSet GetTempModelData(Context ctx, string FID, string FType) + { + //定义SQL,调用物料视图 + string sql = string.Format(@"/*dialect*/ + exec GetTempModelData_XSBJD_GZTH '{0}','{1}' ", FID, FType); + //执行SQL + return DBServiceHelper.ExecuteDataSet(ctx, sql); + } + + /// + /// 获取模板地址 + /// + /// + public static DynamicObjectCollection GetTempModelPath(Context ctx, string FID) + { + //定义SQL,调用物料视图 + string sql = string.Format(@"/*dialect*/ + SELECT FTempPath FROM T_TempModelPath WHERE FKeyId = '{0}' ", FID); + //执行SQL + return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null) as DynamicObjectCollection; + } + + //根据销售出库单的FID,获取销售订单的FENTRYID + public static DynamicObjectCollection GetSal_ORderFEntryIdAndFid(Context ctx, string FID) + { + string sql = string.Format(@"/*dialect*/ + EXEC GETSAL_ORDERFidAndFENTRYID_GZTH '{0}' + ", FID); + //执行SQL + return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null) as DynamicObjectCollection; + } + + //根据销售出库单的FID,反写销售订单新旧系统未出库数量 + public static void UpdateSal_OrderF_notoutQty(Context ctx, string FENTRYID) + { + string sql = string.Format(@"/*dialect*/ + EXEC UpdateSAL_ORDERF_notoutQty '{0}' + ", FENTRYID); + DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + + //根据销售退货单的FID,获取销售订单的FENTRYID + public static DynamicObjectCollection GETRETURNSTOCKSal_ORDERFidAndFentryid(Context ctx, string FID) + { + string sql = string.Format(@"/*dialect*/ + EXEC GETRETURNSTOCKSal_ORDERFidAndFentryid_GZTH '{0}' + ", FID); + return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null) as DynamicObjectCollection; + } + /*当物料为M开头,发料方式设置为调拨倒冲,倒冲时机设置为入库倒冲,拨出组织设置为珠海派诺,拨出组织为空, + 仓库设置为 : 68*/ + public static void UpdatePRD_PPBOMLIkeM(Context ctx, string FID) + { + string sql = string.Format(@"/*dialect*/ + EXEC UpdatePRD_PPBOMLIkeM_GZTH '{0}' + ", FID); + DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + //根据销售订单的纸质合同号,修改销售订单的销售类型字段 + public static void UpdateSal_OrderF_VRYF_Combo_lsn(Context ctx, string FID) + { + string sql = string.Format(@"/*dialect*/ + EXEC GZTH_UpdateSal_OrderF_VRYF_Combo_lsn '{0}' + ", FID); + DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + + //根据红字发票FID,获取查询出是否由蓝字发票进行下推,获取蓝字发票的FID,FENTRYID + public static DynamicObjectCollection GetBuleFpFID(Context ctx, string FID) + { + string sql = string.Format(@"/*dialect*/ + EXEC GetLPFid_GZTH '{0}' + ", FID); + DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + string LpFidSql = string.Format(@"/*dialect*/ + SELECT * FROM GZ_AuditTHHZFP + "); + return DBServiceHelper.ExecuteDynamicObject(ctx, LpFidSql.ToString(), null, null, CommandType.Text, null); + } + + //根据红字发票查询蓝字发票的FID,查询销售订单的FID和FENTRYID,开票数量和开票金额 + public static DynamicObjectCollection GetHZFPSal_ORDERFidAndFentryid(Context ctx, string FID) + { + string sql = string.Format(@"/*dialect*/ + EXEC GetIV_SALESICSal_OrderFID_GZTH '{0}' + ", FID); + DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + + //更新GZTH_AuditSal_OrderFP表 + string UpSql = string.Format(@"/*dialect*/ + UPDATE A + SET A.[开票数量] = B.[红字发票数量],A.[开票金额] = B.[红字发票金额] + FROM GZTH_AuditSal_OrderFP A + INNER JOIN GZ_AuditTHHZFP B ON A.开票FID = B.蓝字发票FID AND A.开票FENTRYID = B.蓝字发票FENTRYID + "); + DBServiceHelper.ExecuteDynamicObject(ctx, UpSql.ToString(), null, null, CommandType.Text, null); + + //查询表并且返回表的数据 + string getSql = string.Format(@"/*dialect*/ + SELECT * FROM GZTH_AuditSal_OrderFP + "); + return DBServiceHelper.ExecuteDynamicObject(ctx, getSql.ToString(), null, null, CommandType.Text, null); + } + //根据获取的销售订单FID和FentryId,更新开票数量和开票金额 + + public static void UpSal_OrderKPJEAndKPSL(Context ctx, string FID, string FENTRYID, string KPZZ, string F_INVOICEQTY, string F_F_INVOICEAMOUNT) + { + string sql = string.Format(@"/*dialect*/ + EXEC TrueUpdateSal_OrderF_INVOICEQTYAndF_F_INVOICEAMOUNTAndF_invoiceAmount_TH '{0}','{1}','{2}','{3}','{4}' + ", FID, FENTRYID, KPZZ, F_INVOICEQTY, F_F_INVOICEAMOUNT); + } + //根据获取的销售订单FID和FentryId,更新开票数量和开票金额(当销售订单的累计核销金额>价税合计本位币后) + public static void FalseUpSal_OrderKPJEAndKPSL(Context ctx, string FID, string FENTRYID, string KPZZ,string F_INVOICEQTY, string F_F_INVOICEAMOUNT) + { + string sql = string.Format(@"/*dialect*/ + EXEC FalseUpdateSal_OrderF_INVOICEQTYAndF_F_INVOICEAMOUNTAndF_invoiceAmount_TH '{0}','{1}','{2}','{3}','{4}' + ", FID, FENTRYID, KPZZ,F_INVOICEQTY, F_F_INVOICEAMOUNT); + DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + //根据查询销售订单FID,查询销售订单累计核销金额和价税合计本位币 + public static DynamicObjectCollection GetSal_Order(Context ctx, string FID) + { + string sql = string.Format(@" + SELECT + A.FBILLNO AS '单据编号', + B.FBillAllAmount AS '价税合计', + A.F_INVOICEAMOUNT AS '累计开票金额' + FROM T_SAL_ORDER A + INNER JOIN T_SAL_ORDERFIN B ON A.FID = B.FID + WHERE A.FID = '{0}' + AND ABS(A.F_invoiceAmount) > ABS(B.FBillAllAmount) + ", FID); + return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + //根据蓝字发票查询销售订单的FID和FENTRYID,开票数量和开票金额 + public static DynamicObjectCollection GetLZFPSal_ORDERFidAndFentryid(Context ctx, string FID) + { + string sql = string.Format(@"/*dialect*/ + EXEC GetIV_SALESICSal_OrderFID_GZTH '{0}' + ", FID); + DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + + //查询表并且返回表的数据 + string getSql = string.Format(@"/*dialect*/ + SELECT * FROM GZTH_AuditSal_OrderFP + "); + return DBServiceHelper.ExecuteDynamicObject(ctx, getSql.ToString(), null, null, CommandType.Text, null); + } + //根据销售出库的FID,反写发货通知单的检验周期字段 + public static DynamicObjectCollection UpdateFHTZDJYZQ(Context ctx,string FID) + { + //查询表并且返回表的数据 + string getSql = string.Format(@"/*dialect*/ + EXEC SaveCGRK_GZTH '{0}' + ", FID); + return DBServiceHelper.ExecuteDynamicObject(ctx, getSql.ToString(), null, null, CommandType.Text, null); + } + + //根据销售订单的FID,查询物料编码J开头的物联网卡使用年份必填 + public static DynamicObjectCollection SaveOrder_GZTH(Context ctx, string FID) + { + //查询表并且返回表的数据 + string getSql = string.Format(@"/*dialect*/ + EXEC SaveOrder_GZTH '{0}' + ", FID); + return DBServiceHelper.ExecuteDynamicObject(ctx, getSql.ToString(), null, null, CommandType.Text, null); + } + + //根据项目预算利润表FID,更新财务信息字段 + public static void GZTH_XMYSBSave(Context ctx,string FID) + { + string sql = string.Format(@"/*dialect*/ + EXEC GZTH_XMYSBSave '{0}' + ", FID); + DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); + } + + + } +} diff --git a/SUB_PPBOM/AuditPOM.cs b/SUB_PPBOM/AuditPOM.cs new file mode 100644 index 0000000..6405182 --- /dev/null +++ b/SUB_PPBOM/AuditPOM.cs @@ -0,0 +1,33 @@ +using Kingdee.BOS.BusinessEntity.BusinessFlow; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.SUB_PPBOM +{ + [Description("服务插件:委外用料清单审核触发,根据生产车间||生产组织,修改委外用料清单明细行"), HotUpdate] + public class AuditPOM : AbstractOperationServicePlugIn + { + public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) + { + base.BeforeExecuteOperationTransaction(e); + foreach (var Row in e.SelectedRows) + { + //获取单据信息 + var Billobj = Row.DataEntity; + //获取委外用料清单的委外组织 + var SUB_PPBOMFSubOrgFname = SqlManage.SqlManage.GetSUB_PPBOMFSubOrgId(this.Context, Billobj["ID"].ToString()); + if (SUB_PPBOMFSubOrgFname[0]["FNAME"].ToString() == "珠海派诺") + { + SqlManage.SqlManage.UpdateSUB_PPBOMFIsKeyComponent(this.Context, SUB_PPBOMFSubOrgFname[0]["FID"].ToString()); + } + } + } + } +} diff --git a/T_IV_SALESIC/AuditS_Order.cs b/T_IV_SALESIC/AuditS_Order.cs new file mode 100644 index 0000000..b6dabaa --- /dev/null +++ b/T_IV_SALESIC/AuditS_Order.cs @@ -0,0 +1,102 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.Metadata.ControlElement; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.IV_SALESIC +{ + [Description("服务插件:发票审核时,反写销售订单累计开票金额字段非本位币"), HotUpdate] + public class AuditS_Order : AbstractOperationServicePlugIn + { + public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) + { + base.BeforeExecuteOperationTransaction(e); + foreach (var Row in e.SelectedRows) + { + var Billobj = Row.DataEntity; + //先查询是否由蓝票下推生成的红票 + var GetLpFids = SqlManage.SqlManage.GetBuleFpFID(this.Context, Convert.ToString(Billobj["Id"])); + if (GetLpFids.Count > 0) + { + //循环遍历蓝字发票FID,执行蓝字发票的查询存储过程 + foreach (var GetLpFid in GetLpFids) { + var Ordersqls = SqlManage.SqlManage.GetHZFPSal_ORDERFidAndFentryid(this.Context, Convert.ToString(GetLpFid["蓝字发票FID"])); + if (Ordersqls.Count > 0) + { + foreach (var Ordersql in Ordersqls) + { + //根据销售订单FID和销售订单FENTRYID,更新源销售订单的开票数量和开票金额(明细) + SqlManage.SqlManage.UpSal_OrderKPJEAndKPSL(this.Context, Convert.ToString(Ordersql["销售订单FID"]), + Convert.ToString(Ordersql["销售订单FENTRYID"]), Convert.ToString(Ordersql["开票组织"]), Convert.ToString(Ordersql["开票数量"]), + Convert.ToString(Ordersql["开票金额"])); + //判断更新后的累计核销金额是否大于销售订单的价税合计本位币 + var dynamics = SqlManage.SqlManage.GetSal_Order(this.Context, Convert.ToString(Ordersql["销售订单FID"])); + if (dynamics.Count > 0) + { + //当累计开票金额>订单的价税合计时,溯源更新订单的开票数量和开票金额 + SqlManage.SqlManage.FalseUpSal_OrderKPJEAndKPSL(this.Context, Convert.ToString(Ordersql["销售订单FID"]), + Convert.ToString(Ordersql["销售订单FENTRYID"]), Convert.ToString(Ordersql["开票组织"]), Convert.ToString(Ordersql["开票数量"]), + Convert.ToString(Ordersql["开票金额"])); + //foreach (var dynamic in dynamics) + //{ + // e.Cancel = true; + // var ErrorMessge = string.Format(@"源单销售订单编号:{0},的价税合计为{1},目前开票金额反写回 + // 销售订单累计开票金额为{2},超出核销范围,不允许执行审核操作", Convert.ToString(dynamic["单据编号"]) + //, Convert.ToString(dynamic["价税合计"]), Convert.ToString(dynamic["累计开票金额"])); + // throw new Exception( + // ErrorMessge.ToString() + // ); + //} + } + } + + } + break; + } + } + //当发票为蓝字发票或非蓝字发票下推生成的红字发票时 + else + { + var LZOrders = SqlManage.SqlManage.GetLZFPSal_ORDERFidAndFentryid(this.Context, Convert.ToString(Billobj["Id"])); + if (LZOrders.Count > 0) + { + foreach (var LZOrder in LZOrders) + { + //根据销售订单FID和销售订单的FENTRYID,更新源销售订单的开票数量和开票金额(明细) + SqlManage.SqlManage.UpSal_OrderKPJEAndKPSL(this.Context, Convert.ToString(LZOrder["销售订单FID"]), + Convert.ToString(LZOrder["销售订单FENTRYID"]), Convert.ToString(LZOrder["开票组织"]), Convert.ToString(LZOrder["开票数量"]), + Convert.ToString(LZOrder["开票金额"])); + //判断更新后的累计核销金额是否大于销售订单的价税合计本位币 + var dynamics = SqlManage.SqlManage.GetSal_Order(this.Context, Convert.ToString(LZOrder["销售订单FID"])); + if (dynamics.Count > 0) + { + //当累计开票金额>订单的价税合计时,溯源更新订单的开票数量和开票金额 + SqlManage.SqlManage.FalseUpSal_OrderKPJEAndKPSL(this.Context, Convert.ToString(LZOrder["销售订单FID"]), + Convert.ToString(LZOrder["销售订单FENTRYID"]), Convert.ToString(LZOrder["开票组织"]), Convert.ToString(LZOrder["开票数量"]), + Convert.ToString(LZOrder["开票金额"])); + //foreach (var dynamic in dynamics) + //{ + // e.Cancel = true; + + // var ErrorMessge = string.Format(@"源单销售订单编号:{0},的价税合计为{1},目前开票金额反写回 + // 销售订单累计开票金额为{2},超出核销范围,不允许执行审核操作", Convert.ToString(dynamic["单据编号"]) + // , Convert.ToString(dynamic["价税合计"]), Convert.ToString(dynamic["累计开票金额"])); + // throw new Exception( + // ErrorMessge.ToString() + // ); + //} + } + } + //break; + } + } + } + } + } +} diff --git a/T_IV_SALESIC/UnAuditS_Order.cs b/T_IV_SALESIC/UnAuditS_Order.cs new file mode 100644 index 0000000..0c02254 --- /dev/null +++ b/T_IV_SALESIC/UnAuditS_Order.cs @@ -0,0 +1,63 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.T_IV_SALESIC +{ + [Description("服务插件:发票反审核时,溯源销售订单累计开票金额字段"), HotUpdate] + public class UnAuditS_Order : AbstractOperationServicePlugIn + { + public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) + { + base.BeforeExecuteOperationTransaction(e); + foreach (var Row in e.SelectedRows) + { + var Billobj = Row.DataEntity; + //先查询是否由蓝票下推生成的红票 + var GetLpFids = SqlManage.SqlManage.GetBuleFpFID(this.Context, Convert.ToString(Billobj["Id"])); + if (GetLpFids.Count > 0) + { + //循环遍历蓝字发票FID,执行蓝字发票的查询存储过程 + foreach (var GetLpFid in GetLpFids) + { + var Ordersqls = SqlManage.SqlManage.GetHZFPSal_ORDERFidAndFentryid(this.Context, Convert.ToString(GetLpFid["蓝字发票FID"])); + if (Ordersqls.Count > 0) + { + foreach (var Ordersql in Ordersqls) + { + //反审核,溯源审核的操作 + SqlManage.SqlManage.FalseUpSal_OrderKPJEAndKPSL(this.Context, Convert.ToString(Ordersql["销售订单FID"]), + Convert.ToString(Ordersql["销售订单FENTRYID"]), Convert.ToString(Ordersql["开票组织"]), Convert.ToString(Ordersql["开票数量"]), + Convert.ToString(Ordersql["开票金额"])); + } + + } + break; + } + } + //当发票为蓝字发票或非蓝字发票下推生成的红字发票时 + else + { + var LZOrders = SqlManage.SqlManage.GetLZFPSal_ORDERFidAndFentryid(this.Context, Convert.ToString(Billobj["Id"])); + if (LZOrders.Count > 0) + { + foreach (var LZOrder in LZOrders) + { + //反审核,溯源审核的操作 + SqlManage.SqlManage.FalseUpSal_OrderKPJEAndKPSL(this.Context, Convert.ToString(LZOrder["销售订单FID"]), + Convert.ToString(LZOrder["销售订单FENTRYID"]), Convert.ToString(LZOrder["开票组织"]), Convert.ToString(LZOrder["开票数量"]), + Convert.ToString(LZOrder["开票金额"])); + } + break; + } + } + } + } + } +} diff --git a/T_PUR_RECEIVE/SaveDate.cs b/T_PUR_RECEIVE/SaveDate.cs new file mode 100644 index 0000000..292a8ed --- /dev/null +++ b/T_PUR_RECEIVE/SaveDate.cs @@ -0,0 +1,28 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.SAL_DELIVERYNOTICE +{ + [Description("服务插件:采购入库单保存触发检验周期字段更新"), HotUpdate] + public class SaveDate : AbstractOperationServicePlugIn + { + public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) + { + base.AfterExecuteOperationTransaction(e); + foreach (var Row in e.SelectedRows) + { + //获取单据信息 + var Billobj = Row.DataEntity; + //以采购入库单的FID,获取采购入库单日期字段减去收料通知单的日期的天数,并对检验周期字段赋值 + SqlManage.SqlManage.UpdateFHTZDJYZQ(this.Context, Convert.ToString(Billobj["Id"])); + } + } + } +} diff --git a/XMYSLRB/AfterSave.cs b/XMYSLRB/AfterSave.cs new file mode 100644 index 0000000..ed6fc27 --- /dev/null +++ b/XMYSLRB/AfterSave.cs @@ -0,0 +1,34 @@ +using Kingdee.BOS.App.Core; +using Kingdee.BOS.Core.Bill; +using Kingdee.BOS.Core.Bill.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Util; +using Kingdee.K3.SCM.App.Sal.ServicePlugIn.ConsignSettle; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.XMYSLRB +{ + [Description("表单插件:保存后时间,刷新财务信息字段"), HotUpdate] + public class AfterSave : AbstractBillPlugIn + { + + public override void BeforeDoOperation(BeforeDoOperationEventArgs e) + { + base.BeforeDoOperation(e); + if (e.Operation.FormOperation.OperationId == 8) + { + // 保存操作后刷新字段 "F_projectname" + var loadKeys = new List(new[] { "F_VRYF__DSFCB_h1g", "F_VRYF__DZCB_zc5", "F_VRYF__HTJE_imu", "F_VRYF__BZCB_1xj", "F_XMCB", "F_GCCB", "F_XMGLF" , + "F_SGAZF","F_SGAZF","F_VRYF_Amount_ne1","F_VRYF_Amount_ca9","F_VRYF_Amount_uky","F_VRYF_Amount_dvn","F_VRYF_Amount_w5c","F_VRYF_Amount_fg2","F_SSRT","F_SJRT", + "F_JSTSRG","F_FKFS","F_VRYF_Qty_yrr","F_VRYF_Price_zc5","F_VRYF_Price_zc5","F_GCCB","F_CPCB","F_VRYF_Amount_ca9","F_MLL","F_LRL","F_ZJSJE","F_JSLR","F_CBJJE", + "F_JSJJE"}); + ((IBillModel)this.Model).SynDataFromDB(loadKeys); + } + } + } +} diff --git a/XMYSLRB/OnLoadLR.cs b/XMYSLRB/OnLoadLR.cs new file mode 100644 index 0000000..619c14a --- /dev/null +++ b/XMYSLRB/OnLoadLR.cs @@ -0,0 +1,94 @@ +using FarPoint.Excel; +using Kingdee.BOS; +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.ServiceHelper.ManagementCenter; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.XMYSLRB +{ + [Description("表单插件:当项目预算利润表完成加载后,自动新增成本明细行"), HotUpdate] + public class OnLoadLR : AbstractDynamicFormPlugIn + { + public override void OnLoad(EventArgs e) + { + base.OnLoad(e); + //获取单据编号,若单据编号为空则执行新增行并赋值操作。 + var FBILLNO = this.View.Model.GetValue("FBillNo"); + if (FBILLNO != null) + { + return; + } + string sql = string.Format(@"SELECT COUNT(B.FDATAVALUE) AS 'HJ' FROM T_BAS_ASSISTANTDATAENTRY A + INNER JOIN T_BAS_ASSISTANTDATAENTRY_L B ON A.FENTRYID = B.FENTRYID + WHERE FID = '682c386fbcca09' + AND FDocumentStatus = 'C'"); + var sqlDS = DBUtils.ExecuteDynamicObject(this.Context, sql); + var Count = 0; + if (sqlDS.Count != 0) + { + Count = Convert.ToInt32(sqlDS[0]["HJ"]); + } + for (int i = 0; i < Count; i++) + { + this.View.Model.CreateNewEntryRow("F_VRYF_Entity_co6"); + } + sql = string.Format(@"SELECT B.FENTRYID,B.FDATAVALUE FROM T_BAS_ASSISTANTDATAENTRY A + INNER JOIN T_BAS_ASSISTANTDATAENTRY_L B ON A.FENTRYID = B.FENTRYID + WHERE FID = '682c386fbcca09'AND FDocumentStatus = 'C'"); + sqlDS = DBUtils.ExecuteDynamicObject(this.Context, sql); + if (sqlDS.Count != 0) + { + for (int i = 0; i < Count; i++) + { + this.View.Model.SetItemValueByID("F_VRYF_Assistant_qtr", Convert.ToString(sqlDS[i]["FENTRYID"]), i); + if (Convert.ToString(sqlDS[i]["FENTRYID"]) == "682e83afbd70b6") + { + this.View.Model.SetItemValueByID("F_VRYF_Decimal_qtr", 6, i); + } + else if (Convert.ToString(sqlDS[i]["FENTRYID"]) == "682e83e4bd70cb") + { + this.View.Model.SetItemValueByID("F_VRYF_Decimal_qtr", 6, i); + } + } + } + } + public override void AfterBindData(EventArgs e) + { + base.AfterBindData(e); + var sql = string.Format(@"SELECT B.FENTRYID,B.FDATAVALUE FROM T_BAS_ASSISTANTDATAENTRY A + INNER JOIN T_BAS_ASSISTANTDATAENTRY_L B ON A.FENTRYID = B.FENTRYID + WHERE FID = '682c386fbcca09'AND FDocumentStatus = 'C'"); + var sqlDS = DBUtils.ExecuteDynamicObject(this.Context, sql); + if (sqlDS.Count != 0) + { + for (int i = 0; i < sqlDS.Count; i++) + { + if (Convert.ToString(sqlDS[i]["FENTRYID"]) != "682e83afbd70b6") + { + this.View.GetFieldEditor("F_VRYF_Decimal_qtr", i).Enabled = false; + } + + } + for (int i = 0; i < sqlDS.Count; i++) + { + if (Convert.ToString(sqlDS[i]["FENTRYID"]) == "682e83afbd70b6") + { + this.View.GetFieldEditor("F_VRYF_Decimal_qtr", i).Enabled = true; + } + else if (Convert.ToString(sqlDS[i]["FENTRYID"]) == "682e83e4bd70cb") + { + this.View.GetFieldEditor("F_VRYF_Decimal_qtr", i).Enabled = true; + } + } + + } + } + } +} diff --git a/XMYSLRB/Save.cs b/XMYSLRB/Save.cs new file mode 100644 index 0000000..7403443 --- /dev/null +++ b/XMYSLRB/Save.cs @@ -0,0 +1,29 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GZ_LTHPilot_ORDER.XMYSLRB +{ + [Description("服务插件:项目预算利润表保存后计算公式并对字段赋值"), HotUpdate] + public class Save : AbstractOperationServicePlugIn + { + public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) + { + base.AfterExecuteOperationTransaction(e); + foreach(var Row in e.SelectedRows) + { + //获取单据信息 + var Billobj = Row.DataEntity; + //更新项目预算利润表的财务信息字段 + SqlManage.SqlManage.GZTH_XMYSBSave(this.Context, Convert.ToString(Billobj["Id"])); + + } + } + } +} diff --git a/packages.config b/packages.config new file mode 100644 index 0000000..38dfed3 --- /dev/null +++ b/packages.config @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/兴诺模板/Xceed.Document.NET.dll b/兴诺模板/Xceed.Document.NET.dll new file mode 100644 index 0000000..4c73b92 Binary files /dev/null and b/兴诺模板/Xceed.Document.NET.dll differ diff --git a/兴诺模板/Xceed.Words.NET.dll b/兴诺模板/Xceed.Words.NET.dll new file mode 100644 index 0000000..f108527 Binary files /dev/null and b/兴诺模板/Xceed.Words.NET.dll differ diff --git a/兴诺模板/兴诺模板/CS兴诺-A充电桩-系统购销合同-不含施工-含调试费-2024-9-2.docx b/兴诺模板/兴诺模板/CS兴诺-A充电桩-系统购销合同-不含施工-含调试费-2024-9-2.docx new file mode 100644 index 0000000..d4bb15d Binary files /dev/null and b/兴诺模板/兴诺模板/CS兴诺-A充电桩-系统购销合同-不含施工-含调试费-2024-9-2.docx differ diff --git a/兴诺模板/兴诺模板/CS兴诺-A充电桩-系统购销合同-含施工-2024-5-24.docx b/兴诺模板/兴诺模板/CS兴诺-A充电桩-系统购销合同-含施工-2024-5-24.docx new file mode 100644 index 0000000..958ac23 Binary files /dev/null and b/兴诺模板/兴诺模板/CS兴诺-A充电桩-系统购销合同-含施工-2024-5-24.docx differ diff --git a/兴诺模板/兴诺模板/CW充电桩维保服务合同-按服务事件报价-2024-4-11.docx b/兴诺模板/兴诺模板/CW充电桩维保服务合同-按服务事件报价-2024-4-11.docx new file mode 100644 index 0000000..b50adc0 Binary files /dev/null and b/兴诺模板/兴诺模板/CW充电桩维保服务合同-按服务事件报价-2024-4-11.docx differ diff --git a/兴诺模板/兴诺模板/CW技术-合同模版.docx b/兴诺模板/兴诺模板/CW技术-合同模版.docx new file mode 100644 index 0000000..be886ff Binary files /dev/null and b/兴诺模板/兴诺模板/CW技术-合同模版.docx differ diff --git a/兴诺模板/兴诺模板/C兴诺-A充电桩项目购销合同模板-2024-6-25.docx b/兴诺模板/兴诺模板/C兴诺-A充电桩项目购销合同模板-2024-6-25.docx new file mode 100644 index 0000000..c57476f Binary files /dev/null and b/兴诺模板/兴诺模板/C兴诺-A充电桩项目购销合同模板-2024-6-25.docx differ diff --git a/发货通知单下推sql.sql b/发货通知单下推sql.sql new file mode 100644 index 0000000..d377295 --- /dev/null +++ b/发货通知单下推sql.sql @@ -0,0 +1,44 @@ +SELECT + CASE + WHEN + ( + SELECT COUNT(*) + FROM T_SAL_DELIVERYNOTICEENTRY A + INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY' + INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID + INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID + WHERE C.FSaleOrgId = 100302 + AND C.FSALEORGID <> C.F_SaleOrgId + AND A.FENTRYID = t1.FENTRYID + ) > 0 + THEN 1 + WHEN( + SELECT COUNT(*) + FROM T_SAL_DELIVERYNOTICEENTRY A + INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY' + INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID + INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID + WHERE C.FSaleOrgId <> 100302 + AND A.FENTRYID = t1.FENTRYID + ) > 0 + THEN 1 + ELSE + ( + SELECT COUNT(*) + FROM T_PRD_MO A + INNER JOIN T_PRD_MOENTRY B ON A.FID = B.FID + INNER JOIN T_PRD_MOENTRY_LK C ON B.FENTRYID = C.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY' + WHERE A.FDocumentStatus = 'C' + AND C.FSBILLID IN + ( + SELECT C.FID + FROM T_SAL_DELIVERYNOTICEENTRY A + INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY' + INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID + INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID + WHERE C.FSaleOrgId = 100302 + AND C.FSALEORGID = C.F_SaleOrgId + AND A.FENTRYID = t1.FENTRYID + ) + ) + END AS Result \ No newline at end of file diff --git a/根据K3更新云星空自定义字段.sql b/根据K3更新云星空自定义字段.sql new file mode 100644 index 0000000..74fc946 --- /dev/null +++ b/根据K3更新云星空自定义字段.sql @@ -0,0 +1,28 @@ + select * from oldk3seorder0515 + + + --ݵݱ룬ͬţϱ(ǿգϱ)˰۸ + --K3#F_sendAmount K3˻#F_returnAmount + UPDATE B + SET B.F_sendAmount = ISNULL(C.,0),B.F_returnAmount = ISNULL(C.˻,0) + FROM T_SAL_ORDER A + INNER JOIN T_SAL_ORDERENTRY B ON A.FID = B.FID + INNER JOIN T_SAL_ORDERENTRY_F BF ON BF.FENTRYID = B.FENTRYID + INNER JOIN T_BD_MATERIAL D ON B.FMATERIALID = D.FMATERIALID + INNER JOIN oldk3seorder0515 C ON C.ݱ = A.FBILLNO AND A.F_contractnumber = C.ͬ AND D.FOldNumber = C.ϱ + AND B.FQTY = C. AND BF.FTaxPrice = C.˰ + + + --ݺͬţϱ(ǿգϱ)˰۸ + --K3#F_sendAmount K3˻#F_returnAmount + UPDATE B + SET B.F_sendAmount = ISNULL(C.,0),B.F_returnAmount = ISNULL(C.˻,0) + FROM T_SAL_ORDER A + INNER JOIN T_SAL_ORDERENTRY B ON A.FID = B.FID + INNER JOIN T_SAL_ORDERENTRY_F BF ON BF.FENTRYID = B.FENTRYID + INNER JOIN T_BD_MATERIAL D ON B.FMATERIALID = D.FMATERIALID + INNER JOIN oldk3seorder0515 C ON A.F_contractnumber = C.ͬ AND D.FOldNumber = C.ϱ + AND B.FQTY = C. AND BF.FTaxPrice = C.˰ + + +