商业物流系统原理及数据结构分析
1.基础资料 ...........................................................................................................................................................................................2
客户资料 ..........................................................................................................................................................................2
商品资料 ..........................................................................................................................................................................4
仓库资料 ..........................................................................................................................................................................5
供应商资料 ......................................................................................................................................................................6
商品辅助属性 ..................................................................................................................................................................7
商品结构清单 ..................................................................................................................................................................9
商品价格管理 ................................................................................................................................................................10
商品存量管理 ................................................................................................................................................................13
商品保质期管理 ............................................................................................................................................................14
商品批次管理 ................................................................................................................................................................15
信用管理 ........................................................................................................................................................................16
供应商供货信息 ............................................................................................................................................................17
条码管理 ........................................................................................................................................................................18
系统设置 ........................................................................................................................................................................19
2.初始化 .............................................................................................................................................................................................20
初始数据录入 ................................................................................................................................................................21
期初未核销数据录入 ....................................................................................................................................................24
导出初始额到总账 ........................................................................................................................................................24
结束初始化 ....................................................................................................................................................................25
反初始化 ........................................................................................................................................................................26
3.单据的处理 .....................................................................................................................................................................................27
单据模板表 ....................................................................................................................................................................28
订单单据的处理 ............................................................................................................................................................29
收货通知单与发货通知单的处理 ................................................................................................................................36
库存业务单据的处理 ....................................................................................................................................................38
发票业务单据的处理 ....................................................................................................................................................43
4 核销处理 .........................................................................................................................................................................................48
采购订单与采购入库单核销的处理 ............................................................................................................................48
采购入库单与采购发票核销的处理 ............................................................................................................................50
销售订单与销售出库单核销的处理 ............................................................................................................................52
销售出库单与销售发票核销的处理 ............................................................................................................................54
委托代销结算的处理 ....................................................................................................................................................56
分期收款结算的处理 ....................................................................................................................................................59
5 重点功能的业务处理 .....................................................................................................................................................................60
暂估业务处理 ................................................................................................................................................................60
受托代销业务处理 ........................................................................................................................................................61
委托代销业务处理 ........................................................................................................................................................61
分期收款业务处理 ........................................................................................................................................................62
组合出入库业务处理 ....................................................................................................................................................62
盘点业务处理 ................................................................................................................................................................63
凭证处理 ........................................................................................................................................................................64
6 期末处理 .........................................................................................................................................................................................67
期末处理与反期末处理 ................................................................................................................................................67
关帐与反关帐 ................................................................................................................................................................67
商业物流系统原理及数据结构分析
1.基础资料
客户资料
1、处理流程:
客户资料存放在基础资料表 t_Item 和客户资料表 t_Organization 中。
新增客户资料时,系统先从种子表 t_identity 取得 t_Item 的 FitemID 内码,保存时,系统分别往基础
资料表 t_Item、客户资料表 t_Organization、基础资料权限表 t_ItemRight、基础资料相关属性表 t_BaseProperty
四个表中插入数据。
在 t_Item 中,其中 fitemclassid=1 表示是客户数据,Fdetail=1 表示明细项目,Fdetail=0 表示非明细
用于项目分组,Flevel 表示项目的级数,FparentID 表示父级代码(只有一级项目的 FParentID=0,多级的
FParentID 等于其上级的 fitemid 值)。
在 t_Item 中 Fdetail=1 且 FItemClassID=1 的记录才会匹配 t_Organization 里。
2、相关的数据结构:
主表 1:t_Item(基础资料表):FItemClassID=1 为客户数据
字段名 类型 描述 说明
FItemID INTEGER 项目内码 来源种子表t_identity中Fname=t_Item的记录的FNext字段值
FItemClassID INTEGER 类别内码 FItemClassID=1为客户数据
FNumber STRING 项目编码 手工录入
FName STRING 项目名称 手工录入
FParentID INTEGER 上级项目内码 只有一级项目的FParentID=0,多级的FParentID等于其上级的fitemid值
FLevel INTEGER 项目级别 表明项目的级次
FDetail INTEGER 是否明细 Fdetail=1是明细,Fdetail=0是非明细
FUnUsed INTEGER 是否未使用 0为使用,1为未使用
FBrNo STRING 公司代码 与t_SystemProfile表中FCategory=’com’且FKey=’BrID’的Fvalue值相等
FDeleted INTEGER 是否禁用 0为未禁用,1为禁用
FFullNumber STRING 项目长编码 系统自动产生
FShortNumber STRING 项目短编码 系统自动产生
FFullName STRING 项目全名 系统自动产生
主表 2:t_Organization(客户资料表):在表 t_Item 的 Fdetail=1 且 FItemClassID=1 的记录才会匹
配到 t_Organization 里。
字段名 类型 描述 说明
FItemID INTEGER 客户内码 与t_Item表的Fdetail=1且FItemClassID=1的记录的FItemID值相对应
FParentID INTEGER 上级项目内码 系统自动产生
FBrNo STRING 公司代码 与t_SystemProfile表中FCategory=’com’且FKey=’BrID’的Fvalue值相等
FStatus INTEGER 状态 1072为使用,1073为未使,1074为冻结
FARAccountID INTEGER 应收账款科目内码 手工录入,对应t_Account表中应收账款科目的FaccountID字段值
FpreAcctID INTEGER 预收账款科目内码 手工录入,对应t_Account表中预收账款科目的FaccountID字段值
FCreditLimit STRING 信用额度 手工录入
FDeleted INTEGER 是否禁用 0为正常使用,1为禁用
FDepartment INTEGER 分管部门 来源于t_Item表中FitemClassID=2且Fdetail=1的记录的FItemID字段值
FEmployee INTEGER 专营业务员 来源于t_Item表中FitemClassID=3且Fdetail=1的记录的FItemID字段值
FlastReceiveDate DATETI
ME
最后收款日期 应收系统最后一笔收款单上提取的单据日期
FlastRPAmount FLOAT 最后收款金额 应收系统最后一笔收款单上提取的金额
FlastTradeDate DATETI
ME
最后交易日期 应收系统最后一笔销售发票上提取的开票日期
FlastTradeAmount FLOAT 最后交易金额 应收系统最后一笔销售发票上提取的金额
FStockIDAssign INTEGER 委托代销仓内码 与t_Item表中FitemClassID=5且Fdetail=1的记录的FItemID值相对应
FStockIDInst INTEGER 分期收款仓内码 与t_Item表中FitemClassID=5且Fdetail=1的记录的FItemID值相对应
FStockIDKeep INTEGER 代管物资仓内码 与t_Item表中FitemClassID=5且Fdetail=1的记录的FItemID值相对应
…… …… …… ……
3、相关说明:
客户管理不仅是销售管理的重要组成部分,同时也是应收款管理、信用管理、价格管理所不可或缺
的基本要素,因此应对客户资料的设置给予高度重视。
客户资料信息分为基本资料标签页和应收资料标签页,基本资料标签页主要保存客户的一些基本信
息,如名称、地址等;应收资料标签页保存的客户资料主要是在应收系统中需要使用到的一些客户信息;
在应收资料中如果输入了对应的分管部门和专营业务员后,在录入单据时,当录入了此客户后,系统会把
对应的部门和职员都给带出,为录入单据提供方便;在应收资料中的最后交易日期、最后交易金额是系统
从最后一笔销售发票上提取的数据,且只能从应收系统录入的其他应收单或销售发票上提取,从物流传入
的销售发票不会更新此数据;最后收款日期、最后收款金额是系统从最后一笔收款单上提取的数据。
在 t_Organization 表中,所有的记录都是最明细客户的记录,各个字段的含义可以参考
t_FieldDescription 表中 FTableID 字段值为 46 的所有记录信息,需要注意 Fstatus 这个字段,一般此字段的
值为 1072,如果某个客户的记录不是这个值,那么在录入单据按 F7 选取客户时,此客户的记录就不能显
示出来。
t_Item 和 t_Organization 两表是依据 FitemID 的值进行关联的,且 t_Organization 表中的记录数与
t_Item 表中 FItemClassID 字段值为 1、FDetail 字段值为 1 的记录数相等。
商品资料
1、处理流程:
商品资料存放在基础资料表 t_Item 和商品资料表 com_Item 中。
新增商品资料时,系统先从种子表 t_identity 取得基础资料表 t_Item 的 FitemID 内码,保存时,系统
分别往基础资料表 t_Item、商品资料表 com_Item、基础资料权限表 t_ItemRight、基础资料相关属性表
t_BaseProperty 四个表中插入数据。
在 t_Item 中,其中 fitemclassid=4 表示是客户数据,Fdetail=1 表示明细项目,Fdetail=0 表示非明细
用于项目分组,Flevel 表示项目的级数,FparentID 表示父级代码(只有一级项目的 FParentID=0,多级的
FParentID 等于其上级的 fitemid 值)。
在 t_Item 中 Fdetail=1 且 FItemClassID=4 的记录才会匹配 com_Item 里。
2、相关的数据结构:
主表 1:t_Item(基础资料表):FItemClassID=4 为商品数据(见客户资料主表 1)
主表 2:com_Item(商品资料表):在表 t_Item 的 Fdetail=1 且 FItemClassID=4 的记录才会匹配到
com_Item 里。
字段名 类型 描述 说明
FItemID INTEGE
R
客户ID 来源于t_Item表中Fdetail=1且FItemClassID=4的记录的FItemID字段值
FtypeID
INTEGE
R
商品类别ID
与辅助资料中的商品类别相对应,即与com_Systype表中FClassid=504的记
录的FSysTypeID值相对应
FauxClassID INTEGE
R
辅助属性ID 来源于COM_ItemAuxProp表的FAuxPropID字段值
FunitGroupID INTEGE
R
计量单位组ID 来源于t_UnitGroup表中的FUnitGroupID字段值
FbaseUnitID INTEGE
R
默认计量单位ID 来源于t_MeasureUnit表中的FMeasureUnitID字段值
FminStock FLOAT 最低存量 进行商品存量管理时,系统就取此数据与当前数据进行比较
FmaxStock FLOAT 最高存量 进行商品存量管理时,系统就取此数据与当前数据进行比较
FinPrice FLOAT 参考进价 有循环调拨时,系统就是先取此数据
FoutPrice FLOAT 参考售价 做单据时,系统如果取不到特价或基本价,则就取此数据
Ftrack INTEGE
R
计价方法 1为加权平均,2为移动平均,3为先进先出,4为后进先出,5为分批认定
FKeep
INTEGE
R
是否保质期管理 0为不需要保质期管理,1为需要保质期管理
FstockTime INTEGE
R
是否库龄管理 0为不需要库龄管理,1为需要库龄管理
FBatch INTEGE
R
是否批次管理 0为不进行批次管理,1为进行批次管理
FdefStockID INTEGE
R
默认仓位ID 设置了此数据后,在做出入库单据时系统能自动带出默认仓库
FpriceScale INTEGE
R
单价小数位数 手工录入
FqtyScale INTEGE
R
数量小数位数 手工录入
FStockAcctID INTEGE
R
库存商品科目ID 来源于t_Account表中库存商品科目内码,初始余额传入总帐系统时的依据
FsaleAcctID INTEGE
R
销售收入科目ID 手工录入,与t_Account表中销售收入科目的FaccountID字段值相对应
FCOGSAcctID INTEGE
R
销售成本科目ID 手工录入,与t_Account表中销售成本科目的FaccountID字段值相对应
FtaxRate INTEGE
R
税率 手工录入,每个商品都可以有不同的税率
FIsBOM INTEGE
R
是否组合件 1为是组合件,做组合出入库时才能选此商品
FisReplace INTEGE
R
是否可替代商品 0为不可替代,1为可替代
FReplaceClassID INTEGE
R
可替代类别 来源于com_Systype表中FClassid=480的记录的FSysTypeID字段值
…… …… …… ……
3、相关说明:
商品资料主要是标识和描述每个商品及其详细信息,并对商品进行集中、分级管理。
商品资料涉及到的数据表有两个,表名分别为 t_Item 和 COM_Item。在 t_Item 表中,字段
FitemClassID 值为 4 的所有记录,都表示为商品资料的记录,此表中只记录了商品资料的一些信息,如商
品内码,商品代码,商品长代码,商品短代码,商品名称,商品全名,级别,是否明细,父级代码,是否
使用,是否删除等;在 COM_Item 中,所有的记录都是最明细商品的记录,各个字段的含义可以参考字段
描述表 t_FieldDescription 表中 FTableID 字段值为 1502 的所有记录信息;t_Item 和 COM_Item 两表是依据
FitemID 的值进行关联的,且 COM_Item 表中的记录与 t_Item 表中 FItemClassID 字段值为 4、FDetail 字段
值为 1 的记录数相等,如果两表不符合上面的关系,进行初始化录入数据时可能会出错,在以后的例题中
将会讲到。
仓库资料
1、处理流程:
仓库资料存放在基础资料表 t_Item 和仓库资料表 com_Stock 中。
新增仓库资料时,系统先从种子表 t_identity 取得基础资料表 t_Item 的 FitemID 内码,保存时,系统
分别往基础资料表 t_Item、仓库资料表 com_Stock、基础资料权限表 t_ItemRight、基础资料相关属性表
t_BaseProperty 四个表中插入数据。
在 t_Item 中,其中 fitemclassid=5 表示是客户数据,Fdetail=1 表示明细项目,Fdetail=0 表示非明细
用于项目分组,Flevel 表示项目的级数,FparentID 表示父级代码(只有一级项目的 FParentID=0,多级的
FParentID 等于其上级的 fitemid 值)。
在 t_Item 中 Fdetail=1 且 FItemClassID=5 的记录才会匹配 com_Stock 里。
2、相关的数据结构:
主表 1:t_Item(基础资料表):FItemClassID=5 为仓库数据(见客户资料主表 1)
主表 2:com_Stock(仓库资料表):在表 t_Item 的 Fdetail=1 且 FItemClassID=5 的记录才会匹配
到 com_ Stock 里。
字段名 类型 描述 说明
FItemID INTEGE
R
仓位ID 与t_Item表的Fdetail=1且FItemClassID=5的记录的FItemID值相对应
FtypeID INTEGE 仓位类别ID 仓库的类型,即普通仓、委托代销仓等类型,下面会详细说明,与
R com_Systype表中FClassid=505的记录的FSysTypeID值相对应
FBr INTEGE
R
分支机构信息 与t_SystemProfile表中FCategory=’com’且FKey=’BrID’的Fvalue值相等
FGroupID INTEGE
R
仓位组ID
3、相关说明:
仓库分为很多种类型,分别为普通仓位、锁库、其它、委托代销仓、分期收款仓、受托代销仓,分
期收款仓和零售仓。仓库又有实仓和虚仓之分。其中普通仓位,受托代销仓、锁库和其它这四种类型的仓
库为实仓;委托代销仓、分期收款仓,分期收款仓这四种类型的仓库为虚仓;至于零售仓,这是为“售价数
量核算法”成本计算方法而设计的仓库类型。
仓库资料涉及到的数据表有两个,表名分别为 t_Item 和 COM_Stock。在 t_Item 表中,字段
FitemClassID 值为 5 的所有记录,都表示为仓库资料的记录;在 COM_Stock 表中,所有的记录都是最明细
仓库的记录,这个表中的字段比较简单,主要的是 FTypeID 字段,它表示的是仓库的类型(值为 11 表示是
普通仓位,12 为委托代销仓,13 为受托代销仓,14 为分期收款仓,15 为锁库,16 为代管物资仓库,17 为
其它仓,18 为零售仓)。t_Item 和 COM_Stock 两表是依据 FitemID 的值进行关联的,且 COM_Stock 表中的
记录与 t_Item 表中 FItemClassID 字段值为 5、FDetail 字段值为 1 的记录数相等。
供应商资料
1、处理流程:
供应商资料存放在基础资料表 t_Item 和供应商资料表 COM_Supplier 中
新增供应商资料时,系统先从种子表 t_identity 取得基础资料表 t_Item 的 FitemID 内码,保存时,系
统分别往基础资料表 t_Item、供应商资料表 COM_Supplier、基础资料权限表 t_ItemRight、基础资料相关属
性表 t_BaseProperty 四个表中插入数据。
在 t_Item 中,其中 fitemclassid=8 表示是客户数据,Fdetail=1 表示明细项目,Fdetail=0 表示非明细
用于项目分组,Flevel 表示项目的级数,FparentID 表示父级代码(只有一级项目的 FParentID=0,多级的
FParentID 等于其上级的 fitemid 值)。
在 t_Item 中 Fdetail=1 且 FItemClassID=8 的记录才会匹配 COM_Supplier 里。
2、相关的数据结构:
主表 1:t_Item(基础资料表):FItemClassID=8 为仓库数据(见客户资料主表 1)
主表 2:COM_Supplier(供应商资料表):在表 t_Item 的 Fdetail=1 且 FItemClassID=8 的记录才会
匹配到 t_Supplier 里。
字段名 类型 描述 说明
FItemID INTEGER 供应商内码 与t_Item表的Fdetail=1且FItemClassID=1的记录的FItemID值相对应
FParentID INTEGER 上级项目内码 系统自动产生
FBrNo STRING 分公司代码 与t_SystemProfile表中FCategory=’com’且FKey=’BrID’的Fvalue值相等
FStatus INTEGER 状态 1072为使用,1073为未使,1074为冻结
FAPAccountID INTEGER 应付账款科目代码 手工录入
FPreAcctID INTEGER 预收账款科目代码 手工录入
FCreditAmount FLOAT 信用金额 手工录入
FCreditDays INTEGER 信用期限 手工录入
FStockIDAssignee INTEGER 受托代销仓内码 与t_Item表中FitemClassID=5且Fdetail=1的记录的FItemID值相对应
FLicAndPermit INTEGER 是否需要证照管理 0为不需要,1为需要
FAlarmPeriod INTEGER 预警提前期 手工录入
FDepartment INTEGER 分管部门 来源于t_Item表中FitemClassID=2且Fdetail=1的记录的FItemID字段值
FEmployee INTEGER 专营业务员 来源于t_Item表中FitemClassID=3且Fdetail=1的记录的FItemID字段值
FlastReceiveDate DATETI
ME
最后付款日期 应付系统最后一笔付款单上提取的单据日期
FlastRPAmount FLOAT 最后付款金额 应付系统最后一笔付款单上提取的金额
FlastTradeDate DATETI
ME
最后交易日期 应付系统最后一笔采购发票上提取的开票日期
FlastTradeAmount FLOAT 最后交易金额 应付系统最后一笔采购单据上提取的金额
…… …… …… ……
3、相关说明:
供应商资料主要是标识和描述每个供应商及其详细信息,并对供应商进行集中、分级管理。供应商
资料信息分基本资料与应付资料两个标签页。基本资料标签页主要用户保存供应商的一些基本信息,如名
称、地址等;应付资料标签页保存的是在应付系统中需要使用到的一些供应商信息。
供应商资料涉及到的数据表有两个,表名分别为 t_Item 和 COM_Supplier。在 t_Item 表中,字段
FitemClassID 值为 8 的所有记录,都表示为供应商资料的记录;在 COM_Supplier 表中,所有的记录都是最
明细供应商的记录,各个字段的含义可以参考字段描述表 t_FieldDescription 表中 FTableID 字段值为 1507
的所有记录信息,需要注意一下 Fstatus 这个字段,一般此字段的值为 1072,如果某个供应不是这个值,在
录入单据按 F7 选供应商时,此供应商的记录就不能显示出来;t_Item 和 COM_Supplier 两表是依据 FitemID
的值进行关联的,且 COM_Supplier 表中的记录与 t_Item 表中 FItemClassID 字段值为 8、FDetail 字段值为 1
的记录数相等。
商品辅助属性
1、处理流程:
一、增加基本类别和基本类别具体记录
新增商品辅助属性基本类别时,系统先取种子表 t_identity 中 Fname=t_ItemClass 的记录的 FNext 字
段值的值做为核算项目类别表 t_ItemClass 的 FitemClassID 字段的值。在保存数据时,系统先检查在
t_ItemClass 表中是否存在与录入的代码和名称相同的数据存在,如果存在,则给出提示,如果不存在,则
在 t_ItemClass 表中插入一条记录;然后在核算项目横表 t_ItemDetail 中增加一列,列名为“F”+“FitemClassID
的值”;再新建一个表,表名为 t_Item_ “FitemClassID 的值”,最后还会在核算项目附表信息描述表
t_ItemPropDesc 表中插入一条或几条记录(记录数取决于新增的基本类别有多少个自定义属性)。
举例说明:新增一个“颜色”的基本类别时辅助属性,在这个基本类别中只有一个自定义属性,系统
先取种子表 t_identity 中 Fname=t_ItemClass 的记录的 FNext 字段值的值做为核算项目类别表 t_ItemClass
的 FitemClassID 字段的值,假设为 3004;然后在 t_ItemClass 表中增加一条记录,其 FType 字段为值为 3,
FitemClassID 字段的值为 3004;然后系统在核算项目横表 t_ItemDetail 中增加一列,列名为 F3004;然后新
建一个 t_Item_3004 的表;最后在 t_ItemPropDesc 表中增加 FitemClassID 字段值为 3004 的记录。
新增基本类别的具体记录时,系统先取种子表 t_identity 中 Fname=t_Item 的记录的 FNext 字段值的
值做为基础资料表 t_Item 的 FitemID 字段的值。在保存数据时,系统先检查在 t_Item 表中是否存在与录入
的代码和名称相同的数据存在,如果存在,则给出提示,如果不存在,则分别在 t_Item 表和 t_Item_
“FitemClassID 的值”表中插入记录。
二、增加组合类别和组合类别具体记录
新增组合类别和新增基本类别大部分是一致的,只不过插入 t_ItemClass 表中的 F ype 字段为值为 4;
主要的区别在于新增组合类别具体记录时,有一些区别,例如:当再新增“颜色加尺寸”组合类别的具体记
录时,如“黑色 14 英寸”(其中黑色表示“颜色”基本类别的值,“14 英寸”表示“尺寸”基本类别的值)这条记
录,系统先分别检查“颜色”和“尺寸”基本类别中没有“黑色”和“14 英寸”的记录,如果哪条记录没有,则系
统会自动在哪个类别里增加这条记录,即在 t_Item 表中增加记录,然后再在 t_Item 表中增加一条 FName 值
为“黑色 14 英寸”的组合类别的记录。
三、商品怎样对应辅助属性类别
当某个商品选择了对应的辅助属性类别后,系统更新商品表 com_Item 表中的 FauxClassID 字段的值
为 t_ItemClass 表中的 FItemClassID 字段相应的值,在基础资料的商品管理中,商品就可以对应这个辅助属
性类别中的所有记录,对应完后进行保存时,系统会往 COM_ItemAuxProp 表中记录插入相应的辅助属性类
别具体记录的内码,即 t_Item 表中相应的 FItemID 字段的值;在录入单据时,就可以按 F7 键选择对应的辅
助属性,存放在单据的数据库表中的 FauxPropID 字段中,其数据来源于 t_Item 表中的 FItemID 字段值。
2、相关的数据结构:
主表 1:t_ItemClass(核算项目类别表)表:FType=3 或 4 的记录为辅助属性类别记录
字段名 类型 描述 说明
FItemClassID INTEGE
R
类别内码 在10之内是系统内置的,大于1000则可能是自定义的核算项目类别
FNumber STRING 类别编码 手工录入
FName STRING 类别名称 手工录入
FSQLTableName STRING 类别表名 类别对应的明细表名,此表名为t_Item_“FItemClassid值”
FImport INTEGE
R
外部引入 0-不是,1-是外部引入
FBrNo STRING 分支机构信息 与t_SystemProfile表中FCategory=’com’且FKey=’BrID’的Fvalue值相等
FType INTEGE
R
类型 3为辅助属性基本类别,4为辅助属性组合类别
FGRType INTEGE
R
集团控制类别
t_ItemClass 表辅助属性记录:
t_Item_3001 表记录: t_Item_3002 表记录: t_Item_3001 表记录:
t_Item 表中辅助属性记录:
t_ItemPropDesc 表中自定义属性记录:
从上面的各个表记录可以看出, t_ItemClass 表中的记录为辅助属性类别记录, t_Item_3001、
t_Item_3002、t_Item_3003 与 t_Item 表中的记录为辅助属性类别的具体记录,t_ItemPropDesc 表中的记录为
辅助属性类别自定义属性记录数。在 t_ItemClass 表中 Ftype 字段值为 3 的记录为辅助属性基本类别,值为
4 的记录为辅助属性组合类别;t_ItemClass、t_Item、t_ItemPropDesc 这三表之间以 FItemClassID 字段相关
联;t_Item_3001、t_Item_3002、t_Item_3003 与 t_Item 表之间以 FItemID 字段相关联;在 t_ItemPropDesc 表
中,FItemClassID 字段值为 3003 的记录,其 FSQLColumnName 字段值为“F_101”和“F_102”,则在 t_Item_3003
表中就有“F_101”和“F_102”这两列。
3、相关说明:
商品辅助属性有基本类和组合类之分,基本类是指单一的辅助属性,如颜色、尺寸等,组合类则由
两个或两个以上的基本类组成,新增组合类前必须先进行相应基本类的新增。
商品设置了辅助属性管理,在系统中有很多对辅助属性进行统计的业务报表,在成本计算时,系统
不考滤商品的辅助属性设置。
商品结构清单
1、处理流程:
商品结构清单存放在商品结构清单主表 COM_BOM 和商品结构清单子表 COM_BOM_Child 中。
新增商品结构清单时,系统先往商品结构清单主表 COM_BOM 表中插入组合商品的记录,再往商品
结构清单子表 COM_BOM_Child 插入子商品的记录。
2、相关的数据结构:
主表 1:COM_BOM(商品结构清单主表):
字段名 类型 描述 说明
FBOMID INTEGE
R
组合商品内码 系统自动产生
FBOMNumber STRING 组合商品编码 手工录入
FBOMName STRING 组合商品名称 手工录入
FItemID INTEGE
R
商品内码 来源于t_Item表中的FItemID字段
FAuxPropID INTEGE
R
辅助属性内码 来源于COM_ItemAuxProp表的FAuxPropID字段
FMeasureUnitID INTEGE
R
计量单位内码 来源于t_MeasureUnit的FmeasureUnitID字段
FStatus INTEGE
R
状态 1使用,0不使用
主表 2:COM_BOM_Child(商品结构清单子表):
字段名 类型 描述 说明
FBOMID INTEGE
R
组合商品内码 系统自动产生
FBomEntryID INTEGE 商品分录内码 系统自动产生
R
FReplaceClassID INTEGE
R
可替换类别内码 来源于COM_SysType表中FClassID字段值为480的记录的FSysTypeID
值
FItemID INTEGE
R
子商品内码 来源于t_Item表中的FItemID字段
FAuxPropID INTEGE
R
子商品辅助属性内码 来源于COM_ItemAuxProp表的FAuxPropID字段
FMeasureUnitID INTEGE
R
子商品计量单位内码 来源于t_MeasureUnit的FmeasureUnitID字段
FQty FLOAT 消耗数量 手工录入
FScrap FLOAT 损耗率 手工录入
FRemark STRING 备注 手工录入
3、相关说明:
商品结构清单是为处理组合业务而进行的商品结构设置,且在发生组合业务时系统能自动根据商品
结构进行组合件的拆卸和零部件的组合。注意商品结构清单只处理商品属性为组合类的商品。
在商品结构清单中的子项中有一个“可替换商品类别”,如果增加一个“可替换商品类别”,表示这个
子项商品是可以由其它商品来代替,代替商品只能是设置为“可替换商品类别”的商品。“可替换商品类别”可
以在辅助资料管理中进行录入。
商品结构清单及到 COM_BOM 和 COM_BOM_Child 表两表之间通过 FBomID 字段相关联。
商品价格管理
1、处理流程:
基本价格表、商品特价表分别存放在基本价格表 COM_PriceBase、特价主表 COM_PriceSpec、特价
分录表 COM_PriceSpecEntry、价格折扣密码控制表 COM_PriceDiscountPassControl 和价格折扣率设置表
Com_PriceDiscountSet 这五个表中。
一、基本价格表:
在进行设置基本价格表时,首先要进行价格类别的设置,价格类别的设置在辅助资料管理中进行录
入。新增价格类别时,系统主要是往系统预设类别表 COM_SysType 表中插入 FClassID 值为 400 的记录,
再往基础资料相关属性表 t_BaseProperty 中插入记录。
进入基本价格表,涉及的主要数据表为基本价格表 COM_PriceBase,进行刷新时,刷新的 SQL 语
句如下:
Select ,,,,,,
,,,
From t_Item tm Left Join COM_PriceBase tp On = And =1
And In (918,938,943),COM_Item tcm
Where =1 And =
Order by ,
当按照价格类别增加或更改了商品的基本价格后,进行保存时,如果是新增某个商品的基本价,则
系统只是往 COM_PriceBase 表中插入记录;如果是更新某个商品的基本价格,则系统先把原先的记录删除,
再把更新的记录插回。
二、商品特价表:
进入商品特价序时薄时,系统是选取特价主表 COM_PriceSpec 表与特价分录表
COM_PriceSpecEntry 这两表中的记录。当新增一个特价时,系统先从种子表 t_identity 中 Fname=
‘COM_PriceSpec’的记录的 FNext 字段值的值做为商品特价主表 COM_PriceSpec 的 FID 字段的值,再分别
往特价主表 COM_PriceSpec、特价分录表 COM_PriceSpecEntry、价格折扣密码控制表
COM_PriceDiscountPassControl、价格折扣率设置表 Com_PriceDiscountSet 这四张表中插入记录。
2、相关的数据结构:
主表 1:COM_PriceBase(商品基本价格表):
字段名 类型 描述 说明
FItemID INTEGE
R
商品内码 来源于t_Item表中FItemClassID=4的记录的FItemID字段值
FAuxPropID
INTEGE
R
辅助属性内码 来源于COM_ItemAuxProp表的FAuxPropID字段值
FPriceTypeID INTEGE
R
价格类别内码 来源于com_Systype表中FClassid=400的记录的FSysTypeID字段值
FCurrencyID INTEGE
R
币种内码 来源于t_Currency表中的FcurrencyID字段值
FPrice FLOAT 价格 手工录入
FLowPrice FLOAT 最低价格 手工录入
主表 2:COM_PriceSpec(商品特价主表):
字段名 类型 描述 说明
FID INTEGE
R
商品特价内码 来源种子表t_identity中Fname= COM_PriceSpec的记录的FNext字段值
FItemTypeID
INTEGE
R
组合类别1 1-客户,4-商品,501-客户类别,504-商品类别
FSysTypeID INTEGE
R
组合类别2 3-业务员,4-商品,503-职员类别,504-商品类别
FCurrencyID INTEGE
R
币种内码 来源于t_Currency表中的FcurrencyID字段值
FSerialID STRING 特价编号 手工录入
FBegDate DATETI
ME
特价开始日期 手工录入
FEndDate DATETI
ME
特价结束日期 手工录入
FPeriodType INTEGE
R
周期类型 0-未设周期,1-按天,2-按周,3-按月
FWeek STRING 周期执行的星期 手工录入
FMonth STRING 周期执行的月份 手工录入
FDayPerMonth INTEGE
R
每月的第几天 手工录入
FSerialWeekPerMonth INTEGE
R
每月的第几周 手工录入
FWeekDayPerMonth INTEGE
R
每月的第几周的
第几天
手工录入
FBeginTime DATETI
ME
周期开始时间 手工录入
FEndTime DATETI
ME
周期结束时间 手工录入
FLowPrice INTEGE
R
最低价格 手工录入
主表 3:COM_PriceSpecEntry(商品特价分录表):
字段名 类型 描述 说明
FID INTEGE
R
商品特价内码 对应COM_PriceSpec表的FID
FPriceTypeID
INTEGE
R
价格类别内码 1来源于com_Systype表中FClassid=400的记录的FSysTypeID字段值
FItemID INTEGE
R
商品内码 来源于t_Item表中FItemClassID=4的记录的FItemID字段值
FAuxPropID INTEGE 辅助属性内码 来源于COM_ItemAuxProp表的FAuxPropID字段值
R
FRelatedID INTEGE
R
业务员内码 来源于t_Item表中FItemClassID=3的记录的FItemID字段值
FPrice FLOAT 价格 手工录入
FDiscountRate FLOAT 商业折扣率 手工录入
主表 4:COM_PriceDiscountPassControl(价格折扣密码控制表):
字段名 类型 描述 说明
FID INTEGE
R
商品特价内码 对应COM_PriceSpec表的FID字段值
FEntryID
INTEGE
R
分录号 系统自动产生
FPriceTypeID
INTEGE
R
价格类别内码 对应COM_PriceSpecEntry表的FPriceTypeID字段值
FItemID INTEGE
R
商品内码 对应COM_PriceSpecEntry表的的FItemID字段值
FAuxPropID INTEGE
R
辅助属性内码 对应COM_PriceSpecEntry表的FAuxPropID字段值
FRelatedID INTEGE
R
业务员内码 对应COM_PriceSpecEntry表的FRelatedID字段值
FLower FLOAT 折扣率下限 手工录入
FUpper FLOAT 折扣率上限 手工录入
FSID STRING 密码 手工录入
主表 5:Com_PriceDiscountSet(价格折扣率设置表):
字段名 类型 描述 说明
FID INTEGE
R
商品特价内码 对应COM_PriceSpec表的FID字段值
FEntryID
INTEGE
R
分录号 系统自动产生
FPriceTypeID
INTEGE
R
价格类别内码 对应COM_PriceSpecEntry表的FPriceTypeID字段值
FItemID INTEGE
R
商品内码 对应COM_PriceSpecEntry表的的FItemID字段值
FAuxPropID INTEGE
R
辅助属性内码 对应COM_PriceSpecEntry表的FAuxPropID字段值
FRelatedID INTEGE
R
业务员内码 对应COM_PriceSpecEntry表的FRelatedID字段值
FLowerQuantity FLOAT 数量下限 手工录入
FupperQuantity FLOAT 数量上限 手工录入
Flogical INTEGE
R
逻辑关系 0表示“而且”,1表示“或者”
FlowerAmount FLOAT 金额下限 手工录入
FupperAmount FLOAT 金额上限 手工录入
FdiscountRate FLOAT 折扣率 手工录入
3、相关说明:
如果某个商品没有设置特价,但是设置了基本价格,则在做销售单据时,以基本价格为依据。如果
连基本价格都没有设置,则取商品资料中的销售价格。
如果在辅助资料中设置了价格类别,例如:“零售价”和“批发价”,这时在商品基本价格表中,就会
出现“零售价”、“最低零售价”、“批发价”、“最低批发价”四个价格类别;设置好每个商品对应的“零售价”、“最
低零售价”、“批发价”、“最低批发价”的数据后,在做销售单据,输入一个商品时,系统是取这个商品在基本
价格表中最大的价格。
商品特价分为业务员(业务员类别)加商品(商品类别)特价和客户(客户类别)加商品(商品类
别)特价,在输入特价时,只能保存一种价格类别的数据,取商品价格的规则如下:先按“选项”中设置的
是取客户的价格还是取业务员的价格,如果客户价格和业务员价格存在许多个特价,则以特价的开始日期
与结束日期为依据,取特价编号最大的那个特价,然后再取商品对应的价格不为零的那个价格类别的价格。
商品存量管理
1、处理流程:
商品存量数据存放在安全库存存量表 COM_StockStorage 这个表中。
进入存量管理界面,系统分别从 t_Item、COM_Item、安全库存存量表 COM_StockStorage 三个表中
过滤出商品在每个仓库中的最高存量和最低存量。
当设置好各个商品的存量后,进行保存时,系统先删除这个商品原先的记录,再把刚刚录入的记录
插入安全库存存量表 COM_StockStorage 这个表中。
当点击菜单中的检查按钮,进行库存检查时,系统调用 sp_GetOverFlowStorage 这个存储过程,用
来计算出相应商的即时库存,来和商品设置的最高存量和最底存量进行比较,得出库存差额。
2、相关的数据结构:
主表 1:COM_StockStorage(安全库存存量表):
字段名 类型 描述 说明
FItemID INTEGE
R
商品内码 来源于t_Item表中FItemClassID=4的记录的FItemID字段值
FAuxPropID
INTEGE
R
辅助属性内码 来源于COM_ItemAuxProp表的FAuxPropID字段值
FStockID INTEGE
R
仓位内码 来源于t_Item表中FItemClassID=5的记录的FItemID字段值
FMaxStorage FLOAT 最高库存量 来源于t_Currency表中的FcurrencyID字段值
FMinStorage FLOAT 最低库存量 手工录入
FCheck INTEGE
R
否进行检查 0表示不检查,1表示检查
3、相关说明:
商品存量管理主要是依据某个商品在哪些个仓库中的最高存量和最底存量与目前的即时存量进行
比较,再由用户来确定是否需要进行采购或调拨,且只有当即时库存小于最低存量时,系统才可以让用户
来确定是要做调拨单还是做采购订单。
在“存量管理”的“系统”菜单下,有一个“进入采购系统时提示”的选项,把这个选项打上勾后,每次
进入采购系统时,系统都会弹出一个查看异常库存的界面供查看。此选项对应于系统参数表 t_SystemProfile
中的 FcateGory=’com’ and Fkey=’ AutoShowStockCheck’的记录,其 FValue 值为 1 表示提示,为 0 表示不提
示。
商品保质期管理
1、处理流程:
进入商品保质期界面,系统显示的商品,是过滤 COM_Item 表中 FBatch 和 FKeep 两个字段值都为
1 的记录,也就是说某个商品要启用保质期管理,首先要保证此商品是进行批次管理和保质期管理的商品,
在商品保质期管理界面才能看到这个商品。
设置好商品的提前期后,进行保存时,系统是更改商品资料表 COM_Item 表中的 FPreDeadLine 字
段值。
2、相关的数据结构:
主表 1:COM_Item(商品资料表):--------见“ 节主表 2”。
3、相关说明:
在品保质期管理界面,有一个“预警与提示”的开关按钮,当选中此按钮后,每次进入仓存系统时,
系统会自动把已经过期的或在提前期内商品显示出来。
在仓存系统中有一张商品保质期清单报表以供查看。
设置好各个商品的保质期管理后,在做出入库单时,系统都要求要输入商品的到期日,而系统便是
以数据库服务器当前的日期与到期日作比较,依据先入库先发出的原则,计算出每一批商品的过期天数,
没有过期商品不显示出来。
预警提示时的 SQL 语句:
------------------------------1、从收发单据表 COM_Inventory、COM_InventoryEntry,历史批次表
COM_BatchHist,保质期库龄记录表 COM_StockKeep 中提取批次不为空(FBatchNo<>'')且到期日不为空
(FDeadLine Is Not Null)的数据插入到临时表#tempMwu 中。----------------------------------
SELECT ,, AS FQty, AS FStockID,
Into #tempMwu
FROM COM_Inventory t1 Join COM_InventoryEntry t2 On = AND > 0
Where <>'' And Is Not Null
Union All
SELECT ,, * - 1 AS FQty, AS FStockID,
FROM COM_Inventory t1 Join COM_InventoryEntry t2 On = AND > 0
Where <>'' And Is Not Null
Union All
Select ,, As FQty,,
From COM_BatchHist ch Join com_StockKeep cs On = And
=
Where FYear=0 And FPeriod=0 And <>'' And Is not Null
---------------2、按先进来先发出原则,从临时表#tempMwu 中提取每笔批次中到期日最小
(Min()的数据,再与数据库服务器中当前日期进行比较:当到期日大于当前日期时,
则得出过期天数(datediff(dd,Min(),getdate())),系统显示此数据;当到期日小于当前日
期,但是在提前期内(datediff(dd, getdate(), ) <= ),系统也显示此数据;
当到期日既小于当前日期,又不在提前期内,则系统就不显示此数据。----------------------------
Select ,,Isnull(,'') FModel,, FSTock,
Min() FDeadLine,datediff(dd, Min(), getdate()) As FPostDays
From #tempMwu t1 Join
(Select FItemId,FBatchNo,FSTockId,Sum(FQty) FQty From #tempMwu Group By
FItemId,FBatchNo,FSTockId) t
On = And = And = And >0
Join Com_Item t2 On = And =1 And =1
Join t_Item t3 On = And =4
Join t_Item t4 On = And =5
Where datediff(dd, getdate(), ) <=
Group By ,,,,
商品批次管理
1、处理流程:
商品批次规则数据存放在批号规则设置表 Com_BatchNoRule 和批号规则流水号表 Com_BatchSerial
这两个表中。
当新增或更改好某商品的批次号的编码规则后,进行保存时,系统先删除批号规则设置表
Com_BatchNoRule 和批号规则流水号表 Com_BatchSerial 中此商品原先的数据,再把新增的或更改的数据插
回这两个表中,并更改系统参数表 t_SystemProFile 中 FCategory='COM' And FKey in('BatchManual')的记录
的 FValue 值为 1。
批号规则流水号表 Com_BatchSerial 中的 Fserial 字段的值只有当商品的批次号编码规则为“流水号”
时,在做入库单据时,系统就会依据单据上商品的批次号的流水号数字自动加 1,做为入库单据下次批次号
的号码。
2、相关的数据结构:
主表 1:Com_BatchNoRule(批号规则设置表):
字段名 类型 描述 说明
FID INTEGE
R
单据ID
FItemID INTEGE
R
商品内码 来源于t_Item表中FItemClassID=4的记录的FItemID字段值
FPropertyID
INTEGE
R
属性
1客户代码,20单据号,22流水号,23单据日期,24自定义,25单据行号,2
部门代码,3业务员代码,4商品代码,5仓库代码,8供应商代码
FUseShortNumber
INTEGE
R
是否使用短代码 0表示使用长代码,1表示使用短代码
FFormatDate STRING 格式 FpropertyID属性为“单据日期”时选的格式,其它属性都为空字符串
FSelDefine STRING 自定义符 FpropertyID属性为“自定义”时手工录入的格式,其它属性都为空字符串
FWidth INTEGE
R
长度 手工录入
FCharacter STRING 替换符 手工录入
FSubCharacter STRING 补位符 手工录入
主表 2:Com_BatchSerial(批号规则流水号表):
字段名 类型 描述 说明
FItemID INTEGE
R
商品内码 来源于t_Item表中FItemClassID=4的记录的FItemID字段值
FSerial
INTEGE
R
批号 编码规则为“流水号”时,系统自动按流水号数字加1
3、相关说明:
商品批次管理主要作用是设置商品批次号的编码规则。
可以设置每个商品的批次规则,前提条件是此商品在商品资料中一定要设定进行批次管理。
设置好后,在录入单据输入某个商品的数据时,系统会自动按此商品的编码规则取出批次号,如果
在批次管理—编码设置—选项中设置了“可手工改变编码”,则批次号就可以修改,如果没有设置,则系统
不充许修改批次号。
在仓存系统中,有商品批次余额表和批次明细表可供查询。
信用管理
1、处理流程:
信用管理的数据存放在信用额度金额表 COM_CM 和信用额度数量表 COM_CMQty 这两个表中。
新增或更改某客户或某业务员的信用额度后,进行保存时,系统是先删除信用额度金额表 COM_CM
和信用额度数量表 COM_CMQty 这两表中此客户或业务员的相关数据,再删除这两表中信用金额或数量为
零的数据,再把新增的或更改的数据插回这两个表中。
2、相关的数据结构:
主表 1:COM_CM(信用额度金额表):
字段名 类型 描述 说明
FClassId INTEGE
R
类别内码 1表示客户,3表示业务员
FCustomerID INTEGE
R
信用对象内码 来源于t_Item表中FItemClassID=1或3的记录的FItemID字段值
FCreditLevel STRING 信用级次 手工录入,仅作参考作用,没有控制
FCreditAmount FLOAT 信用金额 手工录入
FCreditQty FLOAT 信用合计数量 来源于COM_CMQty表中相对应的所有商品的数量合计
FCreditDays INTEGE
R
信用期限 手工录入
主表 2:COM_CMQty(信用额度数量表):
字段名 类型 描述 说明
FClassId INTEGE
R
类别内码 1表示客户,3表示业务员
FCustomerID INTEGE
R
信用对象内码 与COM_CM表中的FcustomerID字段相对应
FItemID INTEGE
R
商品内码 来源于t_Item表中FItemClassID=4的记录的FItemID字段值
FQty FLOAT 信用数量 手工录入
3、相关说明:
信用管理可以按信用对象分为对客户的信用管理还是对业务员的信用管理,然后是针对哪种单据进
行信用管理控制,是销售订单还是销售出库单还是销售发票(这些都可点“选项”按钮中进行设置)。不管信
用对象是客户还是业务员,都可以设置其对某些商品的信用数量。
如果启用了信用管理(系统参数设置中进行设置,前提条件是一定要启用应收款管理系统),并且
在信用管理的“选项”中选中哪种单据,那么在录入这种单据时,按 F4 可以查出某个客户或业务员的信用额
度情况;在保存单据时,系统调用 SP_CreditManage 存储过程来计算客户或业务员的信用额度和信用天数,
如果对应客户或业务员超出信用额,系统通过信用管理中“选项”中的设置的控制方式给予用户相应的提示。
在销售订单处进行信用额度控制时:应收款信用金额余额=应收款余额+未审核发票金额+未开票销
售订单金额—未审核现销发票金额+销售订单调整数量*单价;应收款信用数量余额=应收款数量余额+未审
核发票数量+未开票销售订单数量—未审核现销发票数量+销售订单调整数量。
在销售发票处进行信用额度控制时:应收款信用金额余额=应收款余额+未审核发票金额—未审核现
销发票金额;应收款信用数量余额=应收款数量余额+未审核发票数量—未审核现销发票数量。
在销售出库单处进行信用额度控制时:应收款信用金额余额=应收款余额+未审核发票金额+未开票
销售出(退)库单金额—未审核现销发票金额;应收款信用数量余额=应收款数量余额+未审核发票数量+未
开票销售出(退)库单数量—未审核现销发票数量。
上面公式中的应收款余额都是指应收系统当前期间的应收款余额—未审核的收款单/预收单/退款单
金额。
供应商供货信息
1、处理流程:
供应商供应信息的数据存放在供货商供货信息表 Com_SupplyEntry 这个表中。
新增某供应商的供货信息时,系统直接往供货商供货信息表 Com_SupplyEntry 插入数据;更改供应
商的代货信息时,系统也是直接更改供货商供货信息表 Com_SupplyEntry 中对应的供应商的数据。
2、相关的数据结构:
主表 1:Com_SupplyEntry(供货商供货信息表):
字段名 类型 描述 说明
FBrNo STRING 分支机构内码 1表示客户,3表示业务员
FSupId INTEGE
R
供应商内码 来源于t_Item表中FItemClassID=8的记录的FItemID字段值
FItemID
INTEGE
R
商品内码 来源于t_Item表中FItemClassID=4的记录的FItemID字段值
FEntryID
INTEGE
R
分录数 系统自动产生
FUnitID INTEGE
R
计量单位内码 来源于t_Measureunit表中FMeasureUnitID字段值
FCyId INTEGE
R
币别内码 来源于t_Currency表中FCurrencyID字段值
FPrice FLOAT 供货商报价 手工录入
FLastPurchasePrice FLOAT 最近采购价格 系统会依据最近的采购订单上的价格回填
Fdiscount FLOAT 折扣率 手工录入
FLeadTime INTEGE
R
采购提前期 手工录入
FDeliveryAdd STRING 交货地点 手工录入
FMinQtyOfPlan FLOAT 最小采购批量 手工录入
FNumberOfSupply STRING 供应商方商品编码 手工录入
FNameOfSupply STRING 供应商方商品名称 手工录入
3、相关说明:
设置发供应商供应信息后,目前只能是采购订单上商品的单价可以更新供应商供货信息中的最近采
购价格,在做采购单据如采购订单、采购发票时,系统还不能提取某个商品对应供应商的价格信息。
供应商供货信息主要应用在销售出库即时毛利率统计表中的销售成本是取自供应商供货信息中的
最近采购价格。
条码管理
1、处理流程:
条形码的数据存放在条码对应表 t_Barcode、条码规则头表 t_BCodeRule、条码规则体表
t_BCodeRuleField 和条码规则对应项目表 t_BCodeItem 这四个表中。
在基础资料的核算项目中增加对应核算项目的条码(如商品的条码)时,系统是直接往条码对应表
t_Barcode 中插入记录。
在新增或修改条码规则时,系统是先删除条码规则头表 t_BCodeRule 和条码规则体表
t_BCodeRuleField 这两表中相关数据,再把新增的或更改的数据插回这两个表中。
2、相关的数据结构:
主表 1:t_Barcode(条码对应表):
字段名 类型 描述 说明
FTypeID INTEGE
R
核算项目类别内码 与t_ItemClass表中FItemClassID字段相对应
FItemID
INTEGE
R
核算项目内码 来源于t_Item表中FItemID字段值
FID
INTEGE
R
分录数 标识列,系统自动产生
FBarCode STRING 条型码 手工录入
FRemark STRING 备注 手工录入
主表 2:t_BCodeRule(条码规则头表)
字段名 类型 描述 说明
FRuleId INTEGE
R
条码规则内码 系统按顺序自动产生
FRuleName STRING 条码规则名称 手工录入
FRuleNumber STRING 条码规则编码 手工录入
FShopInNumber STRING 店内码 手工录入
主表 3:t_BCodeRuleField(条码规则体表)
字段名 类型 描述 说明
FBCodeRuleId INTEGE
R
条码规则内码 与t_BCodeRule表中的FRuleId相对应
FStartPos
INTEGE
R
起始位 手工录入
FEndPos
INTEGE
R
终止位 手工录入
FBCodeItemId INTEGE
R
表示字段 来源于t_BCodeItem表中FBCodeItemId字段值
FPrecision STRING 格式 依据表示字段的内容,由系统自动产生或手工选择
3、相关说明:
K/3 商业中的条形码应用方案有两种,一种是条码等同于代码,通过条码输入设备可以直接扫描输
入该条码,系统转换条码为商品代码,系统认为这种条码不需要解析,不需要解析的条码,只要将条形码
设置在商品属性的条形码标签中去即可,可以多个条码对应一个商品;另一种是比较高级的应用方式,条
码包含较多的信息,如商品的代码、保质期、批号、金额等信息,可以通过扫描条码将这多种信息一次性
录入到单据,这种情况下的条码需要解析,需要解析的条码,不但要将条形码设置在商品属性的条形码标
签中去,还必须设置条形码规则并且将条形码规则与单据进行关联。具体的条码设置见操作手册,需要注
意的是,不需要解析的条码,在录入单据时,只有光标放在商品代码这个地方,扫描或手工录入条码,系
统才会转换为商品代码;需要解析的条码,在录入单据时,不管光标放在哪个地方,扫描或手工录入条码
后,系统都可以解析为商品代码和其他的信息。
系统设置
系统参数:
系统设置中的参数全部都放在 t_systemprofile 这个数据表中,在此只讲几个比较重要的系统参数:
1、 是否允许负结存参数:FcateGory=’COM’ and Fkey=’ AllowNegative’,FValue=0 表示不充许负结存,1
表示充许。
2、 是否使用收货通知单:FcateGory=’COM’ and Fkey=’ Requisition_In’,FValue=0 表示不使用,1 表示使
用。
3、 是否使用发货通知单:FcateGory=’COM’ and Fkey=’ Requisition_Out’,FValue=0 表示不使用,1 表示使
用。
4、 自动分配暂估差额:FcateGory=’COM’ and Fkey=’ AutoEvaluateAdjust’,FValue=0 表示不分配,1 表示
分配。
5、 单据号重复时是否继续保存:FcateGory=’COM’ and Fkey=’ SaveBill’,FValue=0 表示不保存,1 表示保
存。
6、 应收应付系统未启用不充许保存发票:FcateGory=’ ARAP’ and Fkey=’ FRaiseError’,FValue=0 表示不充
许保存,1 表示充许保存。
7、 启用信用额度管理:FcateGory=’COM’ and Fkey=’ CMNeed’,FValue=0 表示不启用,1 表示启用。
8、 单边调拨给出提示:FcateGory=’COM’ and Fkey=’ AlertSingleStorage’,FValue=0 表示不提示,1 表示提
示。
9、 充许反核销生成凭证的单据:FcateGory=’COM’ and Fkey=’ UnCavVoucherBill’,FValue=0 表示不充许,
1 表示充许。
10、 在单据中显示可发数量:FcateGory=’COM’ and Fkey=’ StockAvail’,FValue=0 表示不显示,1 表示显
示。
11、 审核和制单不能同为一人:FcateGory=’COM’ and Fkey=’ IsCheck’,FValue=0 表示不能同为一人,1 表
示能。
12、 只能修改本人录入的单据:FcateGory=’COM’ and Fkey=’ ModifySelfBill’,FValue=0 表示不能修改,1
表示能修改。
13、 审核和反审核必须是同一人:FcateGory=’COM’ and Fkey=’ SameOfAudit’,FValue=0 表示不是,1 表
示是。
14、 单据更新后立即刷新序时薄:FcateGory=’COM’ and Fkey=’ ImmediatelyRefresh’,FValue=0 表示不刷
新,1 表示立即刷新。
15、 自动填补单据断号:FcateGory=’COM’ and Fkey=’ KeepNumberRun’,FValue=0 表示不自动填补,1 表
示自动填补。
16、 当前会计年度:FcateGory=’COM’ and Fkey=’CurrentYear’,FValue 值表示当前会计年度。
17、 当前会计期间:FcateGory=’COM’ and Fkey=’ CurrentPeriod’,FValue 值表示当前会计期间。
18、 启用年度:FcateGory=’COM’ and Fkey=’StartYear’ ,FValue 值表示启会计年度。
19、 启用期间:FcateGory=’COM’ and Fkey=’StartPeriod’, FValue 值表示启用会计期间。
20、 当前业务年度:FcateGory=’COM’ and Fkey=’ CurBusiYear’, FValue 值表示当前业务年度。
21、 当前业务期:FcateGory=’COM’ and Fkey=’ CurBusiPeriod’, FValue 值表示当前业务期间。
22、 组仓间按成本价调拨:FcateGory=’COM’ and Fkey=’
23、 成本调整单是否参与本期计算:FcateGory=’COM’ and Fkey=’ AdjustForCost’ ,FValue=0 表示不是,1
表示是。
24、 是否自动合并异常批次:FcateGory=’COM’ and Fkey=’ AutoBatch’ ,FValue=0 表示不是,1 表示是。
25、 成本结转方式:FcateGory=’COM’ and Fkey=’ CalcCost’ ,FValue=0 表示总仓结转,1 表示分仓结转,
2 表示分组结转。
26、 暂估处理方式:FcateGory=’COM’ and Fkey=’ EvaluateMethod’ , FValue=0 表示差额调整,1 表示单
到冲回。
27、 是否进行保质期预警:FcateGory=’COM’ and Fkey=’ PreDeadLine’,FValue=0 表示不是,1 表示是。
28、 结帐控制模块:FcateGory=’COM’ and Fkey=’ ControlModule’, FValue=0 表示采购系统,1 表示销售
系统,2 表示仓存系统,3 表示核算系统。
流程控制参数:
流程控制参数主要是存放在 Com_Flowctl 这个表中,数据表结构如下图:
字段名 类型 描述 说明
FDesID STRING 需控制的单据模板内码 与COM_Screen表中的FScreenID相对应
FsrcID STRING 选择流程的单据模板内码
与COM_Screen表中的FScreenID相对应,此字段如果为0则表示
流程无限制
Fselected
INTEGE
R
是否选择 0表示不选择,1表示选择
FPreDefine INTEGE
R
表示字段
在此表中,以 FDesID 字段的值表示需控制的单据模板内码,如采购入库单在此表中有三条记录,这三
条记录中 FDesID 字段为“010200”,对应的 FsrcID 字段值表示供采购入库单选择的流程来源单据的模板内码,
有“010100”、“010500”和 0,分别表示来源于“采购订单”、“收货通知单”和无流程限制。我们流程控制只控制了四
种单据,但是通过往此表中插入相应的记录还可以控制其他的单据如“采购发票”的流程设计。
2.初始化
初始数据录入
1、界面处理流程:
采用加权平均法、移动平均法计价的物料:不进行批次管理,在“初始数据录入”界面中对应的商品
结存数量和结存金额为白颜色,可直接录入;进行批次管理,在“初始数据录入”界面中对应的商品结存数
量或结存金额为淡绿颜色,需双击鼠标才能进入录入数据状态,直接录入结存数量、金额和批次即可;如
果还带了保质期管理,则还需要录入到期日期。
采用先进先出法、后进先出法计价的物料:在“初始数据录入”界面中对应的商品结存数量或结存金
额为淡绿颜色,需双击鼠标才能进入录入数据状态,需要录入数量、金额和收入日期。如果采用了批次管
理或保质期管理,则还需要录入批次或到期日期,如果两者都采用了,那么两者都要录入。
分批认定法计价:在“初始数据录入”界面中对应的商品结存数量或结存金额为淡绿颜色,需双击鼠
标才能进入录入数据状态,需要录入数量、金额和批次。如果采用了保质期管理,则还需要录入到期日期。
初始数据录入时是分仓库来录入的,在“初始化数据录入”界面录入数据,选择好某个最明细的仓库,
直接录入相应商品的初始数据即可。为了便于委托代销和分期收款业务信息的统计,委托代销和分期收款
业务的初始数据不从“初始化数据录入”界面录入,而是在物流管理—销售管理—委托代销出库和分期收款
出库中录入初始的未结算的委托代销单据和分期收款单据,初始单据的日期应早于帐套启用日期,否则不
能统计进入初始化数据中;初始单据录入完毕后,在“初始化数据录入”界面点“提取数据”按钮,就可以把委
托代销和分期收款业务的初始数据提取到相应的委托代销仓库和分期收款仓库中。
2、数据处理流程:
初始数据录入时,涉及的数据表主要有下面这些:t_Item、COM_Item、COM_ItemAuxProp、Com_Stock、
COM_Balance、COM_Batchhist、COM_StockKeep、COM_Balance_Settle、Com_Balance_Assign。
进入初始化数据录入界面,选中一个仓库时,系统需要选取这几个表或视图的数据:
Select FTypeID from COM_Stock where FItemID=70------------选取所在仓库的类别。
SELECT FKey,FCategory,FValue FROM t_SystemProfile WHERE FCategory ='GL' OR
FCategory='COM' OR FCategory='General' Or (FCategory='ARAP' And FKey='FRaiseError')--------选取系统参
数表中的相关数据。
SELECT FSQLTableName FROM t_ItemClass WHERE FItemClassID =4----------选取商品资料类别对
应的表名。
SELECT * FROM vwCommodity ORDER BY COMItemNumber-------从 vwCommodity 视图中选取商
品资料。
SELECT * FROM vwCommodityAuxProp ORDER BY
ComItemNumber,AuxPropNumber-------------------------从 vwCommodityAuxProp 视图中选取辅助资料。
SELECT vwInitBal.*,FAmtSettle=0 FROM vwInitBal WHERE =70 ORDER BY
ComItemNumber,AuxPropNumber--------------------从 vwInitBal 视图中选取初始化时录入的数据。
保存所录入的数据时,当计价方法是加权平法或移动平均法的商品时,系统直接把数据保存在
COM_Balance 表中,当计价方法是先进先出法、后进先出法和分批认定法的商品时,在 以前的版本,
系统分别往 COM_Batchhist 和 COM_Balance 两个表中插入数据。在 以后的版本中,系统分别往
COM_StockKeep、COM_Batchhist 和 COM_Balance 这三个表中插入数据。
当录入零售仓的初始数据时,系统要求录入进销差价,在保存数据时,系统还会往
COM_Balance_Settle 插入差价数据。
3、相关的数据结构:
主表 1:COM_Balance(商品余额表):
字段名 类型 描述 说明
FYear INTEGE
R
年份
FPeriod
INTEGE
R
期间
年份和期间都为0的记录表示是初始化时录入的数据。
FItemID
INTEGE
R
商品内码 来源于COM_Item表中FItemID字段值。
FAuxPropID INTEGE
R
辅助属性内码
来源于COM_ItemAuxProp表的FAuxPropID字段值。
FStockID INTEGE
R
仓位内码 仓库内码为0表示是所有仓库汇总数据。
FQtyBeg FLOAT 期初数量
FAmtBeg FLOAT 期初金额
FQtyRev FLOAT 本期收入数量
FAmtRev FLOAT 本期收入金额
FQtySend FLOAT 本期发出数量
FAmtSend FLOAT 本期发出金额
FQtyYtdRev FLOAT 累计收入数量
FAmtYtdRev FLOAT 累计收入金额
FQtyYtdSend FLOAT 累计发出数量
FAmtYtdSend FLOAT 累计发出金额
FQtyBal FLOAT 期末数量
FAmtBal FLOAT 期末金额
FAmtDiffBeg FLOAT 期初金额差价 只是对零售仓才有数据
FAmtDiffBal FLOAT 期末金额差价 只是对零售仓才有数据
主表 2:COM_BatchHist(存货历史批次表):
字段名 类型 描述 说明
FYear INTEGE
R
年份
FPeriod
INTEGE
R
期间
年份和期间都为0的记录表示是初始化时录入的数据。
FItemID
INTEGE
R
商品内码 来源于COM_Item表中FItemID字段值。
FAuxPropID INTEGE
R
辅助属性内码
来源于COM_ItemAuxProp表的FAuxPropID字段值。
FStockID INTEGE
R
仓位内码 来源于COM_Stock表中FItemID字段值。
FBatchNO STRING 批次号
FDate DATETI
ME
收入日期
FID INTEGE 历史批次内码
R
FEntryID INTEGE
R
分录内码
FQtyBeg FLOAT 期初数量
FAmtBeg FLOAT 期初金额
FQtyBal FLOAT 剩余数量
FAmtBal FLOAT 剩余金额
FCombined INTEGE
R
是否被合并
FResult INTEGE
R
是否合并结果
FSerialNo INTEGE
R
唯一号
主表 3:COM_StockKeep(保质期、库龄记录表):
字段名 类型 描述 说明
FDate DATETIM
E
收入日期
FID INTEGER 单据号 来源于com_inventory表中的FID字段值
FEntryID INTEGER 分录内码
FItemID INTEGER 商品内码 来源于COM_Item表中FItemID字段值。
FAuxPropID INTEGER 辅助属性内码 来源于COM_ItemAuxProp表的FAuxPropID字段值。
FStockID INTEGER 仓位内码 来源于COM_Stock表中FItemID字段值。
FBatchNO STRING 批次号
FQtyBeg FLOAT 期初数量
FAmtBeg FLOAT 期初金额
FQtyBal FLOAT 剩余数量
FAmtBal FLOAT 剩余金额
FDeadline DATETIM
E
到期日期
主表 4:COM_Balance_Settle(进销差价表):
字段名 类型 描述 说明
FItemID INTEGER 商品内码 来源于COM_Item表中FItemID字段值。
FAuxPropID INTEGER 辅助属性内码 来源于COM_ItemAuxProp表的FAuxPropID字段值。
FStockID INTEGER 仓位内码 来源于COM_Stock表中FItemID字段值。
FQtyBeg FLOAT 期初数量
FAmtBeg FLOAT 期初金额
4、其他相关说明:
在数据表中,要特别注意的 t_Item 和 COM_Item 这两个表的数据,它们之间的关系见第一节“基础
资料”的“商品资料”,如果这两个表的数据不符合它们之间的关系,如 t_Item 表中 FDetail 字段值等于 1 的
记录在 COM_Item 表中不存在,则在录入初始数据时就会出错。
初始化的数据主要保存在 COM_Balance(余额表)和 COM_Batchhist(历史批次表)中,而且都是
FYear 和 FPeriod 字段值都为零的记录,这两个表之间的关系是,所有计价方法为先进先出法、后进先出法、
分批认定法的商品和带批次管理的商品在 COM_Balance 表中的数据之和等于在 COM_Batchhist 表中的数
据之和;另外所有数据都已转化为基本单位数据。
期初未核销数据录入
启用帐套前的未核销单据,包括暂估单据、已出库未开票的销售出库单等,都需将单据录
入,以便在将来与之对应的单据来了之后,可以进行核销,这些单据的日期都是帐套启用前的日
期。注意暂估入库的处理,在实际库存数中已经包括了暂估入库的商品数量。对于部分核销的单
据,只需录入没有核销的数据即可。
暂估单据、已出库未开票的销售出库单的数据,都是存放在 COM_Inventory 与
COM_InventoryEntry(出入库单据表)这两张表中,两表的数据结构见下面章节的收发单据处理。
导出初始额到总账
1、数据处理流程:
此步操作涉及的数据库表有下面这些:COM_Item、t_Account、COM_Stock、t_ItemDetail、
COM_Balance、t_Balance。
导出初始数据到总帐时,系统在处理时分四种情况来考滤:
1、商品对应的库存商品科目无核算项目,系统先执行 sp_ExportCOMBallToGL_1 存储过程,取出
COM_Balance 表中数量金额的余额和累计发生额,再直接更改 t_Balance 表中对应库存商品科目的期初期末
余额、本期发生额累计发生额;
2、商品对应的库存商品科目只核算商品,系统先执行 sp_ExportCOMBallToGL_2 存储过程,取出
COM_Balance 表中数量金额的余额和累计发生额,再直接更改 t_Balance 表中对应库存商品科目的期初期末
余额、本期发生额累计发生额;
3、商品对应的库存商品科目只核算仓库,系统先执行 sp_ExportCOMBallToGL_3 存储过程,取出
COM_Balance 表中数量金额的余额和累计发生额,再直接更改 t_Balance 表中对应库存商品科目的期初期末
余额、本期发生额累计发生额;
4、商品对应的库存商品科目核算项目包括仓库及商品,系统先执行 sp_ExportCOMBallToGL_4 存
储过程,取出 COM_Balance 表中数量金额的余额和累计发生额,再直接更改 t_Balance 表中对应库存商品
科目的期初期末余额、本期发生额累计发生额。
2、其他相关说明:
导出初始数据到总帐时,系统只导普通仓和锁库仓的数据,其他类型的仓库数据不能传到总帐中,
要使数据传送正确,必须注意几个方面:首先,应确定每个商品都正确地对应了存货科目;其次,在商品
余额表(com_balance)中所有的记录都要对应有仓位内码;最后,所有的仓位类型都要为普通仓或锁库。
做到这三点的话,住总帐传数据一般不会出错。
结束初始化
1、数据处理流程:
结束初始化这一步操作,涉及的数据库表有下面这些:t_SystemProfile、Com_Item、COM_Balance、
COM_Balance_Settle、Com_BatchHist、Com_Inventory、Com_InventoryEntry,涉及的存储过程有下面几个:
sp_GetPeriodStartDate、sp_GetDataFromInventoryEntry、sp_InitBalanceAssign。
处理步骤如下(以 2002 年第 1 期结束初始化为例):
1、系统先用零售仓中商品的进销差价数据(COM_Balance_Settle 表中的数据)来更新对应商品余
额表(COM_Balance)中商品的期初、期末金额差价(FAmtDiffBeg 和 FAmtDiffBal 字段),对应 SQL 如下:
Update tb Set FAmtDiffBeg=,FAmtDiffBal=
From COM_Balance tb,COM_Balance_Settle ts
Where =0 And =0 And = And =
And = And In (Select FItemID from COM_Stock Where
FTypeID=18)
2、执行 sp_GetPeriodStartDate 存储过程,取出对应的年度和期间;
3、执行 sp_GetDataFromInventoryEntry 存储过程,此存储过程是从收发单据表(COM_Inventory 和
COM_InventoryEntry)中提取初始化前的委托代销和分期收款业务的数据,分别插到 Com_BatchHist、
Com_StockKeep 和 COM_Balance 三个表中;
4、执行 sp_InitBalanceAssign 存储过程,此存储过程是从 Com_Balance、COM_Inventory 和
COM_InventoryEntry 三个表中提取初始化前的委托代销数据插入到委托代销余额表 Com_Balance_Assign
中。
5、选取余额表(COM_Balance)中的 0 年度 0 期间的数据,把年度和期间都为结帐套启用的年度
和期间,再插回余额表中,对应 SQL 如下:
INSERT INTO COM_Balance
(FYear,FPeriod,FItemID,FAuxPropID,FStockID,FQtyBeg,FAmtBeg,FQtyYtdRev,FAmt
YtdRev,
FQtyYtdSend,FAmtYtdSend,FQtyBal,FAmtBal,FAmtDiffBeg,FAmtDiffBal )
SELECT 2002,1,FItemID,FAuxPropID,FStockID,FQtyBeg,FAmtBeg,FQtyYtdRev,FAmtYtdRev,
FQtyYtdSend,FAmtYtdSend,FQtyBal,FAmtBal,FAmtDiffBeg,FAmtDiffBal
FROM COM_Balance
WHERE FYear=0 AND FPeriod=0
6、更新系统参数表,打上结束初始化的标志,相应 SQL 语句如下:
UPDATE t_SystemProfile SET FValue='1' WHERE FCategory='COM' AND FKey='InitClosed'
7、汇总余额表(COM_Balance)中 0 年度 0 期间且仓库类型为普通仓和受托代销仓的数据,并把
它转为帐套启用的年度和期间,然后再插回余额表(COM_Balance)中,对应的 SQL 如下:
INSERT INTO COM_Balance
( FYear,FPeriod,FItemID,FAuxPropID,FStockID,FQtyBeg,FAmtBeg,FQtyRev,FAmtRe
v,
FQtyYtdRev,FAmtYtdRev,FQtySend,FAmtSend,FQtyYtdSend,FAmtYtdSend,FQtyBal,
FAmtBal)
SELECT 2002,1,,,0,sum(),sum(),sum(),
sum(),sum(),sum(),sum(),sum(
Send),
sum(),sum(),Sum (), Sum()
FROM COM_Balance tb, COM_Stock ts
WHERE =0 and =0 and =
and in (11,15)---注:仓库类型为普通仓和锁库仓
GROUP BY ,
8、选取历史批次表(Com_BatchHist)中的 0 年度 0 期间的数据,把年度和期间都为结帐套启用的
年度和期间,再插回历史批次表中,相应的 SQL 语句如下:
INSERT INTO COM_BatchHist
(FYear,FPeriod,FItemID,FAuxPropID,FStockID,FBatchNo,FDate,FID,FEntryID,FQtyBeg,
FAmtBeg,
FQtyBal,FAmtBal,FCombined,FSerialNO )
SELECT 2002,1,,,,
(case when =5 Then Else ''
End),,,,,
,,,,0
FROM COM_BatchHist tb,COM_Item tm,COM_Stock ts
WHERE =0 AND =0 And = And =
And In (11,13,15,17)----注:仓库类型为普通仓、受托代销仓、锁库仓、代管物
资仓。
9、V94 版本增加了批次期初余额表 COM_BalanceOfBatch,还需要往此表中插入数据,在此不明述。
2、其他相关说明:
余额表 COM_Balance 中存放的是所有仓库类型的余额数据,但是只有普通仓和锁库仓有汇总的记
录(即 FSTOCKID=0 的记录);COM_BatchHist 表中不存放虚仓的数据。
反初始化
反初始化时,主要涉及到的数据表为:t_SystemProfile、COM_Balance、COM_BatchHist 这三张表,
以 2002 年第 1 期结束初始化后,进行反初始化为例,步骤如下:
1、系统先要从 t_SystemProfile 表中取出 FCategory 字段值分别为‘GL’、‘COM’、‘General’、‘ARAP’的
记录,相应的 SQL 语句如下:
SELECT FKey,FCategory,FValue FROM t_SystemProfile
WHERE FCategory ='GL' OR FCategory='COM' OR FCategory='General'
Or (FCategory='ARAP' And FKey='FRaiseError')
2、然后再删除 COM_Balance 表中 FYear 字段与 FPeriod 字段值不为 0 的记录,相应的 SQL 语句如
下:
DELETE COM_Balance WHERE FPeriod=1 AND FYear=2002
3、然后再删除 COM_BatchHist 表中 FYear 字段与 FPeriod 字段值不为 0 的记录,相应的 SQL 语句
如下:
DELETE COM_BatchHist WHERE FPeriod=1 AND FYear=2002 AND FSerialNO=0
4、最后更新 t_SystemProfile 表,把初始化结束标志改为 0,相应的 SQL 语句如下:
UPDATE t_SystemProfile SET FValue='0' WHERE FCategory='COM' AND FKey='InitClosed'。
3.单据的处理
单据的数据流向图
购货发票核销
购货流程
核算
销货发票核销
COM_PO
COM_POEN
TRY
COM_InvPur
COM_InvPurE
ntry
COM_Inventory
COM_Inventory
Entry
COM_LinkInvRev
COM_LinkRev
COM_SO
COM_SOEN
TRY
COM_InvSale
COM_InvSale
Entry
COM_Inventory
COM_Inventory
Entr
COM_Balance
采购订单 采购发票 采购收货单
采购核销日志
销售出库单销售发票
销售订单 商品余额表
销售流程
盘点
盘点、调拨和其他收发
单据模板表
在录入各种单据时,系统都需要从单据模板表中取出相应的数据记录,因此,有必要说明一下单据模
板表中的数据是怎样的一种情况,“说明”中有注释的表示这个字段一般会用到。
主表 1:COM_Screen(模板头表):
字段名 类型 描述 说明
FID INTEGE
R
内码
COM_Screen表的内码
FLevel
INTEGE
R
级别
FScreenID STRING 单据模板内码 新增单据时就是取这个值
FScreenName STRING 模板名称 各个单据的名称
FAlias STRING 别名
FTable STRING 表格名 各单据对应的数据库表名
FType INTEGE
R
类型
FVisible INTEGE
R
可见性
FBillNoHeader STRING 单据号头 做单据时单据编号的号头
FBillNoMaxLen INTEGE
R
单据号长度 做单据时单据编号的长度
FVoucher INTEGE
R
是否做凭证
FFldsSpec STRING 特定字段
COM_LinkInvSend
COM_LinkSend
COM_Inventory
COM_Inventory
Entr
COM_invchk
COM_invchkentry
销售核销日志
盘点 调拨和其他收发
FClnsSpec STRING 特定行字段
FGroup INTEGE
R
组别
FDivision INTEGE
R
类别
FDefault INTEGE
R
默认值
FObjectType INTEGE
R
权限对象类型
FObjectID INTEGE
R
权限对象内码
FAllowChangeFreeItem INTEGE
R
是否允许修改自由项
FPrinttimesLimit INTEGE
R
打印次数
主表 2:COM_ScreenEntry(模板体表):
字段名 类型 描述 说明
FID INTEGE
R
内码
COM_ScreenEntry表的内码
FScreenID STRING 单据模板内码 与COM_Screen表中的FScreenID相关联
FPage
INTEGE
R
页码 0表示是表头的项目,-1表示是表体的项目
FSerial INTEGE 系列号 各种单据表头或表体各项目的内部编号
R
FName STRING 名称 各种单据表头或表体各项目的名称
FCaption STRING 标题 各种单据表头或表体各项目的标题,一般与名称相同
FSaveField STRING 字段 各种单据表头或表体各项目对应单据表的字段名称
FRule STRING 规则
各种单据表头或表体各项目取数时的规则(即录入数据时检查数据
合不合规则,如商品代码,录入一个商品代码系统要检测此商品代
码正不正确)
FStatus INTEGE
R
状态 1:使用,0:不使用
FVisible INTEGE
R
可见性
FType INTEGE
R
类型
FGroup INTEGE
R
单据组
FReadOnly INTEGE
R
只读 1为只读
FItemClassID INTEGE
R
类别
FChainSql STRING 刷新规则
FSwitch INTEGE
R
是否切换
FSymbol STRING 列代号 各种单据表体各项目列的代号,用于Fformula字段计算公式中
FFormula STRING 计算公式 定义某个项目的计算公式,一般用列代号来代表各项
FFormulaEx STRING 反向公式 与计算公式一样,只不过是倒算公式,例如单价与金额项
FLinkLock INTEGE
R
和关联有关
FSum INTEGE
R
合计列
FRow INTEGE
R
行
FCol INTEGE
R
列
FWidth INTEGE
R
列宽
FForVoucher INTEGE
R
凭证
FMin INTEGE
R
列最小值
FItemClassIDVch INTEGE
R
商品类别凭证内码
FRelativeField INTEGE
R
关联字段
FDefaultValue STRING 默认值
FIsCopyField INTEGE
R
该列数据是否需要复制 0不需要,1需要
FShowIndex
INTEGE
R
单据界面数据项显示顺
序地址
订单单据的处理
1、处理流程:
订单单据包括采购订单、销售订单和内部订单这三种单据,采购订单涉及的数据库表主要为
COM_Po 和 COM_PoEntry 这两个表,销售订单涉及的数据库表主要为 COM_So 和 COM_SoEntry 这两个表,
内部订单涉及的数据库表主要为 COM_Req 和 COM_ReqEntry 这两个表。
新增订单单据时:系统先从系统参数表中选取一些相关参数,如“应收应付系统未结束初始化,则
业务系统发票不允许保存”,当前会计年度和期间等;再从单据模板表(COM_Screen、COM_ScreenEntry)
中取出订单单据对应单据头和单据体的信息(模板表的 FScreenID 字段值:“010100”表示采购订单,
“020100”表示销售订单,“050100”表示内部订单);再检查订单单据对应的数据库表头表如 COM_Po、
COM_So、COM_Req 表中的零记录是否存在;再从单据关联表 COM_Link 中取出相应订单单据的关联信息;
最后再运行 sp_COM_GetBillID 这个存储过程,取出订单单据的单据编号。
在录入商品时:系统通过 sp_BillCheckCommodity 存储过程来检查数据权限,接着通过
sp_BillChainCommodityInvOutTaxRate 存储过程来获得价格信息。
保存订单单据时:系统先是通过 sp_GetPeriodFromDate 存储过程获取当前单据日期所在的会计年度
和期间;再通过 SP_COM_PriceManager 这个存储过程来检查商品价格是否超出特价或基本价,再通过
sp_COM_GetBillID 存储过程更改 COM_BillID(单据编号表)中当前单据的号码;最后再把记录分别插入
到订单单据对应的数据表中。
2、相关的数据结构:
主表 1:COM_Po(采购订单单据头表):
字段名 类型 描述 说明
FID INTEGE
R
单据内码 采购订单内码
FScreenID STRING 单据模板号 采购订单单据模板内码
FType
INTEGE
R
单据类型
FBillID STRING 单据号码
FYear INTEGE
R
年度
FPeriod INTEGE
R
期间
FDate DATETI
ME
单据日期
FSupplierID INTEGE
R
供应商内码 来源于COM_FSupplier表中的FItemID字段值
FSettleTypeID INTEGE
R
结算方式内码 来源于t_Settle表中的FItemID字段值
FSettleDate DATETI
ME
结算日期
FDeliveryAdd STRING 交货地点
FDeliveryDate DATETI
ME
交货日期
FDeptID INTEGE
R
部门内码 来源于t_Department表中的FItemID字段值
FEmpID INTEGE
R
业务员内码 来源于t_Emp表中的FItemID字段值
FCurrencyID INTEGE
R
币别
FExchangeRate FLOAT 汇率
FCashDiscount STRING 现金折扣条
FExplanation STRING 摘要
FDirectorID INTEGE
R
负责人内码
FCheckerID INTEGE
R
审核人内码
FPreparerID INTEGE
R
制单人内码
FFreeItem STRING 自由项 自由项的数据类型由用户设置而定,默认为字符类型
FFormula INTEGE
R
是否按公式计算 0-不计算,1-计算
FBrID INTEGE
R
分支机构代码 与t_SystemProfile表中FCategory=’com’且FKey=’BrID’的Fvalue值相等
FTranStatus INTEGE
R
传输状态 0-未传输,1-已传输
FContractID STRING 合同号 关联的合同单据号码
FPurType INTEGE
R
采购方式 来源于com_Systype表中FClassid=400的记录的FSysTypeID字段值
FPrintedTimes INTEGE
R
已经打印的次数
主表 2:COM_PoEntry(采购订单单据头表):
字段名 类型 描述 说明
FID INTEGE
R
采购订单内码 与COM_Po表的FID字段相关联。
FEntryID
INTEGE
R
分录内码
FItemID
INTEGE
R
商品内码 与t_Item表的Fdetail=1且FItemClassID=4的记录的FItemID值相对应。
FAuxPropID
INTEGE
R
辅助属性内码 来源于COM_ItemAuxProp表的FAuxPropID字段值。
FMeasureUnitID
INTEGE
R
计量单位内码 来源于t_MeasureUnit表中的FmeasureUnitID字段值。
FDate
DATETI
ME
日期
FQty FLOAT 常用单位实收数量 手工录入。
FQtyBase FLOAT 基本单位实收数量 根据FQty乘以字段值与常用计量单位的换算关系计算得出。
FPrice FLOAT 单价 手工录入。
FTaxRate FLOAT 税率 取自商品基础资料表中的税率。
FTaxPrice FLOAT 含税单价 由公式计算得出。
FDiscountRate FLOAT 商业折扣率 手工录入。
FPriceDiscount FLOAT 实际价 由公式计算得出。
FAmtDiscountFor FLOAT 原币折扣额 由公式计算得出。
FAmtDiscount FLOAT 本位币折扣额 由公式计算得出。
FAmtFor FLOAT 原币金额 由公式计算得出。
FAmt FLOAT 本位币金额 由公式计算得出。
FTaxFor FLOAT 原币税额 由公式计算得出。
FTax FLOAT 本位币税额 由公式计算得出。
FAmtTotalFor FLOAT 原币价税合计 由公式计算得出。
FAmtTotal FLOAT 本位币价税合计 由公式计算得出。
FNote STRING 备注
FFreeItem STRING 单据体自由项 自由项的数据类型由用户设置而定,默认为字符类型。
主表 3:COM_So(销售订单单据头表):
字段名 类型 描述 说明
FID INTEGE
R
单据内码 销售订单内码
FScreenID STRING 单据模板号 销售订单单据模板内码
FType
INTEGE
R
单据类型
FBillID STRING 单据号码
FYear INTEGE
R
年度
FPeriod INTEGE
R
期间
FDate DATETI
ME
单据日期
FCustomerID INTEGE
R
客户内码 来源于t_Organization表中的FItemID字段值
FSettleTypeID INTEGE
R
结算方式内码 来源于t_Settle表中的FItemID字段值
FSettleDate DATETI
ME
结算日期
FDeliveryAdd STRING 交货地点
FDeliveryDate DATETI
ME
交货日期
FDeptID INTEGE
R
部门内码 来源于t_Department表中的FItemID字段值
FEmpID INTEGE
R
业务员内码 来源于t_Emp表中的FItemID字段值
FCurrencyID INTEGE
R
币别
FExchangeRate FLOAT 汇率
FCashDiscount STRING 现金折扣条
FExplanation STRING 摘要
FDirectorID INTEGE
R
负责人内码
FCheckerID INTEGE
R
审核人内码
FPreparerID INTEGE
R
制单人内码
FFreeItem STRING 自由项 自由项的数据类型由用户设置而定,默认为字符类型
FFormula INTEGE
R
是否按公式计算 0-不计算,1-计算
FBrID INTEGE
R
分支机构代码 与t_SystemProfile表中FCategory=’com’且FKey=’BrID’的Fvalue值相等
FTranStatus INTEGE
R
传输状态 0-未传输,1-已传输
FContractID STRING 合同号 关联的合同单据号码
FPurType INTEGE
R
销售方式 来源于com_Systype表中FClassid=552的记录的FSysTypeID字段值
FPrintedTimes INTEGE
R
已经打印的次数
主表 4:COM_SoEntry(销售订单单据体表):
字段名 类型 描述 说明
FID INTEGE
R
采购订单内码 与COM_So表的FID字段相关联。
FEntryID
INTEGE
R
分录内码
FItemID
INTEGE
R
商品内码 与t_Item表的Fdetail=1且FItemClassID=4的记录的FItemID值相对应。
FAuxPropID
INTEGE
R
辅助属性内码 来源于COM_ItemAuxProp表的FAuxPropID字段值。
FMeasureUnitID
INTEGE
R
计量单位内码 来源于t_MeasureUnit表中的FmeasureUnitID字段值。
FDate
DATETI
ME
日期
FQty FLOAT 常用单位实收数量 手工录入。
FQtyBase FLOAT 基本单位实收数量 根据FQty乘以字段值与常用计量单位的换算关系计算得出。
FPrice FLOAT 单价 手工录入。
FTaxRate FLOAT 税率 取自商品基础资料表中的税率。
FTaxPrice FLOAT 含税单价 由公式计算得出。
FDiscountRate FLOAT 商业折扣率 手工录入。
FPriceDiscount FLOAT 实际价 由公式计算得出。
FAmtDiscountFor FLOAT 原币折扣额 由公式计算得出。
FAmtDiscount FLOAT 本位币折扣额 由公式计算得出。
FAmtFor FLOAT 原币金额 由公式计算得出。
FAmt FLOAT 本位币金额 由公式计算得出。
FTaxFor FLOAT 原币税额 由公式计算得出。
FTax FLOAT 本位币税额 由公式计算得出。
FAmtTotalFor FLOAT 原币价税合计 由公式计算得出。
FAmtTotal FLOAT 本位币价税合计 由公式计算得出。
FNote STRING 备注
FFreeItem STRING 单据体自由项 自由项的数据类型由用户设置而定,默认为字符类型。
主表 5:COM_Req(内部订单单据头表):
字段名 类型 描述 说明
FID INTEGE
R
单据内码 内部订单内码
FScreenID STRING 单据模板号 内部订单单据模板内码
FType
INTEGE
R
单据类型
FBillID STRING 单据号码 内部订单单据号码
FYear INTEGE
R
年度
FPeriod INTEGE
R
期间
FDate DATETI
ME
单据日期
FCustomerID INTEGE
R
客户内码 来源于t_Organization表中的FItemID字段值
FSettleTypeID INTEGE
R
结算方式内码 来源于t_Settle表中的FItemID字段值
FSettleDate DATETI
ME
结算日期
FDeliveryAdd STRING 交货地点
FDeliveryDate DATETI
ME
交货日期
FDeptID INTEGE
R
部门内码 来源于t_Department表中的FItemID字段值
FBrIDRsv INTEGE
R
供货机构内码 来源于t_SonCompany表中的FItemID字段值
FCurrencyID INTEGE
R
币别
FExchangeRate FLOAT 汇率
FCashDiscount STRING 现金折扣条
FExplanation STRING 摘要
FDoerID INTEGE
R
经手人内码
FCheckerID INTEGE
R
审核人内码
FPreparerID INTEGE
R
制单人内码
FFreeItem STRING 自由项 自由项的数据类型由用户设置而定,默认为字符类型
FMakeVoucher INTEGE
R
凭证状态 0-不生成,1-生成
FVchTemplateID INTEGE
R
摸板内码 来源于COM_VchTemplate表中的FID字段值
FVoucherID INTEGE
R
凭证内码 与t_Voucher表中的FvoucherID字段相关联
FFormula INTEGE
R
是否按公式计算 0-不计算,1-计算
FBrID INTEGE
R
分支机构代码 与t_SystemProfile表中FCategory=’com’且FKey=’BrID’的Fvalue值相等
FTranStatus INTEGE
R
传输状态 0-未传输,1-已传输
FPrintedTimes INTEGE
R
已经打印的次数
FOrderBrID INTEGE
R
订货机构 来源于t_SonCompany表中的FItemID字段值
FEmpID INTEGE
R
业务员内码 来源于t_Emp表中的FItemID字段值
FReqType INTEGE
R
订货类型 来源于com_Systype表中FClassid=510的记录的FSysTypeID字段值
主表 6:COM_ReqEntry(内部订单单据体表):
字段名 类型 描述 说明
FID INTEGE
R
采购订单内码 与COM_Po表的FID字段相关联。
FEntryID
INTEGE
R
分录内码
FItemID
INTEGE
R
商品内码 与t_Item表的Fdetail=1且FItemClassID=4的记录的FItemID值相对应。
FAuxPropID
INTEGE
R
辅助属性内码 来源于COM_ItemAuxProp表的FAuxPropID字段值。
FMeasureUnitID
INTEGE
R
计量单位内码 来源于t_MeasureUnit表中的FmeasureUnitID字段值。
FDate DATETI 日期
ME
FQty FLOAT 常用单位实收数量 手工录入。
FQtyBase FLOAT 基本单位实收数量 根据FQty乘以字段值与常用计量单位的换算关系计算得出。
FPrice FLOAT 单价 手工录入。
FTaxRate FLOAT 税率 取自商品基础资料表中的税率。
FTaxPrice FLOAT 含税单价 由公式计算得出。
FDiscountRate FLOAT 商业折扣率 手工录入。
FPriceDiscount FLOAT 实际价 由公式计算得出。
FAmtDiscountFor FLOAT 原币折扣额 由公式计算得出。
FAmtDiscount FLOAT 本位币折扣额 由公式计算得出。
FAmtFor FLOAT 原币金额 由公式计算得出。
FAmt FLOAT 本位币金额 由公式计算得出。
FTaxFor FLOAT 原币税额 由公式计算得出。
FTax FLOAT 本位币税额 由公式计算得出。
FAmtTotalFor FLOAT 原币价税合计 由公式计算得出。
FAmtTotal FLOAT 本位币价税合计 由公式计算得出。
FDueStatus
INTEGE
R
核销状态 0-未核销,1-部分核销,2-完全核销.
FNote STRING 备注
FFreeItem STRING 单据体自由项 自由项的数据类型由用户设置而定,默认为字符类型。
FStockIDIn
INTEGE
R
收入仓位 来源于COM_Stock表的FItemID字段值.
FStockIDOut
INTEGE
R
发出仓位 来源于COM_Stock表的FItemID字段值.
FBatchNO STRING 批次号
3、其它的相关说明:
采购订单能够关联销售出库单生成,可以通过多张或一张销售订单关联生成一张采购订单,与销售
订单之间只是关联关系。在关联销售订单时,系统是选取 VW_COM_SO_More 这个视图中的数据。采购订
单对应的数据库表为 COM_PO 和 COM_POEntry 这两个表,COM_PO 表中有一条零记录,此条零记录不能
丢失,这两表间依靠 FID 字段相关联。采购订单序时薄系统是通过查询 VW_COM_PO_More 视图而得出的,
一些单据如果查不出,则可以依据视图的创建语句来查找出原因。在制做采购订单时,要注意采购方式,
不同的采购方式对应不同的采购业务,有“一般采购”、“直运采购”和“受托入库”这三种方式,分别对应这三
种业务。
销售订单只能手工录入,它不能通过关联单据来生成,销售订单对应的数据库表为 COM_SO 和
COM_SOEntry 这两个表,COM_SO 表中有一条零记录,此条零记录不能丢失,这两表间依靠 FID 字段相
关联。销售订单序时薄系统是通过查询 VW_COM_SO_More 视图而得出的,一些单据如果查不出,则可以
依据视图的创建语句来查找出原因。在制做销售订单时,要注意销售方式,不同的销售方式对应了不同的
销售业务,有“一般销售”、“直运销售”、“委托代销”、“受托代销”、“分期收款”和“零售”这六种方式,分别对应
这六种业务,其中“零售”为销售前台的业务。
内部订单可以关联销售出库单和本身内部订单来生成,在关联销售订单时,系统是选取
VW_COM_SO_More 这个视图中的数据,在关联本身内部订单时,系统是选取 VW_COM_Req_More 这个
视图中的数据。内部订单对应的数据库表为 COM_Req 和 COM_ReqEntry 这两个表,COM_Req 表中有一条
零记录,此条零记录不能丢失,这两表间依靠 FID 字段相关联。内部订单序时薄系统是通过查询
VW_COM_Req_More 视图而得出的,一些单据如果查不出,则可以依据视图的创建语句来查找出原因。
当订货机构帐套的内部订单传输到供货机构帐套内部订单中后,订货机构帐套内和供货机构帐套内
都存在同一张内部订单,在订货机构帐套的内部订单的传输状态为 1,而在供货机构帐套的内部订单传输状
态为 0。当由供货机构对内部订单进行确认后,在供货机构帐套中,系统会在 COM_Validate 表中插入确认
的信息,这时供货机构可关联内部订单来生成销售出库单;当订货机构接收确认信息时,系统会在订货机
构帐套中的 COM_Validate 表中也插入供货构机的确认信息,如果供货机构确认的内部订单上商品的数量与
原先订单不同,这时系统会以确认的数量为准,修改订货机构的内部订单数量,使订货机构的内部订单上
商品的数量与供货机构的内部订单上商品的数量相等,这时订货机构就可以关联内部订单来生成采购收货
单了。(此部分涉及集团分销内容,请参考相关手册)
收货通知单与发货通知单的处理
1、处理流程:
收货通知单与发货通知单对应的数据库表都为 COM_Requisition 和 COM_RequisitionEntry 这两个
表。
新增订单单据时:系统先从系统参数表中选取一些相关参数,如:“使用收货通知单”、“使用发货通
知单”、当前会计年度和期间等;再从单据模板表(COM_Screen、COM_ScreenEntry)中取出收货通知单或
发货通知单对应单据头和单据体的信息(模板表的 FScreenID 字段值:“010500”表示收货通知单,“020500”
表示发货通知单);再检查 COM_Requisition 表中的零记录是否存在(此表中不存在零记录);再从币别表
t_Currency 表中取出本位币(FcurrencyID=1)的币别数据;再从单据关联表 COM_Link 中取出相应收货通
知单或发货通知单的关联信息;最后再运行 sp_COM_GetBillID 这个存储过程,取出收货通知单或发货通知
单的单据编号。
保存订单单据时:系统先是通过 sp_GetPeriodFromDate 存储过程获取当前单据日期所在的会计年度
和期间;再通过 sp_COM_GetBillID 存储过程更改 COM_BillID(单据编号表)中当前单据的号码;最后再
把记录分别插入到收货通知单或发货通知单对应的数据表中。
2、相关的数据结构:
主表 1:COM_Requisition(通知单单据头表):
字段名 类型 描述 说明
FID INTEGE
R
单据内码 通知单单据内码
FScreenID STRING 单据模板号 通知单单据模板内码
FType
INTEGE
R
单据类型 0表示收货通知单,1表示发货通知单
FreqType INTEGE
R
收货类型 来源于com_Systype表中FClassid=494的记录的FSysTypeID字段值
Fyear INTEGE
R
年度
Fperiod INTEGE
R
期间
Fdate DATETI
ME
单据日期
FbillID STRING 单据号码 内部订单单据号码
FOrderID STRING 订单号 相关联的采购订单或销售订单的单据号码(FBillID字段值)
FcompanyID INTEGE
R
供货单位内码 来源于t_Organization表中的FItemID字段值
FcurrencyID INTEGE
R
币别
FexchangeRate FLOAT 汇率
FDeptID INTEGE
R
部门内码 来源于t_Department表中的FItemID字段值
FEmpID INTEGE
R
业务员内码 来源于t_Emp表中的FItemID字段值
FdeliveryAdd STRING 交货地点
FdeliveryDate DATETI
ME
交货日期
FdirectorID INTEGE
R
负责人内码
FcheckerID INTEGE
R
审核人内码
FpreparerID INTEGE
R
制单人内码
FmakeVoucher INTEGE
R
凭证状态 0-不生成,1-生成
FVchTemplateID INTEGE
R
摸板内码 来源于COM_VchTemplate表中的FID字段值
FvoucherID INTEGE
R
凭证内码 与t_Voucher表中的FvoucherID字段相关联
Fexplanation STRING 摘要
FfreeItem STRING 自由项 自由项的数据类型由用户设置而定,默认为字符类型
Fformula INTEGE
R
是否按公式计算 0-不计算,1-计算
FbrID INTEGE
R
分支机构代码 与t_SystemProfile表中FCategory=’com’且FKey=’BrID’的Fvalue值相等
FtranStatus INTEGE
R
传输状态 0-未传输,1-已传输
FprintedTimes INTEGE
R
已经打印的次数
主表 2:COM_RequisitionEntry(通知单单据体表):
字段名 类型 描述 说明
FID INTEGE
R
单据内码 与COM_Requisition表的FID字段相关联。
FEntryID
INTEGE
R
分录内码
FItemID
INTEGE
R
商品内码 与t_Item表的Fdetail=1且FItemClassID=4的记录的FItemID值相对应。
FAuxPropID
INTEGE
R
辅助属性内码 来源于COM_ItemAuxProp表的FAuxPropID字段值。
FMeasureUnitID
INTEGE
R
计量单位内码 来源于t_MeasureUnit表中的FmeasureUnitID字段值。
FDate
DATETI
ME
日期
FQty FLOAT 常用单位实收数量 手工录入。
FQtyBase FLOAT 基本单位实收数量 根据FQty乘以字段值与常用计量单位的换算关系计算得出。
FQtyGift FLOAT 赠品数量
FQtyGiftBase FLOAT 基本单位赠品数量
FPrice FLOAT 单价 手工录入。
FTaxRate FLOAT 税率 取自商品基础资料表中的税率。
FTaxPrice FLOAT 含税单价 由公式计算得出。
FDiscountRate FLOAT 商业折扣率 手工录入。
FPriceDiscount FLOAT 实际价 由公式计算得出。
FAmtDiscountFor FLOAT 原币折扣额 由公式计算得出。
FAmtDiscount FLOAT 本位币折扣额 由公式计算得出。
FAmtFor FLOAT 原币金额 由公式计算得出。
FAmt FLOAT 本位币金额 由公式计算得出。
FTaxFor FLOAT 原币税额 由公式计算得出。
FTax FLOAT 本位币税额 由公式计算得出。
FAmtTotalFor FLOAT 原币价税合计 由公式计算得出。
FAmtTotal FLOAT 本位币价税合计 由公式计算得出。
FStockIDIn
INTEGE
R
收入仓位 来源于COM_Stock表的FItemID字段值.
FStockIDOut
INTEGE
R
发出仓位 来源于COM_Stock表的FItemID字段值.
FBatchNO STRING 批次号
FDeadLine
DATETI
ME
到期日
FDueStatus
INTEGE
R
核销状态 0未核销,1部分核销,2完全核销.
FNote STRING 备注
FFreeItem STRING 单据体自由项 自由项的数据类型由用户设置而定,默认为字符类型。
3、其它的相关说明:
收货通知单与发货通知单可以通过系统参数据进行设置是否使用,它们只能关联采购订单或销售订
单生成,在关联时,不考滤订单的采购方式或销售方式,可以通过选择多张或一张采购订单或销售订单关
联生成一张收货通知单或发货通知单,它们与采购订单或销售订单之间只是关联关系。在关联采购订单或
销售订单时,系统是选取 VW_COM_PO_More 或 VW_COM_SO_More 视图中的数据。收货通知单与发货通
知单序时薄系统都是通过查询 VW_COM_Requisition_More 视图而得出的,如果有单据查不出,则可以依据
视图的创建语句来查找出原因。
库存业务单据的处理
1、处理流程:
库存业务单据包括了出入库类型的所有单据,它们对应的数据库表只有两个:一个是单据头表
COM_Inventory,一个单据体表 COM_InventoryEntry。
新库存业务单据时:系统先从系统参数表中选取一些相关参数,如:“出现负结存是否予以警告”、“是
否自动弹出库存控制窗口”、当前会计年度和期间等;再从单据模板表(COM_Screen、COM_ScreenEntry)
中取出库存业务单据对应单据头和单据体的信息;再检查 COM_Inventory 表中的零记录是否存在(此表中
一定要有零记录);再从单据关联表 COM_Link 中取出相应库存业务单据的关联信息;最后再运行
sp_COM_GetBillID 这个存储过程,取出库存业务单据的单据编号。
在录入商品时:系统通过 sp_BillCheckCommodity 存储过程来检查数据权限。做销售出库单时,系
统还通过 sp_BillChainCommodityOutStock 存储过程来取出商品参考进价除以(1+税率)做为销售出库单的
单位成本。
保存库存业务单据时:系统先是通过 sp_GetPeriodFromDate 存储过程获取当前单据日期所在的会计
年度和期间;再检查 COM_Item 表中商品的数量小数位,再通过 sp_COM_GetBillID 存储过程更改
COM_BillID(单据编号表)中当前单据的号码;再把记录分别插入到 COM_Inventory 和
COM_InventoryEntry 表中,最后运行 sp_BillCheckNegStorage 存储过程检查此次的数据是否会引起负结存,
如果会引起负结存,系统给出提示,不能保存数据,不会引起负结存,则保存数据成功。
2、相关的数据结构:
主表 1:COM_Inventory(库存业务单据头表):
字段名 类型 描述 说明
FID INTEGE
R
单据内码 出入库单据内码
FScreenID STRING 单据模板号 出入库单据模板内码,各种单据对应各个模板内码
FType
INTEGE
R
单据类型 表示收发单据的类型,见后面的介绍
FbillID STRING 单据号码 出入库单据号码
ForgID INTEGE 源单号 关联原单据的内码
R
FOrderID STRING 订单号 相关联的采购订单或销售订单的单据号码(FBillID字段值)
Fyear INTEGE
R
年度
Fperiod INTEGE
R
期间
Fdate DATETI
ME
单据日期
FcompanyID INTEGE
R
单位内码 来源于t_Organization表或COM_Supplier中的FItemID字段值
FinvCheckID INTEGE
R
盘点内码
FDeptID INTEGE
R
部门内码 来源于t_Department表中的FItemID字段值
FEmpID INTEGE
R
业务员内码 来源于t_Emp表中的FItemID字段值
FdeliveryAdd STRING 交货地点
Fexplanation STRING 摘要
FdoerID INTEGE
R
经手人内码
FstockerID INTEGE
R
仓管人内码
FdirectorID INTEGE
R
负责人内码
FcheckerID INTEGE