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