或超出了也继续保存 是 否 对于有分录的单据,检查分录是否录入了数据 是 将表头模版数组TheadCtl、分录模版数组TentryCtl及分录数据、其它相关数据打成一个包 退出
将这个包传给中间层,由中间层根据模版及数据构造相应的SQL语句,执行后将该张单据保存到数据库对应的表中 否 是发票单据 保存完毕 是 将发票传递到应收应付系统 保存完毕
(2) 单据的审核、下达
在单据录入或修改完成以后,可在单据界面直接完成审核与反审核,下达与反下达,结案与反结案的操作(发票除外)。这些操作都是调用中间层K3McheckBill.DLL实现的,具体的操作可参看类K3MCheckBill.CheckNow中的函数CheckBill()的说明。
在单据审核或下达完毕以后,要调用过程InitMenuAndBar(),使某些菜单、控件锁定或解锁,以控制输入。
五、 对下一版本的一些建议
1. 在本版中,因为生产任务单没有分录,所以很多地方需要进行特殊处理。
在下一版中,所有单据都有分录,故可去掉对生产任务单的特殊判断。
2. 单据选单时,加入过滤条件及排序条件,便于快速查找。可考虑做成一个
通用过滤排序条件,对所有选单起作用(主要是日期过滤排序)。
3. 本版中,审核、下达两种单据显示状态都未用上,单据的修改界面上就可
进行审核或下达。下一版中可考虑去掉审核、下达两种单据状态。同时将ShowForModeExt和ShowBillType合并,单据显示类型有以下四种:
(1).Showinput = 0 录入 (2).Showedit = 1 修改 (3).Showview = 2 查看
(4).ShowForPriceCal=3 核算时单据的单价金额修改
4. 目前单据的DoAction较混乱,有的功能定义比较不通用,或功能不够强大
(如表头和分录之间的关联动作较欠缺)。下一版中可改造过程DoActions()和DoAction(),以及模版ICTemplate和ICTemplateEntry中的Action和RelationID字段,定义更具通用性的动作关联,以便于自定义。还可加入一个是否使用公式选项,以控制某些关联动作。
5. 目前单据较慢,一个主要原因是较多的调用了中间层。下版中应尽量减少
中间层的调用次数,或将调用合并。
6. 改造单据保存的逻辑控制。单据构造时,从中间层取得模版,保存单据时,
又将该模版传回中间层,显得有些冗余。对于数据的合法性校验,一般都是在客户端做的,中间层做的极少。可考虑加强中间层的数据校验功能。
7. 自定义单据中,应加入一个恢复功能,即当用户的自定义操作影响到现有
单据的正确性时,可快速恢复原单模版。这样用户也可放心使用。
? 单据选单的实现说明
选单生成是指从已有的一张单生成另一类型的新单的过程。
一,实现思路:
通过模板方式实现,模板记录源单的表、字段,和与新单之间的字段对应关系,以及其他要用到的信息。通过模板记录的源单的表字段信息,构建源单数据记录集;通过字段对应关系信息,可以确定源单数据记录集中的字段与新单字段的对应关系,并通过这种对应关系回填单据。
二,实现方式:
1) 建立选单关系模板 选单模板包括ICSelBills,ICTableRelation两张表。 1、ICSelBills:
记录源单和新单之间的字段对应关系和要使用的关键字段。一种选单关系可以根据单据模板(ICTemplate)的FID和FFieldName来确定:FID表示新单的模板号,FfieldName表示源单(具体表示是那种单由FselBill字段的内容确定,参见:单据模板说明文档)。选单关系的具体内容就由ICSelBills来记录,由ICSelBills的FID、FfiledName确定。对于一个新增的选单结构,以下几个字段是必须的:
FselType -200 -100 -1 -1 -1 -1 -1 FDK -1 -1 -1 -1 -1 -1 -1 FcolName FInterID FEntryID FQtyDecimal FPriceDecimal FTrack FItemID FBillNO FName FTableName FTableAlias
具体的FID,FfieldName,FName,FtableName等其他信息可根据实际情况填写。对于FtableAlias模板规定主表使用v1,从表使用u1,t_ICItem使用t4。单据头的字段如果有选单数据来源,则必须有三行,分别填入对应的ID,名称,代码。如果没有ID,代码,则随便传入一个数。而且这个顺序不能改变。对于表体的字段,如果是查找类型,也必须有三行,分别填入对应的ID,名称,代码。
2、ICTableRelation:
记录ICSelBills中某一选单关系中有关联关系的表的关联信息。具体内容由FbillID(与FID相同)、FfieldID(与FfieldName相同)确定。需要具体说明的是,表示关联方式的字段Flogic使用的是“=*”、“*=”来表示右连接、左连接。例如:发票选定单
的选单关系中,主表和从表是通过FInterID关联的,则可添加记录 FtableName POOrder 2)
FtableNameAlias V1
选单关系模板结构参见:单据模板说明文档
二、调用单据组件接口,生成新单据 调用接口如下:
LocalCnn属性(String):连接本地数据库的连接字符串,主要用于单据套打。 SystemName属性(String):当前调用单据的系统。 采购:\
销售:\计划:\
车间:\仓存:\核算:\
SetOpt(用户ID,用户名称)方法:设置当前的操作员,两个参数用户ID和用户名称。 BuildFromSelBill属性(Boolean):表明当前单据的生成方式。为真表明单据是选单生
FfieldName FtableName11 FtableNameAlias11 U1 FfieldName11 FLogic FBillID FFieldID FInterID POOrderEntry FInterID = I02 FOrderInterID 成 SelBillVect属性(KFO.Vector):当BuildFromSelBill为真时,传递单据的必要参数。该参数的结构如下:该Vector包括三个Item,第一个是字符型,为当前单据的模板号,即ICTransactionType中的FTemplateID;第二个是字符型,为当前单据的选单号,即上述关系模板中(ICSelBills表)中的FfieldName对应的值。第三个是一个Vector,是包含分录信息的集合:必须包含至少两个信息,FInterID、FentryID,该信息用kfo.Dictionary保存并打包到Vector中。 BillROB属性(长整型):表示当前单据是红单还是兰单,1表示兰单,-1表示红单,默认是兰单 NewBillTransType属性(字符型):为要生成单据的事物类型,即ICTransactionType中的FID。 Show(ByVal eBillCls As Long, ByVal eShowType As Long)方法:该方法根据上面的参数设置,调起单据界面。EBillCls为要生成的单据的类型ID,即ICTransactionType中的Ftype;EshowType为单据的显示方式,0 – 新增、1 – 修改、2 – 查看、3 – 审核、4 – 下达、5 – 作废、6 – 关闭。这里一般使用0。 BillValueChanged属性(Boolean型):在单据调用完成后,返回单据是否更新的标志,为true时,表示当前单据修改保存成功 BillInterID属性(长整型):单据完成之后,获取当前单据的数据的InterID。
3) 三、ICSelBills的特殊使用方式 参见“通过记录集直接调用单据接口生成单据”说明文档
4) 四、增加一套选单的模板例子
增加一套选单的例子.sql
5) 五、改进
v10增加了旧单据选单对新单据的支持,参看文档
E:\\物流系统部\\工业供需链项目组\\技
? 单据模板Action说明文档
一、 概述
介绍单据Action实现的方式以及各种Action的说明。
二、 关键词
单据、模板。
三、 分类
四、 功能标准定义
一、Action的实现方式 与Action的应用相关的字段FCtlIndex、FRelationID 由FCtlIndex定义了Action的执行顺序, 通过访问FRelationID确定需要执行Action的字段,然后调用DoAction函数执行相关字段的Action。 对于一些需要关联计算的字段,大致有两种情况:一、如供应商改变,要改变携带的单价,而单价的改变又要影响金额。二、如单价改变影响金额,而金额的改变又要影响税额。对于第一种情况,第一项(供应商)和第三项(金额)没有必然的联系,只有在携带单价后,再次调用DoActions,进行计算。对于第二种情况,可以使用变通的方法,如:将税额的计算公式改成由金额的计算公式所涉及到的字段来计算,而不是直接使用金额进行计算。 关于rsItem:rsItem属性是在对当前触发字段进行校验时(即GetData中)生成的
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库金蝶 K3 供应链单据开发手册(6)在线全文阅读。
相关推荐: