283 lines
14 KiB
C#
283 lines
14 KiB
C#
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;
|
||
using Kingdee.BOS.Log;
|
||
|
||
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.SqlDecimal);
|
||
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);
|
||
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 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,FALLAMOUNT,OrderAmount,ShipmentsNum,ShipmentsAmount,
|
||
ReturnNum,ReturnAmount,BillingAmount,PaymentAmount,ShippedDebt,InvoicedDebt,OwedTickets,[K3退货金额],PPBillingAmount,ZPBillingAmount,[星空退货金额],[星空发货金额])
|
||
SELECT
|
||
'合计',
|
||
SUM(FQTY),
|
||
SUM(FALLAMOUNT),
|
||
SUM(OrderAmount),
|
||
SUM(ShipmentsNum),
|
||
SUM(ShipmentsAmount),
|
||
SUM(ReturnNum),
|
||
SUM(ReturnAmount),
|
||
SUM(BillingAmount),
|
||
SUM(PaymentAmount),
|
||
SUM(ShippedDebt),
|
||
SUM(InvoicedDebt),
|
||
SUM(OwedTickets),sum(K3退货金额) ,
|
||
SUM(PPBillingAmount),
|
||
SUM(ZPBillingAmount),
|
||
sum(星空退货金额),SUM(星空发货金额),
|
||
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],OrderAmount desc) 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 = '未完结')");
|
||
}
|
||
Logger.Error("sql脚本", sql, new Exception());
|
||
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;
|
||
//}
|
||
}
|
||
}
|