0
This commit is contained in:
@@ -0,0 +1,349 @@
|
||||
using Kingdee.BOS.App.Data;
|
||||
using Kingdee.BOS;
|
||||
using Kingdee.BOS.Contracts.Report;
|
||||
using Kingdee.BOS.Core.Report;
|
||||
using Kingdee.BOS.Util;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Kingdee.BOS.Orm.DataEntity;
|
||||
using Pilot.Report.Exploitation.PublicClass;
|
||||
|
||||
namespace Pilot.Report.Exploitation.ContractDetails
|
||||
{
|
||||
[Description("【列表插件】派诺合同明细报表【报表】"), HotUpdate]
|
||||
public class ContractDetailsReport: SysReportBaseService
|
||||
{
|
||||
private string tableNameView = EnvironmentTEST.tableNameView_TEST;
|
||||
|
||||
/// <summary>
|
||||
/// 初始化
|
||||
/// </summary>
|
||||
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<DecimalControlField>
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 报表列表头
|
||||
/// </summary>
|
||||
/// <param name="filter"></param>
|
||||
/// <returns></returns>
|
||||
public override ReportHeader GetReportHeaders(IRptParams filter)
|
||||
{
|
||||
base.GetReportHeaders(filter);
|
||||
|
||||
ReportHeader header = new ReportHeader();
|
||||
|
||||
header.AddChild("Month", new LocaleValue("月份"), SqlStorageType.Sqlvarchar);
|
||||
header.AddChild("BelongsRegion", new LocaleValue("所属区域"), SqlStorageType.Sqlvarchar);
|
||||
header.AddChild("Salesman", new LocaleValue("销售员"), SqlStorageType.Sqlvarchar);
|
||||
header.AddChild("PurchasesUnit", new LocaleValue("购货单位"), SqlStorageType.Sqlvarchar);
|
||||
header.AddChild("SignedDate", new LocaleValue("签订日期"), SqlStorageType.SqlDatetime);
|
||||
header.AddChild("OrderNumber", new LocaleValue("订单号"), SqlStorageType.Sqlvarchar);
|
||||
header.AddChild("ProductsName", new LocaleValue("产品名称"), SqlStorageType.Sqlvarchar);
|
||||
header.AddChild("Model/Size/Standard", new LocaleValue("型号/规格/标准"), SqlStorageType.Sqlvarchar);
|
||||
header.AddChild("Number/Platform", new LocaleValue("数量/台"), SqlStorageType.SqlDecimal);
|
||||
header.AddChild("Price/Platform", new LocaleValue("单价元/台"), SqlStorageType.SqlDecimal);
|
||||
header.AddChild("ContractPrice", new LocaleValue("合同总价"), SqlStorageType.SqlDecimal);
|
||||
header.AddChild("NumberDelivered", new LocaleValue("已交货数"), SqlStorageType.SqlDecimal);
|
||||
header.AddChild("NumberUnDelivered", new LocaleValue("未交货数"), SqlStorageType.SqlDecimal);
|
||||
header.AddChild("Invoicing", new LocaleValue("开票情况"), SqlStorageType.Sqlvarchar);
|
||||
header.AddChild("ProjectName", new LocaleValue("项目名称"), SqlStorageType.Sqlvarchar);
|
||||
header.AddChild("ProjectField", new LocaleValue("所属领域"), SqlStorageType.Sqlvarchar);
|
||||
header.AddChild("BusinessType", new LocaleValue("集采业务分类"), SqlStorageType.Sqlvarchar);
|
||||
header.AddChild("ClientQuality", new LocaleValue("客户性质"), SqlStorageType.Sqlvarchar);
|
||||
header.AddChild("SBU", new LocaleValue("SBU"), SqlStorageType.Sqlvarchar);
|
||||
|
||||
foreach (var item in header.GetChilds())
|
||||
{
|
||||
item.Width = 160;
|
||||
}
|
||||
return header;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示报表数据
|
||||
/// </summary>
|
||||
/// <param name="filter"></param>
|
||||
/// <param name="tableName"></param>
|
||||
public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
|
||||
{
|
||||
DynamicObject customFilter = filter.FilterParameter.CustomFilter;
|
||||
|
||||
// 下单时间
|
||||
string fDate = customFilter["FDate"]?.ToString();
|
||||
// 纸质合同号
|
||||
string fPaperContract = customFilter["FPaperContract"]?.ToString();
|
||||
// 组织
|
||||
var organizationList = (customFilter["FZuZhi"] as DynamicObjectCollection)?.Select(n => (n["FZuZhi"] as DynamicObject)["ID"].ToString()).ToList();
|
||||
|
||||
var organization = organizationList == null ? "" : (string.Join(",", organizationList));
|
||||
|
||||
base.BuilderReportSqlAndTempTable(filter, tableName);
|
||||
|
||||
string sql = string.Format(@"/*dialect*/
|
||||
Select
|
||||
MONTH(A.FDATE) as 'Month', --月份
|
||||
(SELECT FNAME FROM T_BD_DEPARTMENT_L WHERE FDEPTID = A.FSaleDeptId) as 'BelongsRegion', --所属区域
|
||||
(Select FNAME From V_BD_SALESMAN_L Where fid = A.FSalerId) as 'Salesman', --销售员
|
||||
(SELECT FNAME FROM T_BD_CUSTOMER_L WHERE FCUSTID = A.FCustId) as 'PurchasesUnit', --购货单位
|
||||
A.FDATE as 'SignedDate', --签订日期
|
||||
A.F_contractnumber as 'OrderNumber', --订单号
|
||||
C.FNAME as 'ProductsName', --产品名称
|
||||
C.FSPECIFICATION as 'ModelSizeStandard', --型号\规格\标准
|
||||
B.FQty as 'NumberPlatform', --数量/台
|
||||
(Select FTaxPrice From T_SAL_ORDERENTRY_F Where FENTRYID = B.FENTRYID) as 'PricePlatform', --单价元/台
|
||||
(Select FAllAmount_LC From T_SAL_ORDERENTRY_F Where FENTRYID = B.FENTRYID) as 'ContractPrice', --合同总价
|
||||
(Select FStockOutQty From T_SAL_ORDERENTRY_R Where FENTRYID = B.FENTRYID) as 'NumberDelivered', --已交货数
|
||||
(Select FRemainOutQty From T_SAL_ORDERENTRY_R Where FENTRYID = B.FENTRYID) as 'NumberUnDelivered', --未交货数
|
||||
CASE WHEN
|
||||
(D.FOPENSTATUS) --A=空,B=部分,C=完全
|
||||
= 'A'
|
||||
Then '空'
|
||||
When (D.FOPENSTATUS) --A=空,B=部分,C=完全
|
||||
= 'B'
|
||||
Then '部分'
|
||||
When (D.FOPENSTATUS) --A=空,B=部分,C=完全
|
||||
= 'C'
|
||||
Then '完全'
|
||||
Else ''
|
||||
END as 'Invoicing', --开票情况 A.F_VRYF_Assistant_k79
|
||||
(Select FNAME From T_BAS_PREBDONE_L Where FID = A.F_projectname) as 'ProjectName', --项目名称
|
||||
CASE WHEN --项目所属1
|
||||
(Select
|
||||
aq.F_Projectfield
|
||||
From
|
||||
T_BAS_PREBDTHREE aq
|
||||
JOIN
|
||||
T_BAS_PREBDTHREE_L aw
|
||||
on aq.FID = aw.FID
|
||||
Where aq.FID = A.F_BON) = 1
|
||||
THEN '建筑楼宇'
|
||||
WHEN --项目所属2
|
||||
(Select
|
||||
aq.F_Projectfield
|
||||
From
|
||||
T_BAS_PREBDTHREE aq
|
||||
JOIN
|
||||
T_BAS_PREBDTHREE_L aw
|
||||
on aq.FID = aw.FID
|
||||
Where aq.FID = A.F_BON) = 2
|
||||
THEN '医疗卫生'
|
||||
WHEN --项目所属3
|
||||
(Select
|
||||
aq.F_Projectfield
|
||||
From
|
||||
T_BAS_PREBDTHREE aq
|
||||
JOIN
|
||||
T_BAS_PREBDTHREE_L aw
|
||||
on aq.FID = aw.FID
|
||||
Where aq.FID = A.F_BON) = 3
|
||||
THEN '学校'
|
||||
WHEN --项目所属4
|
||||
(Select
|
||||
aq.F_Projectfield
|
||||
From
|
||||
T_BAS_PREBDTHREE aq
|
||||
JOIN
|
||||
T_BAS_PREBDTHREE_L aw
|
||||
on aq.FID = aw.FID
|
||||
Where aq.FID = A.F_BON) = 4
|
||||
THEN '文娱康乐'
|
||||
WHEN --项目所属5
|
||||
(Select
|
||||
aq.F_Projectfield
|
||||
From
|
||||
T_BAS_PREBDTHREE aq
|
||||
JOIN
|
||||
T_BAS_PREBDTHREE_L aw
|
||||
on aq.FID = aw.FID
|
||||
Where aq.FID = A.F_BON) = 5
|
||||
THEN '市政工程'
|
||||
WHEN --项目所属6
|
||||
(Select
|
||||
aq.F_Projectfield
|
||||
From
|
||||
T_BAS_PREBDTHREE aq
|
||||
JOIN
|
||||
T_BAS_PREBDTHREE_L aw
|
||||
on aq.FID = aw.FID
|
||||
Where aq.FID = A.F_BON) = 6
|
||||
THEN '能源'
|
||||
WHEN --项目所属7
|
||||
(Select
|
||||
aq.F_Projectfield
|
||||
From
|
||||
T_BAS_PREBDTHREE aq
|
||||
JOIN
|
||||
T_BAS_PREBDTHREE_L aw
|
||||
on aq.FID = aw.FID
|
||||
Where aq.FID = A.F_BON) = 7
|
||||
THEN '工业'
|
||||
WHEN --项目所属8
|
||||
(Select
|
||||
aq.F_Projectfield
|
||||
From
|
||||
T_BAS_PREBDTHREE aq
|
||||
JOIN
|
||||
T_BAS_PREBDTHREE_L aw
|
||||
on aq.FID = aw.FID
|
||||
Where aq.FID = A.F_BON) = 8
|
||||
THEN '交通运输'
|
||||
ELSE ''
|
||||
END as 'ProjectField', --项目所属领域
|
||||
CASE WHEN --集采业务分类
|
||||
A.F_PurchasingPro = 'LH'
|
||||
THEN '龙湖'
|
||||
WHEN --集采业务分类
|
||||
A.F_PurchasingPro = 'BL'
|
||||
THEN '保利地产'
|
||||
WHEN --集采业务分类
|
||||
A.F_PurchasingPro = 'HR'
|
||||
THEN '华润'
|
||||
WHEN --集采业务分类
|
||||
A.F_PurchasingPro = 'N'
|
||||
THEN '否'
|
||||
WHEN --集采业务分类
|
||||
A.F_PurchasingPro = 'HEF'
|
||||
THEN '华润非集采'
|
||||
WHEN --集采业务分类
|
||||
A.F_PurchasingPro = 'LD'
|
||||
THEN '绿地'
|
||||
ELSE ''
|
||||
END as 'BusinessType', --集采业务分类 LH=龙湖,BL=保利地产,HR=华润,N=否,HEF=华润非集采,LD=绿地
|
||||
(Select wa.FDATAVALUE From
|
||||
T_BAS_ASSISTANTDATAENTRY aw
|
||||
JOIN
|
||||
T_BAS_ASSISTANTDATAENTRY_L wa
|
||||
on aw.FENTRYID = wa.FENTRYID
|
||||
Where wa.FENTRYID = (Select F_CreditClassification From T_BD_CUSTOMER where FCUSTID = A.FCustId)
|
||||
AND FDocumentStatus = 'C' AND FFORBIDSTATUS = 'A') as 'ClientQuality', --客户性质
|
||||
(Select V1.区域 From
|
||||
{0} V1
|
||||
JOIN
|
||||
(Select FName From V_BD_SALESMAN_L
|
||||
Where
|
||||
fid in (Select A1.FSALEID From
|
||||
(Select a2.* From
|
||||
T_PerformanceSharing a1
|
||||
JOIN
|
||||
T_PerformanceSharingEntry a2
|
||||
on a1.FID = a2.FID
|
||||
Where a1.FDocumentStatus = 'C') A1
|
||||
JOIN
|
||||
T_PerformanceSharing_LK A2
|
||||
on A2.FID = A1.FID
|
||||
Where A2.FSTableName = 'T_SAL_ORDER1'
|
||||
AND A2.FSId = B.FID AND A1.FSALEID = A.FSalerId
|
||||
)) V2
|
||||
on V1.名称 = V2.FNAME GROUP BY V1.区域)
|
||||
as 'SBU' --SBU
|
||||
Into #TempTable1 ", tableNameView);
|
||||
|
||||
sql += string.Format(@"From
|
||||
T_SAL_ORDER A
|
||||
JOIN
|
||||
T_SAL_ORDERENTRY B
|
||||
on B.FID = A.FID
|
||||
Left JOIN
|
||||
(Select aq.FMATERIALID,qa.FNAME,aq.F_XHDL,aq.F_116,qa.FSpecification
|
||||
From
|
||||
T_BD_MATERIAL aq
|
||||
Left JOIN
|
||||
T_BD_MATERIAL_L qa
|
||||
on aq.FMATERIALID = qa.FMATERIALID) C
|
||||
on B.FMaterialId = C.FMATERIALID
|
||||
LEFT JOIN
|
||||
(Select A2.FOPENSTATUS,A1.FID,A1.FORDERNUMBER From T_AR_RECEIVABLEENTRY A1 JOIN T_AR_RECEIVABLE A2 on A1.FID = A2.FID
|
||||
Where A2.FSETACCOUNTTYPE = 3 Group by A2.FOPENSTATUS,A1.FID,A1.FORDERNUMBER) D on A.FBILLNO = D.FORDERNUMBER
|
||||
--条件
|
||||
Where A.FDocumentStatus = 'C'
|
||||
AND A.FCloseStatus = 'A'
|
||||
AND A.FCancelStatus = 'A'");
|
||||
|
||||
if (!string.IsNullOrEmpty(fDate))
|
||||
{
|
||||
sql += string.Format(@" AND A.FDATE = '{0}'", fDate);
|
||||
}
|
||||
if (!string.IsNullOrEmpty(fPaperContract))
|
||||
{
|
||||
sql += string.Format(@" AND A.F_contractnumber like '%{0}%'", fPaperContract);
|
||||
}
|
||||
if (!string.IsNullOrEmpty(organization))
|
||||
{
|
||||
sql += string.Format(@" AND A.FSaleOrgId in ({0})", organization);
|
||||
}
|
||||
|
||||
|
||||
sql += string.Format(@";");
|
||||
|
||||
sql += string.Format(@"/*dialect*/
|
||||
Select
|
||||
ROW_NUMBER() OVER (ORDER BY SignedDate) AS FID,
|
||||
ROW_NUMBER() OVER (ORDER BY SignedDate) AS FIDENTITYID,
|
||||
*
|
||||
into {0}
|
||||
From #TempTable1", tableName);
|
||||
|
||||
DBUtils.Execute(this.Context, sql);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取前端组件转换过滤条件
|
||||
/// </summary>
|
||||
/// <param name="filter"></param>
|
||||
/// <returns></returns>
|
||||
public override ReportTitles GetReportTitles(IRptParams filter)
|
||||
{
|
||||
ReportTitles reportTitles = new ReportTitles();
|
||||
DynamicObject customFilter = filter.FilterParameter.CustomFilter;
|
||||
|
||||
if (customFilter != null)
|
||||
{
|
||||
// 下单时间
|
||||
string fDate = customFilter["FDate"]?.ToString();
|
||||
// 纸质合同号
|
||||
string fPaperContract = customFilter["FPaperContract"]?.ToString();
|
||||
// 组织
|
||||
var organizationList = (customFilter["FZuZhi"] as DynamicObjectCollection)?.Select(n => (n["FZuZhi"] as DynamicObject)["Name"].ToString()).ToList();
|
||||
|
||||
//这里是报表页面的标识
|
||||
reportTitles.AddTitle("FPaperContract", fPaperContract == null ? "" : fPaperContract);
|
||||
reportTitles.AddTitle("FDate", fDate == null ? "" : Convert.ToDateTime(fDate).ToString("yyyy-MM-dd"));
|
||||
reportTitles.AddTitle("FZuZhi", organizationList == null ? "" : string.Join(",", organizationList));
|
||||
}
|
||||
return reportTitles;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user