分享

用友会计凭证之研究 - 2009 Arping.Net 新起点,新高度 - 博客园

 MG的图书馆 2009-04-08

谁 叫用友的财务软件卖得火呢,其他软件公司为了要给客户上线,其系统之间必须做接口,而用友有一个凭证导入工具说实在话实在不太好用,于是自己写了一个凭证 导入工具,适合于U8.31,,个人感觉U8财务部分的表结构当初涉及时没有考虑扩展性,辅助核算项目都在一个凭证表中

GL_AccVouch
TableID FieldID EFieldName CFieldName DataType Length isnullable
202 1 i_id 自动编号 int 4 0
202 2 iperiod 会计期间 tinyint 1 0
202 3 csign 凭证类别字 varchar 2 1
202 4 isignseq 凭证类别排序号 tinyint 1 1
202 5 ino_id 凭证编号 smallint 2 1
202 6 inid 行号 smallint 2 0
202 7 dbill_date 制单日期 datetime 8 0
202 8 idoc 附单据数 smallint 2 0
202 9 cbill 制单人 varchar 20 1
202 10 ccheck 审核人 varchar 20 1
202 11 cbook 记帐人 varchar 20 1
202 13 ccashier 出纳人 varchar 20 1
202 14 iflag 凭证标志 tinyint 1 1
202 15 ctext1 凭证头自定义项1 varchar 10 1
202 16 ctext2 凭证头自定义项2 varchar 10 1
202 17 cdigest 摘要 varchar 60 0
202 18 ccode 科目编码 varchar 15 0
202 19 cexch_name 币种 varchar 8 1
202 20 md 借方金额 money 8 0
202 21 mc 贷方金额 money 8 0
202 22 md_f 外币借方金额 money 8 0
202 23 mc_f 外币贷方金额 money 8 0
202 24 nfrat 汇率 float 8 0
202 25 nd_s 数量借方 float 8 0
202 26 nc_s 数量贷方 float 8 0
202 27 csettle 结算方式 varchar 3 1
202 28 cn_id 票号 varchar 10 1
202 29 dt_date 票号发生日期 datetime 8 1
202 30 cdept_id 部门编码 varchar 12 1
202 31 cperson_id 职员编码 varchar 8 1
202 32 ccus_id 客户编码 varchar 20 1
202 33 csup_id 供应商编码 varchar 12 1
202 34 citem_id 项目编码 varchar 20 1
202 35 citem_class 项目大类编码 varchar 2 1
202 36 cname 业务员 varchar 20 1
202 37 ccode_equal 对方科目 varchar 50 1
202 38 iflagbank 银行帐两清标志 tinyint 1 1
202 39 iflagPerson 往来帐两清标志 tinyint 1 1
202 40 bdelete 是否核销 bit 1 1
202 41 coutaccset 外部凭证帐套号 varchar 3 1
202 42 ioutyear 外部凭证会计年度 smallint 2 1
202 43 coutsysname 外部凭证系统名称 varchar 10 1
202 44 coutsysver 外部凭证系统版本号 varchar 10 1
202 45 doutbilldate 外部凭证制单日期 datetime 8 1
202 46 ioutperiod 外部凭证会计期间 tinyint 1 1
202 47 coutsign 外部凭证业务类型 varchar 20 1
202 48 coutno_id 外部凭证业务号 varchar 30 1
202 49 doutdate 外部凭证单据日期 datetime 8 1
202 50 coutbillsign 外部凭证单据类型 varchar 20 1
202 51 coutid 外部凭证单据号 varchar 50 1
202 52 bvouchedit 凭证是否可修改 bit 1 1
202 53 bvouchAddordele 凭证分录是否可增删 bit 1 1
202 54 bvouchmoneyhold 凭证合计金额是否保值 bit 1 1
202 55 bvalueedit 分录数值是否可修改 bit 1 1
202 56 bcodeedit 分录科目是否可修改 bit 1 1
202 57 ccodecontrol 分录受控科目可用状态 varchar 50 1
202 58 bPCSedit 分录往来项是否可修改 bit 1 1
202 59 bDeptedit 分录部门是否可修改 bit 1 1
202 60 bItemedit 分录项目是否可修改 bit 1 1
202 61 bCusSupInput 分录往来项是否必输 bit 1 1
202 62 cDefine1 自定义字段1 varchar 20 1
202 63 cDefine2 自定义字段2 varchar 20 1
202 64 cDefine3 自定义字段3 varchar 20 1
202 65 cDefine4 自定义字段4 datetime 8 1
202 66 cDefine5 自定义字段5 int 4 1
202 67 cDefine6 自定义字段6 datetime 8 1
202 68 cDefine7 自定义字段7 float 8 1
202 69 cDefine8 自定义字段8 varchar 4 1
202 70 cDefine9 自定义字段9 varchar 8 1
202 71 cDefine10 自定义字段10 varchar 60 1
202 12 ibook 记账标志 tinyint 1 0

科目表
Code
TableID FieldID EFieldName CFieldName DataType Length isnullable
99 1 i_id 自动编号 int 4 0
99 2 cclass 科目类型 varchar 14 0
99 3 cclass_engl 科目类型英文名称 varchar 50 0
99 4 cclassany 财务分析类型 varchar 14 1
99 5 cclassany_engl 财务分析类型英文名称 varchar 50 1
99 6 ccode 科目编码 varchar 15 0
99 7 ccode_name 科目名称 varchar 40 1
99 8 ccode_engl 科目英文名称 varchar 100 1
99 9 igrade 科目级次 tinyint 1 0
99 10 bproperty 科目性质 bit 1 0
99 11 cbook_type 帐页格式 varchar 10 0
99 12 cbook_type_engl 帐页格式英文名称 varchar 50 0
99 13 chelp 科目助记码 varchar 6 1
99 14 cexch_name 币种 varchar 8 1
99 15 cmeasure 计量单位 varchar 6 1
99 16 bperson 是否个人往来核算 bit 1 0
99 17 bcus 是否客户往来核算 bit 1 0
99 18 bsup 是否供应商往来核算 bit 1 0
99 19 bdept 是否部门核算 bit 1 0
99 20 bitem 是否项目核算 bit 1 0
99 21 cass_item 项目大类 varchar 2 1
99 22 br 是否日记帐 bit 1 0
99 23 be 是否银行帐 bit 1 0
99 24 cgather 是否汇总打印 varchar 15 1
99 25 bend 是否末级 bit 1 0
99 26 bexchange 是否参与汇兑损益计算 bit 1 0
99 27 bcash 是否现金科目 bit 1 0
99 28 bbank 是否银行科目 bit 1 0
99 29 bused 银行帐科目是否启用 bit 1 0
99 30 bd_c 银行帐科目对帐方向 bit 1 0
99 31 dbegin 银行帐科目启用时间 datetime 8 1
99 32 dend 银行帐科目对帐截止日期 datetime 8 1
99 33 itrans 特殊科目标志 tinyint 1 1
99 34 bclose 科目是否封存 bit 1 0
99 35 cother 受控科目 varchar 10 1
99 36 iotherused 其它系统是否使用 int 4 1
99 37 bcDefine1 自定义字段1 bit 1 1
99 38 bcDefine2 自定义字段2 bit 1 1
99 39 bcDefine3 自定义字段3 bit 1 1
99 40 bcDefine4 自定义字段4 bit 1 1
99 41 bcDefine5 自定义字段5 bit 1 1
99 42 bcDefine6 自定义字段6 bit 1 1
99 43 bcDefine7 自定义字段7 bit 1 1
99 44 bcDefine8 自定义字段8 bit 1 1
99 45 bcDefine9 自定义字段9 bit 1 1
99 46 bcDefine10 自定义字段10 bit 1 1
99 49 bCashItem 是否常用现金流量科目 bit 1 0
99 48 bGCJS 是否工程结算科目 bit 1 0
99 47 iViewItem 在建工程项目科目类型 int 4 0

客户表
Customer
TableID FieldID EFieldName CFieldName DataType Length isnullable
105 1 cCusCode 客户编码 varchar 20 0
105 2 cCusName 客户名称 varchar 98 1
105 3 cCusAbbName 客户简称 varchar 60 0
105 4 cCCCode 分类编码 varchar 12 1
105 5 cDCCode 地区编码 varchar 12 1
105 6 cTrade 所属行业 varchar 10 1
105 7 cCusAddress 地址 varchar 98 1
105 8 cCusPostCode 邮政编码 varchar 6 1
105 9 cCusRegCode 纳税人登记号 varchar 18 1
105 10 cCusBank 开户银行 varchar 30 1
105 11 cCusAccount 银行账号 varchar 50 1
105 12 dCusDevDate 发展日期 datetime 8 1
105 13 cCusLPerson 法人 varchar 10 1
105 14 cCusEmail Email地址 varchar 30 1
105 15 cCusPerson 联系人 varchar 10 1
105 16 cCusPhone 电话 varchar 20 1
105 17 cCusFax 传真 varchar 20 1
105 18 cCusBP 呼机 varchar 20 1
105 19 cCusHand 手机 varchar 20 1
105 20 cCusPPerson 专管业务员 varchar 10 1
105 21 iCusDisRate 扣率 float 8 1
105 22 cCusCreGrade 信用等级 varchar 6 1
105 23 iCusCreLine 信用额度 float 8 1
105 24 iCusCreDate 信用期限 tinyint 1 1
105 25 cCusPayCond 付款条件 varchar 20 1
105 26 cCusOAddress 发货地址 varchar 40 1
105 27 cCusOType 发货方式 varchar 10 1
105 28 cCusHeadCode 客户总公司编码 varchar 20 1
105 29 cCusWhCode 发货仓库 varchar 10 1
105 30 cCusDepart 分管部门 varchar 12 1
105 31 iARMoney 应收余额 float 8 1
105 32 dLastDate 最后交易日期 datetime 8 1
105 33 iLastMoney 最后交易金额 float 8 1
105 34 dLRDate 最后收款日期 datetime 8 1
105 35 iLRMoney 最后收款金额 float 8 1
105 36 dEndDate 停用日期 datetime 8 1
105 37 iFrequency 使用频度 int 4 1
105 38 cCusDefine1 自定义项1 varchar 20 1
105 39 cCusDefine2 自定义项2 varchar 20 1
105 40 cCusDefine3 自定义项3 varchar 20 1
105 41 iCostGrade 价格级别 smallint 2 1

部门表
Department
TableID FieldID EFieldName CFieldName DataType Length isnullable
118 1 cDepCode 部门编码 varchar 12 0
118 2 bDepEnd 是否末级 bit 1 0
118 3 cDepName 部门名称 varchar 20 0
118 4 iDepGrade 编码级次 tinyint 1 0
118 5 cDepPerson 负责人 varchar 10 1
118 6 cDepProp 部门属性 varchar 10 1
118 7 cDepPhone 电话 varchar 20 1
118 8 cDepAddress 地址 varchar 30 1
118 9 cDepMemo 备注 varchar 20 1

供应商
Vendor
TableID FieldID EFieldName CFieldName DataType Length isnullable
354 1 cVenCode 供应商编码 varchar 12 0
354 2 cVenName 供应商名称 varchar 60 1
354 3 cVenAbbName 供应商简称 varchar 30 0
354 4 cVCCode 分类编码 varchar 12 1
354 5 cDCCode 地区编码 varchar 12 1
354 6 cTrade 所属行业 varchar 10 1
354 7 cVenAddress 地址 varchar 40 1
354 8 cVenPostCode 邮政编码 varchar 6 1
354 9 cVenRegCode 纳税人登记号 varchar 18 1
354 10 cVenBank 开户银行 varchar 30 1
354 11 cVenAccount 银行账号 varchar 20 1
354 12 dVenDevDate 发展日期 datetime 8 1
354 13 cVenLPerson 法人 varchar 10 1
354 14 cVenPhone 电话 varchar 20 1
354 15 cVenFax 传真 varchar 20 1
354 16 cVenEmail Email地址 varchar 30 1
354 17 cVenPerson 联系人 varchar 10 1
354 18 cVenBP 呼机 varchar 20 1
354 19 cVenHand 手机 varchar 20 1
354 20 cVenPPerson 专管业务员 varchar 10 1
354 21 iVenDisRate 扣率 float 8 1
354 22 iVenCreGrade 信用等级 varchar 6 1
354 23 iVenCreLine 信用额度 float 8 1
354 24 iVenCreDate 信用期限 tinyint 1 1
354 25 cVenPayCond 付款条件 varchar 20 1
354 26 cVenIAddress 到货地址 varchar 40 1
354 27 cVenIType 到货方式 varchar 10 1
354 28 cVenHeadCode 客户总公司编码 varchar 12 1
354 29 cVenWhCode 到货仓库 varchar 10 1
354 30 cVenDepart 分管部门 varchar 12 1
354 31 iAPMoney 应付余额 float 8 1
354 32 dLastDate 最后交易日期 datetime 8 1
354 33 iLastMoney 最后交易金额 float 8 1
354 34 dLRDate 最后付款日期 datetime 8 1
354 35 iLRMoney 最后付款金额 float 8 1
354 36 dEndDate 停用日期 datetime 8 1
354 37 iFrequency 使用频度 int 4 1
354 38 bVenTax 单价是否含税 bit 1 0
354 39 cVenDefine1 自定义项1 varchar 20 1
354 40 cVenDefine2 自定义项2 varchar 20 1
354 41 cVenDefine3 自定义项3 varchar 20 1

计算逻辑伪代码,以薪资凭证导入U8为例
               

 //打开 HR DB.StartTransaction

//打开U8 DB.StartTransaction

//按照薪资项目循环

begin

//找出薪资汇总表中所有该薪资项目的记录

SQL =select * from 薪资汇总表 where HRI_PRDCODE=汇总表.计薪区间and HRI_CODE=汇总表.薪资项目代码 Order by 成本中心代码

//插入借方科目

//按照取得的汇总表记录循环

begin

  //u8 acc_vouch

  i_id  //自动编号

  iperiod  //凭证所在月份

  csign  //填入系统设置的凭证字,如“转”

  isignseq //填入凭证字代码  select i_id from Dsign where csign=’转’

  ino_id //取该月份最大凭证编号+1  SELECT ISNULL(MAX(ino_id),0) AS maxVal FROM gl_accvouch WHERE iperiod=%d AND isignseq=%d

  inid  //序号从1开始

  dbill_date =制单日期  //抛转时手工输入 

  idoc = -1

  cbill = 制单人

  ccheck = ‘’//审核人

  cbook = ‘’ //记帐人

  ibook=0

  ccashier= NULL

  iflag= NULL

ctext1  //系统设置的备注信息

ctext2 = NULL

cdigest=输入的凭证摘要

ccode  //根据成本中心代码得到的费用科目代码select 科目代码 from HRMS_DeptAcc where 部门代码=汇总表.成本中心代码

cexch_name=NULL

md=汇总表.金额

mc=0

md_f=0

mc_f=0

nfrat=0

nd_s=0

nc_s=0

csettle= NULL

cn_id= NULL

dt_date= NULL

cdept_id=汇总表.成本中心代码

cperson_id=NULL

ccus_id=NULL

csup_id=NULL 

citem_id=NULL

citem_class= NULL

cname= NULL

ccode_equal=薪资项目表.科目代码

iflagbank=NULL

iflagPerson=NULL

bdelete=0

coutaccset= NULL

ioutyear= NULL

coutsysname= NULL

coutsysver= NULL

doutbilldate= NULL

ioutperiod= NULL

coutsign= NULL

coutno_id= NULL

doutdate= NULL

coutbillsign= NULL

coutid= NULL

bvouchedit=1

bvouchAddordele=0

bvouchmoneyhold=0

bvalueedit=1

bcodeedit=1

ccodecontrol= NULL

bPCSedit=1

bDeptedit=1

bItemedit=1

bCusSupInput=0

cDefine1~ cDefine16 =NULL

dReceive= NULL

cWLDZFlag= NULL

dWLDZTime= NULL

bFlagOut=0

end

//插入贷方科目  只说明与借方科目不同的地方

  inid  //取借方科目inid最大+1 

ccode  =薪资项目设置的应付科目代码

md=0

mc=SUM(借方金额)

cdept_id=NULL

csup_id=如果是工资和所得税这里为空/如果是公积金,这里填 薪资项目表. 供应商代码

ccode_equal=550201,410501  //借方科目代码,之间用逗号格开

 

    end

        //HR DB.commit;

        //U8 DB.commit;

这里用了事务嵌套处理。这段逻辑处理最好放在托盘程式自动RUN,另外要加上日志处理。笔者不建议写成服务,因为用DELPHI写服务数据库连接有内存释放不干净的问题,容易造成服务死锁。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多