This commit is contained in:
PastSaid
2023-12-15 09:08:09 +08:00
parent a44ce28933
commit ea90726158
13 changed files with 262 additions and 234 deletions

View File

@@ -27,6 +27,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "月度生产计划", "月
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonthlyProductionSchedule", "MonthlyProductionSchedule\MonthlyProductionSchedule.csproj", "{86DA044C-9D3B-43BD-8BDB-24B65E152604}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonthlyProductionSchedule", "MonthlyProductionSchedule\MonthlyProductionSchedule.csproj", "{86DA044C-9D3B-43BD-8BDB-24B65E152604}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "旭东", "旭东", "{0C4E3DC3-F1FA-4BD7-8D81-BF5EFD452A51}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU

View File

@@ -0,0 +1,31 @@
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.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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;
return;
}
}
}
}

View File

@@ -68,8 +68,11 @@
<ItemGroup> <ItemGroup>
<Compile Include="ProductionPlanRptPlugIn.cs" /> <Compile Include="ProductionPlanRptPlugIn.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="BarItemClickEventPlugIn.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="SQLServer\月度生产计划表-存储表.sql" />
<Content Include="SQLServer\月度生产计划表-查询.sql" />
<Content Include="SQLServer\月度生产计划表-预测单.sql" /> <Content Include="SQLServer\月度生产计划表-预测单.sql" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

View File

@@ -14,6 +14,8 @@ using Kingdee.BOS.Core.List;
using Kingdee.BOS.App.Data; using Kingdee.BOS.App.Data;
using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.Util;
using System.Data;
namespace MonthlyProductionSchedule namespace MonthlyProductionSchedule
@@ -114,16 +116,30 @@ namespace MonthlyProductionSchedule
// 默认排序字段需要从filter中取用户设置的排序字段 // 默认排序字段需要从filter中取用户设置的排序字段
string seqFld = string.Format(base.KSQL_SEQ, " t0.FID "); string seqFld = string.Format(base.KSQL_SEQ, " t0.FID ");
var year = filter.FilterParameter.CustomFilter["DataHoldYear"].Long2Int();
var month = filter.FilterParameter.CustomFilter["DataHoldMonth"].Long2Int();
var date = new DateTime(year, month, 1);
// 取数SQL // 取数SQL
// FID, FEntryId, 编号、状态、物料、数量、单位、单位精度、单价、价税合计 // FID, FEntryId, 编号、状态、物料、数量、单位、单位精度、单价、价税合计
object resa = 0;
var startDate = "2023-12-01"; var startDate = date.ToString("yyyy-MM-dd");
var endDate = "2023-12-31"; var endDate = date.AddMonths(1).AddDays(-1);
string sql = $@" string sql = $@"
EXEC PROC_ProductionSchedule '{tableName}','{startDate}','{endDate}', {base.Context.UserLocale.LCID} ,'{seqFld}'; 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)
//};
//var res = DBUtils.ExecuteStoreProcedure(this.Context, "PROC_ProductionSchedule", para);
DBUtils.ExecuteDynamicObject(this.Context, sql); DBUtils.ExecuteDynamicObject(this.Context, sql);
//filter.FilterParameter.CustomOption.Add("res", res[0].Value);
} }
protected override string GetIdentityFieldIndexSQL(string tableName) protected override string GetIdentityFieldIndexSQL(string tableName)
{ {
@@ -135,7 +151,8 @@ EXEC PROC_ProductionSchedule '{tableName}','{startDate}','{endDate}', {base.Cont
{ {
base.ExecuteBatch(listSql); base.ExecuteBatch(listSql);
} }
///
/// <summary>
/// 构建出报表列 /// 构建出报表列
/// ///
/// ///
@@ -153,10 +170,14 @@ EXEC PROC_ProductionSchedule '{tableName}','{startDate}','{endDate}', {base.Cont
/// ListHeader headChild2 = header.AddChild("FPURMAN", new LocaleValue("采购员")); /// ListHeader headChild2 = header.AddChild("FPURMAN", new LocaleValue("采购员"));
/// headChild2.Width = width; /// headChild2.Width = width;
/// headChild2.Mergeable = true; /// headChild2.Mergeable = true;
/// /// </summary>
/// <param name="filter"></param>
/// <returns></returns>
public override ReportHeader GetReportHeaders(IRptParams filter) public override ReportHeader GetReportHeaders(IRptParams filter)
{ {
var date = System.DateTime.Now; var year = filter.FilterParameter.CustomFilter["DataHoldYear"].Long2Int();
var month = filter.FilterParameter.CustomFilter["DataHoldMonth"].Long2Int();
var date = new DateTime(year, month, 1);
// FID, FEntryId, // FID, FEntryId,
var _colIndex = 0; var _colIndex = 0;
@@ -164,20 +185,20 @@ EXEC PROC_ProductionSchedule '{tableName}','{startDate}','{endDate}', {base.Cont
header.AddChild("FNAME", new LocaleValue("产品名称"), _colIndex++); header.AddChild("FNAME", new LocaleValue("产品名称"), _colIndex++);
header.AddChild("ShelfLife", 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("FLOTYIELD", new LocaleValue("每批产量"), _colIndex++);
header.AddChild("FPACKUNITCONVERRATIO", new LocaleValue("包装规格"), _colIndex++); header.AddChild("FPACKUNITCONVERRATIO", new LocaleValue("包装规格"), _colIndex++);
header.AddChild("FPACKUNITCONVT", new LocaleValue("包装规格"), _colIndex++); header.AddChild("FPACKUNITCONVT", new LocaleValue("包装规格"), _colIndex++);
header.AddChild("FPACKUNITNAME", new LocaleValue("单位"), _colIndex++); header.AddChild("FPACKUNITNAME", new LocaleValue("单位"), _colIndex++);
header.AddChild("ShelfLife", new LocaleValue("安全库存量"), _colIndex++); header.AddChild("SAFESTOCKCOUNT", new LocaleValue("安全库存量"), _colIndex++);
header.AddChild("SAFESTOCK", new LocaleValue("安全库存数量"), _colIndex++); header.AddChild("SAFESTOCK", new LocaleValue("安全库存数量"), _colIndex++);
header.AddChild("M01", new LocaleValue("本月预计需求量"), _colIndex++); header.AddChild("M01", new LocaleValue("本月预计需求量"), _colIndex++);
header.AddChild("S01", new LocaleValue(date.AddMonths(-1).ToString("yyyyMM") + "发货量"), _colIndex++); header.AddChild("S01", new LocaleValue(date.AddMonths(-1).ToString("yyyyMM") + "发货量"), _colIndex++);
header.AddChild("S02", new LocaleValue(date.AddMonths(-2).ToString("yyyyMM") + "发货量"), _colIndex++); header.AddChild("S02", new LocaleValue(date.AddMonths(-2).ToString("yyyyMM") + "发货量"), _colIndex++);
header.AddChild("S03", new LocaleValue(date.AddMonths(-3).ToString("yyyyMM") + "发货量"), _colIndex++); header.AddChild("S03", new LocaleValue(date.AddMonths(-3).ToString("yyyyMM") + "发货量"), _colIndex++);
header.AddChild("FSPECIFICATION", new LocaleValue("已入库量"), _colIndex++); header.AddChild("InStockQty", new LocaleValue("已入库量"), _colIndex++);
header.AddChild("FSPECIFICATION", new LocaleValue("在生产量"), _colIndex++); header.AddChild("InProductionQty", new LocaleValue("在生产量"), _colIndex++);
header.AddChild("FSPECIFICATION", new LocaleValue("合计入库量"), _colIndex++); header.AddChild("TotalStockQty", new LocaleValue("合计入库量"), _colIndex++);
header.AddChild("OrderLotQty", new LocaleValue("系统计划生产批数"), _colIndex++); header.AddChild("OrderLotQty", new LocaleValue("系统计划生产批数"), _colIndex++);
header.AddChild("FirmLotQty", new LocaleValue("确认计划生产批数"), _colIndex++); header.AddChild("FirmLotQty", new LocaleValue("确认计划生产批数"), _colIndex++);
header.AddChild("FFirmQty", new LocaleValue("确认计划生产量"), _colIndex++); header.AddChild("FFirmQty", new LocaleValue("确认计划生产量"), _colIndex++);
@@ -189,7 +210,6 @@ EXEC PROC_ProductionSchedule '{tableName}','{startDate}','{endDate}', {base.Cont
public override ReportTitles GetReportTitles(IRptParams filter) public override ReportTitles GetReportTitles(IRptParams filter)
{ {
var result = base.GetReportTitles(filter); var result = base.GetReportTitles(filter);
var date = System.DateTime.Now;
DynamicObject dyFilter = filter.FilterParameter.CustomFilter; DynamicObject dyFilter = filter.FilterParameter.CustomFilter;
if (dyFilter != null) if (dyFilter != null)
{ {
@@ -197,9 +217,8 @@ EXEC PROC_ProductionSchedule '{tableName}','{startDate}','{endDate}', {base.Cont
{ {
result = new ReportTitles(); result = new ReportTitles();
} }
//var t = filter.FilterParameter.CustomOption["res"].Long2Int();
//result.AddTitle("F_JD_Date", Convert.ToString(dyFilter["F_JD_Date"])); //result.AddTitle("F_JD_Date", Convert.ToString(dyFilter["F_JD_Date"]));
result.AddTitle("FNameLabel", $"{date.AddMonths(-1).ToString("yyyyyMMM")}");
} }
return result; return result;
} }

View File

@@ -0,0 +1,35 @@
IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_INQUIRE_PLANPLMRPT')
DROP PROCEDURE dbo.PROC_INQUIRE_PLANPLMRPT;
GO
CREATE PROCEDURE PROC_INQUIRE_PLANPLMRPT
@STARTDATE date
,@ENDDATE date
,@LCID int
,@SeqFld varchar(200)
,@HasId int output
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
SELECT
@HasId = COUNT(A.FID)
FROM
T_PLAN_PLANPLMRPT A
WHERE
A.FDATE BETWEEN @STARTDATE AND @ENDDATE
END
if @hasId =1
BEGIN
SELECT
*
INTO #TMPMPS
FROM
T_PLAN_PLANPLMRPT A
WHERE
A.FDATE BETWEEN @STARTDATE AND @ENDDATE
END
END

View File

@@ -0,0 +1,63 @@
IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_ProductionSchedule')
DROP PROCEDURE dbo.PROC_ProductionSchedule;
GO
CREATE PROCEDURE PROC_ProductionSchedule
@TableName varchar(100)
,@STARTDATE date
,@ENDDATE date
,@LCID int
,@SeqFld varchar(200)
--,@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
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
END

View File

@@ -1,16 +1,15 @@
IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_ProductionSchedule') IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_INQUIRPLMTMPRTP')
DROP PROCEDURE dbo.PROC_ProductionSchedule; DROP PROCEDURE dbo.PROC_INQUIRPLMTMPRTP;
GO GO
CREATE PROCEDURE PROC_ProductionSchedule CREATE PROCEDURE PROC_INQUIRPLMTMPRTP
@TableName varchar(100) @STARTDATE date
,@STARTDATE date
,@ENDDATE date ,@ENDDATE date
,@LCID int ,@LCID int
,@SeqFld varchar(200) ,@SeqFld varchar(200)
AS AS
begin BEGIN
SELECT SELECT
A.FID A.FID
@@ -20,15 +19,6 @@ begin
,C.FNUMBER ,C.FNUMBER
,C_L.FNAME ,C_L.FNAME
,C_L.FSPECIFICATION ,C_L.FSPECIFICATION
--,(CASE
-- CS.FEXPUNIT
-- WHEN 'Y' THEN
-- CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) ) + '<27><>'
-- WHEN 'M' THEN
-- CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) /12 ) + '<27><>'
-- WHEN 'D' THEN
-- CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) /365) + '<27><>' ELSE ''
--END) AS '<EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>'
,(CASE ,(CASE
CS.FEXPUNIT CS.FEXPUNIT
WHEN 'Y' THEN WHEN 'Y' THEN
@@ -40,7 +30,7 @@ begin
END) AS 'ShelfLife' END) AS 'ShelfLife'
--,'' AS '<EFBFBD><EFBFBD>׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>' --,'' AS '<EFBFBD><EFBFBD>׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,CS.FSAFESTOCK --<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ,CS.FSAFESTOCK --<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
--,CS.FSTOREUNITID --<EFBFBD><EFBFBD><EFBFBD>λ ,CS.FSTOREUNITID --<EFBFBD><EFBFBD><EFBFBD>λ
--,CP.FLOTYIELD -- 'ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>' --,CP.FLOTYIELD -- 'ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
--,CP.FPACKUNITCONVERRATIO -- '<27><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>' --,CP.FPACKUNITCONVERRATIO -- '<27><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>'
--,CP.FPACKUNITCONVERRATIO -- '<27><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD>' --,CP.FPACKUNITCONVERRATIO -- '<27><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD>'
@@ -55,8 +45,8 @@ begin
,'' AS 'S03' ,'' AS 'S03'
,B.FFirmQty ,B.FFirmQty
,B.FOrderQty ,B.FOrderQty
,B.FMATERIALID into #TMPMPS
FROM FROM
( (
SELECT SELECT
A.FMATERIALID A.FMATERIALID
@@ -73,7 +63,7 @@ begin
,A.FMATERIALID ,A.FMATERIALID
,A_B.FSALEORDERENTRYID ,A_B.FSALEORDERENTRYID
) B ) B
--Ԥ<EFBFBD> --Ԥ<EFBFBD>
LEFT JOIN T_PLN_FORECASTENTRY AE ON B.FSALEORDERENTRYID = AE.FENTRYID LEFT JOIN T_PLN_FORECASTENTRY AE ON B.FSALEORDERENTRYID = AE.FENTRYID
LEFT JOIN T_PLN_FORECAST A ON A.FID = AE.FID LEFT JOIN T_PLN_FORECAST A ON A.FID = AE.FID
LEFT JOIN T_BD_MATERIAL C ON C.FMATERIALID = B.FMATERIALID LEFT JOIN T_BD_MATERIAL C ON C.FMATERIALID = B.FMATERIALID
@@ -86,55 +76,8 @@ begin
--<EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>λ --<EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>λ
alter table #TMPMPS add STOREUNITNAME varchar(10) 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 update #TMPMPS SET #TMPMPS.STOREUNITNAME = B_L.FNAME from T_BD_UNIT_L B_L where B_L.FUNITID = #TMPMPS.FSTOREUNITID
--alter table #TMPMPS add FPACKUNITNAME varchar(10) --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 --update #TMPMPS set #TMPMPS.FPACKUNITNAME = B_L.FNAME from T_BD_UNIT_L B_L where B_L.FUNITID = #TMPMPS.FPACKUNITID
END
declare @sql varchar(2000)
set @sql = '
select
FID
,FENTRYID
,FBILLNO
,FMATERIALID
,FNAME
,FSPECIFICATION
,ShelfLife
--,'''' --<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
,'''' AS --<2D><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><>
,CAST(FSAFESTOCK AS INT) AS SAFESTOCK
,FSEQ
,0 AS M01
,0 AS S01
,0 AS S02
,0 AS S03
--,(B.PlanQty / CP.FPACKUNITCONVERRATIO)AS ''ϵͳ<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>''
--,(B.VerifyQty / CP.FPACKUNITCONVERRATIO) AS ''ȷ<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 '
--select @sql
EXECUTE(@sql)
drop table #TMPMPS
end
go
--DECLARE @STARTDATE DATETIME ,@ENDDATE DATETIME
--SELECT
-- @STARTDATE = DATEADD(MONTH, DATEDIFF(MONTH, 0, '2023-12-15'), 0)
-- ,@ENDDATE = DATEADD(MS,-3, DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD(MONTH, 1, '2023-12-15')), 0))
--DECLARE @LCID INT
--SET @LCID = 2052
--EXEC PROC_ProductionSchedule @STARTDATE,@ENDDATE, @LCID;

View File

@@ -73,8 +73,6 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="ISSUE\证书\密码.txt" /> <Content Include="ISSUE\证书\密码.txt" />
<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>

View File

@@ -1,86 +0,0 @@
DECLARE @DATE DATE,@STARTDATE DATETIME ,@ENDDATE DATETIME
SET @DATE = '2023-12-15'
SELECT
@STARTDATE = DATEADD(MONTH, DATEDIFF(MONTH, 0, @DATE), 0)
,@ENDDATE = DATEADD(MS,-3, DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD(MONTH, 1, @DATE)), 0))
DECLARE @LCID INT
SET @LCID = 2052
SELECT
A.FBILLNO
,AE.FMATERIALID
,AE.FENTRYID
,C_L.FNAME AS '<EFBFBD><EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,C_L.FSPECIFICATION AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD>'
--,(CASE
-- CS.FEXPUNIT
-- WHEN 'Y' THEN
-- CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) ) + '<27><>'
-- WHEN 'M' THEN
-- CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) /12 ) + '<27><>'
-- WHEN 'D' THEN
-- CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) /365) + '<27><>' ELSE ''
--END) AS '<EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>'
,(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 '<EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>'
--,'' AS '<EFBFBD><EFBFBD>׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
--,CP.FLOTYIELD AS 'ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
--,CP.FPACKUNITCONVERRATIO AS '<EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
--,CP.FPACKUNITCONVERRATIO AS '<EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD>'
--,CP.FPACKUNITID AS '<EFBFBD><EFBFBD>λ'
,CS.FSTOREUNITID AS '<EFBFBD><EFBFBD>λ'
,'' AS '<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,CAST(CS.FSAFESTOCK AS INT) AS '<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,AE.FSEQ
--,AE.M01 AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
--,AE.S01 AS 'ǰ<EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
--,AE.S02 AS 'ǰ<EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
--,AE.S03 AS 'ǰһ<EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,'' AS 'ǰ<EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,'' AS 'ǰ<EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,'' AS 'ǰһ<EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
--,DE.FSRCBILLNO
--,EE_A.FSTOCKINQUAAUXQTY AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
--,'' AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
--,(EE_A.FSTOCKINQUAAUXQTY + 0) AS '<EFBFBD>ϼƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
--,'' AS '<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
--,(B.PlanQty / CP.FPACKUNITCONVERRATIO)AS 'ϵͳ<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
--,(B.VerifyQty / CP.FPACKUNITCONVERRATIO) AS 'ȷ<EFBFBD>ϼƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,B.VerifyQty AS 'ȷ<EFBFBD>ϼƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
--,DE.FREMARK AS '<EFBFBD><EFBFBD>ע'
FROM
T_PLN_FORECAST A --Ԥ<EFBFBD>
LEFT JOIN T_PLN_FORECASTENTRY AE ON A.FID = AE.FID
LEFT JOIN (
SELECT
A.FMATERIALID
,A_B.FSALEORDERENTRYID
,SUM(case when A.FRELEASESTATUS = 1 then A.FDemandQty else 0 end) as 'PlanQty'
,SUM(case when A.FRELEASESTATUS = 2 then A.FDemandQty else 0 end) as 'VerifyQty'
FROM
T_PLN_PLANORDER A
LEFT JOIN T_PLN_PLANORDER_B A_B ON A.FID = A_B.FID
WHERE
A.FRELEASETYPE = 1 AND (A.FRELEASESTATUS = 1 OR A.FRELEASESTATUS = 2 )
group By
A.FRELEASETYPE
,A.FMATERIALID
,A_B.FSALEORDERENTRYID
) B ON B.FSALEORDERENTRYID = AE.FENTRYID
LEFT JOIN T_BD_MATERIAL C ON C.FMATERIALID = AE.FMATERIALID
LEFT JOIN T_BD_MATERIAL_L C_L ON C_L.FMATERIALID = AE.FMATERIALID
LEFT JOIN T_BD_MATERIALSTOCK CS ON CS.FMATERIALID = AE.FMATERIALID
LEFT JOIN T_BD_MATERIALPRODUCE CP ON CP.FMATERIALID = C.FMATERIALID
--LEFT JOIN T_PRD_MOENTRY_LK DE_LK ON DE_LK.FSID = B.FID
--LEFT JOIN T_PRD_MOENTRY DE ON DE.FENTRYID = DE_LK.FENTRYID
--LEFT JOIN T_PRD_MOENTRY EE ON EE.FMATERIALID = B.FMATERIALID --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
--LEFT JOIN T_PRD_MOENTRY_A EE_A ON EE_A.FENTRYID = EE.FENTRYID AND EE.FID =EE_A.FID --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WHERE
A.FDATE BETWEEN @STARTDATE AND @ENDDATE

View File

@@ -1,58 +0,0 @@
DECLARE @date date,@startDate datetime ,@endDate datetime
set @date = '2023-07-15'
select
@startDate = dateadd(month, datediff(month, 0, @date), 0)
,@endDate = dateadd(ms,-3, dateadd(month, datediff(month, 0, dateadd(month, 1, @date)), 0))
select
@startDate,@endDate
declare @LCID int
set @LCID = 2052
SELECT
A.FMATERIALID
,a.FBILLNO
,ee.FSRCBILLNO
--,B_L.FNAME AS '产品名称'
,(CASE
FEXPUNIT
WHEN 'Y' THEN
CONVERT ( VARCHAR, BA.FEXPPERIOD ) + ''
WHEN 'M' THEN
CONVERT ( VARCHAR, ba.FEXPPERIOD) + ''
WHEN 'D' THEN
CONVERT ( VARCHAR, ba.FEXPPERIOD ) + '' ELSE ''
END) as '有效期'
,'' as '标准批量'
,'' as '每批产量(件)'
,'' as '包装规格'
,'' as '包装规格'
,a.FUNITID
,'' as '单位'
--,C_L.FNAME AS '单位'
,'' as '安全库存量(件)'
,BA.FSAFESTOCK AS '安全库存数量'
--,DE.M01 AS '本月预计需求量'
--,DE.S01 AS '前三月发货量'
--,DE.S02 AS '前二月发货量'
--,DE.S03 AS '前一月发货量'
,EE_A.FSTOCKINQUAAUXQTY as '已入库量'
,'' as '在生产量'
,(EE_A.FSTOCKINQUAAUXQTY + 0) as '合计库存量'
,'' as '计划生产批数'
,DE.FQTY AS '计划生产量'
,DE.FREMARK AS '备注'
FROM
T_PLN_PLANORDER A --
LEFT JOIN T_BD_MATERIAL B ON A.FMATERIALID = B.FMATERIALID --
-- LEFT JOIN T_BD_MATERIAL_L B_L ON B_L.FMATERIALID = B.FMATERIALID
LEFT JOIN T_BD_MATERIALSTOCK BA ON BA.FMATERIALID = B.FMATERIALID
-- LEFT JOIN T_BD_MATERIALBASE BB ON BB.FMATERIALID = B.FMATERIALID
--LEFT JOIN T_BD_UNIT_L C_L ON C_L.FUNITID = a.FUNITID
LEFT JOIN T_PLN_FORECASTENTRY DE ON DE.FMATERIALID = B.FMATERIALID --
left join T_PLN_FORECAST d on de.FID = d.FID
LEFT JOIN T_PRD_MOENTRY EE ON EE.FMATERIALID = B.FMATERIALID --
LEFT JOIN T_PRD_MOENTRY_A EE_A ON EE_A.FENTRYID = EE.FENTRYID AND EE.FID =EE_A.FID --
WHERE
A.FRELEASETYPE = 1
--AND B_L.FLOCALEID = @LCID
--AND C_L.FLOCALEID = @LCID

View File

@@ -14,6 +14,10 @@ namespace UnitTestProject1
object ttt = " "; object ttt = " ";
var dd = ttt.ToDecimalR(); var dd = ttt.ToDecimalR();
var a = 0.00M;
var a2 = 0L;
var f = (a == a2);
return; return;
} }
} }

View File

@@ -2,6 +2,7 @@
using Kingdee.BOS.App.Data; using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.Bill.PlugIn.Args; using Kingdee.BOS.Core.Bill.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Orm.DataEntity;
@@ -25,7 +26,7 @@ namespace UseGetFmaterialData
public override void BeforeSave(BeforeSaveEventArgs e) public override void BeforeSave(BeforeSaveEventArgs e)
{ {
base.BeforeSave(e); base.BeforeSave(e);
this.View.ShowMessage("插件触发了保存前事件BeforeSave");
if (OrgIdCheck()) if (OrgIdCheck())
{ {
Entity details = null; Entity details = null;
@@ -37,7 +38,7 @@ namespace UseGetFmaterialData
//直接调拨单 明细表 //直接调拨单 明细表
if (this.View.UserParameterKey.Equals("STK_TransferDirect")) if (this.View.UserParameterKey.Equals("STK_TransferDirect"))
details = this.View.BusinessInfo.GetEntity("FBillEntry"); details = this.View.BusinessInfo.GetEntity("FBillEntry");
IOperationResult opResult = new OperationResult();
if (details != null) if (details != null)
{ {
var entrys = this.View.Model.GetEntityDataObject(details); var entrys = this.View.Model.GetEntityDataObject(details);
@@ -46,14 +47,35 @@ namespace UseGetFmaterialData
{ {
var tempValue2 = this.View.Model.GetValue("FDATE"); var tempValue2 = this.View.Model.GetValue("FDATE");
var dateValue = tempValue2.IsNullOrEmptyOrWhiteSpace() ? string.Empty : tempValue2.ToString(); var dateValue = tempValue2.IsNullOrEmptyOrWhiteSpace() ? string.Empty : tempValue2.ToString();
foreach (var entry in entrys) foreach (var entry in entrys)
{ {
var rowIndex = this.View.Model.GetRowIndex(details, entry); var rowIndex = this.View.Model.GetRowIndex(details, entry);
var tempValue = entry["MaterialId_Id"]; var tempValue = entry["MaterialId_Id"];
var rowValue = tempValue.IsNullOrEmptyOrWhiteSpace() ? string.Empty : tempValue.ToString(); var rowValue = tempValue.IsNullOrEmptyOrWhiteSpace() ? string.Empty : tempValue.ToString();
UpdReferPriceAndExplain(dateValue, rowValue, rowIndex); string errMsg = string.Empty;
UpdReferPriceAndExplain(dateValue, rowValue, rowIndex, ref errMsg);
if (!errMsg.IsNullOrEmpty())
{
var number = (entry["MaterialId"] as DynamicObject)["Number"];
opResult.OperateResult.Add(new OperateResult
{
Name = number.ToString(),
Message = errMsg,
SuccessStatus = false
});
}
} }
TotalReferAmount(entrys, details); TotalReferAmount(entrys, details);
if (opResult.OperateResult.Any())
{
e.Cancel = true;
this.View.ShowOperateResult(opResult.OperateResult);
}
} }
} }
} }
@@ -95,6 +117,7 @@ namespace UseGetFmaterialData
try try
{ {
this.View.Model.SetValue("F_GAT_Decimal1", total); this.View.Model.SetValue("F_GAT_Decimal1", total);
//参考金额汇总
this.View.Model.SetValue("FTotalReferAmount", total); this.View.Model.SetValue("FTotalReferAmount", total);
} }
catch catch
@@ -102,6 +125,7 @@ namespace UseGetFmaterialData
try try
{ {
this.View.Model.SetValue("FTotalReferAmount", total); this.View.Model.SetValue("FTotalReferAmount", total);
//参考金额汇总
this.View.Model.SetValue("F_GAT_Decimal1", total); this.View.Model.SetValue("F_GAT_Decimal1", total);
} }
catch { } catch { }
@@ -131,12 +155,13 @@ namespace UseGetFmaterialData
/// <param name="date">表头日期</param> /// <param name="date">表头日期</param>
/// <param name="materialId">子表物料id物料编码</param> /// <param name="materialId">子表物料id物料编码</param>
/// <param name="row"></param> /// <param name="row"></param>
private void UpdReferPriceAndExplain(string date, string materialId, int row) private void UpdReferPriceAndExplain(string date, string materialId, int row, ref string errMsg)
{ {
var isHasEmpty = false;
var returnFlag = false; var returnFlag = false;
if (date.IsNullOrEmptyOrWhiteSpace()) if (date.IsNullOrEmptyOrWhiteSpace())
returnFlag = true; isHasEmpty = returnFlag = true;
if (!returnFlag && (materialId.IsNullOrEmptyOrWhiteSpace() || materialId.Equals("0"))) if (!returnFlag && (materialId.IsNullOrEmptyOrWhiteSpace() || materialId.Equals("0")))
returnFlag = true; returnFlag = true;
@@ -175,6 +200,52 @@ namespace UseGetFmaterialData
//参考方向 //参考方向
this.View.Model.SetValue("FExplain", dataSet[0]["FNOTE"], row); this.View.Model.SetValue("FExplain", dataSet[0]["FNOTE"], row);
if (price == 0 || amount == 0)
{
errMsg = "物料没有找到参考单价与参考金额或数量为0";
return;
}
var cSql = $@"
SELECT top 1
A.FBILLNO,C.FTAXPRICE
FROM
T_STK_INSTOCK A
INNER JOIN T_STK_INSTOCKENTRY B ON A.FID =B.FID
INNER JOIN T_STK_INSTOCKENTRY_F C ON C.FENTRYID = B.FENTRYID
WHERE
A.FDOCUMENTSTATUS = 'C'
AND A.FCANCELSTATUS = 'A'
AND A.FSTOCKORGID = 101542
AND B.FMATERIALID = {materialId}
AND FDATE<= '{date}'
AND FAPPROVEDATE <= '{date}'
ORDER BY
FDATE DESC,FAPPROVEDATE DESC ";
var inDataSet = DBUtils.ExecuteDynamicObject(this.Context, $"/*dialect*/{cSql}");
if (inDataSet.Any())
{
var taxPrice = inDataSet[0]["FTAXPRICE"].ToDecimalR();
if (taxPrice == 0)
{
errMsg = "物料没有找到采购入库单单价";
return;
}
var xAbs = Math.Abs((price - taxPrice) / taxPrice);
if (xAbs > 0.05M)
{
errMsg = "物料采购入库单价与参考单价相差值不能大于5%";
return;
}
}
else
{
errMsg = "物料没有找到采购入库单";
return;
}
} }
else else
{ {
@@ -186,8 +257,10 @@ namespace UseGetFmaterialData
//this.View.Model.SetValue("FReferAmountM", 0, row); //this.View.Model.SetValue("FReferAmountM", 0, row);
//参考方向 //参考方向
this.View.Model.SetValue("FExplain", "没有找到价格", row); this.View.Model.SetValue("FExplain", "没有找到价格", row);
} }
} }
} }
} }
} }

View File

@@ -7,6 +7,7 @@ using Kingdee.BOS.Core.Metadata.Util;
using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util; using Kingdee.BOS.Util;
using System; using System;
using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Linq; using System.Linq;
using static System.Net.WebRequestMethods; using static System.Net.WebRequestMethods;