diff --git a/GateDge2023.sln b/GateDge2023.sln index e79f879..e5a3e8b 100644 --- a/GateDge2023.sln +++ b/GateDge2023.sln @@ -48,6 +48,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CY.CB_PROACNTGROUP", "CY.CB EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Trinomab.PUR_RPT_POOrderTrace", "Trinomab.PUR_RPT_POOrderTrace\Trinomab.PUR_RPT_POOrderTrace.csproj", "{9E2DDD7F-02EE-4BDF-A696-4CC6D310FEAD}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "K3CExttensionMethods", "K3CExttensionMethods\K3CExttensionMethods.csproj", "{825DD90B-2A8D-4884-9940-6DA56EF6623F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -102,6 +104,10 @@ Global {9E2DDD7F-02EE-4BDF-A696-4CC6D310FEAD}.Debug|Any CPU.Build.0 = Debug|Any CPU {9E2DDD7F-02EE-4BDF-A696-4CC6D310FEAD}.Release|Any CPU.ActiveCfg = Release|Any CPU {9E2DDD7F-02EE-4BDF-A696-4CC6D310FEAD}.Release|Any CPU.Build.0 = Release|Any CPU + {825DD90B-2A8D-4884-9940-6DA56EF6623F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {825DD90B-2A8D-4884-9940-6DA56EF6623F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {825DD90B-2A8D-4884-9940-6DA56EF6623F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {825DD90B-2A8D-4884-9940-6DA56EF6623F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -121,6 +127,7 @@ Global {49AF92F2-2DCF-42F4-AB29-12298575D803} = {42311C80-7B4C-4353-BCA9-4ABD024290C8} {5A26AFF4-AE8C-43A3-8C60-BBA153DAE608} = {270F576A-EFFF-4728-8E5C-ABDF5C3F3C8B} {9E2DDD7F-02EE-4BDF-A696-4CC6D310FEAD} = {0C4E3DC3-F1FA-4BD7-8D81-BF5EFD452A51} + {825DD90B-2A8D-4884-9940-6DA56EF6623F} = {4ACB1DA8-8A4D-451A-A5FB-3CBD7A261263} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {16F7DBDD-F487-41D6-A856-9E9B7B3F61C5} diff --git a/K3CExttensionMethods/K3CExttensionMethods.csproj b/K3CExttensionMethods/K3CExttensionMethods.csproj new file mode 100644 index 0000000..a7da9b7 --- /dev/null +++ b/K3CExttensionMethods/K3CExttensionMethods.csproj @@ -0,0 +1,65 @@ + + + + + Debug + AnyCPU + {825DD90B-2A8D-4884-9940-6DA56EF6623F} + Library + Properties + K3CExttensionMethods + K3CExttensionMethods + v4.0 + 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.Core.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.DataEntity.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.BD.Contracts.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.SCM.App.Sal.Report.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.SCM.Sal.Report.PlugIn.dll + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/K3CExttensionMethods/ListHeaderExtension.cs b/K3CExttensionMethods/ListHeaderExtension.cs new file mode 100644 index 0000000..1feca21 --- /dev/null +++ b/K3CExttensionMethods/ListHeaderExtension.cs @@ -0,0 +1,23 @@ +using Kingdee.BOS.Core.List; +using Kingdee.BOS.Orm.DataEntity; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace K3CExttensionMethods +{ + public static class ListHeaderExtension + { + public static ListHeader SetHeader(this ListHeader thiObj, Func func) + { + return func(thiObj); + } + + public static ListHeader SetWidth(this ListHeader thiObj,int width) + { + thiObj.Width = width; + return thiObj; + } + } +} diff --git a/K3CExttensionMethods/Properties/AssemblyInfo.cs b/K3CExttensionMethods/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..9758583 --- /dev/null +++ b/K3CExttensionMethods/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("K3CExttensionMethods")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("K3CExttensionMethods")] +[assembly: AssemblyCopyright("Copyright © 2023")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("825dd90b-2a8d-4884-9940-6da56ef6623f")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [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 index 713a38d..c11e0f0 100644 --- a/MonthlyProductionSchedule/AutoRecordsInventoryPlugIn.cs +++ b/MonthlyProductionSchedule/AutoRecordsInventoryPlugIn.cs @@ -21,32 +21,47 @@ namespace MonthlyProductionSchedule { public void Run(Context ctx, Schedule schedule) { - var executeDay = schedule.Parameters.IsEmpty() ? 20 : schedule.Parameters.Long2Int(); - var newDate = DateTime.Now; - if (newDate.Day == executeDay) + + try { - try - { - Logger.Info(schedule.Name, "记录物料即时库存start..."); + var executeDay = schedule.Parameters.IsEmpty() ? 20 : schedule.Parameters.Long2Int(); - ////如果这个日期下已保存有数据,先删除 - //var delSql = $"DELETE FROM T_MATERIAL_INVENTORY_MONTH_RECORD WHERE RECORDDAY = {newDate.Day} AND RECORDMONTH = {newDate.Month} AND RECORDYEAR = {newDate.Year} "; - //var delNum = DBServiceHelper.Execute(ctx, $"/*dialect*/{delSql}"); - //Logger.Info(schedule.Name, $"删除物料即时库存数据成功!(本次删除{delNum}条)"); + if(executeDay > 28) + executeDay = DateTime.Now.AddDays(1 - DateTime.Now.Day).Date.AddMonths(1).AddSeconds(-1).Day; - var intoSql = $@" PROC_SAVE_MATERIAL_INVENTORY {ctx.UserLocale.LCID} ,{newDate.Year} ,{newDate.Month} ,{newDate.Day} "; - var intoNum = DBServiceHelper.Execute(ctx, $"/*dialect*/{intoSql}"); - Logger.Info(schedule.Name, $"记录物料即时库存成功!(本次记录{intoNum}条)"); - } - catch (Exception ex) + var newDate = DateTime.Now; + var appointDate = new DateTime(newDate.Year, newDate.Month, executeDay); + Logger.Info(schedule.Name, $"记录物料即时库存检测:约定记录时间[{appointDate:yyyy-MM-dd}],当前时间[{newDate:yyyy-MM-dd}]"); + + if (newDate.Day == executeDay) { - Logger.Error(schedule.Name, ex.Message, ex); - } - finally - { - Logger.Info(schedule.Name, "记录物料即时库存end..."); + try + { + Logger.Info(schedule.Name, "记录物料即时库存start..."); + + ////如果这个日期下已保存有数据,先删除 + //var delSql = $"DELETE FROM T_MATERIAL_INVENTORY_MONTH_RECORD WHERE RECORDDAY = {newDate.Day} AND RECORDMONTH = {newDate.Month} AND RECORDYEAR = {newDate.Year} "; + //var delNum = DBServiceHelper.Execute(ctx, $"/*dialect*/{delSql}"); + //Logger.Info(schedule.Name, $"删除物料即时库存数据成功!(本次删除{delNum}条)"); + + var intoSql = $@" PROC_SAVE_MATERIAL_INVENTORY {ctx.UserLocale.LCID} ,{newDate.Year} ,{newDate.Month} ,{newDate.Day} "; + var intoNum = DBServiceHelper.Execute(ctx, $"/*dialect*/{intoSql}"); + Logger.Info(schedule.Name, $"记录物料即时库存成功!(本次记录{intoNum}条)"); + } + catch (Exception ex) + { + Logger.Error(schedule.Name, ex.Message, ex); + } + finally + { + Logger.Info(schedule.Name, "记录物料即时库存end..."); + } } } + catch (Exception ex) + { + Logger.Error(schedule.Name, ex.Message, ex); + } //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 af6d4eb..88ee542 100644 --- a/MonthlyProductionSchedule/BarItemClickEventPlugIn.cs +++ b/MonthlyProductionSchedule/BarItemClickEventPlugIn.cs @@ -17,6 +17,7 @@ using System.Runtime.InteropServices.ComTypes; using System.Security.Cryptography; using Kingdee.BOS.Core.Report; using System.Threading.Tasks; +using Kingdee.BOS.Core.Metadata.Util; namespace MonthlyProductionSchedule { @@ -28,61 +29,63 @@ namespace MonthlyProductionSchedule base.ButtonClick(e); if (e.Key.EqualsIgnoreCase("FSaveDataButton")) { - var reportModel = this.Model as SysReportModel; //简单帐表对应的Model - - try + this.View.ShowMessage("生成数据会覆盖当月历史数据,是否继续?", MessageBoxOptions.OKCancel, new Action(result => { - var year = reportModel.DataObject["DataHoldYear"].Long2Int(); - var month = reportModel.DataObject["DataHoldMonth"].Long2Int(); - var date = new DateTime(year, month, 1); - var startDate = date.ToString("yyyy-MM-dd"); - var endDate = date.AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd"); - var tableName = this.SysReportView.Model.DataSource.TableName; - //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"))); - var para = new List(); - para.Add(new SqlParam("@STARTDATE", KDDbType.Date, startDate)); - para.Add(new SqlParam("@ENDDATE", KDDbType.Date, endDate)); - para.Add(new SqlParam("@YEAR", KDDbType.Int64, year)); - para.Add(new SqlParam("@MONTH", KDDbType.Int64, month)); - para.Add(new SqlParam("@DAY", KDDbType.Int64, 20)); - para.Add(new SqlParam("@LCID", KDDbType.Int64, this.Context.UserLocale.LCID)); + if (result == MessageBoxResult.OK) + { + var reportModel = this.SysReportModel; //简单帐表对应的Model - var res = DBUtils.ExecuteStoreProcedure(this.Context, "PROC_SAVE_PLANPLMRPT_DATA", para); - //var res = DBUtils.ExecuteStoreProcedure(this.Context, "PROC_PPL_SaveCurrentData", para); + try + { + var rptTitles = reportModel.ReportTitles.ToList(); + var year = rptTitles.FirstOrDefault(x => x.TitleKey == "FDataHoldYear").TitleValue.Long2Int(); + var month = rptTitles.FirstOrDefault(x => x.TitleKey == "FDataHoldMonth").TitleValue.Long2Int(); + var date = new DateTime(year, month, 1); + var startDate = date.ToString("yyyy-MM-dd"); + var endDate = date.AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd"); + var tableName = this.SysReportView.Model.DataSource.TableName; + //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"))); + var para = new List(); + para.Add(new SqlParam("@STARTDATE", KDDbType.Date, startDate)); + para.Add(new SqlParam("@ENDDATE", KDDbType.Date, endDate)); + para.Add(new SqlParam("@YEAR", KDDbType.Int64, year)); + para.Add(new SqlParam("@MONTH", KDDbType.Int64, month)); + para.Add(new SqlParam("@DAY", KDDbType.Int64, 20)); + para.Add(new SqlParam("@LCID", KDDbType.Int64, this.Context.UserLocale.LCID)); - reportModel.DataObject["DataBDStatu"] = 1; + var res = DBUtils.ExecuteStoreProcedure(this.Context, "PROC_SAVE_PLANPLMRPT_DATA", para); - this.View.Refresh(); - //this.View.InvokeFormOperation(FormOperationEnum.Refresh); + reportModel.DataObject["DataBDStatu"] = 1; - //var btn = this.SysReportView.GetControl("FSaveDataButton"); - //btn.Enabled = false; - - //确保旧的临时表删除 -// var deleteTmpSql = $@" -//IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[{tableName}]') AND type IN ('U')) -// DROP TABLE [dbo].[{tableName}] -//GO -//"; -// DBUtils.Execute(this.Context, $"/*dialect*/{deleteTmpSql}"); - } - catch (Exception ex) - { - this.View.ShowErrMessage(ex.Message); - } - - //this.View.ShowMessage("保存数据会覆盖历史数据,是否继续?", MessageBoxOptions.OKCancel, new Action(result => - //{ - // if (result == MessageBoxResult.OK) - // { - - // } - //})); + this.View.Refresh(); + } + catch (Exception ex) + { + if (ex.Message.Contains("不能将值 NULL 插入列")) + { + this.View.ShowErrMessage("库存记录信息未记录!"); + } + else + { + this.View.ShowErrMessage(ex.Message); + } + } + } + })); return; } } + //public override void AfterBindData(EventArgs e) + //{ + // base.AfterBindData(e); + + // var dataStatus = this.SysReportModel.ReportTitles.FirstOrDefault(x => x.TitleKey == "FDataBDStatu").TitleValue.Long2Int(); + + // this.SysReportView.GetControl("FSaveDataButton").Enabled = dataStatus != 1; + + //} } } diff --git a/MonthlyProductionSchedule/MonthlyProductionSchedule.csproj b/MonthlyProductionSchedule/MonthlyProductionSchedule.csproj index 0699e18..2b5e41b 100644 --- a/MonthlyProductionSchedule/MonthlyProductionSchedule.csproj +++ b/MonthlyProductionSchedule/MonthlyProductionSchedule.csproj @@ -37,7 +37,9 @@ ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.App.dll - + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Contracts.dll + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Core.dll @@ -58,6 +60,13 @@ ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.BD.Contracts.dll + + False + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.Core.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.MFG.PLN.App.MrpModel.dll + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.SCM.App.Stock.Report.dll @@ -75,6 +84,7 @@ + diff --git a/MonthlyProductionSchedule/Policy.cs b/MonthlyProductionSchedule/Policy.cs new file mode 100644 index 0000000..aa0abe0 --- /dev/null +++ b/MonthlyProductionSchedule/Policy.cs @@ -0,0 +1,130 @@ +using Kingdee.BOS; +using Kingdee.BOS.Core.Metadata; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.ServiceHelper; +using Kingdee.K3.Core.MFG; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; + +namespace Kingdee.K3.MFG.PLN.App.MrpModel.PolicyImpl.NetCalc +{ + /// + /// MRP运算将产生的计划订单或组织间需求单数据提交保存前更新数据策略 + /// + [MrpProgressItem("P0033", "30")] + public class UpdateData : AbstractNetCalcPolicy + { + + /// + /// 后置策略:单条执行模式 + /// + public override Enu_NetCalcPolicyCallStyle CallStyle + { + get { return Enu_NetCalcPolicyCallStyle.KdLastSingleExecutionMode; } + } + + /// + /// 策略执行前事件 + /// + /// + protected override bool BeforeExecuteDataPolicy() + { + foreach (var demandGroupRow in this.MrpDemandDimContext.MrpNetDemandContextGroupRows) + { + if (demandGroupRow.PlanOrderItem != null) + { + ///TODO:本分支可对计划订单数据在提交保存前进行干预 + + #region 更新确认投放时间 + string MaterialId_Id = Convert.ToString(demandGroupRow.PlanOrderItem["MaterialId_Id"]); + FormMetadata FMaterial = MetaDataServiceHelper.Load(this.Context, "BD_MATERIAL", true) as FormMetadata; + DynamicObject FMaterialId = BusinessDataServiceHelper.LoadSingle(this.Context, MaterialId_Id, FMaterial.BusinessInfo.GetDynamicObjectType(), null); + DynamicObjectCollection MaterialPlan = FMaterialId["MaterialPlan"] as DynamicObjectCollection; + string FixLeadTime = Convert.ToString(MaterialPlan[0]["FixLeadTime"]); + string FPlanFinishDate = Convert.ToString(demandGroupRow.PlanOrderItem["PlanFinishDate"]); + demandGroupRow.PlanOrderItem["F_UKUB_LeadDate"] = Convert.ToDateTime(FPlanFinishDate).AddDays(-1 * Convert.ToDouble(FixLeadTime)); + #endregion + + + #region 更新销售订单/行号 + string FSaleOrderNo = Convert.ToString(demandGroupRow.PlanOrderItem["SaleOrderNo"]); + //声明SQL语句,获取预测单信息 + string sql = string.Format(@"/*dialect*/ select FSaleNoRow from T_PLN_FORECAST a + INNER JOIN T_PLN_FORECASTENTRY B ON A.FID = B.FID where FBILLNO = @FBILLNO"); + //定义SQL参数 + SqlParam[] param = new SqlParam[1]; + //添加需求单号参数 + param[0] = new SqlParam("@FBILLNO", KDDbType.String, FSaleOrderNo); + //执行SQL语句 + DynamicObjectCollection dr = DBServiceHelper.ExecuteDynamicObject(this.Context, sql.ToString(), null, null, CommandType.Text, param); + if (dr.Count > 0) + { + demandGroupRow.PlanOrderItem["FSaleNoRow"] = dr[0]["FSaleNoRow"]; + } + #endregion + + + + //string FSaleOrderNo = Convert.ToString(demandGroupRow.PlanOrderItem["SaleOrderNo"]); + ////声明SQL语句,获取预测单信息 + //string sql = string.Format(@"/*dialect*/ select FBILLTYPEID from T_PLN_FORECAST a + //INNER JOIN T_PLN_FORECASTENTRY B ON A.FID = B.FID where FBILLNO = @FBILLNO"); + ////定义SQL参数 + //SqlParam[] param = new SqlParam[1]; + ////添加需求单号参数 + //param[0] = new SqlParam("@FBILLNO", KDDbType.String, FSaleOrderNo); + ////执行SQL语句 + //DynamicObjectCollection dr = DBServiceHelper.ExecuteDynamicObject(this.Context, sql.ToString(), null, null, CommandType.Text, param); + //if (dr.Count > 0) + //{ + // if (Convert.ToString(dr[0]["FBILLTYPEID"]) == "637c89c0168c79") + // { + // demandGroupRow.PlanOrderItem["ReleaseType"] = 3; + // demandGroupRow.PlanOrderItem["ReleaseBillType"] = "CGSQD05_SYS"; + // } + //} + + //demandGroupRow.PlanOrderItem["ReleaseType"] = 3; + //DynamicObjectCollection PLSubHead = demandGroupRow.PlanOrderItem["PLSubHead"] as DynamicObjectCollection; + + //FormMetadata BOS_BillType = MetaDataServiceHelper.Load(this.Context, "BOS_BillType", true) as FormMetadata; + //DynamicObject BillType = BusinessDataServiceHelper.LoadSingle(this.Context, "03c6c047c65c4a17a792f85dcf3cabec", BOS_BillType.BusinessInfo.GetDynamicObjectType(), null); + + + //(demandGroupRow.PlanOrderItem["PLSubHead"] as DynamicObjectCollection)[0]["ReleaseBillType_Id"] = "03c6c047c65c4a17a792f85dcf3cabec"; + //(demandGroupRow.PlanOrderItem["PLSubHead"] as DynamicObjectCollection)[0]["ReleaseBillType"] = BillType; + } + if (demandGroupRow.RequirementOrderItem != null) + { + ///TODO:本分支可对组织间需求单数据在提交保存前进行干预 + } + } + return base.BeforeExecuteDataPolicy(); + } + + //protected override void AfterExecuteDataPolicy() + //{ + // base.AfterExecuteDataPolicy(); + // foreach (var demandGroupRow in this.MrpDemandDimContext.MrpNetDemandContextGroupRows) + // { + // if (demandGroupRow.PlanOrderItem != null) + // { + + // demandGroupRow.PlanOrderItem["ReleaseType"] = 3; + // DynamicObjectCollection PLSubHead = demandGroupRow.PlanOrderItem["PLSubHead"] as DynamicObjectCollection; + // FormMetadata BOS_BillType = MetaDataServiceHelper.Load(this.Context, "BOS_BillType", true) as FormMetadata; + // DynamicObject BillType = BusinessDataServiceHelper.LoadSingle(this.Context, "03c6c047c65c4a17a792f85dcf3cabec", BOS_BillType.BusinessInfo.GetDynamicObjectType(), null); + // (demandGroupRow.PlanOrderItem["PLSubHead"] as DynamicObjectCollection)[0]["ReleaseBillType_Id"] = "03c6c047c65c4a17a792f85dcf3cabec"; + // (demandGroupRow.PlanOrderItem["PLSubHead"] as DynamicObjectCollection)[0]["ReleaseBillType"] = BillType; + // } + // if (demandGroupRow.RequirementOrderItem != null) + // { + // ///TODO:本分支可对组织间需求单数据在提交保存前进行干预 + // } + // } + //} + } +} \ No newline at end of file diff --git a/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs b/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs index ca6fb13..41f172f 100644 --- a/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs +++ b/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs @@ -16,8 +16,6 @@ using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Metadata.Util; using System.Data; -using Kingdee.BOS.Core.Metadata.FieldElement; - namespace MonthlyProductionSchedule { @@ -73,17 +71,31 @@ namespace MonthlyProductionSchedule // 报表主键字段名:默认为FIDENTITYID,可以修改 //this.ReportProperty.IdentityFieldName = "FIDENTITYID"; - // // 设置精度控制 - var list = new List(); + var list = new List + { + new DecimalControlField("FDECIMALS", "FLOTYIELD"), + new DecimalControlField("FDECIMALS", "FPACKUNITCONVERRATIO"), + new DecimalControlField("FDECIMALS", "SAFESTOCKCOUNT"), + new DecimalControlField("FDECIMALS", "SAFESTOCK"), + new DecimalControlField("FDECIMALS", "M01"), + new DecimalControlField("FDECIMALS", "S01"), + new DecimalControlField("FDECIMALS", "S02"), + new DecimalControlField("FDECIMALS", "S03"), + new DecimalControlField("FDECIMALS", "InStockQty"), + new DecimalControlField("FDECIMALS", "InProductionQty"), + new DecimalControlField("FDECIMALS", "TotalStockQty"), + new DecimalControlField("FDECIMALS", "OrderLotQty"), + new DecimalControlField("FDECIMALS", "FirmLotQty"), + new DecimalControlField("FDECIMALS", "FFirmQty") + }; this.ReportProperty.DecimalControlFieldList = list; } public override string GetTableName() { - var result = base.GetTableName(); - return result; + return base.GetTableName(); } /// @@ -106,17 +118,13 @@ namespace MonthlyProductionSchedule object resa = 0; var startDate = date.ToString("yyyy-MM-dd"); var endDate = date.AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd"); - // 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("@seqFld", KDDbType.String ,seqFld), new SqlParam("@year", KDDbType.Int32 ,year), new SqlParam("@month", KDDbType.Int32 ,month), new SqlParam("@day", KDDbType.Int32 ,20), @@ -128,11 +136,7 @@ namespace MonthlyProductionSchedule filter.FilterParameter.CustomFilter["DataBDStatu"] = res.First(x => x.Name.Equals("@HasId")).Value; } - protected override string GetIdentityFieldIndexSQL(string tableName) - { - string result = base.GetIdentityFieldIndexSQL(tableName); - return result; - } + protected override void ExecuteBatch(List listSql) { @@ -166,12 +170,12 @@ namespace MonthlyProductionSchedule var month = filter.FilterParameter.CustomFilter["DataHoldMonth"].Long2Int(); var date = new DateTime(year, month, 1); - // FID, FEntryId, var _colIndex = 0; ReportHeader header = base.GetReportHeaders(filter); header.AddChild("FNUMBER", new LocaleValue("产品编码"), _colIndex++); header.AddChild("FNAME", new LocaleValue("产品名称"), _colIndex++); + header.AddChild("FSPECIFICATION", new LocaleValue("产品规格型号"), _colIndex++); header.AddChild("SHELFLIFE", new LocaleValue("有效期"), _colIndex++); header.AddChild("StandardLot", new LocaleValue("标准批量"), _colIndex++); header.AddChild("FLOTYIELD", new LocaleValue("每批产量"), _colIndex++); @@ -229,10 +233,11 @@ namespace MonthlyProductionSchedule result = new ReportTitles(); } //数据保存状态 - object saveDataStauts = dyFilter["DataBDStatu"]; - result.AddTitle("FDataBDStatu", saveDataStauts.ToString()); + string saveDataStauts = dyFilter["DataBDStatu"].Long2Int() > 0 ? "1" : "0"; + result.AddTitle("FDataBDStatu", saveDataStauts); result.AddTitle("FDataHoldYear", dyFilter["DataHoldYear"].ToString()); result.AddTitle("FDataHoldMonth", dyFilter["DataHoldMonth"].ToString()); + //result.AddTitle("FDataHoldDate", $"{dyFilter["DataHoldYear"]}-{dyFilter["DataHoldMonth"]}"); //if (saveDataStauts != null) //{ diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/1.创建表_物料库存记录表.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/1.创建表_物料库存记录表.sql index 7ab5b1b..418e0ca 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/1.创建表_物料库存记录表.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/1.创建表_物料库存记录表.sql @@ -28,7 +28,7 @@ CREATE TABLE [dbo].[T_MATERIAL_INVENTORY_MONTH_RECORD] ( [FMASTERID] int NULL, [FMATERIALID] int NOT NULL, [FNUMBER] nvarchar(80) COLLATE Chinese_PRC_CI_AS NOT NULL, - [FSTOCKQTY] decimal(23,10) NOT NULL, + [FSTOCKQTY] decimal(23,6) NOT NULL, [FLOTYIELD] int not NULL, [FPACKUNITCONVERRATIO] int not NULL, [FPACKUNITID] int not NULL, diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/2.存储过程_生产计划_查询保存数据.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/2.存储过程_生产计划_查询保存数据.sql index 61d3a71..e55d255 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/2.存储过程_生产计划_查询保存数据.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/2.存储过程_生产计划_查询保存数据.sql @@ -4,7 +4,7 @@ GO CREATE PROCEDURE PROC_INQUIRE_PLANPLMRPT @TABLENAME VARCHAR(100) - ,@SEQFLD VARCHAR(200) + ,@SEQFLD varchar(100) ,@YEAR INT ,@MONTH INT ,@DAY INT @@ -28,7 +28,8 @@ BEGIN SET @sql = ' select t0.* - ,'+@SeqFld+' + ,2 AS FDECIMALS + ,'+@SEQFLD+' into '+ @TableName +' From #TMPMPS t0 ' EXECUTE(@sql) diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/3.存储过程_生产计划_查询即时数据.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/3.存储过程_生产计划_查询即时数据.sql index 1899b97..6c6edb7 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/3.存储过程_生产计划_查询即时数据.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/3.存储过程_生产计划_查询即时数据.sql @@ -16,11 +16,8 @@ CREATE PROCEDURE PROC_TMP_INQUIRE_PLANPLMRPT AS BEGIN SELECT - t0.FID - ,t0.FBILLNO - ,t0E.FMATERIALID - ,t0E.FENTRYID - ,t0E.FSEQ + ROW_NUMBER() OVER(ORDER BY t0.FMATERIALID) AS FID + ,t0.FMATERIALID ,t2.FNUMBER ,t2_L.FNAME ,t2_L.FSPECIFICATION @@ -49,84 +46,98 @@ BEGIN ,t4.FPACKUNITCONVERRATIO -- 'װ' ,t4.FPACKUNITID -- 'λ' ,t6_L.FNAME AS FPACKUNITNAME - ,dbo.PackageValConver(t0E.M01,t4.FPACKUNITCONVERRATIO) as M01 - ,dbo.PackageValConver(t0E.S01,t4.FPACKUNITCONVERRATIO) as S01 - ,dbo.PackageValConver(t0E.S02,t4.FPACKUNITCONVERRATIO) as S02 - ,dbo.PackageValConver(t0E.S03,t4.FPACKUNITCONVERRATIO) as S03 - ,dbo.PackageValConver(ISNULL(t3.FFINISHQTY,0) - ISNULL(t3.FSTOCKINQUASELQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InProductionQty -- + ,dbo.PackageValConver(t0.M01,t4.FPACKUNITCONVERRATIO) as M01 + ,dbo.PackageValConver(t0.S01,t4.FPACKUNITCONVERRATIO) as S01 + ,dbo.PackageValConver(t0.S02,t4.FPACKUNITCONVERRATIO) as S02 + ,dbo.PackageValConver(t0.S03,t4.FPACKUNITCONVERRATIO) as S03 + ,dbo.PackageValConver(ISNULL(t0.FFINISHQTY,0) - ISNULL(t0.FSTOCKINQUASELQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InProductionQty -- ,dbo.PackageValConver(ISNULL(t4.FSTOCKQTY,0),t4.FPACKUNITCONVERRATIO) AS InStockQty -- - ,dbo.PackageValConver((ISNULL(t3.FFINISHQTY,0) - ISNULL(t3.FSTOCKINQUASELQTY,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --ϼ - ,dbo.PackageValConver(t1.FOrderQty,t4.FLOTYIELD) AS OrderLotQty --ƻ - ,dbo.PackageValConver(t1.FFirmQty, t4.FPACKUNITCONVERRATIO) AS FirmLotQty --ȷ - ,dbo.ToDecimal2(t1.FFirmQty) FFirmQty --ȷ - ,@DAY AS FRECORDDAY - ,@MONTH AS FRECORDMONTH - ,@YEAR AS FRECORDYEAR + ,dbo.PackageValConver((ISNULL(t0.FFINISHQTY,0) - ISNULL(t0.FSTOCKINQUASELQTY,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --ϼ + ,dbo.PackageValConver(t0.FOrderQty,t4.FLOTYIELD) AS OrderLotQty --ƻ + ,dbo.PackageValConver(t0.FFirmQty, t4.FPACKUNITCONVERRATIO) AS FirmLotQty --ȷ + ,dbo.ToDecimal2(t0.FFirmQty) FFirmQty --ȷ + ,t0.countM + ,2 AS FDECIMALS into #TMPMPS FROM - T_PLN_FORECAST t0 - LEFT JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID - LEFT JOIN ( - SELECT - t1.FMATERIALID - ,t1.FCOMPUTERNO - ,t1.FBILLNO - ,t1_B.FSALEORDERENTRYID - ,sum(t1.FFirmQty) FFirmQty - ,sum(t1.FOrderQty) FOrderQty - FROM - T_PLN_PLANORDER t1 - LEFT JOIN T_PLN_PLANORDER_B t1_B ON t1.FID = t1_B.FID - WHERE t1.FDATASOURCE = 1 AND t1.FCREATEDATE BETWEEN @STARTDATE AND @ENDDATE - GROUP BY - t1.FCOMPUTERNO - ,t1.FBILLNO - ,t1.FMATERIALID - ,t1_B.FSALEORDERENTRYID - ) t1 ON t1.FMATERIALID = t0E.FMATERIALID - LEFT JOIN T_BD_MATERIAL t2 ON t2.FMATERIALID = t0E.FMATERIALID - LEFT JOIN T_BD_MATERIAL_L t2_L ON (t2_L.FMATERIALID = t0E.FMATERIALID AND t2_L.FLOCALEID = @LCID) - LEFT JOIN T_BD_MATERIALSTOCK t2S ON t2S.FMATERIALID = t0E.FMATERIALID - LEFT JOIN ( - SELECT - t0E.FSRCBILLNO - ,t0E.FMATERIALID - ,t0E.FSALEORDERENTRYID - ,t0E.FSALEORDERENTRYSEQ - ,SUM(t1.FFINISHQTY) AS FFINISHQTY -- - ,SUM(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY --ϸƷѡ - FROM - T_PRD_MO t0 - LEFT JOIN T_PRD_MOENTRY t0E ON t0.FID = t0E.FID - LEFT JOIN T_PRD_MOENTRY_A t0E_A ON t0E_A.FENTRYID = t0E.FENTRYID - LEFT JOIN ( + (SELECT + t0E.FMATERIALID + ,sum(t1.FFirmQty) AS FFirmQty + ,sum(t1.FOrderQty) AS FOrderQty + ,sum(t1.FFINISHQTY) AS FFINISHQTY + ,sum(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY + ,sum(M01) AS M01 + ,sum(S01) AS S01 + ,sum(S02) AS S02 + ,sum(S03) AS S03 + ,count(1) AS countM + FROM + T_PLN_FORECAST t0 + LEFT JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID + LEFT JOIN ( SELECT - t0.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e 㱨 e52b554423704173b7306554708a8b05 㱨 - ,t0E.FMOENTRYID - ,t0E.FFINISHQTY - ,t0E_A.FSTOCKINQUASELQTY - FROM - T_PRD_MORPT t0 - LEFT JOIN T_PRD_MORPTENTRY t0E ON t0E.FID = t0.FID - LEFT JOIN T_PRD_MORPTENTRY_A t0E_A ON t0E_A.FID = t0.FID AND t0E_A.FENTRYID = t0E.FENTRYID - WHERE t0.FDOCUMENTSTATUS='C' AND t0.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e' - ) t1 ON t1.FMOENTRYID = t0E.FENTRYID - WHERE - t0E.FSRCBILLTYPE ='PLN_PLANORDER' - AND t0E_A.FSTATUS <> 6 - AND t0E.FSALEORDERENTRYID <> 0 - AND t0.FDATE BETWEEN @STARTDATE AND @ENDDATE - GROUP BY - t0E.FSRCBILLNO - ,t0E.FMATERIALID - ,t0E.FSALEORDERENTRYID - ,t0E.FSALEORDERENTRYSEQ - ) t3 ON t3.FSALEORDERENTRYID = t0E.FENTRYID AND t3.FSALEORDERENTRYSEQ = t0E.FSEQ AND t3.FSRCBILLNO = t0.FBILLNO - LEFT JOIN T_MATERIAL_INVENTORY_MONTH_RECORD t4 ON (t4.FMATERIALID = t0E.FMATERIALID AND t4.RECORDYEAR = @YEAR AND t4.RECORDMONTH = @MONTH and t4.RECORDDAY = @DAY) + t1.FMATERIALID + ,t1_B.FSALEORDERENTRYID + ,t1_B.FSALEORDERENTRYSEQ + ,t1_B.FSALEORDERID + ,sum(t1.FFirmQty) AS FFirmQty + ,sum(t1.FOrderQty) AS FOrderQty + ,sum(t2.FFINISHQTY) AS FFINISHQTY + ,sum(t2.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY + FROM + T_PLN_PLANORDER t1 + LEFT JOIN T_PLN_PLANORDER_B t1_B ON t1.FID = t1_B.FID + LEFT JOIN ( + SELECT + t0E.FMATERIALID + ,t0E_LK.FSID + ,SUM(t1.FFINISHQTY) AS FFINISHQTY -- + ,SUM(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY --ϸƷѡ + FROM + T_PRD_MO t0 + LEFT JOIN T_PRD_MOENTRY t0E ON t0.FID = t0E.FID + LEFT JOIN T_PRD_MOENTRY_LK t0E_LK ON t0E_LK.FENTRYID = t0E.FENTRYID AND t0E_LK.FSTABLENAME = 'T_PLN_PLANORDER' + LEFT JOIN T_PRD_MOENTRY_A t0E_A ON t0E_A.FENTRYID = t0E.FENTRYID + LEFT JOIN ( + SELECT + t0.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e 㱨 e52b554423704173b7306554708a8b05 㱨 + ,t0E.FMOENTRYID + ,t0E.FFINISHQTY + ,t0E_A.FSTOCKINQUASELQTY + FROM + T_PRD_MORPT t0 + LEFT JOIN T_PRD_MORPTENTRY t0E ON t0E.FID = t0.FID + LEFT JOIN T_PRD_MORPTENTRY_A t0E_A ON t0E_A.FID = t0.FID AND t0E_A.FENTRYID = t0E.FENTRYID + WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e' + ) t1 ON t1.FMOENTRYID = t0E.FENTRYID + WHERE + t0E.FSRCBILLTYPE ='PLN_PLANORDER' + AND t0E_A.FREQSRC = 2 + AND t0E_A.FSTATUS <> 6 + AND t0E.FSALEORDERENTRYID <> 0 + GROUP BY + t0E.FMATERIALID + ,t0E_LK.FSID + ) t2 ON t2.FSID = t1.FID AND t2.FMATERIALID = t1.FMATERIALID + WHERE t1.FDATASOURCE = 1 AND t1_B.FDEMANDTYPE = 2 + GROUP BY + t1.FMATERIALID + ,t1_B.FSALEORDERENTRYID + ,t1_B.FSALEORDERENTRYSEQ + ,t1_B.FSALEORDERID + ) t1 ON (t1.FMATERIALID = t0E.FMATERIALID AND t1.FSALEORDERID = t0.FID AND t0E.FENTRYID = t1.FSALEORDERENTRYID AND t1.FSALEORDERENTRYSEQ = t0E.FSEQ) + WHERE + t0.FDATE BETWEEN @STARTDATE AND @ENDDATE + GROUP BY + t0E.FMATERIALID + ) t0 + LEFT JOIN T_BD_MATERIAL t2 ON t2.FMATERIALID = t0.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L t2_L ON (t2_L.FMATERIALID = t0.FMATERIALID AND t2_L.FLOCALEID = @LCID) + LEFT JOIN T_BD_MATERIALSTOCK t2S ON t2S.FMATERIALID = t0.FMATERIALID + LEFT JOIN T_MATERIAL_INVENTORY_MONTH_RECORD t4 ON (t4.FMATERIALID = t0.FMATERIALID AND t4.RECORDYEAR = @YEAR AND t4.RECORDMONTH = @MONTH and t4.RECORDDAY = @DAY) LEFT JOIN T_BD_UNIT_L t5_L ON (t5_l.FUNITID = t2S.FSTOREUNITID AND t5_L.FLOCALEID = @LCID) LEFT JOIN T_BD_UNIT_L t6_L ON (t6_l.FUNITID = t4.FPACKUNITID AND t6_L.FLOCALEID = @LCID) - WHERE - t0.FDATE BETWEEN @STARTDATE AND @ENDDATE + SELECT @HASID = COUNT(1) FROM #TMPMPS diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/4.存储过程_生产计划_查询.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/4.存储过程_生产计划_查询.sql index 7599a7e..ad55632 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/4.存储过程_生产计划_查询.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/4.存储过程_生产计划_查询.sql @@ -7,7 +7,7 @@ CREATE PROCEDURE PROC_ProductionSchedule ,@STARTDATE DATE ,@ENDDATE DATE ,@LCID INT - ,@SEQFLD VARCHAR(200) + ,@SEQFLD varchar(100) ,@YEAR INT ,@MONTH INT ,@DAY INT @@ -15,12 +15,11 @@ CREATE PROCEDURE PROC_ProductionSchedule AS BEGIN SET @HASID = 0 - - SELECT @DAY = (CASE WHEN LTRIM(RTRIM(T0.FPARAMETERS)) = '' THEN @DAY ELSE CAST(T0.FPARAMETERS AS INT) END) FROM T_BAS_SCHEDULEINFO T0 WHERE T0.FSCHEDULETYPEID = '657bf589f52174' + SELECT @DAY = (CASE WHEN LTRIM(RTRIM(T0.FPARAMETERS)) = '' THEN @DAY ELSE CAST(T0.FPARAMETERS AS INT) END) FROM T_BAS_SCHEDULEINFO T0 WHERE T0.FSCHEDULETYPEID = '658e1974b04f4f' 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 @TABLENAME,@SEQFLD,@YEAR,@MONTH,@DAY, @HASID OUTPUT + EXEC PROC_INQUIRE_PLANPLMRPT @TABLENAME ,@SEQFLD,@YEAR,@MONTH,@DAY, @HASID OUTPUT END ELSE BEGIN diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/5.存储过程_生产计划表_insert.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/5.存储过程_生产计划表_insert.sql index 9bf6f43..e727f67 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/5.存储过程_生产计划表_insert.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/5.存储过程_生产计划表_insert.sql @@ -12,14 +12,13 @@ CREATE PROCEDURE PROC_SAVE_PLANPLMRPT_DATA ,@LCID int AS BEGIN - SELECT @DAY = (CASE WHEN LTRIM(RTRIM(T0.FPARAMETERS)) = '' THEN @DAY ELSE CAST(T0.FPARAMETERS AS INT) END) FROM T_BAS_SCHEDULEINFO T0 WHERE T0.FSCHEDULETYPEID = '657bf589f52174' + SELECT @DAY = (CASE WHEN LTRIM(RTRIM(T0.FPARAMETERS)) = '' THEN @DAY ELSE CAST(T0.FPARAMETERS AS INT) END) FROM T_BAS_SCHEDULEINFO T0 WHERE T0.FSCHEDULETYPEID = '658e1974b04f4f' + + DELETE FROM T_PLAN_PLANPLMRPT WHERE (FRECORDYEAR = @YEAR AND FRECORDMONTH = @MONTH AND FRECORDDAY = @DAY) INSERT INTO T_PLAN_PLANPLMRPT SELECT - t0.FBILLNO - ,t0E.FMATERIALID - ,t0E.FENTRYID - ,t0E.FSEQ + t0.FMATERIALID ,t2.FNUMBER ,t2_L.FNAME ,t2_L.FSPECIFICATION @@ -43,87 +42,102 @@ BEGIN ,t2S.FSTOREUNITID --浥λ ,t5_L.FNAME AS FSTOREUNITNAME ,(dbo.PackageValConver(t2S.FSAFESTOCK, t4.FPACKUNITCONVERRATIO)) AS SAFESTOCKCOUNT - ,CONCAT(CONVERT(VARCHAR,dbo.ToDecimal2(t4.FPACKUNITCONVERRATIO)),t5_L.FNAME ,'/' ,t6_L.FNAME) AS FPACKUNITCONVT --װת + ,CONCAT(CONVERT(VARCHAR,dbo.ToDecimal2(t4.FPACKUNITCONVERRATIO)),t5_L.FNAME ,'/' ,t6_L.FNAME) AS FPACKUNITCONVT ,t4.FLOTYIELD -- 'ÿ' ,t4.FPACKUNITCONVERRATIO -- 'װ' ,t4.FPACKUNITID -- 'λ' ,t6_L.FNAME AS FPACKUNITNAME - ,dbo.PackageValConver(t0E.M01,t4.FPACKUNITCONVERRATIO) as M01 -- - ,dbo.PackageValConver(t0E.S01,t4.FPACKUNITCONVERRATIO) as S01 --ǰһ - ,dbo.PackageValConver(t0E.S02,t4.FPACKUNITCONVERRATIO) as S02 --ǰ - ,dbo.PackageValConver(t0E.S03,t4.FPACKUNITCONVERRATIO) as S03 --ǰ - ,dbo.PackageValConver(ISNULL(t3.FFINISHQTY,0) - ISNULL(t3.FSTOCKINQUASELQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InProductionQty -- + ,dbo.PackageValConver(t0.M01,t4.FPACKUNITCONVERRATIO) as M01 + ,dbo.PackageValConver(t0.S01,t4.FPACKUNITCONVERRATIO) as S01 + ,dbo.PackageValConver(t0.S02,t4.FPACKUNITCONVERRATIO) as S02 + ,dbo.PackageValConver(t0.S03,t4.FPACKUNITCONVERRATIO) as S03 + ,dbo.PackageValConver(ISNULL(t0.FFINISHQTY,0) - ISNULL(t0.FSTOCKINQUASELQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InProductionQty -- ,dbo.PackageValConver(ISNULL(t4.FSTOCKQTY,0),t4.FPACKUNITCONVERRATIO) AS InStockQty -- - ,dbo.PackageValConver((ISNULL(t3.FFINISHQTY,0) - ISNULL(t3.FSTOCKINQUASELQTY,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --ϼ - ,dbo.PackageValConver(t1.FOrderQty,t4.FLOTYIELD) AS OrderLotQty --ƻ - ,dbo.PackageValConver(t1.FFirmQty, t4.FPACKUNITCONVERRATIO) AS FirmLotQty --ȷ - ,dbo.ToDecimal2(t1.FFirmQty) FFirmQty --ȷ + ,dbo.PackageValConver((ISNULL(t0.FFINISHQTY,0) - ISNULL(t0.FSTOCKINQUASELQTY,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --ϼ + ,dbo.PackageValConver(ISNULL(t0.FOrderQty,0),t4.FPACKUNITCONVERRATIO) AS OrderLotQty --ƻ + ,dbo.PackageValConver(ISNULL(t0.FFirmQty,0), t4.FPACKUNITCONVERRATIO) AS FirmLotQty --ȷ + ,dbo.ToDecimal2(ISNULL(t0.FFirmQty,0)) FFirmQty --ȷ ,@DAY AS FRECORDDAY ,@MONTH AS FRECORDMONTH ,@YEAR AS FRECORDYEAR + ,t0.countM FROM - T_PLN_FORECAST t0 - LEFT JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID - LEFT JOIN ( - SELECT - t1.FMATERIALID - ,t1.FCOMPUTERNO - ,t1.FBILLNO - ,t1_B.FSALEORDERENTRYID - ,sum(t1.FFirmQty) FFirmQty - ,sum(t1.FOrderQty) FOrderQty - FROM - T_PLN_PLANORDER t1 - LEFT JOIN T_PLN_PLANORDER_B t1_B ON t1.FID = t1_B.FID - WHERE t1.FDATASOURCE = 1 AND t1.FCREATEDATE BETWEEN @STARTDATE AND @ENDDATE - GROUP BY - t1.FCOMPUTERNO - ,t1.FBILLNO - ,t1.FMATERIALID - ,t1_B.FSALEORDERENTRYID - ) t1 ON t1.FMATERIALID = t0E.FMATERIALID - LEFT JOIN T_BD_MATERIAL t2 ON t2.FMATERIALID = t0E.FMATERIALID - LEFT JOIN T_BD_MATERIAL_L t2_L ON (t2_L.FMATERIALID = t0E.FMATERIALID AND t2_L.FLOCALEID = @LCID) - LEFT JOIN T_BD_MATERIALSTOCK t2S ON t2S.FMATERIALID = t0E.FMATERIALID - LEFT JOIN ( - SELECT - t0E.FSRCBILLNO - ,t0E.FMATERIALID - ,t0E.FSALEORDERENTRYID - ,t0E.FSALEORDERENTRYSEQ - ,SUM(t1.FFINISHQTY) AS FFINISHQTY -- - ,SUM(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY --ϸƷѡ - FROM - T_PRD_MO t0 - LEFT JOIN T_PRD_MOENTRY t0E ON t0.FID = t0E.FID - LEFT JOIN T_PRD_MOENTRY_A t0E_A ON t0E_A.FENTRYID = t0E.FENTRYID - LEFT JOIN ( + (SELECT + t0E.FMATERIALID + ,sum(t1.FFirmQty) AS FFirmQty + ,sum(t1.FOrderQty) AS FOrderQty + ,sum(t1.FFINISHQTY) AS FFINISHQTY + ,sum(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY + ,sum(M01) AS M01 + ,sum(S01) AS S01 + ,sum(S02) AS S02 + ,sum(S03) AS S03 + ,count(1) AS countM + FROM + T_PLN_FORECAST t0 + LEFT JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID + LEFT JOIN ( SELECT - t0.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e 㱨 e52b554423704173b7306554708a8b05 㱨 - ,t0E.FMOENTRYID - ,t0E.FFINISHQTY - ,t0E_A.FSTOCKINQUASELQTY - FROM - T_PRD_MORPT t0 - LEFT JOIN T_PRD_MORPTENTRY t0E ON t0E.FID = t0.FID - LEFT JOIN T_PRD_MORPTENTRY_A t0E_A ON t0E_A.FID = t0.FID AND t0E_A.FENTRYID = t0E.FENTRYID - WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e' - ) t1 ON t1.FMOENTRYID = t0E.FENTRYID - WHERE - t0E.FSRCBILLTYPE ='PLN_PLANORDER' - AND t0E_A.FSTATUS <> 6 - AND t0E.FSALEORDERENTRYID <> 0 - AND t0.FDATE BETWEEN @STARTDATE AND @ENDDATE - GROUP BY - t0E.FSRCBILLNO - ,t0E.FMATERIALID - ,t0E.FSALEORDERENTRYID - ,t0E.FSALEORDERENTRYSEQ - ) t3 ON t3.FSALEORDERENTRYID = t0E.FENTRYID AND t3.FSALEORDERENTRYSEQ = t0E.FSEQ AND t3.FSRCBILLNO = t0.FBILLNO - LEFT JOIN T_MATERIAL_INVENTORY_MONTH_RECORD t4 ON (t4.FMATERIALID = t0E.FMATERIALID AND t4.RECORDYEAR = @YEAR AND t4.RECORDMONTH = @MONTH and t4.RECORDDAY = @DAY) + t1.FMATERIALID + ,t1_B.FSALEORDERENTRYID + ,t1_B.FSALEORDERENTRYSEQ + ,t1_B.FSALEORDERID + ,sum(t1.FFirmQty) AS FFirmQty + ,sum(t1.FOrderQty) AS FOrderQty + ,sum(t2.FFINISHQTY) AS FFINISHQTY + ,sum(t2.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY + FROM + T_PLN_PLANORDER t1 + LEFT JOIN T_PLN_PLANORDER_B t1_B ON t1.FID = t1_B.FID + LEFT JOIN ( + SELECT + t0E.FMATERIALID + ,t0E_LK.FSID + ,SUM(t1.FFINISHQTY) AS FFINISHQTY -- + ,SUM(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY --ϸƷѡ + FROM + T_PRD_MO t0 + LEFT JOIN T_PRD_MOENTRY t0E ON t0.FID = t0E.FID + LEFT JOIN T_PRD_MOENTRY_LK t0E_LK ON t0E_LK.FENTRYID = t0E.FENTRYID AND t0E_LK.FSTABLENAME = 'T_PLN_PLANORDER' + LEFT JOIN T_PRD_MOENTRY_A t0E_A ON t0E_A.FENTRYID = t0E.FENTRYID + LEFT JOIN ( + SELECT + t0.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e 㱨 e52b554423704173b7306554708a8b05 㱨 + ,t0E.FMOENTRYID + ,t0E.FFINISHQTY + ,t0E_A.FSTOCKINQUASELQTY + FROM + T_PRD_MORPT t0 + LEFT JOIN T_PRD_MORPTENTRY t0E ON t0E.FID = t0.FID + LEFT JOIN T_PRD_MORPTENTRY_A t0E_A ON t0E_A.FID = t0.FID AND t0E_A.FENTRYID = t0E.FENTRYID + WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e' + ) t1 ON t1.FMOENTRYID = t0E.FENTRYID + WHERE + t0E.FSRCBILLTYPE ='PLN_PLANORDER' + AND t0E_A.FREQSRC = 2 + AND t0E_A.FSTATUS <> 6 + AND t0E.FSALEORDERENTRYID <> 0 + GROUP BY + t0E.FMATERIALID + ,t0E_LK.FSID + ) t2 ON t2.FSID = t1.FID AND t2.FMATERIALID = t1.FMATERIALID + WHERE t1.FDATASOURCE = 1 AND t1_B.FDEMANDTYPE = 2 + GROUP BY + t1.FMATERIALID + ,t1_B.FSALEORDERENTRYID + ,t1_B.FSALEORDERENTRYSEQ + ,t1_B.FSALEORDERID + ) t1 ON (t1.FMATERIALID = t0E.FMATERIALID AND t1.FSALEORDERID = t0.FID AND t0E.FENTRYID = t1.FSALEORDERENTRYID AND t1.FSALEORDERENTRYSEQ = t0E.FSEQ) + WHERE + t0.FDATE BETWEEN @STARTDATE AND @ENDDATE + GROUP BY + t0E.FMATERIALID + ) t0 + LEFT JOIN T_BD_MATERIAL t2 ON t2.FMATERIALID = t0.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L t2_L ON (t2_L.FMATERIALID = t0.FMATERIALID AND t2_L.FLOCALEID = @LCID) + LEFT JOIN T_BD_MATERIALSTOCK t2S ON t2S.FMATERIALID = t0.FMATERIALID + LEFT JOIN T_MATERIAL_INVENTORY_MONTH_RECORD t4 ON (t4.FMATERIALID = t0.FMATERIALID AND t4.RECORDYEAR = @YEAR AND t4.RECORDMONTH = @MONTH and t4.RECORDDAY = @DAY) LEFT JOIN T_BD_UNIT_L t5_L ON (t5_l.FUNITID = t2S.FSTOREUNITID AND t5_L.FLOCALEID = @LCID) LEFT JOIN T_BD_UNIT_L t6_L ON (t6_l.FUNITID = t4.FPACKUNITID AND t6_L.FLOCALEID = @LCID) - WHERE - t0.FDATE BETWEEN @STARTDATE AND @ENDDATE END \ No newline at end of file diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/6.存储过程_物料即时库存表_insert.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/6.存储过程_物料即时库存表_insert.sql index 5d12217..72322c9 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/6.存储过程_物料即时库存表_insert.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/6.存储过程_物料即时库存表_insert.sql @@ -26,7 +26,7 @@ BEGIN ,@DAY AS RECORDDAY FROM T_BD_MATERIAL T0 - LEFT JOIN T_BD_MATERIALPRODUCE T0P ON T0P.FMATERIALID = T0.FMATERIALID + LEFT JOIN T_BD_MATERIALPRODUCE T0P ON T0P.FMATERIALID = T0.FMATERIALID LEFT JOIN ( SELECT T1.FMATERIALID diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/7.创建表_生产计划表.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/7.创建表_生产计划表.sql index 14d010d..94da98c 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/7.创建表_生产计划表.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/7.创建表_生产计划表.sql @@ -12,7 +12,7 @@ Target Server Version : 15002080 File Encoding : 65001 - Date: 29/12/2023 01:50:37 + Date: 30/12/2023 03:59:37 */ @@ -24,38 +24,36 @@ IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[T_ GO CREATE TABLE [dbo].[T_PLAN_PLANPLMRPT] ( - [FID] int NOT NULL PRIMARY KEY IDENTITY(100000,1), - [FBILLNO] varchar(80) COLLATE Chinese_PRC_CI_AS NULL, - [FMATERIALID] int NULL, - [FENTRYID] int NULL, - [FSEQ] int NULL, - [FNUMBER] nvarchar(80) COLLATE Chinese_PRC_CI_AS NULL, - [FNAME] nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL, - [FSPECIFICATION] nvarchar(510) COLLATE Chinese_PRC_CI_AS NULL, + [FID] int IDENTITY(100000,1) NOT NULL, + [FMATERIALID] int DEFAULT 0 NOT NULL, + [FNUMBER] varchar(80) COLLATE Chinese_PRC_CI_AS NULL, + [FNAME] varchar(100) COLLATE Chinese_PRC_CI_AS NULL, + [FSPECIFICATION] varchar(100) COLLATE Chinese_PRC_CI_AS NULL, [SHELFLIFE] varchar(50) COLLATE Chinese_PRC_CI_AS NULL, - [StandardLot] varchar(200) COLLATE Chinese_PRC_CI_AS NOT NULL, - [SAFESTOCK] decimal(23,2) NULL, - [FSTOREUNITID] int NULL, - [FSTOREUNITNAME] nvarchar(80) COLLATE Chinese_PRC_CI_AS NULL, - [SAFESTOCKCOUNT] decimal(23,2) NULL, - [FPACKUNITCONVT] nvarchar(200) COLLATE Chinese_PRC_CI_AS NOT NULL, - [FLOTYIELD] int NULL, - [FPACKUNITCONVERRATIO] int NULL, - [FPACKUNITID] int NULL, - [FPACKUNITNAME] nvarchar(80) COLLATE Chinese_PRC_CI_AS NULL, - [M01] decimal(23,2) NULL, - [S01] decimal(23,2) NULL, - [S02] decimal(23,2) NULL, - [S03] decimal(23,2) NULL, - [InProductionQty] decimal(23,2) NULL, - [InStockQty] decimal(23,2) NULL, - [TotalStockQty] decimal(23,2) NULL, - [OrderLotQty] decimal(23,2) NULL, - [FirmLotQty] decimal(23,2) NULL, - [FFirmQty] decimal(23,2) NULL, - [FRECORDDAY] int null, - [FRECORDMONTH] int null, - [FRECORDYEAR] int null + [StandardLot] varchar(100) COLLATE Chinese_PRC_CI_AS NULL, + [SAFESTOCK] decimal(23,2) DEFAULT 0 NOT NULL, + [FSTOREUNITID] int DEFAULT 0 NOT NULL, + [FSTOREUNITNAME] varchar(80) COLLATE Chinese_PRC_CI_AS NULL, + [SAFESTOCKCOUNT] decimal(23,6) DEFAULT 0 NOT NULL, + [FPACKUNITCONVT] varchar(100) COLLATE Chinese_PRC_CI_AS NULL, + [FLOTYIELD] decimal(23,6) DEFAULT 0 NOT NULL, + [FPACKUNITCONVERRATIO] decimal(23,6) DEFAULT 0 NOT NULL, + [FPACKUNITID] int DEFAULT 0 NOT NULL, + [FPACKUNITNAME] varchar(80) COLLATE Chinese_PRC_CI_AS NULL, + [M01] decimal(23,6) DEFAULT 0 NOT NULL, + [S01] decimal(23,6) DEFAULT 0 NOT NULL, + [S02] decimal(23,6) DEFAULT 0 NOT NULL, + [S03] decimal(23,6) DEFAULT 0 NOT NULL, + [InProductionQty] decimal(23,6) DEFAULT 0 NOT NULL, + [InStockQty] decimal(23,6) DEFAULT 0 NOT NULL, + [TotalStockQty] decimal(23,6) DEFAULT 0 NOT NULL, + [OrderLotQty] decimal(23,6) DEFAULT 0 NOT NULL, + [FirmLotQty] decimal(23,6) DEFAULT 0 NOT NULL, + [FFirmQty] decimal(23,6) DEFAULT 0 NOT NULL, + [FRECORDDAY] int DEFAULT 0 NOT NULL, + [FRECORDMONTH] int DEFAULT 0 NOT NULL, + [FRECORDYEAR] int DEFAULT 0 NOT NULL, + [countM] int DEFAULT 0 NOT NULL ) GO diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/自定义函数.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/自定义函数.sql index 3e4123f..5deb987 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/自定义函数.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/自定义函数.sql @@ -1,9 +1,9 @@ -CREATE FUNCTION PackageValConver(@cnvNumber decimal(23,6) ,@coefficient int) -RETURNS decimal(23,6) --طֵ +alter FUNCTION PackageValConver(@cnvNumber decimal(23,6) ,@coefficient int) +RETURNS decimal(23,2) --طֵ as BEGIN declare @result decimal(23,6) -select @result = (CASE @coefficient +select @result = (CASE isnull(@coefficient,0) WHEN 0 THEN @cnvNumber ELSE (@cnvNumber/@coefficient) END) diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_物料库存记录.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_物料库存记录.sql index e835366..5e3b6ba 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_物料库存记录.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_物料库存记录.sql @@ -1,11 +1,10 @@ ---DELETE FROM T_MATERIAL_INVENTORY_MONTH_RECORD WHERE RECORDDAY = 27 AND RECORDMONTH = 12 AND RECORDYEAR = 2023 +DELETE FROM T_MATERIAL_INVENTORY_MONTH_RECORD WHERE RECORDDAY = 20 AND RECORDMONTH = 12 AND RECORDYEAR = 2023 INSERT INTO T_MATERIAL_INVENTORY_MONTH_RECORD SELECT T0.FMASTERID ,T0.FMATERIALID ,T0.FNUMBER - --,T0_L.FNAME ,ISNULL(T1.STOCKQTY,0) AS FSTOCKQTY ,T0P.FLOTYIELD -- 'ÿ' ,T0P.FPACKUNITCONVERRATIO -- 'װ' @@ -16,7 +15,6 @@ SELECT ,20 AS RECORDDAY FROM T_BD_MATERIAL T0 - LEFT JOIN T_BD_MATERIAL_L T0_L ON (T0_L.FMATERIALID = T0.FMATERIALID AND T0_L.FLOCALEID = 2052) LEFT JOIN T_BD_MATERIALPRODUCE T0P ON T0P.FMATERIALID = T0.FMATERIALID LEFT JOIN ( SELECT diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_生产计划_简单报表自定义属性.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_生产计划_简单报表自定义属性.sql new file mode 100644 index 0000000..616c4c2 --- /dev/null +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_生产计划_简单报表自定义属性.sql @@ -0,0 +1,16 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_SELECT_MPS_ATTRIBUTE') + DROP PROCEDURE DBO.PROC_SELECT_MPS_ATTRIBUTE; +GO + +CREATE PROCEDURE PROC_SELECT_MPS_ATTRIBUTE + @formId varchar(80) +AS +BEGIN + SELECT 'FNUMBER' AS TITLEKEY , 200 AS TITLEWIDTH + UNION ALL SELECT 'FNAME' AS TITLEKEY , 200 AS TITLEWIDTH + UNION ALL SELECT 'SHELFLIFE' AS TITLEKEY , 200 AS TITLEWIDTH + UNION ALL SELECT 'StandardLot' AS TITLEKEY , 200 AS TITLEWIDTH + UNION ALL SELECT 'FLOTYIELD' AS TITLEKEY , 200 AS TITLEWIDTH + UNION ALL SELECT 'FPACKUNITCONVERRATIO' AS TITLEKEY , 200 AS TITLEWIDTH + UNION ALL SELECT 'FPACKUNITCONVT' AS TITLEKEY , 200 AS TITLEWIDTH +END \ No newline at end of file diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_生产计划数据.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_生产计划数据.sql index 1222299..9c1951d 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_生产计划数据.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_生产计划数据.sql @@ -9,11 +9,8 @@ --ȡʱƻIJֵ SELECT @DAY = (CASE WHEN LTRIM(RTRIM(T0.FPARAMETERS)) = '' THEN @DAY ELSE CAST(T0.FPARAMETERS AS INT) END) FROM T_BAS_SCHEDULEINFO T0 WHERE T0.FSCHEDULETYPEID = '657bf589f52174' SELECT - t0.FID - ,t0.FBILLNO - ,t0E.FMATERIALID - ,t0E.FENTRYID - ,t0E.FSEQ + ROW_NUMBER() OVER(ORDER BY t0.FMATERIALID) AS FIDENTITYID + ,t0.FMATERIALID ,t2.FNUMBER ,t2_L.FNAME ,t2_L.FSPECIFICATION @@ -42,77 +39,92 @@ ,t4.FPACKUNITCONVERRATIO -- 'װ' ,t4.FPACKUNITID -- 'λ' ,t6_L.FNAME AS FPACKUNITNAME - ,dbo.PackageValConver(t0E.M01,t4.FPACKUNITCONVERRATIO) as M01 - ,dbo.PackageValConver(t0E.S01,t4.FPACKUNITCONVERRATIO) as S01 - ,dbo.PackageValConver(t0E.S02,t4.FPACKUNITCONVERRATIO) as S02 - ,dbo.PackageValConver(t0E.S03,t4.FPACKUNITCONVERRATIO) as S03 - ,dbo.PackageValConver(ISNULL(t3.FFINISHQTY,0) - ISNULL(t3.FSTOCKINQUASELQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InProductionQty -- + ,dbo.PackageValConver(t0.M01,t4.FPACKUNITCONVERRATIO) as M01 + ,dbo.PackageValConver(t0.S01,t4.FPACKUNITCONVERRATIO) as S01 + ,dbo.PackageValConver(t0.S02,t4.FPACKUNITCONVERRATIO) as S02 + ,dbo.PackageValConver(t0.S03,t4.FPACKUNITCONVERRATIO) as S03 + ,dbo.PackageValConver(ISNULL(t0.FFINISHQTY,0) - ISNULL(t0.FSTOCKINQUASELQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InProductionQty -- ,dbo.PackageValConver(ISNULL(t4.FSTOCKQTY,0),t4.FPACKUNITCONVERRATIO) AS InStockQty -- - ,dbo.PackageValConver((ISNULL(t3.FFINISHQTY,0) - ISNULL(t3.FSTOCKINQUASELQTY,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --ϼ - ,dbo.PackageValConver(t1.FOrderQty,t4.FLOTYIELD) AS OrderLotQty --ƻ - ,dbo.PackageValConver(t1.FFirmQty, t4.FPACKUNITCONVERRATIO) AS FirmLotQty --ȷ - ,dbo.ToDecimal2(t1.FFirmQty) FFirmQty --ȷ + ,dbo.PackageValConver((ISNULL(t0.FFINISHQTY,0) - ISNULL(t0.FSTOCKINQUASELQTY,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --ϼ + ,dbo.PackageValConver(ISNULL(t0.FOrderQty,0),t4.FPACKUNITCONVERRATIO) AS OrderLotQty --ƻ + ,dbo.PackageValConver(ISNULL(t0.FFirmQty,0), t4.FPACKUNITCONVERRATIO) AS FirmLotQty --ȷ + ,dbo.ToDecimal2(ISNULL(t0.FFirmQty,0)) FFirmQty --ȷ + ,t0.countM FROM - T_PLN_FORECAST t0 - LEFT JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID - LEFT JOIN ( - SELECT - t1.FMATERIALID - ,t1.FCOMPUTERNO - ,t1.FBILLNO - ,t1_B.FSALEORDERENTRYID - ,sum(t1.FFirmQty) FFirmQty - ,sum(t1.FOrderQty) FOrderQty - FROM - T_PLN_PLANORDER t1 - LEFT JOIN T_PLN_PLANORDER_B t1_B ON t1.FID = t1_B.FID - WHERE t1.FDATASOURCE = 1 AND t1.FCREATEDATE BETWEEN @STARTDATE AND @ENDDATE - GROUP BY - t1.FCOMPUTERNO - ,t1.FBILLNO - ,t1.FMATERIALID - ,t1_B.FSALEORDERENTRYID - ) t1 ON t1.FMATERIALID = t0E.FMATERIALID - LEFT JOIN T_BD_MATERIAL t2 ON t2.FMATERIALID = t0E.FMATERIALID - LEFT JOIN T_BD_MATERIAL_L t2_L ON (t2_L.FMATERIALID = t0E.FMATERIALID AND t2_L.FLOCALEID = @LCID) - LEFT JOIN T_BD_MATERIALSTOCK t2S ON t2S.FMATERIALID = t0E.FMATERIALID - LEFT JOIN ( - SELECT - t0E.FSRCBILLNO - ,t0E.FMATERIALID - ,t0E.FSALEORDERENTRYID - ,t0E.FSALEORDERENTRYSEQ - ,SUM(t1.FFINISHQTY) AS FFINISHQTY -- - ,SUM(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY --ϸƷѡ - FROM - T_PRD_MO t0 - LEFT JOIN T_PRD_MOENTRY t0E ON t0.FID = t0E.FID - LEFT JOIN T_PRD_MOENTRY_A t0E_A ON t0E_A.FENTRYID = t0E.FENTRYID - LEFT JOIN ( + (SELECT + t0E.FMATERIALID + ,sum(t1.FFirmQty) AS FFirmQty + ,sum(t1.FOrderQty) AS FOrderQty + ,sum(t1.FFINISHQTY) AS FFINISHQTY + ,sum(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY + ,sum(M01) AS M01 + ,sum(S01) AS S01 + ,sum(S02) AS S02 + ,sum(S03) AS S03 + ,count(1) AS countM + FROM + T_PLN_FORECAST t0 + LEFT JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID + LEFT JOIN ( SELECT - t0.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e 㱨 e52b554423704173b7306554708a8b05 㱨 - ,t0E.FMOENTRYID - ,t0E.FFINISHQTY - ,t0E_A.FSTOCKINQUASELQTY - FROM - T_PRD_MORPT t0 - LEFT JOIN T_PRD_MORPTENTRY t0E ON t0E.FID = t0.FID - LEFT JOIN T_PRD_MORPTENTRY_A t0E_A ON t0E_A.FID = t0.FID AND t0E_A.FENTRYID = t0E.FENTRYID - WHERE t0.FDOCUMENTSTATUS='C' AND t0.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e' - ) t1 ON t1.FMOENTRYID = t0E.FENTRYID - WHERE - t0E.FSRCBILLTYPE ='PLN_PLANORDER' - AND t0E_A.FSTATUS <> 6 - AND t0E.FSALEORDERENTRYID <> 0 - AND t0.FDATE BETWEEN @STARTDATE AND @ENDDATE - GROUP BY - t0E.FSRCBILLNO - ,t0E.FMATERIALID - ,t0E.FSALEORDERENTRYID - ,t0E.FSALEORDERENTRYSEQ - ) t3 ON t3.FSALEORDERENTRYID = t0E.FENTRYID AND t3.FSALEORDERENTRYSEQ = t0E.FSEQ AND t3.FSRCBILLNO = t0.FBILLNO - LEFT JOIN T_MATERIAL_INVENTORY_MONTH_RECORD t4 ON (t4.FMATERIALID = t0E.FMATERIALID AND t4.RECORDYEAR = @YEAR AND t4.RECORDMONTH = @MONTH and t4.RECORDDAY = @DAY) + t1.FMATERIALID + ,t1_B.FSALEORDERENTRYID + ,t1_B.FSALEORDERENTRYSEQ + ,t1_B.FSALEORDERID + ,sum(t1.FFirmQty) AS FFirmQty + ,sum(t1.FOrderQty) AS FOrderQty + ,sum(t2.FFINISHQTY) AS FFINISHQTY + ,sum(t2.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY + FROM + T_PLN_PLANORDER t1 + LEFT JOIN T_PLN_PLANORDER_B t1_B ON t1.FID = t1_B.FID + LEFT JOIN ( + SELECT + t0E.FMATERIALID + ,t0E_LK.FSID + ,SUM(t1.FFINISHQTY) AS FFINISHQTY -- + ,SUM(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY --ϸƷѡ + FROM + T_PRD_MO t0 + LEFT JOIN T_PRD_MOENTRY t0E ON t0.FID = t0E.FID + LEFT JOIN T_PRD_MOENTRY_LK t0E_LK ON t0E_LK.FENTRYID = t0E.FENTRYID AND t0E_LK.FSTABLENAME = 'T_PLN_PLANORDER' + LEFT JOIN T_PRD_MOENTRY_A t0E_A ON t0E_A.FENTRYID = t0E.FENTRYID + LEFT JOIN ( + SELECT + t0.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e 㱨 e52b554423704173b7306554708a8b05 㱨 + ,t0E.FMOENTRYID + ,t0E.FFINISHQTY + ,t0E_A.FSTOCKINQUASELQTY + FROM + T_PRD_MORPT t0 + LEFT JOIN T_PRD_MORPTENTRY t0E ON t0E.FID = t0.FID + LEFT JOIN T_PRD_MORPTENTRY_A t0E_A ON t0E_A.FID = t0.FID AND t0E_A.FENTRYID = t0E.FENTRYID + WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e' + ) t1 ON t1.FMOENTRYID = t0E.FENTRYID + WHERE + t0E.FSRCBILLTYPE ='PLN_PLANORDER' + AND t0E_A.FREQSRC = 2 + AND t0E_A.FSTATUS <> 6 + AND t0E.FSALEORDERENTRYID <> 0 + GROUP BY + t0E.FMATERIALID + ,t0E_LK.FSID + ) t2 ON t2.FSID = t1.FID AND t2.FMATERIALID = t1.FMATERIALID + WHERE t1.FDATASOURCE = 1 AND t1_B.FDEMANDTYPE = 2 + GROUP BY + t1.FMATERIALID + ,t1_B.FSALEORDERENTRYID + ,t1_B.FSALEORDERENTRYSEQ + ,t1_B.FSALEORDERID + ) t1 ON (t1.FMATERIALID = t0E.FMATERIALID AND t1.FSALEORDERID = t0.FID AND t0E.FENTRYID = t1.FSALEORDERENTRYID AND t1.FSALEORDERENTRYSEQ = t0E.FSEQ) + WHERE + t0.FDATE BETWEEN @STARTDATE AND @ENDDATE + GROUP BY + t0E.FMATERIALID + ) t0 + LEFT JOIN T_BD_MATERIAL t2 ON t2.FMATERIALID = t0.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L t2_L ON (t2_L.FMATERIALID = t0.FMATERIALID AND t2_L.FLOCALEID = @LCID) + LEFT JOIN T_BD_MATERIALSTOCK t2S ON t2S.FMATERIALID = t0.FMATERIALID + LEFT JOIN T_MATERIAL_INVENTORY_MONTH_RECORD t4 ON (t4.FMATERIALID = t0.FMATERIALID AND t4.RECORDYEAR = @YEAR AND t4.RECORDMONTH = @MONTH and t4.RECORDDAY = @DAY) LEFT JOIN T_BD_UNIT_L t5_L ON (t5_l.FUNITID = t2S.FSTOREUNITID AND t5_L.FLOCALEID = @LCID) LEFT JOIN T_BD_UNIT_L t6_L ON (t6_l.FUNITID = t4.FPACKUNITID AND t6_L.FLOCALEID = @LCID) - WHERE - t0.FDATE BETWEEN @STARTDATE AND @ENDDATE \ No newline at end of file