This commit is contained in:
2025-07-07 17:05:11 +08:00
parent 7d9ab5b504
commit f2034ff913

View File

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