From a543baebd600d3c3e939242d21d809907a6302bd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E7=8B=97=E8=9B=8B?=
<12086832+li-goudan233@user.noreply.gitee.com>
Date: Mon, 31 Mar 2025 19:09:19 +0800
Subject: [PATCH] 1
---
GZ_LTHReportForms.sln | 25 ++
JiXiaoKanBan/ResultsKanbanSumReport.cs | 178 +++++++++++
Properties/AssemblyInfo.cs | 36 +++
YeJiPaiHangBang/PHBSaleOrderReport.cs | 213 +++++++++++++
YingShouBaoBiao/YingShouHTXZ.cs | 392 ++++++++++++++++++++++++
YingShouBaoBiao/YingShouQDNF.cs | 369 +++++++++++++++++++++++
YingShouBaoBiao/YingShouQKBiao.cs | 390 ++++++++++++++++++++++++
YingShouBaoBiao/YingShouSBU.cs | 394 +++++++++++++++++++++++++
YingShouBiao/YingShouQKBiao.cs | 163 ++++++++++
9 files changed, 2160 insertions(+)
create mode 100644 GZ_LTHReportForms.sln
create mode 100644 JiXiaoKanBan/ResultsKanbanSumReport.cs
create mode 100644 Properties/AssemblyInfo.cs
create mode 100644 YeJiPaiHangBang/PHBSaleOrderReport.cs
create mode 100644 YingShouBaoBiao/YingShouHTXZ.cs
create mode 100644 YingShouBaoBiao/YingShouQDNF.cs
create mode 100644 YingShouBaoBiao/YingShouQKBiao.cs
create mode 100644 YingShouBaoBiao/YingShouSBU.cs
create mode 100644 YingShouBiao/YingShouQKBiao.cs
diff --git a/GZ_LTHReportForms.sln b/GZ_LTHReportForms.sln
new file mode 100644
index 0000000..9144d4e
--- /dev/null
+++ b/GZ_LTHReportForms.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.34301.259
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GZ_LTHReportForms", "GZ_LTHReportForms.csproj", "{D635EAA4-25EF-45D7-8AE4-A4A4EA71FE54}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {D635EAA4-25EF-45D7-8AE4-A4A4EA71FE54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D635EAA4-25EF-45D7-8AE4-A4A4EA71FE54}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D635EAA4-25EF-45D7-8AE4-A4A4EA71FE54}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D635EAA4-25EF-45D7-8AE4-A4A4EA71FE54}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {CE717740-2432-44B7-82C6-56D114EB7740}
+ EndGlobalSection
+EndGlobal
diff --git a/JiXiaoKanBan/ResultsKanbanSumReport.cs b/JiXiaoKanBan/ResultsKanbanSumReport.cs
new file mode 100644
index 0000000..8ff7969
--- /dev/null
+++ b/JiXiaoKanBan/ResultsKanbanSumReport.cs
@@ -0,0 +1,178 @@
+using Kingdee.BOS.App.Data;
+using Kingdee.BOS.Contracts.Report;
+using Kingdee.BOS.Core.Enums;
+using Kingdee.BOS.Core.Report;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.Util;
+using Kingdee.BOS;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace GZ_LTHReportForms.JiXiaoKanBan
+{
+ [Description("【列表插件】绩效看板汇总报表【报表】"), HotUpdate]
+ public class ResultsKanbanSumReport : SysReportBaseService
+ {
+ ///
+ /// 初始化
+ ///
+ public override void Initialize()
+ {
+ base.Initialize();
+ this.ReportProperty.ReportName = new LocaleValue("绩效看板汇总", base.Context.UserLocale.LCID);
+ this.ReportProperty.IsUIDesignerColumns = false;
+ // 简单账表类型:普通、树形、分页
+ this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;
+ this.IsCreateTempTableByPlugin = true;
+ //
+ this.IsCreateTempTableByPlugin = true;
+ //支持分组汇总
+ this.ReportProperty.IsGroupSummary = true;
+ //
+ this.ReportProperty.SimpleAllCols = false;
+ //
+ this.ReportProperty.IsDefaultOnlyDspSumAndDetailData = true;
+
+ // 设置精度控制
+ var list = new List
+ {
+ new DecimalControlField("FDECIMALS", "OrigInvoiceAmount"),
+ new DecimalControlField("FDECIMALS", "ExchangeRate"),
+ new DecimalControlField("FDECIMALS", "InvoiceAmountTHB"),
+ new DecimalControlField("FDECIMALS", "MonthEndExRate"),
+ new DecimalControlField("FDECIMALS", "RevaluationAountInTHB"),
+ new DecimalControlField("FDECIMALS", "UnrealizedGainLoss"),
+ };
+ this.ReportProperty.DecimalControlFieldList = list;
+ }
+
+ ///
+ /// 报表列表头
+ ///
+ ///
+ ///
+ public override ReportHeader GetReportHeaders(IRptParams filter)
+ {
+ DynamicObject customFilter = filter.FilterParameter.CustomFilter;
+
+ base.GetReportHeaders(filter);
+
+ ReportHeader header = new ReportHeader();
+
+
+ // 下单时间
+ int currentYear = DateTime.Now.Year;
+
+
+ string fDate = (customFilter["FSDate"] == null) ? Convert.ToString(currentYear) : Convert.ToDateTime(
+ customFilter["FSDate"]).ToString("yyyy-MM-dd");
+
+ int year = Convert.ToInt32(fDate.Split('-')[0]);
+
+ header.AddChild("F_SBU", new LocaleValue("SBU"), SqlStorageType.Sqlvarchar);
+ header.AddChild("F_MXQY", new LocaleValue("明细区域"), SqlStorageType.Sqlvarchar);
+ header.AddChild("销售员", new LocaleValue("销售员"), SqlStorageType.Sqlvarchar);
+ header.AddChild("本年业绩目标_万元", new LocaleValue("" + year + "年业绩目标(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("本年派诺业绩_万元", new LocaleValue("" + year + "派诺业绩(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("本年兴诺业绩_万元", new LocaleValue("" + year + "兴诺业绩(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("本年武汉派诺_万元", new LocaleValue("" + year + "武汉派诺(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("本年碳索业绩_万元", new LocaleValue("" + year + "碳索业绩(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("本年香港派诺业绩_万元", new LocaleValue("" + year + "香港派诺业绩(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("本年华夏云联业绩_万元", new LocaleValue("" + year + "华夏云联业绩(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("往年订单变更金额_万元", new LocaleValue("往年订单变更金额(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("本年业绩合计_万元", new LocaleValue("" + year + "合计业绩额(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("达标率", new LocaleValue("达标率"), SqlStorageType.Sqlvarchar);
+ header.AddChild("去年合计业绩额_万元", new LocaleValue("" + (year - 1) + "合计业绩额(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("同比增长率", new LocaleValue("同比增长率"), SqlStorageType.Sqlvarchar);
+ header.AddChild("本年回款目标_万元", new LocaleValue("" + year + "回款目标(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("回款额_万元", new LocaleValue("回款额(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("回款率", new LocaleValue("回款率"), SqlStorageType.Sqlvarchar);
+ header.AddChild("已发货应收款_万元", new LocaleValue("已发货应收款(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("已到期应收款_万元", new LocaleValue("已到期应收款(万元)"), SqlStorageType.SqlDecimal);
+
+ foreach (var item in header.GetChilds())
+ {
+ item.Width = 160;
+ }
+ return header;
+ }
+
+ ///
+ /// 显示报表数据
+ ///
+ ///
+ ///
+ public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
+ {
+ //获取过滤条件
+ string Filter = GetFilterWhere(filter);
+
+ base.BuilderReportSqlAndTempTable(filter, tableName);
+
+ DynamicObject customFilter = filter.FilterParameter.CustomFilter;
+
+ // 开始日期
+ string fStrartDate = (customFilter["FSDate"] == null) ? "" : Convert.ToDateTime(
+ customFilter["FSDate"]).ToString("yyyy-MM-dd");
+
+ // 结束日期
+ string fEndDate = (customFilter["FEDate"] == null) ? "" : Convert.ToDateTime(
+ customFilter["FEDate"]).ToString("yyyy-MM-dd");
+
+ string sql = string.Format(@"/*dialect*/
+ EXEC GZ_JXKBHZB_LTH '{0}','{1}'
+ SELECT
+ ROW_NUMBER() OVER (ORDER BY F_SBU DESC) AS FID,
+ ROW_NUMBER() OVER (ORDER BY F_SBU DESC) AS FIDENTITYID,
+ * INTO {2} FROM JXKBHZB {3}
+", fStrartDate, fEndDate, tableName, Filter);
+ DBUtils.Execute(this.Context, sql);
+ }
+
+ //报表过滤条件-多选销售员
+ private string GetFilterWhere(IRptParams filter)
+ {
+ DynamicObject customFilter = filter.FilterParameter.CustomFilter;
+ StringBuilder strwhere = new StringBuilder(); //创建字符串构建器;
+ strwhere.AppendLine("WHERE 1=1");
+ var xsy = customFilter["F_Salesperson"] as DynamicObjectCollection;
+ if (xsy.Count > 0)
+ {
+ List xsyList = new List();
+ //循环获取物料信息
+ foreach (DynamicObject dobj in xsy)
+ {
+ DynamicObject dynamic = dobj["F_Salesperson"] as DynamicObject;
+ xsyList.Add(dynamic["Name"].ToString());
+ }
+ strwhere.AppendLine(string.Format(@"AND 销售员 IN ({0})", string.Join(",", xsyList.Select(x => $"'{x}'"))));
+ }
+ return strwhere.ToString();
+ }
+
+ //设置报表合计列
+ public override List GetSummaryColumnInfo(IRptParams filter)
+ {
+ var result = base.GetSummaryColumnInfo(filter);
+ result.Add(new SummaryField("本年业绩目标_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("本年派诺业绩_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("本年兴诺业绩_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("本年武汉派诺_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("本年碳索业绩_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("本年香港派诺业绩_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("本年华夏云联业绩_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("往年订单变更金额_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("本年业绩合计_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("去年合计业绩额_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("回款额_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("已发货应收款_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("已到期应收款_万元", BOSEnums.Enu_SummaryType.SUM));
+ return result;
+ }
+
+ }
+}
diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..91698f0
--- /dev/null
+++ b/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("GZ_LTHReportForms")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("GZ_LTHReportForms")]
+[assembly: AssemblyCopyright("Copyright © 2025")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("d635eaa4-25ef-45d7-8ae4-a4a4ea71fe54")]
+
+// 程序集的版本信息由下列四个值组成:
+//
+// 主版本
+// 次版本
+// 生成号
+// 修订号
+//
+//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
+//通过使用 "*",如下所示:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/YeJiPaiHangBang/PHBSaleOrderReport.cs b/YeJiPaiHangBang/PHBSaleOrderReport.cs
new file mode 100644
index 0000000..845a51e
--- /dev/null
+++ b/YeJiPaiHangBang/PHBSaleOrderReport.cs
@@ -0,0 +1,213 @@
+using Kingdee.BOS.App.Data;
+using Kingdee.BOS.Contracts.Report;
+using Kingdee.BOS.Core.Report;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.Util;
+using Kingdee.BOS;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Kingdee.BOS.Core.Enums;
+
+namespace GZ_LTHReportForms.YeJiPaiHangBang
+{
+ [Description("【报表服务插件】销售业绩排行榜_TH"), HotUpdate]
+ public class PHBSaleOrderReport : SysReportBaseService
+ {
+ ///
+ /// 初始化
+ ///
+ public override void Initialize()
+ {
+ base.Initialize();
+ this.ReportProperty.ReportName = new LocaleValue("销售业绩排行榜", base.Context.UserLocale.LCID);
+ this.ReportProperty.IsUIDesignerColumns = false;
+ // 简单账表类型:普通、树形、分页
+ this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;
+ this.IsCreateTempTableByPlugin = true;
+ //
+ this.IsCreateTempTableByPlugin = true;
+ //
+ this.ReportProperty.IsGroupSummary = true;
+ //
+ this.ReportProperty.SimpleAllCols = false;
+ // 单据主键:两行FID相同,则为同一单的两条分录,单据编号可以不重复显示
+ this.ReportProperty.PrimaryKeyFieldName = "FID";
+ //
+ this.ReportProperty.IsDefaultOnlyDspSumAndDetailData = true;
+
+ // 设置精度控制
+ var list = new List
+ {
+ new DecimalControlField("FDECIMALS", "OrigInvoiceAmount"),
+ new DecimalControlField("FDECIMALS", "ExchangeRate"),
+ new DecimalControlField("FDECIMALS", "InvoiceAmountTHB"),
+ new DecimalControlField("FDECIMALS", "MonthEndExRate"),
+ new DecimalControlField("FDECIMALS", "RevaluationAountInTHB"),
+ new DecimalControlField("FDECIMALS", "UnrealizedGainLoss"),
+ };
+ this.ReportProperty.DecimalControlFieldList = list;
+ }
+
+ ///
+ /// 报表列表头
+ ///
+ ///
+ ///
+ public override ReportHeader GetReportHeaders(IRptParams filter)
+ {
+ DynamicObject customFilter = filter.FilterParameter.CustomFilter;
+
+ base.GetReportHeaders(filter);
+
+ ReportHeader header = new ReportHeader();
+
+ // 下单时间
+ string fDate = customFilter["F_SDate"]?.ToString();
+
+ int year = Convert.ToInt32(fDate.Split('-')[0]);
+
+ header.AddChild("部门_SBU", new LocaleValue("部门(SBU)"), SqlStorageType.Sqlvarchar);
+ header.AddChild("区域明细", new LocaleValue("区域明细"), SqlStorageType.Sqlvarchar);
+ header.AddChild("职位名称", new LocaleValue("职位名称"), SqlStorageType.Sqlvarchar);
+ header.AddChild("姓名", new LocaleValue("姓名"), SqlStorageType.Sqlvarchar);
+ header.AddChild("入司时间", new LocaleValue("入司时间"), SqlStorageType.SqlDatetime);
+ header.AddChild("担任本职位日期", new LocaleValue("担任本职位日期"), SqlStorageType.SqlDatetime);
+ header.AddChild("担任销售日期", new LocaleValue("担任销售日期"), SqlStorageType.SqlDatetime);
+ header.AddChild("入职年限", new LocaleValue("入职年限"), SqlStorageType.Sqlvarchar);
+ header.AddChild("派诺集团-已进行集团业绩调整(含往年订单变更)", new LocaleValue("派诺集团-已进行集团业绩调整(含往年订单变更)"), SqlStorageType.SqlDecimal);
+ header.AddChild("派诺业绩(含往年订单变更)", new LocaleValue("派诺业绩(含往年订单变更)"), SqlStorageType.SqlDecimal);
+ header.AddChild("兴诺业绩(含往年订单变更)", new LocaleValue("兴诺业绩(含往年订单变更)"), SqlStorageType.SqlDecimal);
+ header.AddChild("武汉派诺业绩(含往年订单变更)", new LocaleValue("武汉派诺业绩(含往年订单变更)"), SqlStorageType.SqlDecimal);
+ header.AddChild("广东碳索业绩(含往年订单变更)", new LocaleValue("广东碳索业绩(含往年订单变更)"), SqlStorageType.SqlDecimal);
+ header.AddChild("香港派诺业绩(含往年订单变更)", new LocaleValue("香港派诺业绩(含往年订单变更)"), SqlStorageType.SqlDecimal);
+ header.AddChild("华夏云联业绩(含往年订单变更)", new LocaleValue("华夏云联业绩(含往年订单变更)"), SqlStorageType.SqlDecimal);
+ header.AddChild("当年累计业绩", new LocaleValue("当年累计业绩"), SqlStorageType.SqlDecimal);
+ header.AddChild("往年变更合同额", new LocaleValue("往年变更合同额"), SqlStorageType.SqlDecimal);
+ header.AddChild("集团回款合计", new LocaleValue("集团回款合计"), SqlStorageType.SqlDecimal);
+ header.AddChild("派诺累计回款额", new LocaleValue("派诺累计回款额"), SqlStorageType.SqlDecimal);
+ header.AddChild("兴诺累计回款额", new LocaleValue("兴诺累计回款额"), SqlStorageType.SqlDecimal);
+ header.AddChild("武汉派诺累计回款额", new LocaleValue("武汉派诺累计回款额"), SqlStorageType.SqlDecimal);
+ header.AddChild("广东碳索累计回款额", new LocaleValue("广东碳索累计回款额"), SqlStorageType.SqlDecimal);
+ header.AddChild("香港派诺累计回款额", new LocaleValue("香港派诺累计回款额"), SqlStorageType.SqlDecimal);
+ header.AddChild("华夏云联累计回款额", new LocaleValue("华夏云联累计回款额"), SqlStorageType.SqlDecimal);
+ header.AddChild("2025年销售目标-新", new LocaleValue(year + "年销售目标-新"), SqlStorageType.SqlDecimal);
+ header.AddChild("2025年达标率(不含往年订单变更)-新", new LocaleValue(year + "年达标率(不含往年订单变更)-新"), SqlStorageType.SqlDecimal);
+ header.AddChild("2025年销售目标-原", new LocaleValue(year + "年销售目标-原"), SqlStorageType.SqlDecimal);
+ header.AddChild("2025年达标率(不含往年订单变更)-原", new LocaleValue(year + "年达标率(不含往年订单变更)-原"), SqlStorageType.SqlDecimal);
+ header.AddChild("目标调整金额", new LocaleValue("目标调整金额"), SqlStorageType.SqlDecimal);
+ header.AddChild("2024年度销售额", new LocaleValue((year - 1) + "年度销售额"), SqlStorageType.SqlDecimal);
+ header.AddChild("2023年度销售额", new LocaleValue((year - 2) + "年度销售额"), SqlStorageType.SqlDecimal);
+ header.AddChild("2022年度销售额", new LocaleValue((year - 3) + "年度销售额"), SqlStorageType.SqlDecimal);
+ header.AddChild("2021年度销售额", new LocaleValue((year - 4) + "年度销售额"), SqlStorageType.SqlDecimal);
+ header.AddChild("2020年度销售额", new LocaleValue((year - 5) + "年度销售额"), SqlStorageType.SqlDecimal);
+ header.AddChild("2019年度销售额", new LocaleValue((year - 6) + "年度销售额"), SqlStorageType.SqlDecimal);
+
+
+ foreach (var item in header.GetChilds())
+ {
+ item.Width = 160;
+ }
+ return header;
+ }
+
+ ///
+ /// 显示报表数据
+ ///
+ ///
+ ///
+ public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
+ {
+ //获取过滤条件
+ string Filter = GetFilterWhere(filter);
+
+ DynamicObject customFilter = filter.FilterParameter.CustomFilter;
+ base.BuilderReportSqlAndTempTable(filter, tableName);
+
+ //获取开始日期
+ string FStrartDate = (customFilter["F_SDate"] == null) ? "" : Convert.ToDateTime(
+ customFilter["F_SDate"]).ToString("yyyy-MM-dd");
+
+ //获取结束日期
+ string FEndDate = (customFilter["F_EDate"] == null) ? "" : Convert.ToDateTime(
+ customFilter["F_EDate"]).ToString("yyyy-MM-dd");
+
+ //获取多选组织的FID
+ var ZZS = customFilter["F_YKQC_MulBase_83g"] as DynamicObjectCollection;
+ var OrgFids = "";
+ if (ZZS.Count > 0) {
+ List zzList = new List();
+ //循环获取多选组织FID
+ foreach (DynamicObject dobj in ZZS)
+ {
+ DynamicObject dynamic = dobj["F_YKQC_MulBase_83g"] as DynamicObject;
+ zzList.Add(dynamic["ID"].ToString());
+ }
+ OrgFids = string.Join(",", zzList.Select(x => $"'{x}'"));
+ }
+
+ string sql = string.Format(@"/*dialect*/
+ EXEC GZYJPHB_TH '{0}','{1}','{2}'
+
+ SELECT
+ ROW_NUMBER() OVER (ORDER BY [部门_FBU] DESC) AS FID,
+ ROW_NUMBER() OVER (ORDER BY [部门_FBU] DESC) AS FIDENTITYID,
+ * INTO {3} FROM YJPHB_GZTH {4}
+ ", FStrartDate,FEndDate,OrgFids,tableName, Filter);
+ DBUtils.Execute(this.Context, sql);
+ }
+
+ //报表过滤条件-多选销售员
+ private string GetFilterWhere(IRptParams filter)
+ {
+ DynamicObject customFilter = filter.FilterParameter.CustomFilter;
+ StringBuilder strwhere = new StringBuilder(); //创建字符串构建器;
+ strwhere.AppendLine("WHERE 1=1");
+ var xsy = customFilter["F_YKQC_MulBase_re5"] as DynamicObjectCollection;
+ if (xsy.Count > 0)
+ {
+ List xsyList = new List();
+ //循环获取物料信息
+ foreach (DynamicObject dobj in xsy)
+ {
+ DynamicObject dynamic = dobj["F_YKQC_MulBase_re5"] as DynamicObject;
+ xsyList.Add(dynamic["Name"].ToString());
+ }
+ strwhere.AppendLine(string.Format(@"AND 销售员 IN ({0})", string.Join(",", xsyList.Select(x => $"'{x}'"))));
+ }
+ return strwhere.ToString();
+ }
+
+ //设置报表合计列
+ public override List GetSummaryColumnInfo(IRptParams filter)
+ {
+ var result = base.GetSummaryColumnInfo(filter);
+ result.Add(new SummaryField("派诺集团_已进行集团业绩调整_含往年订单变更", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("派诺业绩_含往年订单变更", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("兴诺业绩_含往年订单变更", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("武汉派诺业绩_含往年订单变更", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("广东碳索业绩_含往年订单变更", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("香港派诺业绩_含往年订单变更", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("华夏云联业绩_含往年订单变更", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("当年累计业绩", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("往年变更合同额", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("集团回款合计", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("派诺累计回款额", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("兴诺累计回款额", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("武汉派诺累计回款额", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("广东碳索累计回款额", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("香港派诺累计回款额", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("华夏云联累计回款额", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("2024年度销售额", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("2023年度销售额", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("2022年度销售额", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("2021年度销售额", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("2020年度销售额", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("2019年度销售额", BOSEnums.Enu_SummaryType.SUM));
+ return result;
+ }
+ }
+}
diff --git a/YingShouBaoBiao/YingShouHTXZ.cs b/YingShouBaoBiao/YingShouHTXZ.cs
new file mode 100644
index 0000000..c612f2e
--- /dev/null
+++ b/YingShouBaoBiao/YingShouHTXZ.cs
@@ -0,0 +1,392 @@
+ using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Kingdee.BOS;
+using Kingdee.BOS.App.Data;
+using Kingdee.BOS.Contracts;
+using Kingdee.BOS.Contracts.Report;
+using Kingdee.BOS.Core.Metadata;
+using Kingdee.BOS.Core.Report;
+using Kingdee.BOS.Core.SqlBuilder;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.Util;
+
+
+namespace GZ_LTHReportForms.YingShouBaoBiao
+{
+ [Description("应收情况概况表按(合同性质)区分"), HotUpdate]
+ public class YingShouHTXZ : SysReportBaseService
+ {
+ //对报表进行初始化
+ public override void Initialize()
+ {
+ base.Initialize();
+ //设置报表类型为普通类型
+ this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;
+ //设置是否通过插件创建临时表
+ this.IsCreateTempTableByPlugin = true;
+ //设置是否分组汇总
+ this.ReportProperty.IsGroupSummary = true;
+ }
+ //获取过滤条件信息(构造单据信息)
+ public override ReportTitles GetReportTitles(IRptParams filter)
+ {
+ //创建标题对象
+ ReportTitles reportTitles = new ReportTitles();
+ //获取自定义过滤条件
+ DynamicObject customFilter = filter.FilterParameter.CustomFilter;
+ if (customFilter != null)
+ {
+ //获取组织名称
+ string multiOrgnNameValues = this.GetMultiOrgnNameValues(customFilter["F_YKQC_OrgId_qtr"] as DynamicObject);
+ //添加标题
+ reportTitles.AddTitle("F_YKQC_OrgId_qtr", multiOrgnNameValues);
+ }
+ //返回标题
+ return reportTitles;
+ }
+ //获取组织名称
+ private string GetMultiOrgnNameValues(DynamicObject orgIdStrings)
+ {
+ //获取组织名称
+ List list = new List();
+ //初始化结果字符串
+ string result = string.Empty;
+ //如果组织ID字符串不为空
+ if (orgIdStrings != null)
+ {
+ //获取查询服务
+ IQueryService service = Kingdee.BOS.Contracts.ServiceFactory.GetService(base.Context);
+ //创建查询参数
+ QueryBuilderParemeter para = new QueryBuilderParemeter
+ {
+ FormId = "ORG_Organizations",
+ //查询组织名称
+ SelectItems = SelectorItemInfo.CreateItems("FNAME"),
+ //过滤条件,根据组织ID和区域ID
+ FilterClauseWihtKey = string.Format("FORGID IN ({0}) AND FLOCALEID = {1}", orgIdStrings["Id"].Long2Int(), base.Context.UserLocale.LCID)
+ };
+ //获取动态对象集合
+ DynamicObjectCollection dynamicObjects = service.GetDynamicObjectCollection(base.Context, para, null);
+ //遍历获取到的动态对象
+ foreach (DynamicObject current in dynamicObjects)
+ {
+ //将组织名称添加到列表
+ list.Add(current["FNAME"].ToString());
+ }
+ //如果列表不为空
+ if (list.Count > 0)
+ {
+ result = string.Join(",", list.ToArray());
+ }
+ }
+ //返回组织名称字符串
+ return result;
+ }
+ //设置单据列
+ public override ReportHeader GetReportHeaders(IRptParams filter)
+ {
+ //创建表头对象
+ ReportHeader header = new ReportHeader();
+ //获取上一年十二月
+ DateTime lastYearDecember = new DateTime(DateTime.Now.Year - 1, 12, 1);
+ string formattedDate = lastYearDecember.ToString("yyyy-MM");
+ //获取当前月份
+ DateTime thisYearDecember = DateTime.Now;
+ string thisDate = thisYearDecember.ToString("yyyy-MM");
+ header.AddChild("FHTXZ", new LocaleValue("合同性质", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar).ColIndex = 0;
+ header.AddChild("FJSLX", new LocaleValue("结算类型", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar).ColIndex = 1;
+
+
+ var header1 = header.AddChild(formattedDate + "情况", new LocaleValue(formattedDate + "情况"));
+ header1.AddChild("期初已出货欠款汇总", new LocaleValue("期初已出货欠款汇总", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header1.AddChild("期初已到期欠款", new LocaleValue("期初已到期欠款", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ var header2 = header.AddChild(thisDate + "情况", new LocaleValue(thisDate + "情况"));
+ header2.AddChild("本月已出货欠款汇总", new LocaleValue("本月已出货欠款汇总", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header2.AddChild("本月已到期欠款", new LocaleValue("本月已到期欠款", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ var header3 = header.AddChild("变化", new LocaleValue("变化"));
+ header3.AddChild("已出货欠款汇总", new LocaleValue("已出货欠款汇总", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header3.AddChild("已到期欠款", new LocaleValue("已到期欠款", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ foreach (var item in header.GetChilds())
+ {
+ item.Width = 200;
+ }
+ return header;
+ }
+ //创建临时表
+ public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
+ {
+ //获取过滤条件
+ string Filter = GetFilterWhere(filter);
+
+ string sql = string.Format(@"/*dialect*/
+DECLARE @ThisDate VARCHAR(1000);
+DECLARE @ResultDate VARCHAR(1000);
+-- 取上一年的年底日期
+SET @ResultDate = FORMAT(DATEADD(DAY, -1, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)),'yyyy-MM-dd');
+--取当前日期
+SET @ThisDate = FORMAT(GETDATE(),'yyyy-MM-dd')
+
+SELECT W.*,x.FNAME into #RecCond FROM T_SAL_ORDERPLAN W
+INNER JOIN T_BD_RecCondition_L X on X.FID = W.F_RecConditionId
+
+SELECT D.FID,sum(b.fqty) AS 'FQTY',sum(E.fallamount) AS 'FAMOUNT'
+ INTO #SAL
+ FROM T_SAL_DELIVERYNOTICE A
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY B ON A.FID = B.FID
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY_F E ON E.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK C ON C.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_ORDERENTRY D ON D.FID = C.FSBILLID AND D.FENTRYID = C.FSID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY D.FID
+
+
+ SELECT D.FID,sum(b.fqty) AS 'FQTY',sum(E.fallamount) AS 'FAMOUNT'
+ INTO #RETURN
+ FROM T_SAL_RETURNNOTICE A
+ INNER JOIN T_SAL_RETURNNOTICEENTRY B ON A.FID = B.FID
+ INNER JOIN T_SAL_RETURNNOTICEENTRY_F E ON E.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_RETURNNOTICEENTRY_LK C ON C.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_ORDERENTRY D ON D.FID = C.FSBILLID AND D.FENTRYID = C.FSID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY D.FID
+
+
+ SELECT F.FID,sum(b.FREALQTY) AS 'FQTY',sum(G.FALLAMOUNT_LC) AS 'FAMOUNT'
+ INTO #OUTSTOCK
+ FROM T_SAL_OUTSTOCK A
+ INNER JOIN T_SAL_OUTSTOCKENTRY B ON A.FID = B.FID
+ INNER JOIN T_SAL_OUTSTOCKENTRY_F G ON G.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_OUTSTOCKENTRY_LK C ON C.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY D ON D.FID = C.FSBILLID AND D.FENTRYID = C.FSID
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK E ON E.FENTRYID = D.FENTRYID
+ INNER JOIN T_SAL_ORDERENTRY F ON F.FID = E.FSBILLID AND F.FENTRYID = E.FSID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY F.FID
+
+ SELECT F.FID,sum(b.FREALQTY) AS 'FQTY',sum(G.FALLAMOUNT_LC) AS 'FAMOUNT'
+ INTO #RETURNSTOCK
+ FROM T_SAL_RETURNSTOCK A
+ INNER JOIN T_SAL_RETURNSTOCKENTRY B ON A.FID = B.FID
+ INNER JOIN T_SAL_RETURNSTOCKENTRY_F G ON G.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_RETURNSTOCKENTRY_LK C ON C.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_RETURNNOTICEENTRY D ON D.FID = C.FSBILLID AND D.FENTRYID = C.FSID
+ INNER JOIN T_SAL_RETURNNOTICEENTRY_LK E ON E.FENTRYID = D.FENTRYID
+ INNER JOIN T_SAL_ORDERENTRY F ON F.FID = E.FSBILLID AND F.FENTRYID = E.FSID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY F.FID
+
+ SELECT b.FORDERENTRYID as 'FENTRYID',sum(b.FPriceQty) AS 'FQTY',sum(b.FALLAMOUNT) AS 'FAMOUNT'
+ INTO #RECE
+ FROM t_AR_receivable A
+ INNER JOIN t_AR_receivableENTRY B ON A.FID = B.FID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY b.FORDERENTRYID
+
+
+SELECT
+S.FCAPTION AS '合同性质',
+CASE WHEN S.FCAPTION = '仪表' AND a.F_XMYSSJ <> '' then '项目已做完,回部分款'
+ WHEN S.FCAPTION = '仪表' AND a.F_XMYSSJ = '' then '项目未完工,欠款合同'
+ WHEN S.FCAPTION <> '仪表' AND y.FID is not null then '款到发货'
+ WHEN S.FCAPTION <> '仪表' AND z.FID is not null then '协议付款'
+ ELSE '预收款+到货/调试款+质保金' END AS '结算类型',
+0 AS '期初已出货欠款汇总',
+CASE WHEN ROW_NUMBER() OVER (PARTITION BY A.Fid,n.FSaleId,X.FNAME ORDER BY n.FSaleId,X.FNAME) != 1 THEN null
+ WHEN X.FNAME in ('预付款(仪表)','预付款(系统)') THEN null
+ WHEN X.FNAME in ('货到收款(仪表)','货到收款(系统)') AND DATEADD(day, W.F_DAY, CK.F_SFSIGNATURETIME) < @ResultDate AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('货到收款(仪表)','货到收款(系统)') AND DATEADD(day, W.F_DAY, CK.F_SFSIGNATURETIME) < @ResultDate THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ WHEN X.FNAME in ('货到票到收款(系统)','货到票到收款(仪表)') AND DATEADD(day, W.F_DAY,FP.F_DATE) < @ResultDate AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('货到票到收款(系统)','货到票到收款(仪表)') AND DATEADD(day, W.F_DAY,FP.F_DATE) < @ResultDate THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ WHEN X.FNAME in ('款到发货(仪表)','款到发货(系统)') AND DATEADD(day, W.F_DAY,Q.发货日期) < @ResultDate AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('款到发货(仪表)','款到发货(系统)') AND DATEADD(day, W.F_DAY,Q.发货日期) < @ResultDate THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ ELSE null--款到发货(仪表)
+ END AS '期初已到期欠款',
+0 AS '本月已出货欠款汇总',
+CASE WHEN ROW_NUMBER() OVER (PARTITION BY A.Fid,n.FSaleId,X.FNAME ORDER BY n.FSaleId,X.FNAME) != 1 THEN null
+ WHEN X.FNAME in ('预付款(仪表)','预付款(系统)') THEN null
+ WHEN X.FNAME in ('货到收款(仪表)','货到收款(系统)') AND DATEADD(day, W.F_DAY, CK.F_SFSIGNATURETIME) < @ThisDate AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('货到收款(仪表)','货到收款(系统)') AND DATEADD(day, W.F_DAY, CK.F_SFSIGNATURETIME) < @ThisDate THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ WHEN X.FNAME in ('货到票到收款(系统)','货到票到收款(仪表)') AND DATEADD(day, W.F_DAY,FP.F_DATE) < @ThisDate AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('货到票到收款(系统)','货到票到收款(仪表)') AND DATEADD(day, W.F_DAY,FP.F_DATE) < @ThisDate THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ WHEN X.FNAME in ('款到发货(仪表)','款到发货(系统)') AND DATEADD(day, W.F_DAY,Q.发货日期) < @ThisDate AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('款到发货(仪表)','款到发货(系统)') AND DATEADD(day, W.F_DAY,Q.发货日期) < @ThisDate THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ ELSE null--款到发货(仪表)
+ END AS '本月已到期欠款'
+INTO #TEMP1
+FROM T_SAL_ORDER A --销售订单表头
+ LEFT JOIN
+ (Select a2.FENTRYID,a2.FDATAVALUE From T_BAS_ASSISTANTDATAENTRY a1 JOIN T_BAS_ASSISTANTDATAENTRY_L a2 on a1.FENTRYID = a2.FENTRYID
+ Where a1.FID = '670cc977263353') B on A.F_ORDERCATEGORY = B.FENTRYID
+ --INNER JOIN T_SAL_orderentry b on a.FID = B.FID --销售订单表体
+ INNER JOIN T_BD_CUSTOMER_L C ON C.FCUSTID= A.FCUSTID AND C.FLOCALEID= 2052 --客户附属表
+ INNER JOIN T_SAL_ORDERFIN F ON F.FID = A.FID
+ INNER JOIN T_BD_CUSTOMER I ON I .FCUSTID = A.FCUSTID
+ INNER JOIN T_SAL_ORDERFIN J ON J.FID= A.FID
+ LEFT JOIN T_BAS_PREBDONE_L G ON G.FID = A.F_projectname AND G.FLocaleID =2052
+ LEFT JOIN T_BAS_PREBDTHREE H ON H.FID = A.F_BON
+ lEFT JOIN V_ASSISTANTDATA K ON K.FENTRYID = I.FCompanyNature
+ lEFT JOIN V_BD_SALESMAN_L L ON L.fid = A.FSALERID
+ left JOIN T_PerformanceSharing M ON M.FSOURCEBILLNO = A.FBILLNO
+ left JOIN T_PerformanceSharingEntry N ON N.FID=M.FID
+ LEFT JOIN V_BD_SALESMAN_L O ON O.fid= N.FSALEID
+ LEFT JOIN V_ASSISTANTDATA P ON P.FENTRYID = I.F_CREDITCLASSIFICATION
+ LEFT JOIN T_SAL_OUTSTOCK CK on CK.F_CONTRACTNUMBER = A.F_CONTRACTNUMBER --销售出库单
+ LEFT JOIN T_IV_SALESIC FP on FP.F_PAPERNUMBER = A.F_CONTRACTNUMBER --销售增值税专用发票
+ LEFT JOIN
+ (
+ SELECT F_Papercontract,MAX(CONVERT(NVARCHAR(10), A.FDATE,23)) AS '发货日期',SUM(B.FBILLALLAMOUNT_LC) AS '累计发货金额' FROM T_SAL_DELIVERYNOTICE A
+ INNER JOIN T_SAL_DELIVERYNOTICEFIN B ON A.FID =B.FID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY A.F_Papercontract
+ ) Q ON Q.F_PAPERCONTRACT = A.F_contractnumber --获取发货通知单最大的发货日期
+ LEFT JOIN T_META_FORMENUMITEM R ON r.FVALUE = A.F_OrderType AND R.FID = 'bc2c1d77-0f4b-41d2-b61b-e29554c570d4'
+ LEFT JOIN T_META_FORMENUMITEM_L S ON S.FENUMID = R.FENUMID AND S.FLOCALEID = 2052
+ LEFT JOIN
+ (
+ SELECT F_Paper ,CONVERT(NVARCHAR(10), MAX(FDATE),23) AS '开票日期',CONVERT(NVARCHAR(10),
+ MAX(FDATE),23) AS '没有红色的开票日期'
+ FROM t_AR_receivable A
+ INNER JOIN T_AR_RECEIVABLEENTRY B ON A.FID = B.FID
+ WHERE A.FDOCUMENTSTATUS = 'C' AND A.FCancelStatus = 'A'
+ GROUP BY F_Paper
+ ) T ON T.F_PAPER = A.F_contractnumber
+ LEFT JOIN V_ASSISTANTDATA U ON U.FENTRYID = A.F_Ordercategory
+ LEFT JOIN
+ (
+ SELECT F_contractnumber,MAX(CONVERT(NVARCHAR(10), A.FDATE,23)) AS '退货日期',SUM(B.FBILLALLAMOUNT_LC) AS '累计退货金额' FROM T_SAL_RETURNSTOCK A
+ INNER JOIN T_SAL_RETURNSTOCKFIN B ON A.FID =B.FID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY A.F_contractnumber
+ ) V ON V.F_contractnumber = A.F_contractnumber --获取销售退货单
+ LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo AC ON AC.名称=L.FNAME
+ LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACC ON ACC.名称=O.FNAME
+ --LEFT JOIN temp20241206 AC ON AC.名称=L.FNAME
+ --LEFT JOIN temp20241206 ACC ON ACC.名称=O.FNAME
+ LEFT JOIN T_SAL_ORDERPLAN W ON W.FID= A.FID
+ LEFT JOIN T_BD_RecCondition_L X on X.FID = W.F_RecConditionId
+ LEFT JOIN #RecCond Y ON Y.FID =A.FID AND Y.FNAME LIKE '%质保金%'
+ LEFT JOIN (select distinct fid from #RecCond Z where Z.FNAME LIKE '%款到%') z on z.fid =a.fid
+ LEFT JOIN (select distinct fid from #RecCond AA where AA.FNAME LIKE '%协议%') AA on AA.fid =a.fid
+ LEFT JOIN (SELECT distinct F_Papercontract FROM T_SAL_DELIVERYNOTICE WHERE F_SFYFH ='是') AB ON AB.F_PAPERCONTRACT = A.F_contractnumber
+ LEFT JOIN
+ (
+ SELECT
+ F_Papercontract,CAST( sum(b.FALLAMOUNT) AS REAL) AS '发票总金额',
+ CAST (sum(CASE WHEN F_Papercontract = 'Y' THEN b.FALLAMOUNT ELSE 0 END ) AS REAL) AS '发票总金额(普票存财务)'
+ FROM t_AR_receivable A
+ INNER JOIN T_AR_RECEIVABLEFIN B ON A.FID = B.FID
+ GROUP BY F_Papercontract
+ ) AD ON AD.F_PAPERCONTRACT = A.F_contractnumber
+ LEFT JOIN
+ (
+ SELECT a.F_Papercontract,
+ avg(d.FCURWRITTENOFFAMOUNT) as '累计收款'
+
+ FROM t_AR_receivable A
+ INNER JOIN T_AR_RECEIVABLEENTRY E ON E.FID =A.FID
+ INNER JOIN T_AR_RECMacthLogENTRY B ON A.FBILLNO = B.FSRCBILLNO
+ INNER JOIN T_AR_RECMacthLog C ON C.FID = B.FID
+ INNER JOIN T_AR_RECMacthLogENTRY D ON D.FID = B.FID
+ AND D.FSOURCETYPE = '36cf265bd8c3452194ed9c83ec5e73d2'
+ WHERE
+ 1=1
+ group by a.F_Papercontract
+ ) AE ON AE.F_Papercontract = A.F_contractnumber
+ WHERE 1=1 AND A.FDOCUMENTSTATUS = 'C' AND B.FDATAVALUE != 'Z'
+ AND ((F.FBILLALLAMOUNT_LC * isnull(n.FSHARERATE,100) /100)!=0)
+{1}
+ ORDER BY A.F_contractnumber
+
+
+
+ SELECT
+ 合同性质 AS 合同性质2,
+ 结算类型 AS 结算类型2,
+ CONVERT(DECIMAL(10, 2),SUM(ISNULL(期初已出货欠款汇总, 0)),2) AS '期初已出货欠款汇总2',
+ CONVERT(DECIMAL(10, 2),SUM(ISNULL(期初已到期欠款, 0)),2) AS '期初已到期欠款2',
+ CONVERT(DECIMAL(10, 2),SUM(ISNULL(本月已出货欠款汇总, 0)),2) AS '本月已出货欠款汇总2',
+ CONVERT(DECIMAL(10, 2),SUM(ISNULL(本月已到期欠款, 0)),2) AS '本月已到期欠款2',
+ 0 AS '已出货欠款汇总',
+ 0 AS '已到期欠款'
+ INTO #TEMP2
+FROM
+ #TEMP1
+GROUP BY
+ 结算类型,合同性质
+ORDER BY
+ 结算类型,合同性质 DESC;
+
+ALTER TABLE #TEMP2 ALTER COLUMN 已出货欠款汇总 NUMERIC(10, 2);
+
+ALTER TABLE #TEMP2 ALTER COLUMN 已到期欠款 NUMERIC(10, 2);
+
+update #TEMP2 SET 已出货欠款汇总 = CONVERT(DECIMAL(10, 2),(本月已出货欠款汇总2 - 期初已出货欠款汇总2),2)
+
+update #TEMP2 SET 已到期欠款 = CONVERT(DECIMAL(10, 2),(本月已到期欠款2 - 期初已到期欠款2),2)
+
+SELECT
+ROW_NUMBER() OVER (ORDER BY B.合同性质2 DESC) AS FID,
+ROW_NUMBER() OVER (ORDER BY B.结算类型2 DESC) AS FIDENTITYID,
+B.合同性质2 AS 'FHTXZ',
+B.结算类型2 AS 'FJSLX',
+CASE
+WHEN B.期初已出货欠款汇总2 = 0 THEN null
+ELSE B.期初已出货欠款汇总2 END AS '期初已出货欠款汇总',
+CASE
+WHEN B.期初已到期欠款2 = 0 THEN null
+ELSE B.期初已到期欠款2 END AS '期初已到期欠款',
+CASE
+WHEN B.本月已出货欠款汇总2 = 0 THEN null
+ELSE B.本月已出货欠款汇总2 END AS '本月已出货欠款汇总',
+CASE
+WHEN B.本月已到期欠款2 = 0 THEN null
+ELSE B.本月已到期欠款2 END AS '本月已到期欠款',
+CASE
+WHEN B.已出货欠款汇总 = 0 THEN null
+ELSE B.已出货欠款汇总 END AS '已出货欠款汇总',
+CASE
+WHEN B.已到期欠款 = 0 THEN null
+ELSE B.已到期欠款 END AS '已到期欠款'
+INTO {0} FROM #TEMP1 A INNER JOIN #TEMP2 B ON A.结算类型 = B.结算类型2
+GROUP BY B.合同性质2 ,B.结算类型2,B.期初已出货欠款汇总2,B.期初已到期欠款2,B.本月已出货欠款汇总2,B.本月已到期欠款2,B.已出货欠款汇总,B.已到期欠款
+ORDER BY FID
+", tableName, Filter);
+ //执行SQL并动态创建报表
+ DBUtils.ExecuteDynamicObject(this.Context, sql);
+
+ }
+ //获取过滤条件
+ private string GetFilterWhere(IRptParams fileter)
+ {
+ //获取自定义过滤条件
+ DynamicObject customFilter = fileter.FilterParameter.CustomFilter;
+ //创建字符串构建器
+ StringBuilder strwhere = new StringBuilder();
+ var orgFid = customFilter["F_YKQC_OrgId_qtr"] as DynamicObject;
+ if (orgFid != null)
+ {
+ string org = string.IsNullOrWhiteSpace(customFilter["F_YKQC_OrgId_qtr"].ToString()) ? "" :
+ string.Format("AND A.FSaleOrgId IN ({0})", orgFid["Id"].Long2Int());
+ //添加组织过滤条件
+ strwhere.AppendLine(org);
+ }
+ return strwhere.ToString();
+ }
+ //添加合计列
+ public override List GetSummaryColumnInfo(IRptParams filter)
+ {
+ var result = base.GetSummaryColumnInfo(filter);
+ result.Add(new SummaryField("期初已出货欠款汇总", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("期初已到期欠款", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("本月已出货欠款汇总", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("本月已到期欠款", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("已出货欠款汇总", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("已到期欠款", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
+ return result;
+ }
+ }
+}
diff --git a/YingShouBaoBiao/YingShouQDNF.cs b/YingShouBaoBiao/YingShouQDNF.cs
new file mode 100644
index 0000000..5382020
--- /dev/null
+++ b/YingShouBaoBiao/YingShouQDNF.cs
@@ -0,0 +1,369 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Kingdee.BOS;
+using Kingdee.BOS.App.Data;
+using Kingdee.BOS.Contracts;
+using Kingdee.BOS.Contracts.Report;
+using Kingdee.BOS.Core.Metadata;
+using Kingdee.BOS.Core.Report;
+using Kingdee.BOS.Core.SqlBuilder;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.Util;
+
+namespace GZ_LTHReportForms.YingShouBaoBiao
+{
+ [Description("应收情况概况表按(签订年份)区分"), HotUpdate]
+ public class YingShouQDNF : SysReportBaseService
+ {
+ //对报表进行初始化
+ public override void Initialize()
+ {
+ base.Initialize();
+ //设置报表类型为普通类型
+ this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;
+ //设置是否通过插件创建临时表
+ this.IsCreateTempTableByPlugin = true;
+ //设置是否分组汇总
+ this.ReportProperty.IsGroupSummary = true;
+ }
+ //获取过滤条件信息(构造单据信息)
+ public override ReportTitles GetReportTitles(IRptParams filter)
+ {
+ //创建标题对象
+ ReportTitles reportTitles = new ReportTitles();
+ //获取自定义过滤条件
+ DynamicObject customFilter = filter.FilterParameter.CustomFilter;
+ if (customFilter != null)
+ {
+ //获取组织名称
+ string multiOrgnNameValues = this.GetMultiOrgnNameValues(customFilter["F_YKQC_OrgId_qtr"] as DynamicObject);
+ //添加标题
+ reportTitles.AddTitle("F_YKQC_OrgId_qtr", multiOrgnNameValues);
+ }
+ //返回标题
+ return reportTitles;
+ }
+ //获取组织名称
+ private string GetMultiOrgnNameValues(DynamicObject orgIdStrings)
+ {
+ //获取组织名称
+ List list = new List();
+ //初始化结果字符串
+ string result = string.Empty;
+ //如果组织ID字符串不为空
+ if (orgIdStrings != null)
+ {
+ //获取查询服务
+ IQueryService service = Kingdee.BOS.Contracts.ServiceFactory.GetService(base.Context);
+ //创建查询参数
+ QueryBuilderParemeter para = new QueryBuilderParemeter
+ {
+ FormId = "ORG_Organizations",
+ //查询组织名称
+ SelectItems = SelectorItemInfo.CreateItems("FNAME"),
+ //过滤条件,根据组织ID和区域ID
+ FilterClauseWihtKey = string.Format("FORGID IN ({0}) AND FLOCALEID = {1}", orgIdStrings["Id"].Long2Int(), base.Context.UserLocale.LCID)
+ };
+ //获取动态对象集合
+ DynamicObjectCollection dynamicObjects = service.GetDynamicObjectCollection(base.Context, para, null);
+ //遍历获取到的动态对象
+ foreach (DynamicObject current in dynamicObjects)
+ {
+ //将组织名称添加到列表
+ list.Add(current["FNAME"].ToString());
+ }
+ //如果列表不为空
+ if (list.Count > 0)
+ {
+ result = string.Join(",", list.ToArray());
+ }
+ }
+ //返回组织名称字符串
+ return result;
+ }
+ //设置单据列
+ public override ReportHeader GetReportHeaders(IRptParams filter)
+ {
+ //创建表头对象
+ ReportHeader header = new ReportHeader();
+ header.AddChild("签订年份", new LocaleValue("签订年份", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("年底到期应收款额", new LocaleValue("期初到期应收款额", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("到期应收款额", new LocaleValue("本月到期应收款额", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("占比", new LocaleValue("占比", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("变化", new LocaleValue("变化", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ foreach (var item in header.GetChilds())
+ {
+ item.Width = 200;
+ }
+ return header;
+ }
+ //创建临时表
+ public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
+ {
+ //获取过滤条件
+ string Filter = GetFilterWhere(filter);
+ /*
+ 取数SQL
+ SQL查询字符串,提取所需数据并将结果存入临时表
+ */
+ string sql = string.Format(@"/*dialect*/
+DECLARE @ResultDate VARCHAR(1000);
+DECLARE @ThisDate VARCHAR(1000);
+DECLARE @SUMDQ DECIMAL(10, 2);
+
+
+-- 取上一年的年底日期
+SET @ResultDate = FORMAT(DATEADD(DAY, -1, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)),'yyyy-MM-dd');
+--取当前日期
+SET @ThisDate = FORMAT(GETDATE(),'yyyy-MM-dd')
+
+SELECT W.*,x.FNAME into #RecCond FROM T_SAL_ORDERPLAN W
+INNER JOIN T_BD_RecCondition_L X on X.FID = W.F_RecConditionId
+
+SELECT D.FID,sum(b.fqty) AS 'FQTY',sum(E.fallamount) AS 'FAMOUNT'
+ INTO #SAL
+ FROM T_SAL_DELIVERYNOTICE A
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY B ON A.FID = B.FID
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY_F E ON E.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK C ON C.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_ORDERENTRY D ON D.FID = C.FSBILLID AND D.FENTRYID = C.FSID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY D.FID
+
+
+ SELECT D.FID,sum(b.fqty) AS 'FQTY',sum(E.fallamount) AS 'FAMOUNT'
+ INTO #RETURN
+ FROM T_SAL_RETURNNOTICE A
+ INNER JOIN T_SAL_RETURNNOTICEENTRY B ON A.FID = B.FID
+ INNER JOIN T_SAL_RETURNNOTICEENTRY_F E ON E.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_RETURNNOTICEENTRY_LK C ON C.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_ORDERENTRY D ON D.FID = C.FSBILLID AND D.FENTRYID = C.FSID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY D.FID
+
+
+ SELECT F.FID,sum(b.FREALQTY) AS 'FQTY',sum(G.FALLAMOUNT_LC) AS 'FAMOUNT'
+ INTO #OUTSTOCK
+ FROM T_SAL_OUTSTOCK A
+ INNER JOIN T_SAL_OUTSTOCKENTRY B ON A.FID = B.FID
+ INNER JOIN T_SAL_OUTSTOCKENTRY_F G ON G.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_OUTSTOCKENTRY_LK C ON C.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY D ON D.FID = C.FSBILLID AND D.FENTRYID = C.FSID
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK E ON E.FENTRYID = D.FENTRYID
+ INNER JOIN T_SAL_ORDERENTRY F ON F.FID = E.FSBILLID AND F.FENTRYID = E.FSID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY F.FID
+
+ SELECT F.FID,sum(b.FREALQTY) AS 'FQTY',sum(G.FALLAMOUNT_LC) AS 'FAMOUNT'
+ INTO #RETURNSTOCK
+ FROM T_SAL_RETURNSTOCK A
+ INNER JOIN T_SAL_RETURNSTOCKENTRY B ON A.FID = B.FID
+ INNER JOIN T_SAL_RETURNSTOCKENTRY_F G ON G.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_RETURNSTOCKENTRY_LK C ON C.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_RETURNNOTICEENTRY D ON D.FID = C.FSBILLID AND D.FENTRYID = C.FSID
+ INNER JOIN T_SAL_RETURNNOTICEENTRY_LK E ON E.FENTRYID = D.FENTRYID
+ INNER JOIN T_SAL_ORDERENTRY F ON F.FID = E.FSBILLID AND F.FENTRYID = E.FSID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY F.FID
+
+ SELECT b.FORDERENTRYID as 'FENTRYID',sum(b.FPriceQty) AS 'FQTY',sum(b.FALLAMOUNT) AS 'FAMOUNT'
+ INTO #RECE
+ FROM t_AR_receivable A
+ INNER JOIN t_AR_receivableENTRY B ON A.FID = B.FID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY b.FORDERENTRYID
+
+SELECT
+ROW_NUMBER() OVER (ORDER BY A.FDATE DESC) AS FID,
+ROW_NUMBER() OVER (ORDER BY A.FDATE DESC) AS FIDENTITYID,
+convert( nvarchar(10), year(A.FDATE)) AS '签订年份',
+CASE WHEN ROW_NUMBER() OVER (PARTITION BY A.Fid,n.FSaleId,X.FNAME ORDER BY n.FSaleId,X.FNAME) != 1 THEN null
+ WHEN X.FNAME in ('预付款(仪表)','预付款(系统)') THEN null
+ WHEN X.FNAME in ('货到收款(仪表)','货到收款(系统)') AND DATEADD(day, W.F_DAY, CK.F_SFSIGNATURETIME) < @ResultDate AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('货到收款(仪表)','货到收款(系统)') AND DATEADD(day, W.F_DAY, CK.F_SFSIGNATURETIME) < @ResultDate THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ WHEN X.FNAME in ('货到票到收款(系统)','货到票到收款(仪表)') AND DATEADD(day, W.F_DAY,FP.F_DATE) < @ResultDate AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('货到票到收款(系统)','货到票到收款(仪表)') AND DATEADD(day, W.F_DAY,FP.F_DATE) < @ResultDate THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ WHEN X.FNAME in ('款到发货(仪表)','款到发货(系统)') AND DATEADD(day, W.F_DAY,Q.发货日期) < @ResultDate AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('款到发货(仪表)','款到发货(系统)') AND DATEADD(day, W.F_DAY,Q.发货日期) < @ResultDate THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ ELSE null--款到发货(仪表)
+ END AS '年底到期应收款额',
+CASE WHEN ROW_NUMBER() OVER (PARTITION BY A.Fid,n.FSaleId,X.FNAME ORDER BY n.FSaleId,X.FNAME) != 1 THEN null
+ WHEN X.FNAME in ('预付款(仪表)','预付款(系统)') THEN null
+ WHEN X.FNAME in ('货到收款(仪表)','货到收款(系统)') AND DATEADD(day, W.F_DAY, CK.F_SFSIGNATURETIME) < @ThisDate AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('货到收款(仪表)','货到收款(系统)') AND DATEADD(day, W.F_DAY, CK.F_SFSIGNATURETIME) < @ThisDate THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ WHEN X.FNAME in ('货到票到收款(系统)','货到票到收款(仪表)') AND DATEADD(day, W.F_DAY,FP.F_DATE) < @ThisDate AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('货到票到收款(系统)','货到票到收款(仪表)') AND DATEADD(day, W.F_DAY,FP.F_DATE) < @ThisDate THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ WHEN X.FNAME in ('款到发货(仪表)','款到发货(系统)') AND DATEADD(day, W.F_DAY,Q.发货日期) < @ThisDate AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('款到发货(仪表)','款到发货(系统)') AND DATEADD(day, W.F_DAY,Q.发货日期) < @ThisDate THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ ELSE null--款到发货(仪表)
+ END AS '到期应收款额'
+INTO #TEMP1
+ FROM T_SAL_ORDER A --销售订单表头
+ LEFT JOIN
+ (Select a2.FENTRYID,a2.FDATAVALUE From T_BAS_ASSISTANTDATAENTRY a1 JOIN T_BAS_ASSISTANTDATAENTRY_L a2 on a1.FENTRYID = a2.FENTRYID
+ Where a1.FID = '670cc977263353') B on A.F_ORDERCATEGORY = B.FENTRYID
+ --INNER JOIN T_SAL_orderentry b on a.FID = B.FID --销售订单表体
+ INNER JOIN T_BD_CUSTOMER_L C ON C.FCUSTID= A.FCUSTID AND C.FLOCALEID= 2052 --客户附属表
+ INNER JOIN T_SAL_ORDERFIN F ON F.FID = A.FID
+ INNER JOIN T_BD_CUSTOMER I ON I .FCUSTID = A.FCUSTID
+ INNER JOIN T_SAL_ORDERFIN J ON J.FID= A.FID
+ LEFT JOIN T_BAS_PREBDONE_L G ON G.FID = A.F_projectname AND G.FLocaleID =2052
+ LEFT JOIN T_BAS_PREBDTHREE H ON H.FID = A.F_BON
+ lEFT JOIN V_ASSISTANTDATA K ON K.FENTRYID = I.FCompanyNature
+ lEFT JOIN V_BD_SALESMAN_L L ON L.fid = A.FSALERID
+ left JOIN T_PerformanceSharing M ON M.FSOURCEBILLNO = A.FBILLNO
+ left JOIN T_PerformanceSharingEntry N ON N.FID=M.FID
+ LEFT JOIN V_BD_SALESMAN_L O ON O.fid= N.FSALEID
+ LEFT JOIN V_ASSISTANTDATA P ON P.FENTRYID = I.F_CREDITCLASSIFICATION
+ LEFT JOIN T_SAL_OUTSTOCK CK on CK.F_CONTRACTNUMBER = A.F_CONTRACTNUMBER --销售出库单
+ LEFT JOIN T_IV_SALESIC FP on FP.F_PAPERNUMBER = A.F_CONTRACTNUMBER --销售增值税专用发票
+ LEFT JOIN
+ (
+ SELECT F_Papercontract,MAX(CONVERT(NVARCHAR(10), A.FDATE,23)) AS '发货日期',SUM(B.FBILLALLAMOUNT_LC) AS '累计发货金额' FROM T_SAL_DELIVERYNOTICE A
+ INNER JOIN T_SAL_DELIVERYNOTICEFIN B ON A.FID =B.FID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY A.F_Papercontract
+ ) Q ON Q.F_PAPERCONTRACT = A.F_contractnumber --获取发货通知单最大的发货日期
+ LEFT JOIN T_META_FORMENUMITEM R ON r.FVALUE = A.F_OrderType AND R.FID = 'bc2c1d77-0f4b-41d2-b61b-e29554c570d4'
+ LEFT JOIN T_META_FORMENUMITEM_L S ON S.FENUMID = R.FENUMID AND S.FLOCALEID = 2052
+ LEFT JOIN
+ (
+ SELECT F_Paper ,CONVERT(NVARCHAR(10), MAX(FDATE),23) AS '开票日期',CONVERT(NVARCHAR(10),
+ MAX(FDATE),23) AS '没有红色的开票日期'
+ FROM t_AR_receivable A
+ INNER JOIN T_AR_RECEIVABLEENTRY B ON A.FID = B.FID
+ WHERE A.FDOCUMENTSTATUS = 'C' AND A.FCancelStatus = 'A'
+ GROUP BY F_Paper
+ ) T ON T.F_PAPER = A.F_contractnumber
+ LEFT JOIN V_ASSISTANTDATA U ON U.FENTRYID = A.F_Ordercategory
+ LEFT JOIN
+ (
+ SELECT F_contractnumber,MAX(CONVERT(NVARCHAR(10), A.FDATE,23)) AS '退货日期',SUM(B.FBILLALLAMOUNT_LC) AS '累计退货金额' FROM T_SAL_RETURNSTOCK A
+ INNER JOIN T_SAL_RETURNSTOCKFIN B ON A.FID =B.FID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY A.F_contractnumber
+ ) V ON V.F_contractnumber = A.F_contractnumber --获取销售退货单
+ LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo AC ON AC.名称=L.FNAME
+ LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACC ON ACC.名称=O.FNAME
+ --LEFT JOIN temp20241206 AC ON AC.名称=L.FNAME
+ --LEFT JOIN temp20241206 ACC ON ACC.名称=O.FNAME
+ LEFT JOIN T_SAL_ORDERPLAN W ON W.FID= A.FID
+ LEFT JOIN T_BD_RecCondition_L X on X.FID = W.F_RecConditionId
+ LEFT JOIN #RecCond Y ON Y.FID =A.FID AND Y.FNAME LIKE '%质保金%'
+ LEFT JOIN (select distinct fid from #RecCond Z where Z.FNAME LIKE '%款到%') z on z.fid =a.fid
+ LEFT JOIN (select distinct fid from #RecCond AA where AA.FNAME LIKE '%协议%') AA on AA.fid =a.fid
+ LEFT JOIN (SELECT distinct F_Papercontract FROM T_SAL_DELIVERYNOTICE WHERE F_SFYFH ='是') AB ON AB.F_PAPERCONTRACT = A.F_contractnumber
+ LEFT JOIN
+ (
+ SELECT
+ F_Papercontract,CAST( sum(b.FALLAMOUNT) AS REAL) AS '发票总金额',
+ CAST (sum(CASE WHEN F_Papercontract = 'Y' THEN b.FALLAMOUNT ELSE 0 END ) AS REAL) AS '发票总金额(普票存财务)'
+ FROM t_AR_receivable A
+ INNER JOIN T_AR_RECEIVABLEFIN B ON A.FID = B.FID
+ GROUP BY F_Papercontract
+ ) AD ON AD.F_PAPERCONTRACT = A.F_contractnumber
+ LEFT JOIN
+ (
+ SELECT a.F_Papercontract,
+ avg(d.FCURWRITTENOFFAMOUNT) as '累计收款'
+
+ FROM t_AR_receivable A
+ INNER JOIN T_AR_RECEIVABLEENTRY E ON E.FID =A.FID
+ INNER JOIN T_AR_RECMacthLogENTRY B ON A.FBILLNO = B.FSRCBILLNO
+ INNER JOIN T_AR_RECMacthLog C ON C.FID = B.FID
+ INNER JOIN T_AR_RECMacthLogENTRY D ON D.FID = B.FID
+ AND D.FSOURCETYPE = '36cf265bd8c3452194ed9c83ec5e73d2'
+ WHERE
+ 1=1
+ group by a.F_Papercontract
+ ) AE ON AE.F_Papercontract = A.F_contractnumber
+ WHERE 1=1 AND A.FDOCUMENTSTATUS = 'C' AND B.FDATAVALUE != 'Z'
+ AND ((F.FBILLALLAMOUNT_LC * isnull(n.FSHARERATE,100) /100)!=0)
+{1}
+ ORDER BY A.F_contractnumber
+
+SELECT @SUMDQ = SUM(到期应收款额) FROM #TEMP1
+
+
+SELECT
+ 签订年份 AS 签订年份1,
+ CONVERT(DECIMAL(10, 2),SUM(ISNULL(年底到期应收款额, 0)),2) AS '总年底到期应收款额',
+ CONVERT(DECIMAL(10, 2),SUM(ISNULL(到期应收款额, 0)),2) AS '总到期应收款额',
+ '' AS '占比',
+ 0 AS '变化'
+ INTO #TEMP2
+FROM
+ #TEMP1
+GROUP BY
+ 签订年份
+ORDER BY
+ 签订年份 DESC;
+
+ ALTER TABLE #TEMP2
+ ALTER COLUMN 占比 NVARCHAR(100);
+
+UPDATE #TEMP2
+SET 占比 = CASE
+ WHEN 总到期应收款额 = 0 THEN '' -- 防止除以0
+ ELSE CONVERT(nvarchar(10), CONVERT(DECIMAL(10, 2), (总到期应收款额 / @SUMDQ) * 100),2) + '%'
+END;
+
+
+
+UPDATE #TEMP2
+SET 变化 = CONVERT(DECIMAL(10, 2),(总到期应收款额 - 总年底到期应收款额),2)
+
+SELECT
+ROW_NUMBER() OVER (ORDER BY B.签订年份1 DESC) AS FID,
+ROW_NUMBER() OVER (ORDER BY B.签订年份1 DESC) AS FIDENTITYID,
+B.签订年份1 AS '签订年份',
+CASE
+WHEN B.总年底到期应收款额 = 0 THEN null
+ELSE B.总年底到期应收款额 END AS '年底到期应收款额',
+CASE
+WHEN B.总到期应收款额 = 0 THEN null
+ELSE B.总到期应收款额 END AS '到期应收款额',
+B.占比 AS '占比',
+CASE
+WHEN B.变化 = 0 THEN null
+ELSE B.变化 END AS '变化'
+INTO {0} FROM #TEMP2 B
+WHERE B.签订年份1 >= YEAR(GETDATE()) - 5
+GROUP BY B.签订年份1,B.总年底到期应收款额,B.总到期应收款额,B.占比,B.变化
+
+", tableName, Filter);
+ //执行SQL并动态创建报表
+ DBUtils.ExecuteDynamicObject(this.Context, sql);
+ }
+
+ //获取过滤条件
+ private string GetFilterWhere(IRptParams fileter)
+ {
+ //获取自定义过滤条件
+ DynamicObject customFilter = fileter.FilterParameter.CustomFilter;
+ //创建字符串构建器
+ StringBuilder strwhere = new StringBuilder();
+ var orgFid = customFilter["F_YKQC_OrgId_qtr"] as DynamicObject;
+ if (orgFid != null)
+ {
+ string org = string.IsNullOrWhiteSpace(customFilter["F_YKQC_OrgId_qtr"].ToString()) ? "" :
+ string.Format("AND A.FSaleOrgId IN ({0})", orgFid["Id"].Long2Int());
+ //添加组织过滤条件
+ strwhere.AppendLine(org);
+ }
+ return strwhere.ToString();
+ }
+ //添加合计列
+ public override List GetSummaryColumnInfo(IRptParams filter)
+ {
+ var result = base.GetSummaryColumnInfo(filter);
+ result.Add(new SummaryField("年底到期应收款额", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("到期应收款额", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
+ return result;
+ }
+ }
+}
diff --git a/YingShouBaoBiao/YingShouQKBiao.cs b/YingShouBaoBiao/YingShouQKBiao.cs
new file mode 100644
index 0000000..84f8fe8
--- /dev/null
+++ b/YingShouBaoBiao/YingShouQKBiao.cs
@@ -0,0 +1,390 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Kingdee.BOS;
+using Kingdee.BOS.App.Data;
+using Kingdee.BOS.Contracts;
+using Kingdee.BOS.Contracts.Report;
+using Kingdee.BOS.Core.Metadata;
+using Kingdee.BOS.Core.Report;
+using Kingdee.BOS.Core.SqlBuilder;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.Util;
+
+namespace GZ_LTHReportForms.YingShouBiao
+{
+ [Description("应收款情况表(SBU)报表插件"), HotUpdate]
+ public class YingShouQKBiao : SysReportBaseService
+ {
+ //初始化方法
+ public override void Initialize()
+ {
+ base.Initialize();
+ //设置报表类型为普通类型
+ this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;
+ //设置是否通过插件创建临时表
+ this.IsCreateTempTableByPlugin = true;
+ //设置是否分组汇总
+ this.ReportProperty.IsGroupSummary = true;
+ }
+ //获取过滤条件信息(构造单据信息)
+ public override ReportTitles GetReportTitles(IRptParams filter)
+ {
+ //创建标题对象
+ ReportTitles reportTitles = new ReportTitles();
+ //获取自定义过滤条件
+ DynamicObject customFilter = filter.FilterParameter.CustomFilter;
+ if (customFilter != null)
+ {
+ //获取组织名称
+ string multiOrgnNameValues = this.GetMultiOrgnNameValues(customFilter["F_YKQC_OrgId_ca9"] as DynamicObject);
+ //获取起始日期
+ string startValue = (customFilter["F_YKQC_Date_apv"] == null) ? string.Empty :
+ Convert.ToDateTime(customFilter["F_YKQC_Date_apv"])
+ .ToString("yyyy-MM-dd");
+ //获取结束日期
+ string endValue = (customFilter["F_YKQC_Date_tzk"] == null) ? string.Empty :
+ Convert.ToDateTime(customFilter["F_YKQC_Date_tzk"])
+ .ToString("yyyy-MM-dd");
+ //添加标题信息
+ reportTitles.AddTitle("F_YKQC_OrgId_re5", multiOrgnNameValues);
+ reportTitles.AddTitle("F_YKQC_Date_qtr", startValue);
+ reportTitles.AddTitle("F_YKQC_Date_83g", endValue);
+ }
+ //返回标题
+ return reportTitles;
+ }
+ //获取组织名称
+ private string GetMultiOrgnNameValues(DynamicObject orgIdStrings)
+ {
+ //创建组织名称列表
+ List list = new List();
+ //初始化结果字符串
+ string result = string.Empty;
+ //如果组织ID字符串不为空
+ if (String.IsNullOrEmpty(orgIdStrings["Id"].ToString()))
+ {
+ //获取查询服务
+ IQueryService service = Kingdee.BOS.Contracts.ServiceFactory.GetService(base.Context);
+ //创建查询参数
+ QueryBuilderParemeter para = new QueryBuilderParemeter
+ {
+ //表单ID
+ FormId = "ORG_Organizations",
+ //查询组织名称
+ SelectItems = SelectorItemInfo.CreateItems("FNAME"),
+ //过滤条件,根据组织ID和区域ID
+ FilterClauseWihtKey = string.Format("FORGID IN ({0}) AND FLOCALEID = {1}", orgIdStrings["Id"].Long2Int(), base.Context.UserLocale.LCID)
+ };
+ //获取动态对象集合
+ DynamicObjectCollection dynamicObjects = service.GetDynamicObjectCollection(base.Context, para, null);
+ //遍历获取到的动态对象
+ foreach (DynamicObject current in dynamicObjects)
+ {
+ //将组织名称添加到列表
+ list.Add(current["FNAME"].ToString());
+ }
+ //如果列表不为空
+ if (list.Count > 0)
+ {
+ result = string.Join(",", list.ToArray());
+ }
+ }
+ //返回组织名称字符串
+ return result;
+ }
+ //设置单据列
+ public override ReportHeader GetReportHeaders(IRptParams filter)
+ {
+ //创建表头对象
+ ReportHeader header = new ReportHeader();
+ header.AddChild("SBU", new LocaleValue("SBU", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("本年度发货及验收额", new LocaleValue("本年度发货及验收额", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("已到期应收账款", new LocaleValue("已到期应收账款", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ //一级表头
+ var header1 = header.AddChild("应收账款账龄", new LocaleValue("应收账款账龄"));
+ header1.AddChild("1-6个月", new LocaleValue("1-6个月", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header1.AddChild("7-12个月", new LocaleValue("7-12个月", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header1.AddChild("13-18个月", new LocaleValue("13-18个月", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header1.AddChild("19个月以上", new LocaleValue("19个月以上", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("回款额(含子公司)", new LocaleValue("回款额(含子公司)", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("专责小组回款额", new LocaleValue("专责小组回款额", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("实际业绩额(含往年变更金额)", new LocaleValue("实际业绩额(含往年变更金额)", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("上年度应收额", new LocaleValue("上年度应收额", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("专责小组应收额", new LocaleValue("专责小组应收额", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("回款率", new LocaleValue("回款率", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("预发货到期应收账款", new LocaleValue("预发货到期应收账款", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("预发货回款额", new LocaleValue("预发货回款额", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("预发货回款率", new LocaleValue("预发货回款率", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("回款目标", new LocaleValue("回款目标", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("应收款上限", new LocaleValue("应收款上限", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("回款达标率", new LocaleValue("回款达标率", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ return header;
+ }
+
+ //创建临时表
+ public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
+ {
+ //获取过滤条件
+ string Filter = GetFilterWhere(filter);
+ /*
+ 取数SQL
+ SQL查询字符串,提取所需数据并将结果存入临时表
+ */
+ string sql = string.Format(@"/*dialect*/
+DECLARE @ThisDate VARCHAR(1000);
+DECLARE @ResultDate VARCHAR(1000);
+-- 取上一年的年底日期
+SET @ResultDate = FORMAT(DATEADD(DAY, -1, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)),'yyyy-MM-dd');
+--取当前日期
+SET @ThisDate = FORMAT(GETDATE(),'yyyy-MM-dd')
+
+SELECT W.*,x.FNAME into #RecCond FROM T_SAL_ORDERPLAN W
+INNER JOIN T_BD_RecCondition_L X on X.FID = W.F_RecConditionId
+
+SELECT D.FID,sum(b.fqty) AS 'FQTY',sum(E.fallamount) AS 'FAMOUNT'
+ INTO #SAL
+ FROM T_SAL_DELIVERYNOTICE A
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY B ON A.FID = B.FID
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY_F E ON E.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK C ON C.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_ORDERENTRY D ON D.FID = C.FSBILLID AND D.FENTRYID = C.FSID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY D.FID
+
+
+ SELECT D.FID,sum(b.fqty) AS 'FQTY',sum(E.fallamount) AS 'FAMOUNT'
+ INTO #RETURN
+ FROM T_SAL_RETURNNOTICE A
+ INNER JOIN T_SAL_RETURNNOTICEENTRY B ON A.FID = B.FID
+ INNER JOIN T_SAL_RETURNNOTICEENTRY_F E ON E.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_RETURNNOTICEENTRY_LK C ON C.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_ORDERENTRY D ON D.FID = C.FSBILLID AND D.FENTRYID = C.FSID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY D.FID
+
+
+ SELECT F.FID,sum(b.FREALQTY) AS 'FQTY',sum(G.FALLAMOUNT_LC) AS 'FAMOUNT'
+ INTO #OUTSTOCK
+ FROM T_SAL_OUTSTOCK A
+ INNER JOIN T_SAL_OUTSTOCKENTRY B ON A.FID = B.FID
+ INNER JOIN T_SAL_OUTSTOCKENTRY_F G ON G.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_OUTSTOCKENTRY_LK C ON C.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY D ON D.FID = C.FSBILLID AND D.FENTRYID = C.FSID
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK E ON E.FENTRYID = D.FENTRYID
+ INNER JOIN T_SAL_ORDERENTRY F ON F.FID = E.FSBILLID AND F.FENTRYID = E.FSID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY F.FID
+
+ SELECT F.FID,sum(b.FREALQTY) AS 'FQTY',sum(G.FALLAMOUNT_LC) AS 'FAMOUNT'
+ INTO #RETURNSTOCK
+ FROM T_SAL_RETURNSTOCK A
+ INNER JOIN T_SAL_RETURNSTOCKENTRY B ON A.FID = B.FID
+ INNER JOIN T_SAL_RETURNSTOCKENTRY_F G ON G.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_RETURNSTOCKENTRY_LK C ON C.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_RETURNNOTICEENTRY D ON D.FID = C.FSBILLID AND D.FENTRYID = C.FSID
+ INNER JOIN T_SAL_RETURNNOTICEENTRY_LK E ON E.FENTRYID = D.FENTRYID
+ INNER JOIN T_SAL_ORDERENTRY F ON F.FID = E.FSBILLID AND F.FENTRYID = E.FSID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY F.FID
+
+ SELECT b.FORDERENTRYID as 'FENTRYID',sum(b.FPriceQty) AS 'FQTY',sum(b.FALLAMOUNT) AS 'FAMOUNT'
+ INTO #RECE
+ FROM t_AR_receivable A
+ INNER JOIN t_AR_receivableENTRY B ON A.FID = B.FID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY b.FORDERENTRYID
+
+SELECT
+CASE WHEN ISNULL(O.FNAME,'') = ''THEN AC.区域
+ELSE ACC.区域 END AS 'SBU',
+'' AS '本年度发货及验收额', --待定取数
+ CASE WHEN ROW_NUMBER() OVER (PARTITION BY A.Fid,n.FSaleId,X.FNAME ORDER BY n.FSaleId,X.FNAME) != 1 THEN null
+ WHEN X.FNAME in ('预付款(仪表)','预付款(系统)') THEN null
+ WHEN X.FNAME in ('货到收款(仪表)','货到收款(系统)') AND DATEADD(day, W.F_DAY, CK.F_SFSIGNATURETIME) < GETDATE() AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('货到收款(仪表)','货到收款(系统)') AND DATEADD(day, W.F_DAY, CK.F_SFSIGNATURETIME) < GETDATE() THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ WHEN X.FNAME in ('货到票到收款(系统)','货到票到收款(仪表)') AND DATEADD(day, W.F_DAY,FP.F_DATE) < GETDATE() AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('货到票到收款(系统)','货到票到收款(仪表)') AND DATEADD(day, W.F_DAY,FP.F_DATE) < GETDATE() THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ WHEN X.FNAME in ('款到发货(仪表)','款到发货(系统)') AND DATEADD(day, W.F_DAY,Q.发货日期) < GETDATE() AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('款到发货(仪表)','款到发货(系统)') AND DATEADD(day, W.F_DAY,Q.发货日期) < GETDATE() THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ ELSE null--款到发货(仪表)
+ END AS '已到期应收账款',
+convert(nvarchar(100), '') AS '1-6个月',
+convert(nvarchar(100), '') AS '7-12个月',
+convert(nvarchar(100), '') AS '13-18个月',
+convert(nvarchar(100), '') AS '19个月以上',
+'' AS '回款额(含子公司)', --待定核销功能完成
+'' AS '专责小组回款额', --待定取数
+'' AS '实际业绩额(含往年变更金额)',--待定取数逻辑
+'' AS '上年度应收额',--待定取数逻辑
+'' AS '专责小组应收额',
+'' AS '回款率',
+'' AS '预发货到期应收账款',
+'' AS '预发货回款额',
+'' AS '预发货回款率',
+'' AS '回款目标',
+'' AS '应收款上限',
+'' AS '回款达标率'
+,SUM(w.FRECADVANCERATE)OVER(PARTITION BY A.FID,N.FENTRYID ORDER BY W.FSEQ) as '收款比例汇总'
+,case when F.FBILLALLAMOUNT_LC - ISNULL(v.累计退货金额,0)= 0
+THEN 0
+ELSE round(( isnull(ae.累计收款,0) - ISNULL(v.累计退货金额,0))/( F.FBILLALLAMOUNT_LC - ISNULL(v.累计退货金额,0)) ,2)
+END AS '收款比例'
+,ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),Getdate()) / 30,0) AS '账龄-月'
+,case when ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),Getdate()) / 30,0) <= 6 AND ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),Getdate()) / 30,0) >=1 then '一到六个月'
+when ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),Getdate()) / 30,0) <= 12 AND ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),Getdate()) / 30,0) >=7 then '七到十二个月'
+when ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),Getdate()) / 30,0) <= 18 AND ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),Getdate()) / 30,0) >=13 then '十三到十八个月'
+when ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),Getdate()) / 30,0) >= 19 then '十九个月以上'
+end AS '账龄-阶段'
+INTO #TEMP1
+FROM T_SAL_ORDER A --销售订单表头
+ LEFT JOIN
+ (Select a2.FENTRYID,a2.FDATAVALUE From T_BAS_ASSISTANTDATAENTRY a1 JOIN T_BAS_ASSISTANTDATAENTRY_L a2 on a1.FENTRYID = a2.FENTRYID
+ Where a1.FID = '670cc977263353') B on A.F_ORDERCATEGORY = B.FENTRYID
+ --INNER JOIN T_SAL_orderentry b on a.FID = B.FID --销售订单表体
+ INNER JOIN T_BD_CUSTOMER_L C ON C.FCUSTID= A.FCUSTID AND C.FLOCALEID= 2052 --客户附属表
+ INNER JOIN T_SAL_ORDERFIN F ON F.FID = A.FID
+ INNER JOIN T_BD_CUSTOMER I ON I .FCUSTID = A.FCUSTID
+ INNER JOIN T_SAL_ORDERFIN J ON J.FID= A.FID
+ LEFT JOIN T_BAS_PREBDONE_L G ON G.FID = A.F_projectname AND G.FLocaleID =2052
+ LEFT JOIN T_BAS_PREBDTHREE H ON H.FID = A.F_BON
+ lEFT JOIN V_ASSISTANTDATA K ON K.FENTRYID = I.FCompanyNature
+ lEFT JOIN V_BD_SALESMAN_L L ON L.fid = A.FSALERID
+ left JOIN T_PerformanceSharing M ON M.FSOURCEBILLNO = A.FBILLNO
+ left JOIN T_PerformanceSharingEntry N ON N.FID=M.FID
+ LEFT JOIN V_BD_SALESMAN_L O ON O.fid= N.FSALEID
+ LEFT JOIN V_ASSISTANTDATA P ON P.FENTRYID = I.F_CREDITCLASSIFICATION
+ LEFT JOIN T_SAL_OUTSTOCK CK on CK.F_CONTRACTNUMBER = A.F_CONTRACTNUMBER --销售出库单
+ LEFT JOIN T_IV_SALESIC FP on FP.F_PAPERNUMBER = A.F_CONTRACTNUMBER --销售增值税专用发票
+ --LEFT JOIN T_SAL_DELIVERYNOTICE FH on FH.F_PAPERCONTRACT = A.F_CONTRACTNUMBER --发货通知单
+ LEFT JOIN
+ (
+ SELECT F_Papercontract,MAX(CONVERT(NVARCHAR(10), A.FDATE,23)) AS '发货日期',SUM(B.FBILLALLAMOUNT_LC) AS '累计发货金额' FROM T_SAL_DELIVERYNOTICE A
+ INNER JOIN T_SAL_DELIVERYNOTICEFIN B ON A.FID =B.FID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY A.F_Papercontract
+ ) Q ON Q.F_PAPERCONTRACT = A.F_contractnumber --获取发货通知单最大的发货日期
+ LEFT JOIN T_META_FORMENUMITEM R ON r.FVALUE = A.F_OrderType AND R.FID = 'bc2c1d77-0f4b-41d2-b61b-e29554c570d4'
+ LEFT JOIN T_META_FORMENUMITEM_L S ON S.FENUMID = R.FENUMID AND S.FLOCALEID = 2052
+ LEFT JOIN
+ (
+ SELECT F_Paper ,CONVERT(NVARCHAR(10), MAX(FDATE),23) AS '开票日期',CONVERT(NVARCHAR(10),
+ MAX(FDATE),23) AS '没有红色的开票日期'
+ FROM t_AR_receivable A
+ INNER JOIN T_AR_RECEIVABLEENTRY B ON A.FID = B.FID
+ WHERE A.FDOCUMENTSTATUS = 'C' AND A.FCancelStatus = 'A'
+ GROUP BY F_Paper
+ ) T ON T.F_PAPER = A.F_contractnumber
+ LEFT JOIN V_ASSISTANTDATA U ON U.FENTRYID = A.F_Ordercategory
+ LEFT JOIN
+ (
+ SELECT F_contractnumber,MAX(CONVERT(NVARCHAR(10), A.FDATE,23)) AS '退货日期',SUM(B.FBILLALLAMOUNT_LC) AS '累计退货金额' FROM T_SAL_RETURNSTOCK A
+ INNER JOIN T_SAL_RETURNSTOCKFIN B ON A.FID =B.FID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY A.F_contractnumber
+ ) V ON V.F_contractnumber = A.F_contractnumber --获取销售退货单
+ LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo AC ON AC.名称=L.FNAME
+ LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACC ON ACC.名称=O.FNAME
+ LEFT JOIN T_SAL_ORDERPLAN W ON W.FID= A.FID --收款计划
+ LEFT JOIN T_BD_RecCondition_L X on X.FID = W.F_RecConditionId
+ LEFT JOIN #RecCond Y ON Y.FID =A.FID AND Y.FNAME LIKE '%质保金%'
+ LEFT JOIN (select distinct fid from #RecCond Z where Z.FNAME LIKE '%款到%') z on z.fid =a.fid
+ LEFT JOIN (select distinct fid from #RecCond AA where AA.FNAME LIKE '%协议%') AA on AA.fid =a.fid
+ LEFT JOIN T_ORG_ORGANIZATIONS_L asd on asd.FORGID = A.FSALEORGID
+ LEFT JOIN (SELECT distinct F_Papercontract FROM T_SAL_DELIVERYNOTICE WHERE F_SFYFH ='是') AB ON AB.F_PAPERCONTRACT = A.F_contractnumber
+ LEFT JOIN
+ (
+ SELECT
+ F_Papercontract,CAST( sum(b.FALLAMOUNT) AS REAL) AS '发票总金额',
+ CAST (sum(CASE WHEN F_Papercontract = 'Y' THEN b.FALLAMOUNT ELSE 0 END ) AS REAL) AS '发票总金额(普票存财务)'
+ FROM t_AR_receivable A
+ INNER JOIN T_AR_RECEIVABLEFIN B ON A.FID = B.FID
+ GROUP BY F_Papercontract
+ ) AD ON AD.F_PAPERCONTRACT = A.F_contractnumber
+ LEFT JOIN
+ (
+ SELECT a.F_Papercontract,
+ avg(d.FCURWRITTENOFFAMOUNT) as '累计收款'
+
+ FROM t_AR_receivable A
+ INNER JOIN T_AR_RECEIVABLEENTRY E ON E.FID =A.FID
+ INNER JOIN T_AR_RECMacthLogENTRY B ON A.FBILLNO = B.FSRCBILLNO
+ INNER JOIN T_AR_RECMacthLog C ON C.FID = B.FID
+ INNER JOIN T_AR_RECMacthLogENTRY D ON D.FID = B.FID
+ AND D.FSOURCETYPE = '36cf265bd8c3452194ed9c83ec5e73d2'
+ WHERE
+ 1=1
+ group by a.F_Papercontract
+ ) AE ON AE.F_Papercontract = A.F_contractnumber
+ WHERE 1=1 AND
+ A.FDOCUMENTSTATUS = 'C'
+ and (@FSaleOrgId = '' or asd.FNAME = @FSaleOrgId)
+ AND (@FEndDate = '' or A.FDATE<=@FEndDate)
+ AND (@FStartDate = '' or A.FDATE>=@FStartDate)
+ ORDER BY A.F_contractnumber
+ {1}
+ORDER BY 'SBU'
+
+UPDATE #TEMP1 SET
+ [账龄-月] = 0 ,[账龄-阶段]=''
+ WHERE 收款比例汇总<=收款比例*100
+
+--
+
+UPDATE #TEMP1
+SET [1-6个月]= case when [账龄-月] <> 0 AND [账龄-阶段]='一到六个月' AND 收款比例<收款比例汇总 then CONVERT(nvarchar(10), round( 收款比例汇总,2)-收款比例*100) else '' end,
+[7-12个月]= case when [账龄-月] <> 0 AND [账龄-阶段]='七到十二个月' AND 收款比例<收款比例汇总 then CONVERT(nvarchar(10), round( 收款比例汇总,2)-收款比例*100) else '' end,
+[13-18个月]=case when [账龄-月] <> 0 AND [账龄-阶段]='十三到十八个月' AND 收款比例<收款比例汇总 then CONVERT(nvarchar(10), round( 收款比例汇总,2)-收款比例*100) else '' end,
+[19个月以上]=case when [账龄-月] <> 0 AND [账龄-阶段]='十九个月以上' AND 收款比例<收款比例汇总 then CONVERT(nvarchar(10), round( 收款比例汇总,2)-收款比例 *100) else '' end
+
+SELECT * INTO {0} FROM #TEMP1
+", tableName, Filter);
+ //执行SQL并动态创建报表
+ DBUtils.ExecuteDynamicObject(this.Context, sql);
+ }
+ //获取过滤条件
+ private string GetFilterWhere(IRptParams fileter)
+ {
+ //获取自定义过滤条件
+ DynamicObject customFilter = fileter.FilterParameter.CustomFilter;
+ //创建字符串构建器
+ StringBuilder strwhere = new StringBuilder();
+ //初始化过滤条件
+ strwhere.AppendLine("Where 1=1");
+ var orgFid = customFilter["F_YKQC_OrgId_ca9"] as DynamicObject;
+ if (orgFid != null)
+ {
+ string org = string.IsNullOrWhiteSpace(customFilter["F_YKQC_OrgId_ca9"].ToString()) ? "" :
+ string.Format("AND A.FSaleOrgId IN ({0})", orgFid["Id"].Long2Int());
+ //添加组织过滤条件
+ strwhere.AppendLine(org);
+ }
+
+ //日期
+ string startValue = (customFilter["F_YKQC_Date_apv"] == null) ? string.Empty :
+ Convert.ToDateTime(customFilter["F_YKQC_Date_apv"]).ToString("yyyy-MM-dd");
+ string endValue = (customFilter["F_YKQC_Date_tzk"] == null) ? string.Empty :
+ Convert.ToDateTime(customFilter["F_YKQC_Date_tzk"]).ToString("yyyy-MM-dd");
+ //添加日期过滤条件
+ if (!String.IsNullOrWhiteSpace(startValue)) {
+ strwhere.AppendLine(string.Format(@"AND A.FDate >= '{0}'", startValue));
+ }
+ if(!String.IsNullOrWhiteSpace(endValue))
+ {
+ strwhere.AppendLine(string.Format(@"AND A.FDate <= '{0}'", endValue));
+ }
+ return strwhere.ToString();
+ }
+
+ public override List GetSummaryColumnInfo(IRptParams filter)
+ {
+ var result = base.GetSummaryColumnInfo(filter);
+ result.Add(new SummaryField("年底到期应收款额", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("到期应收款额", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
+ return result;
+ }
+ }
+}
diff --git a/YingShouBaoBiao/YingShouSBU.cs b/YingShouBaoBiao/YingShouSBU.cs
new file mode 100644
index 0000000..1683c4e
--- /dev/null
+++ b/YingShouBaoBiao/YingShouSBU.cs
@@ -0,0 +1,394 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Kingdee.BOS;
+using Kingdee.BOS.App.Data;
+using Kingdee.BOS.Contracts;
+using Kingdee.BOS.Contracts.Report;
+using Kingdee.BOS.Core.Metadata;
+using Kingdee.BOS.Core.Report;
+using Kingdee.BOS.Core.SqlBuilder;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.Util;
+
+namespace GZ_LTHReportForms.YingShouBaoBiao
+{
+ [Description("应收情况概况表按(SBU)区分"), HotUpdate]
+ public class YingShouSBU : SysReportBaseService
+ {
+ public override void Initialize()
+ {
+ base.Initialize();
+ //设置报表类型为普通类型
+ this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;
+ //设置是否通过插件创建临时表
+ this.IsCreateTempTableByPlugin = true;
+ //设置是否分组汇总
+ this.ReportProperty.IsGroupSummary = true;
+
+ }
+ //获取过滤条件信息(构造单据信息)
+ public override ReportTitles GetReportTitles(IRptParams filter)
+ {
+ //创建标题对象
+ ReportTitles reportTitles = new ReportTitles();
+ //获取自定义过滤条件
+ DynamicObject customFilter = filter.FilterParameter.CustomFilter;
+ if (customFilter != null)
+ {
+ //获取组织名称
+ string multiOrgnNameValues = this.GetMultiOrgnNameValues(customFilter["F_YKQC_OrgId_uky"] as DynamicObject);
+ //添加标题
+ reportTitles.AddTitle("F_YKQC_OrgId_re5", multiOrgnNameValues);
+ }
+ //返回标题
+ return reportTitles;
+ }
+ //获取组织名称
+ private string GetMultiOrgnNameValues(DynamicObject orgIdStrings)
+ {
+ //获取组织名称
+ List list = new List();
+ //初始化结果字符串
+ string result = string.Empty;
+ //如果组织ID字符串不为空
+ if (orgIdStrings != null)
+ {
+ //获取查询服务
+ IQueryService service = Kingdee.BOS.Contracts.ServiceFactory.GetService(base.Context);
+ //创建查询参数
+ QueryBuilderParemeter para = new QueryBuilderParemeter
+ {
+ FormId = "ORG_Organizations",
+ //查询组织名称
+ SelectItems = SelectorItemInfo.CreateItems("FNAME"),
+ //过滤条件,根据组织ID和区域ID
+ FilterClauseWihtKey = string.Format("FORGID IN ({0}) AND FLOCALEID = {1}", orgIdStrings["Id"].Long2Int(), base.Context.UserLocale.LCID)
+ };
+ //获取动态对象集合
+ DynamicObjectCollection dynamicObjects = service.GetDynamicObjectCollection(base.Context, para, null);
+ //遍历获取到的动态对象
+ foreach (DynamicObject current in dynamicObjects)
+ {
+ //将组织名称添加到列表
+ list.Add(current["FNAME"].ToString());
+ }
+ //如果列表不为空
+ if (list.Count > 0)
+ {
+ result = string.Join(",", list.ToArray());
+ }
+ }
+ //返回组织名称字符串
+ return result;
+ }
+
+ //设置单据列
+ public override ReportHeader GetReportHeaders(IRptParams filter)
+ {
+ //创建表头对象
+ ReportHeader header = new ReportHeader();
+ header.AddChild("SBU", new LocaleValue("SBU", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("年底到期应收款额", new LocaleValue("期初到期应收额", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("年底到期应收款专责小组", new LocaleValue("其中:期初应收款专责小组", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("到期应收款额", new LocaleValue("本月到期应收额", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("应收款专责小组", new LocaleValue("其中:本月应收款专责小组", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("占比", new LocaleValue("占比", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ header.AddChild("变化", new LocaleValue("变化", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar);
+ foreach(var item in header.GetChilds())
+ {
+ item.Width = 200;
+ }
+ return header;
+ }
+
+ //创建临时表
+ public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
+ {
+ //获取过滤条件
+ string Filter = GetFilterWhere(filter);
+ /*
+ 取数SQL
+ SQL查询字符串,提取所需数据并将结果存入临时表
+ */
+ string sql = String.Format(@"/*dialect*/
+DECLARE @ResultDate VARCHAR(1000);
+DECLARE @ThisDate VARCHAR(1000);
+DECLARE @SUMDQ DECIMAL(10, 2);
+
+
+-- 取上一年的年底日期
+SET @ResultDate = FORMAT(DATEADD(DAY, -1, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)),'yyyy-MM-dd');
+--取当天日期
+SET @ThisDate = FORMAT(GETDATE(),'yyyy-MM-dd')
+
+SELECT W.*,x.FNAME into #RecCond FROM T_SAL_ORDERPLAN W
+INNER JOIN T_BD_RecCondition_L X on X.FID = W.F_RecConditionId
+
+SELECT D.FID,sum(b.fqty) AS 'FQTY',sum(E.fallamount) AS 'FAMOUNT'
+ INTO #SAL
+ FROM T_SAL_DELIVERYNOTICE A
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY B ON A.FID = B.FID
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY_F E ON E.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK C ON C.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_ORDERENTRY D ON D.FID = C.FSBILLID AND D.FENTRYID = C.FSID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY D.FID
+
+
+ SELECT D.FID,sum(b.fqty) AS 'FQTY',sum(E.fallamount) AS 'FAMOUNT'
+ INTO #RETURN
+ FROM T_SAL_RETURNNOTICE A
+ INNER JOIN T_SAL_RETURNNOTICEENTRY B ON A.FID = B.FID
+ INNER JOIN T_SAL_RETURNNOTICEENTRY_F E ON E.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_RETURNNOTICEENTRY_LK C ON C.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_ORDERENTRY D ON D.FID = C.FSBILLID AND D.FENTRYID = C.FSID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY D.FID
+
+
+ SELECT F.FID,sum(b.FREALQTY) AS 'FQTY',sum(G.FALLAMOUNT_LC) AS 'FAMOUNT'
+ INTO #OUTSTOCK
+ FROM T_SAL_OUTSTOCK A
+ INNER JOIN T_SAL_OUTSTOCKENTRY B ON A.FID = B.FID
+ INNER JOIN T_SAL_OUTSTOCKENTRY_F G ON G.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_OUTSTOCKENTRY_LK C ON C.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY D ON D.FID = C.FSBILLID AND D.FENTRYID = C.FSID
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK E ON E.FENTRYID = D.FENTRYID
+ INNER JOIN T_SAL_ORDERENTRY F ON F.FID = E.FSBILLID AND F.FENTRYID = E.FSID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY F.FID
+
+ SELECT F.FID,sum(b.FREALQTY) AS 'FQTY',sum(G.FALLAMOUNT_LC) AS 'FAMOUNT'
+ INTO #RETURNSTOCK
+ FROM T_SAL_RETURNSTOCK A
+ INNER JOIN T_SAL_RETURNSTOCKENTRY B ON A.FID = B.FID
+ INNER JOIN T_SAL_RETURNSTOCKENTRY_F G ON G.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_RETURNSTOCKENTRY_LK C ON C.FENTRYID = B.FENTRYID
+ INNER JOIN T_SAL_RETURNNOTICEENTRY D ON D.FID = C.FSBILLID AND D.FENTRYID = C.FSID
+ INNER JOIN T_SAL_RETURNNOTICEENTRY_LK E ON E.FENTRYID = D.FENTRYID
+ INNER JOIN T_SAL_ORDERENTRY F ON F.FID = E.FSBILLID AND F.FENTRYID = E.FSID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY F.FID
+
+ SELECT b.FORDERENTRYID as 'FENTRYID',sum(b.FPriceQty) AS 'FQTY',sum(b.FALLAMOUNT) AS 'FAMOUNT'
+ INTO #RECE
+ FROM t_AR_receivable A
+ INNER JOIN t_AR_receivableENTRY B ON A.FID = B.FID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY b.FORDERENTRYID
+
+SELECT
+CASE WHEN ISNULL(O.FNAME,'') = '' THEN AC.区域
+ELSE ACC.区域 END AS 'SBU',
+CASE WHEN ROW_NUMBER() OVER (PARTITION BY A.Fid,n.FSaleId,X.FNAME ORDER BY n.FSaleId,X.FNAME) != 1 THEN null
+ WHEN X.FNAME in ('预付款(仪表)','预付款(系统)') THEN null
+ WHEN X.FNAME in ('货到收款(仪表)','货到收款(系统)') AND DATEADD(day, W.F_DAY, CK.F_SFSIGNATURETIME) < @ResultDate AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('货到收款(仪表)','货到收款(系统)') AND DATEADD(day, W.F_DAY, CK.F_SFSIGNATURETIME) < @ResultDate THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ WHEN X.FNAME in ('货到票到收款(系统)','货到票到收款(仪表)') AND DATEADD(day, W.F_DAY,FP.F_DATE) < @ResultDate AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('货到票到收款(系统)','货到票到收款(仪表)') AND DATEADD(day, W.F_DAY,FP.F_DATE) < @ResultDate THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ WHEN X.FNAME in ('款到发货(仪表)','款到发货(系统)') AND DATEADD(day, W.F_DAY,Q.发货日期) < @ResultDate AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('款到发货(仪表)','款到发货(系统)') AND DATEADD(day, W.F_DAY,Q.发货日期) < @ResultDate THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ ELSE null--款到发货(仪表)
+ END AS '年底到期应收款额',
+CASE WHEN ROW_NUMBER() OVER (PARTITION BY A.Fid,n.FSaleId,X.FNAME ORDER BY n.FSaleId,X.FNAME) != 1 THEN null
+ WHEN X.FNAME in ('预付款(仪表)','预付款(系统)') THEN null
+ WHEN X.FNAME in ('货到收款(仪表)','货到收款(系统)') AND isnull(ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),@ResultDate) / 30,0) ,0)>=6 AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('货到收款(仪表)','货到收款(系统)') AND isnull(ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),@ResultDate) / 30,0) ,0)>=6 THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ WHEN X.FNAME in ('货到票到收款(系统)','货到票到收款(仪表)') AND isnull(ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),@ResultDate) / 30,0) ,0)>=6 AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('货到票到收款(系统)','货到票到收款(仪表)') AND isnull(ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),@ResultDate) / 30,0) ,0)>=6 THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ WHEN X.FNAME in ('款到发货(仪表)','款到发货(系统)') AND isnull(ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),@ResultDate) / 30,0) ,0)>=6 AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('款到发货(仪表)','款到发货(系统)') AND isnull(ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),@ResultDate) / 30,0) ,0)>=6 THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ ELSE null--款到发货(仪表)
+ END AS '年底到期应收款专责小组',
+CASE WHEN ROW_NUMBER() OVER (PARTITION BY A.Fid,n.FSaleId,X.FNAME ORDER BY n.FSaleId,X.FNAME) != 1 THEN null
+ WHEN X.FNAME in ('预付款(仪表)','预付款(系统)') THEN null
+ WHEN X.FNAME in ('货到收款(仪表)','货到收款(系统)') AND DATEADD(day, W.F_DAY, CK.F_SFSIGNATURETIME) < @ThisDate AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('货到收款(仪表)','货到收款(系统)') AND DATEADD(day, W.F_DAY, CK.F_SFSIGNATURETIME) < @ThisDate THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ WHEN X.FNAME in ('货到票到收款(系统)','货到票到收款(仪表)') AND DATEADD(day, W.F_DAY,FP.F_DATE) < @ThisDate AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('货到票到收款(系统)','货到票到收款(仪表)') AND DATEADD(day, W.F_DAY,FP.F_DATE) < @ThisDate THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ WHEN X.FNAME in ('款到发货(仪表)','款到发货(系统)') AND DATEADD(day, W.F_DAY,Q.发货日期) < @ThisDate AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('款到发货(仪表)','款到发货(系统)') AND DATEADD(day, W.F_DAY,Q.发货日期) < @ThisDate THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ ELSE null--款到发货(仪表)
+ END AS '到期应收款额',
+CASE WHEN ROW_NUMBER() OVER (PARTITION BY A.Fid,n.FSaleId,X.FNAME ORDER BY n.FSaleId,X.FNAME) != 1 THEN null
+ WHEN X.FNAME in ('预付款(仪表)','预付款(系统)') THEN null
+ WHEN X.FNAME in ('货到收款(仪表)','货到收款(系统)') AND isnull(ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),@ThisDate) / 30,0) ,0)>=6 AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('货到收款(仪表)','货到收款(系统)') AND isnull(ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),@ThisDate) / 30,0) ,0)>=6 THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ WHEN X.FNAME in ('货到票到收款(系统)','货到票到收款(仪表)') AND isnull(ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),@ThisDate) / 30,0) ,0)>=6 AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('货到票到收款(系统)','货到票到收款(仪表)') AND isnull(ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),@ThisDate) / 30,0) ,0)>=6 THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ WHEN X.FNAME in ('款到发货(仪表)','款到发货(系统)') AND isnull(ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),@ThisDate) / 30,0) ,0)>=6 AND W.FRECADVANCERATE = 100 THEN ISNULL(Q.累计发货金额,0)-ISNULL(v.累计退货金额,0)
+ WHEN X.FNAME in ('款到发货(仪表)','款到发货(系统)') AND isnull(ROUND( DATEDIFF(DAY,convert(nvarchar(10),dateadd(day,isnull(w.f_day,0) ,W.F_PMSDate),23),@ThisDate) / 30,0) ,0)>=6 THEN ISNULL(W.F_MBBA_Decimal_uky,0)
+ ELSE null--款到发货(仪表)
+ END AS '应收款专责小组'
+INTO #TEMP1
+FROM T_SAL_ORDER A --销售订单表头
+ LEFT JOIN
+ (Select a2.FENTRYID,a2.FDATAVALUE From T_BAS_ASSISTANTDATAENTRY a1 JOIN T_BAS_ASSISTANTDATAENTRY_L a2 on a1.FENTRYID = a2.FENTRYID
+ Where a1.FID = '670cc977263353') B on A.F_ORDERCATEGORY = B.FENTRYID
+ --INNER JOIN T_SAL_orderentry b on a.FID = B.FID --销售订单表体
+ INNER JOIN T_BD_CUSTOMER_L C ON C.FCUSTID= A.FCUSTID AND C.FLOCALEID= 2052 --客户附属表
+ INNER JOIN T_SAL_ORDERFIN F ON F.FID = A.FID
+ INNER JOIN T_BD_CUSTOMER I ON I .FCUSTID = A.FCUSTID
+ INNER JOIN T_SAL_ORDERFIN J ON J.FID= A.FID
+ LEFT JOIN T_BAS_PREBDONE_L G ON G.FID = A.F_projectname AND G.FLocaleID =2052
+ LEFT JOIN T_BAS_PREBDTHREE H ON H.FID = A.F_BON
+ lEFT JOIN V_ASSISTANTDATA K ON K.FENTRYID = I.FCompanyNature
+ lEFT JOIN V_BD_SALESMAN_L L ON L.fid = A.FSALERID
+ left JOIN T_PerformanceSharing M ON M.FSOURCEBILLNO = A.FBILLNO
+ left JOIN T_PerformanceSharingEntry N ON N.FID=M.FID
+ LEFT JOIN V_BD_SALESMAN_L O ON O.fid= N.FSALEID
+ LEFT JOIN V_ASSISTANTDATA P ON P.FENTRYID = I.F_CREDITCLASSIFICATION
+ LEFT JOIN T_SAL_OUTSTOCK CK on CK.F_CONTRACTNUMBER = A.F_CONTRACTNUMBER --销售出库单
+ LEFT JOIN T_IV_SALESIC FP on FP.F_PAPERNUMBER = A.F_CONTRACTNUMBER --销售增值税专用发票
+ LEFT JOIN
+ (
+ SELECT F_Papercontract,MAX(CONVERT(NVARCHAR(10), A.FDATE,23)) AS '发货日期',SUM(B.FBILLALLAMOUNT_LC) AS '累计发货金额' FROM T_SAL_DELIVERYNOTICE A
+ INNER JOIN T_SAL_DELIVERYNOTICEFIN B ON A.FID =B.FID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY A.F_Papercontract
+ ) Q ON Q.F_PAPERCONTRACT = A.F_contractnumber --获取发货通知单最大的发货日期
+ LEFT JOIN T_META_FORMENUMITEM R ON r.FVALUE = A.F_OrderType AND R.FID = 'bc2c1d77-0f4b-41d2-b61b-e29554c570d4'
+ LEFT JOIN T_META_FORMENUMITEM_L S ON S.FENUMID = R.FENUMID AND S.FLOCALEID = 2052
+ LEFT JOIN
+ (
+ SELECT F_Paper ,CONVERT(NVARCHAR(10), MAX(FDATE),23) AS '开票日期',CONVERT(NVARCHAR(10),
+ MAX(FDATE),23) AS '没有红色的开票日期'
+ FROM t_AR_receivable A
+ INNER JOIN T_AR_RECEIVABLEENTRY B ON A.FID = B.FID
+ WHERE A.FDOCUMENTSTATUS = 'C' AND A.FCancelStatus = 'A'
+ GROUP BY F_Paper
+ ) T ON T.F_PAPER = A.F_contractnumber
+ LEFT JOIN V_ASSISTANTDATA U ON U.FENTRYID = A.F_Ordercategory
+ LEFT JOIN
+ (
+ SELECT F_contractnumber,MAX(CONVERT(NVARCHAR(10), A.FDATE,23)) AS '退货日期',SUM(B.FBILLALLAMOUNT_LC) AS '累计退货金额' FROM T_SAL_RETURNSTOCK A
+ INNER JOIN T_SAL_RETURNSTOCKFIN B ON A.FID =B.FID
+ WHERE A.FDOCUMENTSTATUS= 'C'
+ GROUP BY A.F_contractnumber
+ ) V ON V.F_contractnumber = A.F_contractnumber --获取销售退货单
+ LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo AC ON AC.名称=L.FNAME
+ LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACC ON ACC.名称=O.FNAME
+ --LEFT JOIN temp20241206 AC ON AC.名称=L.FNAME
+ --LEFT JOIN temp20241206 ACC ON ACC.名称=O.FNAME
+ LEFT JOIN T_SAL_ORDERPLAN W ON W.FID= A.FID
+ LEFT JOIN T_BD_RecCondition_L X on X.FID = W.F_RecConditionId
+ LEFT JOIN #RecCond Y ON Y.FID =A.FID AND Y.FNAME LIKE '%质保金%'
+ LEFT JOIN (select distinct fid from #RecCond Z where Z.FNAME LIKE '%款到%') z on z.fid =a.fid
+ LEFT JOIN (select distinct fid from #RecCond AA where AA.FNAME LIKE '%协议%') AA on AA.fid =a.fid
+ LEFT JOIN (SELECT distinct F_Papercontract FROM T_SAL_DELIVERYNOTICE WHERE F_SFYFH ='是') AB ON AB.F_PAPERCONTRACT = A.F_contractnumber
+ LEFT JOIN
+ (
+ SELECT
+ F_Papercontract,CAST( sum(b.FALLAMOUNT) AS REAL) AS '发票总金额',
+ CAST (sum(CASE WHEN F_Papercontract = 'Y' THEN b.FALLAMOUNT ELSE 0 END ) AS REAL) AS '发票总金额(普票存财务)'
+ FROM t_AR_receivable A
+ INNER JOIN T_AR_RECEIVABLEFIN B ON A.FID = B.FID
+ GROUP BY F_Papercontract
+ ) AD ON AD.F_PAPERCONTRACT = A.F_contractnumber
+ LEFT JOIN
+ (
+ SELECT a.F_Papercontract,
+ avg(d.FCURWRITTENOFFAMOUNT) as '累计收款'
+
+ FROM t_AR_receivable A
+ INNER JOIN T_AR_RECEIVABLEENTRY E ON E.FID =A.FID
+ INNER JOIN T_AR_RECMacthLogENTRY B ON A.FBILLNO = B.FSRCBILLNO
+ INNER JOIN T_AR_RECMacthLog C ON C.FID = B.FID
+ INNER JOIN T_AR_RECMacthLogENTRY D ON D.FID = B.FID
+ AND D.FSOURCETYPE = '36cf265bd8c3452194ed9c83ec5e73d2'
+ WHERE
+ 1=1
+ group by a.F_Papercontract
+ ) AE ON AE.F_Papercontract = A.F_contractnumber
+ WHERE 1=1 AND A.FDOCUMENTSTATUS = 'C' AND B.FDATAVALUE != 'Z'
+ AND ((F.FBILLALLAMOUNT_LC * isnull(n.FSHARERATE,100) /100)!=0)
+{1}
+ORDER BY A.F_contractnumber
+
+SELECT @SUMDQ = SUM(到期应收款额) FROM #TEMP1
+
+SELECT
+ SBU AS SBU1,
+ CONVERT(DECIMAL(10, 2),SUM(ISNULL(年底到期应收款额, 0)),2) AS '总年底到期应收款额',
+ CONVERT(DECIMAL(10, 2),SUM(ISNULL(到期应收款额, 0)),2) AS '总到期应收款额',
+ CONVERT(DECIMAL(10, 2),SUM(ISNULL(年底到期应收款专责小组, 0)),2) AS '年底到期应收款专责小组',
+ CONVERT(DECIMAL(10, 2),SUM(ISNULL(应收款专责小组, 0)),2) AS '应收款专责小组',
+ '' AS '占比',
+ 0 AS '变化'
+ INTO #TEMP2
+FROM
+ #TEMP1
+GROUP BY
+ SBU
+ORDER BY
+ SBU DESC;
+
+ALTER TABLE #TEMP2
+ALTER COLUMN 占比 NVARCHAR(100);
+
+UPDATE #TEMP2
+SET 占比 = CASE
+ WHEN 总到期应收款额 = 0 THEN '' -- 防止除以0
+ ELSE CONVERT(nvarchar(10), CONVERT(DECIMAL(10, 2), (总到期应收款额 / @SUMDQ) * 100),2) + '%'
+END;
+
+UPDATE #TEMP2
+SET 变化 = CONVERT(DECIMAL(10, 2),(总到期应收款额 - 总年底到期应收款额),2)
+
+SELECT
+ROW_NUMBER() OVER (ORDER BY B.SBU1 DESC) AS FID,
+ROW_NUMBER() OVER (ORDER BY B.SBU1 DESC) AS FIDENTITYID,
+B.SBU1 AS 'SBU',
+CASE
+WHEN B.总年底到期应收款额 = 0 THEN null
+ELSE B.总年底到期应收款额 END AS '年底到期应收款额',
+CASE
+WHEN B.年底到期应收款专责小组 = 0 THEN null
+ELSE B.年底到期应收款专责小组 END AS '年底到期应收款专责小组',
+CASE
+WHEN B.总到期应收款额 = 0 THEN null
+ELSE B.总到期应收款额 END AS '到期应收款额',
+CASE
+WHEN B.应收款专责小组 = 0 THEN null
+ELSE B.应收款专责小组 END AS '应收款专责小组',
+B.占比 AS '占比',
+B.变化 AS '变化'
+INTO {0} FROM #TEMP2 B
+GROUP BY B.年底到期应收款专责小组,B.应收款专责小组,B.SBU1,B.总年底到期应收款额,B.总到期应收款额,B.占比,B.变化
+", tableName,Filter);
+ //执行SQL并动态创建报表
+ DBUtils.ExecuteDynamicObject(this.Context, sql);
+ }
+
+ //获取过滤条件
+ private string GetFilterWhere(IRptParams fileter)
+ {
+ //获取自定义过滤条件
+ DynamicObject customFilter = fileter.FilterParameter.CustomFilter;
+ //创建字符串构建器
+ StringBuilder strwhere = new StringBuilder();
+ var orgFid = customFilter["F_YKQC_OrgId_uky"] as DynamicObject;
+ if (orgFid != null)
+ {
+ string org = string.IsNullOrWhiteSpace(customFilter["F_YKQC_OrgId_uky"].ToString()) ? "" :
+ string.Format("AND A.FSaleOrgId IN ({0})", orgFid["Id"].Long2Int());
+ //添加组织过滤条件
+ strwhere.AppendLine(org);
+ }
+ return strwhere.ToString();
+ }
+ //添加合计列
+ public override List GetSummaryColumnInfo(IRptParams filter)
+ {
+ var result = base.GetSummaryColumnInfo(filter);
+ result.Add(new SummaryField("年底到期应收款额", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("到期应收款额",Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
+ return result;
+ }
+
+ }
+}
diff --git a/YingShouBiao/YingShouQKBiao.cs b/YingShouBiao/YingShouQKBiao.cs
new file mode 100644
index 0000000..b6aaed2
--- /dev/null
+++ b/YingShouBiao/YingShouQKBiao.cs
@@ -0,0 +1,163 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Kingdee.BOS;
+using Kingdee.BOS.App.Data;
+using Kingdee.BOS.Contracts;
+using Kingdee.BOS.Contracts.Report;
+using Kingdee.BOS.Core.Metadata;
+using Kingdee.BOS.Core.Report;
+using Kingdee.BOS.Core.SqlBuilder;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.Util;
+
+namespace GZ_LTHReportForms.YingShouBiao
+{
+ [Description("应收款情况表(SBU)报表插件"),HotUpdate]
+ class YingShouQKBiao : SysReportBaseService
+ {
+ //初始化方法
+ public override void Initialize()
+ {
+ base.Initialize();
+ //设置报表类型为普通类型
+ this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;
+ //设置是否通过插件创建临时表
+ this.IsCreateTempTableByPlugin = true;
+ //设置是否分组汇总
+ this.ReportProperty.IsGroupSummary = true;
+ }
+ //获取过滤条件信息(构造单据信息)
+ public override ReportTitles GetReportTitles(IRptParams filter)
+ {
+ //创建标题对象
+ ReportTitles reportTitles = new ReportTitles();
+ //获取自定义过滤条件
+ DynamicObject customFilter = filter.FilterParameter.CustomFilter;
+ if(customFilter != null)
+ {
+ //获取组织名称
+ string multiOrgnNameValues = this.GetMultiOrgnNameValues(customFilter["F_YKQC_OrgId_ca9"].ToString());
+ //获取起始日期
+ string startValue = (customFilter["F_YKQC_Date_apv"] == null) ? string.Empty : Convert.ToDateTime(customFilter["F_YKQC_Date_apv"])
+ .ToString("yyyy-MM-dd");
+ //获取结束日期
+ string endValue = (customFilter["F_YKQC_Date_tzk"] == null) ? string.Empty : Convert.ToDateTime(customFilter["F_YKQC_Date_tzk"])
+ .ToString("yyyy-MM-dd");
+ //添加标题信息
+ reportTitles.AddTitle("F_YKQC_OrgId_re5", multiOrgnNameValues);
+ reportTitles.AddTitle("F_YKQC_Date_qtr", startValue);
+ reportTitles.AddTitle("F_YKQC_Date_83g", endValue);
+ }
+ //返回标题
+ return reportTitles;
+ }
+ //获取组织名称
+ private string GetMultiOrgnNameValues(string orgIdStrings)
+ {
+ //创建组织名称列表
+ List list = new List();
+ //初始化结果字符串
+ string result = string.Empty;
+ //如果组织ID字符串不为空
+ if (orgIdStrings.Trim().Length > 0)
+ {
+ //获取查询服务
+ IQueryService service = Kingdee.BOS.Contracts.ServiceFactory.GetService(base.Context);
+ //创建查询参数
+ QueryBuilderParemeter para = new QueryBuilderParemeter {
+ //表单ID
+ FormId = "ORG_Organizations",
+ //查询组织名称
+ SelectItems = SelectorItemInfo.CreateItems("FNAME"),
+ //过滤条件,根据组织ID和区域ID
+ FilterClauseWihtKey = string.Format("FORGID IN ({0}) AND FLOCALEID = {1}",orgIdStrings,base.Context.UserLocale.LCID)
+ };
+ //获取动态对象集合
+ DynamicObjectCollection dynamicObjects = service.GetDynamicObjectCollection(base.Context,para,null);
+ //遍历获取到的动态对象
+ foreach (DynamicObject current in dynamicObjects)
+ {
+ //将组织名称添加到列表
+ list.Add(current["FNAME"].ToString());
+ }
+ //如果列表不为空
+ if (list.Count > 0)
+ {
+ result = string.Join(",",list.ToArray());
+ }
+ }
+ //返回组织名称字符串
+ return result;
+ }
+ //设置单据列
+ public override ReportHeader GetReportHeaders(IRptParams filter)
+ {
+ //创建表头对象
+ ReportHeader header = new ReportHeader();
+
+ return header;
+ }
+
+ //创建临时表
+ public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
+ {
+ //获取过滤条件
+ string Filter = GetFilterWhere(filter);
+ //获取排序字段
+ string seqFId = string.Format(base.KSQL_SEQ,OrderColumn(filter));
+ /*
+ 取数SQL
+ SQL查询字符串,提取所需数据并将结果存入临时表
+ */
+ string sql = string.Format(@"");
+ //执行SQL并动态创建报表
+ DBUtils.ExecuteDynamicObject(this.Context,sql);
+ }
+
+ //获取过滤条件
+ private string GetFilterWhere(IRptParams fileter)
+ {
+ //获取自定义过滤条件
+ DynamicObject customFilter = fileter.FilterParameter.CustomFilter;
+ //创建字符串构建器
+ StringBuilder strwhere = new StringBuilder();
+ //初始化过滤条件
+ strwhere.AppendLine("Where 1=1");
+ //组织过滤条件
+ string org = string.IsNullOrWhiteSpace(customFilter["F_YKQC_OrgId_ca9"].ToString()) ? "" : string.Format("AND A.FPURCHASEORGID IN ({0})",
+ Convert.ToString(customFilter["F_YKQC_OrgId_ca9"]));
+ //添加组织过滤条件
+ strwhere.AppendLine(org);
+ //日期
+ string startValue = (customFilter["F_YKQC_Date_apv"] == null) ? string.Empty :
+ Convert.ToDateTime(customFilter["F_YKQC_Date_apv"]).ToString("yyyy-MM-dd");
+ string endValue = (customFilter["F_YKQC_Date_tzk"] == null) ? string.Empty :
+ Convert.ToDateTime(customFilter["F_YKQC_Date_tzk"]).ToString("yyyy-MM-dd");
+ //添加日期过滤条件
+ strwhere.AppendLine(string.Format("AND FDate >= '{0}' AND FDate <= '{1}'",startValue,endValue));
+ return strwhere.ToString();
+ }
+
+ //获取排序语句
+ private string OrderColumn(IRptParams filter)
+ {
+ //初始化排序字符串
+ string OrderBy = "";
+ string datasort = Convert.ToString(filter.FilterParameter.SortString);//获取排序条件
+ if (datasort != "")
+ {
+ OrderBy = "" + datasort + "";
+ }
+ else
+ {
+ OrderBy = "FID";
+ }
+
+ return OrderBy;
+ }
+ }
+}