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);
}
}
}