This commit is contained in:
PastSaid
2023-12-17 11:37:43 +08:00
parent ea90726158
commit 224c74d538
18 changed files with 610 additions and 124 deletions

View File

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

View File

@@ -40,6 +40,7 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="DateTimeExtension.cs" />
<Compile Include="StringExtension.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>

View File

@@ -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}

View File

@@ -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
{
}
}

View File

@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{01F02D15-2726-4077-80FC-9E38EF29BABC}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Kingdee.K3.SCM.Sal.Report.PlugInEx</RootNamespace>
<AssemblyName>Kingdee.K3.SCM.Sal.Report.PlugInEx</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Kingdee.BOS">
<HintPath>..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.App">
<HintPath>..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.App.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.Core">
<HintPath>..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Core.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.DataEntity">
<HintPath>..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.DataEntity.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.Model">
<HintPath>..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Model.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.BD.Contracts">
<HintPath>..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.BD.Contracts.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.SCM.Sal.Report.PlugIn">
<HintPath>..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.SCM.Sal.Report.PlugIn.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Class1.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -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")]

View File

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

View File

@@ -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<MessageBoxResult>(result =>
{
if (result == MessageBoxResult.OK)
{
var tableName = this.SysReportView.Model.DataSource.TableName;
var para = new List<SqlParam>();
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;
}

View File

@@ -47,6 +47,14 @@
<Reference Include="Kingdee.BOS.Model">
<HintPath>..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Model.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.ServiceHelper, Version=8.1.571.1, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.ServiceHelper.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.WebApi.Client, Version=8.1.571.1, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.WebApi.Client.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.BD.Contracts">
<HintPath>..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.BD.Contracts.dll</HintPath>
</Reference>
@@ -66,14 +74,25 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="AutoRecordsInventoryPlugIn.cs" />
<Compile Include="ProductionPlanRptPlugIn.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="BarItemClickEventPlugIn.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="SQLServer\即时库存记录.sql" />
<Content Include="SQLServer\月度生产计划表-存储表.sql" />
<Content Include="SQLServer\月度生产计划表-查询.sql" />
<Content Include="SQLServer\月度生产计划表-预测单.sql" />
<Content Include="SQLServer\月度计划数据保存.sql" />
<Content Include="SQLServer\自动保存存储过程.sql" />
<Content Include="SQLServer\计划生产订单入库数.sql" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Extensions\ExtensionMethods.csproj">
<Project>{50532462-8f7f-455c-b4b3-732ed764e2fa}</Project>
<Name>ExtensionMethods</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -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<SqlParam>
//{
// 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<SqlParam>
{
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;

View File

@@ -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

View File

@@ -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

View File

@@ -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
BEGIN
EXEC PROC_INQUIRPLMTMPRTP @STARTDATE,@ENDDATE,@LCID,@SeqFld
end
SET @sql = '
select
t0.FID
,FENTRYID
,FBILLNO
,FMATERIALID
,FNAME
,FSPECIFICATION
,ShelfLife
,0 AS StandardLot --<2D><>׼<EFBFBD><D7BC><EFBFBD><EFBFBD>
--,FLOTYIELD --ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
--,FPACKUNITCONVERRATIO -- <20><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>
--,CAST(FPACKUNITCONVERRATIO AS VARCHAR)+STOREUNITNAME+''/''+FPACKUNITNAME as FPACKUNITCONVT --<2D><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>
--,FPACKUNITID --<2D><>λ
,FSTOREUNITID
,STOREUNITNAME
,0 AS SAFESTOCKCOUNT --<2D><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><>
,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 -- ''ϵͳ<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>''
--,(FFirmQty / CP.FPACKUNITCONVERRATIO) AS FirmLotQty -- ''ȷ<EFBFBD>ϼƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>''
,FFirmQty --ȷ<>ϼƻ<CFBC><C6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,FFirmQty as FirmLotQty --ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,FOrderQty as OrderLotQty --<2D>ƻ<EFBFBD><C6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,'+@SeqFld+'
into '+ @TableName +' From #TMPMPS t0 '
EXECUTE(@sql)
DROP TABLE #TMPMPS
EXEC PROC_INQUIRPLMTMPRTP @TableName,@STARTDATE,@ENDDATE,@LCID,@SeqFld
END
END

View File

@@ -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
BEGIN
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD>start
SELECT
AE.FSRCBILLNO
,AE.FMATERIALID
,AE.FSALEORDERENTRYID
,AE.FSALEORDERENTRYSEQ
,SUM(AE.FQTY) AS FQTY
,SUM(B.FFINISHQTY) AS FFINISHQTY --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> e52b554423704173b7306554708a8b05 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,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
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD>end
--<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>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
--<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>end
--<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>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 ) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
WHEN 'M' THEN
CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) ) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
WHEN 'D' THEN
CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) / 365 * 12) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>' 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) ) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
WHEN 'M' THEN
CONVERT ( VARCHAR,CAST(CS.FEXPPERIOD AS INT) ) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
WHEN 'D' THEN
CONVERT ( VARCHAR, CAST((
CASE CS.FEXPPERIOD%30 WHEN 0 THEN CS.FEXPPERIOD/30 ELSE CS.FEXPPERIOD / 365 * 12 END
) AS INT)) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>' ELSE ''
END
END) AS 'SHELFLIFE'
--,'' AS '<EFBFBD><EFBFBD>׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,CS.FSAFESTOCK --<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,CS.FSTOREUNITID --<EFBFBD><EFBFBD><EFBFBD>λ
--,CP.FLOTYIELD -- 'ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
--,CP.FPACKUNITCONVERRATIO -- '<27><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>'
--,CP.FPACKUNITCONVERRATIO -- '<27><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD>'
--,CP.FPACKUNITID -- '<27><>λ'
--,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 -- 'ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,CP.FPACKUNITCONVERRATIO -- '<27><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>'
,CP.FPACKUNITID -- '<27><>λ'
,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 --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,(CASE CP.FPACKUNITCONVERRATIO
WHEN 0
THEN E.FBASEQTY ELSE (E.FBASEQTY/CP.FPACKUNITCONVERRATIO)
END) AS InStockQty --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,(CASE CP.FPACKUNITCONVERRATIO
WHEN 0
THEN (D.FQTY + E.FBASEQTY) ELSE ((D.FQTY + E.FBASEQTY)/CP.FPACKUNITCONVERRATIO)
END) AS TotalStockQty --<EFBFBD>ϼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,(CASE CP.FPACKUNITCONVERRATIO
WHEN 0
THEN B.FOrderQty ELSE (B.FOrderQty/CP.FPACKUNITCONVERRATIO)
END) AS OrderLotQty --<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,CS.FSTOREUNITID AS FPACKUNITID -- '<27><>λ'
--, 140 as FLOTYIELD -- 'ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
--,150 as FPACKUNITCONVERRATIO -- '<27><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>'
--,400 AS SAFESTOCKCOUNT --<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
--,'' 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
--Ԥ<EFBFBD>
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
--<EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>λ
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
--<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>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

View File

@@ -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

View File

@@ -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

View File

@@ -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<EFBFBD><EFBFBD><EFBFBD>ѽ
AE.FSRCBILLNO
,AE.FMATERIALID
,AE.FSALEORDERENTRYID
,AE.FSALEORDERENTRYSEQ
,SUM(AE.FQTY) AS FQTY
,SUM(B.FFINISHQTY) AS FFINISHQTY --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> e52b554423704173b7306554708a8b05 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,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

BIN
UseGetFmaterialData.zip Normal file

Binary file not shown.