二开案例.列表插件.自建视图保存单据

【应用场景】
在插件或服务内部,无界面状态下创建或修改单据。
【案例演示】
采购订单,通过列表插件,自建视图保存单据。

【实现步骤】
<1>编写列表插件,代码如下。
using Kingdee.BOS;
using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Util;
using Kingdee.BOS.Web.Bill;
using System.ComponentModel;
using System.Linq;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【列表插件】自建视图保存单据
/// </summary>
[Description("【列表插件】自建视图保存单据"), HotUpdate]
public class CreateViewAndSaveBillListPlugIn : AbstractListPlugIn
{
private object pkId = null;
public override void BarItemClick(BarItemClickEventArgs e)
{
base.BarItemClick(e);
if (e.BarItemKey == "AddNewBill")
{
// 创建采购订单的单据视图(新增状态)
var billView = CreateBillView(this.Context, "PUR_PurchaseOrder");
// 设置供应商
billView.SetItemValueByNumber("FSupplierId", "GYS001", 0);
// 设置订单明细
for (var i = 0; i < 3; ++i)
{
billView.Model.CreateNewEntryRow("FPOOrderEntry");
billView.SetItemValueByNumber("FMaterialId", "0.0000.01", i);
billView.Model.SetValue("FQty", i + 1, i);
billView.Model.SetValue("FPriceUnitQty", i + 1, i);
billView.Model.SetValue("FStockQty", i + 1, i);
billView.Model.SetValue("FTaxPrice", 66, i);
}
var result = billView.Model.Save();
if (result.IsSuccess)
{
var billNo = billView.Model.GetValue("FBillNo");
pkId = billView.Model.GetPKValue();
this.View.ShowMessage(string.Format("单据编号为{0}的采购订单新增保存成功!", billNo));
}
else
{
this.View.ShowErrMessage("保存失败:" + string.Join(",", result.ValidationErrors.Select(o => o.Message)));
}
}
else if (e.BarItemKey == "SaveBill")
{
if (pkId == null)
{
this.View.ShowMessage("请先新增单据!");
return;
}
// 创建采购订单的单据视图(修改状态)
var billView = CreateBillView(this.Context, "PUR_PurchaseOrder", null, pkId);
// 修改供应商
billView.SetItemValueByNumber("FSupplierId", "VEN00002", 0);
// 新增订单明细
var rowCount = billView.Model.GetEntryRowCount("FPOOrderEntry");
for (var i = rowCount - 1; i < rowCount + 3; ++i)
{
billView.Model.CreateNewEntryRow("FPOOrderEntry");
billView.SetItemValueByNumber("FMaterialId", "0.0000.01", i);
billView.Model.SetValue("FQty", i * 6, i);
billView.Model.SetValue("FPriceUnitQty", i * 6, i);
billView.Model.SetValue("FStockQty", i * 6, i);
billView.Model.SetValue("FTaxPrice", 88, i);
}
var result = billView.Model.Save();
if (result.IsSuccess)
{
var billNo = billView.Model.GetValue("FBillNo");
this.View.ShowMessage(string.Format("单据编号为{0}的采购订单修改保存成功!", billNo));
}
else
{
this.View.
二开案例.列表插件.自建视图保存单据
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



