From b3e453391731e65928707cd3ac7d875baa31e7dc Mon Sep 17 00:00:00 2001 From: liqionghai <1> Date: Fri, 12 Dec 2025 01:33:16 +0800 Subject: [PATCH] 1 --- GZ_LTHReportForms.csproj | 2 + .../AccountsReceivableReport2 _XN.cs | 304 +++++++++++++ YSZKDZBaoBiao/AccountsReceivableReport_XN.cs | 292 +++++++++++++ YSZKDZGongNeng_MX/LiteVersionPlugIn2.cs | 11 +- .../应收对账单(兴诺明细版存储过程).sql | 407 ++++++++++++++++++ 5 files changed, 1012 insertions(+), 4 deletions(-) create mode 100644 YSZKDZBaoBiao/AccountsReceivableReport2 _XN.cs create mode 100644 YSZKDZBaoBiao/AccountsReceivableReport_XN.cs create mode 100644 派诺报表SQL文件/应收对账单(兴诺明细版存储过程).sql diff --git a/GZ_LTHReportForms.csproj b/GZ_LTHReportForms.csproj index a19fa45..27a4336 100644 --- a/GZ_LTHReportForms.csproj +++ b/GZ_LTHReportForms.csproj @@ -200,6 +200,8 @@ + + diff --git a/YSZKDZBaoBiao/AccountsReceivableReport2 _XN.cs b/YSZKDZBaoBiao/AccountsReceivableReport2 _XN.cs new file mode 100644 index 0000000..3f1b3fc --- /dev/null +++ b/YSZKDZBaoBiao/AccountsReceivableReport2 _XN.cs @@ -0,0 +1,304 @@ +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 +{ + /// + /// 应收账款对账报表【明细版】 + /// + [Description("[服务插件] 应收账款对账报表【兴诺明细版】取数"), HotUpdate] + public class AccountsReceivableReport2_XN : SysReportBaseService + { + /// + /// 初始化 + /// + 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 + { + 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; + } + + /// + /// 报表列表头 + /// + /// + /// + 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; + } + + /// + /// 显示报表数据 + /// + /// + /// + 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)); + + var SFQJFWDZ = customFilter["F_ALL_GROUP2"]?.ToString(); + + base.BuilderReportSqlAndTempTable(filter, tableName); + + string sql = string.Format(@"/*dialect*/ + --更新表中的字段 + EXEC UpdateYSDZBMX_GZTH_XN '{0}','{1}','{2}','{3}','{4}','{5}','{6}' + + --更新表中的发票金额 + EXEC GXFPJEYSDZDMX_GZTH '{0}','{1}' + + + ", FSDate,fDate,ZZFID,fClient,XSYFID,ZZHTH,SFQJFWDZ); + sql += string.Format($@"/*dialect*/ + INSERT INTO YingShouZhanKuanMX_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 YingShouZhanKuanMX_GZTH(FID,NUMBER,FQTY,FALLAMOUNT,OrderAmount,ShipmentsNum,ShipmentsAmount, + ReturnNum,ReturnAmount,BillingAmount,PaymentAmount,ShippedDebt,InvoicedDebt,OwedTickets,[K3退货金额],PPBillingAmount,ZPBillingAmount,[星空退货金额],[星空发货金额] + ,[K3发货数量],[K3发货金额],[星空发货数量],[K3退货数量],[星空退货数量],[K3专票金额],[K3普票金额]) + SELECT + 999999, + '合计', + 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(星空发货金额), + SUM(K3发货数量),SUM(K3发货金额),SUM(星空发货数量),SUM(K3退货数量),SUM(星空退货数量),SUM(K3专票金额),SUM(K3普票金额) + 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 [DATE] DESC,[FID]) AS FIDENTITYID, + --DENSE_RANK() OVER (ORDER BY [DATE] DESC,[FID] ) AS OUTPUTNUMBER, + ROW_NUMBER() OVER (ORDER BY (CASE [NUMBER] WHEN '待核销' THEN 999998 WHEN '合计' THEN 999999 ELSE CONVERT(INT,[NUMBER]) END),[FID]) AS FIDENTITYID, + DENSE_RANK() OVER (ORDER BY (CASE [NUMBER] WHEN '待核销' THEN '2099-12-30' WHEN '合计' THEN '2099-12-31' ELSE [DATE] END),[FID] ) AS OUTPUTNUMBER, + * + 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); + } + + /// + /// 获取前端组件转换过滤条件 + /// + /// + 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 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; + //} + } +} diff --git a/YSZKDZBaoBiao/AccountsReceivableReport_XN.cs b/YSZKDZBaoBiao/AccountsReceivableReport_XN.cs new file mode 100644 index 0000000..1fb6f33 --- /dev/null +++ b/YSZKDZBaoBiao/AccountsReceivableReport_XN.cs @@ -0,0 +1,292 @@ +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 +{ + /// + /// 应收账款对账报表【简易版】 + /// + [Description("【服务插件】应收账款对账报表【兴诺简易版】取数"), HotUpdate] + public class AccountsReceivableReport_XN : SysReportBaseService + { + /// + /// 初始化 + /// + 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 + { + 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; + } + + /// + /// 报表列表头 + /// + /// + /// + 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; + } + + /// + /// 显示报表数据 + /// + /// + /// + 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); + } + + /// + /// 获取前端组件转换过滤条件 + /// + /// + /// + 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 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; + //} + } +} diff --git a/YSZKDZGongNeng_MX/LiteVersionPlugIn2.cs b/YSZKDZGongNeng_MX/LiteVersionPlugIn2.cs index 71ab782..2d465a0 100644 --- a/YSZKDZGongNeng_MX/LiteVersionPlugIn2.cs +++ b/YSZKDZGongNeng_MX/LiteVersionPlugIn2.cs @@ -15,6 +15,7 @@ using NPOI.SS.UserModel; using NPOI.SS.Util; using NPOI.XSSF.UserModel; using System; +using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.IO; @@ -32,9 +33,11 @@ namespace Pilot.Report.Exploitation.AccountsReceivable public override void BarItemClick(BarItemClickEventArgs e) { base.BarItemClick(e); + List BarItemKeyList = new List { "Test_Button_3", "Test_Button_1" }; // 判断 应收对账单【明细版】按钮 - if (e.BarItemKey == "Test_Button_1") + if (BarItemKeyList.Contains(e.BarItemKey)) { + string IsXN = e.BarItemKey == "Test_Button_3" ? "XN" : ""; var reportModel = this.SysReportModel; //单据头 @@ -78,18 +81,18 @@ namespace Pilot.Report.Exploitation.AccountsReceivable fDate2 = sqlTestList[0]["Date"].ToString().Split(' ')[0]; } - Main(filePath, fClient, fDate, fProject, list, Num, fAmount, fDate2, F_SFYJKH, Context); + Main(filePath, fClient, fDate, fProject, list, Num, fAmount, fDate2, F_SFYJKH, Context, IsXN); } } /// /// 赋值EXCEL /// - static void Main(string outputFilePath, string fClient, string fDate, string fProject, DataRowCollection list, int Num, decimal fAmount,string fDate2,string F_SFYJKH, Kingdee.BOS.Context Context) + static void Main(string outputFilePath, string fClient, string fDate, string fProject, DataRowCollection list, int Num, decimal fAmount,string fDate2,string F_SFYJKH, Kingdee.BOS.Context Context,string IsXN) { #region Excel代码 - string filePath = @"D:\KingdeeModel\对账单模板2.xlsx"; + string filePath = $@"D:\KingdeeModel\对账单模板{IsXN}2.xlsx"; FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read); IWorkbook workbook = new XSSFWorkbook(file); file.Close(); diff --git a/派诺报表SQL文件/应收对账单(兴诺明细版存储过程).sql b/派诺报表SQL文件/应收对账单(兴诺明细版存储过程).sql new file mode 100644 index 0000000..df23a5a --- /dev/null +++ b/派诺报表SQL文件/应收对账单(兴诺明细版存储过程).sql @@ -0,0 +1,407 @@ +USE [AIS2025] +GO +/****** Object: StoredProcedure [dbo].[UpdateYSDZBMX_GZTH] Script Date: 2025/11/28 10:40:12 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE PROCEDURE [dbo].[UpdateYSDZBMX_GZTH_XN] +@FSDATE varchar(1000), +@FEDATE varchar(1000), +@FSaleOrgId varchar(1000), +@FCUSTID varchar(1000), +@XSYFID varchar(1000), +@ZZHTH varchar(1000) +,@SFQJFWDZ varchar(1000) ---是否区间范围对账 +AS +BEGIN + DECLARE @StartDate DATE = CONVERT(DATE, @FSDATE); + --DECLARE @EndDate DATE = CONVERT(DATE,@FEDATE); + DECLARE @EndDate DATE = CONVERT(DATE,CASE @FEDATE WHEN '' THEN '2099-12-31'ELSE @FEDATE END); + + -- 将结束日期增加一天 + SET @EndDate = DATEADD(DAY, 1, @EndDate); + + TRUNCATE TABLE YingShouZhanKuanMX_GZTH; + + SELECT DISTINCT * + INTO #TEMP3 + FROM( + --发货通知单 + SELECT F_PAPERCONTRACT ZHHTH,FDELIVERYORGID ZZ + FROM T_SAL_DELIVERYNOTICE T1 + WHERE (FDELIVERYORGID = @FSaleOrgId OR ISNULL(@FSaleOrgId,'') = '') + AND FCUSTOMERID = @FCUSTID --客户 + AND FApproveDate >= @StartDate + AND FApproveDate < @EndDate + AND (ISNULL(@ZZHTH,'') = '' OR F_PAPERCONTRACT = @ZZHTH) + AND FDOCUMENTSTATUS = 'C' + UNION ALL + --退货通知单 + SELECT F_PAPERCONTRACT ZHHTH,FRETORGID ZZ + FROM T_SAL_RETURNNOTICE T1 + WHERE (FRETORGID = @FSaleOrgId OR ISNULL(@FSaleOrgId,'') = '') + AND FRETCUSTID = @FCUSTID --客户 + AND FApproveDate >= @StartDate + AND FApproveDate < @EndDate + AND (ISNULL(@ZZHTH,'') = '' OR F_PAPERCONTRACT = @ZZHTH) + AND FDOCUMENTSTATUS = 'C' + UNION ALL + --收款单 + SELECT F_CONTRACTNUMBER ZHHTH,FPAYORGID ZZ + FROM T_AR_RECEIVEBILL T1 + WHERE (FPAYORGID = @FSaleOrgId OR ISNULL(@FSaleOrgId,'') = '') + AND FCONTACTUNITTYPE = 'BD_Customer' --往来单位类型 + AND FCONTACTUNIT = @FCUSTID --往来单位 + AND FApproveDate >= @StartDate + AND FApproveDate < @EndDate + AND (ISNULL(@ZZHTH,'') = '' OR F_CONTRACTNUMBER = @ZZHTH) + AND FDOCUMENTSTATUS = 'C' + UNION ALL + --收款退款单 + SELECT F_VRYF_TEXT_83G ZHHTH,FPAYORGID ZZ + FROM T_AR_REFUNDBILL T1 + WHERE (FPAYORGID = @FSaleOrgId OR ISNULL(@FSaleOrgId,'') = '') + AND FCONTACTUNITTYPE = 'BD_Customer' --往来单位类型 + AND FCONTACTUNIT = @FCUSTID --往来单位 + AND FApproveDate >= @StartDate + AND FApproveDate < @EndDate + AND (ISNULL(@ZZHTH,'') = '' OR F_VRYF_TEXT_83G = @ZZHTH) + AND FDOCUMENTSTATUS = 'C' + UNION ALL + --销售增值税专用发票 + SELECT F_PAPERNUMBER ZHHTH,FSETTLEORGID ZZ + FROM T_IV_SALESIC T1 + WHERE (FSETTLEORGID = @FSaleOrgId OR ISNULL(@FSaleOrgId,'') = '') + AND FCUSTOMERID = @FCUSTID --客户 + AND FApproveDate >= '2025-01-01' + AND FApproveDate >= @FSDATE + AND FApproveDate < @EndDate + AND (ISNULL(@ZZHTH,'') = '' OR F_PAPERNUMBER = @ZZHTH) + AND FDOCUMENTSTATUS = 'C' + AND T1.F_SFQC = 0 + UNION ALL + --销售订单 + SELECT F_CONTRACTNUMBER ZHHTH,FSALEORGID ZZ + FROM T_SAL_ORDER + WHERE FDOCUMENTSTATUS = 'C' + AND FApproveDate < @EndDate + AND 1= @SFQJFWDZ + UNION ALL + --销售订单 + SELECT F_CONTRACTNUMBER ZHHTH,FSALEORGID ZZ + FROM T_SAL_ORDER + WHERE FDOCUMENTSTATUS = 'C' + AND FApproveDate >= @FSDATE + AND FApproveDate < @EndDate + AND 2= @SFQJFWDZ + )a + + + INSERT INTO + YingShouZhanKuanMX_GZTH + (FID,FENTRYID,FSaleOrgId,FBILLNO,FSalerId,[DATE],CONTRACTNUMBER,ProjectName,SizeModel,FQty,FTaxPrice,FAllAmount,OrderAmount,PaymentAmount,[是否K3数据],旧物料编码,NUMBER) + SELECT + A.FID AS 销售订单FID + ,B.FENTRYID AS 销售订单FENTRYID + ,A.FSaleOrgId AS 销售组织 + ,A.FBILLNO AS 销售订单编号 + ,XS.FNAME AS 销售员FID + ,FORMAT( A.FApproveDate,'yyyy-MM-dd') AS 签订日期 + ,A.F_contractnumber AS 订单号 + ,GC.FNAME AS 项目名称 + ,WL_L.FSpecification AS 型号 + ,B.FQTY AS 数量台 + ,B_F.FTAXPRICE AS 单价 + ,B_F.FALLAMOUNT_LC AS 价税合计 + ,AF.FBillAllAmount 订单金额 + ,A.F_Amount AS 累计核销金额 + ,0 AS 是否K3数据 + ,tmm.FOldNumber + ,ROW_NUMBER() OVER(ORDER BY A.FApproveDate ,A.FID) AS NUMBER + FROM T_SAL_ORDER A + INNER JOIN ( + SELECT T1.FID,SUM(T1.FALLAMOUNT_LC) FBillAllAmount + FROM T_SAL_ORDERENTRY_F T1 + INNER JOIN T_SAL_ORDERENTRY T2 ON T1.FENTRYID = T2.FENTRYID AND T2.FRETURNTYPE <> 'RETURN' + GROUP BY T1.FID + ) AF ON A.FID = AF.FID + INNER JOIN T_BAS_PREBDONE_L GC ON A.F_projectname = GC.FID + INNER JOIN T_SAL_ORDERENTRY B ON A.FID = B.FID + INNER JOIN T_BD_MATERIAL_L WL_L ON B.FMATERIALID = WL_L.FMATERIALID + INNER JOIN T_BD_MATERIAL tmm ON B.FMATERIALID = tmm.FMATERIALID + INNER JOIN T_SAL_ORDERENTRY_F B_F ON B.FENTRYID = B_F.FENTRYID + INNER JOIN V_BD_SALESMAN_L XS ON XS.FID = A.FSALERID + INNER JOIN #TEMP3 LS ON LS.ZHHTH = A.F_CONTRACTNUMBER AND LS.ZZ = A.FSALEORGID + WHERE (A.FSaleOrgId = @FSaleOrgId OR ISNULL(@FSaleOrgId,'') = '') + AND A.FCUSTID = @FCUSTID + --AND A.FApproveDate >= @StartDate + --AND A.FApproveDate <= @EndDate + AND (ISNULL(@XSYFID, '') = '' OR A.FSalerId = @XSYFID) + AND (ISNULL(@ZZHTH,'') = '' OR A.F_contractnumber = @ZZHTH) + AND B.FRETURNTYPE <> 'RETURN' + AND A.FDOCUMENTSTATUS = 'C' + + /*2025-08-13调整发货数量逻辑,替换该逻辑*/ +--UPDATE a +--SET a.[K3发货数量]=b.发货数量,a.[K3发货金额]=b.发货金额,a.[K3退货数量]=b.退货数量 +--,a.[K3退货金额]=b.退货金额--,a.[K3专票金额] = b.专票金额 ,a.[K3普票金额]= b.普票金额 +--FROM YingShouZhanKuanMX_GZTH A +--INNER JOIN T_SAL_ORDERENTRY C ON A.FENTRYID = C.FENTRYID +--INNER JOIN [t_xnoldk3seorder1125] b +--ON C.F_K3SEQ = b.行号 AND a.FBILLNO=b.[单据编码] --AND a.旧物料编码=[物料编码] AND a.FQty=[数量] AND (ABS(a.FTaxPrice-b.[含税单价])<=0.02 OR ABS(a.FTaxPrice-b.[面价])<=0.02) +--WHERE 是否K3数据=0 +--AND B.日期 >= @StartDate +--AND B.日期 < @EndDate + +--k3专票 +UPDATE a +SET a.[K3专票金额] = b.发票金额 +FROM YingShouZhanKuanMX_GZTH A +INNER JOIN T_SAL_ORDERENTRY C ON A.FENTRYID = C.FENTRYID +INNER JOIN (SELECT 合同号,发票类型,SUM(发票金额) AS '发票金额' FROM [oldk3ICSale0802] GROUP BY 合同号,发票类型) b +ON C.FSEQ = 1 AND a.CONTRACTNUMBER=b.合同号 --AND a.旧物料编码=[物料编码] AND a.FQty=[数量] AND (ABS(a.FTaxPrice-b.[含税单价])<=0.02 OR ABS(a.FTaxPrice-b.[面价])<=0.02) +WHERE 是否K3数据=0 +AND b.发票类型 = '专' +--AND B.日期 >= @StartDate +--AND B.日期 < @EndDate + +--k3普票 +UPDATE a +SET a.[K3普票金额] = b.发票金额 +FROM YingShouZhanKuanMX_GZTH A +INNER JOIN T_SAL_ORDERENTRY C ON A.FENTRYID = C.FENTRYID +INNER JOIN (SELECT 合同号,发票类型,是否普票存财务,SUM(发票金额) AS '发票金额' FROM [oldk3ICSale0802] GROUP BY 合同号,发票类型,是否普票存财务) b +ON C.FSEQ = 1 AND a.CONTRACTNUMBER=b.合同号 --AND a.旧物料编码=[物料编码] AND a.FQty=[数量] AND (ABS(a.FTaxPrice-b.[含税单价])<=0.02 OR ABS(a.FTaxPrice-b.[面价])<=0.02) +WHERE 是否K3数据=0 +AND b.发票类型 = '普' +AND ISNULL(b.是否普票存财务,'') <> 1 + +UPDATE a SET a.[K3专票金额] = CASE B.rownumber WHEN 1 THEN b.专票金额 ELSE 0 END,a.[K3普票金额]= CASE B.rownumber WHEN 1 THEN b.普票金额 ELSE 0 END +FROM YingShouZhanKuanMX_GZTH A +INNER JOIN ( + SELECT ROW_NUMBER() OVER(PARTITION BY T1.FID ORDER BY T1.FID) rownumber,T1.FID,T1.FENTRYID,T2.专票金额,T2.普票金额 + FROM YingShouZhanKuanMX_GZTH T1 + INNER JOIN ( + SELECT FID,SUM([K3专票金额]) AS 专票金额,SUM([K3普票金额]) AS 普票金额 + FROM YingShouZhanKuanMX_GZTH + GROUP BY FID) T2 ON T1.FID = t2.FID + )B ON A.FID = B.FID AND A.FENTRYID = B.FENTRYID + + ----插入K3数据 + --INSERT INTO + --YingShouZhanKuanMX_GZTH + --(FID,FENTRYID,FSaleOrgId,FBILLNO,FSalerId,[DATE],CONTRACTNUMBER,ProjectName,SizeModel,[K3发货数量],[K3发货金额],[K3退货数量],[K3退货金额],[K3普票金额],[K3专票金额],[是否K3数据]) + --SELECT + -- B.FID AS 销售订单FID + --,0 AS 销售订单FENTRYID + --,B.FSaleOrgId AS 销售组织 + --,B.FBILLNO AS 销售订单编号 + --,XS.FNAME AS 销售员FID + --,FORMAT( B.FApproveDate,'yyyy-MM-dd') AS 签订日期 + --,B.F_contractnumber AS 订单号 + --,GC.FNAME AS 项目名称 + --,A.规格型号 AS 型号 + --,A.发货数量 AS 发货数量 + --,A.发货金额 AS 发货金额 + --,A.退货数量 AS 退货数量 + --,A.退货金额 AS 退货金额 + --,A.普票金额 AS 普票金额 + --,A.专票金额 AS 专票金额 + --,1 AS 是否K3数据 + --FROM t_xnoldk3seorder1125 A + --INNER JOIN T_SAL_ORDER B ON A.单据编码 = B.FBILLNO + --INNER JOIN T_BAS_PREBDONE_L GC ON B.F_projectname = GC.FID + --INNER JOIN V_BD_SALESMAN_L XS ON XS.FID = B.FSALERID + --WHERE B.FSaleOrgId = @FSaleOrgId + --AND B.FCUSTID = @FCUSTID + --AND B.FApproveDate >= @StartDate + --AND B.FApproveDate <= @EndDate + --AND (ISNULL(@XSYFID, '') = '' OR B.FSalerId = @XSYFID) + --AND (ISNULL(@ZZHTH,'') = '' OR B.F_contractnumber = @ZZHTH) + + --更新发货日期,发货数量和发货金额 + SELECT + C.FSBILLID AS 销售订单FID + ,C.FSID AS 销售订单FENTRYID + ,A.FApproveDate AS 发货日期 + ,B.FQTY AS 发货数量 + ,B_F.FAllAmount_LC AS 发货金额 + ,STUFF((SELECT DISTINCT ','+FORMAT(FApproveDate,'yyyy-MM-dd') FROM T_SAL_DELIVERYNOTICE T1 + LEFT JOIN T_SAL_DELIVERYNOTICEENTRY T2 ON T1.FID = T2.FID + LEFT JOIN T_SAL_DELIVERYNOTICEENTRY_F T3 ON T2.FENTRYID = T3.FENTRYID + LEFT JOIN T_SAL_DELIVERYNOTICEENTRY_LK T4 ON T3.FENTRYID = T4.FENTRYID AND T4.FSTABLENAME = 'T_SAL_ORDERENTRY' + WHERE T4.FSBILLID IN (SELECT FID FROM YingShouZhanKuanMX_GZTH) AND C.FSBILLID = T4.FSBILLID FOR XML PATH('')),1,1,'') AS 合并发货日期 + INTO #TEMP1 + FROM T_SAL_DELIVERYNOTICE A + LEFT JOIN T_SAL_DELIVERYNOTICEENTRY B ON A.FID = B.FID + LEFT JOIN T_SAL_DELIVERYNOTICEENTRY_F B_F ON B.FENTRYID = B_F.FENTRYID + LEFT JOIN T_SAL_DELIVERYNOTICEENTRY_LK C ON B_F.FENTRYID = C.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY' + WHERE C.FSBILLID IN (SELECT FID FROM YingShouZhanKuanMX_GZTH) + AND C.FSID IN (SELECT FENTRYID FROM YingShouZhanKuanMX_GZTH) + AND A.FApproveDate >= @StartDate + AND A.FApproveDate < @EndDate + AND A.FDOCUMENTSTATUS = 'C' + ----更新k3发货数据 + --update A + --SET A.K3发货数量 = C.发货数量,A.K3发货金额 = C.发货金额 + --FROM YingShouZhanKuanMX_GZTH A + --INNER JOIN T_SAL_ORDERENTRY B ON A.FID = B.FID AND A.FENTRYID = B.FENTRYID + --INNER JOIN T_BD_MATERIAL D ON B.FMATERIALID = B.FMaterialId + --INNER JOIN t_xnoldk3seorder1125 C ON A.FBILLNO = C.单据编码 AND A.CONTRACTNUMBER = C.项目编码 AND D.FOldNumber = C.物料编码 + + SELECT + 销售订单FID, + 销售订单FENTRYID, + SUM(发货数量) AS 发货数量, + SUM(发货金额) AS 发货金额 + INTO #FHTEMP1 + FROM #TEMP1 + GROUP BY 销售订单FID,销售订单FENTRYID + + --更新星空发货日期 + UPDATE A + SET ShipmentsDate = B.合并发货日期 --FORMAT( B.发货日期,'yyyy-MM-dd') + FROM YingShouZhanKuanMX_GZTH A + INNER JOIN #TEMP1 B ON A.FID = B.销售订单FID AND A.FENTRYID = B.销售订单FENTRYID + + --更新K3发货日期 + UPDATE A + SET ShipmentsDate = LEFT(CONCAT(CASE WHEN ISNULL(A.ShipmentsDate,'') = '' THEN '' ELSE A.ShipmentsDate+',' END ,B.合并发货日期),1990) + FROM YingShouZhanKuanMX_GZTH A + INNER JOIN T_SAL_ORDERENTRY C ON A.FENTRYID = C.FENTRYID + INNER JOIN (SELECT 行号,STUFF((SELECT DISTINCT ','+发货日期 FROM t_xnoldk3seorder1125 WHERE 合同号 = a.合同号 FOR XML PATH('')),1,1,'') AS '合并发货日期',合同号 +from t_xnoldk3seorder1125 a) b + ON C.F_K3SEQ = b.行号 AND a.CONTRACTNUMBER=b.[合同号] + + UPDATE A + SET A.星空发货数量 = B.发货数量,A.星空发货金额 = B.发货金额 + FROM YingShouZhanKuanMX_GZTH A + INNER JOIN #FHTEMP1 B ON A.FID = B.销售订单FID AND A.FENTRYID = B.销售订单FENTRYID + + /*2025-08-13调整发货数量逻辑"销售订单发货数量取数逻辑,要根据销售订单行数据进行判断: +1、如果行在云星空没有关联发货通知单,就取该行关联的中间表发货数量 +2、如果行在云星空有关联发货通知单,就取该行关联的云星空发货数量+关联的中间表(销售出库数量+其他出库数量)"*/ + UPDATE a +SET a.[K3发货数量]= CASE ISNULL(A.星空发货数量,0) WHEN 0 THEN b.发货数量 ELSE ISNULL(b.销售出库数量,0)+ISNULL(b.其他出库数量,0) END +,a.[K3发货金额]= CASE ISNULL(A.星空发货数量,0) WHEN 0 THEN b.发货金额 ELSE (ISNULL(b.销售出库数量,0)+ISNULL(b.其他出库数量,0))*b.含税单价 END +,a.[K3退货数量]=b.退货数量 +,a.[K3退货金额]=b.退货金额 +FROM YingShouZhanKuanMX_GZTH A +INNER JOIN T_SAL_ORDERENTRY C ON A.FENTRYID = C.FENTRYID +INNER JOIN [t_xnoldk3seorder1125] b +ON C.F_K3SEQ = b.行号 AND a.CONTRACTNUMBER=b.[合同号] +WHERE 是否K3数据=0 +AND B.日期 >= @StartDate +AND B.日期 < @EndDate + + + --更新发货数量 + UPDATE A + SET A.ShipmentsNum = ISNULL([星空发货数量],0) + ISNULL([K3发货数量],0),A.ShipmentsAmount = ISNULL([星空发货金额],0) + ISNULL([K3发货金额],0) + FROM YingShouZhanKuanMX_GZTH A + + + --更新退货日期,退货数量,退货金额 (正规流程有源单) + SELECT + E.FSBILLID AS 销售订单FID + ,E.FSID AS 销售订单FENTRYID + ,A.FDATE AS 退货日期 + ,B.FQTY AS 退货数量 + ,B_F.FALLAMOUNT_LC AS 退货金额 + ,F.F_CONTRACTNUMBER AS 纸质合同号 + INTO #TEMP2 + FROM T_SAL_RETURNNOTICE A + INNER JOIN T_SAL_RETURNNOTICEENTRY B ON A.FID = B.FID + INNER JOIN T_SAL_RETURNNOTICEENTRY_F B_F ON B.FENTRYID = B_F.FENTRYID + INNER JOIN T_SAL_RETURNNOTICEENTRY_LK C ON B_F.FENTRYID = C.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY' + INNER JOIN T_SAL_ORDERENTRY D ON C.FSBILLID = D.FID AND C.FSID = D.FENTRYID + INNER JOIN T_SAL_ORDERENTRY_LK E ON E.FENTRYID = D.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY' + INNER JOIN T_SAL_ORDER F ON E.FSBILLID = F.FID + WHERE 1=1 + AND A.FApproveDate >= @StartDate + AND A.FApproveDate < @EndDate + AND A.FDOCUMENTSTATUS = 'C' + + --更新退货日期,退货数量,退货金额 (非正规流程有源单) + INSERT INTO #TEMP2 (销售订单FID,销售订单FENTRYID,退货日期,退货数量,退货金额,纸质合同号) + SELECT + F.FID AS 销售订单FID + ,D.FENTRYID AS 销售订单FENTRYID + ,A.FDATE AS 退货日期 + ,B.FQTY AS 退货数量 + ,B_F.FALLAMOUNT_LC AS 退货金额 + ,F.F_CONTRACTNUMBER AS 纸质合同号 + FROM T_SAL_RETURNNOTICE A + INNER JOIN T_SAL_RETURNNOTICEENTRY B ON A.FID = B.FID + INNER JOIN T_SAL_RETURNNOTICEENTRY_F B_F ON B.FENTRYID = B_F.FENTRYID + INNER JOIN T_SAL_RETURNNOTICEENTRY_LK C ON B_F.FENTRYID = C.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY' + INNER JOIN T_SAL_ORDERENTRY D ON C.FSBILLID = D.FID AND C.FSID = D.FENTRYID + INNER JOIN T_SAL_ORDER F ON D.FID = F.FID + WHERE 1=1 + AND D.FRETURNTYPE <> 'RETURN' + AND D.FRETURNTYPE <> 'SEND' + AND F.F_CONTRACTNUMBER NOT IN (SELECT DISTINCT [纸质合同号] FROM #TEMP2) + AND A.FApproveDate >= @StartDate + AND A.FApproveDate < @EndDate + AND A.FDOCUMENTSTATUS = 'C' + + --更新退货日期,退货数量,退货金额 (非正规流程无源单) + INSERT INTO #TEMP2 (销售订单FID,销售订单FENTRYID,退货日期,退货数量,退货金额,纸质合同号) + SELECT + C.FID AS 销售订单FID + ,D.FENTRYID AS 销售订单FENTRYID + ,A.FDATE AS 退货日期 + ,B.FQTY AS 退货数量 + ,B_F.FALLAMOUNT_LC AS 退货金额 + ,C.F_CONTRACTNUMBER AS 纸质合同号 + FROM T_SAL_RETURNNOTICE A + INNER JOIN T_SAL_RETURNNOTICEENTRY B ON A.FID = B.FID + INNER JOIN T_SAL_RETURNNOTICEENTRY_F B_F ON B.FENTRYID = B_F.FENTRYID + INNER JOIN T_SAL_ORDER C ON A.F_SOURPAPERCONTRACT = C.F_CONTRACTNUMBER AND C.FSALEORGID = A.FRETORGID --匹配纸质合同号 + INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID AND D.FMATERIALID = B.FMATERIALID --匹配明细物料 + WHERE 1=1 + AND A.FApproveDate >= @StartDate + AND A.FApproveDate < @EndDate + AND C.F_CONTRACTNUMBER NOT IN (SELECT DISTINCT [纸质合同号] FROM #TEMP2) + AND A.FDOCUMENTSTATUS = 'C' + + ----更新k3退货数据 + --update A + --SET A.K3退货数量 = C.退货数量,A.K3退货金额 = C.退货金额 + --FROM YingShouZhanKuanMX_GZTH A + --INNER JOIN T_SAL_ORDERENTRY B ON A.FID = B.FID AND A.FENTRYID = B.FENTRYID + --INNER JOIN T_BD_MATERIAL D ON B.FMATERIALID = B.FMaterialId + --INNER JOIN t_xnoldk3seorder1125 C ON A.FBILLNO = C.单据编码 AND A.CONTRACTNUMBER = C.项目编码 AND D.FOldNumber = C.物料编码 + + UPDATE A + SET ReturnDate = FORMAT( B.退货日期,'yyyy-MM-dd'),A.星空退货数量 = ISNULL(B.退货数量,0),A.星空退货金额 = ISNULL(B.退货金额,0) + FROM YingShouZhanKuanMX_GZTH A + INNER JOIN #TEMP2 B ON A.FID = B.销售订单FID AND A.FENTRYID = B.销售订单FENTRYID + + update YingShouZhanKuanMX_GZTH + SET ReturnNum = ISNULL(K3退货数量,0) + ISNULL(星空退货数量,0), ReturnAmount = ISNULL(K3退货金额,0) + ISNULL(星空退货金额,0); + + --更新回款日期 + UPDATE A + SET PaymentDate = FORMAT(B.ShouKuanFDate,'yyyy-MM-dd') + FROM YingShouZhanKuanMX_GZTH A + INNER JOIN ZZZ_HeXiaoBook B ON B.XiaoShouFid = A.FID + WHERE 1=1 + AND B.ShouKuanFDate >= @StartDate + AND B.ShouKuanFDate < @EndDate + --SELECT OrderAmount,PaymentAmount,ShippedDebt,InvoicedDebt,IsEnded ,OwedTickets,BillingAmount, CASE WHEN ROW_NUMBER() OVER(PARTITION BY FBILLNO ORDER BY fid) = 1 THEN FBILLNO + --END AS 单号,* FROM YingShouZhanKuanMX_GZTH + + --汇总发货金额、退货日期、退货金额、备注 + SELECT A.FID,SUM(A.ShipmentsAmount) AS '发货金额', SUM(A.ReturnAmount) AS '退货金额', + STUFF((SELECT DISTINCT ','+ReturnDate FROM YingShouZhanKuanMX_GZTH WHERE FID = a.FID FOR XML PATH('')),1,1,'') AS '退货日期' + INTO #TEMP4 + FROM YingShouZhanKuanMX_GZTH A + GROUP BY A.FID + + UPDATE A + SET A.ShipmentsAmount = ISNULL(B.发货金额,0),A.ReturnAmount = ISNULL(B.退货金额,0),A.ReturnDate = ISNULL(B.退货日期,'') + FROM YingShouZhanKuanMX_GZTH A + INNER JOIN #TEMP4 B ON A.FID = B.FID +END \ No newline at end of file