From f2034ff91390bebd6d0b92f22f4cf3fa057d47b8 Mon Sep 17 00:00:00 2001 From: yuyubo <1870149533@qq.com> Date: Mon, 7 Jul 2025 17:05:11 +0800 Subject: [PATCH] 1 --- .../SBUYingShouBiao/SBUYingShouBiao.cs | 139 +++++++++++++----- 1 file changed, 102 insertions(+), 37 deletions(-) diff --git a/Pilot.Report.Exploitation/SBUYingShouBiao/SBUYingShouBiao.cs b/Pilot.Report.Exploitation/SBUYingShouBiao/SBUYingShouBiao.cs index c29b6c1..cf0ad97 100644 --- a/Pilot.Report.Exploitation/SBUYingShouBiao/SBUYingShouBiao.cs +++ b/Pilot.Report.Exploitation/SBUYingShouBiao/SBUYingShouBiao.cs @@ -100,41 +100,88 @@ namespace Pilot.Report.Exploitation.SBUYingShouBiao //创建表头对象 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.SqlMoney); + header.AddChild("已到期应收账款", new LocaleValue("已到期应收账款(含子公司)", this.Context.UserLocale.LCID), SqlStorageType.SqlMoney); //一级表头 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); + header1.AddChild("A6", new LocaleValue("1-6个月", this.Context.UserLocale.LCID), SqlStorageType.SqlMoney); + header1.AddChild("A12", new LocaleValue("7-12个月", this.Context.UserLocale.LCID), SqlStorageType.SqlMoney); + header1.AddChild("A2Y", new LocaleValue("1-2年", this.Context.UserLocale.LCID), SqlStorageType.SqlMoney); + header1.AddChild("A3Y", new LocaleValue("2-3年", this.Context.UserLocale.LCID), SqlStorageType.SqlMoney); + header1.AddChild("A5Y", new LocaleValue("4-5年", this.Context.UserLocale.LCID), SqlStorageType.SqlMoney); + header1.AddChild("A5YY", new LocaleValue("5年以上", this.Context.UserLocale.LCID), SqlStorageType.SqlMoney); + header.AddChild("本年回款额", new LocaleValue("本年回款额(含子公司)", this.Context.UserLocale.LCID), SqlStorageType.SqlMoney); + header.AddChild("本年专责小组回款额", new LocaleValue("本年专责小组回款额", this.Context.UserLocale.LCID), SqlStorageType.SqlMoney); + header.AddChild("本年实际业绩额", new LocaleValue("本年实际业绩额(含往年变更金额)", this.Context.UserLocale.LCID), SqlStorageType.SqlMoney); + header.AddChild("上年度应收额", new LocaleValue("上年度应收额", this.Context.UserLocale.LCID), SqlStorageType.SqlMoney); + header.AddChild("本年专责小组应收额", new LocaleValue("本年专责小组应收额", this.Context.UserLocale.LCID), SqlStorageType.SqlMoney); + header.AddChild("回款率", new LocaleValue("回款率", this.Context.UserLocale.LCID), SqlStorageType.SqlMoney); + header.AddChild("预发货到期应收账款", new LocaleValue("预发货到期应收账款", this.Context.UserLocale.LCID), SqlStorageType.SqlMoney); + header.AddChild("预发货回款额", new LocaleValue("预发货回款额", this.Context.UserLocale.LCID), SqlStorageType.SqlMoney); + header.AddChild("预发货回款率", new LocaleValue("预发货回款率", this.Context.UserLocale.LCID), SqlStorageType.SqlMoney); + header.AddChild("回款目标", new LocaleValue("回款目标", this.Context.UserLocale.LCID), SqlStorageType.SqlMoney); + //header.AddChild("应收款上限", new LocaleValue("应收款上限", this.Context.UserLocale.LCID), SqlStorageType.SqlMoney); + //header.AddChild("回款达标率", new LocaleValue("回款达标率", this.Context.UserLocale.LCID), SqlStorageType.SqlMoney); return header; } //创建临时表 public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) { + DateTime now = DateTime.Now.AddDays(1).Date; + string begin = now.Year + "-01-01"; + string end = now.ToString(); //获取过滤条件 string Filter = GetFilterWhere(filter); /* 取数SQL SQL查询字符串,提取所需数据并将结果存入临时表 */ - string sql = string.Format(@"/*dialect*/ + string sql = string.Format($@"/*dialect*/ +SELECT ROW_NUMBER() OVER(ORDER BY SBU) AS FIDENTITYID,a.*,[上年度应收额]=[上年度应收额2]-[本年回款额] +,[回款率]=CASE WHEN ([本年实际业绩额]+[上年度应收额2]-[本年回款额]-[本年专责小组应收额]) <>0 THEN ([本年回款额]-[本年专责小组回款额])/([本年实际业绩额]+[上年度应收额2]-[本年回款额]-[本年专责小组应收额]) +ELSE 0 END +,[预发货回款率]=CASE WHEN [预发货到期应收账款] >0 THEN [预发货回款额]/[预发货到期应收账款] ELSE 0 end +,[回款目标]=0.0 +into {tableName} +FROM ( +SELECT ISNULL(SBU,'其他') AS SBU +,SUM([1-6个月]*A.汇率) [A6],SUM([7-12个月]*A.汇率) [A12],SUM([1-2年]*A.汇率)[A2Y],SUM([2-3年]*A.汇率) [A3Y],SUM([4-5年]*A.汇率) [A5Y],SUM([5年以上]*A.汇率) [A5YY] -", tableName, Filter); +,[本年回款额]=ISNULL((SELECT SUM(aa.[BenCiHeXiao]*aa.[FExchangeRate]) FROM [ZZZ_HeXiaoBook] aa +WHERE [XiaoShouFid] IN (SELECT akk.销售单主键ID FROM ZRP_YingShouMingXi_yuyubo akk WHERE akk.SBU=a.SBU ) + AND aa.[ShouKuanFDate] >='{begin}' AND aa.[ShouKuanFDate]< '{end}'),0) + ,[本年专责小组回款额]=ISNULL((SELECT SUM(aa.[BenCiHeXiao]*aa.[FExchangeRate]) FROM [ZZZ_HeXiaoBook] aa +WHERE [XiaoShouFid] IN (SELECT akk.销售单主键ID FROM ZRP_YingShouMingXi_yuyubo akk WHERE akk.SBU=a.SBU AND akk.[账龄月]>12 ) + AND aa.[ShouKuanFDate] >='{begin}' AND aa.[ShouKuanFDate]< '{end}'),0) +,[本年实际业绩额]= + (ISNULL(( + SELECT SUM( + CASE WHEN B.FCHANGEDATE IS not NULL AND b.FDate <'{begin}' THEN + aa.FBILLALLAMOUNT_LC - b.F_AMOUNTSTAR WHEN b.FDate >= '{begin}' THEN aa.FBILLALLAMOUNT_LC end ) +FROM T_SAL_ORDERFIN aa + LEFT JOIN T_SAL_ORDER B + ON aa.FID = B.FID +WHERE b.FDocumentStatus='C' AND aa.FID IN + ( + SELECT DISTINCT akk.销售单主键ID + FROM ZRP_YingShouMingXi_yuyubo akk + WHERE akk.SBU = a.SBU + ) + AND (( B.FCHANGEDATE >= '{begin}' AND B.FCHANGEDATE < '2026-01-01 00:00:00') OR (b.FDate >= '{begin}' AND B.FDate < '2026-01-01 00:00:00' ) ) + ) + ,0)) + ,[本年专责小组应收额]=ISNULL((SELECT SUM(aa.实际已出货应收款合计) FROM ZRP_YingShouMingXi_yuyubo aa where aa.账龄月>12 AND aa.SBU=A.SBU),0) + ,[上年度应收额2]=ISNULL((SELECT SUM(aa.应收款合计) FROM ZRP_YingShouMingXi_yuyubo aa where aa.SBU=A.SBU),0) + ,[预发货到期应收账款]=ISNULL((SELECT SUM(aa.到期金额*aa.汇率) FROM ZRP_YingShouMingXi_yuyubo aa where aa.收款条件 LIKE '款到发货%'AND aa.SBU=A.SBU),0) + ,[预发货回款额]=ISNULL((SELECT SUM(aa.累计到款金额*aa.[收款条件分摊比例]*0.01) FROM ZRP_YingShouMingXi_yuyubo aa where aa.收款条件 LIKE '款到发货%'AND aa.SBU=A.SBU AND aa.到期金额 >0),0) + ,[已到期应收账款]=SUM(a.到期金额*a.汇率) + FROM ZRP_YingShouMingXi_yuyubo a + {Filter} + GROUP BY a.SBU) a + + +"); //执行SQL并动态创建报表 DBUtils.ExecuteDynamicObject(this.Context, sql); } @@ -151,33 +198,51 @@ namespace Pilot.Report.Exploitation.SBUYingShouBiao if (orgFid != null) { string org = string.IsNullOrWhiteSpace(customFilter["F_YKQC_OrgId_uky"].ToString()) ? "" : - string.Format("AND A.FSaleOrgId IN ({0})", orgFid["Id"].Long2Int()); + string.Format("AND a.组织ID={0}", orgFid["Id"].Long2Int()); //添加组织过滤条件 strwhere.AppendLine(org); } - //日期 - string startValue = (customFilter["F_YKQC_Date_qtr"] == null) ? string.Empty : - Convert.ToDateTime(customFilter["F_YKQC_Date_qtr"]).ToString("yyyy-MM-dd"); - string endValue = (customFilter["F_YKQC_Date_83g"] == null) ? string.Empty : - Convert.ToDateTime(customFilter["F_YKQC_Date_83g"]).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)); - } + ////日期 + //string startValue = (customFilter["F_YKQC_Date_qtr"] == null) ? string.Empty : + // Convert.ToDateTime(customFilter["F_YKQC_Date_qtr"]).ToString("yyyy-MM-dd"); + //string endValue = (customFilter["F_YKQC_Date_83g"] == null) ? string.Empty : + // Convert.ToDateTime(customFilter["F_YKQC_Date_83g"]).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)); + 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("A6", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("A12", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("A2Y", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("A3Y", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("A5Y", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("A5YY", 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)); + 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; } }