voucher -- 会计凭证的主表
(创建时间:2010年06月08日 02:13:00)
陈行远 : 
 
  1. CREATE TABLE [voucher] (   
  2.  [vid] integer identity(1,1) not null CONSTRAINT [PK_vid] PRIMARY KEY,   --主键,自增   
  3.  [vtype] INTEGER null,         -- 凭证类型,和vouchertype表关联   
  4.  [period] varchar(6) not null,  --会计区间(月份),和accperiod关联   
  5.  [vno] int not NULL,              --凭证编号   
  6.  [vdate] datetime not null,     --凭证日期   
  7.  [attachnum] int not NULL,   --附件张数   
  8.  [maker] varchar(30) null,      --制单人   
  9.  [assessor] varchar(30) null,  --审核人   
  10.  [tallier] varchar(30) null,       --登帐人   
  11.  [lastupdatetime] datetime null,  --最后更新(插入)时间   
  12.  [lastupdateby] varchar(30) null--更新人   
  13.  [vMemo] varchar(250) null,   --备注   
  14.  [relaapp] varchar(20) null,     --关联模块   
  15.  [relaid] varchar(20) null,        --关联ID   
  16.  [s1] varchar(20) null,             --以下预留   
  17.  [s2] varchar(100) null,   
  18.  [s3] varchar(200) null,   
  19.  [d1] datetime NULL,    
  20.  [d2] datetime NULL,    
  21.  [i1] INTEGER null,   
  22.  [i2] INTEGER null,   
  23.  [i3] INTEGER null,   
  24.  [c1] money NULL,   
  25.  [c2] money NULL,   
  26.  [c3] money NULL  
  27. );   
  28.   
注意:
1.  vtype + period + Vno 这三个字段组成一个要求唯一的约束,即同一个月份内,相同类型的凭证,编号不能重复

 2. 在voucher 表 里面有两个字段:relaapp 和 relaid 用于存储 凭证和您开发的功能模块之间的关联关系。
relaapp 表示 关联的模块名称,如:inventory , 如果是您是从您做的模块中生成的凭证,这个字段是必填的。
relaid 表示 关联的标识号。

3.vdate 要保证落在period制定的日期范围内,period的日期范围参考accperiod表

4.attachnum 附件张数,填写数据来源的记录数量,例如:固定资产新增卡片的张数

5.maker 填写当前的用户姓名,即JS里面就是Const.username, 如果SC 的话就是U_

6. assessor 和 tallier 需要先参考 MySetting 表里面的Vname字段等于accouting.auto 的ShortSetting字段的值
     如果MySetting里面找不到accouting.auto这个值的VName  , 则 ShortSetting 默认值为1,1
    这是一个逗号分隔的两个0或者1的值,前面一个代表assessor , 后面一个代表 tallier 
    如果值为0,代表 assessor (tallier) 应该填入空字符串,如果为1,则应该填入 当前的用户姓名(即JS里面就是Const.username, 如果SC 的话就是U_ )
    如何获得 accouting.auto 对应的值,可以使用SC 内置函数:GetSettingS_("accouting.auto ")

7. relaapp 由其他二次开发的人员写入,这个值要求填入一个和其他模块ID不重复的值,例如独立固定资产模块的开发人员,就应该填入他自己这个模块的名称$fa

8. relaid 这个值也是二次开发人员在写入relaapp的时候填入。这个值用于二次开发人员在voucher这个表里面定位和查找自己写进去的数据,并且这个值最好能和你原有的生成凭证的数据关联。
     例如,独立固定资产模块的开发人员,现在生成2010年6月固定资产新增的凭证,那么这个值可以设置为 201006-2
      201006 代表数据时间区间
      2代表固定资产新增的凭证(如果是变动凭证可以取1或者0,或者其他) 折旧凭证可以用z等等,自己标识不重复的值就可以了

    relaapp 和relaid 还用于 帮助二次开发人员控制 “重复生成凭证”和“修改或者删除原有记录”这方面的问题。

当凭证显示给用看的时候,如果relaapp填入了非空的值,用户点击凭证上的 附件 按钮就会调用relaapp指定的页面,你必须实现这个接口来显示 附件的数据:
如果你的模块名是 yourmodule 则在你模块里面必须有一个 yourmodule_voucher.asp 的功能页,凭证的附件按钮会用以下格式提交数据到 这个功能页:
Const=
vid:    voucher表的ID
VInfo:  凭证信息格式为 会计期间period + "|" + 凭证分类 + "|" + 凭证编号 + "|" + 凭证日期
relaid: voucher表的relaid的值

建议您在显示凭证附件数据时,显示VInfo的内容,即让用户知道你当前显示的数据是 对应 什么时候 哪一张凭证的
文档中心