很多客户提单关于应收票据审核生成收款单 怎样把票据上字段携带到收款单上 以下是我关于票据携带到收款单总结,有什么问题欢迎一起交流::/lol
应收票据生成收款单主要是两个不同路线方法 二开要从这两个方面处理 1. 在应收票据表单里审核自动生成收款单,打开收款单界面走的是表单插件这里要重写应收票据表单插件和收款单表单插件还有重写票据映射收付款单方法主体如下;1-1using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Kingdee.K3.FIN.CN.Common.Core.Object;namespace test.Common.Core{ public class TestBillInfos : RecBillInfos { ///
namespace test.Business.PlugIn{ ///
重写应收票据表单插件把传过去参数的类容改成二开重写方法TestBillInfos 1-3using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using test.Common.Core;using Kingdee.K3.FIN.CN.Business.PlugIn.RecPayRefund;using System.ComponentModel;using Kingdee.K3.FIN.CN.Common.Core.Object;using Kingdee.BOS.Core.Bill.PlugIn;using Kingdee.BOS.Util;namespace test.Business.PlugIn{ ///
重写收款单设置目标单信息 根据传过来参数 设置目标单信息应收票据注册插件处理收款单注册插件处理2. 应收票据列表审核自动生成收款单这个需要重写应收票据审核操作插件注:由于生成收款单有很多私有方法 几乎把标准的审核插件重写一遍(只是在生成收款单加了携带字段), 后期版本会优化 方便二开携带字段
重新写应收票据审核插件处理
using Kingdee.BOS.Contracts;using Kingdee.BOS.Core.DynamicForm;using Kingdee.BOS.Core.DynamicForm.PlugIn;using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;using Kingdee.BOS.Core.Metadata;using Kingdee.BOS.Core.Metadata.FormElement;using Kingdee.BOS.Orm;using Kingdee.BOS.Orm.DataEntity;using Kingdee.K3.FIN.CN.App.ServicePlugIn.RecPayRefund;using Kingdee.K3.FIN.Core;using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using Kingdee.BOS.Core.SqlBuilder;using Kingdee.BOS.Util;using Kingdee.BOS.ServiceHelper;using Kingdee.K3.FIN.CN.App.Core;using Kingdee.K3.FIN.CN.App.ServicePlugIn;using Kingdee.BOS;
namespace test.App.ServicePlugIn{ ///
///
public override void OnPreparePropertys(PreparePropertysEventArgs e) { base.OnPreparePropertys(e); e.FieldKeys.Add("FDATE"); e.FieldKeys.Add("FSETTLEORGID"); e.FieldKeys.Add("FCONTACTUNITTYPE"); e.FieldKeys.Add("FCONTACTUNIT"); e.FieldKeys.Add("FBILLNUMBER"); e.FieldKeys.Add("FCURRENCYID"); e.FieldKeys.Add("FMainBookCurId"); e.FieldKeys.Add("FExchangeTypeId"); e.FieldKeys.Add("FExchangeRate"); e.FieldKeys.Add("FPAYORGID"); e.FieldKeys.Add("FDEPARTMENTID"); e.FieldKeys.Add("FSALEORGID");
e.FieldKeys.Add("FSALEGROUPID"); e.FieldKeys.Add("FSALEERID"); e.FieldKeys.Add("FPARLEFTAMOUNTFOR"); e.FieldKeys.Add("FPARAMOUNTFOR"); e.FieldKeys.Add("FSETTLESTATUS"); e.FieldKeys.Add("FDUEDATE");
e.FieldKeys.Add("FBILLTYPE"); e.FieldKeys.Add("FScanPoint");
//增加营收票据要携带的字段 e.FieldKeys.Add("FSourkey"); }
public override void EndOperationTransaction(EndOperationTransactionArgs e) { base.EndOperationTransaction(e); this.CurrOperIndentify = Guid.NewGuid().ToString(); if (IsBillAuto() == 0) { return; } this.GenerateRecBillAndUpDateRecBillStatus(e); }
private void GenerateRecBillAndUpDateRecBillStatus(EndOperationTransactionArgs e) { this.MakeRecBillSettleDoc(e); }
///
} }
///
if (dynamicObject == null) { return; } string billtypeid = dynamicObject["BillTypeID_ID"].ToString(); long payorgId = Convert.ToInt64(dynamicObject[BillRecKeyConst.FPAYORGID_ID]); DynamicObject billtypeObj = CNServiceCommonFun.GetBillTypeInfoByBillTypeId(this.Context, billtypeid, payorgId, BusinessObjectConst.AR_RECEIVEBILL); if (billtypeObj == null) { return; } IDraftService draftService = Kingdee.BOS.Contracts.ServiceFactory.GetDraftService(this.Context); IOperationResult result = draftService.Draft(this.Context, formMetadata.BusinessInfo, new DynamicObject[] { dynamicObject }, OperateOption.Create(), "Draft"); if (!result.IsSuccess) return; ISaveService saveService = Kingdee.BOS.Contracts.ServiceFactory.GetSaveService(this.Context); result = saveService.Save(this.Context, formMetadata.BusinessInfo, new DynamicObject[] { dynamicObject }, OperateOption.Create(), "Save"); if (!result.IsSuccess) return; this.UpdateBillNoBeforeSave(dynamicObject);
return; }
private DynamicObject GenerateBillRecSettleObj(DynamicObject receiveData, FormMetadata formMetadata) { DynamicObject dynamicObject = this.CreateBillRecSettle(receiveData, formMetadata); return dynamicObject; }
///
//此处设置携带字段 data["FTargeKey"] = receiveData["FSourkey"];
DynamicObjectCollection collection = data["RECEIVEBILLENTRY"] as DynamicObjectCollection; DynamicObject entry = collection.DynamicCollectionItemPropertyType.CreateInstance() as DynamicObject; service = Kingdee.BOS.Contracts.ServiceFactory.GetService
object innerAcctType = Kingdee.BOS.ServiceHelper.SystemParameterServiceHelper.GetParamter(this.Context, PayOrgId, 0, BusinessObjectConst.CN_SystemParameter, "InnerAccountType"); if (innerAcctType.IsNullOrEmptyOrWhiteSpace()) { innerAcctType = "1"; } string filterClause = " FDOCUMENTSTATUS='C' AND FFORBIDSTATUS='A' AND FISDEFAULTINNERACCT='1' "; if (Convert.ToInt64(innerAcctType) < 3) { filterClause = String.Format("{0} AND FORGSETGROUP = '{1}' AND FUseOrgId={2} AND FMAPPINGORGID={3} ", filterClause, innerAcctType, PayOrgId, FSETTLEORGID); } else { filterClause = String.Format("{0} AND FUseOrgId={1} AND FMAPPINGORGID={2} ", filterClause, PayOrgId, FSETTLEORGID); }
QueryBuilderParemeter param = new QueryBuilderParemeter { FormId = BusinessObjectConst.CN_INNERACCOUNT, SelectItems = SelectorItemInfo.CreateItems("FID,FNumber,FCreateOrgId,FMAPPINGORGID,FUseOrgId,FOrgSetGroup,FISDEFAULTINNERACCT"), FilterClauseWihtKey = filterClause, OrderByClauseWihtKey = "FORGSETGROUP DESC " }; DynamicObjectCollection Finneraccountid = QueryServiceHelper.GetDynamicObjectCollection(this.Context, param); if (Finneraccountid != null && Finneraccountid.Count > 0) { entry["FINNERACCOUNTID_id"] = Finneraccountid[0]["FID"]; entryBill["FInnerAccountID_B_id"] = Finneraccountid[0]["FID"]; DynamicObject Ffinneraccountid = CNCommonFunction.GetDynamicObjectByID(this.Context, BusinessObjectConst.CN_INNERACCOUNT, Convert.ToInt64(Finneraccountid[0]["FID"])); entry["FINNERACCOUNTID"] = Ffinneraccountid; entryBill["FInnerAccountID_B"] = Ffinneraccountid; } } collection.Add(entry); collectionBill.Add(entryBill); return data; }
///
///
BusinessInfo businessInfo = ((FormMetadata)ServiceFactory.GetMetaDataService(this.Context).Load(this.Context, BusinessObjectConst.AR_RECEIVEBILL, true)).BusinessInfo; DynamicObject[] objs = new DynamicObject[] { Kingdee.BOS.Util.ObjectUtils.CreateCopy(dynamicObject) as DynamicObject }; BusinessInfo bizInfo = Kingdee.BOS.Util.ObjectUtils.CreateCopy(businessInfo) as BusinessInfo; bizInfo.GetBillNoField().Entity.TableName = "";
IBusinessDataService bizSev = Kingdee.BOS.App.ServiceHelper.GetService
推荐阅读