invoice -- 账面数主表(进销存)
(创建时间:2009年09月02日 15:03:00)
Jangogo : 
  1. CREATETABLE [invoice] (  

  2. [id] integer identity(1,1) notnullCONSTRAINT [invoice_pkid] PRIMARYKEY,  --流水号,自动增加

  3. [btype]  varchar(2) null, --单据名称(类型),如销售单为XK

  4. [period] varchar(6) notnull,  --会计区间, 和accperiod表关联

  5. [bno] intnotNULL,   --单据编号

  6. [idate] datetime notnull,  --单据日期

  7. [itype] intnotNULL,  --发票类型

  8. [taxrate] floatNOTNULL, --税率

  9. [discount]  floatNOTNULL, --折扣

  10. [FCur] varchar(30) NOTnull, --外币币别,本币填空字符串

  11. [ExRate] floatnull,  --汇率,本币填1

  12. [GoodsID] varchar(50) notnull, --核算成品的货品代码, 默认填空串

  13. [CompanyID] varchar(50) notnull,  --核算往来单位的往来单位代码, 默认填空串

  14. [DeptStaffID] varchar(50) notnull,  --核算部门的部门员工代码, 默认填空串

  15. [PrjID] varchar(50) notnull,             --核算项目的项目代码, 默认填空串

  16. [StorageID] varchar(50) notnull,    --核算仓库的仓库代码, 默认填空串

  17. [poid] varchar(50) notnull,             --核算订单的订单代码, 默认填空串

  18. [maker] varchar(30) null,                --制单人

  19. [assessor] varchar(30) null,            --审批人

  20. [tallier] varchar(30) null,                  --登帐人

  21. [lastupdatetime] datetime null,        --最后更新时间

  22. [lastupdateby] varchar(30) null,      --最后更新人

  23. [ino] varchar(250) null,                   --发票号码

  24. [cno] varchar(50) null,                    --(支)票号

  25. [imemo] varchar(250) null,              --备注

  26. [ACID] varchar(50) NOTNULL,     --会计科目代码(实收/实付时的科目)

  27. [acmoney] money NOTNULL,       --实收/实付金额

  28. [acmoneyb] money NOTNULL,     --实收/实付金额(本币)

  29. [CreditDays] intnull,    --信用天数

  30. [payDate] intnull,        --支付日期

  31. [Address] varchar(200) null,  --地址    $s (pos业务单)已经使用

  32. [Contact] varchar(20) null,    --联系人  $s (pos业务单)已经使用

  33. [Mobile] varchar(50) null,       --手机   $s (pos业务单)已经使用

  34. [Phone] varchar(50) null,       --电话

  35. [transportType] varchar(20) NULL,  --运输方式  

  36. [transportNo] varchar(20) null,         --运输单号

  37. [transportFee] money NOTNULL,   --运费

  38. [relaapp] varchar(20) null,                --关联程序

  39. [relaid] varchar(20) null,                   --关联ID

  40. [Foot]  varchar(50) notnull,             --结算方式

  41. [tocompanyid] varchar(50) notnull, --"调拨到"往来单位的代码

  42. [todeptstaffid]  varchar(50) notnull, --"调拨到"部门员工的代码

  43. [toprjid] varchar(50) notnull, --"调拨到"项目的代码

  44. [topoid]  varchar(50) notnull,  --"调拨到"订单的代码

  45. [togoodsid] varchar(50) notnull,  --"调拨到"成品的货品代码

  46. [tostorageid] varchar(50) notnull,  --"调拨到"仓库的代码

  47. [toaddress] varchar(200) null,  --"调拨到"地址

  48. [tocontact]  varchar(20) null, --"调拨到"联系人

  49. [tomobile] varchar(50) null, --"调拨到"手机

  50. [tophone] varchar(50) null,--"调拨到"电话

  51. [ID_Ref] intnull,  --引用单编号,一般不要填

  52. [ID_Red] intnull,  --冲红单编号,一般不要填

  53. [bomtype] intnotnulldefault 0,  --BOM构成模式,一般不要填

  54. [s1] varchar(50) null,   --留给客户自定义 程序员不应该使用S1至6,留给客户自定义使用

  55. [s2] varchar(50) null, --留给客户自定义

  56. [s3] varchar(50) null,  --留给客户自定义

  57. [s4] varchar(20) null, --留给客户自定义

  58. [s5] varchar(100) null,--留给客户自定义

  59. [s6] varchar(200) null,--审批不通过的时候,输入的理由/原因

  60. [d1] datetime NULL, --保留字段(已使用 用于审批时间)

  61. [d2] datetime NULL, --保留字段(已使用  用于仓库确认时间)

  62. [L1] intnull,--保留字段(已使用,是否短款)

  63. [L2] intnull,--保留字段(已经使用, 用于记录单据的打印次数)

  64. [L3] intnull,--保留字段(已经使用,用于按业务单据顺序记录, 成本核算需要)

  65. [i1] intnull,--保留字段(已使用,是否作废的,如果为-1表示作废,因为不知道该字段是否还有其它用,故使用-1这个值)

  66. [i2] intnull,--保留字段 (已使用,用于组装拆分单据的成本模式)

  67. [i3] intnull,--保留字段 (已使用,直拨销售的时候作为toItype用,即第二步骤的发票类型)

  68. [c1] money NULL,--保留字段

  69. [c2] money NULL,--保留字段

  70. [c3] money NULL--保留字段

  71. );  



说明:
btype :  单据名称(类型、代码),格式两位英文字母或者数字, 可以通过 进销存-->单据-->(选择你的单据)-->设置-->单据名称 里面看到,如销售单为XK。和btype表关联

period : 会计区间(月份), 和 accperiod表关联,因为很多时候会计所说的“月份”并非自然月,在accperiod里面定义了会计说的“月份”,例如2009年一月(200901)是"2008-12-26"到"2009-1-25".
 你要先根据你自己销售单的日期(idate字段) 查询accperiod表,看看你的日期是在那个period范围里面从而取得period的值,填入到本字段
 D_="'"
 select period from accperiod where startdate<=" & D_  &  iDate & D_ & " and enddate>=" &  iDate  &  H(1) & D_
 如果找不到记录,说明你的数据不能填入本数据库,可能是因为数据结转到下一年的数据库了,你应该更换你要写入的数据库。详细请看这里:【数据的分库存放】章节

bno :  单据编号,即单号, btype 、period、bno 三个字段一起构成一个唯一的“键”, 也就是说同一种单据类型同一个月份,单号必须唯一。
要增加新单据到表里,必须先得到相同btype和period条件下的bno的最大值,参考以下SQL:
"select max(bno) from " & "invoice" & " where period='" & "200901" & "' and btype='" & "XK" & "'"
获得最大值后,把这个最大值加一,作为新的单号

itype 发票类型 有以下枚举值    1: 收据  2:普通发票 3:增值税发票 4:收购发票

基础数据关联表

  1. [GoodsID] varchar(50) notnull, --核算成品的货品代码, 默认填空串,关联goods表

  2. [CompanyID] varchar(50) notnull,  --核算往来单位的往来单位代码, 默认填空串 ,关联company表,如果是销售单,这里就是客户代码,如果是采购单,就是供应商代码,统称往来单位代码

  3. [DeptStaffID] varchar(50) notnull,  --核算部门的部门员工代码, 默认填空串 ,关联deptstaff表

  4. [PrjID] varchar(50) notnull,             --核算项目的项目代码, 默认填空串 ,关联prj表

  5. [StorageID] varchar(50) notnull,    --核算仓库的仓库代码, 默认填空串 ,关联storage表

  6. [poid] varchar(50) notnull,             --核算订单的订单代码, 默认填空串   ,关联po表

同样地:toGoodsid等"to"开头的字段也是这样相应的关联表


Add By RobertWang:2013-08-27

另外:因$S单据使用的需要,该单据会在invoice表和bill中分别增加一个字段:

posmemo nvarchar(max)

实现逻辑将会在程序的前台完成。



文档中心