diff --git a/Pilot_KD_Parino/IV SALESOC/Bill.cs b/Pilot_KD_Parino/IV SALESOC/Bill.cs new file mode 100644 index 0000000..e8dc3bf --- /dev/null +++ b/Pilot_KD_Parino/IV SALESOC/Bill.cs @@ -0,0 +1,28 @@ +using Kingdee.BOS.Core.Bill.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Util; +using System.ComponentModel; + +namespace Pilot_KD_Parino.IV_SALESOC +{ + [HotUpdate, Description("销售增值税专用发票_表单插件")] + public class Bill : AbstractBillPlugIn + { + public override void AfterDoOperation(AfterDoOperationEventArgs e) + { + base.AfterDoOperation(e); + + string opt = e.Operation.Operation; + + // 保存成功后刷新界面(参考收款核销5的刷新方式) + if (opt == "Save" && e.OperationResult.IsSuccess) + { + // 刷新单据体视图(与增值税专用发票共用同一实体属性名) + this.View.UpdateView("SALESICENTRY"); + // 刷新整个界面 + this.View.Refresh(); + } + } + } +} + diff --git a/Pilot_KD_Parino/IV SALESOC/ServicePlugIn/AfterSave.cs b/Pilot_KD_Parino/IV SALESOC/ServicePlugIn/AfterSave.cs new file mode 100644 index 0000000..9f8af66 --- /dev/null +++ b/Pilot_KD_Parino/IV SALESOC/ServicePlugIn/AfterSave.cs @@ -0,0 +1,114 @@ +using Kingdee.BOS; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Log; +using Kingdee.BOS.Orm; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.ServiceHelper; +using Kingdee.BOS.Util; +using System; +using System.ComponentModel; + +namespace Pilot_KD_Parino.BOSPlugIn.IV_SALESOC.ServicePlugIn +{ + [HotUpdate, Description("销售增值税普通发票_保存后事件")] + public class AfterSave : AbstractOperationServicePlugIn + { + public override void OnPreparePropertys(PreparePropertysEventArgs e) + { + base.OnPreparePropertys(e); + // 根据日志中的实际实体属性名来添加 + e.FieldKeys.Add("FIDD"); + e.FieldKeys.Add("FSEQQ"); + e.FieldKeys.Add("SRCBILLTYPEID"); // 实体属性名(没有F前缀) + e.FieldKeys.Add("SRCBILLNO"); // 实体属性名(没有F前缀) + e.FieldKeys.Add("SEQ"); + e.FieldKeys.Add("BILLNO"); // 单据编号(主表字段) + } + + + public override void EndOperationTransaction(EndOperationTransactionArgs e) + { + base.EndOperationTransaction(e); + try + { + foreach (var dataEntity in e.DataEntitys) + { + var billObj = dataEntity as DynamicObject; + if (billObj == null) + continue; + + // 获取单据体(与增值税专用发票共用同一实体属性名) + var entrys = billObj["SALESICENTRY"] as DynamicObjectCollection; + if (entrys == null || entrys.Count == 0) + continue; + + foreach (var entry in entrys) + { + // 使用 Id 获取主键值 + var entryId = Convert.ToInt64(entry.GetPrimaryKeyValue()); + var fidd = entry["FIDD"]; + var fiddValue = fidd == null ? 0 : Convert.ToInt64(fidd); + + if (fiddValue > 0) + { + // FIDD > 0 时,判断是否需要回写 + var srcBillNo = entry["SRCBILLNO"]?.ToString() ?? ""; + + // 判断条件:FIDD != 当前行ID 且 源单编号为空 + if (fiddValue != entryId && string.IsNullOrWhiteSpace(srcBillNo)) + { + // 通过源分录ID(FIDD)查询源单据的单据编号 + string srcBillNoFromSource = ""; + + 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() ?? ""; + } + + // 固定源单类型为"销售增值税普通发票"的FormId + var srcBillType = "IV_SALESOC"; + + // 回写当前单据体:源单类型、源单编号(使用源单据的编号) + // 这里使用数据库字段名(带F前缀) + var updateSql = $@"/*dialect*/ +UPDATE T_IV_SALESICENTRY +SET FSRCBILLTYPEID = '{srcBillType.Replace("'", "''")}', + FSRCBILLNO = '{srcBillNoFromSource.Replace("'", "''")}' +WHERE FENTRYID = {entryId}"; + Logger.Error("销售增值税普通发票_回写源单信息", updateSql, new Exception()); + DBServiceHelper.Execute(this.Context, updateSql); + } + } + else + { + // FIDD <= 0 时,把当前行FID赋值给FIDD,同时把FSEQ赋值给FSEQQ + var seq = entry["SEQ"]?.ToString() ?? "0"; + var updateSql = $@"/*dialect*/ +UPDATE T_IV_SALESICENTRY +SET FIDD = {entryId}, + FSEQQ = '{seq.Replace("'", "''")}' +WHERE FENTRYID = {entryId}"; + Logger.Error("销售增值税普通发票", updateSql, new Exception()); + Logger.Error("销售增值税普通发票", "78", new Exception()); + DBServiceHelper.Execute(this.Context, updateSql); + } + } + } + } + catch (Exception ex) + { + Logger.Error("销售增值税普通发票出错了:", ex.Message, new Exception()); + } + + } + } +} + diff --git a/Pilot_KD_Parino/Pilot_KD_Parino.csproj b/Pilot_KD_Parino/Pilot_KD_Parino.csproj index a66117b..81742fb 100644 --- a/Pilot_KD_Parino/Pilot_KD_Parino.csproj +++ b/Pilot_KD_Parino/Pilot_KD_Parino.csproj @@ -316,6 +316,8 @@ + +