K3 ERP wise 老单开发手册(5)

2018-11-29 15:37

取得序时薄返回的一个KFO.Vector对象,该对象包含了所选单据的FInterID和FEntryID,由此两参数,可唯一确定选择了那些单据及分录。

函数Public Sub FillBillDataExt( _

ByVal RsTrans As ADODB.Recordset, _ ByVal BillTemplateID As String, _ ByVal FieldName As String, _ Optional ByVal SelBillData, _ Optional ByVal Action)

完成将选单返回数据填入到表头控件及分录列中。参数说明如下: RsTrans:选单返回数据记录集 BillTemplateID:选单模版号 FieldName:选单控件名

SelBillData:选单返回单据的内码及分录号数据集

Action:选单控件需执行的某些操作,如是否需要按BOM展开返回的物料,是否需要将物料进行合计。

基本流程如下: 传入数据 需对返 回单据上按BOM展开返回要需由参数Action确定是的所 有物料进单据上的所有物料展 要否需要重新定义定义行汇总合计,得并将其汇总合计。开合选单返回记录集 到一 个新的记得到一个新的记录物 将该记录计 录集。集。将该记录集赋料 rs 集赋给给rs 不需要

将选单返回数据记录集

(RsTrans)赋予rs 由模版ICSelBills取得选单数据需回填到那些分录列里

将记录集rs中有关于分录的数据填入到对应分录列中以及

以及分录控件数组TEntryCtl中。 调用函数SetRelateCtl,将记录集rs中有关于表头的数据填 入到对应表头控件中以及以及表头控件数组THeadCtl中

对于手工录入选单号码进行选单,首先是根据录入的单据号码,构造一个KFO.Vector对象。该对象同由序时薄选单返回的对象性质是一致的,都包含了所选单据的FInterID和FEntryID。余下的过程两者都一致,即由该对象取得选单返回数据集,再调用函数FillBillDataExt,将记录集数据依次填入到相应的表头控件及分录列中。

对于查找类型的控件,当离开该控件时,要进行一系列的合法性检查(表头控件激发Validate事件,分录控件激发Validate事件和LeaveCell事件)。 这些事件里主要通过函数

Private Function GetData(Cancel As Boolean, _

bChanged As Boolean, _

Optional ByVal bEntry As Boolean = False, _ Optional ByVal col As Long, _

Optional ByVal Row As Long) As Boolean

实现数据合法性检查。该函数通过调用存储过程GetItemDetail返回一个记录集,如果该记录集为空记录集,则控件里的数据不合法,要求重新输入数据或恢复以前合法数据;如果该记录集不为空,则记录集里包含了与当前控件值有关的所有辅助信息。(比如当前控件为物料栏,则该记录集包含了该物料的所用属性值,包括计量单位内码及名称等等。)。对应于当前控件是表头控件或分录列,记录集里的某些值会填入到相应的表头控件数组TheadCtl中或分录控件数组TentryCtl中。

在Validate事件或LeaveCell事件中,还会调用一个重要的过程DoActions。该过程完

成的操作就是根据当前控件填入的值,在其它与它相关的控件也填入相应的值。(例如录入供应商带出计算方式,录入物料代码带出物料名称,计量单位等等,录入单价,数量后算出金额等等)。DoActions的基本操作是根据填入到THeadCtl数组和TEntryCtl数组中的模版信息FrelationID,找出与当前控件相关的所有控件,将这些控件按照FCtlIndex 升序排序,然后按照这个顺序依次调用过程DoAction,完成在某个控件中填入适当的数操作。

过程Private Sub DoAction(ByVal ParentID As Long, ByVal Index As Long, ByRef oriObj As Object, objType As Enu_ObjType)中定义了模版Faction中每种符号的实际操作意义。参数ParentID指明是哪一个控件激发了DoAction事件,从而导致其它控件的值变化;Index表示当前是轮到处理哪一个控件;oriObj传递表头控件数组或分录控件的引用,objType指明ParentID所指控件是表头控件还是分录控件。DoAction定义了以下模版操作符号的意义:

“.”:取基础资料的附属属性值。

例:FrelationID为“FitemID” ,Faction为“.,Fname”,表示由物料代码带出物料名称。

“.A”:取基础资料附带的其他基础资料属性。

例:FrelationID为FitemID,Faction为“.A,FunitID,t_MeasureUnit”,表示由物料代码带出计量单位的内码、名称、代码。

“V>=K”:表示某分录控件的值应大于或等于某表头控件的值。

例:表头模版ICTemplate中FrelationID为“FDate”,Faction为“V>=K,Fdate”,表示分录里的日期应大于等于表头的日期。

“=”:处理是否允许录入批次。

例:FrelationID为“FitemID”,Faction为“=,Ftrack,80”,表示物料计价方法为分批认定时(Ftrack=80),锁定控件不让录入,否则允许录入。

“<=”:表示当前控件的值应小于等于某值。

例:FrelationID为“FDescount”,Faction为“<=,100”,表示当前格的值应小于等于100。

“!”:取分录某几列的值,从左到右依次进行四则运算。运算式中不能包含常

量。

例:FrelationID为“FAuxQty,FAuxPrice,FQty”,Faction为“!,FAuxQty,*,FAuxPrice”,表示当数量、单价、基本单位数量任一个发生改变时,计算数量x单价的值,填入当前格(金额)。 注:“!”完全可被“!1”取代。

“!1”、“()”:取分录某几列的值,从左到右依次进行四则运算。运算式中可

包含常量。 例:FrelationID为“FAuxQty,FAuxPrice,FQty”,Faction为“!,FAuxQty,*,FauxPrice,+,0”,表示当数量、单价、基本单位数量任一个发生改变时,计算数量x单价+0的值,填入当前格(金额)。

“!2”:特殊计算,由折扣率或折扣额之一计算金额(折扣率或折扣额中某一

列必不可见)。

例:Faction 为“!2,FAmount,*,FTaxRate,/,100;!2,FAuxQty,*,FUniDiscount”,表示当使用折扣率时,计算金额x折扣率/100的值;当使用折扣额时,计算数量x单位折扣额的值。

“!3”:前一项与后几项的运算结果进行运算。 例:Faction 为“!3,FAuxPrice,*,100,+,FTaxRate,/,100”,

表示计算单价x(100+税率/100)的值。 注: 任何“!”、“!1”式子都可改装为“!3”的式子,因此,可考虑用“!3”替换“!”、“!1”。

“!4” 前一项与后几项的运算结果进行运算,但数据是取界面上显示的数。

注:因为VaSpread的特殊性,界面上看见的数与实际表格里面的数可能有尾差,从而有可能导致计算上的误差,例如在发票上金额与税额的和不等于价税合计。故引入“!4”解决该问题。

“&”:取基础资料附带的其他基础资料属性。

例:FrelationID为“FcustID”,Faction为“&,FSetID,FSetName,FSetNumber”,表示由供应商带出结算方式的内码、名称、代码。 注:可考虑与“.A”合并。

“~”:计划价调价单据中,得到物料的记价方法为计划价调价的当前库存数。

“*”:处理其他入库单单据头只能录供应商和部门中的一种,其他出库单单据

头只能录客户和部门中的一种。

“A”:在录入盘赢盘亏单时自动带出某种物料在某个仓库中的帐存数量。

“A*”:在录入盘赢盘亏单时仓库改变时自动带出录入的所有物料在该仓库中 的帐存数量。

“A1”:当数量改变时,相应的改变基本单位数量。

“A2”:当基本单位数量改变时,相应的改变数量。

注:“()”最多只能定义三项之间的运算。主要是用于自定义单据中。 而“!1”则不受限制。可考虑将两者统一。

四、 单据的保存流程

单据保存之前,首先调用函数PreventDirtyData(),以确保当前单据上的数据是正确有效的,然后再调用函数Save()保存单据。 函数Save()的主要流程如下: 调用函数CheckMustInput()否 退出,要求录入 检查所有必录项是否录入合法数据 了数据,以及录入的数据是 否符合保存规则 是


K3 ERP wise 老单开发手册(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:论国企绩效考核存在的问题及对策

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: