From 6076a7bca746b344840cf782711a87e5318f4f16 Mon Sep 17 00:00:00 2001
From: 王 垚 <1402714037@qq.com>
Date: 星期一, 13 九月 2021 11:14:30 +0800
Subject: [PATCH] nothing

---
 src/BLL/Demo.BillView/PRD/Pro_TlPush.cs | 1026 +++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 713 insertions(+), 313 deletions(-)

diff --git a/src/BLL/Demo.BillView/PRD/Pro_TlPush.cs b/src/BLL/Demo.BillView/PRD/Pro_TlPush.cs
index 3b729e8..46a5287 100644
--- a/src/BLL/Demo.BillView/PRD/Pro_TlPush.cs
+++ b/src/BLL/Demo.BillView/PRD/Pro_TlPush.cs
@@ -1,376 +1,776 @@
 锘縰sing System;
 using System.Collections.Generic;
-using System.Collections.ObjectModel;
 using System.ComponentModel;
 using System.Data;
 using System.Linq;
-using System.Text;
-using Demo.Model.Model;
-using Kingdee.BOS;
-using Kingdee.BOS.Core.Attachment;
 using Kingdee.BOS.Core.Bill;
 using Kingdee.BOS.Core.Bill.PlugIn;
-using Kingdee.BOS.Core.Bill.PlugIn.Args;
-using Kingdee.BOS.Core.CommonFilter;
+using Kingdee.BOS.Core.DbSchema;
 using Kingdee.BOS.Core.DynamicForm;
-using Kingdee.BOS.Core.DynamicForm.DiffCompare;
-using Kingdee.BOS.Core.DynamicForm.Operation;
 using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
+using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
 using Kingdee.BOS.Core.List;
 using Kingdee.BOS.Core.Metadata;
-using Kingdee.BOS.Core.Metadata.BarElement;
-using Kingdee.BOS.Core.Metadata.ConvertElement;
-using Kingdee.BOS.Core.Metadata.ConvertElement.ServiceArgs;
-using Kingdee.BOS.Core.Metadata.FormElement;
-using Kingdee.BOS.Core.Metadata.QueryElement;
-using Kingdee.BOS.Core.Msg;
-using Kingdee.BOS.Core.Permission;
-using Kingdee.BOS.Log;
-using Kingdee.BOS.Msg;
-using Kingdee.BOS.Orm;
+using Kingdee.BOS.Core.Metadata.EntityElement;
 using Kingdee.BOS.Orm.DataEntity;
-using Kingdee.BOS.Orm.Metadata.DataEntity;
-using Kingdee.BOS.Resource;
 using Kingdee.BOS.ServiceHelper;
-using Kingdee.BOS.Util;
-using Kingdee.K3.SCM.Business;
-using Kingdee.K3.SCM.Core.SCP;
-using Kingdee.K3.SCM.ServiceHelper;
+using Newtonsoft.Json.Linq;
+using ZD.Cloud.Logger;
+using ZD.Cloud.WebApi;
+using ZD.Share.Common;
+using Demo.Model;
+using Demo.Model.Model.PODemandPlan;
+
 
 namespace Demo.BillView.PRD
 {
-
-    [Description("鎻愭枡涓嬫帹閫佽揣閫氱煡鍗�")]
+    [Description("鎻愭枡璁″垝鍗�-琛ㄥ崟鎻掍欢")]
     [Kingdee.BOS.Util.HotUpdate]
     public class Pro_TlPush : AbstractBillPlugIn
     {
-        private string InstockEntryTableNameAs;
-        private string ReturnEntryTableNameAs;
-        private string PoChangeEntryTableNameAs;
+        CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/");
         public override void BarItemClick(BarItemClickEventArgs e)
         {
-            string a;
-            if ((a = e.BarItemKey.ToUpperInvariant()) != null)
+            try
             {
-                if (a == "TBPUSH")
+                string a;
+                if ((a = e.BarItemKey.ToUpperInvariant()) != null)
                 {
-                    try
+                    if (a == "TBPUSH")
                     {
-                        PermissionAuthResult permissionAuthResult = PermissionServiceHelper.FuncPermissionAuth(base.Context, new BusinessObject
+                        Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity");//鏍囪瘑
+                        DynamicObjectCollection entityRows = this.Model.GetEntityDataObject(entity);//鑾峰彇鐖跺崟鎹綋琛岄泦鍚�
+                        int ret = entityRows.Where(x => Convert.ToDecimal(x["FHQty"]) - Convert.ToDecimal(x["FReciveCount"]) > 0 && !Convert.ToBoolean(x["FCloseStatus"])).Count();
+                        if (ret == 0)
                         {
-                            Id = "SCP_ReceiveBill"
-                        }, "fce8b1aca2144beeb3c6655eaf78bc34");
-                        if (!permissionAuthResult.Passed)
-                        {
-                            string msg = ResManager.LoadKDString("娌℃湁閫佽揣閫氱煡鍗曠殑鏂板鏉冮檺", "00444293030010485", SubSystemType.SCM, new object[0]);
-                            base.View.ShowErrMessage(msg, "", MessageBoxType.Notice);
+                            this.View.ShowErrMessage("宸插叏閮ㄧ敓鎴愰�佽揣鍗�");
                             return;
                         }
-                        DynamicObjectCollection source = this.Model.DataObject["FEntity"] as DynamicObjectCollection;
-                        string[] selEntryIds = (from p in source
-                                                select Convert.ToString(p["id"])).ToArray<string>();
-                        InvokePushToRec(base.View, selEntryIds);
-                        return;
-                    }
-                    catch (Exception ex)
-                    {
-                        if (ex.InnerException != null)
+                        JObject model = new JObject();
+                        model.Add("FBILLTYPEID", new JObject() { ["Fnumber"] = "SLD01_SYS" }); //鍗曟嵁绫诲瀷
+                        model.Add("FDate", DateTime.Now.ToString("yyyy-MM-dd")); //閫氱煡鏃ユ湡
+                        model.Add("FStockOrgId", new JObject() { ["Fnumber"] = (this.Model.GetValue("FHPURCHASEORGID") as DynamicObject)?["Number"].ToString() ?? "" }); // 鏀舵枡缁勭粐 
+                        model.Add("FPurOrgId", new JObject() { ["Fnumber"] = (this.Model.GetValue("FHPURCHASEORGID") as DynamicObject)?["Number"].ToString() ?? "" }); //閲囪喘缁勭粐
+                        model.Add("FSupplierId", new JObject() { ["Fnumber"] = (this.Model.GetValue("FSupplierID") as DynamicObject)?["Number"].ToString() ?? "" }); //渚涘簲鍟�
+                        model.Add("FOwnerTypeIdHead", "BD_OwnerOrg");//  璐т富绫诲瀷
+                        model.Add("FOwnerIdHead", new JObject() { ["Fnumber"] = (this.Model.GetValue("FHPURCHASEORGID") as DynamicObject)?["Number"].ToString() ?? "" });//璐т富 
+                        //model.Add("FPurchaserId", new JObject() { ["Fnumber"] = "" }); //閲囪喘鍛�
+                        //model.Add("FReceiverId", new JObject() { ["Fnumber"] = "" }); //鏀舵枡鍛�
+                        //model.Add("FSupplyAddress", ""); //渚涜揣鏂瑰湴鍧�
+                        //model.Add("FConfirmerId", new JObject() { ["FUserID"] = "" }); // 纭浜�
+                        //model.Add("FConfirmDate", "1900-01-01"); //纭鏃ユ湡 
+                        //model.Add("FSupplyId", new JObject() { ["Fnumber"] = "" }); // 渚涜揣鏂� 
+                        //model.Add("FChargeId", new JObject() { ["Fnumber"] = "" }); // 鏀舵鏂� 
+                        //model.Add("FSettleId", new JObject() { ["Fnumber"] = "" }); // 缁撶畻鏂� 
+                        //model.Add("FIsInsideBill", "false"); // 澶栭儴鍗曟嵁
+                        //model.Add("FScanBox", "false"); // 搴忓垪鍙蜂笂浼�
+                        //瀛愯〃 鏁版嵁妯″瀷
+                        JArray Fentity = new JArray();
+                        foreach (var item in entityRows)
                         {
-                            base.View.ShowErrMessage(ex.InnerException.Message, "", MessageBoxType.Notice);
+                            if (Convert.ToBoolean(item["FCloseStatus"]))
+                                continue;
+                            JObject FentityModel = new JObject();
+                            FentityModel.Add("FMaterialId", new JObject() { ["Fnumber"] = (item["FHMaterID"] as DynamicObject)?["Number"].ToString() ?? "" }); // 鐗╂枡缂栫爜   
+                            FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = (item["FUnitID"] as DynamicObject)?["Number"].ToString() ?? "" }); // 鍗曚綅   
+                            FentityModel.Add("FPreDeliveryDate", this.Model.GetValue("FHDate").ToString()); //棰勮鍒拌揣鏃ユ湡   
+                            FentityModel.Add("FPriceUnitId", new JObject() { ["Fnumber"] = (item["FUnitID"] as DynamicObject)?["Number"].ToString() ?? "" }); // 璁′环鍗曚綅   
+                            FentityModel.Add("FStockUnitID", new JObject() { ["Fnumber"] = (item["FUnitID"] as DynamicObject)?["Number"].ToString() ?? "" }); //  搴撳瓨鍗曚綅   
+                            FentityModel.Add("FActReceiveQty", Convert.ToDecimal(item["FHQty"]) - Convert.ToDecimal(item["FReciveCount"])); // 渚涘簲鍟嗛�佽揣鏁伴噺锛堟彁鏂欒鍒掓暟閲� - 宸茬敓鎴愰�佽揣鍗曟暟閲忥級
+                            FentityModel.Add("FOwnerTypeId", "BD_OwnerOrg");//璐т富绫诲瀷
+                            FentityModel.Add("FOwnerID", new JObject() { ["Fnumber"] = (this.Model.GetValue("FHPURCHASEORGID") as DynamicObject)?["Number"].ToString() ?? "" });//璐т富 
+                            FentityModel.Add("FSrcId", item["FHPOOrderInterID"].ToString());//婧愬崟鍐呯爜
+                            FentityModel.Add("FSRCFORMID", "PUR_PurchaseOrder");//婧愬崟绫诲瀷
+                            FentityModel.Add("FSrcBillNo", item["FHPOOrderBillNo"].ToString());//婧愬崟鍗曞彿
+                            FentityModel.Add("FSRCENTRYID", item["FHPOOrderEntryID"].ToString());//婧愬崟鍒嗗綍鍐呯爜
+                            FentityModel.Add("FORDERBILLNO", item["FHPOOrderBillNo"].ToString());//婧愬崟鍗曞彿
+                            FentityModel.Add("FPOORDERENTRYID", item["FHPOOrderEntryID"].ToString());//婧愬崟鍒嗗綍鍐呯爜
+                            FentityModel.Add("FTLId", this.View.Model.DataObject["Id"].ToString());//鎻愭枡婧愬崟鍐呯爜
+                            FentityModel.Add("FTLentryId", item["Id"].ToString());//鎻愭枡婧愬崟鍒嗗綍鍐呯爜
+                            FentityModel.Add("FTLOrderNo", this.Model.GetValue("FBillNo").ToString());//鎻愭枡婧愬崟鍒嗗綍鍐呯爜
+
+                            JArray Fentity2 = new JArray();
+                            JObject FentityModel2 = new JObject();
+                            FentityModel2.Add("FDetailEntity_Link_FRULEID", "a8c6b6e5-a8c0-4fc1-8592-6b76c2136cf9");
+                            FentityModel2.Add("FDetailEntity_Link_FSTableName", "t_PUR_POOrderEntry");
+                            FentityModel2.Add("FDetailEntity_Link_FSBillId", item["FHPOOrderInterID"].ToString());
+                            FentityModel2.Add("FDetailEntity_Link_FSId", item["FHPOOrderEntryID"].ToString());
+                            Fentity2.Add(FentityModel2);
+                            FentityModel.Add("FDetailEntity_Link", Fentity2);
+                            //鍗曟嵁杞崲鍏宠仈鍏崇郴
+                            //FentityModel.Add("FAuxPropId", new JObject() { }); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FConfirmDeliQty", 0); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FConfirmDeliDate", "1900-01-01"); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FConfirmInfo", ""); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FDescription", ""); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FBomId", new JObject() { ["Fnumber"] = "" }); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FLot", new JObject() { ["Fnumber"] = "" }); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FSupplierLot", ""); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FPrice", 0); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FTaxPrice", 0); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FDiscountRate", 0); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FEntryTaxRate", 0); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FStockBaseQty", 0); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FStockQty", 0); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FTaxCombination", new JObject() { ["Fnumber"] = "" }); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FPriceBaseQty", 0); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FStockInMaxQty", 0); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FBaseStockInMaxQty", 0); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FCheckInComing", "false"); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FStockID", new JObject() { ["Fnumber"] = "" }); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FStockLocId", new JObject() { }); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FStockStatusId", new JObject() { ["Fnumber"] = "" }); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FProduceDate", "1900-01-01"); // 鐗╂枡缂栫爜   
+                            //FentityModel.Add("FExpiryDate", "1900-01-01"); // 鐗╂枡缂栫爜 
+
+                            Fentity.Add(FentityModel);
+                        }
+                        model.Add("FDetailEntity", Fentity); //鏄庣粏淇℃伅
+
+                        JObject _FentityModel = new JObject();
+                        _FentityModel.Add("FSettleOrgId", new JObject() { ["Fnumber"] = (this.Model.GetValue("FHPURCHASEORGID") as DynamicObject)?["Number"].ToString() ?? "" }); //  缁撶畻缁勭粐  
+                        _FentityModel.Add("FSettleCurrId", new JObject() { ["Fnumber"] = (this.Model.GetValue("FSettleCurrId") as DynamicObject)?["Number"].ToString() ?? "" }); //  缁撶畻甯佸埆
+                        _FentityModel.Add("FPricePoint", 0); //  瀹氫环鏃剁偣
+                        //FPricePoint  
+                        model.Add("FinanceEntity ", _FentityModel);//璐㈠姟淇℃伅
+                        //model.Add("FinanceEntity ", new JObject() {
+                        //"FSettleOrgId", new JObject() { ["Fnumber"] = (this.Model.GetValue("FHPURCHASEORGID") as DynamicObject)?["Number"].ToString() ?? "" },
+                        //"FSettleCurrId", new JObject() { ["Fnumber"] = (this.Model.GetValue("FSettleCurrId") as DynamicObject)?["Number"].ToString() ?? "" }
+                        //});
+                        JObject jsonRoot = new JObject()
+                        {
+                            ["Creator"] = "",
+                            ["NeedUpDateFields"] = new JArray(),
+                            ["NeedReturnFields"] = new JArray(),
+                            ["IsDeleteEntry"] = "false",
+                            ["SubSystemId"] = "",
+                            ["IsVerifyBaseDataField"] = "false",
+                            //["IsAutoSubmitAndAudit"] = true,//鑷姩璋冪敤鎻愪氦鍜屽鏍稿姛鑳�
+                            ["Model"] = model
+                        };
+                        var result = cloudClient.Save("PUR_ReceiveBill", jsonRoot.ToString());
+                        JObject saveObj = JObject.Parse(result);
+                        string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
+                        if (saveIsSuc == "TRUE")
+                        {
+                            // 鎵撳紑鍗曟嵁缁存姢鐣岄潰锛氫互鎵撳紑閿�鍞鍗�100001涓轰緥
+                            // using Kingdee.BOS.Core.Bill;
+                            string pageId = Guid.NewGuid().ToString();
+                            BillShowParameter showParameter = new BillShowParameter();
+                            showParameter.FormId = "SCP_ReceiveBill";
+                            showParameter.OpenStyle.ShowType = ShowType.MainNewTabPage;
+                            showParameter.PageId = pageId;
+                            showParameter.Status = OperationStatus.EDIT;
+                            // 浼犲叆闇�瑕佷慨鏀圭殑閿�鍞鍗曞唴鐮侊紝婕旂ず浠g爜鐩存帴鍥哄畾鍐欐涓�100001
+                            showParameter.PKey = saveObj["Result"]["Id"].ToString();
+                            this.View.ShowForm(showParameter);
                         }
                         else
                         {
-                            base.View.ShowErrMessage(ex.Message, "", MessageBoxType.Notice);
+                            LogHelper.Error(jsonRoot.ToString());
+                            this.View.ShowErrMessage(jsonRoot.ToString());
                         }
-                        return;
+                    }
+                    else if (a == "TBDEMANDPLAN")
+                    {
+                        DemandPlan();
+                    }
+                    else if (a == "TBPURCHASE")
+                    {
+                        //閫夊崟閫夋嫨閲囪喘璁㈠崟
+                        PurChasePlan();
                     }
                 }
-                long num = Convert.ToInt64(this.Model.DataObject["id"]);
-                string arg = Convert.ToString(this.Model.GetValue("fbillno"));
-                ScpBillTrackInfo scpBillTrackInfo = new ScpBillTrackInfo();
-                scpBillTrackInfo.IsUpTrack = false;
-                scpBillTrackInfo.BillName = ResManager.LoadKDString("渚涘簲鍟嗗崗鍚岄噰璐鍗�", "00444293030009441", SubSystemType.SCM, new object[0]);
-                TrackItem trackItem = new TrackItem();
-                trackItem.FormId = "SCP_ReceiveBill";
-                trackItem.FormName = ResManager.LoadKDString("閫佽揣閫氱煡鍗�", "00444293030009436", SubSystemType.SCM, new object[0]);
-                trackItem.Filter = string.Format("  FSRCFORMID='PUR_PurchaseOrder'  AND FSRCID={0} ", num);
-                scpBillTrackInfo.TrackItems.Add(trackItem);
-                TrackItem trackItem2 = new TrackItem();
-                trackItem2.FormId = "SCP_MRAPP";
-                trackItem2.FormName = ResManager.LoadKDString("閫�鏂欓�氱煡鍗�", "00444293030010278", SubSystemType.SCM, new object[0]);
-                trackItem2.Filter = string.Format(" FSRCBILLTYPEID='PUR_PurchaseOrder' and FSRCBILLNO = '{0}' ", arg);
-                if (string.IsNullOrWhiteSpace(this.InstockEntryTableNameAs))
-                {
-                    FormMetadata formMetadata = (FormMetadata)MetaDataServiceHelper.Load(base.Context, "SCP_InStock", true);
-                    SelectField selectField = formMetadata.BusinessInfo.GetQueryInfo().GetSelectField("FMATERIALID");
-                    this.InstockEntryTableNameAs = selectField.FullFieldName.Substring(0, selectField.FullFieldName.IndexOf('.'));
-                }
-                if (string.IsNullOrWhiteSpace(this.ReturnEntryTableNameAs))
-                {
-                    FormMetadata formMetadata2 = (FormMetadata)MetaDataServiceHelper.Load(base.Context, "SCP_MRB", true);
-                    SelectField selectField2 = formMetadata2.BusinessInfo.GetQueryInfo().GetSelectField("FMATERIALID");
-                    this.ReturnEntryTableNameAs = selectField2.FullFieldName.Substring(0, selectField2.FullFieldName.IndexOf('.'));
-                }
-                if (string.IsNullOrWhiteSpace(this.PoChangeEntryTableNameAs))
-                {
-                    FormMetadata formMetadata3 = (FormMetadata)MetaDataServiceHelper.Load(base.Context, "SCP_POChange", true);
-                    SelectField selectField3 = formMetadata3.BusinessInfo.GetQueryInfo().GetSelectField("FMATERIALID");
-                    this.PoChangeEntryTableNameAs = selectField3.FullFieldName.Substring(0, selectField3.FullFieldName.IndexOf('.'));
-                }
-                TrackItem trackItem3 = new TrackItem();
-                trackItem3.FormId = "SCP_InStock";
-                trackItem3.FormName = ResManager.LoadKDString("閲囪喘鍏ュ簱鍗�", "00444293030010276", SubSystemType.SCM, new object[0]);
-                TrackItem trackItem4 = new TrackItem();
-                trackItem4.FormId = "SCP_MRB";
-                trackItem4.FormName = ResManager.LoadKDString("閲囪喘閫�鏂欏崟", "00444293030010277", SubSystemType.SCM, new object[0]);
-                TrackItem trackItem5 = new TrackItem();
-                trackItem5.FormId = "SCP_POChange";
-                trackItem5.FormName = ResManager.LoadKDString("閲囪喘璁㈠崟鍙樻洿鍗�", "00444293030010132", SubSystemType.SCM, new object[0]);
-                List<long> list = new List<long>();
-                list.Add(-1L);
-                List<long> list2 = new List<long>();
-                list2.Add(-1L);
-                List<long> list3 = new List<long>();
-                list3.Add(-1L);
-                string item = Convert.ToString(base.View.Model.DataObject["id"]);
-                List<string> list4 = new List<string>
-                {
-                    item
-                };
-                string[] trackIds = list4.ToArray();
-                List<long> linkBillEntryIds = PurchaseNewServiceHelper.GetLinkBillEntryIds(base.Context, "T_STK_INSTOCKENTRY_lk", "t_PUR_POOrderEntry", trackIds, null, true);
-                List<long> linkBillEntryIds2 = PurchaseNewServiceHelper.GetLinkBillEntryIds(base.Context, "T_PUR_MRBENTRY_lk", "t_PUR_POOrderEntry", trackIds, null, true);
-                List<long> linkBillEntryIds3 = PurchaseNewServiceHelper.GetLinkBillEntryIds(base.Context, "T_PUR_POChangeEntry_LK", "t_PUR_POOrderEntry", trackIds, null, true);
-                trackItem3.Filter = string.Format(" {1}.fentryid in ({0}) ", string.Join<long>(",", linkBillEntryIds), this.InstockEntryTableNameAs);
-                trackItem4.Filter = string.Format(" {1}.fentryid in ({0}) ", string.Join<long>(",", linkBillEntryIds2), this.ReturnEntryTableNameAs);
-                trackItem5.Filter = string.Format(" {1}.fentryid in ({0}) ", string.Join<long>(",", linkBillEntryIds3), this.PoChangeEntryTableNameAs);
-                scpBillTrackInfo.TrackItems.Add(trackItem2);
-                scpBillTrackInfo.TrackItems.Add(trackItem3);
-                scpBillTrackInfo.TrackItems.Add(trackItem4);
-                scpBillTrackInfo.TrackItems.Add(trackItem5);
-                //base.View.ShowForm(scpBillTrackInfo);
-
-                View.ShowForm(new DynamicFormShowParameter
-                {
-                    Height = 500,
-                    Width = 1000,
-                    FormId = "SCP_ScpBillTracker",
-                    SyncCallBackAction = true,
-                    ParentPageId = View.PageId,
-                    PageId = SequentialGuid.NewGuid().ToString(),
-                    CustomComplexParams =
-                {
-                    {
-                        "ScpBillTrackInfo",
-                        scpBillTrackInfo
-                    }
-                }
-                });
-                return;
+            }
+            catch (Exception ex)
+            {
+                throw ex;
             }
         }
 
-        public static void InvokePushToRec(IDynamicFormView formView, string[] selEntryIds)
+        //閫夋嫨鎻愭枡璁″垝
+        public void DemandPlan()
         {
-            if (CheckPoHasPushRec(formView.Context, selEntryIds))
+            try
             {
-                formView.ShowWarnningMessage(ResManager.LoadKDString("閲囪喘璁㈠崟鏈夋殏瀛樼殑鍏宠仈閫佽揣鍗曟嵁锛屽啀娆$敓鎴愪細閫犳垚鍗曟嵁閲嶅涓嬫帹锛屾槸鍚︾户缁敓鎴愰�佽揣閫氱煡鍗曪紵", "00444293030037168", SubSystemType.SCM, new object[0]), "", MessageBoxOptions.YesNoCancel, delegate (MessageBoxResult selRst)
+                //閫夊崟閫夋嫨鎻愭枡璁″垝鍗�
+                int[] selectedIndexsR = this.View.GetControl<EntryGrid>("FEntity").GetSelectedRows();//鍗曟嵁浣撴暟鎹� 聽聽
+                if (selectedIndexsR.Count() == 0)
                 {
-                    if (MessageBoxResult.Yes == selRst)
-                    {
-                        InnerInvokePushToRec(formView, selEntryIds);
-                    }
-                }, MessageBoxType.Advise);
-                return;
-            }
-            InnerInvokePushToRec(formView, selEntryIds);
-        }
-
-        public static bool CheckPoHasPushRec(Context ctx, string[] billEntryIds)
-        {
-            string strSql = string.Format("select 1 from T_PUR_RECEIVE TH\r\nINNER JOIN T_PUR_RECEIVEENTRY TE ON TE.FID=TH.FID\r\nINNER JOIN T_PUR_RECEIVEENTRY_LK TELK ON TE.FENTRYID=TELK.FENTRYID\r\ninner join (select /*+ cardinality(b1 {0})*/FID from TABLE(fn_StrSplit(@FID,',',1)) b1) b on TELK.FSID=b.fid  \r\nwhere TH.FDOCUMENTSTATUS='Z' ", billEntryIds.Length);
-            int num = DBServiceHelper.ExecuteScalar<int>(ctx, strSql, 0, new List<SqlParam>
-            {
-                new SqlParam("@FID", KDDbType.udt_inttable, billEntryIds)
-            }.ToArray());
-            return num == 1;
-        }
-
-        public static void InnerInvokePushToRec(IDynamicFormView formView, string[] selEntryIds)
-        {
-            DynamicFormShowParameter dynamicFormShowParameter = new DynamicFormShowParameter();
-            dynamicFormShowParameter.FormId = "SCP_PushParamFrom";
-            dynamicFormShowParameter.ParentPageId = formView.PageId;
-            dynamicFormShowParameter.OpenStyle.ShowType = ShowType.Modal;
-            dynamicFormShowParameter.CustomComplexParams.Add("SrcFormId", "paez_PODemandPlan");
-            dynamicFormShowParameter.CustomComplexParams.Add("TargetFormId", "PUR_ReceiveBill");
-            formView.ShowForm(dynamicFormShowParameter, delegate (FormResult results)
-            {
-                if (results != null && results.ReturnData != null)
-                {
-                    DynamicObject dynamicObject = results.ReturnData as DynamicObject;
-                    string CbConvertRule = Convert.ToString(dynamicObject["CbConvertRule"]);
-                    List<ConvertRuleElement> convertRules = ConvertServiceHelper.GetConvertRules(formView.Context, "paez_PODemandPlan", "PUR_ReceiveBill");
-                    ConvertRuleElement rule = convertRules.FirstOrDefault((ConvertRuleElement t) => t.Id == CbConvertRule);
-                    PushPurOrderToRec(formView, selEntryIds, rule);
-                }
-            });
-        }
-
-        public static void PushPurOrderToRec(IDynamicFormView formView, string[] billEntryIds, ConvertRuleElement rule)
-        {
-            ConvertPolicyElement convertPolicyElement = rule.Policies[6];
-            Collection<BillTypeMapElement> billTypeMaps = ((BillTypeMapPolicyElement)convertPolicyElement).BillTypeMaps;
-            Dictionary<string, string> dictionary = new Dictionary<string, string>();
-            foreach (BillTypeMapElement billTypeMapElement in billTypeMaps)
-            {
-                if (!dictionary.ContainsKey(billTypeMapElement.SourceBillTypeId))
-                {
-                    dictionary.Add(billTypeMapElement.SourceBillTypeId, billTypeMapElement.TargetBillTypeId);
-                }
-            }
-            List<ScpOrderPushInfo> list = new List<ScpOrderPushInfo>();
-            string strSQL = string.Format(" select tr.FentryID, t.fbilltypeid,ts.FMASTERID as fsupmasterid,t.fbillNO,TR.FID AS FBILLID  \r\n                        from Cg_PODemandPlanBillMain t\r\n                        inner join T_BD_SUPPLIER ts on ts.FSUPPLIERID=t.FSUPPLIERID\r\n                        inner join Cg_PODemandPlanBillSub TR ON TR.FID=T.FID \r\n                        inner join  (select /*+ cardinality(b {0})*/ fid from table(fn_StrSplit(@FID, ',',1)) b) tb on TR.fentryid=tb.fid \r\n                      ", billEntryIds.Length);
-            List<SqlParam> list2 = new List<SqlParam>
-            {
-                new SqlParam("@FID", KDDbType.udt_inttable, billEntryIds)
-            };
-            DynamicObjectCollection dynamicObjectCollection = DBServiceHelper.ExecuteDynamicObject(formView.Context, strSQL, null, null, CommandType.Text, list2.ToArray());
-            if (dynamicObjectCollection == null || dynamicObjectCollection.Count == 0)
-            {
-                throw new KDException("", ResManager.LoadKDString("鍙楁簮鍗曟墍閫夊崟鎹被鍨嬮檺鍒讹紝涓嶅厑璁镐笅鎺ㄧ洰鏍囧崟锛�", "00444293030009439", SubSystemType.SCM, new object[0]));
-            }
-            long supplierMasterIdByUserId = SupplierServiceHelper.GetSupplierMasterIdByUserId(formView.Context, formView.Context.UserId);
-            string format = ResManager.LoadKDString("鎮ㄦ病鏈夋潈闄愭搷浣滃崟鎹畕0}", "00444293030009639", SubSystemType.SCM, new object[0]);
-            foreach (DynamicObject dynamicObject in dynamicObjectCollection)
-            {
-                if (supplierMasterIdByUserId != Convert.ToInt64(dynamicObject["fsupmasterid"]))
-                {
-                    throw new KDException("", string.Format(format, Convert.ToString(dynamicObject["fbillNO"])));
-                }
-                list.Add(new ScpOrderPushInfo
-                {
-                    EntryId = Convert.ToString(dynamicObject["FentryID"]),
-                    BillId = Convert.ToString(dynamicObject["FBILLID"]),
-                    BilltypeId = Convert.ToString(dynamicObject["fbilltypeid"])
-                });
-            }
-            IEnumerable<IGrouping<string, ScpOrderPushInfo>> enumerable = from g in list
-                                                                          group g by g.BilltypeId;
-            List<DynamicObject> list3 = new List<DynamicObject>();
-            StringBuilder stringBuilder = new StringBuilder();
-            foreach (IGrouping<string, ScpOrderPushInfo> grouping in enumerable)
-            {
-                string key = grouping.Key;
-                List<ListSelectedRow> list4 = new List<ListSelectedRow>();
-                int num = 0;
-                foreach (ScpOrderPushInfo scpOrderPushInfo in grouping)
-                {
-                    list4.Add(new ListSelectedRow(scpOrderPushInfo.BillId, scpOrderPushInfo.EntryId, num++, "paez_PODemandPlan")
-                    {
-                        EntryEntityKey = "FEntity"
-                    });
-                }
-                ListSelectedRow[] selectedRows = list4.ToArray();
-                PushArgs pushArgs = new PushArgs(rule, selectedRows);
-                if (dictionary.ContainsKey(key))
-                {
-                    pushArgs.TargetBillTypeId = dictionary[key];
-                }
-                try
-                {
-                    ConvertOperationResult convertOperationResult = ConvertServiceHelper.Push(formView.Context, pushArgs, false);
-                    list3.AddRange(from p in convertOperationResult.TargetDataEntities
-                                   select p.DataEntity);
-                }
-                catch (Exception ex)
-                {
-                    stringBuilder.AppendLine(ex.Message);
-                }
-            }
-            if (list3.Count == 0)
-            {
-                if (stringBuilder.Length > 0)
-                {
-                    formView.ShowErrMessage(stringBuilder.ToString(), "", MessageBoxType.Notice);
+                    this.View.ShowErrMessage("璇烽�夋嫨闇�瑕佸彉鏇寸殑鍗曟嵁琛�");
                     return;
                 }
-                formView.ShowErrMessage(ResManager.LoadKDString("娌℃湁鍙笅鎺ㄦ暟鎹紒", "00444293030009360", SubSystemType.SCM, new object[0]), "", MessageBoxType.Notice);
-                return;
-            }
-            else
-            {
-                DynamicObject[] array = list3.ToArray();
-                Dictionary<string, object> dictionary2 = new Dictionary<string, object>();
-                dictionary2["CodeTime"] = 0;
-                dictionary2["UpdateMaxNum"] = 1;
-                FormMetadata formMetadata = (FormMetadata)MetaDataServiceHelper.Load(formView.Context, "PUR_ReceiveBill", true);
-                List<BillNoInfo> billNo = BusinessDataServiceHelper.GetBillNo(formView.Context, formMetadata.BusinessInfo, array, dictionary2, "");
-                for (int i = 0; i < array.Count<DynamicObject>(); i++)
+                DynamicObjectCollection selectedRowsDy = this.Model.DataObject["FEntity"] as DynamicObjectCollection;//閫変腑琛屾暟鎹� 聽
+                DynamicObject selectedRow;
+                List<int> FentryIdList = new List<int>();
+                foreach (var item in selectedIndexsR)
                 {
-                    array[i]["BillNo"] = billNo[i].BillNo;
-                    array[i]["IsInsideBill"] = true;
+                    selectedRow = selectedRowsDy[item];
+                    FentryIdList.Add(Convert.ToInt32(selectedRow["Id"]));
                 }
-                OperateOption option = OperateOption.Create();
-                IOperationResult operationResult = BusinessDataServiceHelper.Draft(formView.Context, formMetadata.BusinessInfo, array, option, "");
-                if (!operationResult.IsSuccess)
+                string FentryId = string.Join(",", FentryIdList);
+                string isCancleSql = string.Format(@"/*dialect*/
+select FSEQ from Cg_PODemandPlanBillSub
+FCLOSESTATUS = 1 
+where fentryid in ({0})", FentryId);
+                DataTable isCancleTable = DBServiceHelper.ExecuteDataSet(Context, isCancleSql).Tables[0];
+                if (isCancleTable.Rows.Count > 0)
                 {
-                    formView.ShowMessage(ResManager.LoadKDString("涓嬫帹澶辫触锛�", "00444293030009440", SubSystemType.SCM, new object[0]), MessageBoxType.Notice);
+                    string errdt = "閿欒锛�";
+                    foreach (DataRow dr in isCancleTable.Rows)
+                    {
+                        errdt += "搴忓彿 锛� " + dr["FSEQ"].ToString() + "宸插叧闂�";
+                    }
+                    this.View.ShowErrMessage(errdt);
                     return;
                 }
-                if (operationResult.SuccessDataEnity.Count<DynamicObject>() == 1)
+
+                //璺宠浆閫夊崟鐣岄潰
+                List<string> FSelectIdList = new List<string>(); //璁板綍閫夊崟鐨勬槑缁咺D
+                string pageId = Guid.NewGuid().ToString();
+                ListShowParameter showParameter = new ListShowParameter();
+                showParameter.FormId = "paez_PODemandPlan";
+                showParameter.PageId = pageId;
+                showParameter.UseOrgId = this.Context.CurrentOrganizationInfo.ID;
+                showParameter.IsLookUp = true;
+                this.View.ShowForm(showParameter, delegate (FormResult result)
                 {
-                    DynamicObject dynamicObject2 = operationResult.SuccessDataEnity.FirstOrDefault<DynamicObject>();
-                    formView.ShowForm(new BillShowParameter
+                    object returnData = result.ReturnData;
+                    if (returnData is ListSelectedRowCollection)
                     {
-                        FormId = "SCP_ReceiveBill",
-                        PKey = Convert.ToString(dynamicObject2["id"]),
-                        Status = OperationStatus.EDIT,
-                        OpenStyle =
+                        ListSelectedRowCollection listSelectedRowCollection = returnData as ListSelectedRowCollection;
+                        if (listSelectedRowCollection != null)
                         {
-                            ShowType = ShowType.MainNewTabPage
-                        },
-                        CustomComplexParams =
-                        {
+                            foreach (var listSelectedRow in listSelectedRowCollection)
                             {
-                                "FromScpOrderPushRecs",
-                                true
+                                FSelectIdList.Add(listSelectedRow.DataRow["t1_FENTRYID"].ToString());
                             }
                         }
-                    });
-                    return;
-                }
-                DynamicObjectType dynamicObjectType = new DynamicObjectType("ScpRecBillDatas", null, null, DataEntityTypeFlag.Class, new object[0]);
-                dynamicObjectType.RegisterSimpleProperty("BillNo", typeof(string), null, false, new object[0]);
-                dynamicObjectType.RegisterSimpleProperty("DocumentStatus", typeof(string), null, false, new object[0]);
-                dynamicObjectType.RegisterSimpleProperty("BillId", typeof(long), null, false, new object[0]);
-                DynamicObjectCollection dynamicObjectCollection2 = new DynamicObjectCollection(dynamicObjectType, null);
-                foreach (DynamicObject dynamicObject3 in operationResult.SuccessDataEnity)
-                {
-                    DynamicObject dynamicObject4 = new DynamicObject(dynamicObjectType);
-                    dynamicObject4["BillNo"] = dynamicObject3["BillNo"];
-                    dynamicObject4["DocumentStatus"] = dynamicObject3["DocumentStatus"];
-                    dynamicObject4["BillId"] = dynamicObject3["id"];
-                    dynamicObjectCollection2.Add(dynamicObject4);
-                }
-                formView.ShowForm(new DynamicFormShowParameter
-                {
-                    FormId = "SCP_GENRECRSTFORM",
-                    PageId = SequentialGuid.NewGuid().ToString(),
-                    OpenStyle =
+                    }
+                    //if (FentryIdList.Count != FSelectIdList.Count)
+                    //{
+                    //    this.View.ShowErrMessage("閫夋嫨琛屾暟閲忎笉涓�鑷�");
+                    //    return;
+                    //}
+                    string FSelectId = string.Join(",", FSelectIdList);
+                    //闇�瑕侀�夋嫨鍙樻洿鐨勬暟鎹� 浠ュ強 閫夊崟閫変腑鐨勬暟鎹� 鍒ゆ柇鏁版嵁鍚堢悊鎬�
+                    //閫夊崟鐣岄潰B閫変腑琛屾暟鎹墿鏂� 闇�瑕佷竴鑷� 涓擝鍗犵敤閲囪喘鍗曟暟閲忛渶瑕佹弧瓒矨鐨勯渶姹傞噺
+                    string sql = string.Format(@"/*dialect*/
+SELECT count(*) errcount FROM 
+(
+select FHMATERID,SUM(FHQTY)FHQTY from Cg_PODemandPlanBillSub 
+where FEntryID IN({0})
+GROUP BY FHMATERID
+)A
+JOIN 
+(select FHMATERID,FHQTY from Cg_PODemandPlanBillSub 
+where FEntryID IN({1})
+)
+B
+ON A.FHMATERID=B.FHMATERID
+WHERE B.FHQTY < A.FHQTY", FentryId, FSelectId);
+                    int ErrCount = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
+                    if (ErrCount > 0)
                     {
-                        ShowType = ShowType.MainNewTabPage
-                    },
-                    CustomComplexParams =
+                        this.View.ShowErrMessage("閫夊崟鏁版嵁鍗犵敤鐨勯噰璐鍗曟暟閲忎笉婊¤冻闇�瑕佸彉鏇存暟閲�");
+                        return;
+                    }
+                    //楠岃瘉閫氳繃
+                    //鍏抽棴A鍗曟嵁閫夋嫨琛� 鍙栨秷閲囪喘璁㈠崟鐨勫崰鐢ㄦ彁鏂欐暟閲�
+                    //鐢熸垚涓�寮犳柊鐨勬彁鏂欒鍒掑崟 鎻愭枡鏃ユ湡锛屾彁鏂欐暟閲忥紝鐢熶骇宸ュ崟淇℃伅 鍙朅鍗曟嵁 锛岄噰璐俊鎭� 鍙朆鍗曟嵁 
+                    string tlSql = string.Format(@"/*dialect*/
+SELECT A.FID,C.FHDate,D.FSupplierID,E.FNUMBER AS FSupplierName,C.FSettleCurrId,A.FHMATERID,F.FNUMBER AS FMATERIALNAME,A.FHQty,A.FHSourceInterID,A.FHSourceEntryID,A.FHSourceBillNo,A.FDayPlanDate,A.FDayPlanDate,A.FHRelationQty,B.FHPOOrderInterID,B.FHPOOrderEntryID,B.FHPOOrderBillNo,B.FHPOOrderFseq,B.FErpClsID FROM 
+(
+select * from Cg_PODemandPlanBillSub
+where FEntryID IN({0})
+)
+A
+JOIN
+(select * from Cg_PODemandPlanBillSub
+where FEntryID IN({1})
+)
+B
+ON A.FHMATERID = B.FHMATERID
+JOIN Cg_PODemandPlanBillMain C ON A.FID = C.FID
+JOIN Cg_PODemandPlanBillMain D ON B.FID = D.FID
+JOIN T_BD_SUPPLIER E ON D.FSupplierID = E.FSUPPLIERID 
+JOIN T_BD_MATERIAL F ON A.FHMATERID = F.FMATERIALID
+
+", FentryId, FSelectId);
+                    DynamicObjectCollection tlCollection = DBServiceHelper.ExecuteDynamicObject(Context, tlSql);
+                    JObject model = new JObject();
+                    JArray Fentity = new JArray();
+                    foreach (var item in tlCollection)
                     {
+                        if (!model.ToString().Contains("FHDate"))
                         {
-                            "ScpRecBillDatas",
-                            dynamicObjectCollection2
+                            model.Add("FHDate", item["FHDate"].ToString());
+                            model.Add("FSettleCurrId", new JObject() { ["Fnumber"] = "PRE001" });
+                            model.Add("FSupplierID", new JObject() { ["Fnumber"] = item["FSupplierName"].ToString() });
                         }
+                        JObject FentityModel = new JObject();
+                        FentityModel.Add("FHPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//閲囪喘缁勭粐
+                        FentityModel.Add("FHMaterID", new JObject() { ["Fnumber"] = item["FMATERIALNAME"].ToString() });//鐗╂枡
+                        FentityModel.Add("FHQty", item["FHQty"].ToString());//鏁伴噺
+                        FentityModel.Add("FHSourceInterID", item["FHSourceInterID"].ToString());//鏃ヨ鍒掑伐鍗旻ID
+                        FentityModel.Add("FHSourceEntryID", item["FHSourceEntryID"].ToString());//鏃ヨ鍒掑伐鍗旻ENTRYID
+                        FentityModel.Add("FHSourceBillNo", item["FHSourceBillNo"].ToString());//鏃ヨ鍒掑伐鍗曞崟鍙�
+                        FentityModel.Add("FDayPlanDate", item["FDayPlanDate"].ToString());//鏃ヨ鍒掓棩鏈�
+                        FentityModel.Add("FHRelationQty", item["FHRelationQty"].ToString());//鍏宠仈鏁伴噺
+                        FentityModel.Add("FPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//閲囪喘缁勭粐
+                        FentityModel.Add("FHPOOrderInterID", item["FHPOOrderInterID"].ToString());// 閲囪喘璁㈠崟鍐呯爜锛欶HPOOrderInterID
+                        FentityModel.Add("FHPOOrderEntryID", item["FHPOOrderEntryID"].ToString()); //閲囪喘璁㈠崟瀛愬唴鐮侊細FHPOOrderEntryID
+                        FentityModel.Add("FHPOOrderBillNo", item["FHPOOrderBillNo"].ToString()); //閲囪喘璁㈠崟鍙凤細FHPOOrderBillNo
+                        FentityModel.Add("FERPCLSID", item["FErpClsID"].ToString()); //
+                        FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = "Pcs" }); //鍗曚綅
+                        Fentity.Add(FentityModel);
+                    }
+                    model.Add("FEntity", Fentity);
+                    JObject jsonRoot = new JObject()
+                    {
+                        ["Creator"] = "",
+                        ["NeedUpDateFields"] = new JArray(),
+                        ["NeedReturnFields"] = new JArray(),
+                        ["IsDeleteEntry"] = "false",
+                        ["SubSystemId"] = "",
+                        ["IsVerifyBaseDataField"] = "false",
+                        ["Model"] = model
+                    };
+                    CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/");
+                    var _result = cloudClient.Save("paez_PODemandPlan", jsonRoot.ToString());
+                    JObject saveObj = JObject.Parse(_result);
+                    string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
+                    if (saveIsSuc != "TRUE")
+                    {
+                        LogHelper.Error("鎻愭枡璁″垝鍗曢�夊崟鏂板寮傚父锛�" + saveObj.ToString());
+                        this.View.ShowMessage(saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString());
+                    }
+                    else
+                    {
+                        //鍏抽棴A鍗曟嵁浣撹 鏇存柊瀵瑰簲閲囪喘璁㈠崟 鎻愭枡璁″垝鏁伴噺 
+                        List<string> sqlList = new List<string>();
+                        string updateSql = string.Format(@"/*dialect*/
+update Cg_PODemandPlanBillSub set
+FCLOSESTATUS = 1
+where FEntryID in ({0})", FentryId);
+                        sqlList.Add(updateSql);
+                        updateSql = string.Format(@"/*dialect*/
+UPDATE A SET
+A.FPODemandPlanCount -= B.FHQTY
+FROM t_PUR_POOrderEntry A
+JOIN Cg_PODemandPlanBillSub B ON A.FENTRYID = B.FHPOOrderEntryID
+where B.FEntryID in ({0})", FentryId);
+                        sqlList.Add(updateSql);
+                        //宸茬粡鍗犵敤浜咮鐨勯噰璐鍗曟暟閲� 鏁呬笉鐢ㄦ洿鏂癇瀵瑰簲閲囪喘璁㈠崟鐨勬彁鏂欒鍒掓暟閲�
+                        //鏌ヨ鍑築璁㈠崟琚崰鐢ㄧ殑鏁伴噺 鏇存柊B璁㈠崟鐨勮浆绉绘暟閲�
+                        updateSql = string.Format(@"/*dialect*/
+update Cg_PODemandPlanBillSub set 
+FRemoveCount += T2.FHQTY 
+from Cg_PODemandPlanBillSub T1 
+join 
+(
+SELECT  A.FHQTY,FEntryID FROM 
+(
+select FHMATERID,SUM(FHQTY)FHQTY from Cg_PODemandPlanBillSub 
+where FEntryID IN({0})
+GROUP BY FHMATERID
+)A
+JOIN 
+(select FHMATERID,FHQTY,FEntryID from Cg_PODemandPlanBillSub 
+where FEntryID IN({1})
+)
+B
+ON A.FHMATERID=B.FHMATERID
+)T2 ON T1.FEntryID =T2.FEntryID", FentryId, FSelectId);
+                        sqlList.Add(updateSql);
+                        //鎵цsql
+                        int resCount = DBServiceHelper.ExecuteBatch(Context, sqlList);
+                        //閲嶆柊涓築璁㈠崟鍒嗛厤閲囪喘璁㈠崟 
+                        //浼樺厛鍒嗛厤鐩稿悓渚涘簲鍟� 
+
+                        string cgddSql = @"/*dialect*/
+ select t1.FID,t1.FBillNo,t2.FENTRYID,t1.FSUPPLIERID,t3.fnumber,t2.FMATERIALID,(t2.FQTY-t2.FPODemandPlanCount)FQTY,FPurchaseOrgId FStockOrgId,t5.FNUMBER FORGNumber,FSTOCKINQTY,FReceiveQty,FCloseStatus,FMRPCLOSESTATUS from t_PUR_POOrder t1
+join t_PUR_POOrderEntry t2 on t1.FID = t2.FID
+join t_BD_Supplier t3 on t1.FSUPPLIERID = t3.FSUPPLIERID
+join  T_PUR_POORDERENTRY_R t4 on t2.FENTRYID = t4.FENTRYID
+join T_ORG_Organizations t5 on t1.FPurchaseOrgId = t5.FORGID
+where t2.FQTY-t2.FPODemandPlanCount>0
+ and FCloseStatus in('A') and FMRPCLOSESTATUS in('A')
+ and t1.FBillTypeID in('83d822ca3e374b4ab01e5dd46a0062bd','6d01d059713d42a28bb976c90a121142')
+";
+                        List<PurchaseInventory> PurchaseInventory = DBServiceHelper.ExecuteDataSet(Context, cgddSql).ToModelList<PurchaseInventory>();
+                        string cxfpSql = string.Format(@"/*dialect*/
+select A.FID,B.FHDate,FRemoveCount,A.FHMATERID,F.FNUMBER AS FMATERIALNAME,B.FSUPPLIERID,E.FNUMBER AS FSupplierName,FHSourceInterID,FHSourceEntryID,FHSourceBillNo,FDayPlanDate,FERPCLSID from Cg_PODemandPlanBillSub A
+JOIN Cg_PODemandPlanBillMain B ON A.FID =B.FID
+JOIN T_BD_MATERIAL F ON A.FHMATERID = F.FMATERIALID
+JOIN T_BD_SUPPLIER E ON B.FSUPPLIERID=E.FSUPPLIERID
+WHERE A.FEntryID IN ({0})", FSelectId);
+                        DataTable DT = DBServiceHelper.ExecuteDataSet(Context, cxfpSql).Tables[0];
+                        //鎵归噺鎵ц
+                        JArray FinalyResult = new JArray();
+                        foreach (DataRow dr in DT.Rows)
+                        {
+                            decimal FRemoveCount = Convert.ToDecimal(dr["FRemoveCount"]);//闇�瑕佹媶鍒嗙殑鏁伴噺
+                            var _PurchaseInventory = PurchaseInventory.Where(x => x.FSUPPLIERID == Convert.ToInt32(dr["FSUPPLIERID"]) && x.FMATERIALID == dr["FHMATERID"].ToString() && x.FQTY > 0).OrderBy(x => x.FENTRYID).ToList();//浼樺厛璇ヤ緵搴斿晢
+                            model = new JObject();
+                            Fentity = new JArray();
+                            if (_PurchaseInventory.Count > 0)
+                            {
+                                if (!model.ToString().Contains("FHDate"))
+                                {
+                                    model.Add("FID", dr["FID"].ToString());
+                                    model.Add("FHDate", dr["FHDate"].ToString());
+                                    model.Add("FSettleCurrId", new JObject() { ["Fnumber"] = "PRE001" });
+                                    model.Add("FSupplierID", new JObject() { ["Fnumber"] = dr["FSupplierName"].ToString() });
+                                }
+                                foreach (var cgitem in _PurchaseInventory)
+                                {
+                                    if (FRemoveCount == 0)
+                                        break;
+                                    if (cgitem.FQTY >= FRemoveCount)
+                                    {
+                                        //鏄庣粏琛屼俊鎭疛son
+                                        JObject FentityModel = new JObject();
+                                        FentityModel.Add("FHPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//閲囪喘缁勭粐
+                                        FentityModel.Add("FHMaterID", new JObject() { ["Fnumber"] = dr["FMATERIALNAME"].ToString() });//鐗╂枡
+                                        FentityModel.Add("FHQty", FRemoveCount);//鏁伴噺
+                                        FentityModel.Add("FHSourceInterID", dr["FHSourceInterID"].ToString());//鏃ヨ鍒掑伐鍗旻ID
+                                        FentityModel.Add("FHSourceEntryID", dr["FHSourceEntryID"].ToString());//鏃ヨ鍒掑伐鍗旻ENTRYID
+                                        FentityModel.Add("FHSourceBillNo", dr["FHSourceBillNo"].ToString());//鏃ヨ鍒掑伐鍗曞崟鍙�
+                                        FentityModel.Add("FDayPlanDate", dr["FDayPlanDate"].ToString());//鏃ヨ鍒掓棩鏈�
+                                        FentityModel.Add("FPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//閲囪喘缁勭粐
+                                        FentityModel.Add("FHPOOrderInterID", cgitem.FID.ToString());// 閲囪喘璁㈠崟鍐呯爜锛欶HPOOrderInterID
+                                        FentityModel.Add("FHPOOrderEntryID", cgitem.FENTRYID.ToString()); //閲囪喘璁㈠崟瀛愬唴鐮侊細FHPOOrderEntryID
+                                        FentityModel.Add("FHPOOrderBillNo", cgitem.FBillNo.ToString()); //閲囪喘璁㈠崟鍙凤細FHPOOrderBillNo
+                                        FentityModel.Add("FERPCLSID", dr["FErpClsID"].ToString()); //
+                                        FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = "Pcs" }); //鍗曚綅
+                                        Fentity.Add(FentityModel);
+                                        FRemoveCount = 0;
+                                        PurchaseInventory.Where(c => c.FENTRYID == cgitem.FENTRYID).FirstOrDefault().FQTY -= FRemoveCount;
+                                    }
+                                    else
+                                    {
+                                        //鏄庣粏琛屼俊鎭疛son
+                                        JObject FentityModel = new JObject();
+                                        FentityModel.Add("FHPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//閲囪喘缁勭粐
+                                        FentityModel.Add("FHMaterID", new JObject() { ["Fnumber"] = dr["FMATERIALNAME"].ToString() });//鐗╂枡
+                                        FentityModel.Add("FHQty", cgitem.FQTY);//鏁伴噺
+                                        FentityModel.Add("FHSourceInterID", dr["FHSourceInterID"].ToString());//鏃ヨ鍒掑伐鍗旻ID
+                                        FentityModel.Add("FHSourceEntryID", dr["FHSourceEntryID"].ToString());//鏃ヨ鍒掑伐鍗旻ENTRYID
+                                        FentityModel.Add("FHSourceBillNo", dr["FHSourceBillNo"].ToString());//鏃ヨ鍒掑伐鍗曞崟鍙�
+                                        FentityModel.Add("FDayPlanDate", dr["FDayPlanDate"].ToString());//鏃ヨ鍒掓棩鏈�
+                                        FentityModel.Add("FPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//閲囪喘缁勭粐
+                                        FentityModel.Add("FHPOOrderInterID", cgitem.FID.ToString());// 閲囪喘璁㈠崟鍐呯爜锛欶HPOOrderInterID
+                                        FentityModel.Add("FHPOOrderEntryID", cgitem.FENTRYID.ToString()); //閲囪喘璁㈠崟瀛愬唴鐮侊細FHPOOrderEntryID
+                                        FentityModel.Add("FHPOOrderBillNo", cgitem.FBillNo.ToString()); //閲囪喘璁㈠崟鍙凤細FHPOOrderBillNo
+                                        FentityModel.Add("FERPCLSID", dr["FErpClsID"].ToString()); //
+                                        FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = "Pcs" }); //鍗曚綅
+                                        Fentity.Add(FentityModel);
+                                        FRemoveCount -= cgitem.FQTY;
+                                        PurchaseInventory.Where(c => c.FENTRYID == cgitem.FENTRYID).FirstOrDefault().FQTY = 0;
+                                    }
+                                }
+                                model.Add("FEntity", Fentity);
+                            }
+                            FinalyResult.Add(model);
+                            if (FRemoveCount == 0)
+                                continue;
+                            _PurchaseInventory = PurchaseInventory.Where(x => x.FMATERIALID == dr["FHMATERID"].ToString() && x.FQTY > 0).OrderBy(x => x.FENTRYID).ToList();//浼樺厛璇ヤ緵搴斿晢
+                            if (_PurchaseInventory.Count > 0)
+                            {
+                                if (!model.ToString().Contains("FHDate"))
+                                {
+                                    model.Add("FHDate", dr["FHDate"].ToString());
+                                    model.Add("FSettleCurrId", new JObject() { ["Fnumber"] = "PRE001" });
+                                    model.Add("FSupplierID", new JObject() { ["Fnumber"] = dr["FSupplierName"].ToString() });
+                                }
+                                foreach (var cgitem in _PurchaseInventory)
+                                {
+                                    if (FRemoveCount == 0)
+                                        break;
+                                    if (cgitem.FQTY >= FRemoveCount)
+                                    {
+                                        //鏄庣粏琛屼俊鎭疛son
+                                        JObject FentityModel = new JObject();
+                                        FentityModel.Add("FHPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//閲囪喘缁勭粐
+                                        FentityModel.Add("FHMaterID", new JObject() { ["Fnumber"] = dr["FMATERIALNAME"].ToString() });//鐗╂枡
+                                        FentityModel.Add("FHQty", FRemoveCount);//鏁伴噺
+                                        FentityModel.Add("FHSourceInterID", dr["FHSourceInterID"].ToString());//鏃ヨ鍒掑伐鍗旻ID
+                                        FentityModel.Add("FHSourceEntryID", dr["FHSourceEntryID"].ToString());//鏃ヨ鍒掑伐鍗旻ENTRYID
+                                        FentityModel.Add("FHSourceBillNo", dr["FHSourceBillNo"].ToString());//鏃ヨ鍒掑伐鍗曞崟鍙�
+                                        FentityModel.Add("FDayPlanDate", dr["FDayPlanDate"].ToString());//鏃ヨ鍒掓棩鏈�
+                                        FentityModel.Add("FPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//閲囪喘缁勭粐
+                                        FentityModel.Add("FHPOOrderInterID", cgitem.FID.ToString());// 閲囪喘璁㈠崟鍐呯爜锛欶HPOOrderInterID
+                                        FentityModel.Add("FHPOOrderEntryID", cgitem.FENTRYID.ToString()); //閲囪喘璁㈠崟瀛愬唴鐮侊細FHPOOrderEntryID
+                                        FentityModel.Add("FHPOOrderBillNo", cgitem.FBillNo.ToString()); //閲囪喘璁㈠崟鍙凤細FHPOOrderBillNo
+                                        FentityModel.Add("FERPCLSID", dr["FErpClsID"].ToString()); //
+                                        FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = "Pcs" }); //鍗曚綅
+                                        Fentity.Add(FentityModel);
+                                        FRemoveCount = 0;
+                                        PurchaseInventory.Where(c => c.FENTRYID == cgitem.FENTRYID).FirstOrDefault().FQTY -= FRemoveCount;
+                                    }
+                                    else
+                                    {
+
+                                        //鏄庣粏琛屼俊鎭疛son
+                                        JObject FentityModel = new JObject();
+                                        FentityModel.Add("FHPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//閲囪喘缁勭粐
+                                        FentityModel.Add("FHMaterID", new JObject() { ["Fnumber"] = dr["FMATERIALNAME"].ToString() });//鐗╂枡
+                                        FentityModel.Add("FHQty", cgitem.FQTY);//鏁伴噺
+                                        FentityModel.Add("FHSourceInterID", dr["FHSourceInterID"].ToString());//鏃ヨ鍒掑伐鍗旻ID
+                                        FentityModel.Add("FHSourceEntryID", dr["FHSourceEntryID"].ToString());//鏃ヨ鍒掑伐鍗旻ENTRYID
+                                        FentityModel.Add("FHSourceBillNo", dr["FHSourceBillNo"].ToString());//鏃ヨ鍒掑伐鍗曞崟鍙�
+                                        FentityModel.Add("FDayPlanDate", dr["FDayPlanDate"].ToString());//鏃ヨ鍒掓棩鏈�
+                                        FentityModel.Add("FPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//閲囪喘缁勭粐
+                                        FentityModel.Add("FHPOOrderInterID", cgitem.FID.ToString());// 閲囪喘璁㈠崟鍐呯爜锛欶HPOOrderInterID
+                                        FentityModel.Add("FHPOOrderEntryID", cgitem.FENTRYID.ToString()); //閲囪喘璁㈠崟瀛愬唴鐮侊細FHPOOrderEntryID
+                                        FentityModel.Add("FHPOOrderBillNo", cgitem.FBillNo.ToString()); //閲囪喘璁㈠崟鍙凤細FHPOOrderBillNo
+                                        FentityModel.Add("FERPCLSID", dr["FErpClsID"].ToString()); //
+                                        FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = "Pcs" }); //鍗曚綅
+                                        Fentity.Add(FentityModel);
+                                        FRemoveCount -= cgitem.FQTY;
+                                        PurchaseInventory.Where(c => c.FENTRYID == cgitem.FENTRYID).FirstOrDefault().FQTY = 0;
+                                    }
+                                }
+                                model.Add("FEntity", Fentity);
+                            }
+                            FinalyResult.Add(model);
+                        }
+                        jsonRoot = new JObject()
+                        {
+                            ["Creator"] = "",
+                            ["NeedUpDateFields"] = new JArray(),
+                            ["NeedReturnFields"] = new JArray(),
+                            ["IsDeleteEntry"] = "false",
+                            ["SubSystemId"] = "",
+                            ["IsVerifyBaseDataField"] = "false",
+                            ["Model"] = FinalyResult
+                        };
+
+                        _result = cloudClient.BatchSave("paez_PODemandPlan", jsonRoot.ToString());
+                        var _saveObj = JObject.Parse(_result);
+                        saveIsSuc = _saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
+                        if (saveIsSuc != "TRUE")
+                        {
+                            LogHelper.Error(saveObj.ToString());
+                        }
+
+
+                        string _pageId = Guid.NewGuid().ToString();
+                        BillShowParameter _showParameter = new BillShowParameter();
+                        _showParameter.FormId = "paez_PODemandPlan";
+                        _showParameter.OpenStyle.ShowType = ShowType.MainNewTabPage;
+                        _showParameter.PageId = _pageId;
+                        _showParameter.Status = OperationStatus.EDIT;
+                        // 浼犲叆闇�瑕佷慨鏀圭殑閿�鍞鍗曞唴鐮侊紝婕旂ず浠g爜鐩存帴鍥哄畾鍐欐涓�100001
+                        _showParameter.PKey = saveObj["Result"]["Id"].ToString();
+                        this.View.ShowForm(_showParameter);
                     }
                 });
-                return;
+            }
+            catch (Exception ex)
+            {
+                throw ex;
+            }
+        }
+
+        //閫夋嫨閲囪喘璁㈠崟
+        public void PurChasePlan()
+        {
+            try
+            {
+                //閫夊崟閫夋嫨鎻愭枡璁″垝鍗�
+                int[] selectedIndexsR = this.View.GetControl<EntryGrid>("FEntity").GetSelectedRows();//鍗曟嵁浣撴暟鎹� 聽聽
+                if (selectedIndexsR.Count() == 0)
+                {
+                    this.View.ShowErrMessage("璇烽�夋嫨闇�瑕佸彉鏇寸殑鍗曟嵁琛�");
+                    return;
+                }
+                DynamicObjectCollection selectedRowsDy = this.Model.DataObject["FEntity"] as DynamicObjectCollection;//閫変腑琛屾暟鎹� 聽
+                DynamicObject selectedRow;
+                List<int> FentryIdList = new List<int>();
+                foreach (var item in selectedIndexsR)
+                {
+                    selectedRow = selectedRowsDy[item];
+                    FentryIdList.Add(Convert.ToInt32(selectedRow["Id"]));
+                }
+                string FentryId = string.Join(",", FentryIdList);
+                string isCancleSql = string.Format(@"/*dialect*/
+select FSEQ from Cg_PODemandPlanBillSub
+FCLOSESTATUS = 1 
+where fentryid in ({0})", FentryId);
+                DataTable isCancleTable = DBServiceHelper.ExecuteDataSet(Context, isCancleSql).Tables[0];
+                if (isCancleTable.Rows.Count > 0)
+                {
+                    string errdt = "閿欒锛�";
+                    foreach (DataRow dr in isCancleTable.Rows)
+                    {
+                        errdt += "搴忓彿 锛� " + dr["FSEQ"].ToString() + "宸插叧闂�";
+                    }
+                    this.View.ShowErrMessage(errdt);
+                    return;
+                }
+                //璺宠浆閫夊崟鐣岄潰
+                List<string> FSelectIdList = new List<string>(); //璁板綍閫夊崟鐨勬槑缁咺D
+                string pageId = Guid.NewGuid().ToString();
+                ListShowParameter showParameter = new ListShowParameter();
+                showParameter.FormId = "PUR_PurchaseOrder";
+                showParameter.PageId = pageId;
+                showParameter.UseOrgId = this.Context.CurrentOrganizationInfo.ID;
+                showParameter.IsLookUp = true;
+                this.View.ShowForm(showParameter, delegate (FormResult result)
+                {
+                    object returnData = result.ReturnData;
+                    if (returnData is ListSelectedRowCollection)
+                    {
+                        ListSelectedRowCollection listSelectedRowCollection = returnData as ListSelectedRowCollection;
+                        if (listSelectedRowCollection != null)
+                        {
+                            foreach (var listSelectedRow in listSelectedRowCollection)
+                            {
+                                FSelectIdList.Add(listSelectedRow.DataRow["t1_FENTRYID"].ToString());
+                            }
+                        }
+                    }
+                    string FSelectId = string.Join(",", FSelectIdList);
+                    //楠岃瘉鎵�閫夐噰璐鍗曠墿鏂欐暟閲� 鏄惁灏忎簬 鎻愭枡璁″垝鐗╂枡鏁伴噺 涓嶆弧瓒崇粰鍑烘彁绀� return
+                    string sql = string.Format(@"/*dialect*/
+SELECT count(*) errcount FROM 
+(
+select FHMATERID,SUM(FHQTY)FHQTY from Cg_PODemandPlanBillSub 
+where FEntryID IN({0})
+GROUP BY FHMATERID
+)A
+JOIN 
+(select FMaterialId,FQty from t_PUR_POOrderEntry
+where FEntryID IN({1})
+)
+B
+ON A.FHMATERID=B.FMaterialId
+WHERE B.FQTY < A.FHQTY", FentryId, FSelectId);
+                    int ErrCount = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
+                    if (ErrCount > 0)
+                    {
+                        this.View.ShowErrMessage("閫夊崟鏁版嵁鍗犵敤鐨勯噰璐鍗曟暟閲忎笉婊¤冻闇�瑕佸彉鏇存暟閲�");
+                        return;
+                    }
+                    //楠岃瘉閫氳繃
+                    //鍏抽棴A鍗曟嵁閫夋嫨琛� 鍙栨秷閲囪喘璁㈠崟鐨勫崰鐢ㄦ彁鏂欐暟閲�
+                    //鐢熸垚涓�寮犳柊鐨勬彁鏂欒鍒掑崟 鎻愭枡鏃ユ湡锛屾彁鏂欐暟閲忥紝鐢熶骇宸ュ崟淇℃伅 鍙朅鍗曟嵁 锛岄噰璐俊鎭� 鍙朆鍗曟嵁 
+                    string tlSql = string.Format(@"/*dialect*/
+SELECT A.FID,C.FHDate,D.FSupplierID,E.FNUMBER AS FSupplierName,C.FSettleCurrId,A.FHMATERID,F.FNUMBER AS FMATERIALNAME,A.FHQty,A.FHSourceInterID,A.FHSourceEntryID,A.FHSourceBillNo,A.FDayPlanDate,A.FDayPlanDate,A.FHRelationQty,B.FID AS FHPOOrderInterID,B.FENTRYID AS FHPOOrderEntryID,C.FBILLNO AS FHPOOrderBillNo,B.FSEQ AS FHPOOrderFseq,A.FErpClsID FROM 
+(
+select * from Cg_PODemandPlanBillSub
+where FEntryID IN({0})
+)
+A
+JOIN
+(select * from t_PUR_POOrderEntry 
+where FEntryID IN({1})
+)
+B
+ON A.FHMATERID = B.FMaterialId
+JOIN t_PUR_POOrder PO ON B.FID = PO.FID
+JOIN Cg_PODemandPlanBillMain C ON A.FID = C.FID
+JOIN Cg_PODemandPlanBillMain D ON B.FID = D.FID
+JOIN T_BD_SUPPLIER E ON D.FSupplierID = E.FSUPPLIERID 
+JOIN T_BD_MATERIAL F ON A.FHMATERID = F.FMATERIALID
+", FentryId, FSelectId);
+                    DynamicObjectCollection tlCollection = DBServiceHelper.ExecuteDynamicObject(Context, tlSql);
+                    JObject model = new JObject();
+                    JArray Fentity = new JArray();
+                    foreach (var item in tlCollection)
+                    {
+                        if (!model.ToString().Contains("FHDate"))
+                        {
+                            model.Add("FHDate", item["FHDate"].ToString());
+                            model.Add("FSettleCurrId", new JObject() { ["Fnumber"] = "PRE001" });
+                            model.Add("FSupplierID", new JObject() { ["Fnumber"] = item["FSupplierName"].ToString() });
+                        }
+                        JObject FentityModel = new JObject();
+                        FentityModel.Add("FHPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//閲囪喘缁勭粐
+                        FentityModel.Add("FHMaterID", new JObject() { ["Fnumber"] = item["FMATERIALNAME"].ToString() });//鐗╂枡
+                        FentityModel.Add("FHQty", item["FHQty"].ToString());//鏁伴噺
+                        FentityModel.Add("FHSourceInterID", item["FHSourceInterID"].ToString());//鏃ヨ鍒掑伐鍗旻ID
+                        FentityModel.Add("FHSourceEntryID", item["FHSourceEntryID"].ToString());//鏃ヨ鍒掑伐鍗旻ENTRYID
+                        FentityModel.Add("FHSourceBillNo", item["FHSourceBillNo"].ToString());//鏃ヨ鍒掑伐鍗曞崟鍙�
+                        FentityModel.Add("FDayPlanDate", item["FDayPlanDate"].ToString());//鏃ヨ鍒掓棩鏈�
+                        FentityModel.Add("FHRelationQty", item["FHRelationQty"].ToString());//鍏宠仈鏁伴噺
+                        FentityModel.Add("FPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//閲囪喘缁勭粐
+                        FentityModel.Add("FHPOOrderInterID", item["FHPOOrderInterID"].ToString());// 閲囪喘璁㈠崟鍐呯爜锛欶HPOOrderInterID
+                        FentityModel.Add("FHPOOrderEntryID", item["FHPOOrderEntryID"].ToString()); //閲囪喘璁㈠崟瀛愬唴鐮侊細FHPOOrderEntryID
+                        FentityModel.Add("FHPOOrderBillNo", item["FHPOOrderBillNo"].ToString()); //閲囪喘璁㈠崟鍙凤細FHPOOrderBillNo
+                        FentityModel.Add("FERPCLSID", item["FErpClsID"].ToString()); //
+                        FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = "Pcs" }); //鍗曚綅
+                        Fentity.Add(FentityModel);
+                    }
+                    model.Add("FEntity", Fentity);
+                    JObject jsonRoot = new JObject()
+                    {
+                        ["Creator"] = "",
+                        ["NeedUpDateFields"] = new JArray(),
+                        ["NeedReturnFields"] = new JArray(),
+                        ["IsDeleteEntry"] = "false",
+                        ["SubSystemId"] = "",
+                        ["IsVerifyBaseDataField"] = "false",
+                        ["Model"] = model
+                    };
+                    CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/");
+                    var _result = cloudClient.Save("paez_PODemandPlan", jsonRoot.ToString());
+                    JObject saveObj = JObject.Parse(_result);
+                    string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
+                    if (saveIsSuc != "TRUE")
+                    {
+                        LogHelper.Error("鎻愭枡璁″垝鍗曢�夊崟鏂板寮傚父锛�" + saveObj.ToString());
+                        this.View.ShowMessage(saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString());
+                    }
+                    else
+                    {
+                        //鍏抽棴A鍗曟嵁浣撹 鏇存柊瀵瑰簲閲囪喘璁㈠崟 鎻愭枡璁″垝鏁伴噺 
+                        List<string> sqlList = new List<string>();
+                        string updateSql = string.Format(@"/*dialect*/
+update Cg_PODemandPlanBillSub set
+FCLOSESTATUS = 1
+where FEntryID in ({0})", FentryId);
+                        sqlList.Add(updateSql);
+                        updateSql = string.Format(@"/*dialect*/
+UPDATE A SET
+A.FPODemandPlanCount -= B.FHQTY
+FROM t_PUR_POOrderEntry A
+JOIN Cg_PODemandPlanBillSub B ON A.FENTRYID = B.FHPOOrderEntryID
+where B.FEntryID in ({0})", FentryId);
+                        sqlList.Add(updateSql);
+                        //鏇存柊閲囪喘璁㈠崟 鎻愭枡璁″垝鏁伴噺
+                        updateSql = string.Format(@"/*dialect*/
+update t_PUR_POOrderEntry set 
+FPODEMANDPLANCOUNT += T2.FHQTY 
+from Cg_PODemandPlanBillSub T1 
+join 
+(
+SELECT  A.FHQTY,FEntryID FROM 
+(
+select FHMATERID,SUM(FHQTY)FHQTY from Cg_PODemandPlanBillSub 
+where FEntryID IN({0})
+GROUP BY FHMATERID
+)A
+JOIN 
+(select FMaterialId,FQTY,FEntryID from t_PUR_POOrderEntry 
+where FEntryID IN({1})
+)
+B
+ON A.FHMATERID=B.FMaterialId
+)T2 ON T1.FEntryID =T2.FEntryID", FentryId, FSelectId);
+                        sqlList.Add(updateSql);
+                        //鎵цsql
+                        int resCount = DBServiceHelper.ExecuteBatch(Context, sqlList);
+                    }
+                });
+            }
+            catch (Exception ex)
+            {
+                throw ex;
             }
         }
     }
 }
+

--
Gitblit v1.9.1