记账和撤销记账

记账服务主题域,不执行命令,不对外服务,只对需求服务,

需要使用该实体的data服务属性,该实体的data服务中可以设定是否检查区间

data服务中的主表是entry 数据集中的定义都是 ,

HASROOM 


<ATTRIBUTE>

<ENTRY  TRANISENTRY='FALSE'  DATASET='eri' ALIAS='' TYPEID='typeid'   TRANID='tranid'   DATE = 'trantime'  ACTTYPE='' HASROOM="TRUE">

       Entery数据集中必须有roomid字段, 需求中必须提供该字段。  

TRANISENTRY: 业务和记账条目是同一个表, 默认为false。

TYPEID:用于保存需求实体id的字段。默认为 typeid

TRANID='tranid' 保存单据类型的字段id和id参数名称,默认为tranid

       DATE='trantime'   记账日期字段,默认为trantime

ACTYPE=''  用于识别不同的类型账目的标志字段的名称,默认为空,例如数量帐,金额账等。Entry,可以同时记录数量帐和金额账,与ACCOUNT的ACTYPE对应,type用于区别account关注的entry类型。  这里只有一个值,ACCOUNT设置中可以有多个用~分开。

HASROOM 是否包含roomid信息,默认为TRUE。如果为true ,entry中必须存在 该字段,数据集中也必须存在该字段 和参数

       <FIELD CODE="rksl" VALUE="0"/> 

       <FIELD CODE="cksl" VALUE="0"/>

       字段的默认值,可以有多个。 

<SEQUENCE VALUE=’FALSE’ SET=’TRUE’/>

参数设置,是否要求必须按照时间顺序记账,默认值为FALSE ,可以通过参数设定值。 

 </ENTERY>


<DIM CODE='' NAME='' /> 

维度可以有多个,有两种类型,一种固定值维度,一种是实体维度

固定值维度:例如批号,没有代码表外键,不需要判断维度的可用性,实体维度如果不需要进行额外的判断,也可以作为固定值维度设定。 

CODE 维度代码, 维度在entry中的字段名称,数据集和表中相同

NAME :维度名称

<DIM CODE='' NAME='' DATASET='' ALIAS=''  MESSAGE="{} " CHECKALIAS=’’ ACTYPE="j" /> 

实体维度,一般由外键维护,例如仓库,产品等,不能为null,也没有默认值

DATASET  ALIAS 用于查询维度的数据集,数据集可以施加额外的业务逻辑,例如维度是否关闭,是否审核等,验证维度的合法性。数据集必须能够根据id查询,如果查询结果记录数同id参数中的不同则触发错误。 

MESSAGE:动态消息表达式,记账错误后用来获得错误维度的描述信息。

CHECKALIAS:默认为空,如果指定通过该Alias记账前通过数据集查询维度的可用性,没有指定不检查。 

ACTYPE: 具有维度的entry类型。 如果没有指定包含所有类型。 如果指定,非该类型的entry条目该维度可以为null

       

       <ACCOUNT  CODE='' NAME=''  ENTERYIDFIELD='kmyeid' DATASET='' ALIAS=''  MINDATE='' MAXDATE=''       XH=’’  ACTYPE=''  >

账户定义,一个账户是一种处理账目的模式,处理不同的entry,例如,库存数量帐,金额帐,应收账,应付账款等。 一个entry可以存在多个account,如数量帐和金额帐。   但是entry的排序方式相同,一个账户关注部分或全部的entery记录。 相当于记账中的主表,

CODE:账户代码,ENTRY中账户id字段

NAME :账户名称 

ENTRYIDFIELD: entry中账户id对应的字段名称,如果不指定默认为数据集的主键名称,及与账户主键名称相同

DATASET:用于查询账户记录的(类似记账的主表)的数据集。 

ALIAS:数据集的alias

MINDATE:账户数据集中最小日期值字段。为了限定查找的范围

MAXDATE: 账户数据集中最大日期值字段。为了限定查找范围。 

XH :entry中用来记录记账顺序的序号列

ACTYPE 类型固定值,关注entry的类型, 对应entry中的ACTTYPE可以用~分隔多个,空值标识关注所有的entry类型


       <DIM CODE='' FIELD='' /> 用于查询账户的维度数据。 

       账户中引用的维度,可以包含多个。 

CODE引用维度的代码,必须提供

FIELD在账户中的字段名称,默认为entry中的维度字段名称

<FIELD CODE=’’ VALUE=’’/>

新建账户的字段的默认值设置,可以有多个

<POSTER TYPE='INOUT' NAME='' >

               加减型记账算法,

               <NEGATIVE  VALUE="TRUE" SET="TRUE"/>

     参数设置,是否允许负数,是否用户可以自主设定。 

               <ENTRY IN='' OUT='' LEFT=''/>

       Entry中计算算法所需要字段,IN:增加,OUT :减少,LEFT剩余

               <ACCOUNT LEFT=''/> 

账户中记录当前余额的字段名称

< NEGATIVE VALUE=’FALSE’ SET=’TRUE’/>

余额是否允许为默认为为TRUE,是可以设定的参数

</POTER>

<POSTER NAME='' TYPE='INOUTAVG' >  

       加权平均记账算法,…JE 为对应的金额字段

从 INOUT 继承,除了包含INOUT 类型的定会外还增加了

               <ENTRY IN='' OUT='' LEFT='' INJE='' OUTJE='' LEFTJE=''/>

               <ACCOUNT LEFT='' LEFTJE=''/>

       </POTER>   


<SCRIPT>

   属性中的脚本

               <PROCESS>

                               <BEF>
                       </BEF>

                               <AFT>

                               </AFT>

               </PROCESS>

</SCRIPT>

脚本,针对每个主记录在处理前后执行的脚本

参数变量为:param = ObjParamRes aParam,

结果变量为:result  = 结果为ObjAccount aAccount;

</ACCOUNT> 

</ATTRIBUTE>




举例: 

数据定义中

       <TABLES MAINTABLE="i_kcentry">

                               <TABLE CODE="i_kcentry" IDCOL="kcentryid"/>

                               <TABLE CODE="i_kcjeye" IDCOL="kcjeyeid"/>

                               <TABLE CODE="i_kcslye" IDCOL="kcslyeid"/>

       </TABLES>

       <PERIOD ERI=".PERIODM.PERIODMSVR" DATE="trantime" PERIOD="" ACTIVEONLY="TRUE" CLOSESTATUS=""/>

期间定义




记账服务

       <ATTRIBUTE TYPE="LS" PROGID="RESSVR" SVRERI="" RELEASE="0~0~0" USERVERSION="1">

                       <ENTRY TRANISENTRY="FALSE" DATASET="..BROWSEDS" ALIAS="DEFAULT" TYPEID="typeid" TRANID="tranid" DATE="trantime" ACTYPE="actype">

                               <FIELD CODE="rksl" VALUE="0"/>

                               <FIELD CODE="cksl" VALUE="0"/>

                               <FIELD CODE="jcsl" VALUE="0"/>

                               <FIELD CODE="rkje" VALUE="0"/>

                               <FIELD CODE="ckcb" VALUE="0"/>

                               <FIELD CODE="jcje" VALUE="0"/>

                               <FIELD CODE="rkjesl" VALUE="0"/>

                               <FIELD CODE="ckcbsl" VALUE="0"/>

                               <FIELD CODE="jcjesl" VALUE="0"/>

                               <SEQUENCE VALUE="TRUE" SET="TRUE"/>

                       </ENTRY>

                       <DIM CODE="ckkwid" NAME="仓库库位"/>

                       <DIM CODE="cpdnid" NAME="产品档案" DATASET=".CPDN.BROWSEDS" ALIAS="DEFAULT" CHECKALIAS="DEFAULT" MESSAGE="{c_ksdn_ecode + ' ' + c_ysdn_ename + ' '+ c_cmdn_ename}"/>

                       <ACCOUNT CODE="kcslyeid" NAME="库存数量" DATASET="..KCSLDS" ALIAS="DEFAULT" MINDATE="mindate" MAXDATE="maxdate" FIELD="kcslyeid" XH="xhsl" ACTYPE="">

                               <DIM CODE="cpdnid" FIELD=""/>

                               <DIM CODE="ckkwid" FIELD=""/>

                               <POSTER NAME="数量帐" TYPE="INOUT">

                                       <ENTRY IN="rksl" OUT="cksl" LEFT="jcsl"/>

                                       <ACCOUNT LEFT="jcsl"/>

                                       <NEGATIVE VALUE="FALSE" SET="TRUE"/>

                               </POSTER>

                               <FIELD CODE="jcsl" VALUE="0"/>

                               <SCRIPT>

                                       <PROCESS>

                                               <BEF> 

script.returnValue = 1;

script.message = '前数据查询' + result.maxDate.toString();



</BEF>

                                               <AFT>

script.returnValue = 1;

script.message = '后数据查询' + result.maxDate.toString();



</AFT>

                                       </PROCESS>

                               </SCRIPT>

                       </ACCOUNT>

                       <ACCOUNT CODE="kcjeyeid" NAME="库存金额" DATASET="..EDITDSSUB" ALIAS="DEFAULT" MINDATE="mindate" MAXDATE="maxdate" FIELD="kcjeyeid" XH="xhje" ACTYPE="KCJE">

                               <DIM CODE="cpdnid" FIELD="" PARAM="cpdnid"/>

                               <POSTER NAME="加权平均计价" TYPE="INOUTAVG">

                                       <ENTRY IN="rkjesl" OUT="ckcbsl" LEFT="jcjesl" INJE="rkje" OUTJE="ckcb" LEFTJE="jcje"/>

                                       <ACCOUNT LEFT="jcsl" LEFTJE="jcje"/>

                                       <NEGATIVE VALUE="TRUE" SET="TRUE"/>

                               </POSTER>

                               <FIELD CODE="jcsl" VALUE="0"/>

                               <FIELD CODE="jcje" VALUE="0"/>

                               <SCRIPT>

                                       <PROCESS>

                                               <BEF> 

script.returnValue = 1;

script.message = '前数据查询' + result.maxDate.toString();



</BEF>

                                               <AFT>

script.returnValue = 1;

script.message = '后数据查询' + result.maxDate.toString();



</AFT>

                                       </PROCESS>

                               </SCRIPT>

                       </ACCOUNT>

               </ATTRIBUTE>


数据库表结构


Created with the Personal Edition of HelpNDoc: iPhone web sites made easy