资源服务定义
记账和撤销记账
记账服务主题域,不执行命令,不对外服务,只对需求服务,
需要使用该实体的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