From 2eb807623d02e37236ef5c2a4879e7fef2783009 Mon Sep 17 00:00:00 2001 From: xiongshuai <873144595@qq.com> Date: Fri, 12 Dec 2025 09:13:59 +0800 Subject: [PATCH] 1 --- .../ServicePlugIn/AfterSave.cs | 63 +++++++++++-------- 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/Pilot_KD_Parino/AR_SalesVATInvoice/ServicePlugIn/AfterSave.cs b/Pilot_KD_Parino/AR_SalesVATInvoice/ServicePlugIn/AfterSave.cs index 7740491..8886a37 100644 --- a/Pilot_KD_Parino/AR_SalesVATInvoice/ServicePlugIn/AfterSave.cs +++ b/Pilot_KD_Parino/AR_SalesVATInvoice/ServicePlugIn/AfterSave.cs @@ -20,15 +20,16 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.AR_SalesVATInvoice.ServicePlugIn // 根据日志中的实际实体属性名来添加 e.FieldKeys.Add("FIDD"); e.FieldKeys.Add("FSEQQ"); - e.FieldKeys.Add("FSRCBILLTYPEID"); - e.FieldKeys.Add("FSRCBILLNO"); + e.FieldKeys.Add("SRCBILLTYPEID"); // 实体属性名(没有F前缀) + e.FieldKeys.Add("SRCBILLNO"); // 实体属性名(没有F前缀) + e.FieldKeys.Add("SEQ"); + e.FieldKeys.Add("BILLNO"); // 单据编号(主表字段) } - public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) - { - base.AfterExecuteOperationTransaction(e); - + public override void EndOperationTransaction(EndOperationTransactionArgs e) + { + base.EndOperationTransaction(e); foreach (var dataEntity in e.DataEntitys) { var billObj = dataEntity as DynamicObject; @@ -55,29 +56,38 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.AR_SalesVATInvoice.ServicePlugIn // 判断条件:FIDD != 当前行ID 且 源单编号为空 if (fiddValue != entryId && string.IsNullOrWhiteSpace(srcBillNo)) { - // 查询源单据体信息(主键=FIDD的明细行) - var sql = $@"/*dialect*/ -SELECT FSRCBILLTYPEID, FSRCBILLNO, FSEQ -FROM T_IV_SALESICENTRY -WHERE FENTRYID = {fiddValue}"; - Logger.Error("销售增值税专用发票", sql, new Exception()); - var result = DBServiceHelper.ExecuteDynamicObject(this.Context, sql); - if (result == null || result.Count == 0) - continue; - Logger.Error("销售增值税专用发票", "69", new Exception()); - var srcData = result[0]; - var srcBillTypeId = srcData["FSRCBILLTYPEID"]; - var srcBillNoValue = srcData["FSRCBILLNO"]; + // 通过源分录ID(FIDD)查询源单据的单据编号 + string srcBillNoFromSource = ""; + try + { + var querySql = $@"/*dialect*/ +SELECT A.FBILLNO +FROM T_IV_SALESIC A +INNER JOIN T_IV_SALESICENTRY B ON A.FID = B.FID +WHERE B.FENTRYID = {fiddValue}"; + + var result = DBServiceHelper.ExecuteDynamicObject(this.Context, querySql); + if (result != null && result.Count > 0) + { + srcBillNoFromSource = result[0]["FBILLNO"]?.ToString() ?? ""; + } + } + catch (Exception ex) + { + Logger.Error($"查询源单据编号失败,FIDD={fiddValue}", ex); + } - // 回写当前单据体:源单类型、源单编号 + // 固定源单类型为"销售增值税专用发票" + var srcBillType = "IV_SALESIC"; + + // 回写当前单据体:源单类型、源单编号(使用源单据的编号) // 这里使用数据库字段名(带F前缀) var updateSql = $@"/*dialect*/ UPDATE T_IV_SALESICENTRY -SET FSRCBILLTYPEID = '{srcBillTypeId}', - FSRCBILLNO = '{srcBillNoValue}' +SET FSRCBILLTYPEID = '{srcBillType.Replace("'", "''")}', + FSRCBILLNO = '{srcBillNoFromSource.Replace("'", "''")}' WHERE FENTRYID = {entryId}"; - Logger.Error("销售增值税专用发票", updateSql, new Exception()); - Logger.Error("销售增值税专用发票", "78", new Exception()); + Logger.Error($"销售增值税专用发票_回写源单信息: {updateSql}"); DBServiceHelper.Execute(this.Context, updateSql); } } @@ -90,12 +100,11 @@ UPDATE T_IV_SALESICENTRY SET FIDD = {entryId}, FSEQQ = '{seq.Replace("'", "''")}' WHERE FENTRYID = {entryId}"; - Logger.Error("销售增值税专用发票", updateSql, new Exception()); - Logger.Error("销售增值税专用发票", "78", new Exception()); + Logger.Error($"销售增值税专用发票: {updateSql}"); DBServiceHelper.Execute(this.Context, updateSql); } } } } } -} \ No newline at end of file +}