using System; using System.ComponentModel; using System.Linq; using Kingdee.BOS.Core.Bill; using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Orm.DataEntity; using Newtonsoft.Json.Linq; using ZD.Cloud.Logger; using ZD.Cloud.WebApi; namespace Demo.BillView.PRD { [Description("提料下推送货通知单")] [Kingdee.BOS.Util.HotUpdate] public class Pro_TlPush : AbstractBillPlugIn { CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/"); public override void BarItemClick(BarItemClickEventArgs e) { try { string a; if ((a = e.BarItemKey.ToUpperInvariant()) != null) { if (a == "TBPUSH") { 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(); if (ret == 0) { this.View.ShowErrMessage("已全部生成送货单"); return; } 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) { 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; // 传入需要修改的销售订单内码,演示代码直接固定写死为100001 showParameter.PKey = saveObj["Result"]["Id"].ToString(); this.View.ShowForm(showParameter); } else { LogHelper.Error(jsonRoot.ToString()); this.View.ShowErrMessage(jsonRoot.ToString()); } } } } catch (Exception ex) { throw ex; } } } }