概念

创建一个业务单据插件,处理单据的相关控制逻辑。

示例

新建一个类,继承自单据插件基类Kingdee.BOS.Core.Bill.PlugIn.AbstractBillPlugIn。

using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.Metadata;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace Kingdee.K3.Example.Business.PlugIn
{
/// <summary>
/// 销售订单 单据维护插件
/// </summary>
public class SaleOrderEdit : Kingdee.BOS.Core.Bill.PlugIn.AbstractBillPlugIn
{
}
}

K3Cloud案

基础资料中客户单据的表单插件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Orm.DataEntity;
using System.Text.RegularExpressions;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Bill.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Core.Metadata;
using System.Data;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.JSON;
using Kingdee.K3.BD.ServiceHelper;
using Kingdee.BOS.Core.Bill;
using Kingdee.K3.BD;
using Kingdee.BOS.Core.Metadata.ControlElement;
using Kingdee.BOS.Cache;
namespace Kingdee.K3.BD.Common.Business.PlugIn
{
/// <summary>
/// 客户单据插件
/// </summary>
public class CustomerEdit : AbstractBillPlugIn
{
#region 变量
/// <summary>
/// 是否启用预留
/// </summary>
private bool para_IsEnableReserve = false;
/// <summary>
/// 启用客户门户参数
/// </summary>
private bool para_EnableCustomerPortal = false;
#endregion
#region 重写方法
public override void AfterBindData(EventArgs e)
{
object oFax = this.View.Model.GetValue("FFAX") as object;
string sFax = "";
if (oFax != null)
{
sFax = Convert.ToString(oFax);
}
this.View.Model.SetValue("FFAX", sFax.Trim());
//TODO 非多组织隐藏字段(目前设计器未提供Context.IsMultiOrg变量,无法在设计器配置。以后考虑支持)
this.View.GetControl<FieldEditor>("FCorrespondOrgId").Visible = this.Context.IsMultiOrg;
this.View.GetBarItem("FT_BD_CUSTORDERORG", "tbAddLine_OOrg").Enabled = this.Context.IsMultiOrg;
this.View.GetBarItem("FT_BD_CUSTORDERORG", "tbDelLine_OOrg").Enabled = this.Context.IsMultiOrg;
this.View.GetBarItem("FT_BD_CUSTORDERORG", "tbInsertLine_OOrg").Enabled = this.Context.IsMultiOrg;
//不启用预留,隐藏客户优先级
this.View.GetControl("FPriority").Visible = para_IsEnableReserve;
//订货平台信息页签,根据是否启用客户门户,隐藏,显示
string parentKey = this.View.GetControl("FT_BD_CUSTORDERORG").ControlAppearance.Container;
if (!string.IsNullOrWhiteSpace(parentKey))
{
Control tabPage = this.View.GetControl(parentKey);
tabPage.Visible = (para_EnableCustomerPortal && tabPage.ControlAppearance is TabPageAppearance);
}
//已审核(或重新审核)&未禁用的客户&还未创建客户门户管理员时,创建管理员按钮才可用。
SetCreateCPAdminButtonStatus();
// 根据计划管理参数的参数【启用预留】显示/隐藏客户“客户优先级”字段
this.SetPriorityVisible();
}
public override void AfterUpdateViewState(EventArgs e)
{
//已审核(或重新审核)&未禁用的客户&还未创建客户门户管理员时,创建管理员按钮才可用。
SetCreateCPAdminButtonStatus();
}
public override void AfterCreateNewData(EventArgs e)
{
SetDefault();//设置结算币别默认值
//单体组织设置订单组织默认为创建组织
if (!this.Context.IsMultiOrg)
{
this.View.Model.SetValue("FOrderOrgId", this.View.Model.GetValue("FCreateOrgId"), 0);
}
if ((this.View.OpenParameter.Status == OperationStatus.ADDNEW))//复制或新增操作都 清空联系人页签 。。复制相当于新增。所以用这个标志
{
this.View.Model.DeleteEntryData("FT_BD_CUSTLOCATION"); } }
public override void BeforeUpdateValue(BeforeUpdateValueEventArgs e)
{
switch (e.Key.ToUpperInvariant())
{
case "FISCREDITCHECK":
bool isCreditCheck = Convert.ToBoolean(e.Value);
if (isCreditCheck == false)
{
long mastId = Convert.ToInt64(this.View.Model.DataObject["msterID"]);
string sql = string.Format(@"select 1 fexists from t_cre_custarchives a
inner join t_cre_custarchivesentry b on a.fid=b.fid
where a.fobjecttype='BD_Customer' and b.fobjectid={0}", mastId);
using (IDataReader dr = DBServiceHelper.ExecuteReader(this.Context, sql))
{
while (dr.Read())
{
e.Cancel = true;
this.View.ShowWarnningMessage(Kingdee.BOS.Resource.ResManager.LoadKDString("该客户已经被信用档案引用,不能反启用信用管理", "005023000000575", Kingdee.BOS.Resource.SubSystemType.BASE));
break;
}
}
}
break;
default:
break;
}
}
public override void DataChanged(DataChangedEventArgs e)
{
switch (e.Field.Key.ToUpperInvariant())
{
case "FTAXTYPE":
DynamicObject taxType = this.View.Model.GetValue("FTaxType") as DynamicObject;
string taxTypeId = taxType==null?"":Convert.ToString(taxType["Id"]);
if (taxTypeId.EqualsIgnoreCase(K3.Core.BD.PreInsertDataConst.SFL01_SYS))
{
this.View.Model.SetValue("FTaxRate", 261);
}
else if (taxTypeId.EqualsIgnoreCase(K3.Core.BD.PreInsertDataConst.SFL02_SYS)
|| taxType.IsNullOrEmptyOrWhiteSpace())
{
this.View.Model.SetValue("FTaxRate", 233);
}
break;
case "FSELLER":
//根据销售员携带默认销售组等信息。
DynamicObject objSeller = null;
objSeller = this.View.Model.GetValue("FSELLER") as DynamicObject;//获取销售员
long objSellerId = objSeller == null ? 0 : Convert.ToInt64(objSeller["Id"]);
if (objSellerId > 0)
{
DynamicObjectCollection objGroups = objSeller["BD_SALESMANENTRY"] as DynamicObjectCollection;//销售员单据体的实体名
//默认收货方
DynamicObject dyloc = (from p in objGroups
where p["ISDEFAULT"].ToString().Equals("true", StringComparison.CurrentCultureIgnoreCase)
select p).FirstOrDefault();//默认销售组
this.View.Model.SetValue("FSALGROUPID", dyloc == null ? 0 : ((DynamicObject)dyloc)["OPERATORGROUPID"], e.Row);
}
break;
case "FCREATEORGID":
SetDefault();
break;
case "FISDEFAULTORDERORG":
if (Convert.ToBoolean(e.NewValue))
{
bool isSelect = false;
this.View.Model.BeginIniti();
//切换默认订货组织选项,清空旧的选择项
for (int i = 0; i < this.View.Model.GetEntryRowCount(e.Field.Entity.Key); i++)
{
if (i != e.Row)
{
isSelect = Convert.ToBoolean(this.View.Model.GetValue("FIsDefaultOrderOrg", i));
if (isSelect)
{
this.View.Model.SetValue("FIsDefaultOrderOrg", 0, i);
}
}
}
this.View.Model.EndIniti();
}
else
{
this.View.Model.BeginIniti();
//取消选项,默认把第一行作为默认选项
this.View.Model.SetValue("FIsDefaultOrderOrg", 1, 0);
this.View.Model.EndIniti();
}
this.View.UpdateView("FT_BD_CUSTORDERORG");
break;
default:
break;
}
}
public override void AfterCreateModelData(EventArgs e)
{
SetFirstLineDefaultOrderOrg();
}
public override void AfterLoadData(EventArgs e)
{
SetFirstLineDefaultOrderOrg();
}
public override void BeforeF7Select(BOS.Core.DynamicForm.PlugIn.Args.BeforeF7SelectEventArgs e)
{
string filter;
switch (e.FieldKey.ToUpperInvariant())
{
case "FPRICELISTID":
case "FDISCOUNTLISTID":
case "FSELLER":
case "FSALGROUPID":
case "FTCONTACT":
if (GetFieldFilter(e.FieldKey, out filter))
{
if (string.IsNullOrEmpty(e.ListFilterParameter.Filter))
{
e.ListFilterParameter.Filter = filter;
}
else
{
e.ListFilterParameter.Filter += " AND " + filter;
}
}
break;
}
}
public override void BeforeSetItemValueByNumber(BOS.Core.DynamicForm.PlugIn.Args.BeforeSetItemValueByNumberArgs e)
{
string filter;
switch (e.BaseDataFieldKey.ToUpper())
{
case "FPRICELISTID":
case "FDISCOUNTLISTID":
case "FSELLER":
case "FSALGROUPID":
case "FTCONTACT":
if (GetFieldFilter(e.BaseDataFieldKey, out filter))
{
if (string.IsNullOrEmpty(e.Filter))
{
e.Filter += filter;
}
else
{
e.Filter += " AND " + filter;
}
}
break;
}
}
public override void ButtonClick(ButtonClickEventArgs e)
{
switch (e.Key.ToUpperInvariant())
{
case "FBTNCREATECPADMIN":
// CreateCustPortalUser();
break;
default:
break;
}
} public override void OnBillInitialize(BillInitializeEventArgs e)
{
//启用预留
object objEnalbeReserve = BOS.ServiceHelper.SystemParameterServiceHelper.GetParamter(this.Context
, 0, 0, K3.Core.MFG.MFGFormIdConst.SubSys_PLN.PLNSysParam, "IsEnableReserve");
para_IsEnableReserve = objEnalbeReserve == null ? false : Convert.ToBoolean(objEnalbeReserve);
//取启用客户门户参数
GetParameterEnableCustomerPortal();
}
public override void EntryBarItemClick(BarItemClickEventArgs e)
{
switch (e.BarItemKey.ToUpperInvariant())
{
case "TBNEWCONTACT": // 联系人页签新增联系人
BillShowParameter BillParam = new BillShowParameter();
BillParam.FormId = Kingdee.K3.Core.SCM.SCMFormIdConst.BD_CommonContact;
BillParam.ParentPageId = this.View.PageId;
BillParam.CustomParams.Add("CompanyType", "BD_Customer");
BillParam.CustomParams.Add("CustomerId", Convert.ToString(this.View.Model.GetPKValue()));
this.View.ShowForm(BillParam, NewFillContactData);
break;
case "TBEDITCONTACT": // 联系人页签修改联系人
int iRowIndex = this.View.Model.GetEntryCurrentRowIndex("FT_BD_CUSTLOCATION");
if (iRowIndex < 0)
{
this.View.ShowErrMessage(Kingdee.BOS.Resource.ResManager.LoadKDString("请选择一个分录数据!", "005023000000576", Kingdee.BOS.Resource.SubSystemType.BASE));
}
else
{
BillShowParameter BillEditParam = new BillShowParameter();
BillEditParam.FormId = Kingdee.K3.Core.SCM.SCMFormIdConst.BD_CommonContact;
BillEditParam.Status = OperationStatus.EDIT;
BillEditParam.PKey = Convert.ToString(this.View.Model.GetValue("FContactId", iRowIndex));
BillEditParam.ParentPageId = this.View.PageId;
BillEditParam.CustomParams.Add("CompanyType", "BD_Customer");
BillEditParam.CustomParams.Add("IsModify", "true");
this.View.ShowForm(BillEditParam, new Action<FormResult>((result) =>
{
if (result.ReturnData != null)
{
List<long> listContractIds = result.ReturnData as List<long>;
long lContactId = 0;
if (listContractIds != null & listContractIds.Count > 0)
{
lContactId = listContractIds[0];
}
if (lContactId > 0)
{
DynamicObjectCollection docContacts = ServiceHelper.SupplierCustomerServiceHelper.GetContactsByCompanyType(
this.Context, "BD_Customer", new long[]{lContactId});
this.View.Model.SetValue("FCONTACT", docContacts[0]["FNAME"], iRowIndex);
this.View.Model.SetValue("FJob", docContacts[0]["FPOST"], iRowIndex);
this.View.Model.SetValue("FBIZLOCATION", docContacts[0]["FBIZLOCATION"], iRowIndex);
this.View.Model.SetValue("FOFFICEPHONE", docContacts[0]["FTEL"], iRowIndex);
this.View.Model.SetValue("FMOBILEPHONE", docContacts[0]["FMOBILE"], iRowIndex);
this.View.Model.SetValue("FFAX1", docContacts[0]["FFAX"], iRowIndex);
this.View.Model.SetValue("FContactEmail", docContacts[0]["FEMAIL"], iRowIndex);
this.View.Model.SetValue("FContactId", docContacts[0]["FCONTACTID"], iRowIndex);
this.View.UpdateView("FT_BD_CUSTLOCATION");
}
}
}));
}
break;
case "TBDELETECONTACT": // 联系人页签删除联系人
this.DeleteCustomerContact();
break;
case "TBDELLINE_OORG": // 订货组织页签删除默认订货组织时
string sCode = Convert.ToString(this.View.Model.GetValue("FCPAdminCode"));
int iRow = this.View.Model.GetEntryCurrentRowIndex("FT_BD_CUSTORDERORG");
bool isDefault = Convert.ToBoolean(this.View.Model.GetValue("FIsDefaultOrderOrg", iRow));
if (!sCode.IsNullOrEmptyOrWhiteSpace() && isDefault)
{
this.View.ShowMessage(Kingdee.BOS.Resource.ResManager.LoadKDString("当前客户已创建了客户平台管理员,不允许删除默认订货组织!", "005023000000577", Kingdee.BOS.Resource.SubSystemType.BASE));
e.Cancel = true;
}
break;
case "TBADDLINE_OORG":
SetFirstLineDefaultOrderOrg();
break;
default:
break;
}
base.EntryBarItemClick(e);
}
public override void AfterSave(AfterSaveEventArgs e)
{
// 成功保存后,联系人表体数据和当前客户相关联
if (e.OperationResult.IsSuccess)
{
// 当前客户的Id
long lCustomerId = Convert.ToInt64(this.View.Model.GetPKValue());
// 当前联系人表体的联系人Id
EntryEntity entryEntity = this.View.BusinessInfo.GetEntryEntity("FT_BD_CUSTLOCATION");
DynamicObjectCollection docCustomerContactIds = this.View.Model.GetEntityDataObject(entryEntity);
string sContactIds = "";
for (int i = 0; i < docCustomerContactIds.Count(); i++)
{
long lContactId = Convert.ToInt64(docCustomerContactIds[i]["ContactId"]);
if (lContactId != 0)
{
sContactIds = sContactIds + Convert.ToString(lContactId) + ",";
}
}
if (sContactIds.Length > 0)
{
sContactIds = sContactIds.Substring(0, sContactIds.Length - 1);
}
// 联系人表体不为空
if (docCustomerContactIds.Count() > 0)
{
// 更新当前客户联系人的所属公司
ServiceHelper.SupplierCustomerServiceHelper.UpdateContactId(this.Context, sContactIds, lCustomerId);
}
UpdateCpUserOrg();
} }
/// <summary>
/// 如果创建了客户门户用户,那么要更新客户门户的信息
/// </summary>
private void UpdateCpUserOrg()
{
var cpAdminCode = this.Model.GetValue("FCPAdminCode") as string; if (!string.IsNullOrWhiteSpace(cpAdminCode))
{
DynamicObject UserInfo = null;
long userId = 0;
{
long msterID = Convert.ToInt64(this.Model.DataObject["msterID"]);
string sfilter1 = string.Format("FCUSTOMERMASTERID = {0} ", msterID);
OQLFilter filter1 = OQLFilter.CreateHeadEntityFilter(sfilter1);
UserInfo = BusinessDataServiceHelper.Load(this.Context, K3.Core.SCM.SCMFormIdConst.CP_UserInfo, null, filter1).FirstOrDefault();
userId = Convert.ToInt64(UserInfo["FUserId_Id"]);
}
DynamicObject User = null;
{
string sfilter = string.Format("FUserID = {0} ", userId);
OQLFilter filter = OQLFilter.CreateHeadEntityFilter(sfilter);
User = BusinessDataServiceHelper.Load(this.Context, BOS.Core.FormIdConst.SEC_User, null, filter).FirstOrDefault();
}
var userOrg = User["Userorg"] as DynamicObjectCollection;
userOrg.Clear(); var custorderOrg = this.Model.DataObject["BD_CUSTORDERORG"] as DynamicObjectCollection;
long defaultOrgId = 0;
foreach (var item in custorderOrg)
{
var orgId = Convert.ToInt64(item["OrderOrgId_Id"]);
if (orgId != 0)
{
DynamicObject userOrgItem = new DynamicObject(userOrg.DynamicCollectionItemPropertyType);
userOrgItem["FOrgID_Id"] = orgId;
var entityRole = userOrgItem["EntityRole"] as DynamicObjectCollection;
entityRole.Clear();
var entityRoleItem = new DynamicObject(entityRole.DynamicCollectionItemPropertyType);
entityRoleItem["FRoleId_Id"] = 10278;
entityRole.Add(entityRoleItem);
userOrg.Add(userOrgItem);
}
bool isDefault = Convert.ToBoolean(item["ISDEFAULT"]);
if (isDefault)
{
defaultOrgId = orgId;
}
}
UserInfo["FDEFAULTORGID_Id"] = defaultOrgId; BusinessDataServiceHelper.Save(this.Context, User);
BusinessDataServiceHelper.Save(this.Context, UserInfo);
//清除用户缓存
string key = K3.Core.SCM.SCMConst.GetCpUserCacheKey(userId.ToString());
CacheUtil.ClearCache(this.Context.DBId, K3.Core.SCM.SCMConst.CP_Cache_CustomerPortalRegion, key);
}
}
public override void BeforeClosed(BeforeClosedEventArgs e)
{
// 客户页面关闭后,清楚所属公司为0的垃圾数据
ServiceHelper.SupplierCustomerServiceHelper.DeleteGarbageData(this.Context);
}
#endregion
#region 私有方法
#region 客户门户
private void SetFirstLineDefaultOrderOrg()
{
int iCount = this.View.Model.GetEntryRowCount("FT_BD_CUSTORDERORG");
if (iCount <= 1)
{
this.View.Model.SetValue("FIsDefaultOrderOrg", 1, 0);
}
}
///// <summary>
///// 创建客户用户
///// </summary>
//private void CreateCustPortalUser()
//{
// if (!para_EnableCustomerPortal)
// {
// this.View.ShowMessage(Kingdee.BOS.Resource.ResManager.LoadKDString("订货平台没有启用,无法创建订货平台管理员账号。", "005023000000578", Kingdee.BOS.Resource.SubSystemType.BASE), MessageBoxType.Notice);
// return;
// }
// string userNumber = Convert.ToString(this.Model.GetValue("FNumber"));
// string userName = Convert.ToString(this.Model.GetValue("FName"));
// long orgId_Id = GetDefaultOrderOrgId();
// if (orgId_Id == 0)
// {
// this.View.ShowMessage(Kingdee.BOS.Resource.ResManager.LoadKDString("客户没有默认订货组织,无法创建订货平台管理员。", "005023000000579", Kingdee.BOS.Resource.SubSystemType.BASE), MessageBoxType.Notice);
// return;
// }
// var description = string.Format(Kingdee.BOS.Resource.ResManager.LoadKDString("客户【{0}】的订货平台管理员", "005023000000580", Kingdee.BOS.Resource.SubSystemType.BASE), userName);
// var newUser = new UserHelper(this.Context);
// newUser.CreateBosUser(userNumber, orgId_Id, description, true);
// var r = newUser.Save(this.Context);
// if (r.IsSuccess)
// {
// newUser.UserProfile.IsAdmin = true;
// newUser.UserProfile.CustomerNumber = userNumber;
// newUser.UserProfile.CustomerMasterID = Convert.ToInt64(this.View.Model.DataObject["MsterID"]);
// newUser.UserProfile.DefaultOrgId = newUser.OrgId_Id;
// newUser.UserProfile.BosUserId = newUser.Id;
// newUser.UserProfile.CustomerId = Convert.ToInt64(this.View.Model.GetPKValue());
// BusinessDataServiceHelper.Save(this.Context, newUser.UserProfile.MetaData.BusinessInfo, newUser.UserProfile.CPUserInfo);
// this.View.Model.SetValue("FCPAdminCode", userNumber);
// this.View.Model.DataChanged = false;
// CPServiceHelpercs.SetCPAdminCodeByCustId(this.Context, userNumber, Convert.ToInt64(this.View.Model.GetPKValue()));
// this.View.ShowMessage(string.Format(Kingdee.BOS.Resource.ResManager.LoadKDString("创建订货平台管理员成功!帐号为客户编码:{0},密码默认为888888!", "005023000000581", Kingdee.BOS.Resource.SubSystemType.BASE), userNumber), MessageBoxType.Notice); // }
// else
// {
// string err = Kingdee.BOS.Resource.ResManager.LoadKDString("创建订货平台管理员失败:", "005023000000582", Kingdee.BOS.Resource.SubSystemType.BASE) + System.Environment.NewLine;
// foreach (var item in r.GetFatalErrorResults())
// {
// err += item.Message + System.Environment.NewLine;
// }
// this.View.ShowMessage(err, MessageBoxType.Error);
// }
//}
/// <summary>
/// 是否启用了客户门户
/// </summary>
/// <returns></returns>
private void GetParameterEnableCustomerPortal()
{
var objEnableCustomerPortal = SystemParameterServiceHelper.GetParamter(this.Context, 0, 0, "CP_SYSTEMPARAMETER", "EnableCustomerPortal");
para_EnableCustomerPortal = Convert.ToBoolean(objEnableCustomerPortal);
}
private long GetDefaultOrderOrgId()
{
Entity entity = this.Model.BusinessInfo.GetEntity("FT_BD_CUSTORDERORG");
var ety = this.Model.GetEntityDataObject(entity);
var orderDObj = ety.Where(p => Convert.ToBoolean(p["ISDEFAULT"]) == true).FirstOrDefault();
//ety[0]
//"BD_CUSTORDERORG"
//[0]: {[Id, 0]}
//[1]: {[OrderOrgId_Id, 0]}
//[2]: {[OrderOrgId, ]}
//[3]: {[ISDEFAULT, False]}
return orderDObj == null ? 0 : Convert.ToInt64(orderDObj["OrderOrgId_Id"]);
}
#endregion
/// <summary>
/// 携带核算体系下的本位币信息
/// </summary>
public void SetDefault()
{
DynamicObject saleOrg = this.View.Model.GetValue("FUseOrgId") as DynamicObject;
if (saleOrg != null)
{
long saleOrgId = Convert.ToInt64(saleOrg["Id"]);
if (saleOrgId > 0)
{
JSONObject currInfo = FINServiceHelperForCommon.GetDefCurrencyAndExchangeTypeByBizOrgID(this.Context, saleOrgId);
if (currInfo != null)
{
this.View.Model.SetValue("FTRADINGCURRID", Convert.ToInt64(currInfo["FCyForID"])); //商务页签取本位币信息
}
}
}
}
/// <summary>
/// 获取字段过滤条件
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
private bool GetFieldFilter(string fieldKey, out string filter)
{
filter = "";
if (string.IsNullOrWhiteSpace(fieldKey))
{
return false;
}
switch (fieldKey.ToUpper())
{
case "FSELLER":
DynamicObject dept = this.View.Model.GetValue("FSALDEPTID") as DynamicObject;
DynamicObject salegroup = this.View.Model.GetValue("FSALGROUPID") as DynamicObject;
filter += " FIsUse='1' ";
if (dept != null && Convert.ToInt64(dept["Id"]) > 0)//录入了部门
{
filter += string.Format(" And FDeptId={0} ", Convert.ToInt64(dept["Id"]));
}
if (salegroup != null && Convert.ToInt64(salegroup["Id"]) > 0)//录入了销售组
{
filter += string.Format(" And FOperatorGroupId={0} ", Convert.ToInt64(salegroup["Id"]));
}
break;
case "FSALGROUPID":
DynamicObject seller = null;
seller = this.View.Model.GetValue("FSELLER") as DynamicObject;
filter += " FIsUse='1' ";
if (seller != null && Convert.ToInt64(seller["Id"]) > 0)//录入了销售员
{
filter += string.Format(" And Exists (Select 1 From V_BD_SALESMANENTRY SE Where SE.FOperatorGroupID=FENTRYID AND SE.FId={0}) ", Convert.ToInt64(seller["Id"]));
}
break;
case "FTCONTACT":
DynamicObject doCustomer = this.View.Model.DataObject;
long lCustomerId = Convert.ToInt64(doCustomer["Id"]);
filter += string.Format(" FCOMPANY = {0}", lCustomerId);
break;
}
return !string.IsNullOrWhiteSpace(filter);
}
private void SetTaxRegisterCode(string sTaxRegisterCode, int iRow)
{
//string sTaxRegisterCode = this.View.Model.GetValue("FTTAXREGISTERCODE", iRow) as string;
this.View.Model.SetValue("FTAXREGISTERCODE", sTaxRegisterCode);
}
/// <summary>
/// 查询数据库客户联系人填充联系人表体
/// </summary>
private void NewFillContactData(FormResult result)
{
//if (this.View.Model.GetEntryRowCount("FT_BD_CUSTLOCATION") > 0)
//{
// this.View.Model.DeleteEntryData("FT_BD_CUSTLOCATION");
// this.View.UpdateView("FT_BD_CUSTLOCATION");
//}
//DynamicObject doCustomer = this.Model.DataObject;
//long lCustomerId = Convert.ToInt64(doCustomer["Id"]);
if (result.ReturnData != null)
{
List<long> lContactIds = result.ReturnData as List<long>;
if (lContactIds == null || lContactIds.Count < 1)
{
return;
} DynamicObjectCollection docContacts = ServiceHelper.SupplierCustomerServiceHelper.GetContactsByCompanyType(
this.Context, "BD_Customer", lContactIds.ToArray()); foreach(DynamicObject contract in docContacts)
{
// 联系人表体创建一行
this.View.Model.CreateNewEntryRow("FT_BD_CUSTLOCATION");
// 获取联系人表体总行数
int iRowSum = this.View.Model.GetEntryRowCount("FT_BD_CUSTLOCATION");
this.View.Model.SetValue("FCONTACT", contract["FNAME"], iRowSum - 1);
this.View.Model.SetValue("FJob", contract["FPOST"], iRowSum - 1);
this.View.Model.SetValue("FBIZLOCATION", contract["FBIZLOCATION"], iRowSum - 1);
this.View.Model.SetValue("FOFFICEPHONE", contract["FTEL"], iRowSum - 1);
this.View.Model.SetValue("FMOBILEPHONE", contract["FMOBILE"], iRowSum - 1);
this.View.Model.SetValue("FFAX1", contract["FFAX"], iRowSum - 1);
this.View.Model.SetValue("FContactEmail", contract["FEMAIL"], iRowSum - 1);
this.View.Model.SetValue("FContactId", contract["FCONTACTID"], iRowSum - 1);
}
this.View.UpdateView("FT_BD_CUSTLOCATION"); }
}
/// <summary>
/// 删除客户联系人
/// </summary>
private void DeleteCustomerContact()
{
// 获取当前选中的行数组
int[] iRowIndexs = this.View.GetControl<EntryGrid>("FT_BD_CUSTLOCATION").GetSelectedRows();
// 待删除行的客户联系人Id
List<long> listContactId = new List<long>();
if (iRowIndexs.Count() <= 0 || iRowIndexs[0] == -1)
{
this.View.ShowErrMessage(Kingdee.BOS.Resource.ResManager.LoadKDString("请至少选择一个分录数据!", "005023000000583", Kingdee.BOS.Resource.SubSystemType.BASE));
}
else
{
this.View.ShowMessage(Kingdee.BOS.Resource.ResManager.LoadKDString("请确认是否删除选定的记录?","005023000000584",Kingdee.BOS.Resource.SubSystemType.BASE),
MessageBoxOptions.YesNo,
new Action<MessageBoxResult>((result) =>
{
if (result == MessageBoxResult.Yes)
{
foreach (int rowIndex in iRowIndexs)
{
long lCustomerContactId = Convert.ToInt64(this.View.Model.GetValue("FContactId", rowIndex));
if (!listContactId.Contains(lCustomerContactId))
{
listContactId.Add(lCustomerContactId);
}
// 页面上删除联系人
this.View.Model.DeleteEntryRow("FT_BD_CUSTLOCATION", rowIndex);
}
// 数据库中删除联系人
bool bIsSuccessful = ServiceHelper.SupplierCustomerServiceHelper.DeleteContactById(this.Context, string.Join(",", listContactId.ToArray()));
if (bIsSuccessful)
{
this.View.ShowMessage(Kingdee.BOS.Resource.ResManager.LoadKDString("删除该联系人成功!", "005023000000585", Kingdee.BOS.Resource.SubSystemType.BASE));
}
else
{
this.View.ShowMessage(Kingdee.BOS.Resource.ResManager.LoadKDString("删除该联系人失败!", "005023000000586", Kingdee.BOS.Resource.SubSystemType.BASE));
}
}
}));
}
}
private void SetCreateCPAdminButtonStatus()
{
//已审核(或重新审核)&未禁用的客户&还未创建客户门户管理员时,创建管理员按钮才可用。
string documentStatus = Convert.ToString(this.View.Model.GetValue("FDocumentStatus"));
string forbidStatus = Convert.ToString(this.View.Model.GetValue("FForbidStatus"));
string cpAdminCode = Convert.ToString(this.View.Model.GetValue("FCPAdminCode"));
this.View.GetControl("FBtnCreateCPAdmin").Enabled = (documentStatus.EqualsIgnoreCase("C") || documentStatus.EqualsIgnoreCase("D")) && forbidStatus.EqualsIgnoreCase("A") && string.IsNullOrWhiteSpace(cpAdminCode);
}
/// <summary>
/// 根据计划管理参数的参数【启用预留】显示/隐藏客户“客户优先级”字段
/// </summary>
private void SetPriorityVisible()
{
// 获取计划管理参数【启用预留】
bool bIsEnableReserve = Convert.ToBoolean(ServiceHelper.BDCommonServiceHelper.GetSystemProfile(this.Context,this.Context.CurrentOrganizationInfo.ID,"MFG_PLNParam","IsEnableReserve",false));
// 启用预留,显示
if (bIsEnableReserve)
{
this.View.GetControl<FieldEditor>("FPriority").Visible = bIsEnableReserve;
}
else
{
this.View.GetControl<FieldEditor>("FPriority").Visible = bIsEnableReserve;
}
}
#endregion
}
}

[K/3Cloud] 创建一个业务单据表单插件的更多相关文章

  1. [K/3Cloud] 创建一个单据转换插件

    概念: 创建一个业务单据转换插件,在单据转换的各个时点干预单据转换的相关逻辑控制. 示例: 新建一个类,继承自单据转换插件基类Kingdee.BOS.Core.Metadata.ConvertElem ...

  2. [K/3Cloud] 创建一个操作校验器

    概念: 定义了一个校验器对象,通常是添加到业务单据操作服务插件,用于对操作的合法性进行校验.继承自校验器抽象对象AbstractValidator. 示例: 新建一个类,继承自AbstractVali ...

  3. 如何利用WordPress创建自定义注册表单插件

    来源:http://www.ido321.com/1031.html 原文:Creating a Custom WordPress Registration Form Plugin 译文:创建一个定制 ...

  4. Form表单插件

    jQuery Form是一个优秀的表单插件,它可以非常容易地,无侵入地升级HTML表单以支持Ajax jQuery Form表单插件的下载地址为 http://jquery.malsup.com/fo ...

  5. Java 创建、填充PDF表单域

    表单域,可以按用途分为多种不同的类型,常见的有文本框.多行文本框.密码框.隐藏域.复选框.单选框和下拉选择框等,目的是用于采集用户的输入或选择的数据.下面的示例中,将分享通过Java编程在PDF中添加 ...

  6. 利用HTML5与jQuery技术创建一个简单的自动表单完成

    来源:GBin1.com 在线演示   在线下载 谷歌快速搜索自带大量自动完成插件——库中甚至还有一个附带的jQuery UI共享选项.然而今天我要寻找一个替代的解决方案.由DevBridge开发的j ...

  7. 怎样利用WordPress创建自己定义注冊表单插件

    来源:http://www.ido321.com/1031.html 原文:Creating a Custom WordPress Registration Form Plugin 译文:创建一个定制 ...

  8. es6 封装一个基础的表单验证

    1, 需求分析 设计一个通用的表单验证,如果后期表单中添加了更多的需求,不需要更改之前的代码逻辑,最好不要改之前的代码,需要加什么直接加就好了. 2,代码分析 此表单验证最好返回一个函数,在api设计 ...

  9. ASP.NET Core模块化前后端分离快速开发框架介绍之2、快速创建一个业务模块

    源码地址 GitHub:https://github.com/iamoldli/NetModular 演示地址 地址:https://nm.iamoldli.com 账户:admin 密码:admin ...

随机推荐

  1. UIAlertController的使用,代替UIAlertView和UIActionSheet

    在iOS8以后,UIAlertView就开始被抛弃了. 取而代之是UIAlertController 以前是警示框这样写: UIAlertView *alert = [[UIAlertView all ...

  2. 219 Contains Duplicate II 存在重复 II

    给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使 nums [i] = nums [j],并且 i 和 j 的绝对差值最大为 k. 详见:https://leetcod ...

  3. 使用Kotlin,抛弃findViewById

    有没有觉得Android的findViewById挺烦人的.使用Kotlin可以让你彻底抛弃这个烦恼 步骤1.在build.gradle(Module:app)中添加如下一句话 这个在老一点版本的An ...

  4. install nginx error

    the error info : the HTTP gzip module requires the zlib library.You can either disable the module by ...

  5. iOS Programming Camera 2

    iOS Programming Camera  2  1.1 Creating BNRImageStore The image store will fetch and cache the image ...

  6. 翻译:高级t - sql第1级的阶梯:使用交叉连接来引入高级t - sql

    高级t - sql第1级的阶梯:使用交叉连接来引入高级t - sql 源于:格雷戈里·拉森,2016/02/19(首次出版:2014/12/17 翻译:刘琼滨 谢雪妮 徐雅莉 赖慧芳 链接:http: ...

  7. 经典算法mark

    在平时找工作的时候,或多或少会遇到一些算法问题,很多都是比较经典或者网上已经流传很久的.只是我们没有接触过,所以不知道怎么解决. 在这儿,我自己总结一些我遇到的一些经典算法,给自己增加一点记忆,也给需 ...

  8. cce - 控制台中文环境

    语法 (SYNTAX) cce [-e program] 描述 (DESCRIPTION) 该程序是一个类似于 WZCE , yact 和 chdrv 的控制台中文平台.进入该环境后可以用“空格 + ...

  9. CAD控件使用教程 自定义实体的实现

    自定义实体的实现 1 .       自定义实体... 3 1.1      说明... 3 1.2      类的类型信息... 3 1.3      worldDraw.. 4 1.4      ...

  10. 09Windows编程

    Windows编程 2.1      窗口 Windows应用程序一般都有一个窗口,窗口是运行程序与外界交换信息的界面.一个典型的窗口包括标题栏.最小化按钮.最大/还原按钮.关闭按钮.系统菜单图标.菜 ...