PiolotTH_ReportFrom/YSZKDZBaoBiao/AccountsReceivableReport_XN.cs
liqionghai b3e4533917 1
2025-12-12 01:33:16 +08:00

293 lines
14 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Kingdee.BOS.App.Data;
using Kingdee.BOS;
using Kingdee.BOS.Contracts.Report;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Orm.DataEntity;
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.Core.Enums;
namespace Pilot.Report.Exploitation.AccountsReceivableStatements
{
/// <summary>
/// 应收账款对账报表【简易版】
/// </summary>
[Description("【服务插件】应收账款对账报表【兴诺简易版】取数"), HotUpdate]
public class AccountsReceivableReport_XN : SysReportBaseService
{
/// <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("Number", new LocaleValue("序号"), SqlStorageType.Sqlvarchar);
header.AddChild("DATE", new LocaleValue("签订日期"), SqlStorageType.SqlDatetime);
header.AddChild("CONTRACTNUMBER", new LocaleValue("订单号"), SqlStorageType.Sqlvarchar);
header.AddChild("ProjectName", new LocaleValue("项目名称"), SqlStorageType.Sqlvarchar);
header.AddChild("OrderAmount", new LocaleValue("订单金额"), SqlStorageType.SqlDecimal);
header.AddChild("K3发货数量", new LocaleValue("K3发货数量"), SqlStorageType.SqlDecimal);
header.AddChild("K3发货金额", new LocaleValue("K3发货金额"), SqlStorageType.SqlDecimal);
header.AddChild("星空发货数量", new LocaleValue("星空发货数量"), SqlStorageType.SqlDecimal);
header.AddChild("星空发货金额", new LocaleValue("星空发货金额"), SqlStorageType.SqlDecimal);
header.AddChild("ShipmentsAmount", new LocaleValue("总发货金额"), SqlStorageType.SqlDecimal);
header.AddChild("K3退货数量", new LocaleValue("K3退货数量"), SqlStorageType.SqlDecimal);
header.AddChild("K3退货金额", new LocaleValue("K3退货金额"), SqlStorageType.SqlDecimal);
header.AddChild("星空退货数量", new LocaleValue("星空退货数量"), SqlStorageType.SqlDecimal);
header.AddChild("星空退货金额", new LocaleValue("星空退货金额"), SqlStorageType.SqlDecimal);
header.AddChild("FBillAllAmount", new LocaleValue("总退货金额"), SqlStorageType.SqlDecimal);
header.AddChild("PPBillingDate", new LocaleValue("星空普票开票日期"), SqlStorageType.Sqlvarchar);
header.AddChild("PPFALLAmountFor", new LocaleValue("星空普票开票金额"), SqlStorageType.SqlDecimal);
header.AddChild("ZPBillingDate", new LocaleValue("星空专票开票日期"), SqlStorageType.Sqlvarchar);
header.AddChild("ZPFALLAmountFor", new LocaleValue("星空专票开票金额"), SqlStorageType.SqlDecimal);
header.AddChild("FALLAMOUNTFOR", new LocaleValue("总开票金额"), SqlStorageType.SqlDecimal);
header.AddChild("PaymentAmount", new LocaleValue("回款金额"), SqlStorageType.SqlDecimal);
header.AddChild("ShippedDebt", new LocaleValue("已出货欠款"), SqlStorageType.SqlDecimal);
header.AddChild("InvoicedDebt", new LocaleValue("已开票欠款"), SqlStorageType.SqlDecimal);
header.AddChild("OwedTickets", new LocaleValue("欠票"), SqlStorageType.SqlDecimal);
header.AddChild("IsEnded", new LocaleValue("是否已完结"), SqlStorageType.Sqlvarchar);
header.AddChild("FSalerId", new LocaleValue("销售员"), SqlStorageType.Sqlvarchar);
header.AddChild("Remark", new LocaleValue("备注"), SqlStorageType.Sqlvarchar);
header.AddChild("K3专票金额", new LocaleValue("K3专票金额"), SqlStorageType.SqlDecimal);
header.AddChild("K3普票金额", new LocaleValue("K3普票金额"), SqlStorageType.SqlDecimal);
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;
//组织
var ZZ = (customFilter["F_VRYF_OrgId_re5"] as DynamicObject);
var ZZFID = ZZ["Id"]?.ToString();
// 客户
string fClient = customFilter["FClient_Id"]?.ToString();
// 工程项目名称
var fProjectList = (customFilter["FProject"] as DynamicObjectCollection)?.Select(n => (n["FProject"] as DynamicObject)["ID"].ToString()).ToList();
// 截止对账日期
var fDate = customFilter["FDate"]?.ToString();
//开始对账日期
var FSDate = customFilter["FSDate"]?.ToString();
// 订单状态
var fGROUP = customFilter["F_ALL_GROUP"]?.ToString();
//纸质合同号
var ZZHTH = customFilter["F_ZZHTH"]?.ToString();
//销售员
var XSY = (customFilter["F_XSY"] as DynamicObject);
var XSYFID = string.Empty;
if (XSY != null)
{
XSYFID = XSY["Id"].ToString();
}
var fProject = fProjectList == null ? "" : (string.Join(",", fProjectList));
var SFQJFWDZ = customFilter["F_ALL_GROUP2"]?.ToString();
base.BuilderReportSqlAndTempTable(filter, tableName);
string sql = string.Format(@"/*dialect*/
--更新MX表中的字段
EXEC UpdateYSDZBMX_GZTH_XN '{0}','{1}','{2}','{3}','{4}','{5}','{6}'
--更新MX表中的发票金额
EXEC GXFPJEYSDZDMX_GZTH '{0}','{1}'
--更新JY表
EXEC UpdateYSDZBJY_GZTH
", FSDate, fDate, ZZFID, fClient,XSYFID,ZZHTH,SFQJFWDZ);
sql += string.Format($@"
INSERT INTO YingShouZhanKuanJY_GZTH(FID,NUMBER,PaymentAmount,ShippedDebt,InvoicedDebt)
Select 999998,'待核销'
,Sum((FRECAMOUNTFOR-F_AMOUNT)*FEXCHANGERATE) AS DHXJE
,-Sum((FRECAMOUNTFOR-F_AMOUNT)*FEXCHANGERATE) AS YCHQK
,-Sum((FRECAMOUNTFOR-F_AMOUNT)*FEXCHANGERATE) AS YKPQK
From T_AR_RECEIVEBILL T1
Where 1=1
And FDOCUMENTSTATUS = 'C'
And FCONTACTUNIT ={fClient}
INSERT INTO YingShouZhanKuanJY_GZTH(FID,Number,OrderAmount,ShipmentsAmount,FBillAllAmount,
FALLAmountFor,PaymentAmount,ShippedDebt,InvoicedDebt,OwedTickets
,[K3发货数量],[K3发货金额],[K3退货数量],[K3退货金额],[星空发货数量],[星空发货金额],[星空退货数量],[星空退货金额],PPFALLAmountFor,ZPFALLAmountFor,[K3专票金额],[K3普票金额])
Select
999999,
'合计',
SUM(OrderAmount) as OrderAmount,
SUM(ShipmentsAmount) as ShipmentsAmount,
SUM(FBillAllAmount) as FBillAllAmount,
SUM(FALLAMOUNTFOR) as FALLAMOUNTFOR,
SUM(PaymentAmount) as PaymentAmount,
SUM(ShippedDebt) as ShippedDebt,
SUM(InvoicedDebt) as InvoicedDebt,
SUM(OwedTickets) as OwedTickets
,SUM([K3发货数量]) as K3发货数量
,SUM([K3发货金额]) as K3发货金额
,SUM([K3退货数量]) as K3退货数量
,SUM([K3退货金额]) as K3退货金额
,SUM([星空发货数量]) as 星空发货数量
,SUM([星空发货金额]) as 星空发货金额
,SUM([星空退货数量]) as 星空退货数量
,SUM([星空退货金额]) as 星空退货金额
,SUM(PPFALLAmountFor) as PPFALLAmountFor
,SUM(ZPFALLAmountFor) as ZPFALLAmountFor
,SUM([K3专票金额]) as K3专票金额
,SUM([K3普票金额]) as K3普票金额
From YingShouZhanKuanJY_GZTH
where 1=1
");
if (fGROUP == "2")
{
sql += string.Format(@"AND IsEnded = '未完结'");
}
sql += string.Format(@"
SELECT
--ROW_NUMBER() OVER (ORDER BY [DATE] DESC,[FID]) AS FIDENTITYID,
ROW_NUMBER() OVER (ORDER BY (CASE [NUMBER] WHEN '待核销' THEN 999998 WHEN '合计' THEN 999999 ELSE CONVERT(INT,[NUMBER]) END),[FID]) AS FIDENTITYID,
*
INTO {0}
FROM YingShouZhanKuanJY_GZTH
WHERE 1=1
", tableName);
if (fGROUP == "2")
{
sql += string.Format(@"AND IsEnded = '未完结'");
}
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)
{
// 客户
var fClientList = (customFilter["FClient"] as DynamicObject)?["Name"]?.ToString();
// 工程项目名称
var fProjectList = (customFilter["FProject"] as DynamicObjectCollection)?.Select(n => (n["FProject"] as DynamicObject)["Name"].ToString()).ToList();
// 截止对账日期
var fDate = customFilter["FDate"]?.ToString();
//开始对账日期
var FSDate = customFilter["FSDate"]?.ToString();
// 订单状态
var fGROUP = customFilter["F_ALL_GROUP"]?.ToString();
//纸质合同号
var ZZHTH = customFilter["F_ZZHTH"]?.ToString();
//销售员
var XSY = (customFilter["F_XSY"] as DynamicObject);
var XSYFID = string.Empty;
if (XSY != null)
{
XSYFID = XSY["Id"].ToString();
}
string fState = "";
if (fGROUP == "1")
{
fState = "全部订单";
}
if (fGROUP == "2")
{
fState = "未完结订单";
}
//是否月结客户
var SFQJFWDZ = customFilter["F_ALL_GROUP2"]?.ToString();
//这里是报表页面的标识
reportTitles.AddTitle("FState", fGROUP == null ? "" : fState);
reportTitles.AddTitle("FClient", fClientList == null ? "" : fClientList);
reportTitles.AddTitle("FDate", fDate == null ? "" : Convert.ToDateTime(fDate).ToString("yyyy-MM-dd"));
reportTitles.AddTitle("FSDate", fDate == null ? "" : Convert.ToDateTime(FSDate).ToString("yyyy-MM-dd"));
reportTitles.AddTitle("FProject", fProjectList == null ? "" : string.Join(",", fProjectList));
reportTitles.AddTitle("F_ZZHTH", ZZHTH == null ? "" : ZZHTH);
reportTitles.AddTitle("F_XSY", XSYFID == null ? "" : XSYFID);
reportTitles.AddTitle("F_SFYJKH", SFQJFWDZ == null ? "" : SFQJFWDZ);
}
return reportTitles;
}
//设计报表合计列
//public override List<SummaryField> GetSummaryColumnInfo(IRptParams filter)
//{
// var result = base.GetSummaryColumnInfo(filter);
// result.Add(new SummaryField("OrderAmount", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("ShipmentsAmount", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("FBillAllAmount", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("PPFALLAmountFor", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("ZPFALLAmountFor", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("FALLAMOUNTFOR", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("PaymentAmount", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("ShippedDebt", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("InvoicedDebt", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("OwedTickets", BOSEnums.Enu_SummaryType.SUM));
// return result;
//}
}
}