2025-06-03 13:44:45 +08:00
|
|
|
|
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: 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);
|
2025-07-04 17:31:39 +08:00
|
|
|
|
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);
|
2025-06-03 13:44:45 +08:00
|
|
|
|
header.AddChild("ShipmentsAmount", new LocaleValue("发货金额"), SqlStorageType.SqlDecimal);
|
2025-07-04 17:31:39 +08:00
|
|
|
|
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);
|
2025-06-03 13:44:45 +08:00
|
|
|
|
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);
|
2025-06-17 00:58:10 +08:00
|
|
|
|
header.AddChild("OwedTickets", new LocaleValue("欠票"), SqlStorageType.SqlDecimal);
|
2025-06-03 13:44:45 +08:00
|
|
|
|
header.AddChild("IsEnded", new LocaleValue("是否已完结"), SqlStorageType.Sqlvarchar);
|
2025-07-02 10:10:05 +08:00
|
|
|
|
header.AddChild("FSalerId", new LocaleValue("销售员"), SqlStorageType.Sqlvarchar);
|
2025-06-03 13:44:45 +08:00
|
|
|
|
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;
|
2025-06-17 00:58:10 +08:00
|
|
|
|
//组织
|
|
|
|
|
|
var ZZ = (customFilter["F_VRYF_OrgId_re5"] as DynamicObject);
|
|
|
|
|
|
var ZZFID = ZZ["Id"]?.ToString();
|
2025-06-03 13:44:45 +08:00
|
|
|
|
// 客户
|
|
|
|
|
|
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();
|
|
|
|
|
|
|
|
|
|
|
|
//纸质合同号
|
2025-06-17 00:58:10 +08:00
|
|
|
|
var ZZHTH = customFilter["F_ZZHTH"]?.ToString();
|
2025-06-03 13:44:45 +08:00
|
|
|
|
|
|
|
|
|
|
//销售员
|
2025-06-17 00:58:10 +08:00
|
|
|
|
var XSY = (customFilter["F_XSY"] as DynamicObject);
|
|
|
|
|
|
var XSYFID = string.Empty;
|
|
|
|
|
|
if (XSY != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
XSYFID = XSY["Id"].ToString();
|
|
|
|
|
|
}
|
2025-06-03 13:44:45 +08:00
|
|
|
|
|
|
|
|
|
|
var fProject = fProjectList == null ? "" : (string.Join(",", fProjectList));
|
|
|
|
|
|
|
|
|
|
|
|
base.BuilderReportSqlAndTempTable(filter, tableName);
|
|
|
|
|
|
|
|
|
|
|
|
string sql = string.Format(@"/*dialect*/
|
2025-06-17 00:58:10 +08:00
|
|
|
|
--更新MX表中的字段
|
2025-07-02 10:10:05 +08:00
|
|
|
|
EXEC UpdateYSDZBMX_GZTH '{0}','{1}','{2}','{3}','{4}','{5}'
|
2025-06-17 00:58:10 +08:00
|
|
|
|
|
|
|
|
|
|
--更新MX表中的发票金额
|
|
|
|
|
|
EXEC GXFPJEYSDZDMX_GZTH
|
|
|
|
|
|
|
|
|
|
|
|
--更新JY表
|
|
|
|
|
|
EXEC UpdateYSDZBJY_GZTH
|
2025-07-02 10:10:05 +08:00
|
|
|
|
", FSDate, fDate, ZZFID, fClient,XSYFID,ZZHTH);
|
|
|
|
|
|
|
|
|
|
|
|
sql += string.Format(@"
|
|
|
|
|
|
INSERT INTO YingShouZhanKuanJY_GZTH(Number,OrderAmount,ShipmentsAmount,FBillAllAmount,
|
|
|
|
|
|
FALLAmountFor,PaymentAmount,ShippedDebt,InvoicedDebt,OwedTickets)
|
|
|
|
|
|
Select
|
|
|
|
|
|
'合计',
|
|
|
|
|
|
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
|
|
|
|
|
|
From YingShouZhanKuanJY_GZTH
|
|
|
|
|
|
where 1=1
|
|
|
|
|
|
");
|
|
|
|
|
|
if (fGROUP == "2")
|
|
|
|
|
|
{
|
|
|
|
|
|
sql += string.Format(@"AND IsEnded = '未完结'");
|
|
|
|
|
|
}
|
|
|
|
|
|
sql += string.Format(@"
|
2025-06-17 00:58:10 +08:00
|
|
|
|
SELECT
|
|
|
|
|
|
ROW_NUMBER() OVER (ORDER BY [FID]) AS FIDENTITYID,
|
|
|
|
|
|
*
|
2025-07-02 10:10:05 +08:00
|
|
|
|
INTO {0}
|
2025-06-17 00:58:10 +08:00
|
|
|
|
FROM YingShouZhanKuanJY_GZTH
|
|
|
|
|
|
WHERE 1=1
|
2025-07-02 10:10:05 +08:00
|
|
|
|
",tableName);
|
2025-06-17 00:58:10 +08:00
|
|
|
|
if (fGROUP == "2")
|
2025-06-03 13:44:45 +08:00
|
|
|
|
{
|
2025-06-17 00:58:10 +08:00
|
|
|
|
sql += string.Format(@"AND IsEnded = '未完结'");
|
2025-06-03 13:44:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
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();
|
|
|
|
|
|
//销售员
|
2025-06-17 00:58:10 +08:00
|
|
|
|
var XSY = (customFilter["F_XSY"] as DynamicObject);
|
|
|
|
|
|
var XSYFID = string.Empty;
|
|
|
|
|
|
if (XSY != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
XSYFID = XSY["Id"].ToString();
|
|
|
|
|
|
}
|
2025-06-03 13:44:45 +08:00
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//设计报表合计列
|
2025-07-02 10:10:05 +08:00
|
|
|
|
//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;
|
|
|
|
|
|
//}
|
2025-06-03 13:44:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|