From a44ce289333b85d2700ec9e601cb7d559d675532 Mon Sep 17 00:00:00 2001 From: PastSaid <603806070@qq.com> Date: Thu, 14 Dec 2023 10:31:17 +0800 Subject: [PATCH] aa --- GateDge2023.sln | 15 +- .../MonthlyProductionSchedule.csproj | 76 +++++ .../ProductionPlanRptPlugIn.cs | 301 ++++++++++++++++++ .../Properties/AssemblyInfo.cs | 36 +++ .../SQLServer/月度生产计划表-预测单.sql | 140 ++++++++ SAL_OUTSTOCK/MergePrintIssueAnInvPlugIn.cs | 1 - .../SQLServer/月度生产计划表-预测单.sql | 112 ++++--- SAL_OUTSTOCK/SQLServer/月度生产计划表.sql | 16 +- .../BeforeSaveEventBillPlugIn.cs | 53 ++- .../DataChangedEventFormPlugIn.cs | 6 +- 10 files changed, 673 insertions(+), 83 deletions(-) create mode 100644 MonthlyProductionSchedule/MonthlyProductionSchedule.csproj create mode 100644 MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs create mode 100644 MonthlyProductionSchedule/Properties/AssemblyInfo.cs create mode 100644 MonthlyProductionSchedule/SQLServer/月度生产计划表-预测单.sql diff --git a/GateDge2023.sln b/GateDge2023.sln index 967e39a..5527a0a 100644 --- a/GateDge2023.sln +++ b/GateDge2023.sln @@ -23,11 +23,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTestProject1", "UnitTes EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "天大药业(珠海)有限公司", "天大药业(珠海)有限公司", "{56C57ADC-8E92-4340-AC25-B7647758D4EB}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SQLServer", "SQLServer", "{96D996D2-FAEA-41A0-95BA-B1F88C4DC42E}" - ProjectSection(SolutionItems) = preProject - SAL_OUTSTOCK\SQLServer\月度生产计划表-预测单.sql = SAL_OUTSTOCK\SQLServer\月度生产计划表-预测单.sql - SAL_OUTSTOCK\SQLServer\月度生产计划表.sql = SAL_OUTSTOCK\SQLServer\月度生产计划表.sql - EndProjectSection +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "月度生产计划", "月度生产计划", "{A362AFBC-FC73-46A6-9185-15C17E694538}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonthlyProductionSchedule", "MonthlyProductionSchedule\MonthlyProductionSchedule.csproj", "{86DA044C-9D3B-43BD-8BDB-24B65E152604}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -59,6 +57,10 @@ Global {6EE96AB5-8FD3-4A48-912A-CA2AF5B82300}.Debug|Any CPU.Build.0 = Debug|Any CPU {6EE96AB5-8FD3-4A48-912A-CA2AF5B82300}.Release|Any CPU.ActiveCfg = Release|Any CPU {6EE96AB5-8FD3-4A48-912A-CA2AF5B82300}.Release|Any CPU.Build.0 = Release|Any CPU + {86DA044C-9D3B-43BD-8BDB-24B65E152604}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {86DA044C-9D3B-43BD-8BDB-24B65E152604}.Debug|Any CPU.Build.0 = Debug|Any CPU + {86DA044C-9D3B-43BD-8BDB-24B65E152604}.Release|Any CPU.ActiveCfg = Release|Any CPU + {86DA044C-9D3B-43BD-8BDB-24B65E152604}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -70,7 +72,8 @@ Global {2E8D2379-C8CB-47E1-BF89-A11111F18A08} = {F03B5F75-6DCD-4FF8-989F-403C5EA0AA5B} {50532462-8F7F-455C-B4B3-732ED764E2FA} = {4ACB1DA8-8A4D-451A-A5FB-3CBD7A261263} {6EE96AB5-8FD3-4A48-912A-CA2AF5B82300} = {2217EA0E-E53F-4ECC-A49D-F38BC743F47A} - {96D996D2-FAEA-41A0-95BA-B1F88C4DC42E} = {56C57ADC-8E92-4340-AC25-B7647758D4EB} + {A362AFBC-FC73-46A6-9185-15C17E694538} = {56C57ADC-8E92-4340-AC25-B7647758D4EB} + {86DA044C-9D3B-43BD-8BDB-24B65E152604} = {A362AFBC-FC73-46A6-9185-15C17E694538} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {16F7DBDD-F487-41D6-A856-9E9B7B3F61C5} diff --git a/MonthlyProductionSchedule/MonthlyProductionSchedule.csproj b/MonthlyProductionSchedule/MonthlyProductionSchedule.csproj new file mode 100644 index 0000000..91b1207 --- /dev/null +++ b/MonthlyProductionSchedule/MonthlyProductionSchedule.csproj @@ -0,0 +1,76 @@ + + + + + Debug + AnyCPU + {86DA044C-9D3B-43BD-8BDB-24B65E152604} + Library + Properties + MonthlyProductionSchedule + MonthlyProductionSchedule + v4.5 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.App.dll + + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Core.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.DataEntity.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Model.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.BD.Contracts.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.SCM.App.Stock.Report.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.SCM.Stock.Report.PlugIn.dll + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs b/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs new file mode 100644 index 0000000..479479d --- /dev/null +++ b/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs @@ -0,0 +1,301 @@ +using Kingdee.BOS.Contracts.Report; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ComponentModel; +using Kingdee.BOS; +using Kingdee.BOS.Util; +using Kingdee.BOS.Core; +using Kingdee.BOS.Core.Report; +using Kingdee.BOS.Core.Report.PlugIn; +using Kingdee.BOS.Core.Report.PlugIn.Args; +using Kingdee.BOS.Core.List; +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.Core.Metadata; + + +namespace MonthlyProductionSchedule +{ + [Description("生产计划表-服务插件"), HotUpdate] + public class ProductionPlanRptPlugIn : SysReportBaseService + { + /***********事件执行顺序************* + 2015/8/31 18:04:12 : Initialize + 2015/8/31 18:04:12 : GetTableName + 2015/8/31 18:04:15 : BuilderReportSqlAndTempTable + 2015/8/31 18:04:15 : GetIdentityFieldIndexSQL + 2015/8/31 18:04:15 : ExecuteBatch + 2015/8/31 18:04:19 : GetReportHeaders + 2015/8/31 18:04:19 : GetReportTitles + 2015/8/31 18:04:27 : GetTableName + 2015/8/31 18:04:27 : GetIdentityFieldIndexSQL + 2015/8/31 18:04:28 : ExecuteBatch + 2015/8/31 18:04:28 : AnalyzeDspCloumn + 2015/8/31 18:04:28 : AfterCreateTempTable + 2015/8/31 18:04:28 : GetSummaryColumnInfo + 2015/8/31 18:04:28 : GetSummaryColumsSQL + 2015/8/31 18:04:28 : GetTableName + 2015/8/31 18:04:28 : GetTableName + 2015/8/31 18:04:29 : ExecuteBatch + 2015/8/31 18:04:29 : GetIdentityFieldIndexSQL + 2015/8/31 18:04:29 : ExecuteBatch + 2015/8/31 18:04:29 : CreateGroupSummaryData + 2015/8/31 18:04:29 : GetListData + 2015/8/31 18:04:30 : GetReportData + 2015/8/31 18:04:30 : GetRowsCount + 2015/8/31 18:04:30 : GetListData + */ + + public override void Initialize() + { + base.Initialize(); + // 简单账表类型:普通、树形、分页 + this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL; + // 报表名称 + this.ReportProperty.ReportName = new LocaleValue("生产计划表", base.Context.UserLocale.LCID); + // + this.IsCreateTempTableByPlugin = true; + // + this.ReportProperty.IsUIDesignerColumns = false; + // + this.ReportProperty.IsGroupSummary = true; + // + this.ReportProperty.SimpleAllCols = false; + // 单据主键:两行FID相同,则为同一单的两条分录,单据编号可以不重复显示 + this.ReportProperty.PrimaryKeyFieldName = "FID"; + // + this.ReportProperty.IsDefaultOnlyDspSumAndDetailData = true; + + // 报表主键字段名:默认为FIDENTITYID,可以修改 + //this.ReportProperty.IdentityFieldName = "FIDENTITYID"; + // + // 设置精度控制 + var list = new List(); + //// 数量 + //list.Add(new DecimalControlField + //{ + // ByDecimalControlFieldName = "FQty", + // DecimalControlFieldName = "FUnitPrecision" + //}); + //// 单价 + //list.Add(new DecimalControlField + //{ + // ByDecimalControlFieldName = "FTAXPRICE", + // DecimalControlFieldName = "FPRICEDIGITS" + //}); + //// 金额 + //list.Add(new DecimalControlField + //{ + // ByDecimalControlFieldName = "FALLAMOUNT", + // DecimalControlFieldName = "FAMOUNTDIGITS" + //}); + this.ReportProperty.DecimalControlFieldList = list; + } + + public override string GetTableName() + { + var result = base.GetTableName(); + return result; + } + + /// + /// 向报表临时表,插入报表数据 + /// + /// + /// + public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) + { + base.BuilderReportSqlAndTempTable(filter, tableName); + + // 拼接过滤条件 : filter + // 略 + + // 默认排序字段:需要从filter中取用户设置的排序字段 + string seqFld = string.Format(base.KSQL_SEQ, " t0.FID "); + + // 取数SQL + // FID, FEntryId, 编号、状态、物料、数量、单位、单位精度、单价、价税合计 + + var startDate = "2023-12-01"; + var endDate = "2023-12-31"; + string sql = $@" +EXEC PROC_ProductionSchedule '{tableName}','{startDate}','{endDate}', {base.Context.UserLocale.LCID} ,'{seqFld}'; +"; + DBUtils.ExecuteDynamicObject(this.Context, sql); + } + protected override string GetIdentityFieldIndexSQL(string tableName) + { + string result = base.GetIdentityFieldIndexSQL(tableName); + return result; + } + + protected override void ExecuteBatch(List listSql) + { + base.ExecuteBatch(listSql); + } + /// + /// 构建出报表列 + /// + /// + /// + /// + /// // 如下代码,演示如何设置同一分组的分组头字段合并 + /// // 需配合Initialize事件,设置分组依据字段(PrimaryKeyFieldName) + /// ReportHeader header = new ReportHeader(); + /// header.Mergeable = true; + /// int width = 80; + /// ListHeader headChild1 = header.AddChild("FBILLNO", new LocaleValue("应付单号")); + /// headChild1.Width = width; + /// headChild1.Mergeable = true; + /// + /// ListHeader headChild2 = header.AddChild("FPURMAN", new LocaleValue("采购员")); + /// headChild2.Width = width; + /// headChild2.Mergeable = true; + /// + public override ReportHeader GetReportHeaders(IRptParams filter) + { + var date = System.DateTime.Now; + + // FID, FEntryId, + var _colIndex = 0; + ReportHeader header = new ReportHeader(); + + header.AddChild("FNAME", new LocaleValue("产品名称"), _colIndex++); + header.AddChild("ShelfLife", new LocaleValue("有效期"), _colIndex++); + header.AddChild("ShelfLife", new LocaleValue("标准批量"), _colIndex++); + header.AddChild("FLOTYIELD", new LocaleValue("每批产量"), _colIndex++); + header.AddChild("FPACKUNITCONVERRATIO", new LocaleValue("包装规格"), _colIndex++); + header.AddChild("FPACKUNITCONVT", new LocaleValue("包装规格"), _colIndex++); + header.AddChild("FPACKUNITNAME", new LocaleValue("单位"), _colIndex++); + header.AddChild("ShelfLife", new LocaleValue("安全库存量"), _colIndex++); + header.AddChild("SAFESTOCK", new LocaleValue("安全库存数量"), _colIndex++); + header.AddChild("M01", new LocaleValue("本月预计需求量"), _colIndex++); + header.AddChild("S01", new LocaleValue(date.AddMonths(-1).ToString("yyyyMM") + "发货量"), _colIndex++); + header.AddChild("S02", new LocaleValue(date.AddMonths(-2).ToString("yyyyMM") + "发货量"), _colIndex++); + header.AddChild("S03", new LocaleValue(date.AddMonths(-3).ToString("yyyyMM") + "发货量"), _colIndex++); + header.AddChild("FSPECIFICATION", new LocaleValue("已入库量"), _colIndex++); + header.AddChild("FSPECIFICATION", new LocaleValue("在生产量"), _colIndex++); + header.AddChild("FSPECIFICATION", new LocaleValue("合计入库量"), _colIndex++); + header.AddChild("OrderLotQty", new LocaleValue("系统计划生产批数"), _colIndex++); + header.AddChild("FirmLotQty", new LocaleValue("确认计划生产批数"), _colIndex++); + header.AddChild("FFirmQty", new LocaleValue("确认计划生产量"), _colIndex++); + header.AddChild("Note", new LocaleValue("备注"), _colIndex++); + + return header; + } + + public override ReportTitles GetReportTitles(IRptParams filter) + { + var result = base.GetReportTitles(filter); + var date = System.DateTime.Now; + DynamicObject dyFilter = filter.FilterParameter.CustomFilter; + if (dyFilter != null) + { + if (result == null) + { + result = new ReportTitles(); + } + //result.AddTitle("F_JD_Date", Convert.ToString(dyFilter["F_JD_Date"])); + + result.AddTitle("FNameLabel", $"{date.AddMonths(-1).ToString("yyyyyMMM")}"); + } + return result; + } + + protected override string AnalyzeDspCloumn(IRptParams filter, string tablename) + { + string result = base.AnalyzeDspCloumn(filter, tablename); + return result; + } + protected override void AfterCreateTempTable(string tablename) + { + base.AfterCreateTempTable(tablename); + } + + /// + /// 设置报表合计列 + /// + /// + /// + public override List GetSummaryColumnInfo(IRptParams filter) + { + var result = base.GetSummaryColumnInfo(filter); + return result; + } + protected override string GetSummaryColumsSQL(List summaryFields) + { + var result = base.GetSummaryColumsSQL(summaryFields); + return result; + } + protected override System.Data.DataTable GetListData(string sSQL) + { + var result = base.GetListData(sSQL); + return result; + } + protected override System.Data.DataTable GetReportData(IRptParams filter) + { + var result = base.GetReportData(filter); + return result; + } + protected override System.Data.DataTable GetReportData(string tablename, IRptParams filter) + { + var result = base.GetReportData(tablename, filter); + return result; + } + public override int GetRowsCount(IRptParams filter) + { + var result = base.GetRowsCount(filter); + return result; + } + protected override string BuilderFromWhereSQL(IRptParams filter) + { + string result = base.BuilderFromWhereSQL(filter); + return result; + } + protected override string BuilderSelectFieldSQL(IRptParams filter) + { + string result = base.BuilderSelectFieldSQL(filter); + return result; + } + protected override string BuilderTempTableOrderBySQL(IRptParams filter) + { + string result = base.BuilderTempTableOrderBySQL(filter); + return result; + } + public override void CloseReport() + { + base.CloseReport(); + } + protected override string CreateGroupSummaryData(IRptParams filter, string tablename) + { + string result = base.CreateGroupSummaryData(filter, tablename); + return result; + } + protected override void CreateTempTable(string sSQL) + { + base.CreateTempTable(sSQL); + } + public override void DropTempTable() + { + base.DropTempTable(); + } + public override System.Data.DataTable GetList(IRptParams filter) + { + var result = base.GetList(filter); + return result; + } + public override List GetOrgIdList(IRptParams filter) + { + var result = base.GetOrgIdList(filter); + return result; + } + public override List GetTreeNodes(IRptParams filter) + { + var result = base.GetTreeNodes(filter); + return result; + } + + } +} diff --git a/MonthlyProductionSchedule/Properties/AssemblyInfo.cs b/MonthlyProductionSchedule/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..d0ab5f8 --- /dev/null +++ b/MonthlyProductionSchedule/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("MonthlyProductionSchedule")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MonthlyProductionSchedule")] +[assembly: AssemblyCopyright("Copyright © 2023")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("86da044c-9d3b-43bd-8bdb-24b65e152604")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/MonthlyProductionSchedule/SQLServer/月度生产计划表-预测单.sql b/MonthlyProductionSchedule/SQLServer/月度生产计划表-预测单.sql new file mode 100644 index 0000000..c3e5a37 --- /dev/null +++ b/MonthlyProductionSchedule/SQLServer/月度生产计划表-预测单.sql @@ -0,0 +1,140 @@ + +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_ProductionSchedule') + DROP PROCEDURE dbo.PROC_ProductionSchedule; +GO + +CREATE PROCEDURE PROC_ProductionSchedule + @TableName varchar(100) + ,@STARTDATE date + ,@ENDDATE date + ,@LCID int + ,@SeqFld varchar(200) +AS +begin + + SELECT + A.FID + ,A.FBILLNO + ,AE.FMATERIALID + ,AE.FENTRYID + ,C.FNUMBER + ,C_L.FNAME + ,C_L.FSPECIFICATION + --,(CASE + -- CS.FEXPUNIT + -- WHEN 'Y' THEN + -- CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) ) + '' + -- WHEN 'M' THEN + -- CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) /12 ) + '' + -- WHEN 'D' THEN + -- CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) /365) + '' ELSE '' + --END) AS 'Ч' + ,(CASE + CS.FEXPUNIT + WHEN 'Y' THEN + CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) * 12 ) + '' + WHEN 'M' THEN + CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) ) + '' + WHEN 'D' THEN + CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) / 365 * 12) + '' ELSE '' + END) AS 'ShelfLife' + --,'' AS '׼' + ,CS.FSAFESTOCK --ȫ + --,CS.FSTOREUNITID --浥λ + --,CP.FLOTYIELD -- 'ÿ' + --,CP.FPACKUNITCONVERRATIO -- 'װ' + --,CP.FPACKUNITCONVERRATIO -- 'װ-' + --,CP.FPACKUNITID -- 'λ' + --,AE.M01 + --,AE.S01 + --,AE.S02 + --,AE.S03 + ,'' AS 'M01' + ,'' AS 'S01' + ,'' AS 'S02' + ,'' AS 'S03' + ,B.FFirmQty + ,B.FOrderQty + ,B.FMATERIALID + FROM + ( + SELECT + A.FMATERIALID + ,A_B.FSALEORDERENTRYID + ,SUM(A.FFirmQty) as 'FFirmQty' + ,SUM(A.FORDERQTY) as 'FOrderQty' + FROM + T_PLN_PLANORDER A + LEFT JOIN T_PLN_PLANORDER_B A_B ON A.FID = A_B.FID + WHERE + A.FRELEASETYPE = 1 --AND (A.FRELEASESTATUS = 1 OR A.FRELEASESTATUS = 2 ) + group By + A.FRELEASETYPE + ,A.FMATERIALID + ,A_B.FSALEORDERENTRYID + ) B + --Ԥⵥ + LEFT JOIN T_PLN_FORECASTENTRY AE ON B.FSALEORDERENTRYID = AE.FENTRYID + LEFT JOIN T_PLN_FORECAST A ON A.FID = AE.FID + LEFT JOIN T_BD_MATERIAL C ON C.FMATERIALID = B.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L C_L ON C_L.FMATERIALID = B.FMATERIALID + LEFT JOIN T_BD_MATERIALSTOCK CS ON CS.FMATERIALID = B.FMATERIALID + LEFT JOIN T_BD_MATERIALPRODUCE CP ON CP.FMATERIALID = B.FMATERIALID + WHERE + --A.FDATE BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59' + A.FDATE BETWEEN @STARTDATE AND @ENDDATE + + --µλ + alter table #TMPMPS add STOREUNITNAME varchar(10) + update #TMPMPS set #TMPMPS.STOREUNITNAME = B_L.FNAME from T_BD_UNIT_L B_L where B_L.FUNITID = #TMPMPS.FSTOREUNITID + + --alter table #TMPMPS add FPACKUNITNAME varchar(10) + --update #TMPMPS set #TMPMPS.FPACKUNITNAME = B_L.FNAME from T_BD_UNIT_L B_L where B_L.FUNITID = #TMPMPS.FPACKUNITID + + declare @sql varchar(2000) + + set @sql = ' + select + FID + ,FENTRYID + ,FBILLNO + ,FMATERIALID + ,FNAME + ,FSPECIFICATION + ,ShelfLife + --,'''' --׼ + --,FLOTYIELD --ÿ + --,FPACKUNITCONVERRATIO -- װ + --,CAST(FPACKUNITCONVERRATIO AS VARCHAR)+STOREUNITNAME+''/''+FPACKUNITNAME as FPACKUNITCONVT --װ + --,FPACKUNITID --λ + ,FSTOREUNITID + ,STOREUNITNAME + ,'''' AS --ȫ- + ,CAST(FSAFESTOCK AS INT) AS SAFESTOCK + ,FSEQ + ,0 AS M01 + ,0 AS S01 + ,0 AS S02 + ,0 AS S03 + --,(B.PlanQty / CP.FPACKUNITCONVERRATIO)AS ''ϵͳƻ'' + --,(B.VerifyQty / CP.FPACKUNITCONVERRATIO) AS ''ȷϼƻ'' + ,FFirmQty --ȷϼƻ + ,FFirmQty as FirmLotQty --ȷ + ,FOrderQty as OrderLotQty --ƻ + ,'+@SeqFld+' + into '+ @TableName +' From #TMPMPS t0 ' + --select @sql + EXECUTE(@sql) + drop table #TMPMPS +end + +go + +--DECLARE @STARTDATE DATETIME ,@ENDDATE DATETIME +--SELECT +-- @STARTDATE = DATEADD(MONTH, DATEDIFF(MONTH, 0, '2023-12-15'), 0) +-- ,@ENDDATE = DATEADD(MS,-3, DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD(MONTH, 1, '2023-12-15')), 0)) +--DECLARE @LCID INT +--SET @LCID = 2052 + +--EXEC PROC_ProductionSchedule @STARTDATE,@ENDDATE, @LCID; \ No newline at end of file diff --git a/SAL_OUTSTOCK/MergePrintIssueAnInvPlugIn.cs b/SAL_OUTSTOCK/MergePrintIssueAnInvPlugIn.cs index 71122a2..293b508 100644 --- a/SAL_OUTSTOCK/MergePrintIssueAnInvPlugIn.cs +++ b/SAL_OUTSTOCK/MergePrintIssueAnInvPlugIn.cs @@ -96,7 +96,6 @@ namespace SAL_OUTSTOCK _doingButtonFlag = false; } - /// /// 设置content报文明文信息 /// diff --git a/SAL_OUTSTOCK/SQLServer/月度生产计划表-预测单.sql b/SAL_OUTSTOCK/SQLServer/月度生产计划表-预测单.sql index 7300218..502aa92 100644 --- a/SAL_OUTSTOCK/SQLServer/月度生产计划表-预测单.sql +++ b/SAL_OUTSTOCK/SQLServer/月度生产计划表-预测单.sql @@ -1,48 +1,86 @@ -declare @LCID int -set @LCID = 2052 +DECLARE @DATE DATE,@STARTDATE DATETIME ,@ENDDATE DATETIME +SET @DATE = '2023-12-15' +SELECT + @STARTDATE = DATEADD(MONTH, DATEDIFF(MONTH, 0, @DATE), 0) + ,@ENDDATE = DATEADD(MS,-3, DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD(MONTH, 1, @DATE)), 0)) + +DECLARE @LCID INT +SET @LCID = 2052 SELECT A.FBILLNO - ,ae.FMATERIALID - ,b.FBILLNO - --,'' AS 'Ʒ' + ,AE.FMATERIALID + ,AE.FENTRYID + ,C_L.FNAME AS 'Ʒ' + ,C_L.FSPECIFICATION AS 'ͺ' --,(CASE - -- FEXPUNIT + -- CS.FEXPUNIT -- WHEN 'Y' THEN - -- CONVERT ( VARCHAR, BA.FEXPPERIOD ) + '' + -- CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) ) + '' -- WHEN 'M' THEN - -- CONVERT ( VARCHAR, ba.FEXPPERIOD) + '' + -- CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) /12 ) + '' -- WHEN 'D' THEN - -- CONVERT ( VARCHAR, ba.FEXPPERIOD ) + '' ELSE '' - --END) as 'Ч' - --,'' as '׼' - --,'' as 'ÿ' - --,'' as 'װ' - --,'' as 'װ-ֵ' - --,a.FUNITID - --,'' as 'λ' - --,'' as 'ȫ' - --,BA.FSAFESTOCK AS 'ȫ' - ,AE.m01 as 'Ԥ' - ,AE.s01 as 'ǰ·' - ,AE.s02 as 'ǰ·' - ,AE.s03 as 'ǰһ·' - --,EE_A.FSTOCKINQUAAUXQTY as '' - --,'' as '' - --,(EE_A.FSTOCKINQUAAUXQTY + 0) as 'ϼƿ' - --,'' as 'ƻ' - --,DE.FQTY AS 'ƻ' + -- CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) /365) + '' ELSE '' + --END) AS 'Ч' + ,(CASE + CS.FEXPUNIT + WHEN 'Y' THEN + CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) * 12 ) + '' + WHEN 'M' THEN + CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) ) + '' + WHEN 'D' THEN + CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) / 365 * 12) + '' ELSE '' + END) AS 'Ч' + --,'' AS '׼' + --,CP.FLOTYIELD AS 'ÿ' + --,CP.FPACKUNITCONVERRATIO AS 'װ' + --,CP.FPACKUNITCONVERRATIO AS 'װ-' + --,CP.FPACKUNITID AS 'λ' + ,CS.FSTOREUNITID AS 'λ' + ,'' AS 'ȫ' + ,CAST(CS.FSAFESTOCK AS INT) AS 'ȫ' + ,AE.FSEQ + --,AE.M01 AS 'Ԥ' + --,AE.S01 AS 'ǰ·' + --,AE.S02 AS 'ǰ·' + --,AE.S03 AS 'ǰһ·' + ,'' AS 'ǰ·' + ,'' AS 'ǰ·' + ,'' AS 'ǰһ·' + --,DE.FSRCBILLNO + --,EE_A.FSTOCKINQUAAUXQTY AS '' + --,'' AS '' + --,(EE_A.FSTOCKINQUAAUXQTY + 0) AS 'ϼƿ' + --,'' AS 'ƻ' + --,(B.PlanQty / CP.FPACKUNITCONVERRATIO)AS 'ϵͳƻ' + --,(B.VerifyQty / CP.FPACKUNITCONVERRATIO) AS 'ȷϼƻ' + ,B.VerifyQty AS 'ȷϼƻ' --,DE.FREMARK AS 'ע' FROM T_PLN_FORECAST A --Ԥⵥ - left join T_PLN_FORECASTENTRY AE on a.FID = ae.FID - left join T_PLN_PLANORDER_B B_b on ae.FENTRYID = b_b.FSALEORDERENTRYID and a.FID = b_b.FSALEORDERID - left join T_PLN_PLANORDER B on b.FID = b_b.FID - --T_PLN_PLANORDER A --ƻ - --LEFT JOIN T_BD_MATERIAL B ON A.FMATERIALID = B.FMATERIALID -- - --LEFT JOIN T_BD_MATERIALSTOCK BA ON BA.FMATERIALID = B.FMATERIALID - --LEFT JOIN T_PLN_FORECASTENTRY DE ON DE.FMATERIALID = B.FMATERIALID --Ԥⵥ - --left join T_PLN_FORECAST d on de.FID = d.FID + LEFT JOIN T_PLN_FORECASTENTRY AE ON A.FID = AE.FID + LEFT JOIN ( + SELECT + A.FMATERIALID + ,A_B.FSALEORDERENTRYID + ,SUM(case when A.FRELEASESTATUS = 1 then A.FDemandQty else 0 end) as 'PlanQty' + ,SUM(case when A.FRELEASESTATUS = 2 then A.FDemandQty else 0 end) as 'VerifyQty' + FROM + T_PLN_PLANORDER A + LEFT JOIN T_PLN_PLANORDER_B A_B ON A.FID = A_B.FID + WHERE + A.FRELEASETYPE = 1 AND (A.FRELEASESTATUS = 1 OR A.FRELEASESTATUS = 2 ) + group By + A.FRELEASETYPE + ,A.FMATERIALID + ,A_B.FSALEORDERENTRYID + ) B ON B.FSALEORDERENTRYID = AE.FENTRYID + LEFT JOIN T_BD_MATERIAL C ON C.FMATERIALID = AE.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L C_L ON C_L.FMATERIALID = AE.FMATERIALID + LEFT JOIN T_BD_MATERIALSTOCK CS ON CS.FMATERIALID = AE.FMATERIALID + LEFT JOIN T_BD_MATERIALPRODUCE CP ON CP.FMATERIALID = C.FMATERIALID + --LEFT JOIN T_PRD_MOENTRY_LK DE_LK ON DE_LK.FSID = B.FID + --LEFT JOIN T_PRD_MOENTRY DE ON DE.FENTRYID = DE_LK.FENTRYID --LEFT JOIN T_PRD_MOENTRY EE ON EE.FMATERIALID = B.FMATERIALID -- --LEFT JOIN T_PRD_MOENTRY_A EE_A ON EE_A.FENTRYID = EE.FENTRYID AND EE.FID =EE_A.FID -- -where a.fdate ='2023-12-01' --- A.FRELEASETYPE = 1 \ No newline at end of file +WHERE + A.FDATE BETWEEN @STARTDATE AND @ENDDATE diff --git a/SAL_OUTSTOCK/SQLServer/月度生产计划表.sql b/SAL_OUTSTOCK/SQLServer/月度生产计划表.sql index 46a1eb8..d314d08 100644 --- a/SAL_OUTSTOCK/SQLServer/月度生产计划表.sql +++ b/SAL_OUTSTOCK/SQLServer/月度生产计划表.sql @@ -1,10 +1,10 @@ ---DECLARE @date date,@startDate datetime ,@endDate datetime ---set @date = '2023-07-15' ---select --- @startDate = dateadd(month, datediff(month, 0, @date), 0) --- ,@endDate = dateadd(ms,-3, dateadd(month, datediff(month, 0, dateadd(month, 1, @date)), 0)) ---select ---@startDate,@endDate +DECLARE @date date,@startDate datetime ,@endDate datetime +set @date = '2023-07-15' +select + @startDate = dateadd(month, datediff(month, 0, @date), 0) + ,@endDate = dateadd(ms,-3, dateadd(month, datediff(month, 0, dateadd(month, 1, @date)), 0)) +select +@startDate,@endDate declare @LCID int set @LCID = 2052 @@ -22,8 +22,6 @@ SELECT WHEN 'D' THEN CONVERT ( VARCHAR, ba.FEXPPERIOD ) + '日' ELSE '' END) as '有效期' - - ,'' as '有效期' ,'' as '标准批量' ,'' as '每批产量(件)' ,'' as '包装规格' diff --git a/UseGetFmaterialData/BeforeSaveEventBillPlugIn.cs b/UseGetFmaterialData/BeforeSaveEventBillPlugIn.cs index be99c1d..29e8f0a 100644 --- a/UseGetFmaterialData/BeforeSaveEventBillPlugIn.cs +++ b/UseGetFmaterialData/BeforeSaveEventBillPlugIn.cs @@ -26,38 +26,37 @@ namespace UseGetFmaterialData { base.BeforeSave(e); - if (this.Model.DataObject["Id"].Long2Int() == 0) - if (OrgIdCheck()) + if (OrgIdCheck()) + { + Entity details = null; + + //其他出库单 明细表 + if (this.View.UserParameterKey.Equals("STK_MisDelivery")) + details = this.View.BusinessInfo.GetEntity("FEntity"); + + //直接调拨单 明细表 + if (this.View.UserParameterKey.Equals("STK_TransferDirect")) + details = this.View.BusinessInfo.GetEntity("FBillEntry"); + + if (details != null) { - Entity details = null; + var entrys = this.View.Model.GetEntityDataObject(details); - //其他出库单 明细表 - if (this.View.UserParameterKey.Equals("STK_MisDelivery")) - details = this.View.BusinessInfo.GetEntity("FEntity"); - - //直接调拨单 明细表 - if (this.View.UserParameterKey.Equals("STK_TransferDirect")) - details = this.View.BusinessInfo.GetEntity("FBillEntry"); - - if (details != null) + if (entrys != null && entrys.Any()) { - var entrys = this.View.Model.GetEntityDataObject(details); - - if (entrys != null && entrys.Any()) + var tempValue2 = this.View.Model.GetValue("FDATE"); + var dateValue = tempValue2.IsNullOrEmptyOrWhiteSpace() ? string.Empty : tempValue2.ToString(); + foreach (var entry in entrys) { - var tempValue2 = this.View.Model.GetValue("FDATE"); - var dateValue = tempValue2.IsNullOrEmptyOrWhiteSpace() ? string.Empty : tempValue2.ToString(); - foreach (var entry in entrys) - { - var rowIndex = this.View.Model.GetRowIndex(details, entry); - var tempValue = entry["MaterialId_Id"]; - var rowValue = tempValue.IsNullOrEmptyOrWhiteSpace() ? string.Empty : tempValue.ToString(); - UpdReferPriceAndExplain(dateValue, rowValue, rowIndex); - } - TotalReferAmount(entrys, details); + var rowIndex = this.View.Model.GetRowIndex(details, entry); + var tempValue = entry["MaterialId_Id"]; + var rowValue = tempValue.IsNullOrEmptyOrWhiteSpace() ? string.Empty : tempValue.ToString(); + UpdReferPriceAndExplain(dateValue, rowValue, rowIndex); } + TotalReferAmount(entrys, details); } } + } } @@ -151,7 +150,7 @@ namespace UseGetFmaterialData ////小数类型参考金额控件 //this.View.Model.SetValue("FReferAmountM", 0, row); //参考方向 - this.View.Model.SetValue("FExplain", "", row); + this.View.Model.SetValue("FExplain", "没有找到价格", row); } else { @@ -186,7 +185,7 @@ namespace UseGetFmaterialData //小数类型参考金额控件 //this.View.Model.SetValue("FReferAmountM", 0, row); //参考方向 - this.View.Model.SetValue("FExplain", "", row); + this.View.Model.SetValue("FExplain", "没有找到价格", row); } } } diff --git a/UseGetFmaterialData/DataChangedEventFormPlugIn.cs b/UseGetFmaterialData/DataChangedEventFormPlugIn.cs index d161ca8..439f943 100644 --- a/UseGetFmaterialData/DataChangedEventFormPlugIn.cs +++ b/UseGetFmaterialData/DataChangedEventFormPlugIn.cs @@ -82,7 +82,7 @@ namespace UseGetFmaterialData var referPrice = this.View.Model.GetValue("FReferPrice", e.Row).ToDecimalR(); var amount = (e.NewValue.ToDecimal() * referPrice).ToDecimalR(); //参考金额 - this.View.Model.SetValue("FReferAmount", amount, e.Row); + this.View.Model.SetValue("FReferAmount", amount == 0 ? "" : amount.ToString(), e.Row); //小数类型参考金额控件 //this.View.Model.SetValue("FReferAmountM", amount, e.Row); TotalReferAmount(null, null); @@ -218,7 +218,7 @@ namespace UseGetFmaterialData ////小数类型参考金额控件 //this.View.Model.SetValue("FReferAmountM", 0, row); //参考方向 - this.View.Model.SetValue("FExplain", "", row); + this.View.Model.SetValue("FExplain", "没有找到价格", row); } else { @@ -253,7 +253,7 @@ namespace UseGetFmaterialData //小数类型参考金额控件 //this.View.Model.SetValue("FReferAmountM", 0, row); //参考方向 - this.View.Model.SetValue("FExplain", "", row); + this.View.Model.SetValue("FExplain", "没有找到价格", row); } } }