using System;
|
using System.ComponentModel;
|
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 = entity.DynamicProperty.GetValue(this.Model.DataObject) as DynamicObjectCollection;//获取父单据体行集合
|
DynamicObjectCollection entityRows = this.Model.GetEntityDataObject(entity);//获取父单据体行集合
|
// 1和2均可
|
// 取当前页面子单据体
|
//Entity subEntity = this.View.BillBusinessInfo.GetEntity("FEntity");//标识
|
//DynamicObjectCollection rows = this.Model.GetEntityDataObject(subEntity);//获得子单据体行集合
|
//构建 model 主表
|
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", item["FHQty"].ToString()); // 供应商送货数量
|
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;
|
}
|
}
|
}
|
}
|