From e863883d0503b56f0f5feb39c2eb2ef8829d46b8 Mon Sep 17 00:00:00 2001 From: yuyubo <1870149533@qq.com> Date: Wed, 30 Apr 2025 16:12:36 +0800 Subject: [PATCH] 222 --- .../Sal_Order/PushSaleBillPlugIn.cs | 109 ++++++++++++++---- 1 file changed, 89 insertions(+), 20 deletions(-) diff --git a/Pilot_KD_Parino/Sal_Order/PushSaleBillPlugIn.cs b/Pilot_KD_Parino/Sal_Order/PushSaleBillPlugIn.cs index 72108d6..af5fda5 100644 --- a/Pilot_KD_Parino/Sal_Order/PushSaleBillPlugIn.cs +++ b/Pilot_KD_Parino/Sal_Order/PushSaleBillPlugIn.cs @@ -1,10 +1,12 @@ using Kingdee.BOS; using Kingdee.BOS.App; using Kingdee.BOS.Contracts; +using Kingdee.BOS.Core.Const; using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.DynamicForm.Operation; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.Globalization.Tax; using Kingdee.BOS.Core.List; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Metadata.ConvertElement; @@ -21,6 +23,7 @@ using System; using System.ComponentModel; using System.Data; using System.Linq; +using static Kingdee.K3.SCM.Common.BusinessEntity.Sales.SaleOrder; namespace Pilot_KD_Parino.Sal_Order { [Description("销售单下推生成跨组织的采购申请单的插件"), HotUpdate] @@ -53,12 +56,11 @@ namespace Pilot_KD_Parino.Sal_Order int stockId = 0; //IOperationResult result = Invoke("SAL_SaleOrder", "d124a6be-5f97-4d1f-b5fd-e20e53e0ed2a", id.ToString(), "83d822ca3e374b4ab01e5dd46a0062bd", ref stockId); - IOperationResult result = Invoke("SAL_SaleOrder", "PUR_PurchaseOrder", id.ToString(), "83d822ca3e374b4ab01e5dd46a0062bd", ref stockId, FEntity, null); - var sheet = result.SuccessDataEnity.FirstOrDefault(); - string id2 = sheet["id"].ToString(); + //IOperationResult result = Invoke("SAL_SaleOrder", "PUR_PurchaseOrder", id.ToString(), "83d822ca3e374b4ab01e5dd46a0062bd", ref stockId, FEntity, null); + //var sheet = result.SuccessDataEnity.FirstOrDefault(); + - - result = Invoke("PUR_PurchaseOrder", "SAL_SaleOrder", id2, "5eaf7dde-df05-4c11-accd-3a175f117968", ref stockId, sheet, FEntity); + var result = Invoke("SAL_SaleOrder", "SAL_SaleOrder", id.ToString(), "eacb50844fc84a10b03d7b841f3a6278", ref stockId, null, FEntity); //sheet = result.SuccessDataEnity.FirstOrDefault(); //result = Invoke("SAL_DELIVERYNOTICE", "SAL_OUTSTOCK", sheet["id"].ToString(), "ad0779a4685a43a08f08d2e42d7bf3e9", ref stockId); @@ -92,6 +94,11 @@ namespace Pilot_KD_Parino.Sal_Order var ruleMetaData = ConvertServiceHelper.GetConvertRule(this.Context, "d124a6be-5f97-4d1f-b5fd-e20e53e0ed2a"); ruleElement = ruleMetaData.Rule; } + else if (target == "SAL_SaleOrder") + { + var ruleMetaData = ConvertServiceHelper.GetConvertRule(this.Context, "8ee74811-5784-40a8-80c4-a94cd43eed70"); + ruleElement = ruleMetaData.Rule; + } else ruleElement = ServiceHelper.GetService().GetConvertRules(this.Context, source, target).FirstOrDefault(); //如下代码 直接通过查询数据库获取单据转换源单数据 @@ -101,6 +108,13 @@ namespace Pilot_KD_Parino.Sal_Order rows.Add(row); PushArgs pushArgs = new PushArgs(ruleElement, rows.ToArray()); + if (target == "SAL_SaleOrder") + pushArgs.TargetOrgId =long.Parse( FEntity2["F_SaleOrgId_Id"].ToString()); + //OperateOption pushOption = OperateOption.Create(); + //pushOption.SetVariableValue(ConvertConst., false); + + + pushArgs.TargetBillTypeId = sargetBillTypeId;//单据类型 //转换生成目标单 ConvertOperationResult convertResult = ServiceHelper.GetService().Push(this.Context, pushArgs); @@ -109,7 +123,7 @@ namespace Pilot_KD_Parino.Sal_Order ////目标单据数据集合 DynamicObject[] destObjs = convertResult.TargetDataEntities.Select(r => r.DataEntity).ToArray(); - + var orderSheet = destObjs[0]; var sdsas = JsonHelper.ToJson(destObjs); Logger.Error("目标单据数据集合", sdsas, new Exception()); int temStockId = stockId; @@ -133,8 +147,7 @@ namespace Pilot_KD_Parino.Sal_Order WHERE FUseOrgId={SaleOrgId_Id} AND FNAME LIKE '%{beiHuoName3}%' "; var supplierList = DBServiceHelper.ExecuteDynamicObject(this.Context, sqltemp1, null, null, CommandType.Text, null); if (supplierList != null && supplierList.Count > 0) - { - var orderSheet = destObjs[0]; + { DynamicObject supplierObj = null;//.Select(t => t["FSUPPLIERID"].ToString()) if (beiHuoName3 == "珠海兴诺") @@ -219,22 +232,51 @@ namespace Pilot_KD_Parino.Sal_Order } if (target == "SAL_SaleOrder") { + orderSheet["BusinessType"] = FEntity2["BusinessType"]; //客户,销售员,是否海外 var beiHuoName1 = FEntity2["SaleOrgId"] as DynamicObject; - string SaleOrgId_Id = FEntity2["SaleOrgId_Id"].ToString(); + string SaleOrgId_Id = FEntity2["F_SaleOrgId_Id"].ToString(); + SupplierId_Id = orderSheet["SaleOrgId_Id"].ToString(); if (beiHuoName1 != null) { //通过上游销售单的销售组织找到对应的客户 var beiHuoName2 = beiHuoName1["MultiLanguageText"] as DynamicObjectCollection; if (beiHuoName2 != null && beiHuoName2.Count() > 0) { - var beiHuoName3 = beiHuoName2[0]["Name"].ToString(); + var beiHuoName3 = beiHuoName2[0]["Name"].ToString(); + + //未知原因导致自动保存失败原因:字段“销售员”是必填项; 字段“结算币别”是必填项; + //第1行分录,交货明细的数量与订单明细的数量不一致,请检查.; 第2行分录,交货明细的数量与订单明细的数量不一致,请检查.; + //第3行分录,交货明细的数量与订单明细的数量不一致,请检查.; 整单收款计划应收金额合计不等于整单价税合计,不允许保存。 - - var orderSheet = destObjs[0]; - orderSheet["SaleOrgId_Id"] = SaleOrgId_Id; + //orderSheet["SaleOrderFinance"] = FEntity2["SaleOrderFinance"]; + //orderSheet["ExchangeTypeId_Id"] = FEntity2["ExchangeTypeId_Id"]; + //orderSheet["ExchangeTypeId"] = FEntity2["ExchangeTypeId"]; + //orderSheet["SaleOrderPlan"] = FEntity2["SaleOrderPlan"]; orderSheet["F_SFHW"] = "2"; - SupplierId_Id = orderSheet["SaleOrgId_Id"].ToString(); + + var entryDetailList = (orderSheet["SaleOrderEntry"] as DynamicObjectCollection).ToList(); + entryDetailList.ForEach(t => + { + t["SettleOrgId"] = orderSheet["SaleOrgId"]; + t["SettleOrgId_Id"] = orderSheet["SaleOrgId_Id"]; + }); + var SaleOrderFinanceList = (orderSheet["SaleOrderFinance"] as DynamicObjectCollection).ToList(); + var SaleOrderFinanceList2 = (FEntity2["SaleOrderFinance"] as DynamicObjectCollection).ToList(); + SaleOrderFinanceList.ForEach(t => + { + var tempOne1 = SaleOrderFinanceList2.FirstOrDefault(); + //t["SettleOrgId"] = orderSheet["SaleOrgId"]; + //t["SettleOrgId_Id"] = orderSheet["SaleOrgId_Id"]; + t["ExchangeTypeId_Id"] = tempOne1["ExchangeTypeId_Id"]; + t["ExchangeTypeId"] = tempOne1["ExchangeTypeId"]; + t["SettleCurrId_Id"] = tempOne1["SettleCurrId_Id"]; + t["SettleCurrId"] = tempOne1["SettleCurrId"]; + }); + + + this.View.ShowMessage("更新了1"); + string sqltemp1 = $@"/*dialect*/ SELECT FUseOrgId,a.FNUMBER,b.FNAME,a.FCUSTID FROM T_BD_CUSTOMER a LEFT JOIN T_BD_CUSTOMER_L b ON a.FCUSTID=b.FCUSTID WHERE FUseOrgId={SupplierId_Id} AND FNAME LIKE '%{beiHuoName3}%' "; @@ -243,7 +285,6 @@ namespace Pilot_KD_Parino.Sal_Order if (keHuList != null && keHuList.Count > 0) { - DynamicObject supplierObj = null;//.Select(t => t["FSUPPLIERID"].ToString()) if (beiHuoName3 == "珠海兴诺") { @@ -266,11 +307,16 @@ namespace Pilot_KD_Parino.Sal_Order orderSheet["CustId_Id"] = SupplierId_Id; number = supplierObj["FNUMBER"].ToString(); name = supplierObj["FNAME"].ToString(); - - } + } + + orderSheet["F_PaymentMethod"] = "款到发货"; } + + } + + - }//F_SFHW + } if (target == "PUR_ReceiveBill")//收料通知单,强制没有配置仓库的物料进成品仓库 @@ -358,7 +404,8 @@ namespace Pilot_KD_Parino.Sal_Order ////目标单元数据 - FormMetadata destFormMetadata = ServiceHelper.GetService().Load(this.Context, target) as FormMetadata; + FormMetadata destFormMetadata = ServiceHelper.GetService().Load(this.Context, target, orderSheet["id"].ToString(),true) as FormMetadata; + //sdsas = JsonHelper.ToJson(destObjs); //Logger.Error("目标单据数据集合3", sdsas, new Exception()); //destFormMetadata.BusinessInfo.Entrys.ForEach(t => ); @@ -370,9 +417,31 @@ namespace Pilot_KD_Parino.Sal_Order if (target == "SAL_SaleOrder") { - destObjs[0]["SaleOrgId"] = BusinessDataServiceHelper.LoadSingle(this.Context, FEntity2["SaleOrgId_Id"].ToString(), (destFormMetadata.BusinessInfo.GetField("FSaleOrgId") as BaseDataField).RefFormDynamicObjectType); + + //var ddsdsdsds= BusinessDataServiceHelper.LoadSingle(this.Context, SupplierId_Id, (destFormMetadata.BusinessInfo.GetField("FCustId") as BaseDataField).RefFormDynamicObjectType); + //destObjs[0]["SaleOrgId"] = BusinessDataServiceHelper.LoadSingle(this.Context, FEntity2["SaleOrgId_Id"].ToString(), (destFormMetadata.BusinessInfo.GetField("FSaleOrgId") as BaseDataField).RefFormDynamicObjectType); destObjs[0]["CustId"] = BusinessDataServiceHelper.LoadSingle(this.Context, SupplierId_Id, (destFormMetadata.BusinessInfo.GetField("FCustId") as BaseDataField).RefFormDynamicObjectType); + orderSheet["SalerId"] = FEntity2["SalerId"]; + var xiaoShouName1 = FEntity2["SalerId"] as DynamicObject; + if (xiaoShouName1 != null) + { + var beiHuoName2 = xiaoShouName1["MultiLanguageText"] as DynamicObjectCollection; + if (beiHuoName2 != null && beiHuoName2.Count() > 0) + { + var beiHuoName3 = beiHuoName2[0]["Name"].ToString(); + string sqltemp1 = $@"/*dialect*/ SELECT FBizOrgId,a.FNUMBER,b.FNAME,a.fid FROM V_BD_SALESMAN a + LEFT JOIN V_BD_SALESMAN_L b ON a.fid=b.fid + WHERE FBizOrgId={orderSheet["SaleOrgId_Id"].ToString()} AND FNAME = '{beiHuoName3}' AND a.FFORBIDSTATUS='A' AND a.FFORBIDDENSTATUS=0"; + var xiaoShouList = DBServiceHelper.ExecuteDynamicObject(this.Context, sqltemp1, null, null, CommandType.Text, null); + if (xiaoShouList != null && xiaoShouList.Count > 0) + { + var xiao = xiaoShouList.FirstOrDefault(); + destObjs[0]["SalerId_Id"] = xiao["fid"]; + destObjs[0]["SalerId"] = BusinessDataServiceHelper.LoadSingle(this.Context, xiao["fid"], (destFormMetadata.BusinessInfo.GetField("FSalerId") as BaseDataField).RefFormDynamicObjectType); + } + } + } } //Logger.Error("目标单据数据集合3", sdsas, new Exception());