From f26b3129adde088d5ff4a633cecfeabb72834e96 Mon Sep 17 00:00:00 2001 From: 王 垚 <1402714037@qq.com> Date: 星期五, 10 九月 2021 17:24:35 +0800 Subject: [PATCH] 选单功能 --- src/BLL/Demo.BillView/PRD/Pro_TlPush.cs | 611 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 608 insertions(+), 3 deletions(-) diff --git a/src/BLL/Demo.BillView/PRD/Pro_TlPush.cs b/src/BLL/Demo.BillView/PRD/Pro_TlPush.cs index c93b0d0..46a5287 100644 --- a/src/BLL/Demo.BillView/PRD/Pro_TlPush.cs +++ b/src/BLL/Demo.BillView/PRD/Pro_TlPush.cs @@ -1,20 +1,30 @@ 锘縰sing System; +using System.Collections.Generic; using System.ComponentModel; +using System.Data; using System.Linq; using Kingdee.BOS.Core.Bill; using Kingdee.BOS.Core.Bill.PlugIn; +using Kingdee.BOS.Core.DbSchema; using Kingdee.BOS.Core.DynamicForm; 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.EntityElement; using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.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 { @@ -30,7 +40,7 @@ { 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).Count(); + int ret = entityRows.Where(x => Convert.ToDecimal(x["FHQty"]) - Convert.ToDecimal(x["FReciveCount"]) > 0 && !Convert.ToBoolean(x["FCloseStatus"])).Count(); if (ret == 0) { this.View.ShowErrMessage("宸插叏閮ㄧ敓鎴愰�佽揣鍗�"); @@ -58,6 +68,8 @@ JArray Fentity = new JArray(); foreach (var item in entityRows) { + 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() ?? "" }); // 鍗曚綅 @@ -76,7 +88,7 @@ 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"); @@ -159,6 +171,15 @@ this.View.ShowErrMessage(jsonRoot.ToString()); } } + else if (a == "TBDEMANDPLAN") + { + DemandPlan(); + } + else if (a == "TBPURCHASE") + { + //閫夊崟閫夋嫨閲囪喘璁㈠崟 + PurChasePlan(); + } } } catch (Exception ex) @@ -166,6 +187,590 @@ throw ex; } } + + //閫夋嫨鎻愭枡璁″垝 + public void DemandPlan() + { + 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 = "paez_PODemandPlan"; + 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()); + } + } + } + //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) + { + 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")) + { + 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); + } + }); + } + 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