PiolotTH_ReportFrom/YSZKDZBaoBiao/AccountsReceivableReport2.cs
李狗蛋 4ea1fb3e0e 1
2025-07-04 17:31:39 +08:00

277 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.Contracts.Report;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using Kingdee.BOS;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using Kingdee.BOS.Core.Enums;
namespace Pilot.Report.Exploitation.AccountsReceivableStatements
{
/// <summary>
/// 应收账款对账报表【明细版】
/// </summary>
[Description("[服务插件] "), HotUpdate]
public class AccountsReceivableReport2 : 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.Sqlvarchar);
header.AddChild("CONTRACTNUMBER", new LocaleValue("订单号"), SqlStorageType.Sqlvarchar);
header.AddChild("ProjectName", new LocaleValue("项目名称"), SqlStorageType.Sqlvarchar);
header.AddChild("SizeModel", new LocaleValue("规格型号"), SqlStorageType.Sqlvarchar);
header.AddChild("FQty", new LocaleValue("数量/台"), SqlStorageType.SqlInt);
header.AddChild("FTaxPrice", new LocaleValue("单价"), SqlStorageType.SqlDecimal);
header.AddChild("FAllAmount", new LocaleValue("价税合计"), SqlStorageType.SqlDecimal);
header.AddChild("OrderAmount", new LocaleValue("订单金额"), SqlStorageType.SqlDecimal);
header.AddChild("ShipmentsDate", new LocaleValue("发货日期"), SqlStorageType.Sqlvarchar);
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("ShipmentsNum", new LocaleValue("发货数量"), SqlStorageType.SqlDecimal);
header.AddChild("ShipmentsAmount", new LocaleValue("发货金额"), SqlStorageType.SqlDecimal);
header.AddChild("ReturnDate", new LocaleValue("退货日期"), SqlStorageType.Sqlvarchar);
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("ReturnNum", new LocaleValue("退货数量"), SqlStorageType.SqlInt);
header.AddChild("ReturnAmount", new LocaleValue("退货金额"), SqlStorageType.SqlDecimal);
header.AddChild("PPBillingDate", new LocaleValue("普票开票日期"), SqlStorageType.Sqlvarchar);
header.AddChild("PPBillingAmount", new LocaleValue("普票开票金额"), SqlStorageType.SqlDecimal);
header.AddChild("ZPBillingDate", new LocaleValue("专票开票日期"), SqlStorageType.Sqlvarchar);
header.AddChild("ZPBillingAmount", new LocaleValue("专票开票金额"), SqlStorageType.Sqlvarchar);
header.AddChild("BillingAmount", new LocaleValue("开票金额"), SqlStorageType.SqlDecimal);
header.AddChild("PaymentDate", new LocaleValue("回款日期"), SqlStorageType.Sqlvarchar);
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);
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 fGROUP = customFilter["F_ALL_GROUP"]?.ToString();
//开始对账日期
var FSDate = customFilter["FSDate"]?.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));
base.BuilderReportSqlAndTempTable(filter, tableName);
string sql = string.Format(@"/*dialect*/
--更新表中的字段
EXEC UpdateYSDZBMX_GZTH '{0}','{1}','{2}','{3}','{4}','{5}'
--更新表中的发票金额
EXEC GXFPJEYSDZDMX_GZTH
", FSDate,fDate,ZZFID,fClient,XSYFID,ZZHTH);
sql += string.Format(@"/*dialect*/
INSERT INTO YingShouZhanKuanMX_GZTH(NUMBER,FQTY,FTAXPRICE,FALLAMOUNT,OrderAmount,ShipmentsNum,ShipmentsAmount,
ReturnNum,ReturnAmount,BillingAmount,PaymentAmount,ShippedDebt,InvoicedDebt,OwedTickets)
SELECT
'合计',
SUM(FQTY),
SUM(FTAXPRICE),
SUM(FALLAMOUNT),
SUM(OrderAmount),
SUM(ShipmentsNum),
SUM(ShipmentsAmount),
SUM(ReturnNum),
SUM(ReturnAmount),
SUM(BillingAmount),
SUM(PaymentAmount),
SUM(ShippedDebt),
SUM(InvoicedDebt),
SUM(OwedTickets)
FROM
YingShouZhanKuanMX_GZTH
where 1=1
");
if (fGROUP == "2")
{
sql += string.Format("AND FID IN (SELECT FID FROM YingShouZhanKuanMX_GZTH WHERE IsEnded = '未完结')");
}
sql += string.Format(@"
SELECT
ROW_NUMBER() OVER (ORDER BY [FID]) AS FIDENTITYID,
*
INTO {0}
FROM YingShouZhanKuanMX_GZTH
WHERE 1=1
",tableName);
if (fGROUP == "2")
{
sql += string.Format("AND FID IN (SELECT FID FROM YingShouZhanKuanMX_GZTH WHERE IsEnded = '未完结')");
}
DBUtils.Execute(this.Context, sql);
}
/// <summary>
/// 获取前端组件转换过滤条件
/// </summary>
/// <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 = "未完结订单";
}
//这里是报表页面的标识
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);
}
return reportTitles;
}
//设计报表合计列
//public override List<SummaryField> GetSummaryColumnInfo(IRptParams filter)
//{
// var result = base.GetSummaryColumnInfo(filter);
// result.Add(new SummaryField("FQty", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("FAllAmount", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("OrderAmount", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("ShipmentsNum", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("ShipmentsAmount", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("ReturnNum", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("ReturnAmount", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("PPBillingAmount", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("ZPBillingAmount", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("BillingAmount", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("PaymentAmount", BOSEnums.Enu_SummaryType.SUM));
// result.Add(new SummaryField("OwedTickets", BOSEnums.Enu_SummaryType.SUM));
// return result;
//}
}
}