diff --git a/CY.CB_PROACNTGROUP/BasicDataFilterPlugIn.cs b/CY.CB_PROACNTGROUP/BasicDataFilterPlugIn.cs
new file mode 100644
index 0000000..d45ce10
--- /dev/null
+++ b/CY.CB_PROACNTGROUP/BasicDataFilterPlugIn.cs
@@ -0,0 +1,45 @@
+using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
+using Kingdee.BOS.Core.DynamicForm.PlugIn;
+using Kingdee.BOS.Util;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using Kingdee.BOS.Core.List;
+
+namespace CY.CB_PROACNTGROUP
+{
+ ///
+ /// 【表单插件】单据上查询辅助资料时设置过滤条件
+ ///
+ [Description("【表单插件】单据上查询基础资料时设置过滤条件"), HotUpdate]
+
+ public class BasicDataFilterPlugIn : AbstractDynamicFormPlugIn
+ {
+ public override void BeforeF7Select(BeforeF7SelectEventArgs e)
+ {
+ base.BeforeF7Select(e);
+
+ // 给某个辅助资料字段的查询附加过滤条件
+
+ if (e.FieldKey.EqualsIgnoreCase("FPRODUCTID"))
+ {
+ var id = this.Model.DataObject["Id"].Long2Int();
+
+ var details = this.View.BusinessInfo.GetEntity("FEntity");
+ var entry = this.View.Model.GetEntityDataObject(details);
+ var idList = entry.Select(x => x["PRODUCTID_Id"].Long2Int()).Where(w => w != 0);
+ // 只显示编码0开头的辅助资料
+
+ if (idList.Any())
+ e.ListFilterParameter.Filter = e.ListFilterParameter.Filter.JoinFilterString($" FMATERIALID NOT IN ({string.Join(",", idList)})");
+
+ e.ListFilterParameter.Filter = e.ListFilterParameter.Filter.JoinFilterString($" FMATERIALID NOT IN (SELECT FPRODUCTID FROM T_CB_PROACNTENTRY WHERE FPRODUCTGROUPID != {id})");
+
+ return;
+ }
+ }
+
+ }
+}
diff --git a/CY.CB_PROACNTGROUP/CY.CB_PROACNTGROUP.csproj b/CY.CB_PROACNTGROUP/CY.CB_PROACNTGROUP.csproj
new file mode 100644
index 0000000..607756f
--- /dev/null
+++ b/CY.CB_PROACNTGROUP/CY.CB_PROACNTGROUP.csproj
@@ -0,0 +1,68 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {5A26AFF4-AE8C-43A3-8C60-BBA153DAE608}
+ Library
+ Properties
+ CY.CB_PROACNTGROUP
+ CY.CB_PROACNTGROUP
+ 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.App.dll
+
+
+ ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.App.Core.dll
+
+
+ ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Contracts.dll
+
+
+ ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Core.dll
+
+
+ ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.DataEntity.dll
+
+
+ ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Model.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CY.CB_PROACNTGROUP/Properties/AssemblyInfo.cs b/CY.CB_PROACNTGROUP/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..df489c2
--- /dev/null
+++ b/CY.CB_PROACNTGROUP/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("CY.CB_PROACNTGROUP")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("CY.CB_PROACNTGROUP")]
+[assembly: AssemblyCopyright("Copyright © 2023")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("5a26aff4-ae8c-43a3-8c60-bba153dae608")]
+
+// 程序集的版本信息由下列四个值组成:
+//
+// 主版本
+// 次版本
+// 生成号
+// 修订号
+//
+//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
+//通过使用 "*",如下所示:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/CY.SAL_OUTSTOCK/AutoPushLostOutStock2Pay.cs b/CY.SAL_OUTSTOCK/AutoPushLostOutStock2Pay.cs
index 3d03bf6..b650c13 100644
--- a/CY.SAL_OUTSTOCK/AutoPushLostOutStock2Pay.cs
+++ b/CY.SAL_OUTSTOCK/AutoPushLostOutStock2Pay.cs
@@ -21,6 +21,8 @@ using Kingdee.BOS.App.Core.ScheduleService;
using Kingdee.BOS.App;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Log;
+using System.Data.SqlClient;
+using Kingdee.BOS.Orm.Exceptions;
namespace CY.SAL_OUTSTOCK
{
@@ -72,23 +74,60 @@ namespace CY.SAL_OUTSTOCK
IOperationResult saveResult = ServiceHelper.GetService().Save(ctx, destFormMetadata.BusinessInfo, destObjs, OperateOption.Create());
+ string msg = string.Empty;
+
if (saveResult.ValidationErrors != null && saveResult.ValidationErrors.Count > 0)
{
var errorInfo = string.Join(";", saveResult.ValidationErrors.Select(x => x.Message));
throw new KDBusinessException("", "未知原因导致自动保存失败原因:" + errorInfo);
}
- else
+
+ object[] pkArray = (from p in destObjs select p[0]).ToArray();
+ //设置提交参数
+ IOperationResult submitResult = ServiceHelper.GetService().Submit(ctx, destFormMetadata.BusinessInfo, pkArray, "Submit", OperateOption.Create());
+
+ // 判断提交结果,如果失败,则内部会抛出错误,回滚代码
+ if (submitResult.IsSuccess == false)
{
- succeedNum++;
- Logger.Info(schedule.Name, $"销售出库单:{list.Key}下推应付单:{saveResult.OperateResult[0].Number}成功!");
+ throw new KDBusinessException("", "未知原因导致自动提交失败!");
}
+
+ //设置审核参数
+ IOperationResult auditResult = ServiceHelper.GetService().Audit(ctx, destFormMetadata.BusinessInfo, pkArray, OperateOption.Create());
+ // 判断提交结果,如果失败,则内部会抛出错误,回滚代码
+ if (auditResult.IsSuccess == false)
+ {
+ throw new KDBusinessException("", "未知原因导致自动审核失败!");
+ }
+
+ succeedNum++;
+ Logger.Info(schedule.Name, $"销售出库单:{list.Key},下推应付单:{saveResult.OperateResult[0].Number}成功!");
+ }
+ catch(OrmException ex)
+ {
+ failNum++;
+ Logger.Error($"服务器插件:{schedule.Name}错误(Orm)", $"销售出库单:{list.Key}", ex);
}
catch (KDBusinessException ex)
+ {
+ failNum++;
+ Logger.Error($"服务器插件:{schedule.Name}错误(KDB)", $"销售出库单:{list.Key}", ex);
+ }
+ catch (SqlException ex)
+ {
+ failNum++;
+ Logger.Error($"服务器插件:{schedule.Name}错误(Sql)", $"销售出库单:{list.Key}", ex);
+ }
+ catch (Exception ex)
{
failNum++;
Logger.Error($"服务器插件:{schedule.Name}", $"销售出库单:{list.Key}", ex);
}
+ finally
+ {
+
+ }
}
}
@@ -109,7 +148,7 @@ namespace CY.SAL_OUTSTOCK
private DynamicObjectCollection GetDBData(Context ctx)
{
var unSql = $@"
-select * from V_NOT_RECEIVABLE_OUTSTOCK
+SELECT * from V_NOT_RECEIVABLE_OUTSTOCK
";
var dbList = DBUtils.ExecuteDynamicObject(ctx, $"/*dialect*/{unSql}");
diff --git a/CY.SAL_OUTSTOCK/CY.SAL_OUTSTOCK.csproj b/CY.SAL_OUTSTOCK/CY.SAL_OUTSTOCK.csproj
index 63ae828..48d5d34 100644
--- a/CY.SAL_OUTSTOCK/CY.SAL_OUTSTOCK.csproj
+++ b/CY.SAL_OUTSTOCK/CY.SAL_OUTSTOCK.csproj
@@ -72,6 +72,7 @@
+
\ No newline at end of file
diff --git a/CY.SAL_OUTSTOCK/SQLServer/SQLQuery4.sql b/CY.SAL_OUTSTOCK/SQLServer/SQLQuery4.sql
new file mode 100644
index 0000000..cd48bfa
--- /dev/null
+++ b/CY.SAL_OUTSTOCK/SQLServer/SQLQuery4.sql
@@ -0,0 +1,5 @@
+
+UPDATE T_BD_MATERIAL SET F_CYG_CHECKBOX = 0
+
+UPDATE A SET F_CYG_CHECKBOX = 1 FROM T_BD_MATERIAL A
+INNER JOIN T_CB_PROACNTENTRY B ON A.FMATERIALID = B.FPRODUCTID
\ No newline at end of file
diff --git a/CY.SAL_OUTSTOCK/SQLServer/无关联应收单.sql b/CY.SAL_OUTSTOCK/SQLServer/无关联应收单.sql
index 023291c..52591e8 100644
--- a/CY.SAL_OUTSTOCK/SQLServer/无关联应收单.sql
+++ b/CY.SAL_OUTSTOCK/SQLServer/无关联应收单.sql
@@ -23,5 +23,5 @@ FROM
LEFT JOIN T_AR_RECEIVABLEENTRY_LK BE_LK ON BE_LK.FSBILLID = AE.FID AND BE_LK.FSID = AE.FENTRYID
LEFT JOIN T_AR_RECEIVABLEENTRY BE ON BE.FENTRYID = BE_LK.FENTRYID
WHERE
- BE_LK.FSTABLENAME = 'T_SAL_OUTSTOCKENTRY') B ON A.FID = B.FID
+ BE_LK.FSTABLENAME = 'T_SAL_OUTSTOCKENTRY' and FARNOTJOINQTY > 0) B ON A.FID = B.FID
WHERE B.FID IS NULL and a.FDOCUMENTSTATUS ='C'
\ No newline at end of file
diff --git a/CY.SAL_OUTSTOCK/SQLServer/无关联应收单2-未关联应收数量.sql b/CY.SAL_OUTSTOCK/SQLServer/无关联应收单2-未关联应收数量.sql
new file mode 100644
index 0000000..c319ff9
--- /dev/null
+++ b/CY.SAL_OUTSTOCK/SQLServer/无关联应收单2-未关联应收数量.sql
@@ -0,0 +1,18 @@
+IF EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME='V_NOT_RECEIVABLE_OUTSTOCK') --Ϊͼ
+ DROP VIEW V_NOT_RECEIVABLE_OUTSTOCK --ͼ
+GO
+CREATE VIEW V_NOT_RECEIVABLE_OUTSTOCK
+AS
+SELECT
+ A.FID
+ ,A.FBILLNO
+ ,AE.FENTRYID
+ ,AE_R.FARNOTJOINQTY
+ ,A.FDOCUMENTSTATUS
+FROM
+ T_SAL_OUTSTOCK A
+ LEFT JOIN T_SAL_OUTSTOCKENTRY AE ON A.FID = AE.FID
+ LEFT JOIN T_SAL_OUTSTOCKENTRY_R AE_R ON AE.FENTRYID = AE_R.FENTRYID
+WHERE
+AE_R.FARNOTJOINQTY > 0 AND
+A.FDOCUMENTSTATUS ='C'
\ No newline at end of file
diff --git a/CY.SAL_OUTSTOCK/TestAutoPushPlugIn.cs b/CY.SAL_OUTSTOCK/TestAutoPushPlugIn.cs
index e7860d4..b326132 100644
--- a/CY.SAL_OUTSTOCK/TestAutoPushPlugIn.cs
+++ b/CY.SAL_OUTSTOCK/TestAutoPushPlugIn.cs
@@ -1,5 +1,4 @@
-using Kingdee.BOS.App.Core.ScheduleService;
-using Kingdee.BOS.App.Data;
+using Kingdee.BOS.App.Data;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core.DynamicForm.Operation;
using Kingdee.BOS.Core.List;
@@ -21,6 +20,9 @@ using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.App;
using Kingdee.BOS.Core.DynamicForm;
+using Kingdee.BOS.Log;
+using Kingdee.BOS.Orm.Exceptions;
+using System.Data.SqlClient;
namespace CY.SAL_OUTSTOCK
{
@@ -35,83 +37,127 @@ namespace CY.SAL_OUTSTOCK
if (e.BarItemKey.Equals("tbTestAutoP"))
{
- Run(this.Context);
+ Run(this.Context, new Schedule
+ {
+ Name =new LocaleValue("tbTestAutoP销售出库单自定下推Test")
+ });
}
}
- public void Run(Context ctx)
+ public void Run(Context ctx, Schedule schedule)
{
-
+ Logger.Info(schedule.Name, $"销售出库单自动下推应付单start...");
+ var succeedNum = 0;
+ var failNum = 0;
try
{
- IConvertService service = Kingdee.BOS.App.ServiceHelper.GetService();
+ IConvertService service = ServiceHelper.GetService();
+ //源单据标识
string sourceFormId = "SAL_OUTSTOCK";
-
+ //目标单据标识
string targetFormId = "AR_RECEIVABLE";
+ //目标单据类型id-标准应收单
string targetBillTypeId = "180ecd4afd5d44b5be78a6efe4a7e041";
- //var rules = service.GetConvertRules(ctx, sourceFormId, targetFormId);
-
+ //转换规则
string convertRuleId = "AR_OutStockToReceivableMap"; //销售出库单下推应付单
-
var ruleMeta = service.GetConvertRule(ctx, convertRuleId);
var rule = ruleMeta.Rule;
var dbList = GetDBData(ctx);
if (dbList != null && dbList.Any())
{
- var groupbyList = dbList.GroupBy(x => x["FBILLNO"]);
- StringBuilder stringBuilder = new StringBuilder();
+ var groupbyList = dbList.GroupBy(x => x["FBILLNO"].ToString());
+ Logger.Info(schedule.Name, $"找到{groupbyList.Count()}条数据");
+
foreach (var list in groupbyList)
{
- var pkid = dbList.Select(x => x["FID"]).ToArray();
List selectedRows = list.Select(x => new ListSelectedRow(x["FID"].ToString(), x["FENTRYID"].ToString(), 0, sourceFormId)).ToList();
+
PushArgs pushArgs = new PushArgs(rule, selectedRows.ToArray());//下推入口参数
pushArgs.TargetBillTypeId = targetBillTypeId;
+
OperateOption option = OperateOption.Create();//选项参数
try
{
+ //下推
ConvertOperationResult convertResult = service.Push(ctx, pushArgs, option);
+ //下推数据
DynamicObject[] destObjs = convertResult.TargetDataEntities.Select(r => r.DataEntity).ToArray();
- FormMetadata destFormMetadata = ServiceHelper.GetService().Load(this.Context, targetFormId) as FormMetadata;
+ FormMetadata destFormMetadata = ServiceHelper.GetService().Load(ctx, targetFormId) as FormMetadata;
- IOperationResult saveResult = ServiceHelper.GetService().Save(this.Context, destFormMetadata.BusinessInfo, destObjs, OperateOption.Create());
+ //保存
+ IOperationResult saveResult = ServiceHelper.GetService().Save(ctx, destFormMetadata.BusinessInfo, destObjs, OperateOption.Create());
- if ((saveResult.ValidationErrors != null && saveResult.ValidationErrors.Count > 0))
+ string msg = string.Empty;
+
+ if (saveResult.ValidationErrors != null && saveResult.ValidationErrors.Count > 0)
{
var errorInfo = string.Join(";", saveResult.ValidationErrors.Select(x => x.Message));
throw new KDBusinessException("", "未知原因导致自动保存失败原因:" + errorInfo);
}
+
+ object[] pkArray = (from p in destObjs select p[0]).ToArray();
+ //设置提交参数
+ IOperationResult submitResult = ServiceHelper.GetService().Submit(ctx, destFormMetadata.BusinessInfo, pkArray, "Submit", OperateOption.Create());
+
+ // 判断提交结果,如果失败,则内部会抛出错误,回滚代码
+ if (submitResult.IsSuccess == false)
+ {
+ throw new KDBusinessException("", "未知原因导致自动提交失败!");
+ }
+
+ //设置审核参数
+ IOperationResult auditResult = ServiceHelper.GetService().Audit(ctx, destFormMetadata.BusinessInfo, pkArray, OperateOption.Create());
+ // 判断提交结果,如果失败,则内部会抛出错误,回滚代码
+ if (auditResult.IsSuccess == false)
+ {
+ throw new KDBusinessException("", "未知原因导致自动审核失败!");
+ }
+
+ succeedNum++;
+ Logger.Info(schedule.Name, $"销售出库单:{list.Key},下推应付单:{saveResult.OperateResult[0].Number}成功!");
+ }
+ catch (OrmException ex)
+ {
+ failNum++;
+ Logger.Error($"服务器插件:{schedule.Name}错误(Orm)", $"销售出库单:{list.Key}", ex);
}
catch (KDBusinessException ex)
{
- stringBuilder.AppendLine($"单据:{list.Key}{ex.GetErrorInfo()}");
+ failNum++;
+ Logger.Error($"服务器插件:{schedule.Name}错误(KDB)", $"销售出库单:{list.Key}", ex);
+ }
+ catch (SqlException ex)
+ {
+ failNum++;
+ Logger.Error($"服务器插件:{schedule.Name}错误(Sql)", $"销售出库单:{list.Key}", ex);
+ }
+ catch (Exception ex)
+ {
+ failNum++;
+ Logger.Error($"服务器插件:{schedule.Name}", $"销售出库单:{list.Key}", ex);
}
}
-
- if (!stringBuilder.IsNullOrEmpty())
- throw new Exception(stringBuilder.ToString());
}
}
catch (Exception ex)
{
- //ScheduleMsgDal _msgDal = new ScheduleMsgDal();
- //ScheduleMsg msg = new ScheduleMsg();
- //msg.MsgDetail = ex.Message;
- //msg.HappenTime = DateTime.Now;
- //msg.MsgType = 5;// 1 成功 5异常,
- //msg.ScheduleTypeId = schedule.ScheduleTypeId;
- //_msgDal.InsertScheduleMsg(ctx, msg);
-
+ Logger.Error($"服务器插件:{schedule.Name}", ex.Message, ex);
+ }
+ finally
+ {
+ Logger.Info(schedule.Name, $"成功{succeedNum}条,失败{failNum}条");
+ Logger.Info(schedule.Name, $"销售出库单自动下推应付单end...");
}
-
}
+
private DynamicObjectCollection GetDBData(Context ctx)
{
var unSql = $@"
diff --git a/DataReport/Class1.cs b/DataReport/Class1.cs
new file mode 100644
index 0000000..aa554f5
--- /dev/null
+++ b/DataReport/Class1.cs
@@ -0,0 +1,15 @@
+using Microsoft.Analytics.Interfaces;
+using Microsoft.Analytics.Interfaces.Streaming;
+using Microsoft.Analytics.Types.Sql;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+
+namespace DataReport
+{
+ public class Class1
+ {
+ }
+}
\ No newline at end of file
diff --git a/DataReport/DataReport.csproj b/DataReport/DataReport.csproj
new file mode 100644
index 0000000..5d88068
--- /dev/null
+++ b/DataReport/DataReport.csproj
@@ -0,0 +1,57 @@
+
+
+
+
+ Debug
+ AnyCPU
+ 2.0
+ {416D63FD-0477-49AA-A954-A7C5B95A9B51};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ {C1B12AAC-35ED-4B3B-83DF-5D7781F11C17}
+ Library
+ Properties
+ DataReport
+ DataReport
+ v4.8
+ 512
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/DataReport/Properties/AssemblyInfo.cs b/DataReport/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..4ee8931
--- /dev/null
+++ b/DataReport/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DataReport")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("DataReport")]
+[assembly: AssemblyCopyright("Copyright © 2023")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("c1b12aac-35ed-4b3b-83df-5d7781f11c17")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Extensions.zip b/Extensions.zip
deleted file mode 100644
index 68c3939..0000000
Binary files a/Extensions.zip and /dev/null differ
diff --git a/GateDge2023.sln b/GateDge2023.sln
index 48ba309..e79f879 100644
--- a/GateDge2023.sln
+++ b/GateDge2023.sln
@@ -7,36 +7,47 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProductionMaterialRequisiti
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UseGetFmaterialData", "UseGetFmaterialData\UseGetFmaterialData.csproj", "{4D6BDA2D-FED0-4514-B4CD-FF32C5389247}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "珠海市供水有限公司", "珠海市供水有限公司", "{F03B5F75-6DCD-4FF8-989F-403C5EA0AA5B}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "02.珠海市供水有限公司", "02.珠海市供水有限公司", "{F03B5F75-6DCD-4FF8-989F-403C5EA0AA5B}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "未分类", "未分类", "{2217EA0E-E53F-4ECC-A49D-F38BC743F47A}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "00.未分类", "00.未分类", "{2217EA0E-E53F-4ECC-A49D-F38BC743F47A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SAL_OUTSTOCK", "SAL_OUTSTOCK\SAL_OUTSTOCK.csproj", "{12B329E1-C4F2-4CA7-BF3E-313F22AD527A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnPayableInStock", "UnPayableInStock\UnPayableInStock.csproj", "{2E8D2379-C8CB-47E1-BF89-A11111F18A08}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "扩展", "扩展", "{4ACB1DA8-8A4D-451A-A5FB-3CBD7A261263}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "01.扩展", "01.扩展", "{4ACB1DA8-8A4D-451A-A5FB-3CBD7A261263}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExtensionMethods", "Extensions\ExtensionMethods.csproj", "{50532462-8F7F-455C-B4B3-732ED764E2FA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTestProject1", "UnitTestProject1\UnitTestProject1.csproj", "{6EE96AB5-8FD3-4A48-912A-CA2AF5B82300}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "天大药业(珠海)有限公司", "天大药业(珠海)有限公司", "{56C57ADC-8E92-4340-AC25-B7647758D4EB}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "04.天大药业(珠海)有限公司", "04.天大药业(珠海)有限公司", "{56C57ADC-8E92-4340-AC25-B7647758D4EB}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "月度生产计划", "月度生产计划", "{A362AFBC-FC73-46A6-9185-15C17E694538}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonthlyProductionSchedule", "MonthlyProductionSchedule\MonthlyProductionSchedule.csproj", "{86DA044C-9D3B-43BD-8BDB-24B65E152604}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "旭东", "旭东", "{0C4E3DC3-F1FA-4BD7-8D81-BF5EFD452A51}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "06.泰诺麦博", "06.泰诺麦博", "{0C4E3DC3-F1FA-4BD7-8D81-BF5EFD452A51}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "汇威", "汇威", "{42311C80-7B4C-4353-BCA9-4ABD024290C8}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "03.汇威", "03.汇威", "{42311C80-7B4C-4353-BCA9-4ABD024290C8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HW.App.Sal.Report.PlugInEx", "Kingdee.K3.SCM.Sal.Report.PlugInEx\HW.App.Sal.Report.PlugInEx.csproj", "{01F02D15-2726-4077-80FC-9E38EF29BABC}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "长园", "长园", "{270F576A-EFFF-4728-8E5C-ABDF5C3F3C8B}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "05.长园", "05.长园", "{270F576A-EFFF-4728-8E5C-ABDF5C3F3C8B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CY.SAL_OUTSTOCK", "CY.SAL_OUTSTOCK\CY.SAL_OUTSTOCK.csproj", "{6A52A594-F6A9-4754-BF53-22A126B54081}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "生产投料单", "生产投料单", "{88CCFE9E-3837-4EA9-80EB-A064110523F8}"
+ ProjectSection(SolutionItems) = preProject
+ 生产投料单-1.sql = 生产投料单-1.sql
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProductionMaterialsReport", "ProductionMaterialsReport\ProductionMaterialsReport.csproj", "{49AF92F2-2DCF-42F4-AB29-12298575D803}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CY.CB_PROACNTGROUP", "CY.CB_PROACNTGROUP\CY.CB_PROACNTGROUP.csproj", "{5A26AFF4-AE8C-43A3-8C60-BBA153DAE608}"
+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
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -79,6 +90,18 @@ Global
{6A52A594-F6A9-4754-BF53-22A126B54081}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6A52A594-F6A9-4754-BF53-22A126B54081}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6A52A594-F6A9-4754-BF53-22A126B54081}.Release|Any CPU.Build.0 = Release|Any CPU
+ {49AF92F2-2DCF-42F4-AB29-12298575D803}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {49AF92F2-2DCF-42F4-AB29-12298575D803}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {49AF92F2-2DCF-42F4-AB29-12298575D803}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {49AF92F2-2DCF-42F4-AB29-12298575D803}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5A26AFF4-AE8C-43A3-8C60-BBA153DAE608}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5A26AFF4-AE8C-43A3-8C60-BBA153DAE608}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5A26AFF4-AE8C-43A3-8C60-BBA153DAE608}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5A26AFF4-AE8C-43A3-8C60-BBA153DAE608}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9E2DDD7F-02EE-4BDF-A696-4CC6D310FEAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {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
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -94,6 +117,10 @@ Global
{86DA044C-9D3B-43BD-8BDB-24B65E152604} = {A362AFBC-FC73-46A6-9185-15C17E694538}
{01F02D15-2726-4077-80FC-9E38EF29BABC} = {42311C80-7B4C-4353-BCA9-4ABD024290C8}
{6A52A594-F6A9-4754-BF53-22A126B54081} = {270F576A-EFFF-4728-8E5C-ABDF5C3F3C8B}
+ {88CCFE9E-3837-4EA9-80EB-A064110523F8} = {42311C80-7B4C-4353-BCA9-4ABD024290C8}
+ {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}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {16F7DBDD-F487-41D6-A856-9E9B7B3F61C5}
diff --git a/HW.DataBase/HW.DataBase.sqlproj b/HW.DataBase/HW.DataBase.sqlproj
new file mode 100644
index 0000000..baaafaf
--- /dev/null
+++ b/HW.DataBase/HW.DataBase.sqlproj
@@ -0,0 +1,60 @@
+
+
+
+ Debug
+ AnyCPU
+ HW.DataBase
+ 2.0
+ 4.1
+ {ba245971-0afa-4434-a524-b53d0ff7f8d6}
+ Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider
+ Database
+
+
+ HW.DataBase
+ HW.DataBase
+ 1033, CI
+ BySchemaAndSchemaType
+ True
+ v4.7.2
+ CS
+ Properties
+ False
+ True
+ True
+
+
+ bin\Release\
+ $(MSBuildProjectName).sql
+ False
+ pdbonly
+ true
+ false
+ true
+ prompt
+ 4
+
+
+ bin\Debug\
+ $(MSBuildProjectName).sql
+ false
+ true
+ full
+ false
+ true
+ true
+ prompt
+ 4
+
+
+ 11.0
+
+ True
+ 11.0
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HW.DataBase/Script1.sql b/HW.DataBase/Script1.sql
new file mode 100644
index 0000000..5f28270
--- /dev/null
+++ b/HW.DataBase/Script1.sql
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Kingdee.K3.SCM.App.Sal.Report.dll b/Kingdee.K3.SCM.App.Sal.Report.dll
new file mode 100644
index 0000000..791cbdc
Binary files /dev/null and b/Kingdee.K3.SCM.App.Sal.Report.dll differ
diff --git a/Kingdee.K3.SCM.Sal.Report.PlugInEx/HW.App.Sal.Report.PlugInEx.csproj b/Kingdee.K3.SCM.Sal.Report.PlugInEx/HW.App.Sal.Report.PlugInEx.csproj
index 4ecc6c7..227a42e 100644
--- a/Kingdee.K3.SCM.Sal.Report.PlugInEx/HW.App.Sal.Report.PlugInEx.csproj
+++ b/Kingdee.K3.SCM.Sal.Report.PlugInEx/HW.App.Sal.Report.PlugInEx.csproj
@@ -53,7 +53,8 @@
..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.BD.Contracts.dll
-
+
+ False
..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.SCM.App.Sal.Report.dll
@@ -72,5 +73,8 @@
+
+
+
\ No newline at end of file
diff --git a/Kingdee.K3.SCM.Sal.Report.PlugInEx/SaleOutStockDetailRptEx.cs b/Kingdee.K3.SCM.Sal.Report.PlugInEx/SaleOutStockDetailRptEx.cs
index 872cb52..5900c7f 100644
--- a/Kingdee.K3.SCM.Sal.Report.PlugInEx/SaleOutStockDetailRptEx.cs
+++ b/Kingdee.K3.SCM.Sal.Report.PlugInEx/SaleOutStockDetailRptEx.cs
@@ -1,4 +1,6 @@
using Kingdee.BOS;
+using Kingdee.BOS.App.Data;
+using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Util;
using Kingdee.K3.SCM.App.Sal.Report;
@@ -8,6 +10,7 @@ using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Net;
+using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
@@ -16,47 +19,45 @@ namespace HW.App.Sal.Report.PlugInEx
[Description("销售出库明细报表数据源插件-扩展"), HotUpdate]
public class SaleOutStockDetailRptEx : SaleOutStockDetailRpt
{
- public override void Initialize()
- {
- base.Initialize();
- }
- public override ReportTitles GetReportTitles(IRptParams filter)
- {
- return base.GetReportTitles(filter);
- }
-
- public override List GetSummaryColumnInfo(IRptParams filter)
- {
- return base.GetSummaryColumnInfo(filter);
- }
+ private string[] TempTableName;
public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
{
- base.BuilderReportSqlAndTempTable(filter, tableName);
+ //创建临时表用于保存自己的数据
+ IDBService dbservice = Kingdee.BOS.App.ServiceHelper.GetService();
+ TempTableName = dbservice.CreateTemporaryTableName(this.Context, 1);
+ string strTable = TempTableName[0];
- }
+ //调用基类方式获取初步查询数据
+ base.BuilderReportSqlAndTempTable(filter, strTable);
- protected override DataTable GetReportData(string tablename, IRptParams filter)
- {
- var dataTable = base.GetReportData(tablename, filter);
+ string strSql = $@"/*dialect*/
+SELECT
+ A.*
+ ,BE.F_ORA_TEXT2 AS FSALESCATEGORY
+ INTO {tableName}
+FROM
+ {strTable} A
+ LEFT JOIN T_SAL_OUTSTOCK B ON A.FID = B.FID AND A.FBILLNUMBER = B.FBILLNO
+ LEFT JOIN T_SAL_OUTSTOCKENTRY BE ON A.FID = B.FID AND BE.FENTRYID = A.FENTRYID ";
-
- var sql = @"select ";
- return dataTable;
+ DBUtils.Execute(this.Context, strSql);
}
public override void CloseReport()
{
+ //删除临时表
+ if (TempTableName == null || TempTableName.Length == 0)
+ {
+ return;
+ }
+
+ IDBService dbservice = Kingdee.BOS.App.ServiceHelper.GetService();
+
+ dbservice.DeleteTemporaryTableName(this.Context, TempTableName);
+
+
base.CloseReport();
}
-
- public override ReportHeader GetReportHeaders(IRptParams filter)
- {
- var header = base.GetReportHeaders(filter);
-
- //header.AddChild("FSALESCATEGORY", new LocaleValue("销售类别"));
-
- return header;
- }
}
}
diff --git a/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs b/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs
index 1040d41..867c308 100644
--- a/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs
+++ b/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs
@@ -75,24 +75,7 @@ namespace MonthlyProductionSchedule
//
// 设置精度控制
var list = new List();
- //// 数量
- //list.Add(new DecimalControlField
- //{
- // ByDecimalControlFieldName = "FQty",
- // DecimalControlFieldName = "FUnitPrecision"
- //});
- //// 单价
- //list.Add(new DecimalControlField
- //{
- // ByDecimalControlFieldName = "FTAXPRICE",
- // DecimalControlFieldName = "FPRICEDIGITS"
- //});
- //// 金额
- //list.Add(new DecimalControlField
- //{
- // ByDecimalControlFieldName = "FALLAMOUNT",
- // DecimalControlFieldName = "FAMOUNTDIGITS"
- //});
+
this.ReportProperty.DecimalControlFieldList = list;
}
@@ -198,9 +181,9 @@ namespace MonthlyProductionSchedule
header.AddChild("SAFESTOCKCOUNT", new LocaleValue("安全库存量"), _colIndex++);
header.AddChild("SAFESTOCK", new LocaleValue("安全库存数量"), _colIndex++);
header.AddChild("M01", new LocaleValue("本月预计需求量"), _colIndex++);
- header.AddChild("S01", new LocaleValue(date.AddMonths(-1).ToString("yyyyMM") + "发货量"), _colIndex++);
- header.AddChild("S02", new LocaleValue(date.AddMonths(-2).ToString("yyyyMM") + "发货量"), _colIndex++);
- header.AddChild("S03", new LocaleValue(date.AddMonths(-3).ToString("yyyyMM") + "发货量"), _colIndex++);
+ header.AddChild("S01", new LocaleValue(date.AddMonths(-1).ToString("yyyy年MM月") + "发货量"), _colIndex++);
+ header.AddChild("S02", new LocaleValue(date.AddMonths(-2).ToString("yyyy年MM月") + "发货量"), _colIndex++);
+ header.AddChild("S03", new LocaleValue(date.AddMonths(-3).ToString("yyyy年MM月") + "发货量"), _colIndex++);
header.AddChild("InStockQty", new LocaleValue("已入库量"), _colIndex++);
header.AddChild("InProductionQty", new LocaleValue("在生产量"), _colIndex++);
header.AddChild("TotalStockQty", new LocaleValue("合计入库量"), _colIndex++);
diff --git a/MonthlyProductionSchedule/SQLServer/月度生产计划表-预测单.sql b/MonthlyProductionSchedule/SQLServer/月度生产计划表-预测单.sql
index 8af8bd5..fd8aa5f 100644
--- a/MonthlyProductionSchedule/SQLServer/月度生产计划表-预测单.sql
+++ b/MonthlyProductionSchedule/SQLServer/月度生产计划表-预测单.sql
@@ -31,7 +31,7 @@ BEGIN
FROM
T_PRD_MORPT A
LEFT JOIN T_PRD_MORPTENTRY AE ON AE.FID = A.FID
- WHERE A.FDOCUMENTSTATUS='C'
+ WHERE A.FDOCUMENTSTATUS='C' AND A.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e'
) B on B.FMOENTRYID = AE.FENTRYID
WHERE
AE.FSRCBILLTYPE ='PLN_PLANORDER'
@@ -91,34 +91,25 @@ BEGIN
CONVERT ( VARCHAR,CAST(CS.FEXPPERIOD AS INT) ) + ''
WHEN 'D' THEN
CONVERT ( VARCHAR, CAST((
- CASE CS.FEXPPERIOD%30 WHEN 0 THEN CS.FEXPPERIOD/30 ELSE CS.FEXPPERIOD / 365 * 12 END
+ CASE CS.FEXPPERIOD % 30 WHEN 0 THEN CS.FEXPPERIOD / 30 ELSE CS.FEXPPERIOD / 365 * 12 END
) AS INT)) + '' ELSE ''
END
END) AS 'SHELFLIFE'
- --,'' AS ''
+ ,C.FLotSize AS StandardLot
,CS.FSAFESTOCK AS SAFESTOCK --ȫ
,CS.FSTOREUNITID --浥λ
- ,(CASE CP.FPACKUNITCONVERRATIO
- WHEN 0
- THEN CS.FSAFESTOCK ELSE (CS.FSAFESTOCK/CP.FPACKUNITCONVERRATIO)
- END) AS SAFESTOCKCOUNT
+ ,(PackageValConver(CS.FSAFESTOCK, CP.FPACKUNITCONVERRATIO)) AS SAFESTOCKCOUNT
,CP.FLOTYIELD -- 'ÿ'
,CP.FPACKUNITCONVERRATIO -- 'װ'
,CP.FPACKUNITID -- 'λ'
- ,AE.M01
- ,AE.S01
- ,AE.S02
- ,AE.S03
- ,(CustomUnitNumConversion((D.FQTY + E.FBASEQTY - D.FFINISHQTY),CP.FPACKUNITCONVERRATIO)) AS InProductionQty --
- ,(CustomUnitNumConversion(E.FBASEQTY,CP.FPACKUNITCONVERRATIO)) AS InStockQty --
- --,(CASE CP.FPACKUNITCONVERRATIO
- -- WHEN 0
- -- THEN (D.FQTY + E.FBASEQTY) ELSE ((D.FQTY + E.FBASEQTY)/CP.FPACKUNITCONVERRATIO)
- --END) AS TotalStockQty --ϼ
- ,(CASE CP.FPACKUNITCONVERRATIO
- WHEN 0
- THEN B.FOrderQty ELSE (B.FOrderQty/CP.FPACKUNITCONVERRATIO)
- END) AS OrderLotQty --ƻ
+ ,PackageValConver(AE.M01,CP.FPACKUNITCONVERRATIO) as M01
+ ,PackageValConver(AE.S01,CP.FPACKUNITCONVERRATIO) as S01
+ ,PackageValConver(AE.S02,CP.FPACKUNITCONVERRATIO) as S02
+ ,PackageValConver(AE.S03,CP.FPACKUNITCONVERRATIO) as S03
+ ,PackageValConver((ISNULL(D.FQTY,0) - ISNULL(D.FFINISHQTY,0)),CP.FPACKUNITCONVERRATIO) AS InProductionQty --
+ ,PackageValConver(ISNULL(E.FQTY,0),CP.FPACKUNITCONVERRATIO) AS InStockQty --
+ ,PackageValConver((ISNULL(D.FQTY,0) + ISNULL(E.FQTY,0)),CP.FPACKUNITCONVERRATIO) AS TotalStockQty --ϼ
+ ,PackageValConver(B.FOrderQty,CP.FPACKUNITCONVERRATIO) AS OrderLotQty --ƻ
,B.FFirmQty
,B.FOrderQty
into #TMPMPS
@@ -136,9 +127,9 @@ BEGIN
,A.FSTOCKORGID
,SUM(A1.FQTY) AS FQTY
FROM T_STK_INVENTORY A
- left join T_STK_INVINITDETAIL A1 on A.FMATERIALID = A1.FMATERIALID AND A.Fstockid = A1.ftockid
- GROUP BY A.FMATERIALID,A.FSTOCKORGID
- ) E on E.FMATERIALID = C.FMASTERID AND E.FSTOCKORGID = A.FFOREORGID
+ LEFT JOIN T_STK_INVINITDETAIL A1 on A.FMATERIALID = A1.FMATERIALID AND A.Fstockid = A1.FSTOCKID
+ group by A.FMATERIALID,A.FSTOCKORGID
+ ) E on E.FMATERIALID = B.FMATERIALID
WHERE
--A.FDATE BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
A.FDATE BETWEEN @STARTDATE AND @ENDDATE
@@ -153,8 +144,8 @@ BEGIN
ALTER TABLE #TMPMPS ADD FPACKUNITCONVT VARCHAR(100)
UPDATE T SET T.FPACKUNITCONVT = CONCAT(CONVERT(VARCHAR,T.FPACKUNITCONVERRATIO),T.FSTOREUNITNAME,'/',T.FPACKUNITNAME) FROM #TMPMPS T
- ALTER TABLE #TMPMPS ADD TotalStockQty decimal(23,6)
- UPDATE T SET T.TotalStockQty = T.InProductionQty +T.InStockQty FROM #TMPMPS T
+ --ALTER TABLE #TMPMPS ADD TotalStockQty decimal(23,6)
+ --UPDATE T SET T.TotalStockQty = T.InProductionQty +T.InStockQty FROM #TMPMPS T
--ѯend
DECLARE @SQL VARCHAR(2000)
diff --git a/MonthlyProductionSchedule/SQLServer/自定义函数.sql b/MonthlyProductionSchedule/SQLServer/自定义函数.sql
index 25536a2..f49ac23 100644
--- a/MonthlyProductionSchedule/SQLServer/自定义函数.sql
+++ b/MonthlyProductionSchedule/SQLServer/自定义函数.sql
@@ -1,4 +1,4 @@
-CREATE FUNCTION dbo.CustomUnitNumConversion(@cnvNumber decimal(23,6) ,@coefficient int)
+CREATE FUNCTION PackageValConver(@cnvNumber decimal(23,6) ,@coefficient int)
RETURNS decimal(23,6) --طֵ
as
BEGIN
diff --git a/ProductionMaterialsReport/Class1.cs b/ProductionMaterialsReport/Class1.cs
new file mode 100644
index 0000000..66dafd4
--- /dev/null
+++ b/ProductionMaterialsReport/Class1.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ProductionMaterialsReport
+{
+ public class Class1
+ {
+ }
+}
diff --git a/ProductionMaterialsReport/ProductionMaterialsReport.csproj b/ProductionMaterialsReport/ProductionMaterialsReport.csproj
new file mode 100644
index 0000000..38f811a
--- /dev/null
+++ b/ProductionMaterialsReport/ProductionMaterialsReport.csproj
@@ -0,0 +1,53 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {49AF92F2-2DCF-42F4-AB29-12298575D803}
+ Library
+ Properties
+ ProductionMaterialsReport
+ ProductionMaterialsReport
+ v4.8
+ 512
+ true
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ProductionMaterialsReport/Properties/AssemblyInfo.cs b/ProductionMaterialsReport/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..d125c48
--- /dev/null
+++ b/ProductionMaterialsReport/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("ProductionMaterialsReport")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("ProductionMaterialsReport")]
+[assembly: AssemblyCopyright("Copyright © 2023")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("49af92f2-2dcf-42f4-ab29-12298575d803")]
+
+// 程序集的版本信息由下列四个值组成:
+//
+// 主版本
+// 次版本
+// 生成号
+// 修订号
+//
+//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
+//通过使用 "*",如下所示:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/ProductionMaterialsReport/SqlServer/SQLQuery4.sql b/ProductionMaterialsReport/SqlServer/SQLQuery4.sql
new file mode 100644
index 0000000..4b5d47d
--- /dev/null
+++ b/ProductionMaterialsReport/SqlServer/SQLQuery4.sql
@@ -0,0 +1,55 @@
+SELECT * INTO #TMP123 FROM #TPRDMOINFO
+DROP TABLE #TPRDMOINFO
+
+SELECT
+ '' AS 'к',
+ '' AS '',
+ A.FBILLNO AS 'Ͷϵ',
+ '' AS '۶',
+ '' AS 'λ',
+ A.FMNEMONICCODE AS '',
+ A.FBILLNO AS '',
+ A.FNUMBER AS 'Ʒ',
+ A.FNAME AS 'Ʒ',
+ A.FSPECIFICATION AS 'Ʒͺ',
+ A.FNAME AS 'Ʒλ',
+ A.FQTY AS 'Ʒ',
+ A.FNUMBER AS 'ϴ',
+ A.FNAME AS '',
+ ( CASE A.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END ) AS 'Դ',
+ A.FSPECIFICATION AS 'Ϲͺ',
+ '' AS 'ϼ',
+ A.FSTDQTY AS 'ϵλ',
+ A.FUNITID AS 'ϵλ',
+ A.FINVENTORYQTY AS 'Ͽ',
+ '' AS 'ϴ',
+ A.FNEEDQTY AS '',
+ '' AS 'ǰƷ',
+ '' AS 'Ƿ',
+ '' AS ';',
+ '' AS 'ƻͶ',
+ A.FPICKEDQTY AS '',
+ A.FNOPICKEDQTY AS 'δ',
+ '' AS '',
+ A.FMUSTQTY AS 'Ӧ',
+ '' AS 'ע',
+ '' AS '',
+ A.FSCRAPQTY AS '',
+ '' AS 'ƻ',
+ '' AS 'ֿ',
+ '' AS 'λ',
+ A.FREPICKEDQTY AS '',
+ A.FPLANSTARTDATE AS 'ƻ',
+ A.FPLANFINISHDATE AS 'ƻ깤',
+ '' AS 'λ',
+ '' AS 'ע',
+ '' AS 'BOMע',
+ A.FBILLTYPE AS '',
+ A.FWORKSHOPID AS '',
+ ( CASE AE_A.FSTATUS WHEN 6 THEN 'ѽ' ELSE '' END ) AS '',
+ A.FDOCUMENTSTATUS AS 'Ͷϵ״̬',
+ '' AS 'PRδתPO'
+FROM
+ #TMP123 A
+
+ DROP TABLE #TMP123
\ No newline at end of file
diff --git a/ProductionMaterialsReport/SqlServer/生产用料清单.sql b/ProductionMaterialsReport/SqlServer/生产用料清单.sql
new file mode 100644
index 0000000..3d18649
--- /dev/null
+++ b/ProductionMaterialsReport/SqlServer/生产用料清单.sql
@@ -0,0 +1,49 @@
+SELECT
+ TOP 100
+ A.FID
+ ,A.FFORMID
+ ,A.FBILLNO --Ͷϵ
+ ,A.FMATERIALID --ƷID
+ ,A.FMOBILLNO --
+ ,B.FNUMBER --Ʒ
+ ,B_L.FNAME --Ʒ
+ ,B_L.FSPECIFICATION --Ʒͺ
+ ,A.FBOMID
+ ,A.FSALEORDERNO --۶
+ ,A.FUNITID --Ʒλ
+ ,D_L.FNAME UNITNAME
+ ,A.FQTY --Ʒ
+ ,AE.FMATERIALID AS ENTRYMATERIALID --ID
+ ,C.FNUMBER
+ ,C.FMNEMONICCODE
+ ,C_L.FNAME
+ ,(CASE C.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END) FMATERIALSRC --Դ
+ ,C_L.FSPECIFICATION
+ ,(AE.FNUMERATOR / AE.FDENOMINATOR) DOSAGE
+ ,AE.FNEEDQTY --
+ ,AE.FUNITID AS ENTRYUNITID
+ ,E_L.FNAME ENTRYUNITNAME --ϵλ
+ ,AE.FMATERIALTYPE --/ϼ
+ ,AE.FSTDQTY --
+ ,AE.FMUSTQTY --Ӧ
+ ,AE_Q.FPICKEDQTY --
+ ,AE_Q.FNOPICKEDQTY --δ
+ ,AE_Q.FREPICKEDQTY --
+ ,AE_Q.FSCRAPQTY --
+ --,AE.FMEMO --ע
+ --
+ ,AE_C.FSTOCKID
+ ,F_L.FNAME --ֿ
+ ,AE_C.FSTOCKLOCID --λ
+FROM
+ T_PRD_PPBOM A --嵥
+ LEFT JOIN T_PRD_PPBOMENTRY AE ON A.FID = AE.FID --嵥ӱ
+ LEFT JOIN T_PRD_PPBOMENTRY_Q AE_Q ON AE_Q.FENTRYID = AE.FENTRYID --嵥ֱ
+ LEFT JOIN T_PRD_PPBOMENTRY_C AE_C ON AE_C.FENTRYID = AE.FENTRYID
+ LEFT JOIN T_BD_MATERIAL B ON B.FMATERIALID = A.FMATERIALID
+ LEFT JOIN T_BD_MATERIAL_L B_L ON B_L.FMATERIALID = A.FMATERIALID AND B_L.FLOCALEID = 2052
+ 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 AND C_L.FLOCALEID = 2052
+ LEFT JOIN T_BD_UNIT_L D_L ON D_L.FUNITID = A.FUNITID AND D_L.FLOCALEID = 2052
+ LEFT JOIN T_BD_UNIT_L E_L ON E_L.FUNITID = AE.FUNITID AND E_L.FLOCALEID = 2052
+ LEFT JOIN T_BD_STOCK_L F_L ON F_L.FSTOCKID = AE_C.FSTOCKID AND F_L.FLOCALEID =2052
diff --git a/ProductionMaterialsReport/SqlServer/生产订单.sql b/ProductionMaterialsReport/SqlServer/生产订单.sql
new file mode 100644
index 0000000..cda13e1
--- /dev/null
+++ b/ProductionMaterialsReport/SqlServer/生产订单.sql
@@ -0,0 +1,10 @@
+SELECT
+ A.FID
+ ,A.FBILLNO
+ ,AE.FPLANSTARTDATE --ƻʱ
+ ,AE.FPLANFINISHDATE --ƻ깤ʱ
+ ,AE.FPRODUCTTYPE --
+ ,AE.FWORKSHOPID --
+FROM
+ T_PRD_MO A
+ LEFT JOIN T_PRD_MOENTRY AE ON A.FID = AE.FID
\ No newline at end of file
diff --git a/SAL_OUTSTOCK.dll b/SAL_OUTSTOCK.dll
deleted file mode 100644
index ce1b347..0000000
Binary files a/SAL_OUTSTOCK.dll and /dev/null differ
diff --git a/SAL_OUTSTOCK.zip b/SAL_OUTSTOCK.zip
deleted file mode 100644
index 9298245..0000000
Binary files a/SAL_OUTSTOCK.zip and /dev/null differ
diff --git a/TNMB.PUR_RPT_POOrderTrace/POOrderTraceServiceRptEx.cs b/TNMB.PUR_RPT_POOrderTrace/POOrderTraceServiceRptEx.cs
new file mode 100644
index 0000000..da7c0ae
--- /dev/null
+++ b/TNMB.PUR_RPT_POOrderTrace/POOrderTraceServiceRptEx.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace TNMB.PUR_RPT_POOrderTrace
+{
+ public class POOrderTraceServiceRptEx
+ {
+
+ }
+}
diff --git a/TNMB.PUR_RPT_POOrderTrace/Properties/AssemblyInfo.cs b/TNMB.PUR_RPT_POOrderTrace/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..951b346
--- /dev/null
+++ b/TNMB.PUR_RPT_POOrderTrace/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("TNMB.PUR_RPT_POOrderTrace")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("TNMB.PUR_RPT_POOrderTrace")]
+[assembly: AssemblyCopyright("Copyright © 2023")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("bcc79c5a-0154-4484-981e-13b7a4ffb4d3")]
+
+// 程序集的版本信息由下列四个值组成:
+//
+// 主版本
+// 次版本
+// 生成号
+// 修订号
+//
+//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
+//通过使用 "*",如下所示:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/TNMB.PUR_RPT_POOrderTrace/TNMB.PUR_RPT_POOrderTrace.csproj b/TNMB.PUR_RPT_POOrderTrace/TNMB.PUR_RPT_POOrderTrace.csproj
new file mode 100644
index 0000000..8276b66
--- /dev/null
+++ b/TNMB.PUR_RPT_POOrderTrace/TNMB.PUR_RPT_POOrderTrace.csproj
@@ -0,0 +1,47 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {BCC79C5A-0154-4484-981E-13B7A4FFB4D3}
+ Library
+ Properties
+ TNMB.PUR_RPT_POOrderTrace
+ TNMB.PUR_RPT_POOrderTrace
+ v4.0
+ 512
+ true
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Trinomab.PUR_RPT_POOrderTrace/POOrderTraceServiceEx.cs b/Trinomab.PUR_RPT_POOrderTrace/POOrderTraceServiceEx.cs
new file mode 100644
index 0000000..3a5c6c5
--- /dev/null
+++ b/Trinomab.PUR_RPT_POOrderTrace/POOrderTraceServiceEx.cs
@@ -0,0 +1,57 @@
+using Kingdee.BOS.App;
+using Kingdee.BOS.App.Data;
+using Kingdee.BOS.Contracts;
+using Kingdee.BOS.Core.Report;
+using Kingdee.K3.SCM.App.Purchase.Report;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Trinomab.PUR_RPT_POOrderTrace
+{
+ public class POOrderTraceServiceEx : POOrderTraceService
+ {
+ private string[] TempTableName;
+
+ public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
+ {
+ //创建临时表用于保存自己的数据
+ IDBService dbservice = ServiceHelper.GetService();
+ TempTableName = dbservice.CreateTemporaryTableName(this.Context, 1);
+ string strTable = TempTableName[0];
+
+ //调用基类方式获取初步查询数据
+ base.BuilderReportSqlAndTempTable(filter, strTable);
+
+ string strSql = $@"/*dialect*/
+SELECT
+ A.*
+ ,BE.F_ORA_TEXT2 AS FAPPLYDEPT
+ INTO {tableName}
+FROM
+ {strTable} A
+ LEFT JOIN t_PUR_POOrderEntry BE ON A.FID = B.FID AND BE.FENTRYID = A.FENTRYID
+ LEFT JOIN t_PUR_POOrder B ON A.FID = B.FID AND A.FBILLNO = B.FBILLNO
+";
+
+ DBUtils.Execute(this.Context, strSql);
+ }
+
+ public override void CloseReport()
+ {
+ //删除临时表
+ if (TempTableName == null || TempTableName.Length == 0)
+ {
+ return;
+ }
+
+ IDBService dbservice = ServiceHelper.GetService();
+
+ dbservice.DeleteTemporaryTableName(this.Context, TempTableName);
+
+
+ base.CloseReport();
+ }
+ }
+}
diff --git a/Trinomab.PUR_RPT_POOrderTrace/Properties/AssemblyInfo.cs b/Trinomab.PUR_RPT_POOrderTrace/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..3decda4
--- /dev/null
+++ b/Trinomab.PUR_RPT_POOrderTrace/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("Trinomab.PUR_RPT_POOrderTrace")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Trinomab.PUR_RPT_POOrderTrace")]
+[assembly: AssemblyCopyright("Copyright © 2023")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("9e2ddd7f-02ee-4bdf-a696-4cc6d310fead")]
+
+// 程序集的版本信息由下列四个值组成:
+//
+// 主版本
+// 次版本
+// 生成号
+// 修订号
+//
+//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
+//通过使用 "*",如下所示:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Trinomab.PUR_RPT_POOrderTrace/Trinomab.PUR_RPT_POOrderTrace.csproj b/Trinomab.PUR_RPT_POOrderTrace/Trinomab.PUR_RPT_POOrderTrace.csproj
new file mode 100644
index 0000000..bde5e5d
--- /dev/null
+++ b/Trinomab.PUR_RPT_POOrderTrace/Trinomab.PUR_RPT_POOrderTrace.csproj
@@ -0,0 +1,68 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {9E2DDD7F-02EE-4BDF-A696-4CC6D310FEAD}
+ Library
+ Properties
+ Trinomab.PUR_RPT_POOrderTrace
+ Trinomab.PUR_RPT_POOrderTrace
+ 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.App.dll
+
+
+ ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Contracts.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.Purchase.Report.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UnitTestProject1/UnitTest1.cs b/UnitTestProject1/UnitTest1.cs
index 32d5b0a..70456ec 100644
--- a/UnitTestProject1/UnitTest1.cs
+++ b/UnitTestProject1/UnitTest1.cs
@@ -15,6 +15,47 @@ namespace UnitTestProject1
[TestClass]
public class UnitTest1
{
+ public class TestEntity
+ {
+ public TestEntity(int _id, string _name)
+ {
+ id = _id;
+ name = _name;
+ }
+ public int id;
+ public string name;
+ }
+
+ [TestMethod]
+ public void TestMethod2()
+ {
+ var list = new List();
+ list.Add(new TestEntity(1,"ttetett"));
+ list.Add(new TestEntity(1,"ttetett"));
+ list.Add(new TestEntity(1,"ttetett"));
+ list.Add(new TestEntity(1,"ttetett"));
+ list.Add(new TestEntity(1,"ttetett"));
+ list.Add(new TestEntity(1,"ttetett"));
+ list.Add(new TestEntity(1,"ttetett"));
+ list.Add(new TestEntity(1,"ttetett"));
+ list.Add(new TestEntity(1,"ttetett"));
+ list.Add(new TestEntity(1,"ttetett"));
+ list.Add(new TestEntity(1,"ttetett"));
+ list.Add(new TestEntity(2,"ttetett"));
+ list.Add(new TestEntity(2,"ttetett"));
+ list.Add(new TestEntity(2,"ttetett"));
+ list.Add(new TestEntity(2,"ttetett"));
+ list.Add(new TestEntity(2,"ttetett"));
+ list.Add(new TestEntity(2,"ttetett"));
+ list.Add(new TestEntity(2,"ttetett"));
+
+ var ttt = list.GroupBy(x => x.id);
+
+ var count = ttt.Count();
+
+ return;
+ }
+
[TestMethod]
public void TestMethod1()
{
@@ -66,6 +107,7 @@ namespace UnitTestProject1
auditList.Add(data);
+ auditList.Add(data1);
jsonMap.Add("itemList", auditList);
string json = JsonConvert.SerializeObject(jsonMap);
@@ -76,17 +118,14 @@ namespace UnitTestProject1
param.Add("name", "supvWarehouse.save");
param.Add("app_key", appKey);
param.Add("data", json);
- param.Add("timestamp", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
+ param.Add("timestamp", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
param.Add("version", "");
string sign = BuildSign(param, secret);
param.Add("sign", sign);
- var ttt = @"{""entName"":""珠海昶展物流有限公司"",""entCusCode"":""4404660006"",""bookNum"":""T5781W000004"",""declaEntCreditCode"":""91440404MABRGQJR1H"",""deliveryType"":""QTCK"",""declaEntCusCode"":""4404660006"",""inputDate"":""2018-02-02 14:03:07"",""deliveryTm"":""2018-02-09 00:00:00"",""declaType"":""00"",""declaDate"":""2023-12-20 09:38:55"",""declaCode"":""QTCK000003"",""itemList"":[{""productDesc"":""喇叭"",""inventoryOrderNo"":""10"",""deliveryOrderNo"":""2"",""specificationsModels"":"" "",""hscode"":""8"",""deliveryCnt"":""80.0000000000"",""itemNo"":""1"",""inventory"":""9"",""productCd"":""100242"",""calcUnit"":""Pcs""},{""productDesc"":""听筒"",""inventoryOrderNo"":""10"",""deliveryOrderNo"":""2"",""specificationsModels"":"" "",""hscode"":""8"",""deliveryCnt"":""80.0000000000"",""itemNo"":""2"",""inventory"":""9"",""productCd"":""100243"",""calcUnit"":""Pcs""}],""entCreditCode"":""91440404MABRGQJR1H"",""declaEntName"":""珠海昶展物流有限公司"",""inputMan"":""demo"",""customsCode"":""5781""}";
- //var json = "{\"entName\":\"珠海昶展物流有限公司\",\"entCusCode\":\"4404660006\",\"bookNum\":\"T5781W000004\",\"declaEntCreditCode\":\"91440404MABRGQJR1H\",\"declaEntCusCode\":\"4404660006\",\"entCreditCode\":\"91440404MABRGQJR1H\",\"declaEntName\":\"珠海昶展物流有限公司\",\"inputMan\":\"demo\",\"customsCode\":\"5781\",\"inputDate\":\"2018-02-02 14:03:07\",\"declaType\":\"00\",\"deliveryTm\":\"2018-02-09 00:00:00\",\"declaDate\":\"2023-12-20 10:55:59\",\"deliveryType\":\"QTCK\",\"declaCode\":\"QTCK000003\",\"item\":[{\"itemNo\":\"1\",\"deliveryOrderNo\":\"2\",\"productCd\":\"100242\",\"productDesc\":\"喇叭\",\"specificationsModels\":\" \",\"deliveryCnt\":\"80.0000000000\",\"calcUnit\":\"Pcs\",\"hscode\":\"8\",\"inventory\":\"9\",\"inventoryOrderNo\":\"10\"},{\"itemNo\":\"2\",\"deliveryOrderNo\":\"2\",\"productCd\":\"100243\",\"productDesc\":\"听筒\",\"specificationsModels\":\" \",\"deliveryCnt\":\"80.0000000000\",\"calcUnit\":\"Pcs\",\"hscode\":\"8\",\"inventory\":\"9\",\"inventoryOrderNo\":\"10\"}]}";
+ var jsonParam = JsonConvert.SerializeObject(param);
- var ttt2 = JsonConvert.SerializeObject(param);
-
- HttpWebHelper.DoPost("http://119.146.223.48:39082/api/", ttt2);
+ var result = HttpWebHelper.DoPost("http://119.146.223.48:39082/api/", jsonParam);
var a = 0.00M;
var a2 = 0L;
var f = (a == a2);
@@ -146,4 +185,8 @@ namespace UnitTestProject1
return sign.ToString();
}
}
+
+
+
+
}
diff --git a/UseGetFmaterialData.dll b/UseGetFmaterialData.dll
deleted file mode 100644
index b7a4420..0000000
Binary files a/UseGetFmaterialData.dll and /dev/null differ
diff --git a/生产投料单-1.sql b/生产投料单-1.sql
new file mode 100644
index 0000000..b228f43
--- /dev/null
+++ b/生产投料单-1.sql
@@ -0,0 +1,90 @@
+SELECT
+ '' AS '行号',
+ '' AS '单据日期',
+ D.FBILLNO AS '生产投料单号',
+ '' AS '销售订单号',
+ '' AS '购货单位代码',
+ C.FMNEMONICCODE AS '助记码',
+ A.FBILLNO AS '生产任务单号',
+ C.FNUMBER AS '产品代码',
+ C_L.FNAME AS '产品名称',
+ C_L.FSPECIFICATION AS '产品规格型号',
+ E_L.FNAME AS '产品单位',
+ AE.FQTY AS '产品生产数量',
+ I.FNUMBER AS '物料代码',
+ I.FNAME AS '物料名称',
+ ( CASE I.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END ) AS '物料来源',
+ I.FSPECIFICATION AS '物料规格型号',
+ '' AS '物料技术标准',
+ I.FSTDQTY AS '物料单位用量',
+ I.FUNITID AS '物料单位',
+ I.FINVENTORYQTY AS '物料库存量',
+ '' AS '物料待检数',
+ I.FNEEDQTY AS '物料总需求',
+ '' AS '当前在制品数量',
+ '' AS '欠料',
+ '' AS '物料在途数',
+ '' AS '计划投料数量',
+ I.FPICKEDQTY AS '已领数量',
+ I.FNOPICKEDQTY AS '未领数量',
+ '' AS '标准数量',
+ I.FMUSTQTY AS '应发数量',
+ '' AS '备注',
+ '' AS '损耗数量',
+ I.FSCRAPQTY AS '报废数量',
+ '' AS '计划发料日期',
+ '' AS '仓库',
+ '' AS '仓位',
+ I.FREPICKEDQTY AS '补料数量',
+ AE.FPLANSTARTDATE AS '计划开工日期',
+ AE.FPLANFINISHDATE AS '计划完工日期',
+ '' AS '工位',
+ '' AS '其他备注项',
+ '' AS 'BOM备注项',
+ A.FBILLTYPE AS '生产类型',
+ AE.FWORKSHOPID AS '生产车间',
+ ( CASE AE_A.FSTATUS WHEN 6 THEN '已结案' ELSE '' END ) AS '生产任务单结案否',
+ D.FDOCUMENTSTATUS AS '生产投料单状态',
+ '' AS 'PR已审未转PO数量'
+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
+ INNER JOIN T_BD_MATERIAL C ON AE.FMATERIALID = C.FMATERIALID --物料表
+ INNER JOIN T_BD_MATERIAL_L C_L ON C.FMATERIALID = C_L.FMATERIALID
+ LEFT JOIN T_PRD_PPBOM D ON D.FMOENTRYID = AE_A.FENTRYID --生产用料清单
+ LEFT JOIN T_BD_UNIT_L E_L ON AE.FUNITID = E_L.FUNITID
+ LEFT JOIN (
+ SELECT
+ A.FMATERIALID,
+ A.FMASTERID,
+ A.FNUMBER,
+ B.FUNITID,
+ AL.FNAME ,
+ AL.FSPECIFICATION ,
+ A.FMATERIALSRC,
+ B.FENTRYID,
+ B.FID,
+ B.FMOID,
+ B.FMOENTRYID,
+ B.FMOTYPE,
+ B.FMOBILLNO,
+ B.FNEEDQTY,
+ B.FMUSTQTY,
+ B_Q.FPICKEDQTY,
+ B_Q.FNOPICKEDQTY,
+ B.FSTDQTY,
+ B_Q.FINVENTORYQTY,
+ B_Q.FSCRAPQTY,
+ B_Q.FREPICKEDQTY
+ FROM
+ T_BD_MATERIAL A
+ LEFT JOIN T_BD_MATERIAL_L AL ON A.FMATERIALID = AL.FMATERIALID
+ RIGHT JOIN T_PRD_PPBOMENTRY B ON B.FMATERIALID = A.FMATERIALID
+ RIGHT JOIN T_PRD_PPBOMENTRY_Q B_Q ON B.FENTRYID = B_Q.FENTRYID
+ WHERE
+ AL.FLOCALEID = 2052
+ ) I ON D.FID = I.FID
+WHERE
+ C_L.FLOCALEID = 2052
+ AND E_L.FLOCALEID = 2052
\ No newline at end of file