diff --git a/Extensions/DateTimeExtension.cs b/Extensions/DateTimeExtension.cs
new file mode 100644
index 0000000..9e59de6
--- /dev/null
+++ b/Extensions/DateTimeExtension.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace ExtensionMethods
+{
+ public static class DateTimeExtension
+ {
+ public static string ToLongFormat(this DateTime dateTime)
+ {
+ return dateTime.ToString("yyyy-MM-dd HH:mm:ss");
+ }
+
+ public static string ToShortFormat(this DateTime dateTime)
+ {
+ return dateTime.ToString("yyyy-MM-dd");
+ }
+ }
+}
diff --git a/Extensions/ExtensionMethods.csproj b/Extensions/ExtensionMethods.csproj
index 89d985a..e728549 100644
--- a/Extensions/ExtensionMethods.csproj
+++ b/Extensions/ExtensionMethods.csproj
@@ -40,6 +40,7 @@
+
diff --git a/GateDge2023.sln b/GateDge2023.sln
index 791d201..3c8132d 100644
--- a/GateDge2023.sln
+++ b/GateDge2023.sln
@@ -29,6 +29,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonthlyProductionSchedule",
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "旭东", "旭东", "{0C4E3DC3-F1FA-4BD7-8D81-BF5EFD452A51}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "汇威", "汇威", "{42311C80-7B4C-4353-BCA9-4ABD024290C8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kingdee.K3.SCM.Sal.Report.PlugInEx", "Kingdee.K3.SCM.Sal.Report.PlugInEx\Kingdee.K3.SCM.Sal.Report.PlugInEx.csproj", "{01F02D15-2726-4077-80FC-9E38EF29BABC}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -63,6 +67,10 @@ Global
{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
+ {01F02D15-2726-4077-80FC-9E38EF29BABC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {01F02D15-2726-4077-80FC-9E38EF29BABC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {01F02D15-2726-4077-80FC-9E38EF29BABC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {01F02D15-2726-4077-80FC-9E38EF29BABC}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -76,6 +84,7 @@ Global
{6EE96AB5-8FD3-4A48-912A-CA2AF5B82300} = {2217EA0E-E53F-4ECC-A49D-F38BC743F47A}
{A362AFBC-FC73-46A6-9185-15C17E694538} = {56C57ADC-8E92-4340-AC25-B7647758D4EB}
{86DA044C-9D3B-43BD-8BDB-24B65E152604} = {A362AFBC-FC73-46A6-9185-15C17E694538}
+ {01F02D15-2726-4077-80FC-9E38EF29BABC} = {42311C80-7B4C-4353-BCA9-4ABD024290C8}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {16F7DBDD-F487-41D6-A856-9E9B7B3F61C5}
diff --git a/Kingdee.K3.SCM.Sal.Report.PlugInEx/Class1.cs b/Kingdee.K3.SCM.Sal.Report.PlugInEx/Class1.cs
new file mode 100644
index 0000000..2f147f9
--- /dev/null
+++ b/Kingdee.K3.SCM.Sal.Report.PlugInEx/Class1.cs
@@ -0,0 +1,13 @@
+using Kingdee.K3.SCM.Sal.Report.PlugIn;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Kingdee.K3.SCM.Sal.Report.PlugInEx
+{
+ public class Class1: SaleOutStockDetailEdit
+ {
+ }
+}
diff --git a/Kingdee.K3.SCM.Sal.Report.PlugInEx/Kingdee.K3.SCM.Sal.Report.PlugInEx.csproj b/Kingdee.K3.SCM.Sal.Report.PlugInEx/Kingdee.K3.SCM.Sal.Report.PlugInEx.csproj
new file mode 100644
index 0000000..97b0e65
--- /dev/null
+++ b/Kingdee.K3.SCM.Sal.Report.PlugInEx/Kingdee.K3.SCM.Sal.Report.PlugInEx.csproj
@@ -0,0 +1,69 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {01F02D15-2726-4077-80FC-9E38EF29BABC}
+ Library
+ Properties
+ Kingdee.K3.SCM.Sal.Report.PlugInEx
+ Kingdee.K3.SCM.Sal.Report.PlugInEx
+ 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.Sal.Report.PlugIn.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Kingdee.K3.SCM.Sal.Report.PlugInEx/Properties/AssemblyInfo.cs b/Kingdee.K3.SCM.Sal.Report.PlugInEx/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..e0928a4
--- /dev/null
+++ b/Kingdee.K3.SCM.Sal.Report.PlugInEx/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("Kingdee.K3.SCM.Sal.Report.PlugInEx")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Kingdee.K3.SCM.Sal.Report.PlugInEx")]
+[assembly: AssemblyCopyright("Copyright © 2023")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("01f02d15-2726-4077-80fc-9e38ef29babc")]
+
+// 程序集的版本信息由下列四个值组成:
+//
+// 主版本
+// 次版本
+// 生成号
+// 修订号
+//
+//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
+//通过使用 "*",如下所示:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/MonthlyProductionSchedule/AutoRecordsInventoryPlugIn.cs b/MonthlyProductionSchedule/AutoRecordsInventoryPlugIn.cs
new file mode 100644
index 0000000..be5cb9b
--- /dev/null
+++ b/MonthlyProductionSchedule/AutoRecordsInventoryPlugIn.cs
@@ -0,0 +1,35 @@
+using Kingdee.BOS;
+using Kingdee.BOS.App;
+using Kingdee.BOS.App.Data;
+using Kingdee.BOS.Contracts;
+using Kingdee.BOS.Core;
+using Kingdee.BOS.ServiceHelper;
+using Kingdee.BOS.Util;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ExtensionMethods;
+
+namespace MonthlyProductionSchedule
+{
+ [Description("生产计划表-定时任务"), HotUpdate]
+ public class AutoRecordsInventoryPlugIn : IScheduleService
+ {
+ public void Run(Context ctx, Schedule schedule)
+ {
+ var newDate = DateTime.Now;
+ //var year = filter.FilterParameter.CustomFilter["DataHoldYear"].Long2Int();
+ //var month = filter.FilterParameter.CustomFilter["DataHoldMonth"].Long2Int();
+ //var date = new DateTime(year, month, 1);
+ var tableName = "TMP" + Guid.NewGuid().ToString("N").ToUpper();
+ var startDate = newDate.AddDays(1 - newDate.Day);
+ var endDate = startDate.AddMonths(1).AddDays(-1);
+ var year = newDate.Year;
+ var month = newDate.Month;
+ DBServiceHelper.Execute(ctx, $"/*dialect*/ EXEC PROC_PPL_AutoSaveCurrentData {tableName} , {newDate.ToLongFormat()} ,{startDate.ToShortFormat()} ,{endDate.ToShortFormat()} ,{year} ,{month}");
+ }
+ }
+}
diff --git a/MonthlyProductionSchedule/BarItemClickEventPlugIn.cs b/MonthlyProductionSchedule/BarItemClickEventPlugIn.cs
index 223d52f..4054c7d 100644
--- a/MonthlyProductionSchedule/BarItemClickEventPlugIn.cs
+++ b/MonthlyProductionSchedule/BarItemClickEventPlugIn.cs
@@ -1,28 +1,55 @@
-using Kingdee.BOS.Core.DynamicForm.PlugIn;
+using Kingdee.BOS.App.Data;
+using Kingdee.BOS;
+using Kingdee.BOS.Core.DynamicForm;
+using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.Core.Report.PlugIn;
+using Kingdee.BOS.Model.Report;
+using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
+using System.Data;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.Runtime.InteropServices.ComTypes;
+using System.Security.Cryptography;
namespace MonthlyProductionSchedule
{
[Description("生产计划表-点击事件"), HotUpdate]
public class BarItemClickEventPlugIn : AbstractSysReportPlugIn
{
-
public override void ButtonClick(ButtonClickEventArgs e)
{
if (e.Key.EqualsIgnoreCase("FSaveDataButton"))
{
base.ButtonClick(e);
- var t = this.View.BillBusinessInfo;
+ var reportModel = this.Model as SysReportModel; //简单帐表对应的Model
+
+
+ this.View.ShowMessage("保存数据会覆盖历史数据,是否继续?", MessageBoxOptions.OKCancel, new Action(result =>
+ {
+ if (result == MessageBoxResult.OK)
+ {
+ var tableName = this.SysReportView.Model.DataSource.TableName;
+ var para = new List();
+
+ var year = reportModel.DataObject["DataHoldYear"].Long2Int();
+ var month = reportModel.DataObject["DataHoldMonth"].Long2Int();
+
+ para.Add(new SqlParam("@tableName", KDDbType.String, tableName));
+ para.Add(new SqlParam("@FRECORDDATE", KDDbType.DateTime, System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
+ para.Add(new SqlParam("@FRECORDYEAR", KDDbType.Int64, year));
+ para.Add(new SqlParam("@FRECORDMONTH", KDDbType.Int64, month));
+
+ var res = DBUtils.ExecuteStoreProcedure(this.Context, "PROC_PPL_SaveCurrentData", para);
+
+ reportModel.DataObject["DataBDStatu"] = 1;
+ }
+ }));
return;
}
diff --git a/MonthlyProductionSchedule/MonthlyProductionSchedule.csproj b/MonthlyProductionSchedule/MonthlyProductionSchedule.csproj
index 8b8af29..a15f0fd 100644
--- a/MonthlyProductionSchedule/MonthlyProductionSchedule.csproj
+++ b/MonthlyProductionSchedule/MonthlyProductionSchedule.csproj
@@ -47,6 +47,14 @@
..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Model.dll
+
+ False
+ ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.ServiceHelper.dll
+
+
+ False
+ ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.WebApi.Client.dll
+
..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.BD.Contracts.dll
@@ -66,14 +74,25 @@
+
+
+
+
+
+
+
+
+ {50532462-8f7f-455c-b4b3-732ed764e2fa}
+ ExtensionMethods
+
\ No newline at end of file
diff --git a/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs b/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs
index 8dcaddd..0e4f83e 100644
--- a/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs
+++ b/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs
@@ -124,23 +124,27 @@ namespace MonthlyProductionSchedule
object resa = 0;
var startDate = date.ToString("yyyy-MM-dd");
var endDate = date.AddMonths(1).AddDays(-1);
- string sql = $@"
-EXEC PROC_ProductionSchedule '{tableName}','{startDate}','{endDate}', {base.Context.UserLocale.LCID} ,'{seqFld}';
-";
- //var para = new List
- //{
- // new SqlParam("@tableName", KDDbType.String,tableName),
- // new SqlParam("@startDate", KDDbType.String,startDate),
- // new SqlParam("@endDate", KDDbType.String,endDate),
- // new SqlParam("@LCID", KDDbType.Int32,base.Context.UserLocale.LCID),
- // new SqlParam("@seqFld", KDDbType.String,seqFld),
- // new SqlParam("@HasId", KDDbType.Int32, resa,ParameterDirection.Output)
- //};
+ // string sql = $@"
+ //EXEC PROC_ProductionSchedule '{tableName}','{startDate}','{endDate}', {base.Context.UserLocale.LCID} ,'{seqFld}';
+ //";
+ //DBUtils.ExecuteDynamicObject(this.Context, sql);
+ var para = new List
+ {
+ new SqlParam("@tableName", KDDbType.String,tableName),
+ new SqlParam("@startDate", KDDbType.String,startDate),
+ new SqlParam("@endDate", KDDbType.String,endDate),
+ new SqlParam("@LCID", KDDbType.Int32,base.Context.UserLocale.LCID),
+ new SqlParam("@seqFld", KDDbType.String,seqFld),
+ new SqlParam("@year", KDDbType.Int32,year),
+ new SqlParam("@month", KDDbType.Int32,month),
+ new SqlParam("@HasId", KDDbType.Int32, resa,ParameterDirection.Output)
+ };
- //var res = DBUtils.ExecuteStoreProcedure(this.Context, "PROC_ProductionSchedule", para);
- DBUtils.ExecuteDynamicObject(this.Context, sql);
+ var res = DBUtils.ExecuteStoreProcedure(this.Context, "PROC_ProductionSchedule", para);
//filter.FilterParameter.CustomOption.Add("res", res[0].Value);
+ filter.FilterParameter.CustomFilter["DataBDStatu"] = res.First(x => x.Name.Equals("@HasId")).Value;
}
+
protected override string GetIdentityFieldIndexSQL(string tableName)
{
string result = base.GetIdentityFieldIndexSQL(tableName);
@@ -183,8 +187,9 @@ EXEC PROC_ProductionSchedule '{tableName}','{startDate}','{endDate}', {base.Cont
var _colIndex = 0;
ReportHeader header = new ReportHeader();
+ header.AddChild("FNUMBER", new LocaleValue("产品编码"), _colIndex++);
header.AddChild("FNAME", new LocaleValue("产品名称"), _colIndex++);
- header.AddChild("ShelfLife", new LocaleValue("有效期"), _colIndex++);
+ header.AddChild("SHELFLIFE", new LocaleValue("有效期"), _colIndex++);
header.AddChild("StandardLot", new LocaleValue("标准批量"), _colIndex++);
header.AddChild("FLOTYIELD", new LocaleValue("每批产量"), _colIndex++);
header.AddChild("FPACKUNITCONVERRATIO", new LocaleValue("包装规格"), _colIndex++);
@@ -217,7 +222,21 @@ EXEC PROC_ProductionSchedule '{tableName}','{startDate}','{endDate}', {base.Cont
{
result = new ReportTitles();
}
- //var t = filter.FilterParameter.CustomOption["res"].Long2Int();
+ //数据保存状态
+ object saveDataStauts;
+ dyFilter.TryGetValue("DataBDStatu", out saveDataStauts);
+ result.AddTitle("FDataBDStatu", saveDataStauts.ToString());
+ result.AddTitle("FDataHoldYear", dyFilter["DataHoldYear"].ToString());
+ result.AddTitle("FDataHoldMonth", dyFilter["DataHoldMonth"].ToString());
+ result.AddTitle("FDataHoldDate", $"{dyFilter["DataHoldYear"]}-{dyFilter["DataHoldMonth"]}");
+ //if (saveDataStauts != null)
+ //{
+ // if (saveDataStauts.Long2Int() == 1)
+ // result.AddTitle("FSaveDataButton", "更新覆盖当月数据");
+ // else
+ // result.AddTitle("FSaveDataButton", "保存当月数据1");
+
+ //}
//result.AddTitle("F_JD_Date", Convert.ToString(dyFilter["F_JD_Date"]));
}
return result;
diff --git a/MonthlyProductionSchedule/SQLServer/即时库存记录.sql b/MonthlyProductionSchedule/SQLServer/即时库存记录.sql
new file mode 100644
index 0000000..93a68f3
--- /dev/null
+++ b/MonthlyProductionSchedule/SQLServer/即时库存记录.sql
@@ -0,0 +1,80 @@
+IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_INQUIRPLMTMPRTP1111111111')
+ DROP PROCEDURE dbo.PROC_INQUIRPLMTMPRTP1111111111;
+GO
+
+CREATE PROCEDURE PROC_INQUIRPLMTMPRTP1111111111
+ @FRECORDDATE DATETIME
+ ,@FRECORDYEAR INT
+ ,@FRECORDMONTH INT
+AS
+BEGIN
+ SELECT
+ AE.FSRCBILLNO
+ ,AE.FMATERIALID
+ ,AE.FSALEORDERENTRYID
+ ,AE.FSALEORDERENTRYSEQ
+ ,SUM(AE.FQTY) AS FQTY
+ ,SUM(B.FFINISHQTY) AS FFINISHQTY --已入库数量
+ FROM
+ T_PRD_MO A
+ LEFT JOIN T_PRD_MOENTRY AE ON A.FID = AE.FID
+ LEFT JOIN T_PRD_MOENTRY_A AE_A ON AE_A.FENTRYID = AE.FENTRYID
+ LEFT JOIN (SELECT
+ A.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e 入库汇报 e52b554423704173b7306554708a8b05 生产汇报
+ ,AE.FMOENTRYID
+ ,FFINISHQTY
+ FROM
+ T_PRD_MORPT A
+ LEFT JOIN T_PRD_MORPTENTRY AE ON AE.FID = A.FID
+ WHERE A.FDOCUMENTSTATUS='C'
+ ) B on B.FMOENTRYID = AE.FENTRYID
+ RIGHT JOIN (
+ SELECT
+ A.FMATERIALID
+ ,A.FNUMBER
+ ,B.FSTOCKORGID
+ ,B.FLOT
+ ,SUM(B.FBASEQTY) AS FBASEQTY
+ ,@FRECORDDATE AS FRECORDDATE
+ ,@FRECORDYEAR as FRECORDYEAR
+ ,@FRECORDMONTH as FRECORDMONTH
+ ,AP.FLOTYIELD -- '每批产量'
+ ,AP.FPACKUNITCONVERRATIO -- '包装规格'
+ ,AP.FPACKUNITID -- '单位'
+ --INTO #TMPRECORD
+ FROM
+ T_BD_MATERIAL A
+ INNER JOIN T_BD_MATERIALPRODUCE AP ON AP.FMATERIALID = A.FMATERIALID
+ INNER JOIN T_STK_INVENTORY B ON A.FMASTERID = B.FMATERIALID
+ WHERE
+ B.FSTOCKORGID = 100038 And A.FDOCUMENTSTATUS = 'C'
+ GROUP BY
+ A.FMATERIALID
+ ,A.FNUMBER
+ ,B.FSTOCKORGID
+ ,B.FLOT
+ ,AP.FLOTYIELD -- '每批产量'
+ ,AP.FPACKUNITCONVERRATIO -- '包装规格'
+ ,AP.FPACKUNITID -- '单位'
+ ) C on C.FMATERIALID = AE.FMATERIALID
+ WHERE
+ AE.FSRCBILLTYPE ='PLN_PLANORDER' AND AE_A.FSTATUS <> 6 and AE.FSALEORDERENTRYID <> 0
+ GROUP BY
+ AE.FSRCBILLNO
+ ,AE.FMATERIALID
+ ,AE.FSALEORDERENTRYID
+ ,AE.FSALEORDERENTRYSEQ
+
+
+ --ALTER TABLE #TMPRECORD ADD FRECORDDATE DATETIME
+ --UPDATE #TMPRECORD SET FRECORDDATE = @FRECORDDATE
+
+ --ALTER TABLE #TMPRECORD ADD FRECORDYEAR int DEFAULT 0
+ --UPDATE #TMPRECORD SET FRECORDYEAR = @FRECORDYEAR
+
+ --ALTER TABLE #TMPRECORD ADD FRECORDMONTH int DEFAULT 0
+ --UPDATE #TMPRECORD SET FRECORDMONTH = @FRECORDMONTH
+
+ SELECT * FROM #TMPRECORD
+ DROP TABLE #TMPRECORD
+END
\ No newline at end of file
diff --git a/MonthlyProductionSchedule/SQLServer/月度生产计划表-存储表.sql b/MonthlyProductionSchedule/SQLServer/月度生产计划表-存储表.sql
index da241c1..9a90bf6 100644
--- a/MonthlyProductionSchedule/SQLServer/月度生产计划表-存储表.sql
+++ b/MonthlyProductionSchedule/SQLServer/月度生产计划表-存储表.sql
@@ -4,32 +4,42 @@ IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_INQUIRE_PLANPLMRPT')
GO
CREATE PROCEDURE PROC_INQUIRE_PLANPLMRPT
- @STARTDATE date
- ,@ENDDATE date
+ @TableName varchar(100)
,@LCID int
,@SeqFld varchar(200)
- ,@HasId int output
+ ,@year int
+ ,@month int
+ ,@HasId int out
AS
BEGIN
set @hasId = 0;
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[T_PLAN_PLANPLMRPT]') AND type IN ('U'))
- begin
+ BEGIN
SELECT
@HasId = COUNT(A.FID)
FROM
T_PLAN_PLANPLMRPT A
WHERE
- A.FDATE BETWEEN @STARTDATE AND @ENDDATE
+ A.FRECORDMONTH = @month AND A.FRECORDYEAR = @year
END
-
- if @hasId =1
- BEGIN
+ if @hasId > 0
+ begin
SELECT
- *
- INTO #TMPMPS
+ *
+ into #TMPMPS
FROM
T_PLAN_PLANPLMRPT A
WHERE
- A.FDATE BETWEEN @STARTDATE AND @ENDDATE
- END
+ A.FRECORDMONTH = @month AND A.FRECORDYEAR = @year
+
+ DECLARE @SQL VARCHAR(2000)
+ SET @sql = '
+ select
+ t0.*
+ ,'+@SeqFld+'
+ into '+ @TableName +' From #TMPMPS t0 '
+
+ EXECUTE(@sql)
+ DROP TABLE #TMPMPS
+ end
END
\ No newline at end of file
diff --git a/MonthlyProductionSchedule/SQLServer/月度生产计划表-查询.sql b/MonthlyProductionSchedule/SQLServer/月度生产计划表-查询.sql
index 7c6cc2c..9b9edfb 100644
--- a/MonthlyProductionSchedule/SQLServer/月度生产计划表-查询.sql
+++ b/MonthlyProductionSchedule/SQLServer/月度生产计划表-查询.sql
@@ -8,56 +8,20 @@ CREATE PROCEDURE PROC_ProductionSchedule
,@ENDDATE date
,@LCID int
,@SeqFld varchar(200)
- --,@HasId int output
+ ,@year int
+ ,@month int
+ ,@HasId int output
AS
BEGIN
- DECLARE @HasId int
- DECLARE @SQL VARCHAR(2000)
set @HasId = 0
+
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[T_PLAN_PLANPLMRPT]') AND type IN ('U'))
BEGIN
- EXEC PROC_INQUIRE_PLANPLMRPT @STARTDATE,@ENDDATE,@LCID,@SeqFld, @HasId
+ EXEC PROC_INQUIRE_PLANPLMRPT @TableName,@LCID,@SeqFld,@year,@month, @HasId
END
- IF @HasId = 0
+ IF @HasId = 0
BEGIN
- EXEC PROC_INQUIRPLMTMPRTP @STARTDATE,@ENDDATE,@LCID,@SeqFld
- end
-
- SET @sql = '
- select
- t0.FID
- ,FENTRYID
- ,FBILLNO
- ,FMATERIALID
- ,FNAME
- ,FSPECIFICATION
- ,ShelfLife
- ,0 AS StandardLot --
- --,FLOTYIELD --ÿ
- --,FPACKUNITCONVERRATIO -- װ
- --,CAST(FPACKUNITCONVERRATIO AS VARCHAR)+STOREUNITNAME+''/''+FPACKUNITNAME as FPACKUNITCONVT --װ
- --,FPACKUNITID --λ
- ,FSTOREUNITID
- ,STOREUNITNAME
- ,0 AS SAFESTOCKCOUNT --ȫ-
- ,CAST(FSAFESTOCK AS INT) AS SAFESTOCK
- ,0 AS M01
- ,0 AS S01
- ,0 AS S02
- ,0 AS S03
- ,0 AS InStockQty
- ,0 AS InProductionQty
- ,0 AS TotalStockQty
- --,(FOrderQty / CP.FPACKUNITCONVERRATIO) AS OrderLotQty -- ''ϵͳƻ''
- --,(FFirmQty / CP.FPACKUNITCONVERRATIO) AS FirmLotQty -- ''ȷϼƻ''
- ,FFirmQty --ȷϼƻ
- ,FFirmQty as FirmLotQty --ȷ
- ,FOrderQty as OrderLotQty --ƻ
- ,'+@SeqFld+'
- into '+ @TableName +' From #TMPMPS t0 '
-
- EXECUTE(@sql)
-
- DROP TABLE #TMPMPS
+ EXEC PROC_INQUIRPLMTMPRTP @TableName,@STARTDATE,@ENDDATE,@LCID,@SeqFld
+ END
END
\ No newline at end of file
diff --git a/MonthlyProductionSchedule/SQLServer/月度生产计划表-预测单.sql b/MonthlyProductionSchedule/SQLServer/月度生产计划表-预测单.sql
index 5b7f6f2..5850344 100644
--- a/MonthlyProductionSchedule/SQLServer/月度生产计划表-预测单.sql
+++ b/MonthlyProductionSchedule/SQLServer/月度生产计划表-预测单.sql
@@ -4,13 +4,73 @@ IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_INQUIRPLMTMPRTP')
GO
CREATE PROCEDURE PROC_INQUIRPLMTMPRTP
- @STARTDATE date
+ @TableName varchar(100)
+ ,@STARTDATE date
,@ENDDATE date
,@LCID int
,@SeqFld varchar(200)
-AS
+AS
BEGIN
+ ---㱨start
+ SELECT
+ AE.FSRCBILLNO
+ ,AE.FMATERIALID
+ ,AE.FSALEORDERENTRYID
+ ,AE.FSALEORDERENTRYSEQ
+ ,SUM(AE.FQTY) AS FQTY
+ ,SUM(B.FFINISHQTY) AS FFINISHQTY --
+ into #TMP_MO_INFO
+ FROM
+ T_PRD_MO A
+ LEFT JOIN T_PRD_MOENTRY AE ON A.FID = AE.FID
+ LEFT JOIN T_PRD_MOENTRY_A AE_A ON AE_A.FENTRYID = AE.FENTRYID
+ LEFT JOIN (SELECT
+ A.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e 㱨 e52b554423704173b7306554708a8b05 㱨
+ ,AE.FMOENTRYID
+ ,FFINISHQTY
+ FROM
+ T_PRD_MORPT A
+ LEFT JOIN T_PRD_MORPTENTRY AE ON AE.FID = A.FID
+ WHERE A.FDOCUMENTSTATUS='C'
+ ) B on B.FMOENTRYID = AE.FENTRYID
+ WHERE
+ AE.FSRCBILLTYPE ='PLN_PLANORDER'
+ AND AE_A.FSTATUS <> 6
+ AND AE.FSALEORDERENTRYID <> 0
+ AND A.FDATE between @STARTDATE and @ENDDATE
+ GROUP BY
+ AE.FSRCBILLNO
+ ,AE.FMATERIALID
+ ,AE.FSALEORDERENTRYID
+ ,AE.FSALEORDERENTRYSEQ
+ ---㱨end
+
+ --ƻstart
+ SELECT
+ A.FID
+ ,A.FBILLNO
+ ,A.FMATERIALID
+ ,A_B.FSALEORDERENTRYID
+ ,SUM(A.FFirmQty) as 'FFirmQty'
+ ,SUM(A.FORDERQTY) as 'FOrderQty'
+ into #TMP_PLN_INFO
+ 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.FID
+ ,A.FBILLNO
+ ,A.FRELEASETYPE
+ ,A.FMATERIALID
+ ,A_B.FSALEORDERENTRYID
+ --ƻend
+
+
+ --ѯstart
SELECT
A.FID
,A.FBILLNO
@@ -19,65 +79,102 @@ BEGIN
,C.FNUMBER
,C_L.FNAME
,C_L.FSPECIFICATION
- ,(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'
+ ,(CASE CS.FEXPPERIOD
+ WHEN 0 THEN ''
+ ELSE
+ CASE
+ CS.FEXPUNIT
+ WHEN 'Y' THEN
+ CONVERT ( VARCHAR,CAST((CS.FEXPPERIOD * 12) AS INT) ) + ''
+ WHEN 'M' THEN
+ CONVERT ( VARCHAR,CAST(CS.FEXPPERIOD AS INT) ) + ''
+ WHEN 'D' THEN
+ CONVERT ( VARCHAR, CAST((
+ CASE CS.FEXPPERIOD%30 WHEN 0 THEN CS.FEXPPERIOD/30 ELSE CS.FEXPPERIOD / 365 * 12 END
+ ) AS INT)) + '' ELSE ''
+ END
+ 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'
+ ,(CASE CP.FPACKUNITCONVERRATIO
+ WHEN 0
+ THEN CS.FSAFESTOCK ELSE (CS.FSAFESTOCK/CP.FPACKUNITCONVERRATIO)
+ END) AS SAFESTOCKCOUNT
+ ,CP.FLOTYIELD -- 'ÿ'
+ ,CP.FPACKUNITCONVERRATIO -- 'װ'
+ ,CP.FPACKUNITID -- 'λ'
+ ,AE.M01
+ ,AE.S01
+ ,AE.S02
+ ,AE.S03
+ ,(CASE CP.FPACKUNITCONVERRATIO
+ WHEN 0
+ THEN D.FQTY - D.FFINISHQTY ELSE ((D.FQTY - D.FFINISHQTY)/CP.FPACKUNITCONVERRATIO)
+ END) AS InProductionQty --
+ ,(CASE CP.FPACKUNITCONVERRATIO
+ WHEN 0
+ THEN E.FBASEQTY ELSE (E.FBASEQTY/CP.FPACKUNITCONVERRATIO)
+ END) AS InStockQty --
+ ,(CASE CP.FPACKUNITCONVERRATIO
+ WHEN 0
+ THEN (D.FQTY + E.FBASEQTY) ELSE ((D.FQTY + E.FBASEQTY)/CP.FPACKUNITCONVERRATIO)
+ END) AS TotalStockQty --ϼ
+ ,(CASE CP.FPACKUNITCONVERRATIO
+ WHEN 0
+ THEN B.FOrderQty ELSE (B.FOrderQty/CP.FPACKUNITCONVERRATIO)
+ END) AS OrderLotQty --ƻ
+ ,CS.FSTOREUNITID AS FPACKUNITID -- 'λ'
+ --, 140 as FLOTYIELD -- 'ÿ'
+ --,150 as FPACKUNITCONVERRATIO -- 'װ'
+ --,400 AS SAFESTOCKCOUNT --ȫ
+ --,'' AS 'M01'
+ --,'' AS 'S01'
+ --,'' AS 'S02'
+ --,'' AS 'S03'
,B.FFirmQty
,B.FOrderQty
into #TMPMPS
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
+ T_PLN_FORECAST A
+ LEFT JOIN T_PLN_FORECASTENTRY AE ON A.FID = AE.FID
+ RIGHT JOIN #TMP_PLN_INFO B ON B.FSALEORDERENTRYID = AE.FENTRYID
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
+ LEFT JOIN #TMP_MO_INFO D on D.FSRCBILLNO = B.FBILLNO AND D.FSALEORDERENTRYID = AE.FENTRYID AND D.FSALEORDERENTRYSEQ = AE.FSEQ
+ LEFT JOIN (SELECT
+ A.FMATERIALID
+ ,A.FSTOCKORGID
+ ,SUM(A.FBASEQTY) AS FBASEQTY
+ FROM T_STK_INVENTORY A
+ group by A.FMATERIALID,A.FSTOCKORGID
+ ) E on E.FMATERIALID = C.FMASTERID AND E.FSTOCKORGID = A.FFOREORGID
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 FSTOREUNITNAME VARCHAR(10)
+ UPDATE #TMPMPS SET #TMPMPS.FSTOREUNITNAME = 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
+ 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
+
+ ALTER TABLE #TMPMPS ADD FPACKUNITCONVT VARCHAR(10)
+ UPDATE T SET T.FPACKUNITCONVT = CONCAT(CONVERT(VARCHAR,T.FPACKUNITCONVERRATIO),T.STOREUNITNAME,'/',T.FPACKUNITNAME) FROM #TMPMPS T
+ --ѯend
+
+ DECLARE @SQL VARCHAR(2000)
+ SET @sql = '
+ select
+ t0.*
+ ,'+@SeqFld+'
+ into '+ @TableName +' From #TMPMPS t0 '
+ EXECUTE(@sql)
+
+ DROP TABLE #TMPMPS
+ DROP TABLE #TMP_PLN_INFO
+ DROP TABLE #TMP_MO_INFO
END
\ No newline at end of file
diff --git a/MonthlyProductionSchedule/SQLServer/月度计划数据保存.sql b/MonthlyProductionSchedule/SQLServer/月度计划数据保存.sql
new file mode 100644
index 0000000..d7a8cf3
--- /dev/null
+++ b/MonthlyProductionSchedule/SQLServer/月度计划数据保存.sql
@@ -0,0 +1,22 @@
+
+IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_PPL_SaveCurrentData')
+ DROP PROCEDURE dbo.PROC_PPL_SaveCurrentData;
+GO
+
+CREATE PROCEDURE PROC_PPL_SaveCurrentData
+ @TableName varchar(100)
+ ,@FRECORDDATE varchar(20)
+ ,@FRECORDYEAR INT
+ ,@FRECORDMONTH INT
+AS
+BEGIN
+ DELETE FROM T_PLAN_PLANPLMRPT WHERE FRECORDDATE = @FRECORDYEAR AND FRECORDMONTH = @FRECORDMONTH
+
+ DECLARE @SQL VARCHAR(2000)
+ SET @sql = '
+ SELECT *,'+@FRECORDDATE+' AS FRECORDDATE ,'+@FRECORDYEAR+' AS FRECORDYEAR ,'+@FRECORDMONTH+' AS FRECORDMONTH
+ INTO T_PLAN_PLANPLMRPT FROM '+@TableName
+
+ EXECUTE(@sql)
+
+END
\ No newline at end of file
diff --git a/MonthlyProductionSchedule/SQLServer/自动保存存储过程.sql b/MonthlyProductionSchedule/SQLServer/自动保存存储过程.sql
new file mode 100644
index 0000000..5d0679e
--- /dev/null
+++ b/MonthlyProductionSchedule/SQLServer/自动保存存储过程.sql
@@ -0,0 +1,27 @@
+IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_PPL_AutoSaveCurrentData')
+ DROP PROCEDURE dbo.PROC_PPL_AutoSaveCurrentData;
+GO
+
+CREATE PROCEDURE PROC_PPL_AutoSaveCurrentData
+ @TableName varchar(100)
+ ,@FRECORDDATE datetime
+ ,@STARTDATE date
+ ,@ENDDATE date
+ ,@FRECORDYEAR INT
+ ,@FRECORDMONTH INT
+AS
+BEGIN
+ EXEC PROC_INQUIRPLMTMPRTP @TableName,@STARTDATE,@ENDDATE,2052,' ROW_NUMBER() OVER(ORDER BY t0.FID ) FIDENTITYID '
+
+ DELETE FROM T_PLAN_PLANPLMRPT WHERE FRECORDDATE = @FRECORDYEAR AND FRECORDMONTH = @FRECORDMONTH
+
+ DECLARE @SQL VARCHAR(2000)
+
+ SET @sql = '
+ SELECT *,'+@FRECORDDATE+' AS FRECORDDATE ,'+@FRECORDYEAR+' AS FRECORDYEAR ,'+@FRECORDMONTH+' AS FRECORDMONTH
+ INTO T_PLAN_PLANPLMRPT FROM '+@TableName
+
+ EXECUTE(@sql)
+
+ execute(N'drop table'+ @TableName)
+END
\ No newline at end of file
diff --git a/MonthlyProductionSchedule/SQLServer/计划生产订单入库数.sql b/MonthlyProductionSchedule/SQLServer/计划生产订单入库数.sql
new file mode 100644
index 0000000..6062c24
--- /dev/null
+++ b/MonthlyProductionSchedule/SQLServer/计划生产订单入库数.sql
@@ -0,0 +1,38 @@
+SELECT
+ --A.FID
+ --,AE.FENTRYID
+ --,AE.FSALEORDERNO
+ --,AE.FSRCBILLID
+ --,AE.FSRCBILLENTRYID
+ --,AE.FSRCBILLENTRYSEQ
+ --,AE.FSRCBILLTYPE
+ --,AE.FSALEORDERID
+ --,AE_A.FREQSRC
+ --,AE_A.FCREATETYPE
+ --,AE_A.FSTATUS --6ѽ
+ AE.FSRCBILLNO
+ ,AE.FMATERIALID
+ ,AE.FSALEORDERENTRYID
+ ,AE.FSALEORDERENTRYSEQ
+ ,SUM(AE.FQTY) AS FQTY
+ ,SUM(B.FFINISHQTY) AS FFINISHQTY --
+FROM
+ T_PRD_MO A
+ LEFT JOIN T_PRD_MOENTRY AE ON A.FID = AE.FID
+ LEFT JOIN T_PRD_MOENTRY_A AE_A ON AE_A.FENTRYID = AE.FENTRYID
+ LEFT JOIN (SELECT
+ A.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e 㱨 e52b554423704173b7306554708a8b05 㱨
+ ,AE.FMOENTRYID
+ ,FFINISHQTY
+ FROM
+ T_PRD_MORPT A
+ LEFT JOIN T_PRD_MORPTENTRY AE ON AE.FID = A.FID
+ WHERE A.FDOCUMENTSTATUS='C'
+ ) B on B.FMOENTRYID = AE.FENTRYID
+WHERE
+ AE.FSRCBILLTYPE ='PLN_PLANORDER' AND AE_A.FSTATUS <> 6 and AE.FSALEORDERENTRYID <> 0
+GROUP BY
+ AE.FSRCBILLNO
+ ,AE.FMATERIALID
+ ,AE.FSALEORDERENTRYID
+ ,AE.FSALEORDERENTRYSEQ
\ No newline at end of file
diff --git a/UseGetFmaterialData.zip b/UseGetFmaterialData.zip
new file mode 100644
index 0000000..34c1d48
Binary files /dev/null and b/UseGetFmaterialData.zip differ