123
This commit is contained in:
parent
d833386aa2
commit
9837459454
185
Pilot.Report.Exploitation/SBUYingShouBiao/SBUYingShouBiao.cs
Normal file
185
Pilot.Report.Exploitation/SBUYingShouBiao/SBUYingShouBiao.cs
Normal file
@ -0,0 +1,185 @@
|
||||
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;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Text;
|
||||
|
||||
namespace Pilot.Report.Exploitation.SBUYingShouBiao
|
||||
{
|
||||
[Description("应收款情况表(SBU)报表插件"), HotUpdate]
|
||||
public class SBUYingShouBiaoReport : 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);
|
||||
////获取起始日期
|
||||
//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");
|
||||
////添加标题信息
|
||||
//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<string> list = new List<string>();
|
||||
//初始化结果字符串
|
||||
string result = string.Empty;
|
||||
//如果组织ID字符串不为空
|
||||
if (String.IsNullOrEmpty(orgIdStrings["Id"].ToString()))
|
||||
{
|
||||
//获取查询服务
|
||||
IQueryService service = Kingdee.BOS.Contracts.ServiceFactory.GetService<IQueryService>(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*/
|
||||
|
||||
", 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_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);
|
||||
}
|
||||
|
||||
//日期
|
||||
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));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
10
应收款SBU的SQL.sql
Normal file
10
应收款SBU的SQL.sql
Normal file
@ -0,0 +1,10 @@
|
||||
SELECT ISNULL(SBU,'其他') AS SBU,SUM([1-6个月]*a.汇率) [1-6个月],SUM([7-12个月]*a.汇率) [7-12个月],SUM([1-2年]*a.汇率)[1-2年],SUM([2-3年]*a.汇率) [2-3年],SUM([4-5年]*a.汇率) [4-5年],SUM([5年以上]*a.汇率) [5年以上]
|
||||
--,[回款额]=(SELECT 1 FROM T_AR_RECEIVEBILL aa WHERE CONCAT(',', aa.F_contractnumber ,',') LIKE (SELECT )
|
||||
|
||||
FROM ZRP_YingShouMingXi_yuyubo a
|
||||
GROUP BY SBU
|
||||
|
||||
SELECT [回款额]=(SELECT SUM(F_Amount*FEXCHANGERATE) FROM T_AR_RECEIVEBILL aa WHERE CONCAT(',', aa.F_contractnumber ,',') LIKE CONCAT(',', a.[纸质合同号] ,',')
|
||||
AND
|
||||
|
||||
) FROM ZRP_YingShouMingXi_yuyubo a
|
||||
153
收款单核销流水存储过程.sql
Normal file
153
收款单核销流水存储过程.sql
Normal file
@ -0,0 +1,153 @@
|
||||
|
||||
|
||||
-- 检查存储过程是否存在,存在则删除 P202502080013
|
||||
IF OBJECT_ID('dbo.[PR_YingShouSBU_yuyubo]', 'P') IS NOT NULL
|
||||
BEGIN
|
||||
DROP PROCEDURE dbo.PR_YingShouSBU_yuyubo;
|
||||
PRINT '存储过程 dbo.[PR_YingShouSBU_yuyubo] 已删除';
|
||||
END
|
||||
GO
|
||||
|
||||
-- 创建新的存储过程
|
||||
CREATE PROCEDURE dbo.PR_YingShouSBU_yuyubo @BeginDATE DATETIME='2025-01-01'
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
DELETE [ZZZ_HeXiaoBook] WHERE [ShouKuanFDate]>=@BeginDATE
|
||||
|
||||
DECLARE @FDATE DATETIME,@FBILLNO NVARCHAR(200),@ShouKuanFID INT,@FSALEORGID INT ,@F_contractnumber NVARCHAR(2000),@fid2 INT,@fid3 INT,@amount DECIMAL(18,2);
|
||||
-- 1. 声明游标
|
||||
DECLARE cursor_name2 CURSOR FOR
|
||||
SELECT FDATE,FBILLNO,FID,FSALEORGID,F_contractnumber FROM T_AR_RECEIVEBILL
|
||||
WHERE FDOCUMENTSTATUS='C' AND FDATE>=@BeginDATE
|
||||
ORDER BY FDATE
|
||||
|
||||
OPEN cursor_name2;
|
||||
FETCH NEXT FROM cursor_name2
|
||||
INTO @FDATE,
|
||||
@FBILLNO,
|
||||
@ShouKuanFID,
|
||||
@FSALEORGID,
|
||||
@F_contractnumber
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
BEGIN
|
||||
---销售的自动核销记录单--
|
||||
SELECT @fid2=0,@fid3=0;
|
||||
SELECT @fid2=FID FROM dbo.T_AutoWrireRecordEntry2 WHERE FBILLNO3=@FBILLNO
|
||||
IF(@fid2>0)
|
||||
begin
|
||||
SELECT @FDATE=ISNULL(F_YeWuDate,FCREATEDATE),@fid3=FID FROM T_AutoWrireRecord
|
||||
WHERE FID=@fid2 AND FDOCUMENTSTATUS='C'
|
||||
IF(@fid3>0)
|
||||
BEGIN
|
||||
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
|
||||
([XiaoShouFid]
|
||||
,[XiaoShouBillNo]
|
||||
,[XiaoShouHeTong]
|
||||
,[ShouKuanFid]
|
||||
,[ShouKuanBillNo]
|
||||
,[ShouKuanFDate]
|
||||
,[BenCiHeXiao]
|
||||
,[FSaleOrgId],Note,NoteFid,FExchangeRate,FSettleCurrId,FLOCALCURRID)
|
||||
( SELECT a.fid,a.FBILLNO,a.F_CONTRACTNUMBER,@ShouKuanFID,@FBILLNO,@FDATE
|
||||
,(CASE WHEN b.FALLAMOUNT22<c.FALLAMOUNT33 THEN b.FALLAMOUNT22 ELSE c.FALLAMOUNT33 END)
|
||||
,@FSALEORGID,'销售的自动核销记录单',@fid2,dd.FExchangeRate,FSettleCurrId,FLocalCurrId FROM T_SAL_ORDER a
|
||||
LEFT JOIN T_AutoWrireRecordEntry b ON a.FBILLNO=b.FBILLNO2
|
||||
LEFT JOIN T_AutoWrireRecordEntry2 c ON b.FID=c.FID
|
||||
LEFT JOIN T_SAL_ORDERFIN dd ON a.FID=dd.FID
|
||||
WHERE b.FID=@fid2 AND c.FBILLNO3=@FBILLNO )
|
||||
END
|
||||
end
|
||||
------发货通知单的核销记录单--------------
|
||||
SELECT @fid2=0,@fid3=0,@F_contractnumber='',@amount=0;
|
||||
SELECT @fid2=FID FROM dbo.VRYF_t_Cust_Entry100025 WHERE FBILLNO3=@FBILLNO
|
||||
|
||||
SELECT @FDATE=FCREATEDATE,@fid3=FID FROM VRYF_t_Cust100015
|
||||
WHERE FID=@fid2 AND FDOCUMENTSTATUS='C'
|
||||
IF(@fid3>0)
|
||||
BEGIN
|
||||
SELECT @F_contractnumber=FCONTRACTNUMBER,@amount=FALLAMOUNT22 FROM VRYF_t_Cust_Entry100024 a WHERE a.FID=@fid2
|
||||
|
||||
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
|
||||
([XiaoShouFid]
|
||||
,[XiaoShouBillNo]
|
||||
,[XiaoShouHeTong]
|
||||
,[ShouKuanFid]
|
||||
,[ShouKuanBillNo]
|
||||
,[ShouKuanFDate]
|
||||
,[BenCiHeXiao]
|
||||
,[FSaleOrgId],Note,NoteFid,FExchangeRate,FSettleCurrId,FLOCALCURRID)
|
||||
( SELECT a.fid,a.FBILLNO,a.F_CONTRACTNUMBER,@ShouKuanFID,@FBILLNO,@FDATE,@amount,@FSALEORGID,'发货通知单的核销记录单',@fid2, dd.FExchangeRate,FSettleCurrId,FLOCALCURRID FROM T_SAL_ORDER a
|
||||
LEFT JOIN T_SAL_ORDERFIN dd ON a.FID=dd.FID
|
||||
WHERE a.FSALEORGID=[FSaleOrgId] and a.F_CONTRACTNUMBER=@F_contractnumber)
|
||||
END
|
||||
-----应收核销记录表---------
|
||||
SELECT @fid2=0,@fid3=0,@F_contractnumber='',@amount=0;
|
||||
SELECT d.FDATE,FBILLFORMID, FVERIFYSEQ,FSOURCETYPE,FCURWRITTENOFFAMOUNTFOR,FCURWRITTENOFFAMOUNT,FSRCBILLNO,b.FEXCHANGERATE,FCURTAXMATCHAMOUNT,FCURNOTAXMATCHAMOUNT ,FSRCBILLID
|
||||
INTO #temp2
|
||||
FROM T_AR_RECMacthLog a
|
||||
LEFT JOIN dbo.T_AR_RECMACTHLOGENTRY b ON a.FID=b.FID
|
||||
LEFT JOIN T_BAS_BILLTYPE c ON b.FSOURCETYPE=c.FBILLTYPEID
|
||||
LEFT JOIN t_AR_RECEIVEBILL d ON d.FBILLNO=b.FSRCBILLNO
|
||||
WHERE FVERIFYSEQ IN (SELECT FVERIFYSEQ FROM T_AR_RECMacthLog a
|
||||
LEFT JOIN dbo.T_AR_RECMACTHLOGENTRY b ON a.FID=b.FID WHERE b.FSRCBILLNO=@FBILLNO AND b.FSOURCETYPE='36cf265bd8c3452194ed9c83ec5e73d2')
|
||||
--SELECT * FROM #temp2
|
||||
--SELECT @amount= SUM(FCURWRITTENOFFAMOUNT) FROM #temp2 WHERE FBILLFORMID !='AR_RECEIVEBILL'
|
||||
SELECT @fid2=FSRCBILLID,@fid3=FVERIFYSEQ FROM #temp2 WHERE FBILLFORMID ='AR_receivable'
|
||||
--SELECT @F_contractnumber= F_PAPERPRO FROM T_AR_receivable WHERE fid=@fid2
|
||||
--PRINT '合同号:'+@F_contractnumber;
|
||||
IF(@fid2>0)
|
||||
BEGIN
|
||||
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
|
||||
([XiaoShouFid]
|
||||
,[XiaoShouBillNo]
|
||||
,[XiaoShouHeTong]
|
||||
,[ShouKuanFid]
|
||||
,[ShouKuanBillNo]
|
||||
,[ShouKuanFDate]
|
||||
,[BenCiHeXiao]
|
||||
,[FSaleOrgId],Note,NoteFid,FExchangeRate,FSettleCurrId,FLOCALCURRID)
|
||||
( SELECT a.fid,a.FBILLNO,a.F_CONTRACTNUMBER,@ShouKuanFID,@FBILLNO,@FDATE,d.FCURWRITTENOFFAMOUNTFOR,@FSALEORGID,'应收核销记录表',@fid3
|
||||
,dd.FEXCHANGERATE,FSettleCurrId,FLOCALCURRID
|
||||
FROM T_SAL_ORDER a
|
||||
LEFT JOIN T_SAL_ORDERFIN dd ON a.FID=dd.FID
|
||||
LEFT JOIN T_AR_receivable c ON c.F_PAPERPRO=a.F_CONTRACTNUMBER AND c.FSALEORGID=a.FSALEORGID
|
||||
LEFT JOIN #temp2 d ON d.FSRCBILLID=c.fid AND d.FBILLFORMID ='AR_receivable'
|
||||
WHERE a.FSALEORGID=@FSALEORGID AND d.FBILLFORMID='AR_receivable')
|
||||
end
|
||||
DROP TABLE #temp2
|
||||
|
||||
|
||||
--------历史核销记录单--------------
|
||||
IF(@FSALEORGID=100302)
|
||||
begin
|
||||
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
|
||||
([XiaoShouFid]
|
||||
,[XiaoShouBillNo]
|
||||
,[XiaoShouHeTong]
|
||||
,[ShouKuanFid]
|
||||
,[ShouKuanBillNo]
|
||||
,[ShouKuanFDate]
|
||||
,[BenCiHeXiao]
|
||||
,[FSaleOrgId],Note,NoteFid,FExchangeRate,FSettleCurrId,FLOCALCURRID)
|
||||
( SELECT a.fid,a.FBILLNO,a.F_CONTRACTNUMBER,@ShouKuanFID,@FBILLNO,@FDATE,F_shareAmount,@FSALEORGID,'历史核销记录单',c.FEntryID ,dd.FEXCHANGERATE,FSettleCurrId,FLOCALCURRID FROM T_SAL_ORDER a
|
||||
LEFT JOIN VRYF_t_Cust_Entry100021 c ON a.F_CONTRACTNUMBER=c.F_ORDERNO
|
||||
LEFT JOIN T_SAL_ORDERFIN dd ON a.FID=dd.FID
|
||||
WHERE a.FSALEORGID=[FSaleOrgId] AND F_matched=1 AND c.F_Receiptnumber=@FBILLNO )
|
||||
END
|
||||
|
||||
-- 获取下一条记录
|
||||
FETCH NEXT FROM cursor_name2
|
||||
INTO @FDATE,
|
||||
@FBILLNO,
|
||||
@ShouKuanFID,
|
||||
@FSALEORGID,
|
||||
@F_contractnumber;
|
||||
END
|
||||
|
||||
-- 4. 关闭游标
|
||||
CLOSE cursor_name2;
|
||||
|
||||
-- 5. 释放游标资源
|
||||
DEALLOCATE cursor_name2;
|
||||
END
|
||||
Loading…
x
Reference in New Issue
Block a user