76范文网为您提供各类范文参考!
当前位置:76范文网 > 知识宝典 > 范文大全 > K3工业购销存支持手册

K3工业购销存支持手册

来源:76范文网 | 时间:2019-04-25 10:41:23 | 移动端:K3工业购销存支持手册

K3工业购销存支持手册 本文简介:

目录目录1一、工业物流初始设置111.1工业初始化111.1.1初始化参数设置111.1.1处理流程111.1.1.2相关的数据结构:111.1.1.3其他131.1.2初始化功能流程131.1.2.1.初始数据录入131.1.2.2流程131.1.2.3传递余额到总帐151.1.2.4初始余额数据

K3工业购销存支持手册 本文内容:





1
一、工业物流初始设置
11
1.1工业初始化
11
1.1.1初始化参数设置
11
1.1.1处理流程
11
1.1.1.2相关的数据结构:
11
1.1.1.3其他
13
1.1.2初始化功能流程
13
1.1.2.1.初始数据录入
13
1.1.2.2流程
13
1.1.2.3传递余额到总帐
15
1.1.2.4初始余额数据录入和保存:icinvinitial
18
1.1.2.5初始化数据的规则
19
1.1.3结束初始化
21
1.3.1检查条件如下
21
1.1.3.2结束初始化过程
21
1.1.3.3结束初始化的处理内容
21
1.1.4
反初始化
21
1.1.5初始化以前三类单据
22
1.2工业系统参数设置
23
1.2.1系统设置
23
1.2.2编码规则设置
23
1.2.3打印控制
24
1.2.4单据科目类型
24
1.2.5工业整体选项:共17项
24
1.2.6采购系统选项:共10项
24
1.2.7销售系统选项:共11项
25
1.2.8仓存系统选项
25
1.2.9核算系统选项
共11项
25
1.2.10成本核算共4项
26
1.2.11生产系统选项共11项
26
1.2.12车间1项
26
1.2.13
业务流程设计应用:
26
1.2.14其他:
27
1.3工业辅助功能
27
1.3.1多级审核
27
1.3.2供应商供货信息
28
1.3.3物料对应表
29
1.3.4价格资料
30
1.3.5折扣资料
31
1.3.6信用管理
32
1.3.7批号管理
33
1.3.8条形码,条形码关联
34
1.3.9客户BOM和批号对应表
34
二、采购系统
36
2.1采购申请单
36
2.1.1采购申请单的生成
36
2.1.1.1采购申请单的手工录入
36
2.1.1.2单据新增
36
2.1.1.3单据模板
36
2.1.1.4相关的数据结构
37
2.1.1.5采购申请单根据库存生成(足缺料分析)
38
2.1.1.6根据物料配套查询生成:略
38
2.1.1.7选单录入(关联销售订单生成采购申请单)
38
2.1.2采购申请单的业务和操作
40
2.1.2.1审核和反审核
40
2.1.2.2关闭和反关闭
40
2.1.2.3作废和反作废,单据合并
41
2.2采购订单
42
2.2.1采购订单单据功能
42
2.2.1.1新增采购订单
42
2.2.1.2采购订单通过关联采购申请单生成
44
2.2.1.3采购订单通过关联采购合同生成
44
2.2.1.4单据复制
45
2.2.2订单的业务
46
2.2.2.1审核与反审核
46
2.2.2.2关闭和反关闭
46
2.2.2.3部分关联
47
2.2.2.4订单追加执行
47
2.2.3关联和下推生成
47
2.2.4采购业务报表
48
2.2.4.1采购订单执行情况汇总表
48
2.2.4.2采购订单执行情况明细表
49
2.3收料通知单
49
2.3.1收料通知单据功能
49
2.3.1.1手工新增
49
2.3.1.2审核与反审核
51
2.3.1.3关闭与反关闭
51
2.3.2收料通知单业务功能
52
2.3.2.1下推生成质检单
52
2.3.2.2下推退料通知单
52
2.4外购入库单
53
2.4.1业务描述
53
2.4.1.1单价的传递关系
53
2.4.1.2库存更新、数量反填
53
2.4.2单据功能
54
2.4.2.1.新增单据
54
2.4.2.2选单生成条件
54
2.4.3业务功能
55
2.4.3.1单据审核、反审核
55
2.4.3.2作废、反作废
55
2.4.4表结构
56
2.5购发票
58
2.5.1业务描述
58
2.5.1.1发票钩稽费用发票的计算与分配
58
2.5.2数据流程
59
2.5.2.1新增单据
59
2.5.2.2关联生成
59
2.5.2.3复制单据:同单据新增
60
2.5.2.4发票审核
60
2.5.2.5反审核
62
2.5.2.6作废与反作废
62
2.5.2.7单据拆分与合并
63
2.5.2.8下推生成收货单
64
2.5.2.9下推生成外购入库单
64
2.5.2.10生成费用发票
64
2.5.2.11下推生成反向发票:
65
2.5.3采购发票对等核销
65
2.5.3.1对等核销条件
65
2.5.3.2对等核销对发票状态的影响
66
2.5.3.3对等核销发票的账务处理
66
2.5.3.4数据处理
66
2.5.3.5反对等核销
66
2.5.4采购发票报表
67
1.5.4.1采购发票明细表
67
2.6退料通知单
67
2.6.1退料通知单的反向作用
67
2.6.2数据流程
68
2.6.2.1单据模板
68
2.6.2.2新增单据
68
2.6.2.3
审核、反审核
68
2.6.2.4作废、反作废
69
2.6.2.5下推生成外购入库单
69
2.6.2.6关闭和反关闭
69
2.7委外加工
70
2.7.1委外加入库工业务
70
2.7.1.1委外加工入库单据模板
70
2.7.1.2单据新增
70
2.7.1.3审核与反审核
71
2.7.1.4关联生产任务单生成
71
2.7.2红字和蓝字委外加工入库单的对等核销
71
2.7.2.1对等核销条件
71
2.7.2.2对等核销对入库单状态的影响
72
2.7.2.3对等核销单据的账务处理
72
2.7.2.4数据处理过程
72
2.7.3委外加工出库
73
2.7.3.1单据模板
73
2.7.3.2生成单据
73
2.7.3.3单据审核与反审核
74
2.7.3.4关闭、反关闭
74
2.7.3.5作废与反作废
74
2.7.4
委托加工报表
74
2.7.4.1委托加工材料明细表(委托加工出库材料)
74
2.7.4.2委托加工材料汇总表
75
2.8费用发票
76
2.8.1费用发票的业务
76
2.8.1.1费用发票的业务要求
76
2.8.1.2委外加工入库单和费用发票的钩稽审核
77
2.8.2业务数据描述
77
2.8.2.1单据模板
77
2.8.2.2新增
77
2.8.2.3采购发票连属生成费用发票
78
2.8.2.4委外加工入库单连属生成费用发票
78
2.8.2.5费用发票审核,反审核(以委外加工入库为例)
79
2.8.3费用发票报表
80
2.8.3.1费用发票明细表
80
2.8.3.2汇总费用发票汇总表
80
三、销售系统
83
3.1销售报价单
83
3.1.1业务描述
83
3.1.2数据过程描述
83
3.1.2.1单据模板
83
3.1.2.2单据新增
83
3.1.2.3审核、反审核
84
3.1.2.4按价格折扣信息查询录入
84
3.1.2.5销售报价单通过下推式关联按购货单位(来源)生成销售订单
84
3.1.2.6作废、反作废
85
3.3.1表结构
85
3.2销售订单
86
3.2.1业务描述(销售请见订单帮助)
86
3.2.2
单据业务
86
3.2.2.1单据模板
86
3.2.2.2单据新增
87
3.2.2.3
审核、反审核
87
3.2.2.4作废、反作废
87
3.2.2.5关闭和反关闭
88
3.2.2.6锁库与解锁
88
3.2.2.7可签约量查询、冲减、反冲
89
3.2.2.8销售订单追加执行
90
3.2.2.9销售订单下推关联直接生成发货通知单
91
3.2.2.10
销售订单下推关联直接生成产品入库
92
3.2.2.11销售订单下推关联直接生成生产任务单
93
3.2.2.12销售订单下推关联直接生成生成销售发票生成销售发票(普通)
94
3.2.2.13销售订单关联合同生成
94
3.2.3销售订单报表
94
3.2.3.1销售订单统计表
94
3.2.3.2销售订单执行情况汇总表
95
3.2.4表结构
95
3.3发货通知单
99
3.3.1数据流程描述
99
3.3.1.1单据模版
99
3.3.1.2新增
99
3.3.1.3审核、反审核
99
3.3.1.4关闭、反关闭,作废、反作废
100
3.3.1.5下推单据(发货通知单下推生成生成销售出库)
100
3.3.1.6发货通知单下推生成调拨
100
3.3.1.7
发货通知单下推生成退货通知单
101
3.3.2表结构
101
3.4销售出库单
103
3.4.1数据描述
103
3.4.1.1单据模版
103
3.4.1.2单据新增
103
3.4.1.3审核,反审核
103
3.4.1.4作废、反作废
104
3.4.2销售出库单和销售出库单的拆单和合并
104
3.4.2.1拆单和合并的条件
104
3.4.2.2拆分单据的影响和单据存在形式:(可以参考帮助)
105
3.4.2.3拆分过程
105
3.4.3合并单据
105
3.4.4销售出库单的对等核销
106
3.4.4.1对等核销条件
106
3.4.4.2对等核销对出库单状态的影响
107
3.4.4.3核销过程
107
3.4.4.4反核销过程
107
3.4.5单据关联生成
108
3.4.5.1销售出库生成红字销售出库
108
3.4.6
销售出库报表
108
3.4.6.1销售出库汇总表
108
3.4.6.2销售出库明细表
109
3.4.7表结构:见出入库单据表,单据类型为21
109
3.5销售发票
109
3.5.1数据描述
109
3.5.1.1单据模版(专用)
109
3.5.1.2单据新增
110
3.5.1.3审核、反审核
110
3.5.1.4作废、反作废
111
3.5.1.5拆分、合并
111
3.5.1.6下推生成发货通知单
111
3.5.1.7下推退货通知单
112
3.5.1.8下推红字发票(以专用为例)
112
3.5.1.9下推生成出库单
113
3.5.1.10.对等核销、反核销
113
3.5.2销售发票报表
113
3.5.2.1销售收入统计表
113
3.5.2.2客户单位销售情况明细表功能
114
3.5.2.3销售退货统计表
114
3.5.3销售表结构
114
3.6退货通知单
116
3.6.1数据描述
116
3.6.1.1单据模版
116
3.6.1.2单据新增
117
3.6.1.3审核、反审核
117
3.6.1.4.关闭、反关闭
117
3.6.1.5.
下推生成出库单
117
3.6.1.6关联发票生成
118
3.6.1.7表结构同发货通知单
118
3.7销售报表
119
3.7.1销售毛利润表
119
3.7.2产品销售增长分析表
119
3.7.3产品销售增长流向表
119
3.7.4产品销售结构分析表
120
3.7.5信用数量分析表
120
3.7.6信用额度分析表
121
3.7.7信用期限分析表
121
四、仓存系统
123
4.1其他入库
123
4.1.1业务描述
123
4.1.2业务数据描述
123
4.1.2.1单据模板
123
4.1.2.2单据新增
123
4.1.2.3审核、反审核
124
4.1.3其他入库单分类表
125
4.2其他出库
125
4.2.1业务描述
125
4.2.2业务数据描述
126
4.2.2.1单据模板
126
4.2.2.2单据新增
126
4.2.2.3审核、反审核
126
4.2.3其他出库单分类表
127
4.3仓库调拨
127
4.3.1业务定义
127
4.3.2业务数据描述
127
4.3.2.1单据模板
127
4.3.2.2新增单据
127
4.3.2.3审核和反审核(审核更新及时库存)
128
4.4虚仓管理
129
4.4.1赠品管理业务
129
4.4.1.1赠品形式主要有以下几种
129
4.4.2赠品入库
129
4.4.2.1模板
129
4.4.2.2新增单据
130
4.4.2.3审核、反审核(审核更新及时库存)
130
4.4.2.4下推生成其他入库单
130
4.4.2.5下推生成赠品出库单
131
4.4.2.6外购入库连属生成赠品入库单
131
4.4.3赠品出库
132
4.4.3.1模板
132
4.4.3.2.新增单据
132
4.4.3.3审核、反审核(审核更新及时库存)
132
4.4.3.4下推生成赠品入库单
133
4.4.4虚仓调拨
133
4.4.4.1业务内容
133
4.4.4.2
单据模板
133
4.4.4.3新增单据
134
4.4.4.4审核和反审核(审核更新及时库存)
134
4.4.5报表
134
4.4.5.1赠品出入库汇总表
134
4.4.5.2赠品出入库明细表
136
4.4.5.3代管待检物料收发台账
136
4.4.5.4代管待检物料收发日报表
137
4.5盘点作业
137
4.5.1盘点业务业务描述
137
4.5.2盘点作业的数据流程
138
4.5.3录入盘点数据
139
4.5.4.盘点报告单
139
4.6库存调整业务
140
4.6.1盘盈入库单
140
4.6.1.1单据模板
140
4.6.1.2新增单据
140
4.6.1.3审核和反审核(审核更新及时库存)
141
4.6.2盘亏出库单
141
4.6.2.1单据模板
141
4.6.2.2新增单据
141
4.6.2.3审核和反审核(审核更新及时库存)
142
4.7库存查询
142
4.7.1即时库存查询业务描述
142
4.7.2数据描述
142
4.8库存状态查询
144
4.8.1库存状态查询业务
144
4.8.2数据描述
144
4.9报表
145
4.9.1库存台账
145
4.9.2出入库流水账
148
4.9.3物料收发汇总表
151
4.9.4物料收发明细
154
4.9.5收发业务汇总表
156
4.9.6物料收发日报表
157
4.9.7生产任务执行情况明细表
159
4.9.8超储/短缺库存分析表
161
4.9.9库存账龄分析表
162
4.9.10库存ABC分析
163
4.9.11库存呆滞料分析表
164
4.9.12保质期预警分析表
165
4.9.13生产批次跟踪表
166
4.9.14物料批次跟踪
167
4.9.15库存配套分析表
169
4.10质量检验
170
4.10.1业务描述
170
4.10.2数据描述
170
4.10.2.1质检方案
170
4.10.2.2检验单
171
4.10.2.3采购质量检验统计表:
172
4.10.2.4
物料鉴别供应商质量比较表
172
4.10.2.5完工入库质量表
172
五、核算
173
5.1外购入库核算
173
5.1.1参与核算的发票
173
5.1.2费用分配过程
173
5.1.3核算过程
173
5.2出库核算
174
5.2.1各种计价方法的基本算法
174
5.2.1.1加权平均法
174
5.2.1.2先进先出法
175
5.2.1.3后进先出法
176
5.2.1.4计划成本法
177
5.2.2总仓/分仓/分仓组核算
177
5.2.3所有计价方法都遵循的规则
178
5.2.4不足以发出的核算规则
178
5.2.4.1加权平均/计划成本法
178
5.2.4.2移动平均
179
5.2.4.3分批认定法
179
5.2.4.4先进/后进先出法
179
5.2.4.5计划成本法
179
5.2.5红字入库单据的核算规则(所有计价方法)
179
5.2.5.1红字入库的规则是:
180
5.2.5.2红字出库核算规则
180
5.2.5.3移动平均、分批认定、先进/后进先出法的红字出库核算规则
181
5.2.5.4加权平均、计划成本法的红字出库核算规则
181
5.2.6调拨单核算规则
183
5.3计划价调价
183
5.4金额调整
183
5.5物流与总帐对帐
184
5.5.1总帐的存货科目做了手工凭证
185
5.5.2物流中的库存单据未生成凭证
185
5.5.3库存单据的金额
<>
凭证的金额
185
5.5.4物流结帐后,上期的期末余额与下期的期初余额不符
185
5.5.5计划成本法,做了计划价调价单,且在数据库中做了反结帐,重新结帐回来,计划价调价单失效;
186
5.5.6计划成本法,物料在期末无结存数量和金额,只有结存差异,差异不能结转下期;
186
5.5.7
941之前的版本,暂估入库单做了对等核销,而且两张单据的金额的绝对值不等;
187
5.5.8调拨单的调出或调入仓库丢失
188
5.5.9凭证模板设置错误
188
5.5.10物料对应的存货类科目丢失
188
5.6生成凭证
188
5.6.1凭证模板数据表
188
5.7结帐
189
5.7.1工业物流结帐过程
189
K3工业购销存支持手册
一、工业物流初始设置
1.1工业初始化
1.1.1初始化参数设置
1.1.1处理流程
核算参数得设置流程:
启用年度和启用期间---------税率----------核算方式------库存结余控制-------库存更新控制---------销售模块设置
参数说明:
启用年度和启用期间:业务实际的启用年度和期间,其自定义得期间规则参照总帐的设置
税率:系统默认为17%,输入时只输入%前面的数据即可,不要输入0.17等数据,参照总帐
核算方式:数量核算”和“数量、金额核算”两种方式,“数量核算”,系统以后只核算数量,不核算金额,数量、金额核算”是对材料的数量和成本都核
库存结余控制:确定是否允许负结存,负结存是库存即时数量为负数
库存更新控制:单据审核后才更新,单据保存后立即更新,在新增、修改、复制、删除、作废、反作废该库存单据时进行库存调整
销售模块设置:日常业务中是否存在企业集团内部销售业务,
1.1.1.2相关的数据结构:
整个核算参数涉及的数据流程如下
1.表示销售模块设置是否启用集团分销0:不区分

1:区分
数据存放于:
t_SystemProfile系统参数表
FCategory="GL"
AND
Fkey="DisCivilExportSale")
例如:设置保存过程
IF
Exists(select
*
from
t_SystemProfile
WHERE
FCategory="GL"
AND
Fkey="DisCivilExportSale")
UPDATE
t_SystemProfile
SET
FValue="1"
WHERE
FCategory="GL"
AND
Fkey="DisCivilExportSale"
ELSE

INSERT
INTO
t_SystemProfile(FCategory,FKey,FValue)
Values("GL","DisCivilExportSale","1")
2-税率参照总帐税率,
数据存放于FCategory="GL"
AND
Fkey="TaxRate
例如:设置保存过程
IF
Exists(select
*
from
t_SystemProfile
WHERE
FCategory="GL"
AND
Fkey="TaxRate")
UPDATE
t_SystemProfile
SET
FValue="17"
WHERE
FCategory="GL"
AND
Fkey="TaxRate"
ELSE

INSERT
INTO
t_SystemProfile(FCategory,FKey,FValue)
Values("GL","TaxRate","17")
3.表示启用年度和期间,目前年度和期间,数据存放于"CurrentPeriod"
"CurrentYear","StartPeriod","StartYear"
例如:设置保存过程
IF
Exists(select
*
from
t_SystemProfile
WHERE
FCategory="IC"
AND
Fkey="CurrentPeriod")
UPDATE
t_SystemProfile
SET
FValue="7"
WHERE
FCategory="IC"
AND
Fkey="CurrentPeriod"
ELSE

INSERT
INTO
t_SystemProfile(FCategory,FKey,FValue)
Values("IC","CurrentPeriod","7")
IF
Exists(select
*
from
t_SystemProfile
WHERE
FCategory="IC"
AND
Fkey="CurrentYear")
UPDATE
t_SystemProfile
SET
FValue="2003"
WHERE
FCategory="IC"
AND
Fkey="CurrentYear"
ELSE

INSERT
INTO
t_SystemProfile(FCategory,FKey,FValue)
Values("IC","CurrentYear","2003")
go
IF
Exists(select
*
from
t_SystemProfile
WHERE
FCategory="IC"
AND
Fkey="StartPeriod")
UPDATE
t_SystemProfile
SET
FValue="7"
WHERE
FCategory="IC"
AND
Fkey="StartPeriod"
ELSE

INSERT
INTO
t_SystemProfile(FCateg
IF
Exists(select
*
from
t_Syory,FKey,FValue)
Values("IC","StartPeriod","7")
gostemProfile
WHERE
FCategory="IC"
AND
Fkey="StartYear")
UPDATE
t_SystemProfile
SET
FValue="2003"
WHERE
FCategory="IC"
AND
Fkey="StartYear"
ELSE

INSERT
INTO
t_SystemProfile(FCategory,FKey,FValue)
Values("IC","StartYear","2003")
4.历史遗留的暂估凭证
,
数据存放于FCategory="IC"
AND
Fkey="ZanguVoucher"
例如:设置保存过程:
IF
Exists(select
*
from
t_SystemProfile
WHERE
FCategory="IC"
AND
Fkey="ZanguVoucher")
UPDATE
t_SystemProfile
SET
FValue="0"
WHERE
FCategory="IC"
AND
Fkey="ZanguVoucher"
ELSE

INSERT
INTO
t_SystemProfile(FCategory,FKey,FValue)
Values("IC","ZanguVoucher","0")
5.库存结余控制(是否允许负结存(1--允许,0--不允许)数据存放于
"UnderStock"
例如:设置保存过程
IF
Exists(select
*
from
t_SystemProfile
WHERE
FCategory="IC"
AND
Fkey="UnderStock")
UPDATE
t_SystemProfile
SET
FValue="1"
WHERE
FCategory="IC"
AND
Fkey="UnderStock"
ELSE

INSERT
INTO
t_SystemProfile(FCategory,FKey,FValue)
Values("IC","UnderStock","1")
6.-核算方式
0:数量核算,1:数量、金额核算,
数据存放于FCategory="IC"
AND
Fkey="AuditChoice"
例如:设置保存过程
IF
Exists(select
*
from
t_SystemProfile
WHERE
FCategory="IC"
AND
Fkey="AuditChoice")
UPDATE
t_SystemProfile
SET
FValue="1"
WHERE
FCategory="IC"
AND
Fkey="AuditChoice"
ELSE

INSERT
INTO
t_SystemProfile(FCategory,FKey,FValue)
Values("IC","AuditChoice","1")
go
7.库存更新控制
0:审核更新,1:保存更新
数据存放于FCategory="IC"
AND
Fkey="UPSTOCKWHENSAVE")
例如:设置保存过程
IF
Exists(select
*
from
t_SystemProfile
WHERE
FCategory="IC"
AND
Fkey="UPSTOCKWHENSAVE")
UPDATE
t_SystemProfile
SET
FValue="1"
WHERE
FCategory="IC"
AND
Fkey="UPSTOCKWHENSAVE"
ELSE

INSERT
INTO
t_SystemProfile(FCategory,FKey,FValue)
Values("IC","UPSTOCKWHENSAVE","1")
1.1.1.3其他
核算参数的设置前提有两个:
工业供需链系统处于初始化阶段
工业供需链系统中不存在任何已录入的初始余额和业务单据
1.1.2初始化功能流程
1.1.2.1.初始数据录入
处理流程
采用加权平均法、移动平均法计价的物料:不进行批次管理,直接在“初始数据录入”界面的右边录入期初数量、期初金额;进行批次管理,物料必须保证所有批次的年初余额、期初余额的单价一致,录入每批次的初始数据,对于期初余额,只在“合计行”录入
计划成本法计价的物料:直接在“初始数据录入”界面的右边录入期初数量、差异类数
采用先进先出法、后进先出法计价的物料:需要通过单击“物料”和“批次/顺序号”对应的空白按钮、调出顺序录入数据
分批认定法计价:必须进行业务批次管理,因此需要通过单击“物料”和“批次/顺序号”对应的空白按钮
初始录入:初始数据分仓库、仓位录入
如果是年中启用:年初金额,年初差异,本年累计收入数量,本年累计收入金额,本年累计收入差异,本年累计发出数量,本年累计发出金额,本年累计发出差异等根据帮助说明,进行相关入录,平衡得到。
1.1.2.2流程
初试化界面数据入录的显示过程数据流程;
过滤计量单位,从计量单位表t_MeasureUnit,如:

Select
FMeasureUnitID,FUnitGroupID,FNumber,FName,fstandard
From
t_MeasureUnit

Order
by
FNumber
过滤实仓和仓位:从仓库Stock表,StockPlaceGroup仓位组表,StockPlace存放地点表
Select
FItemID,0
as
FParentID,
0
as
FSPID,
FNumber,FShortNumber,FName,FIsStockMgr
From
t_Stock
Where
FTypeID
=
500
Union
All
Select
t1.FItemID,t1.FItemID,t3.FSPID,t3.FNumber,t3.FShortNumber,t3.FName,0
From
t_Stock
t1,
t_StockPlaceGroup
t2,
t_StockPlace
t3
Where

t1.FTypeID=500
And
t1.FIsStockMgr=1
and
t1.FSPGroupID=t2.FSPGroupID
and
t2.FSPGroupID
=
t3.FSPGroupID
and
t3.FDetail
=
1
Order
by
FParentID,FNumber
显示数据的过程,从初始余额ICInvInitial
,物料表t_ICItem,计量单位表t_MeasureUnit
,辅助信息表t_SubMessage
如:
Select
u1.FItemID,t1.FNumber,t1.FShortNumber,t1.FName
as
FItemName,t1.FModel,
u1.FUnitID,t2.FName
as
FUnitName,t1.FTrack,t3.FName
as
FTrackName,
t1.FQtyDecimal,t1.FPriceDecimal,t1.FPlanPrice,t1.FKFPeriod,
(Case
When
t1.FBatchManager=1
Then
1
Else
0
End)
As
FBM,
(Case
When
t1.FISKFPeriod=1
Then
1
Else
0
End)
As
FKF,
sum(u1.FYtdAuxBegQty)
as
FInitYtdBegQty,sum(u1.FYtdBegBal-u1.FYtdBegDiff)
as
FInitYtdBegBal,sum(u1.FYtdBegDiff)
FInitYtdBegDiff,
sum(u1.FYtdAuxReceive)
as
FInitYtdReceive,sum(u1.FYtdDebit-u1.FYtdReceiveDiff)
as
FInitYtdDebit,sum(u1.FYtdReceiveDiff)
FInitYtdReceiveDiff,
sum(u1.FYtdAuxSend)
as
FInitYtdSend,sum(u1.FYtdCredit-u1.FYtdSendDiff)
as
FInitYtdCredit,sum(u1.FYtdSendDiff)
FInitYtdSendDiff,
sum(u1.FAuxBegQty)
as
FInitBegQty,sum(u1.FBegBal-u1.FBegDiff)
as
FInitBegBal,sum(u1.FBegDiff)
FInitBegDiff
From
ICInvInitial
u1,t_ICItem
t1,t_MeasureUnit
t2,t_SubMessage
t3
Where

u1.FItemID=t1.FItemID
and
u1.FUnitID=t2.FMeasureUnitID
and
t1.FTrack=t3.FInterID
and
t3.FTypeID
=
200
And
u1.FPeriod
=7
Group
by
u1.FItemID,t1.FNumber,t1.FShortNumber,t1.FName,t1.FModel,

u1.FUnitID,
t2.FName,t1.FTrack,t3.FName,

t1.FQtyDecimal,t1.FPriceDecimal,t1.FPlanPrice,t1.FKFPeriod,

(Case
When
t1.FBatchManager=1
Then
1
Else
0
End),

(Case
When
t1.FISKFPeriod=1
Then
1
Else
0
End)
Order
by
t1.Fnumber
2)物流和总帐对帐:按照物料设置的存货科目分类汇总数据从
初始余额表ICInvInitial提取数据,涉及的表有物料表t_ICItem,计量单位表,t_MeasureUnit,辅助信息表t_SubMessage
Select
u1.FItemID,t1.FNumber,t1.FShortNumber,t1.FName
as
FItemName,t1.FModel,
u1.FUnitID,t2.FName
as
FUnitName,t1.FTrack,t3.FName
as
FTrackName,
t1.FQtyDecimal,t1.FPriceDecimal,t1.FPlanPrice,t1.FKFPeriod,
(Case
When
t1.FBatchManager=1
Then
1
Else
0
End)
As
FBM,
(Case
When
t1.FISKFPeriod=1
Then
1
Else
0
End)
As
FKF,
sum(u1.FYtdAuxBegQty)
as
FInitYtdBegQty,sum(u1.FYtdBegBal-u1.FYtdBegDiff)
as
FInitYtdBegBal,sum(u1.FYtdBegDiff)
FInitYtdBegDiff,
sum(u1.FYtdAuxReceive)
as
FInitYtdReceive,sum(u1.FYtdDebit-u1.FYtdReceiveDiff)
as
FInitYtdDebit,sum(u1.FYtdReceiveDiff)
FInitYtdReceiveDiff,
sum(u1.FYtdAuxSend)
as
FInitYtdSend,sum(u1.FYtdCredit-u1.FYtdSendDiff)
as
FInitYtdCredit,sum(u1.FYtdSendDiff)
FInitYtdSendDiff,
sum(u1.FAuxBegQty)
as
FInitBegQty,sum(u1.FBegBal-u1.FBegDiff)
as
FInitBegBal,sum(u1.FBegDiff)
FInitBegDiff
From
ICInvInitial
u1,t_ICItem
t1,t_MeasureUnit
t2,t_SubMessage
t3
Where

u1.FItemID=t1.FItemID
and
u1.FUnitID=t2.FMeasureUnitID
and
t1.FTrack=t3.FInterID
and
t3.FTypeID
=
200
andu1.FPeriod
=7
and

t1.FAcctID
in
(Select
FAccountID
From
t_Account
Where
FNumber
like
"123%")

Group
by
u1.FItemID,t1.FNumber,t1.FShortNumber,t1.FName,t1.FModel,

u1.FUnitID,
t2.FName,t1.FTrack,t3.FName,

t1.FQtyDecimal,t1.FPriceDecimal,t1.FPlanPrice,t1.FKFPeriod,

(Case
When
t1.FBatchManager=1
Then
1
Else
0
End),

(Case
When
t1.FISKFPeriod=1
Then
1
Else
0
End)
Order
by
t1.Fnumber
1.1.2.3传递余额到总帐
不带数量核算、核算项目的传递
删除总帐余额表t_Balance数据,
如:
Delete
from
t_Balance
Where
FYear=?
and
FPeriod=?and
FDetailID=?
and
FAccountID=?
插入数据到余额表
Insert
into
t_Balance(….)
执行存储过程,转化为符合约束的数据
exec
sp_UpdateBalance
带数量核算、核算项目的传递
判断科目是否带核算项目,是否已经有组合在核算项目表t_itemdetail
如果没有,则插入核算项目到核算项目表t_itemdetail
删除数量余额表t_quantitybalance和科目余额t_Balance表数据
插入数据到数量t_quantitybalance和科目余额表t_Balance
过程如下:
Select
*
From
t_ItemDetail
Where
((F4=-1
or
F5=-1)
and
FDetailCount>2)
and
FDetailID=1
Select
*
From
t_ItemDetail

Where
((F4=-1)
and
FDetailCount=1)
and
FDetailID=1
Select
FQuantities
From
t_Account
Where
FAccountID=1011

Select
t1.FNumber,t1.FShortNumber,t1.FName
as
FItemName,t1.FModel,
u1.FUnitID,t2.FName
as
FUnitName,t1.FTrack,t3.FName
as
FTrackName,
t1.FQtyDecimal,t1.FPriceDecimal,t1.FPlanPrice,
(Case
When
t1.FBatchManager=1
Then
1
Else
0
End)
As
FBM,
sum(u1.FYtdAuxBegQty)
as
FTYtdBegQty,sum(u1.FYtdBegQty)
as
FTYtdBaseBegQty,sum(u1.FYtdBegBal-u1.FYtdBegDiff)
as
FTYtdBegBal,sum(u1.FYtdBegDiff)
FTYtdBegDiff,
sum(u1.FYtdAuxReceive)
as
FTYtdReceive,sum(u1.FYtdReceive)
as
FTYtdBaseReceive,sum(u1.FYtdDebit-u1.FYtdReceiveDiff)
as
FTYtdDebit,sum(u1.FYtdReceiveDiff)
FTYtdReceiveDiff,
sum(u1.FYtdAuxSend)
as
FTYtdSend,sum(u1.FYtdSend)
as
FTYtdBaseSend,sum(u1.FYtdCredit-u1.FYtdSendDiff)
as
FTYtdCredit,sum(u1.FYtdSendDiff)
FTYtdSendDiff,sum(u1.FAuxBegQty)
as
FTBegQty,sum(u1.FBegQty)
as
FTBaseBegQty,sum(u1.FBegBal-u1.FBegDiff)
as
FTBegBal,sum(u1.FBegDiff)
FTBegDiff,u1.FItemID
From
ICInvInitial
u1,t_ICItem
t1,t_MeasureUnit
t2,t_SubMessage
t3
Where

u1.FItemID=t1.FItemID
and
u1.FUnitID=t2.FMeasureUnitID
and
t1.FTrack=t3.FInterID
and
t3.FTypeID
=
200
and
u1.FPeriod
=7
and
t1.FAcctID
in
(Select
FAccountID
From
t_Account
Where
FNumber
like
"123%")

Group
by
u1.FItemID,t1.FNumber,t1.FShortNumber,t1.FName,t1.FModel,
u1.FUnitID,
t2.FName,t1.FTrack,t3.FName,
t1.FQtyDecimal,t1.FPriceDecimal,t1.FPlanPrice,(Case
When
t1.FBatchManager=1
Then
1
Else
0
End),u1.FItemID,Order
by
t1.FNumber
Select
FDetailID
From
t_ItemDetail
Where
FDetailCount=1
and
F4=73
Select
max(isnull(FDetailID,0))+1
as
FNewID
From
t_ItemDetail
Insert
into
t_ItemDetail(FDetailID,FDetailCount,F4)Values(2,1,73)
Insert
into
t_ItemDetailV(FDetailID,FItemClassID,FItemID)Values(2,4,73)
Delete
from
t_Balance
Where
FYear=2003
and
FPeriod=7
and
FDetailID=2
and
FAccountID=1011
Insert
into
t_Balance(FYear,FPeriod,FAccountID,FDetailID,FCurrencyID,FBeginBalanceFor,FDebitFor,FCreditFor,FYtdDebitFor,FYtdCreditFor,FEndBalanceFor,FBeginBalance,FDebit,FCredit,FYtdDebit,FYtdCredit,FEndBalance)
Values(2003,7,1011,2,1,
1,0
,0,
0,0
,1,
1,0
,0,
0,0
,1)
Insert
into
t_Balance(FYear,FPeriod,FAccountID,FDetailID,FCurrencyID,FBeginBalanceFor,FDebitFor,FCreditFor,FYtdDebitFor,FYtdCreditFor,FEndBalanceFor,FBeginBalance,FDebit,FCredit,FYtdDebit,FYtdCredit,FEndBalance)
Values(2003,7,1011,2,0,
1,0
,0,
0,0
,1,
1,0
,0,
0,0
,1)
Delete
from
t_Balance

Where
FYear=2003
and
FPeriod=1
and
FDetailID=2
and
FAccountID=1011
Insert
into
t_Balance(FYear,FPeriod,FAccountID,FDetailID,FCurrencyID,FBeginBalanceFor,FDebitFor,FCreditFor,FYtdDebitFor,FYtdCreditFor,FEndBalanceFor,FBeginBalance,FDebit,FCredit,FYtdDebit,FYtdCredit,FEndBalance)
Values(2003,1,1011,2,1,
1,0,0
,
0,0
,1,
1,0,0
,
0,0
,1)
Insert
into
t_Balance(FYear,FPeriod,FAccountID,FDetailID,FCurrencyID,FBeginBalanceFor,FDebitFor,FCreditFor,FYtdDebitFor,FYtdCreditFor,FEndBalanceFor,FBeginBalance,FDebit,FCredit,FYtdDebit,FYtdCredit,FEndBalance)
Values(2003,1,1011,2,0,
1,0,0
,
0,0
,1,
1,0,0
,
0,0
,1)
go
Delete
from
t_QuantityBalance

Where
FYear=2003
and
FPeriod=7
and
FDetailID=2
and
FAccountID=1011
Insert
into
t_QuantityBalance(FYear,FPeriod,FAccountID,FDetailID,FCurrencyID,FBeginQty,FDebitQty,FCreditQty,FYtdDebitQty,FYtdCreditQty,FEndQty)
Values(2003,7,1011,2,1,
1,0
,0,
0,0
,1)
Insert
into
t_QuantityBalance(FYear,FPeriod,FAccountID,FDetailID,FCurrencyID,FBeginQty,FDebitQty,FCreditQty,FYtdDebitQty,FYtdCreditQty,FEndQty)
Values(2003,7,1011,2,0,
1,0
,0,
0,0
,1)
Delete
from
t_QuantityBalance

Where
FYear=2003
and
FPeriod=1
and
FDetailID=2
and
FAccountID=1011
Insert
into
t_QuantityBalance(FYear,FPeriod,FAccountID,FDetailID,FCurrencyID,FBeginQty,FDebitQty,FCreditQty,FYtdDebitQty,FYtdCreditQty,FEndQty)
Values(2003,1,1011,2,1,
1,0,0
,
0,0
,1)
Insert
into
t_QuantityBalance(FYear,FPeriod,FAccountID,FDetailID,FCurrencyID,FBeginQty,FDebitQty,FCreditQty,FYtdDebitQty,FYtdCreditQty,FEndQty)
Values(2003,1,1011,2,0,
1,0,0
,
0,0
,1)
1.1.2.4初始余额数据录入和保存:icinvinitial
字段名
类型
描述
FPeriod
INTEGER
会计期间
FStockID
INTEGER
库房內码
FAuxBegQty
FLOAT
辅助期初数量
FBatchNo
STRING
批号
FBegBal
FLOAT
期初余额
FBegDiff
FLOAT
期初料成本差异
FBegQty
FLOAT
期初数量
FBillInterID
INTEGER
顺序号
初始化数据最小内码
每次取值时加1,直到0为止
FBrNo
STRING
公司机构类码
FCredit
FLOAT
本期发出余额
FDebit
FLOAT
本期收入余额
FEndBal
FLOAT
期末余额
FEndQty
FLOAT
期末数量
FItemID
INTEGER
物料内码
FKFDate
STRING
生产日期
FKFPeriod
FLOAT
保质期(天)
FYtdSendDiff
FLOAT
本年累计支出差异
FReceive
FLOAT
本期收入数量
FReceiveDiff
FLOAT
本期收入成本差异
FSend
FLOAT
本期发出数量
FSendDiff
FLOAT
本期发出成本差异
FSPID
INTEGER
仓位内码
FUnitID
INTEGER
单位内码
FYtdAuxBegQty
FLOAT
年初辅助单位数量
FYtdAuxReceive
FLOAT
本年累计辅助单位接收数量
FYtdAuxSend
FLOAT
本年累计辅助单位发出数量
FYtdBegBal
FLOAT
年初余额
FYtdBegDiff
FLOAT
年初差异
FYtdBegQty
FLOAT
年初基本单位数量
FYtdCredit
FLOAT
本年发出余额
FYtdDebit
FLOAT
本年收入余额
FYtdReceive
FLOAT
本年收入数量
FYtdReceiveDiff
FLOAT
本年累计收入差异
FYtdSend
FLOAT
本年发出数量
汇总数据:汇总是由于控件直接产生
1.1.2.5初始化数据的规则
1)不能录入虚仓和虚拟件的初始数据

如果物料的属性为:“特征类”、“规划类”、“虚拟件”,则此物料不是物理上实际存在的物料,仓库中也不可能有结存,因此这三种属性的物料不允许进行初始数据录入。

在K3中,把“待检仓”、“代管仓”、“赠品仓”定义为“虚仓”(虚仓与实仓的区别是:虚仓只核算数量,不核算金额;实仓核算数量,也核算金额。),但是虚仓在物理上是实际存在的。如果虚仓在初始化期间有期初结存数量,可以在关闭初始化后分别录入“采购检验申请单”、“收料通知单”、“赠品入库单”,将虚仓的初始结存数量录入到系统中去。
2)FBatchNO字段

批号,用于业务批次批次管理、分批认定法、保质期管理的物料。

当物料既使用分批认定法又使用批次管理,则二者共用此字段。库存单据和余额表也有FBatchNO字段,用法相同。
3)FBillInterID字段

顺序号,用于先进/后进先出法,FBillInterID是系统自动分配的一个
顺序号,用来区分各个批次的先后顺序,在IcBal和IcInvBal表中也有这
个字段。以前版本FBillIterID与FEntryID配合使用,分别取单据ID和分
录ID,目前版本FBillIterID字段和单据ID没有任何关系,而FEntryID也
已经作废。
4)保质期

FKFDate
:生产日期

FKFPeriod
:保质期

只有当物料使用保质期管理时,才使用FDFDate和FDFPeriod这两个字段。如果物料未使用保质期管理(t_IcItem.FIsKFPeriod=0),那么此物料在IcInvInitIal表IcStockBillEntry表Ic(Inv)Bal表中的FKFPeriod和FKFDate字段都必须为零或Null值,否则在进行及时库存查询时该物料会出现一正一负两条数据。
5)FPeriod字段

关闭初始化前,IcInvInitIal表只保存初始化期间的数据,Fperiod=初始化所在期间;关闭初始化后,IcInvIntiaIal保存两个期间的数据:零期与本期的数据。其中零期的数据是初始化期间的数据,本期间数据用于期初始金调整。
6)IcInvInitIal表初始化期间有些字段必为零

初始数据录入只能本年累计发生数和期初余额,不能录入本期发生额。
所以IcInvInitIal表中初始化期间的数据如下字段必为零——
Freceive(本期收入数量)、Fdebit(本期收入金额)、

FreceiveDiff(本期收入差异)、Fsend(本期发出数量)、
Fcredit(本期发出金额)、FsendDiff(本期发出差异)、
FEndQty(本期期末结存数量)、FEndBal(本期期末结存金额)
7)FunitID字段

如果是按常用计量单位录入数量,则FunitID字段保存常用计量单位ID,
系统自动换算出基本计量单位数量:

FytdBegQty
=FYtdAuxBegQty
*
t_MeasureUnit
.FCoefficient

注意:计量单位一旦被使用,换算系数不允许修改,如果在数据库中强
行修改了计量单位的换算系数,IcInvInitIal表数据不会变动。也就是说
,如果将来反初始化再来看IcInvInitIal表时,可能不再遵循此换算关系。
8)平衡关系
数量平衡关系:
年初结存数量+本年累计收入-
本年累计发出
=
初始化期间期初结存数量
FytdBegQty
+
FytdReceive

FytdSend
=
FBegQty
FytdauxBegQty
+
FytdauxReceive

FytdauxSend
=
FauxBegQty
金额平衡关系:
FytdBegbal+
FytdDebit-
FytdCredit=
FBegbal
差异平衡关系:
FytdBegDiff
+
FytdReceiveDiff

FytdSendDiff=
FBegDiff1.1.3结束初始化
1.3.1检查条件如下
检查执行操作人的权限;
启用期前的单据是否经过审核和金额是否为0;
检查网络控制是否有冲突
1.1.3.2结束初始化过程
执行存储过程StockINIDataOn完成初始化
如:
EXEC
StockINIDataOn
1.1.3.3结束初始化的处理内容
1、检查“启用期前的单据”:—
必须已审核;—
如果是数量金额核算,金额必须大于零;
2、将IcInvInitIal数据写入IcInvBal,将IcInvBal汇总写入IcBal.
3、将IcInvInitIal数据写入IcInventory;
4、
备份初始化数据Update
ICInvInitial
Set
FPeriod=0
5、处理系统参数表Update
t_SystemProFile
Set
FValue="0"
Where
FCategory="IC"
And
FKey="InvDataPeriod"
Update
t_SystemProFile
Set
FValue="1"
Where
FCategory="IC"
And
FKey="ICClosed"
6、处理启用前的单据
将IcStockBill中启用期前的暂估入库单对应的FVchInterID置为-1,对应每张启用期前的暂估入库单向t_MakeVouchTemp插入一条
FVchInterID=-1,FTranType=4000的记录;对应每张启用期前的销售出库单向ICSaleVoucher插入一条
FVoucherID=0,FTypeID=0的记录。
1.1.4
反初始化
以前版本执行《工业物流反初始化new.sql》
10.和10.1系统已经有界面功能
在工业物流反初始化前,必须先反审核计划价调价单
1.1.5初始化以前三类单据
三类单据:初始化以前期间暂估单和未核销销售出库单、启用期前的未核销委外加工出库单
企业在系统启动日期之前,会有一些业务因为单据不全还没有处理完毕,如采购业务中,当没有收到对方开出的发票时,无法确定已入库的货物的成本而只能暂估入账,所以在系统启用期前还可能有些暂估入库单。
而另外一些业务,可能由其业务性质决定了不能在一期完成,而是需要分期进行,如在销售业务中,处理分期收款的销售业务时,肯定会存在一些尚未核销的前期销售出库单。启用期前的未核销委外加工出库单

录入:〖工具〗→〖系统初始化〗→〖录入启用期前的暂估入库单〗〖工具〗→〖系统初始化〗→〖录入启用期前的未核销销售出库单〗〖初始化〗→〖系统初始化〗→〖录入启用期前的未核销委外加工出库单〗
条件:
期间<启用期间序时簿里显示的是期间<启用期间的单据结束初始化后这些单句是不可以修改的,可以通过条件查询到启用初始化之前必须审核这些单据,否则提示不让结束初试化
结束初始化后的这些单据的处理:启用期前的暂估入库单启用期前的暂估入库单在业务系统不再生成暂估凭证,等单(发票)到后,统一进行单到冲回处理
录入启用期前的未核销销售出库单对已审核但尚未核销的销售出库单进行拆单操作
录入启用期前的未核销委外加工出库单:进行和入库单核销
关于其初始金额的处理:由于在启用期初的账务余额中,已经包括了以前期间进行暂估的单据的账务金额(即已在总账系统生成凭证),所以,启用期前的暂估入库单在业务系统不再生成暂估凭证,启用期前的不能调整期初余额,而且其发生额不计算到本期报表以及即时库存中
启用期前的暂估入库单和未核销销售出库单这两种库存类单据、序时簿的一般处理与日常单据处理的区别:
1、名称不同,启用期前的三种单据分别称呼为“启用期前的暂估入库单”、“启用期前的未核销销售出库单”、“启用期前的未核销委外加工出库单”,而日常单据处理应分别称呼为“外购入库单”、“销售出库单”、“委外加工出库单”;
2、筛选条件不同,启用期前的三类单据筛选条件是:期间<启用期间;
3、单据状态不同:其他单据只允许录入,不能审核,而启用期前的三类单据必须在初始化启用前审核;
4、位置不同:启用期前的三类单据单独管理,不在单据管理模块中处理;
5、在库存类单据中只允许暂估入库单、销售出库单、委外加工出库单可以录入前期单据
6、启用期前的三类单据序时簿中不能允许其他不符合条件的单据录入或进行审核、查看等操作;
7、启用期前的三类单据不能调整期初余额,而且其发生额不计算到本期报表以及即时库存中
数据结构:

在出入库单据表(icstockbill,icstockbillentry)保存记录,
icstockbill.fdate<初始化时间,fcheckerid不为空,fstatus=1

但启用期前的暂估入库单在暂估冲回凭证表t_makevouchtemp
保留记录,为以后单到冲回用(FVchInterID=-1,FVchNumbe=-1,
FTranType=4000)

1.2工业系统参数设置
1.2.1系统设置
主要:有公司名称、地址、税务登记号、开户银行及账号、公司代码、专用发票精度、系统名称、增值税率等
相关的数据结构:主要存放系统参数表
t_systemprofile
如下
select
FCategory,FDescription
,FValue,FKey
from
t_systemprofile
where
FKey
IN("CompanyAddress","CompanyName","CompanyTax","CompanyYHAccount")
And
FCategory="General"
--------公司名称、地址、税务登记号、开户银行及账号
Union
select
FCategory,FDescription
,FValue,FKey
from
t_systemprofile
where
Fkey
in
("FBrNo","SystemName","SInvoiceDecimal")
And
FCategory="IC"
-----公司代码、专用发票精度、系统名称
Union

select
FCategory,FDescription
,FValue,FKey
from
t_systemprofile
where
Fkey
in
("TaxRate")
And
FCategory="GL"
Order
By
FKey------增值税
1.2.2编码规则设置
编码规则包括前缀、后缀、当前值和格式四个属性
前缀、后缀:都是字符型字段,系统有默认设置,用户可以根据每个单据设置不同的前、后缀
当前值:即某类单据最近一张的编号值,为数字型字段,对于新建账套,系统统一默认为“0”,表示当前没有单据。当然用户也可以重新安排单据的当前值设置,以后系统就以当前值为起点自动、顺序为单据编码。
格式:指编码的数字位数,以保证单据顺序编码的数字能够同位处理,如果不定义格式,系统的顺序编号使单据的编码位数不同,有时还可能会使用户产生编码排序错误的误解,如编号为“out18”的单据可能会排在“out2”之前。格式是以“0”来表示位数,一个“0”就表示数字的一位。用户定义数字位数时,想定义几位数字,就在该列入框填入几个“0”即可。
相关的数据结构:编码规则存放如下表
SELECT
FBillName,FPreLetter,FcurNo,FSufLetter,FFormat
FROM
ICBillNo
Order
by
FPos
1.2.3打印控制
若选择不控制某种单据打印次数,则该单据可打印任意次数。如果选择了控制打印次数,而最大打印次数为“0”,则表示该种单据不允许打印控制打印次数在该条属性上用鼠标单击,界面上显示“”形式,表示要控制打印次数。
相关的数据结构:打印控制存放于表ICPrintMaxCount
SELECT
FID,FName,FPrintControlOrNo,FPrintMaxCount
FROM
ICPrintMaxCount
Order
by
FPos
1.2.4单据科目类型
相关的数据结构:ICBillType
和单据类型表和科目表t_Account
SELECT
t1.FID,t1.FName,t1.FNumber,t1.FNote,t1.FAcctID,t2.FNumber
as
FAcctNumber
FROM
ICBillType
t1
left
join
t_Account
t2
ON
t1.FAcctID=t2.FAccountID
Order
by
t1.FID
1.2.5工业整体选项:共17项
处理分销业务流程,审核人与制单人可为同一人,使用双计量单位,单据编号可手工录入,基础资料录入与显示采用短代码,单据打印前自动保存,数量合计栏显示纯数量合计,单据操作权限控制到操作员组,若应收应付系统未结束初始化,则业务系统发票不允许保存,启用多级审核,对检验方式不为免检的物料允许不检查,序时簿最大行数,序时簿拖动列宽后保存,序时簿显示关联标志,启用锁库功能,序时簿新增后立即刷新,启用订单批次跟踪功能
相关的数据结构:
SELECT
a.FIndex,a.FPropertyID,a.FCaption,a.FCategory,a.FKey,b.FValue
From
ICSystemProfile
a
,t_systemprofile
b
Where
a.FID=0
and
a.fkey=b.fkey
Order
by
a.FIndex
1.2.6采购系统选项:共10项
在采购系统中应用物料对应表,采购最高限价预警,金额在采购申请单选销售订单时可见,采购订单单价默认为含税单价,采购订单保存时自动更新供应商供货信息,已关闭的采购订单可以追加物料,现购发票不传递到应付款系统,与入库单相关联的采购发票审核时自动钩稽,检验单审核时自动生成退料通知单,订单执行数量允许超过订单数量
相关的数据结构:
SELECT
a.FIndex,a.FPropertyID,a.FCaption,a.FCategory,a.FKey,b.FValue
From
ICSystemProfile
a
,t_systemprofile
b
Where
a.FID=1
and
a.fkey=b.fkey

Order
by
a.FIndex
1.2.7销售系统选项:共11项
在销售系统中应用物料对应表,启用价格管理,销售最低限价预警
,登陆系统时,按信用期限对超期应收款进行预警,销售订单单价默认为含税单价,销售订单保存时自动更新价格管理资料,处理销售订单时提供缺货预警功能,已关闭的销售订单可以追加物料,与出库单相关联的销售发票审核时自动钩稽,销售出库单审核后自动生成收料通知单,订单执行数量允许超过订单数量
相关的数据结构:
SELECT
a.FIndex,a.FPropertyID,a.FCaption,a.FCategory,a.FKey,b.FValue
From
ICSystemProfile
a
,t_systemprofile
b
Where
a.FID=3
and
a.fkey=b.fkey

Order
by
a.FIndex
1.2.8仓存系统选项
:在仓存系统中使用物料对应表,登录系统时,按保质期对到期物料给予预警,保质期预警提前期,金额在仓存可见,录单时物料的仓存和默认仓库不一致时给予提示,更新库存数量出现负库存时给予预警,库存总数量高于或等于最高库存量时给予预警,库存总数量低于或等于最低库存量时给予预警,库存总数量低于或等于安全库存量时给予预警,严格按投料单发料,库存状态查询
相关的数据结构:
SELECT
a.FIndex,a.FPropertyID,a.FCaption,a.FCategory,a.FKey,b.FValue
From
ICSystemProfile
a
,t_systemprofile
b
Where
a.FID=2
and
a.fkey=b.fkey

Order
by
a.FIndex
1.2.9核算系统选项
共11项
相关的数据结构:
SELECT
a.FCategory,a.FKey,a.FValue,*
FROM
t_Systemprofile
a
WHERE
FCategory="IC"
and
FKey
in(
"CheckBillPosted","ZanguMethod","CalculateType","NoOriginPrice","NegPrice","AdjustPrice","NotVerBillToClose","NotGetCreToClose","IsOkToModAfterClose","IsShowStockData","")
1.2.10成本核算共4项
相关的数据结构:
SELECT
a.FCategory,a.FKey,a.FValue,*
FROM
t_Systemprofile
a
WHERE
FCategory="CB"
and
FKey
in(
"CostRevert","QuoToItem","MatCalStyle","IsRefreshStdPrice")

1.2.11生产系统选项共11项
下达生产任务单时自动审核投料单,下达生产任务单时自动审核工票,按标准用量倒冲领料与冲减在制品,交互方式倒冲领料,投料单审核时自动锁库,自制任务严格控制在制品数量,委外任务严格控制在制品数量,生产任务单自动下达时启用自动替代,套用时保留系统当前日期之前的工厂日历,下道工序的接收数等于上道工序的移交数,严格控制工序的接收数,生产任务单下达生成投料单时物料按自然BOM排序,生成下级任务单的编号保留上级任务单编号
相关的数据结构:
SELECT
a.FIndex,a.FPropertyID,a.FCaption,a.FCategory,a.FKey,b.FValue
From
ICSystemProfile
a
,t_systemprofile
b
Where
a.FID=6
and
a.fkey=b.fkey

Order
by
a.FIndex

1.2.12车间1项
在MPS计算时计算可签约量
相关的数据结构:
SELECT
a.FIndex,a.FPropertyID,a.FCaption,a.FCategory,a.FKey,b.FValue
From
ICSystemProfile
a
,t_systemprofile
b
Where
a.FID=7
and
a.fkey=b.fkey

Order
by
a.Findex
1.2.13
业务流程设计应用:
在表ICTemplate
中FmustInput=0未必选,1必选
FvisForBillType
可选设置为对应单据号的代码,不可选为0
其中可选t1.FVisForBillType=对应单据号的代码,
t1.FMustInput=
0
必选t1.FVisForBillType=对应单据号的代码,
t1.FMustInput=
0
SELECT
FID,FName
FROM
ICTransactionType
Where
FID
not
in
(101,90,74,40,43,100,87,51,52,58,59,84,45,46,65,50,53,88,55,54,500)
Order
by
FType,FID
go
SELECT
t1.*
FROM
ICTemplate
t1,ICTransactiontype
t2

WHERE
t1.FID=t2.FTemplateID
AND
t1.FCtlType=5
AND
t1.FEnable>0
AND
t2.FID=70
1.2.14其他:
1)系统设置:公司地址、名称、系统名称等设置会出现在需要打印的单据、报表中,应按实际情况进行设置或修改,专用发票精度、增值税率等设置会直接引用到相关的单据数据处理里,用户也要按业务需要正确设置
2)编码规则的组合是“前缀+当前值+后缀”,可全部组合设置,也可部分组合设置。几种设置组合是:前缀+当前值+后缀,前缀+当前值,当前值+后缀,当前值
1.3工业辅助功能
1.3.1多级审核
(一)
原理:
多级审核的原理:
业务审核;单据的业务数据、业务描述的正确性作出审核
单据多级审核:对业务的可行性进行评价,确认其合法性、并对合理性进行审核和批准。特别是一些涉及大型项目管理、重要业务合同的处理更是慎重。
同时,多级审核也是岗位负责制的体现,对企业人员职责管理起到重要作用
(二)
操作流程:
多级审核设置的权限只授予系统管理员
系统参数设置“启用多级审核”à【单据一级审核】→【单据二级审核】→……→【单据业务审核】
(三)
数据结构:涉及的表
t_systemprofile
,
t_MultiLevelCheck,
t_MultiCheckOption,
ICChatBillTitle,
ICTableRelation,
ICTemplate,
对应单据表
1.启用多级审核:设置系统参数t_SystemProfile中单据多级审核的值为1
Update
t_SystemProfile
Set
FValue="1"
Where
FCategory="IC"
and
FKey="ISUseMultiCheck"
2.设置单据的各级审核人通过表t_MultiLevelCheck控制
3.设置多级审核的操作选项参数t_MultiCheckOption(主要最大审核级次,审核金额,其他选项)
4.更新单据表的多级审核的字段,使得单据和叙事簿按照多级审核设置显示,主要通过表
ICChatBillTitle,ICTableRelation,
ICTemplate,
对应单据表来控制
5.审核过程在具体单据上,填加对应级次审核人,和审核时间
t_MultiCheckOption表结构
FBillType
INTEGER
单据类型
来源ictransactiontype
FCheckCtlLevel
INTEGER
业务控制级次f
FCurrencyID
INTEGER
币别
t_currency
FMaxCheckLevel
INTEGER
最高审核级次
FMultiCheckAmount
FLOAT
多级审核金额
FOptionValue
INTEGER
审核选项值
自动换算
t_MultiLevelCheck
t_MultiCheckOption表结构
字段名
类型
描述
FBillType
INTEGER
单据类型
FCheckLevel
INTEGER
审核级次
FCheckMan
INTEGER
审核人员
(四)
其他
在日常使用过程中,需要更改某单据的多级审核级次设定,必须保证所有该种单据处
以下一种状态:处于尚未进行任何一级审核的新增状态,已完成了业务审核多级审核更改审核级次时,最好将全部级次审核完毕后再更改审核级次。
1.3.2供应商供货信息
(一)业务流程:
1.
在采购订单、采购发票、收料通知单、退料通知单等采购业务单据和外购入库单新增时,系统会根据所录入的供应商、物料、数量所在的数量范围、币别以及系统选项(采购订单单价默认为含税单价)和使用的计量单位等信息,自动匹配供应商供货信息的报价和折扣率,填入不同单据的相应字段中,用户可以修改该价格
2.
启用采购订单单价默认为含税单价选项,会自动计算,除了采购订单和采购普通发票(不涉及含税)外,其它采购单据的“单价”字段均传递为扣除了单位税额部分的不含税价格
3.
设置折扣:供货信息中的报价是订单价格,折扣后的价格才是实际的发票价格,因此,传递到除采购订单外之外单据的“单价”字段是还要扣除单位折扣后的净价
4.
报价时间:有效的报价时间段传递为供货信息,否则无效的供货信息不能被传递
5.计量单位:在供应商供货信息中一律采用的是基本计量单位,但是在单据中,用户往往会采用常用计量单位或其它辅助计量单位,此时,系统会根据基础资料中不同计量单位之间的换算比率,将供货信息单价按比例扩大、或缩小为单据上使用的计量单位价格
6.
币别的传递和换算:见帮助
7.最高价格:见帮助
(二)
数据流程:

涉及的表:t_Supply,t_SupplyEntry
辅助表:t_ICItem,t_MeasureUnit,
t_Currency,t_Supplier
1.
物料类型为特征类、规划类的物料不参与供货信息设置(FErpClsID
not
in
(6,8))
2.
最高限价:如果对当前供应商,则单独按物料和供应商更更新,如:
Update
t_Supply
Set
FCurrencyID=1,FPOHighPrice=600
Where
FBrNo="0"
and
FItemID=172
and
FSupID=155
如果对所有供应商,则单独按物料更新
如:Update
t_Supply
Set
FCurrencyID=1,FPOHighPrice=9600
Where
FBrNo="0"
and
FItemID=172
3.
如果设置了采购订单保存时自动更新供应商供货信息,则在供应商供货信息设置的数量段区间内,将以采购定单的新单价更新供应商供货信息单价,和单据时间无关
如:t_SupplyEntry更新字段FPrice的值
Update
t_SupplyEntry
Set
FUnitID=87,FPrice=8900,FDisCount=0,FQuoteTime="2001-01-10"
Where
FSupID=155
AND
FCyID=1
AND
FItemID=167
AND
FStartQty<=100
AND
FEndQty>=100
AND
FUsed=1
AND
(FPrice<>
8900
OR
FDisCount<>0)

4.
采购最高价预警:判断单据上的单价>供应商供货信息的最高价
则提示预警信息
(条件是折合基本计量单位后的单价)
5.
表结构描述:
表:t_Supply供应商供货表
字段名
类型
描述
FBrNo
STRING
公司机构内码
FCurrencyID
INTEGER
币别
FItemID
INTEGER
物料内码
FPOHighPrice
FLOAT
采购最高限价
FSupID
INTEGER
供应商内码
表t_SupplyEntry供应商供货明细表
字段名
类型
描述
FBrNo
STRING
公司机构类码
FCyID
INTEGER
币别
FDiscount
FLOAT
折扣率
FEndQty
FLOAT
订货终止数量
FEntryID
INTEGER
分录号
FItemID
INTEGER
物料内码
FLeadTime
INTEGER
订货提前期
FPrice
FLOAT
单价
FStartQty
FLOAT
订货起始数量
FSupID
INTEGER
供应商内码
FUnitID
INTEGER
单位内码
1.3.3物料对应表
(一)业务概述
1.物料对供应商、客户分别都是一一对应
2.
供应商或客户+对应代码->自动带出与该对应物料
3.
供应商或客户+物料代码->对应物料的代码和名称
(二)数据结构
涉及的表:ICItemMapping,t_ICItem
1.启用物料表对应选项(采购、销售)
Update
t_SystemProfile
Set
FValue="1"
Where
FCategory="IC"
and
FKey="ApplyMapInPurchase"-------采购
If
not
exists(Select
*
from
t_SystemProfile
Where
FCategory="IC"
and
FKey="ApplyMapInSale")
INSERT
INTO
t_SystemProfile(FCategory,FKey,FValue,FReadonly,FDescription)
VALUES
("IC","ApplyMapInSale","1",1,"在销售系统中应用物料对应表")
Else
Update
t_SystemProfile
Set
FValue="1"
Where
FCategory="IC"
and
FKey="ApplyMapInSale"
2.输入单据过程自动对应信息是通过存储过程GetItemDetailByID

3.表ICItemMapping物料对应表结构
字段名
类型
描述
FCompanyID
INTEGER
往来单位内码
FID
INTEGER
基础资料类别
FItemID
INTEGER
基础资料内码
FMapName
STRING
基础资料映射名称
FMapNumber
STRING
基础资料映射代码
FPropertyID
INTEGER
往来单位类别
1.客户、
8.供应商
1.3.4价格资料
(一)、
业务概述
1.
在销售订单、销售发票、销售发货单、退货通知单等销售业务单据和销售出库单新增时,系统会根据所录入的客户、物料、数量所在的数量范围、币别以及系统选项(销售订单单价默认为含税单价)和使用的计量单位等信息,自动匹配销售价格资料扣率,填入不同单据的相应字段中,用户可以修改该价格
2.
启用销售订单单价默认为含税单价选项,会自动计算,除了销售订单和销售普通发票(不涉及含税)外,其它采购单据的“单价”字段均传递为扣除了单位税额部分的不含税价格
3
报价时间:有效的报价时间段传递为价格资料,否则无效的价格资料不能被传递(如果数量段为0则不受限制)
4计量单位:在价格资料中一律采用的是基本计量单位,但是在单据中,用户往往会采用常用计量单位或其它辅助计量单位,此时,系统会根据基础资料中不同计量单位之间的换算比率,将供货信息单价按比例扩大、或缩小为单据上使用的计量单位价格
5
币别的传递和换算:见帮助
(二)、数据流程:
1.涉及的表:t_Cust,t_CustEntry,t_ICItem,t_Organization,t_Currency
2.最低价格预警和设置
销售价格预警:判断单据界面价格<销售最低价
,则提示预警功能
最低价格设置:更新t_Cust的FSELowPrice
3.自动更新价格资料:
更新过程:不受时间限制,受数量段限制
Update
t_CustEntry
Set
FUnitID=87,FPrice=4000,FDisCount=0,FQuoteTime="2001-01-10"
Where
FCustID=95
AND
FCyID=1
AND
FItemID=189
AND
FStartQty=0
AND
FEndQty=0
AND
FUsed=1
AND
(FPrice<>4000
OR
FDisCount<>0)

4.表结构
价格管理表t_Cust
字段名
类型
描述
FCurrencyID
INTEGER
币别
FCustID
INTEGER
客户
FItemID
INTEGER
物料
FSELowPrice
FLOAT
销售最低限价
价格管理分录表t_CustEntry
字段名
类型
描述
FCustID
INTEGER
客户
FCyID
INTEGER
币别
FDiscount
FLOAT
折扣
FEndQty
FLOAT
结束数量
FEntryID
INTEGER
分录号
FItemID
INTEGER
物料
FPrice
FLOAT
价格
FStartQty
FLOAT
开始数量
FUnitID
INTEGER
计量单位1.3.5折扣资料
业务:
基本和价格资料相同
数据结构
涉及的表t_Discount,
t_ICItem
t_Discount折扣管理表
字段名
类型
描述
FBoundQA
INTEGER
应用范围类型
FCustomerID
INTEGER
客户内码
FInterID
INTEGER
折扣单据号
FItemID
INTEGER
物料内码
FLBound
FLOAT
应用范围上界
FRate
FLOAT
折扣率
FUBound
FLOAT
应用范围下界
FValue
FLOAT
折扣额
FValueQA
INTEGER
折扣类型
1.3.6信用管理
(一)、业务概述1.普通用户使用信用管理首先需要在工业系统公用权限中设置权限
2.
工业供需链中要使用信用管理,应先启用应收款系统
3.
信用管理对客户、职员进行控制
4.在基础资料客户、职员必须启用是否进行信用管理的属性
5.
对职员的信用管理实际上是通过系统用户(又叫操作员)来实现的,即确定了职员信用后,要通过【系统维护】→【用户管理】,在用户管理界面上指定(或增加)该职员对应的用户,通过跟踪该用户所制单据,来对该用户所对应的操作员进行信用监控
6.具体的信用计算和控制见帮助(这部分内容较多,帮助描述很详细,建议参照帮助)
(二)、数据结构
1.涉及的表:t_credit
,
t_CreditMateriel,t_currency,t_emp,t_measureunit
,t_Organization,vw_AR_Credit_CUST,vw_AR_Credit_EMP
2.按客户设置:
1)信用基础信息:数据从
t_Credit结合t_currency,t_Organization提取,应收款余额从视图vw_AR_Credit_CUST中提取,提取公式SUM(ISNull(FARUNCheckAmount
+
FARCheckAmount,0))-SUM(ISNull(FREUNCheckAmount+FRECheckAmount,0))
其中信用期限为信用期限信息的最大数,信用数量为信用物料信息的最大数
2)信用期限信息:从表t_Credit提取
3)信用物料信息:从t_CreditMateriel提取
3.按职员设置:
1)信用基础信息:数据从
t_Credit结合t_currency,t_emp,t_user提取,应收款余额从视图vw_AR_Credit_EMP中提取,提取公式SUM(ISNull(FARUNCheckAmount
+
FARCheckAmount,0))-SUM(ISNull(FREUNCheckAmount+FRECheckAmount,0))
其中信用期限为信用期限信息的最大数,信用数量为信用物料信息的最大数
2)信用期限信息:从表t_Credit提取
3)信用物料信息:从t_CreditMateriel提取
4.信用选项:从表t_CreditOption取数,FCreditObject值为1—3
表示客户和职员的组合,信用范围FCreditRange从2—7表示信用额度,期限,数量的组合,信用控制类型FCreditControl从1---4表示四种不同的信用范围,
5.信用公式从t_CreditFormula得到,其中组合方式是通过组合值得到的
6.表结构
信用管理表:t_Credit
字段名
类型
描述
FAmount
FLOAT
信用额度
FCreditLevel
STRING
信用级次
FCreditTime
FLOAT
信用期限
FCurrencyID
INTEGER
信用币别
FDiscountRate
FLOAT
现金折扣
FInterID
INTEGER
当前内码
FItemClassID
INTEGER
核算项目类别
FItemID
INTEGER
物料内码
FQty
FLOAT
信用数量
FType
INTEGER
类型
信用管理物料t_CreditMateriel
字段名
类型
描述
FClerkCustID
INTEGER
客户或职员ID
FEntryID
INTEGER
分录号
FItemClassID
INTEGER
核算项目类别
FItemID
INTEGER
物料内码
FQty
FLOAT
数量
FUnitID
INTEGER
计量单位
t_CreditOption信用管理选项表
字段名
类型
描述
FBillType
INTEGER
单据类型
FCreditControl
INTEGER
信用控制类型
FCreditObject
INTEGER
信用对象
FCreditRange
INTEGER
信用范围
FInterID
INTEGER
内码
FPassworld
STRING
密码
信用管理公式表t_CreditFormula
字段名
类型
描述
FCreditType
INTEGER
信用类型
FCreditValue
INTEGER
信用设置值
FDelayPreDate
INTEGER
延迟天数
FInterID
INTEGER
内码
1.3.7批号管理
(一)业务描述
1.采用业务批次管理的物料、每组物料、全部物料可以分别设置批号编码,设置编码适应的优先顺序是:
第一优先级为物料、第二优先级为物料组、第三优先级为全部物料,按照这样的优先级次序,如果针对某个物料,对其设置了批号编码规则,对其所在组也设置了批号编码规则,则该物料适用物料上设置的批号编码规则
2.
物料批次管理的约定:物料选用了“分批计价法”作为计价方法,物料的属性为“配置类,物料要进行保质期管理
3.财务批号和业务批号不同:财务批号用于成本计算用,业务批号用于反应业务信息
数据结构描述
判断物料是否是批次管理:(t_ICItem

FBatchManager
=
1)
批号规则表ICBatchNoRule中全部物料的单据规则保存为fitemid
=0
批号规则表ICBatchNoRule中物料组的单据规则保存为fitemid
<>0
and
fdetail=0
批号规则表ICBatchNoRule中物料的单据规则保存为fitemid
<>0
and
fdetail=1
批号规则表ICBatchNoRule结构
字段名
类型
描述
FID
int
级次
FItemID
int
物料内码
FPropertyID
int
批号属性值
FUseShortNumber
bit
是否使用短代码
FFormatDate
varchar
格式
FSelDefine
varchar
自定义批号
FWidth
int
宽度
FCharacter
char
补位符
FSubCharacter
char
替换符
FDetail
int
是否明细物料
1.3.8条形码,条形码关联
(一)业务描述:

1.
不需要解析的条形码的设置,直接在核算项目中设置(除费用),条形码设置界面支持一品多码的设置,但不允许一个条码对应多个物料

2.
需要解析的条形码,不能将条形码设置在物料属性的条形码标签中去。而必须设置条形码规则并且将条形码规则与单据进行关联
(二)数据结构描述:

1.
不需要解析的条形码的设置
直接在核算项目条形码栏目中设置:数据保存在表t_BarCode

2.需要解析的条形码:
(1)条码表t_BCodeRule中记录需要解析的条形码
(2)条码描述表t_BCodeRuleField记录具体的条形码设计过程,注意起始位约定是3,因为按照标准条形码的规定1-2位为企业内码标识
(3)
条码项目表t_BCodeItem提供条码项目设置时的选用的字段
(4)条形码关联是通过关联自定义的条形码,形成对应关系,数据存放在表t_BcodeSceneRule

注意事项
如果使用了条形码,而且如果定义了条形码与物料代码一致,会以条形码为准,不考虑物料代码;没有条形码的才会匹配物料代码。
条码在单据头支持在输入核算项目的地方录入条码解析,在单据体中只支持在物料代码处录入条码解析。
条码不支持自定义字段的携带和录入解析。
条码中的信息如果没有权限或已经禁用,则该字段为空。
另外条码解析时单据体中与物料相关的字段,规则中没有物料,则不能进行解析
1.3.9客户BOM和批号对应表
业务描述(详细描述见帮助)
客户BOM和批号对应表在系统中的主要应用就是在业务单据及相应序时簿处理时同步处理供应商对应物料和客户对应物料信息,以保证供应商的货物信息及时形成采购业务信息,以及销售业务信息及时传递给客户单据保存反写客户和批号对应表:关联生产任务单或销售订单的蓝字产品入库单的配置类物料在更新库存时,关联生产任务单的蓝字委外加工入库单的配置类物料在更新库存时
没有关联生产任务单或销售订单单据更新库存时,检查配置类物料的客户BOM+批号与客户BOM和批号的对应表中是否一致性

生产领料单控制不能录入配置类物料
委外加工出库单控制不能录入配置类物料
数据结构描述
BOM和批号对应表ICOrderBatchTrace
建立时物料类型为配置类物料t_ICItem.
FErpClsID
=
7,
ICBom类型为客户bom
反写客户和批号对应表:
库存更新时检查配置类物料的客户BOM+批号与客户BOM和批号的对应表中是否存在
例如:..ICOrderBatchTrace
WHERE
FItemID=211
AND
FBatchNo="CustBOM4"
AND
FCustBOMID<>1167
AND
FCustBOMID<>0
如果存在不许要反写
如果不存在时反写插入到BOM和批号对应表INSERT
INTO
ICOrderBatchTrace
ICOrderBatchTrace
没有关联生产任务单或销售订单单据更新库存时检查配置类物料的客户BOM+批号与客户BOM和批号的对应表中是否一致
单据更新库存时检查单据检查配置类物料的客户BOM+批号与客户BOM和批号的对应表中是否一致性中如:..
FROM
ICOrderBatchTrace
WHERE
FItemID=211
AND
FBatchNo="1122"
AND
FForbid=0
存在允许更新及时库存,否则不允许更新及时库存,要求手工在BOM和批号对应表插入记录

ICOrderBatchTrace表结构
字段名
类型
描述
FTraceID
int
跟踪号
FItemID
varchar
物料内码
FBatchNo
int
批次号
FCustBOMID
int
客户bom内码
FOrderInterID
int
订单内码
FForbid
是否禁用
二、采购系统
2.1采购申请单
2.1.1采购申请单的生成
2.1.1.1采购申请单的手工录入
处理流程

提取单据模板-----取得单据号(从ICBillNo
)---取得单据内码(从ICMaxNum
)---保存单据
到货日期=建议采购日期+提前期
建议采购日期
=
到货日期

提前期
2.1.1.2单据新增
(1)选择单据模板(根据上面模板,显示单据,主要是ICTemplate,ICTemplateEntry,ICTransactionType表)
(2)执行GetICMaxNum
"POrequest提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=
70
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=70
(4)插入数据到单据Porequesentry,Poreques
DELETE
POrequest
WHERE
FInterID=81
INSERT
INTO
Porequesentry(……)
INSERT
INTO
Poreques
(…..)
2.1.1.3单据模板
(1)单据的事物类型
ftrantype=70
SELECT
*
FROM
ICTransactionType
Where
FID
IN
(70)
(2
)单据模板为FID
=
"
P01""
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"
P01"
SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"
P01"
ORDER
BY
FCtlIndex
(3)选单模板为
FID
=
"
P01"
select
*
from
icselbills
WHERE
FID
=
"
P01"
(4)单据对应关系模板为
ictablerelation
中类型为80
select
*
from
ictablerelation
where
ftypeid=80
(5)单据字段描述表为中类型为80
select
*
from
icchatbilltitle

where
ftypeid=80
2.1.1.4相关的数据结构
主表:Porequest,PorequestEntry
辅助表:ICBillNo,ICMaxNum,
Porequest表
字段名
类型
描述
注释
FBillNo
STRING
申请单号
从ICBillNo取
FCancellation
INTEGER
作废
0-未作废,1-作废
FInterID
INTEGER
申请单内码
ICMaxNum

FStatus
INTEGER
状态
0-未审核,1-已审核,2-部分关联,3-全部关联
FBillerID
INTEGER
制单人
FBrNo
STRING
公司机构内码
FCheckerID
INTEGER
审核人
FCheckTime
DATETIME
审批日期
FClosed
INTEGER
是否关闭
FDate
DATETIME
单据日期
FDeptID
INTEGER
使用部门
FMRP
INTEGER
MRP类型
FMrpClosed
INTEGER
业务关闭状态
FMultiCheckLevel1
INTEGER
一审
FMultiCheckLevel2
INTEGER
二审
FMultiCheckLevel3
INTEGER
三审
FMultiCheckLevel4
INTEGER
四审
FMultiCheckLevel5
INTEGER
五审
FMultiCheckLevel6
INTEGER
六审
FNote
STRING
备注
FOrderInterID
INTEGER
订单内码
FRequesterID
INTEGER
申请人
FSCBillInterID
INTEGER
原单分录号
FTranType
INTEGER
单据类型
70-采购申请单
FPlanOrderInterID
INTEGER
计划订单内码

PorequestEntry表
字段名
类型
描述
FAPurchTime
DATETIME
建议采购日期
FAuxCommitQty
FLOAT
辅助审批数量
FAuxPrice
FLOAT
辅助单价
FAuxQty
FLOAT
辅助申请数量
FBrNo
STRING
公司机构类码
FCommitQty
FLOAT
审批数量
FEntryID
INTEGER
分录号
FFetchTime
DATETIME
到货日期
FInterID
INTEGER
申请单内码
FItemID
INTEGER
物料内码
FPrice
FLOAT
单价
FQty
FLOAT
申请数量
FSourceEntryID
INTEGER
原分录号
FSupplyID
INTEGER
供应商内码
FUnitID
INTEGER
单位内码
FUse
STRING
用途

其他:
如果需要记录执行单据修改的操作员,只要使用〖K/3系统〗→〖辅助工具〗→〖工业单据自定义工具〗,在单据头增加一自定义项为“修改人”,其<来源方式>定义为“当前操作员”,修改单据时,即可将执行修改的操作员自动取到该字段上,并且在每次成功修改后都会将其自动更新为当前操作员
2.1.1.5采购申请单根据库存生成(足缺料分析)
1.处理流程
选择〖选项〗→〖库存缺货查询录入〗
计算方式的选择包括:
1、考虑预计量和现有库存,利用预计可用量指标,对于该指标为负的情形则按其差缺量生成采购申请单;
2、再订货点策略,即根据物料基础资料中设置的<再订货点>,针对现有即时库存低于再订货点的情形,按其差缺量生成采购申请单;
3、安全库存策略,即针对现有即时库存小于安全库存的情形,按其差缺量生成采购申请单;
4、最低库存策略,针对现有即时库存小于最低库存量的情形,按其差缺量生成采购申请单。
相关的数据结构:
物料对象:外购,自制,委外加工,配置类
Select
*
From
t_submessage
where
FID
in
("ZZ","WWJG","WG","PZL")
参与计算的涉及的单据:ICInventory,ICMO,PPBOM,POOrder,SEOrder等
2.1.1.6根据物料配套查询生成:略
2.1.1.7选单录入(关联销售订单生成采购申请单)
处理流程
1、销售订单号:销售订单号字段显示被关联的采购申请单编码;同时,系统将采购申请单的物料、数量等信息传递到单据体上;
2、物料:物料是自动关联源单据相关分录而生成的,用户也可以进行修改;
3.计量单位:单位是自动关联源单据生成的,用户可以根据实际情况进行修改;
4、数量:数量是自动关联源单据生成的,用户可以根据实际数量进行修改;
5、系统可以控制不同系统单据关联时屏蔽单价、金额等信息
相关的数据结构:
根据选单关系表:ICSelBills
得到,举例例如下:
(1)选取关联关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
where

FID="P01"
AND
FFieldName="FOrderInterID"
select
*
from
ICTableRelation
where
FBillID="P01"
AND
FFieldID="FOrderInterID"
(2)转换数据
(3)目标单据新增
(参考目标单据新增)表字段
forderinterid记录关联内码
实际业务如果选单生成出现错误时,只要替换对应选单关系表ICSelBills的
FID="P01"的记录即可
五、单据复制
处理流程
单据上复制:复制表头,复制表体,或者两个全部选中
单据序时簿上:只提供整单复制的功能
复制单据日期:自动默认为当前系统日期,建议采购日期为数据库的日期,到货日期为建议采购日期+提前期
被复制单据的状态:无限制
复制单据:相当于手工新增,如果被复制单据是关联生成的,则不复制该单据的源单据号码
相关的数据结构:
(1)提取单据号(ICBillNo)
(2)提取单据内码(GetICMaxNum)
(3)形成临时表头和表体
select
*
into
#TempHead
From
POrequest
Where
FInterID=?
Select
*
Into
#TempEntry
From
POrequestEntry
Where
FInterID=?
(4)更新临时表的附属关系(按照新增单据的条件)
Update
#TempHead
Set
FInterID=46,FBillNo="POREQ45",FBillerID=16394,FDate=CONVERT(VARCHAR(10),GETDATE(),12)
,FCheckerID=NULL,FStatus=0,FCancellation=0
Update
#TempEntry
Set
FInterID=46
Select
distinct
t3.FFieldName
From
ICSelBills
t1
,ICTransactionType
t2
,ICTemplate
t3
Where
t2.FTemplateID=t1.FID
AND
t1.FID=t3.FID
and
t1.FFieldName=t3.FFieldName
and
t2.FID=70
go
Update
#TempHead
Set
FMrpClosed=0,FMRP=1052,FCheckTime=NULL,FPlanOrderInterID=0,FPPOrderInterID=0

Update
#TempEntry
Set
FCommitQty=0,FAuxCommitQty=0
UPDATE
#TempEntry
Set
FAPurchTime=CONVERT(VARCHAR(10),GETDATE(),120),FFetchTime=CONVERT(VARCHAR(10),GETDATE()+(SELECT
T_ICITEM.FLEADTIME
FROM
T_ICITEM
WHERE
T_ICITEM.FITEMID=#TEMPENTRY.FITEMID),120)
Update
#TempHead
Set
FMultiCheckLevel1=NULL,FMultiCheckLevel2=NULL,FMultiCheckLevel3=NULL,
FMultiCheckLevel4=NULL,FMultiCheckLevel5=NULL,FMultiCheckLevel6=NULL,
FMultiCheckDate1=NULL,FMultiCheckDate2=NULL,FMultiCheckDate3=NULL,
FMultiCheckDate4=NULL,FMultiCheckDate5=NULL,FMultiCheckDate6=NULL,FCurCheckLevel=NULL
Update
#TempHead
Set
FOrderInterID=NULL
Update
#TempHead
Set
FPPOrderInterID=NULL
(5)插入数据倒表POrequest,POrequestEntry
Insert
Into
POrequest
Select
*
from
#TempHead
Insert
Into
POrequestEntry
Select
*
from
#TempEntry
(6)删除临时表
Drop
Table
#TempHead
Drop
Table
#TempEntry
2.1.2采购申请单的业务和操作
2.1.2.1审核和反审核
处理流程
已经关闭的单单据不能反审核
相关的数据结构:
审核:更新审核人,审核状态(审核为1),审核时间(取系统时间)
Update
PORequest
Set
FCheckerID=16394,FStatus=1,FCheckTime="2001-02-09"
Where
FBrNo="0"
And
FInterID=77
反审核:清除审核人,审核状态(审核为1),审核时间(取系统时间)
Update
PORequest
Set
FCheckerID=Null,FStatus=0,FCheckTime=Null
Where
FBrNo="0"
And
FInterID=80
2.1.2.2关闭和反关闭
处理流程
自动关闭:是指该单据在关联操作过程中被系统自动置于执行完毕状态、单据自动关闭后不能再执行反关闭操作
手工关闭:是指单据上所反映的业务被部分完成或尚未完成,但通过手工执行相关操作后,将单据转为已执行完毕状态。
单据手工关闭后可以执行反关闭操作
单据关闭:必须审核
相关的数据结构:
自动关闭:采购申请单在生成订单后,订单审核且关联数量大于等于申请数单量时自动关闭申请单(设置FcommitQty=fqty,
FmrpClosed=3,Fstatus=3)
自动反关闭:当采购申请单生成的订单删除后自动反关闭(设置FcommitQty=0,
FmrpClosed=0,Fstatus=3)
手工关闭:置标志为3,把FmrpClosed赋值为1(关闭)
Update
POrequest
SET
FStatus=3
WHERE
FInterID
=
28
Update
POrequest
Set
FMrpClosed
=
1
Where
FInterID
=
28
手工反关闭:设置标志为1(审核),把FmrpClosed赋值0(反关闭)
UPDATE
POrequest
SET
FStatus=1
WHERE
FInterID=28
Update
POrequest
Set
FMrpClosed=0
WHERE
FInterID=28
当FcommitQty<
fqty
时生成的采购订单审核后,FmrpClosed=0,Fstatus=2
2.1.2.3作废和反作废,单据合并
处理流程:
作废:单据没有审核,没有关闭,没有被关联(置Fcancellation=1)
单据合并:分直接合并和按需求日期合并,供应商要求一致,求单据未作废、未审核,
单据头信息取第一张申请单的单据头信息,单据体的物料是所有单据物料的汇总数,数量逐个物料加总
2.相关的数据结构:
作废:Update
POrequest
SET
FCancellation=1
Where
FInterID
=75
反作废:Update
POrequest
SET
FCancellation=0
Where
FInterID
=75(Fcancellation=0)
单据合并:
检查单据是否审核、关联、关闭
Select
Count(*)
as
FCount
From
PoRequest
Where
FInterID
in
(38,82)
and
((FStatus>=1
and
FStatus<=3)
or
FCancellation=1)
检查物料的计划属性(是否要进行跟踪等)
SELECT
t1.FName,t1.FNumber
FROM
PORequestEntry
u1
INNER
JOIN
t_ICItem
t1
ON
u1.FItemID=t1.FItemID
WHERE
u1.FInterID
IN
(38,82)
AND
t1.FMrpCon=0
合并分录:
在第一张单据上,汇总数据,删除后面的单单据,更新采购日期和到货日期
2.2采购订单
2.2.1采购订单单据功能
2.2.1.1新增采购订单
处理流程
提取单据模板(ICTemplate
WHERE
FID
=
"P01")
-----取得单据号(从ICBillNo
)---取得单据内码(从ICMaxNum
)---保存单据
相关的数据结构:
poorder
字段名
类型
描述
FBillerID
INTEGER
制单人
FBillNo
STRING
采购订单号
FBrNo
STRING
公司机构内码
FCancellation
INTEGER
作废
FCheckerID
INTEGER
审核人
FClosed
INTEGER
 
FCompactNo
STRING
合同号
FContractID
INTEGER
合同内码
FCurCheckLevel
INTEGER
 
FCurrencyID
INTEGER
币别
FDate
DATETIME
单据日期
FDeptID
INTEGER
部门
FEmpID
INTEGER
业务员
FExchangeRate
FLOAT
汇率
FInterID
INTEGER
采购订单内码
FMangerID
INTEGER
主管
FMrpClosed
INTEGER
业务关闭状态
FMultiCheckDate1
DATETIME
 
FMultiCheckDate2
DATETIME
 
FMultiCheckDate3
DATETIME
 
FMultiCheckDate4
DATETIME
 
FMultiCheckDate5
DATETIME
 
FMultiCheckDate6
DATETIME
 
FMultiCheckLevel1
INTEGER
一审
FMultiCheckLevel2
INTEGER
二审
FMultiCheckLevel3
INTEGER
三审
FMultiCheckLevel4
INTEGER
四审
FMultiCheckLevel5
INTEGER
五审
FMultiCheckLevel6
INTEGER
六审
FOrderAffirm
INTEGER
 
FPOStyle
INTEGER
采购方式
FRelateBrID
INTEGER
供货机构
FRelationBillNo
STRING
关联单据号码
FRelationTranType
INTEGER
关联单据类型
FRequestInterID
INTEGER
申请单内码
FStatus
INTEGER
状态
FSupplyID
INTEGER
供应商内码
FTranStatus
INTEGER
传输状态
FTranType
INTEGER
单据类型
poorderentry分录表:
字段名
类型
描述
FAmount
FLOAT
金额
FAuxCommitQty
FLOAT
辅助到货数量
FAuxPrice
FLOAT
辅助单价
FAuxQty
FLOAT
辅助订货数量
FAuxStockQty
FLOAT
辅助入库数量
FBrNo
STRING
公司机构类码
FCess
FLOAT
税率
FCommitQty
FLOAT
到货数量
FDate
DATETIME
交货日期
FEntryID
INTEGER
分录号
FInterID
INTEGER
采购订单内码
FItemID
INTEGER
物料内码
FMapName
STRING
对应名称
FMapNumber
STRING
对应代码
FNote
STRING
备注
FPrice
FLOAT
单价
FQty
FLOAT
订货数量
FSourceEntryID
INTEGER
原分录号
FStockQty
FLOAT
入库数量
FTaxAmount
FLOAT
税额
FTaxRate
FLOAT
税率
FUnitID
INTEGER
单位内码
如果设置了【供应商供货信息】,系统会根据所录入的供应商、物料、数量所在的数量范围、币别、报价时间、是否有效以及系统选项(采购订单单价默认为含税单价)和使用的计量单位等信息,自动匹配供应商供货信息的报价和折扣率,填入不同单据的相应字段中,用户可以修改该价格
SELECT
*
FROM
t_SupplyEntry
Where
FSupID=
155
AND
FItemID=167
AND
FStartQty<=100
AND
FEndQty>=100
AND
FUsed=1
AND
FCyID=1
Order
By
FQuoteTime
Desc

其他:
2.2.1.2采购订单通过关联采购申请单生成
处理流程:
单价:系统传递的价格、折扣资料来自源单据
交货日期:系统默认将采购申请单单据体上的<到货日期>作为交货日期
供应商:
a)????????
所选采购申请单的一个或多个物料都录入了<来源>信息,而且相同,则取自该信息,用户不能修改。
b)???????
所选采购申请单的多个物料的<来源>信息不相同,则取自第一个所选物料的来源信息,用户不能修改。
c)???????
采购申请单上的物料未录入<来源>信息,则由用户自行添加
相关的数据结构:
选取模板过程:
select
FTableAlias,FTableName
from
ICSelBills
where
FID="P02"
AND
FFieldName
="FRequestInterID"
GROUP
BY
FTableName,FTableAlias
go
SELECT
Distinct
FColName,FName,FTableAlias,FAction
from
ICSelbills
where
FID="P02"
AND
FFieldName="FRequestInterID"
go
select
*
from
ICTableRelation
where
FBillID="P02"
AND
FFieldID="FRequestInterID"
go
SELECT
FName,FTableAlias,FSelTYpe
FROM
ICSelBills

WHERE
Upper(FID)="P02"
AND
Upper(FFieldName)
="FREQUESTINTERID"
AND
(FSelType
=-100
OR
FSelType=-200
OR
FSelType=-50)

ORDER
BY
FSelType
go
SELECT
t1.*
FROM
ICSelBills
t1,ICTemplateEntry
t2
WHERE
t1.FID=t2.FID
AND
t1.FDstCtlField=t2.FFieldName
AND
t1.FID="P02"
AND
t1.FFieldName="FRequestInterID"
AND
FSelType=0
ORDER
BY
t2.FCtlOrder,t1.FDK
Go
其他
选单关联过滤条件为;FStatus
in(1,2)
AND
FQty>u1.FcommitQt
2.2.1.3采购订单通过关联采购合同生成
处理流程
合同号:字段仍可以手工录入也可选取
合同:相当于一揽子订单或是大订单,订单针对合同的关联是只关联一份合同或一份合同中的一条或几条信息,而不是多份合同
只相当于一种单据复制性质的关联,没有严格限制关闭状态
方式:
1)合同采购订单收料通知单入库单发票;
2)合同采购订单采购发票收料通知单入库单;
3)合同采购订单入库单。
单价:系统传递的价格、折扣资料来自合同,而非供应商供货信息
税率:税率是自动关联合同生成的,用户可以根据实际情况进行修改
选取合同多条分录时,需要双击后出现‘√’表示选取
相关的数据结构:
关联过程:
SELECT
Distinct
FColName,FName,FTableAlias,FAction
from
ICSelbills
where
FID="P02"
AND
FFieldName="FContractID"
go
select
*
from
ICTableRelation
where
FBillID="P02"
AND
FFieldID="FContractID"
go
SELECT
FName,FTableAlias,FSelTYpe
FROM
ICSelBills

WHERE
Upper(FID)="P02"
AND
Upper(FFieldName)
="FCONTRACTID"
AND
(FSelType
=-100
OR
FSelType=-200
OR
FSelType=-50)

ORDER
BY
FSelType
go
SELECT
t1.*
FROM
ICSelBills
t1,ICTemplateEntry
t2
WHERE
t1.FID=t2.FID
AND
t1.FDstCtlField=t2.FFieldName
AND
t1.FID="P02"
AND
t1.FFieldName="FContractID"
AND
FSelType=0
ORDER
BY
t2.FCtlOrder,t1.FDK
go
其他:
2.2.1.4单据复制
处理流程
单据上复制:复制表头,复制表体,或者两个全部选中
单据序时簿上:只提供整单复制的功能
复制单据日期自动默认为当前系统日期;交货日期为数据库的日期
被复制单据的状态:无限制
复制单据:相当于手工新增,如果被复制单据是关联生成的,则不复制该单据的源单据号码
相关的数据结构:
提取单据号(ICBillNo)
提取单据内码(GetICMaxNum)
形成临时表头和表体
select
*
into
#TempHead
From
POOrder
Where
FInterID=
Select
*
Into
#TempEntry
From
POOrderEntry
Where
FInterID=
更新临时表的附属关系(按照新增单据的条件)
Update
#TempHead
Set
FInterID=1181,FBillNo="POORD40",FBillerID=16394,FDate=CONVERT(VARCHAR(10),GETDATE(),120)
,FCheckerID=NULL,FStatus=0,FCancellation=0
Update
#TempEntry
Set
FInterID=1181
go
Update
#TempEntry
Set
FStockQty=0,FAuxStockQty=0,FCommitQty=0,FAuxCommitQty=0

Update
#TempHead
Set
FMrpClosed=0,FContractID=0,FCompactNo=null,FOrderAffirm=0
UPDATE
#TempEntry
Set
FDATE=CONVERT(VARCHAR(10),GETDATE(),120)
Update
#TempHead
Set
FMultiCheckLevel1=NULL,FMultiCheckLevel2=NULL,FMultiCheckLevel3=NULL,
FMultiCheckLevel4=NULL,FMultiCheckLevel5=NULL,FMultiCheckLevel6=NULL,
FMultiCheckDate1=NULL,FMultiCheckDate2=NULL,FMultiCheckDate3=NULL,
FMultiCheckDate4=NULL,FMultiCheckDate5=NULL,FMultiCheckDate6=NULL,FCurCheckLevel=NULL
Update
#TempHead
Set
FContractID=NULL
Update
#TempHead
Set
FRequestInterID=NULL
插入数据
Insert
Into
POOrder……
Insert
Into
POOrderEntry………
删除临时表
Drop
Table
#TempHead
Drop
Table
#TempEntry
2.2.2订单的业务
2.2.2.1审核与反审核
审核:(置审核人,审核状态,定单的确认情况)
Update
POOrder
Set
FCheckerID=16394,FStatus=1,FOrderAffirm=(CASE
WHEN
FOrderAffirm=2
THEN
0
ELSE
FOrderAffirm
END)
反审核:(清除审核人,审核状态,定单的确认情况)
UPDATE
POOrder
SET
FOrderAffirm=0
WHERE
FInterID=1178
go
Update
POOrder
Set
FCheckerID=Null,FStatus=0
Where
FBrNo="0"
And
FInterID=1178
2.2.2.2关闭和反关闭
手工关闭:(但到货数量FcommitQty=0,辅助到货数量FauxCommitQty=0
入库数量FstockQty=0,辅助入库数量FauxStockQty=0)
到货数量指的是关联数量
Update
POOrder
SET
FStatus=3
WHERE
FInterID
=
Update
POOrder
Set
FMrpClosed
=
1
Where
FInterID
=
手工反关闭:
UPDATE
POOrder
SET
FStatus=1
WHERE
FInterID=
Update
POOrder
Set
FMrpClosed=0
WHERE
FInterID=
系统关闭:
当关联生成单据审核后
符合条件Fqty<=FcommitQty
系统就会关闭
自动关闭的单据不能实行反关闭
作废和反作废
作废:单据不能审核和关闭
Update
POOrder
SET
FCancellation=1
Where
FInterID
=
反作废:
Update
POOrder
SET
FCancellation=0
Where
FInterID
=
2.2.2.3部分关联
当关联生成的的单据审核后
符合条件Fqty>FcommitQty
且FcommitQty<>0
此时Fstatus=2,FmrpClosed=0
2.2.2.4订单追加执行
处理流程
采购订单追加执行的业务功能:采购订单在执行过程中、或在已经执行完毕的情况下,因购货计划变动或其它原因,需要增加本次下单的订货数量、修改订货价格、或直接补货。
采购订单追加执行的业务需求:订单处理能够按条目逐条追加执行
追加执行条件:
订单已被部分执行,即该订单已被收料通知单、外购入库单等单据关联
选择已关闭的采购订单可以追加物料,则已关闭(包括自动关闭和手工关闭)的采购订单都可以再进行订单的追加操作
相关的数据结构:状态和关闭标志
Update
POOrder
SET
FStatus=
(CASE
WHEN
(SELECT
COUNT(*)
FROM
POOrderEntry
WHERE
FInterID=
1148
AND
FCommitQty>0)=0
THEN
1
WHEN
(SELECT
COUNT(*)
FROM
POOrderEntry
WHERE
FInterID=
1148
AND
FCommitQty>=0
AND
FCommitQty0
THEN
2
ELSE
3
END
)
WHERE
FInterID=1148
go
Update
POOrder
SET
FMrpClosed=
(CASE
WHEN
(SELECT
COUNT(*)
FROM
POOrderEntry
WHERE
FInterID=
1148
AND
FStockQtyTHEN
1
ELSE
0
END
)
WHERE
FInterID=1148
go
2.2.3关联和下推生成
下推生成、从源单据直接关联到目标单据处理流程:
订单下推生成:生成外购入库、生成采购收货、生成购货发票(普通)、生成购货发票(专用)
择多张采购订单生成目标单据,则系统会自动下推成多张单据,即多张采购订单不能生成一张目标单据
相关的数据结构:
源单据上记录相关的关联关系
订单下推生成生成采购收货时在采购料通知单下列字段记录关联信息
FcnnInterID
关联单据内码
FrelationBillNo关联单据号
FrelationTranType
关联单据类型
订单下推生成生成生成购货发票(普通)、生成购货发票(专用时:发票或外购入库单记录关联信息
字段
ForderInterID
订单内码
FRelationBillNo
关联单据号码
FRelationTranType
关联单据类型
其他:
订单生成发票没有生成次数限制,因为没有业务关闭的关系,只是关联关系
订单生成采购料通知单外购入库单,有限制,
如果FQty
–FcommitQt>0,可以继续关联
2.2.4采购业务报表
2.2.4.1采购订单执行情况汇总表
1.处理流程
采购订单通过直接关联外购入库单、或者通过关联收料通知单、再关联外购入库单的间接关联方式,显示货物的订货数和实际入库数量,进行比较并显示其中差异
相关的数据结构:
签订量:过滤条件范围内所有的单据(例如:)
……FROM
POOrder
u1,POOrderEntry
v1,t_ICItem
t1,t_Supplier
t2,t_Department
t3,t_Emp
t4
,t_SonCompany
t12

Where
u1.FBrNo
=
v1.FBrNo
And
u1.FInterID
=
v1.FInterID

AND
v1.FItemID=t1.FItemID

AND

u1.FSupplyID=t2.FItemID
and
u1.FRelateBrID*=t12.FItemID

AND
u1.FDeptID*=t3.FItemID
And
u1.FEmpID*=t4.FItemID

AND
u1.FDate>="2001-01-01"
AND
u1.FDate<="2001-02-10"
And
u1.FCancelLation=0
默认排序:
ORDER
BY
u1.FDate,u1.FInterID,v1.FitemID

入库量:考虑直接关联和间接外购入库单
过滤条件:比较繁琐,通过6段程序过滤得到的
未入库量:订单量减入库量

FUnCommitQty=FOrderQty-FCommitQty

FCUUnCommitQty=FCUOrderQty-FCUCommitQty
2.2.4.2采购订单执行情况明细表
处理流程
按供应商显示的每张订单的订单数量、其执行的入库数量、未入库数量
相关的数据结构:
从临时表#T121形成签定数量
从临时表#T121_1形成入库数量(比较繁琐,考虑很多种组合情况)
从签定数量-入库数量=未入库量
2.3收料通知单
2.3.1收料通知单据功能
2.3.1.1手工新增
1.处理流程:
2.相关的数据结构:
收料通知表:POInStock
字段名
类型
描述
FBClosed
INTEGER
 
FBillerID
INTEGER
制单人
FTranType
INTEGER
单据类型
FUpStockWhenSave
INTEGER
更新库存
FBillNo
STRING
通知单号
FBrNo
STRING
公司机构内码
FCancellation
INTEGER
作废
FCheckerID
INTEGER
审核人
FClosed
INTEGER
 
FCnnBillNo
STRING
 
FCnnInterID
INTEGER
关联单据内码
FCurCheckLevel
INTEGER
 
FCurrencyID
INTEGER
币别
FDate
DATETIME
单据日期
FDeptID
INTEGER
部门
FEmpID
INTEGER
业务员
FExchangeRate
FLOAT
汇率
FFManagerID
INTEGER
主管
FInterID
INTEGER
通知单内码
FInvoiceClosed
INTEGER
 
FMultiCheckDate1
DATETIME
 
FMultiCheckDate2
DATETIME
 
FMultiCheckDate3
DATETIME
 
FMultiCheckDate4
DATETIME
 
FMultiCheckDate5
DATETIME
 
FMultiCheckDate6
DATETIME
 
FMultiCheckLevel1
INTEGER
一审
FMultiCheckLevel2
INTEGER
二审
FMultiCheckLevel3
INTEGER
三审
FMultiCheckLevel4
INTEGER
四审
FMultiCheckLevel5
INTEGER
五审
FMultiCheckLevel6
INTEGER
六审
FNote
STRING
备注
FPosterID
INTEGER
记账人
FPOStyle
INTEGER
采购方式
FPurchaseInterID
INTEGER
采购订单内码
FRelateBrID
INTEGER
供货机构
FRelationBillNo
STRING
关联单据号
FRelationTranType
INTEGER
关联单据类型
FSManagerID
INTEGER
主管人
FStatus
INTEGER
状态
FStockID
INTEGER
收料库房
FSupplyID
INTEGER
供应商内码
收料通知单分录表:POInStockEntry
字段名
类型
描述
FAmount
FLOAT
金额
FAuxBCommitQty
FLOAT
辅助实退数量
FAuxCommitQty
FLOAT
辅助实收数量
FAuxInvoiceQty
FLOAT
辅助发票数量
FAuxPrice
FLOAT
辅助单价
FAuxQty
FLOAT
辅助通知数量
FAuxQtyPass
FLOAT
辅助合格数量
FBCommitQty
FLOAT
实退数量
FBrNo
STRING
公司机构类码
FCommitQty
FLOAT
实收数量
FEntryID
INTEGER
分录号
FInterID
INTEGER
通知单内码
FInvoiceQty
FLOAT
发票数量
FItemID
INTEGER
物料内码
FMapName
STRING
对应名称
FMapNumber
STRING
对应代码
FNote
STRING
备注
FPrice
FLOAT
单价
FQty
FLOAT
通知数量
FQtyPass
FLOAT
合格数量
FSourceEntryID
INTEGER
原分录号
FUnitID
INTEGER
单位内码
2.3.1.2审核与反审核审核时更新单据的审核人字段为当前操作员(FCheckerID=?)和单据状态为1(FStatus=1),不分时间单据
例如:
Update
POInstock
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=1161
如果是虚仓业务则,还需要更新虚仓及时库存
,如:
UPDATE
POInventory
SET
FQty=96
WHERE
FBrNo="0"
AND
FItemID=170AND
FStockID=153
反审核时更新单据的审核人字段为空null(FCheckerID=null)和单据状态为0(FStatus=0)
,条件是单据未关闭和未被其他单据关联
如果是虚仓还需要更新虚仓及时库存POInventory
例如:
Update
POInstock
Set
FCheckerID=Null,FStatus=0
Where
FBrNo="0"
And
FInterID=1158
2.3.1.3关闭与反关闭
手工关闭:单据要求审核,关闭时置单据状态为3
例如:
Update
POInstock
SET
FStatus=3
WHERE
FInterID
=
1159
业务关闭:如果FCommitQty>=0
AND
FCommitQty
单据状态为2
如果FCommitQty>=0
AND
FCommitQty
>=FQty单据状态为3
反关闭:当选单关闭后,不能反关闭,必须反审核关联单据后自动反关闭,对于手工关闭的单据反关闭置单据状态为1
例如:
UPDATE
POInstock
SET
FStatus=1
WHERE
FInterID=1163
2.3.2收料通知单业务功能
2.3.2.1下推生成质检单
处理流程:
物料属性必须为全检,抽检
单据的仓库为代检仓
单据物料的数量-已经通过检验的数量(关联原单)-关联生成退回单数量>0
如果设置:对检验方式不为免检的物料允许不检查,则收料通知单上检验方式为抽检、全检的物料可以不生成检验单、直接传递到外购入库单
相关的数据结构
判断物料表属性质检FInspectionLevel<>352(免检)
判断收料通知单仓库是否为FStockID=501(代检仓)
判断收料通知单.FAuxQty
-
收料通知单.FAuxQtyPass
-
关联生成退料通知单.
fAuxqty>0
2.3.2.2下推退料通知单
处理流程:

如果单据已执行完毕,则不能继续下推

多张收料通知单生成目标单据,则系统会自动下推成多张单据,多张收料通知单不能生成一张目标单据
非待检仓
相关的数据结构

如果FCommitQty>=0
AND
FCommitQty收料通知单单据状态为2
如果FCommitQty>=0
AND
FCommitQty
>=FQty收料通知单单据状态为3
下推生成的退料通知单过程
选取ICSelBills
下推对应的字段
选取ICTableRelation的数据传递对应关系
检查t_SystemProfile中CHECKUSERGROUP,ALLOWNOCHECKFORCHECKITEM是否控制到操作员组和对检验方式不为免检的物料允许不检查
保存数据到poinstock
,poinstockentry单据类型为73

下推生成外购入库单
非待检仓才能下推生成外购入库单
如果FCommitQty>=0
AND
FCommitQty收料通知单单据状态为2
如果FCommitQty>=0
AND
FCommitQty
>=FQty

收料通知单单据状态为3
在下推生成外购入库单审核时根据存储过程WriteBack_1反写提交数量到
poinstockentry
同时是需仓则需要扣减虚仓及时库存
下推生成其他入库单
只有代管仓可以下推生成其他入库单
如果FCommitQty>=0
AND
FCommitQty收料通知单单据状态为2
如果FCommitQty>=0
AND
FCommitQty
>=FQty收料通知单单据状态为3
2.4外购入库单
2.4.1业务描述
2.4.1.1单价的传递关系
(1)外购入库单关联采购订单生成时系统传递的价格、折扣资料来自采购订单,而非供应商供货信息;如果用户选择“采购订单单价默认为含税单价”的选项,传递的计算公式应为单价=订单单价/(1+税率)×(1—折扣率);如果用户不选择“采购订单单价默认为含税单价”的选项,传递的计算公式应为单价=订单单价×(1—折扣率);
(2)外购入库单关联采购发票生成系统传递的价格、折扣资料来自采购发票,而非供应商供货信息;
采购增值税发票到外购入库单:入库单单价=发票不含税单价
采购普通发票到外购入库单:入库单单价=发票单价×(1—税率)(3)系统传递的价格、折扣资料来自收料通知单,而非供应商供货信息;外购入库单单价=收料通知单单价(4)外购入库单关联退料通知单生成:系统传递的价格、折扣资料来自退料通知单,而非供应商供货信息

(5)蓝字外购入库单关联红字外购入库单生成系统传递的价格、折扣资料来自原单据,而非供应商供货信息
2.4.1.2库存更新、数量反填
(1)外购入库单关联采购订单生成外购入库单更新库存后,会将入库数量反写回采购订单的入库数量
(2)外购入库单关联收料通知单生成如果收料通知单关联订单,则在保存时反写收料通知单的选单数量,更新库存时反写订单的入库数量
(3)蓝字外购入库单关联红字外购入库单生成如果原外购入库单上查存在关联订单,则在保存时反写外购入库单的选单数量,更新库存时反写订单的入库数量
(4)外购入库单关联退料通知单生成如果退料通知单上查存在关联订单,则在保存时反写退料通知单的选单数量,更新库存时反写订单的入库数量

2.4.2单据功能
2.4.2.1.新增单据
(1)单据的finterid从icmaxnum提取(保存单据时会同步更新)
(2)单据的fbillno从icbillno提取
(保存单据时会同步更新)
(3)单据的FDCStockID保存入库仓库
(4)单据表icstockbill中FTranType=1为外购入库单,状态fstatus=0,
icstockbillentry记录单据分录
(5)单据模版系列表单据模版表:ictemplate,ictemplateentry
中FID
="A01"为外购入库

单据字段描述表
:ICChatBillTitle中
FTypeID=58为外购入库单

单据选单关系表:ICTableRelatio中FTypeID=58为外购入库单,icselbills
中FID
="A01为外购入库

单据事务类型表:ictransactiontype
中FID=1
为外购入库
2.4.2.2选单生成条件

1).关联收料通知单生成条件:收料通知单已经审核未执行完毕(v1.FStatus
in(1,2)
AND
u1.FQty>u1.FCommitQty)

2).
关联采购订单生成条件:
采购订单已经审核未未执行完毕(v1.FStatus
in(1,2)
AND
u1.FQty>u1.FCommitQty)

3).关联采购发票生成条件:采购发票未核销和未作废(v1.FStatus=0
AND
v1.FCancellation=0)
4).红字外购入库单关联退料通知单生成:退料通知单已经审核未未执行完毕,仓库为实仓
(v1.FStatus
in(1,2)
AND
u1.FQty>u1.FBCommitQty
AND
ISNULL((SELECT
FtypeID
FROM
t_Stock
WHERE
FItemID=v1.FStockID),500)=500)
5).红字外购入库关联原单生成:原蓝字单据已经审核未执行完毕(v1.FROB=1
AND
v1.FStatus
in(1,2)
AND
u1.FQty>u1.FCommitQty)
关联单据生成内部关系的传递
1)外购入库单关联发票生成:icstockbill中FInvoiceInterID=关联发票的内码,FRelationBillNo为发票的单据号,FRelationTranType为对应单据的类型为75—普通,76――专用
2)
外购入库单关联订单生成:icstockbill表中FOrderInterID=关联订单的内码,FRelationBillNo为订单的单据号,FRelationTranType为对应单据的类型71
3)外购入库单关联收料通知单生成:
icstockbill
表中
FSCBillInterID=关联收料通知单的内码
,FRelationBillNo为收料通知单单据号,FRelationTranType为对应单据的类型72
4)红字外购入库单关联蓝字单据生成:icstockbillbiao
表中
FRSCBillInterID=原单的内码,FRelationBillNo为原蓝字单据单据号,FRelationTranType为对应单据的类型1
5)
红字外购入库单关联退料通知生成:icstockbill
表中
FBSCBillInterID=原单退料通知的内码,
FRelationBillNo为原联退料通知单单据号,FRelationTranType为对应单据的类型73
2.4.3业务功能
2.4.3.1单据审核、反审核
审核:设置单据状态为1、审核人
,如下
Update
ICStockBill
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=2009
如果及时库存为审核更新,则执行存储过程p_UpdateStorage更新及时库存,如果关联生成还需要执行存储过程WriteBack_1
写回数量
反审核:设置单据状态为0、清除审核人
如:
Update
ICStockBill
Set
FCheckerID=Null,FStatus=0
Where
FBrNo="0"
And
FInterID=2008
如果及时库存为审核更新,则执行存储过程p_UpdateStorage更新及时库存,如果关联生成还需要执行存储过程WriteBack_1
写回数量
2.4.3.2作废、反作废
作废:设置作废标志为1,
Update
ICStockBill
SET
FCancellation=1
Where
FInterID
=2007
反作废:设置作废标志为0
Update
ICStockBill
SET
FCancellation=0
Where
FInterID
=2007
外购入库单下推生成生成内部关系的传递
下推生成发票:外购入库单ictockbill中FRelateInvoiceID记录发票的内码
外购入库单对等核销,反核销
1)条件:本期已审核单据,红兰单据信息完全相同
2)
ICHookRelations中插入一组勾籍关系
3)icstockbill中ichookinterid更新勾籍关系号
反核销:反向操作,见如下语句
Update
ICStockBill
Set
FHookInterID=0
where
FInterID=
2014
And
FTranType
=1
Update
ICStockBill
Set
FHookInterID=0
where
FInterID=
2015
And
FTranType
=1

Update
IcStockBill
Set
FCheckerID
=0
where
FHookInterID=26
And
FTranType=101
-(冗余代码)
Delete
ICStockBill
Where
FHookInterID=26
And
FTranType=101
―――(冗余代码)
Delete
From
ICHookRelations
Where
FGroupNo
=
26
2.4.4表结构
icstockbill出入库单据表
FAcctID
INTEGER
科目内码
FBackFlushed
INTEGER
倒冲标志
FPosted
INTEGER
过账
FPosterID
INTEGER
记账人
FPOStyle
INTEGER
采购方式
FPurposeID
INTEGER
 
FRelateBrID
INTEGER
分支机构内码
FRelateInvoiceID
INTEGER
关联发票号
FRelationBillNo
STRING
关联单据号码
FRelationTranType
INTEGER
关联单据类型
FResourceID
INTEGER
 
FReturnBillInterID
INTEGER
退货单号
FROB
INTEGER
红蓝字
FRSCBillInterID
INTEGER
红单原单
FRSCBillNo
STRING
 
FSaleStyle
INTEGER
销售方式
FSCBillInterID
INTEGER
通知单
FSCBillNo
STRING
 
FSCStockID
INTEGER
发出库房
FSendBillNo
STRING
发出单号
FSManagerID
INTEGER
保管人
FStatus
INTEGER
状态
FSupplyID
INTEGER
供应商内码
FTaskID
INTEGER
应付单号码
FTranType
INTEGER
单据类型
FUpStockWhenSave
INTEGER
更新库存
FUse
STRING
用途
FUUID
其它
 
FVchInterID
INTEGER
凭证内码
FWBInterID
INTEGER
 
FZPBillInterID
INTEGER
赠品单据内码
FBillerID
INTEGER
制单人
FBillNo
STRING
入库单号
FBillTypeID
INTEGER
单据类别
FBrNo
STRING
 
FBSCBillInterID
INTEGER
退货通知单
FCancellation
INTEGER
作废
FCheckerID
INTEGER
审核人
FCheckSelect
INTEGER
 
FCostOBJID
INTEGER
成本对象代码
FCostOBJName
STRING
成本对象名称
FCPInStockInterID
INTEGER
产品入库单
FCurCheckLevel
INTEGER
 
FCurrencyID
INTEGER
币别
FDate
DATETIME
单据日期
FDCStockID
INTEGER
收入库房
FDeptID
INTEGER
部门
FEmpID
INTEGER
业务员
FFManagerID
INTEGER
验收人
FHookInterID
INTEGER
钩稽单据
FINBillInterID
INTEGER
 
FINSCBillInterID
INTEGER
入库单内码
FInterID
INTEGER
单据内码
FInvoiceInterID
INTEGER
发票内码
FMultiCheckDate1
DATETIME
 
FMultiCheckDate2
DATETIME
 
FMultiCheckDate3
DATETIME
 
FMultiCheckDate4
DATETIME
 
FMultiCheckDate5
DATETIME
 
FMultiCheckDate6
DATETIME
 
FMultiCheckLevel1
INTEGER
 
FMultiCheckLevel2
INTEGER
 
FMultiCheckLevel3
INTEGER
 
FMultiCheckLevel4
INTEGER
 
FMultiCheckLevel5
INTEGER
 
FMultiCheckLevel6
INTEGER
 
FNote
STRING
备注
FOrderInterID
INTEGER
定单内码
FOrgBillInterID
INTEGER
原单内码
FPayBillID
INTEGER
应付单内码
Icstockbillentry
出入库单据分录表
字段名
类型
描述
FAmount
FLOAT
金额
FAuxCommitQty
FLOAT
辅助提交数量
FAuxPlanPrice
FLOAT
辅助计划价
FAuxPrice
FLOAT
辅助单价
FAuxQty
FLOAT
辅助实际数量
FAuxQtyActual
FLOAT
辅助实存数量
FAuxQtyMust
FLOAT
辅助账存数量
FBatchNo
STRING
批次
FBrNo
STRING
 
FCommitQty
FLOAT
提交数量
FConsignAmount
FLOAT
代销金额
FConsignPrice
FLOAT
代销单价
FDCSPID
INTEGER
目标仓位
FEntryID
INTEGER
分录号
FInterID
INTEGER
单据内码
FItemID
INTEGER
物料内码
FKFDate
DATETIME
生产/采购日期
FKFPeriod
INTEGER
保质期
FMapName
STRING
对应名称
FMapNumber
STRING
对应代码
FMaterialCost
FLOAT
材料费
FNote
STRING
备注
FOperID
INTEGER
工序
FOrgBillEntryID
INTEGER
 
FPlanPrice
FLOAT
计划价
FPrice
FLOAT
单价
FProcessCost
FLOAT
加工费
FQty
FLOAT
实际数量
FQtyActual
FLOAT
实存数量
FQtyMust
FLOAT
申请数量
FSCBillInterID
INTEGER
原单内码
FSCBillNo
STRING
 
FSCSPID
INTEGER
源仓位
FSourceEntryID
INTEGER
原分录号
FTaxAmount
FLOAT
税额
FUnitID
INTEGER
单位内码
2.5购发票
2.5.1业务描述
2.5.1.1发票钩稽费用发票的计算与分配
1、新增了费用发票的单据形式后,采购发票中的“应计费用”和“运费税金”两个字段可以通过采购发票与费用发票一起和入库单钩稽后,再核算回填
2.
如果用户手工录入的该两个字段的金额,并且该张采购发票没有和费用发票一起审核,核算时不会生成其他应付单,生成凭证时会提示借贷不平
3.
如果用户在费用分配后需要调节分配到采购发票的应计费用,只需要手工修改采购发票的应计费用和运费税金,但需要保证修改后的应计费用和运费税金与费用发票的金额保持一致,否则生成凭证时会提示借贷不平
4.用户也可以在采购发票上手工录入的“应计费用”和“运费税金”两个字段的金额,只要保证应计费用和运费税金与核销的费用发票的总金额保持一致,这样不进行费用分配,只进行核算,也可以生成其他应付单和生成凭证
5.
审核时采购发票和外购入库单要求供应商一样,但费用发票的供应商可以不一样
2.5.2数据流程
2.5.2.1新增单据
(1)检查权限
(2)从ictemplate,ictemplateentry,
ICTransactionType提取单据模板
(3)
从ICBillNo提取单据号fBillNo
(4)通过GetICMaxNum
存储过程提取单据内码
(5)检查是否有重复内码单据如果有则删除DELETE
ICPurchase
WHERE
FInterID=1117
(6)反写ICBillNo单据号(update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=75)
(7)插入数据到发票icpurchase,icpurchaseentry(ftrantype=75专用发票,76普通发票)
(8)插入数据到往来业务表t_RP_Contact,收款计划表t_rp_rpdetail(判断应收应付是否结束初始化,处于的期间)
(9)根据选项更新供应商供货信息表t_supplier
2.5.2.2关联生成(1)关联采购定单生成:
多张关联时只记录第一张关联单据的内码信息
在发票表icpurchase字段FOrderInterID记录对应定单的内码,FRelationBillNo记录对应定单的单据号,FRelationTranType记录单据的类型

(2)关联合同生成
每次只能关联一张合同
在发票表icpurchase字段FCompactNo记录对应合同的号码,FRelationBillNo记录对应合同的号码,FRelationTranType=0
(3)关联入库单生成

在发票表icpurchase字段FInStockInterID记录对应入库单的内码,FRelationBillNo记录入库单的单据号,FRelationTranType记录对应入库单的类型
(4)红字采购发票关联蓝字采购发票生成

在发票表icpurchase字段FRSCBillInterID记录对应蓝字采购发票的内码,FRelationBillNo记录蓝字采购发票的单据号,FRelationTranType记录对应蓝字采购发票的类型,Frob
=-1
2.5.2.3复制单据:同单据新增
2.5.2.4发票审核(1)审核要素:
采购发票的审核是与发票与外购入库单钩稽同时完成的;
??
以后期间的采购发票不能被审核;
发票不能和以后期间的外购入库单钩稽;
以前期间、或已记账的发票不能反审核;
无论是本期或以前期间的发票,审核后都作为当期发票来核算成本
(2)选择隐藏列

发票隐藏列:超过20列会给予提示,且影响速度,数据保存在ICSchemeProfileEntry
表where
FSchemeID
=
-84其中ICSchemeProfileEntry
表的fvalue值表示显示列,其值来源于内码select
FInterID
from
icchatbilltitle
where
FTypeID=84
and
(FVisible=1
or
FInterID<0)
单据隐藏列:超过20列会给予提示,且影响速度,数据保存在ICSchemeProfileEntry
表where
FSchemeID
=
-58其中ICSchemeProfileEntry
表的fvalue值表示显示列,其值来源于内码select
FInterID
from
icchatbilltitle
where
FTypeID=58
and
(FVisible=1
or
FInterID<0)
费用发票隐藏列:超过20列会给予提示,且影响速度,数据保存在ICSchemeProfileEntry
表where
FSchemeID
=
-89其中ICSchemeProfileEntry
表的fvalue值表示显示列,其值来源于内码select
FInterID
from
icchatbilltitle
where
FTypeID=89
and
(FVisible=1
or
FInterID<0)

(3)审核过程◆提取发票数据(从ICPurchase
v1,
ICPurchaseEntry)◆提取单据数据(从ICStockBill
v1
,ICStockBillEntry)◆提取费用发票(从ICExpenses
v1
,ICExpensesEntry)
◆判断核销数量的差异◆提取最大钩稽序号:select
isnull(Max(FGroupNo),0)
as
FGroupNo
from
ICHookRelations

插入数据;插入记录到钩稽关系表ICHookRelations(包括发票,单据,费用发票)
例如:FGroupNo为钩稽内码,FHookType为钩稽类型(0为采购发票审核),FIBTag单据类型标志(0为发票、1单据、2为费用发票),FIBInterID单据内码,FIBNo单据号,
FYear,FPeriod
表示核销期间)
Insert
into
ICHookRelations(FGroupNo,FHookType,FBrNo,FIBTag,FIBInterID,FIBNo,FYear,FPeriod)

Select
26,0,"0",0,t1.FInterID,v1.FBillNo,
2001,1
From
#tmpInterID
t1
inner
join
ICPurchase
v1
on
t1.FInterID=v1.FInterID

Insert
into
ICHookRelations(FGroupNo,FHookType,FBrNo,FIBTag,FIBInterID,FIBNo,FYear,FPeriod)

Select
26,0,"0",1,t1.FInterID,v1.FBillNo,
2001,1
From
#tmpSTInterID
t1
inner
join
ICStockBill
v1
on
t1.FInterID=v1.FInterID

Insert
into
ICHookRelations(FGroupNo,FHookType,FBrNo,FIBTag,FIBInterID,FIBNo,FYear,FPeriod)

Select
26,0,"0",2,t1.FInterID,v1.FBillNo,
2001,1
From
#tmpInterIDExp
t1
inner
join
ICExpenses
v1
on
t1.FInterID=v1.FInterID

◆更新数据:更新发票,费用发票的钩稽内码,审核状态,审核人,更新单据的钩稽内码
Update
t1
Set
t1.FHookInterID=26,
t1.FCheckerID
=
16394,FStatus=1,FYearPeriod
="2001-01"
From
ICPurchase
t1,#tmpInterID
t2
Where
t1.FInterID
=
t2.FInterID
Update
t1
Set
t1.FHookInterID=26
From
ICStockBill
t1,#tmpSTInterID
t2
Where
t1.FInterID
=
t2.FInterID
Update
t1
Set
t1.FHookInterID=26,
t1.FCheckerID
=
16394,FStatus=1,FYearPeriod
="2001-01"
From
ICExpenses
t1,#tmpInterIDExp
t2
Where
t1.FInterID
=
t2.FInterID◆
判断是否结束初始化,判断往来业务表的状态,例如

select
FValue
from
t_rp_systemprofile
where
FKey="FFinishInitAP"

select
FStatus
from
t_rp_contact
where
FType=4
and
FInvoiceID=
1116
and
FK3Import=1◆更新往来业务表的数据,状态,更新往来业务余额
update
c
set
c.FYear=convert(int,y.FValue),c.FPeriod=convert(int,p.FValue)
from
t_rp_contact
c,t_systemprofile
y,t_systemprofile
p
where
c.FType=4
and
c.FInvoiceID=1116
and
c.FK3Import=1
and
y.FKey="CurrentYear"
and
y.FCategory="IC"
and
p.FKey="CurrentPeriod"
and
p.FCategory="IC"
update
t_RP_Contact
set
FStatus=FStatus
|
1
where
FInvoiceID=1116
and
FType
=
4
and
FK3Import=1
update
t_RP_ContactBal
set
FDebit=FDebit+85000,
FDebitFor=FDebitFor+85000,
FYtdDebit=FYtdDebit+85000,
FYtdDebitFor=FYtdDebitFor+85000,
FEndBalanceFor=FEndBalanceFor+85000,
FEndBalance=FEndBalance+85000
where
FYear=2001
and
FPeriod=1
and
FCustomer=155
and
FDepartment=119
and
FEmployee=137
and
FCurrencyID=1
and
FRP=0;
update
t_RP_ContactBal
set
FBeginBalanceFor=FBeginBalanceFor+85000,
FBeginBalance=FBeginBalance+85000,
FYtdDebit=FYtdDebit+85000,
FYtdDebitFor=FYtdDebitFor+85000,
FEndBalanceFor=FEndBalanceFor+85000,
FEndBalance=FEndBalance+85000
where
FYear=2001
and
FPeriod>1
and
FCustomer=155
and
FDepartment=119
and
FEmployee=137
and
FCurrencyID=1
and
FRP=0;
update
t_RP_ContactBal
set
FBeginBalanceFor=FBeginBalanceFor+85000,
FBeginBalance=FBeginBalance+85000,
FEndBalanceFor=FEndBalanceFor+85000,
FEndBalance=FEndBalance+85000
where
FYear>2001
and
FCustomer=155
and
FDepartment=119
and
FEmployee=137
and
FCurrencyID=1
and
FRP=0
go
(4)如果选择<与入库单相钩稽的采购发票审核时自动核销>选项,则

当采购发票与一张外购入库单据采用钩稽形式的单据关联时,系统在发票审核时直接在内部完成自动钩稽,如果该发票存在连属的费用发票,则自动审核时费用发票也一起进行了审核

自动选单:根据发票匹配供应商,物料、数量、日期等在同一范围内的外购入库单,并,自动匹配的单据都标以“v”标记
手工选单:手工f8,f9选择

2.5.2.5反审核
判断是否是多级审核,如果是事先对多级审核反处理
对已经生成的暂估补差单去掉审核人、再删除。例如:
update
ICStockBill
Set
FCheckerID
=0
where
FHookInterID=26
And
FTranType=101
Delete
ICStockBill
where
FHookInterID=26
And
FTranType=101
清除发票的钩稽内码、和审核人
update
ICPurchase
set
FHookInterID=0,
FCheckerID
=
NULL,FStatus=0,FYearPeriod
=""
where
FInterID=1119
清除费用发票钩稽内码、和审核人
,如:
update
ICExpenses
set
FHookInterID=0,
FCheckerID
=
NULL,FStatus=0,FYearPeriod
=""
where
FInterID=4
清除单据的钩稽内码,如:
update
ICStockBill
set
FHookInterID=0

where
FInterID=2001
删除钩稽关系记录,如:
Delete
From
ICHookRelations
Where
FGroupNo=26
更新应收应付中发票状态,如:
update
t_RP_Contact
set
FStatus=FStatus
&
254
where
FInvoiceID=1119
and
FType
=
4
and
FK3Import=1
更新往来业务余额(倒减)t_RP_ContactBa
update
t_RP_ContactBal
set
FDebit=FDebit-1.17,
FDebitFor=FDebitFor-1.17,
FYtdDebit=FYtdDebit-1.17,
FYtdDebitFor=FYtdDebitFor-1.17,
FEndBalanceFor=FEndBalanceFor-1.17,
FEndBalance=FEndBalance-1.17
where
FYear=2001
and
FPeriod=1
and
FCustomer=155
and
FDepartment=124
and
FEmployee=146
and
FCurrencyID=1
and
FRP=0;
update
t_RP_ContactBal
set
FBeginBalanceFor=FBeginBalanceFor-1.17,
FBeginBalance=FBeginBalance-1.17,
FYtdDebit=FYtdDebit-1.17,
FYtdDebitFor=FYtdDebitFor-1.17,
FEndBalanceFor=FEndBalanceFor-1.17,
FEndBalance=FEndBalance-1.17
where
FYear=2001
and
FPeriod>1
and
FCustomer=155
and
FDepartment=124
and
FEmployee=146
and
FCurrencyID=1
and
FRP=0;
update
t_RP_ContactBal
set
FBeginBalanceFor=FBeginBalanceFor-1.17,
FBeginBalance=FBeginBalance-1.17,
FEndBalanceFor=FEndBalanceFor-1.17,
FEndBalance=FEndBalance-1.17
where
FYear>2001
and
FCustomer=155
and
FDepartment=124
and
FEmployee=146
and
FCurrencyID=1
and
FRP=0
2.5.2.6作废与反作废
作废:设置ICPurchase发票表为作废和往来业务中t_rp_contact发票为作废
Update
ICPurchase
SET
FCancellation=1
Where
FInterID
=1117
update
t_rp_contact
set
Fstatus=FStatus
|
16
where
FInvoiceID=1117
and
FK3Import=1
and
FType=4
反作废:还原ICPurchase发票和往来业务中发票原状态
Update
ICPurchase
SET
FCancellation=0
Where
FInterID
=1117
update
t_rp_contact
set
Fstatus=FStatus
&
239
where
FInvoiceID=1117
and
FK3Import=1
and
FType=4
2.5.2.7单据拆分与合并
(1)判断往来应收应付的核销状态
,收付款计划,发票状态,如:
select
FStatus,FID
from
t_rp_contact
where
FType=4
and
FInvoiceID=1120
and
FK3Import=
1
select
count(*)
from
t_rp_arbillofsh
where
FID=177
select
FBillID
from
t_rp_arpbill
where
FSourceID=1120
and

FSource=4

(2)
删除应收应付原发票的记录(包括往来业务、收付款计划)
delete
from
t_rp_rpdetail
where
FOrgID=(select
FID
from
t_rp_contact
where
FInvoiceID=1120
and
FType=4
and
FK3Import=1)
;
delete
from
t_rp_contact
where
FInvoiceID=1120
and
FType=4
and
FK3Import=1
(3)记录拆分单据的原分录号
UPDATE
ICPurchaseEntry
SET
FOrgBillEntryID=FEntryID
WHERE
FInterID=1120
And
FOrgBillEntryID=0

(4)
原单上调整数量
,金额等
Update
ICPurchaseEntry
SET
FAuxQty=FAuxQty-(5)
WHERE
FInterID=
1120
AND
FEntryID=
1
AND
FItemID=
189
UPDATE
t1
SET
t1.FAmount=t1.FAmount-t2.FAmount
,t1.FQty=t1.FQty-t2.FQty
,t1.FTaxAmount=t1.FTaxAmount-t2.FTaxAmount
,t1.FAmountMust=t1.FAmountMust-t2.FAmountMust
,t1.FDeductTax=t1.FDeductTax-t2.FDeductTax
FROM
ICPurchaseEntry
t1,
#SplitBillEntry
t2
WHERE
t1.FItemID=t2.FItemID
AND
t1.FEntryID=t2.FEntryID
AND
t1.FInterID=1120
(5)拆分后的发票新增插入到发票表中(ICPurchase、ICPurchaseEntry),在FOrgBillInterID字段记录原单号
(6)重新生成往来业务数据
t_RP_Contact和收付款计划数据t_rp_rpdetail(包括拆分后原单和拆分后的新单,更新供应商供货货信息t_supplier
合并:按拆分做反向操作
(1)判断往来应收应付的核销状态
,收付款计划,发票状态(否则不能合并)
(2)
删除应收应付母单、子单发票的往来业务数据
t_RP_Contact和收付款计划数据t_rp_rpdetail(3)删除原母单和子单,重新生成发票(4)重新生成往来业务数据
t_RP_Contact和收付款计划数据t_rp_rpdetail
(5)更新供应商供货货信息t_supplier
2.5.2.8下推生成收货单

(1)确定原单和目标单据

购货发票----采购收货)根据表ICTransactiontype、ICListTemplate、ICTemplate
如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="P03"
AND
t3.FFieldname="FPurchaseInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(72)
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"P03"
ORDER
BY
FCtlIndex
SELECT
*,FCtlOrder
AS
FNewCtlOrder,FCtlIndex
AS
FNewCtlIndex
FROM
ICTemplateEntry
WHERE
FID
=
"P03"
ORDER
BY
FCtlOrde
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

select
*from
ICSelBills
where
FID="P03"
AND
FFieldName
="FPurchaseInterID"
select
*
from
ICTableRelation
where
FBillID="P03"
AND
FFieldID="FPurchaseInterID"
2.5.2.9下推生成外购入库单
(1)确定原单和目标单据

购货发票----采购入库单)根据表ICTransactiontype、ICListTemplate、ICTemplate
如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="A01"
AND
t3.FFieldname="FInvoiceInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(1)
SELECT
*
FROM
ICTemplate
WHERE
FID="A01"
ORDER
BY
FCtlIndex
SELECT
*,FCtlOrder
AS
FNewCtlOrder,FCtlIndex
AS
FNewCtlIndex
FROM
ICTemplateEntry
WHERE
FID="A01"
ORDER
BY
FCtlOrde
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

select
*from
ICSelBills
where
FID="A01"
AND
FFieldName
="FPurchaseInterID"
select
*
from
ICTableRelation
where
FID="A01"
AND
FFieldID="FPurchaseInterID"
2.5.2.10生成费用发票
1)确定原单和目标单据

购货发票----费用发票)根据表ICTransactiontype、、ICTemplate
如:
SELECT
t1.FVisForBillType
AS
FRelation
FROM
ICTemplate
t1,ICTransactiontype
t2

WHERE
t1.FID=t2.FTemplateID
AND
t1.FFieldName="FInvoiceInterID"
AND
t2.FID
IN
(77)
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(1)
SELECT
*
FROM
ICTemplate
WHERE

FID="I06"
ORDER
BY
FCtlIndex
SELECT
*,FCtlOrder
AS
FNewCtlOrder,FCtlIndex
AS
FNewCtlIndex
FROM
ICTemplateEntry
WHERE
FID="I06"
(3)选取对应关系,主要是表(ICSelBills
、ICTableRelation

select
*from
ICSelBills
where

FID="I06"
AND
FFieldName="FInvoiceInterID"
select
*
from
ICTableRelation
where

FID="I06"
AND
FFieldName="FInvoiceInterID"
2.5.2.11下推生成反向发票:
1)确定原单和目标单据

购货发票(专用)--购货发票(专用))根据表ICTransactiontype、、ICTemplate
如:
SELECT
t1.FVisForBillType
AS
FRelation
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="I02"
AND
t3.FFieldname="FRSCBillInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(75)
SELECT
*
FROM
ICTemplate
WHERE

FID
=
"I02"
SELECT
*,FCtlOrder
AS
FNewCtlOrder,FCtlIndex
AS
FNewCtlIndex
FROM
ICTemplateEntry
WHERE
FID
=
"I02"
(3)选取对应关系,主要是表(ICSelBills
、ICTableRelation

select
*from
ICSelBills
where
FID="I02"
AND
FFieldName
="FRSCBillInterID"
select
*
from
ICTableRelation
where
FID="I02"
AND
FFieldName
="FRSCBillInterID"
2.5.3采购发票对等核销
2.5.3.1对等核销条件
?????????
对等核销必须分别为红字和蓝字的采购发票;
?????????
对等核销的发票必须全部为未审核的发票;
?????????
对等核销的发票其事务类型必须一致,即蓝字采购普通发票对应红字采购普通发票、蓝字采购专用发票对应红字采购专用发票;
?????????
对等核销的单据必须是两张业务相同、数据相反的单据,包括两张单据的供应商、物料、条目数等内容均一致,而每个条目的数量相反(即相加为零)的情形下才能予以对等核销;
?????????
一次只能选择两张单据进行对等核销;但一次只能选择一张单据进行反核销;
?????????
反核销的两张发票不能生成记账凭证。
2.5.3.2对等核销对发票状态的影响
对等核销后的采购发票视同审核;
??
对等核销后的采购发票不能再与发票核销;
??
对等核销后的采购发票视同钩稽,可以通过查询钩稽关系查询
2.5.3.3对等核销发票的账务处理
对等核销的发票,不进行账务处理,在存货核算系统的【生成凭证】界面不显示这类单据
2.5.3.4数据处理插入一组核销记录到表ICHookRelations,核销类型FHookType=0更新发票的状态:(包括红、蓝发票)
Update
ICPurchase
Set
FHookInterID=@pGroupNo,FCheckerID
=
16394,FStatus=1,FYearPeriod
=Cast(@pCurrentYear
as
Varchar)
+
"-"+
(case
len(@pCurrentPeriod)
when
1
Then
"0"
+
Cast(@pCurrentPeriod
as
varchar)
Else
Cast(@pCurrentPeriod
as
varchar)
End)

Where
FInterID=
1116
And
FHookInterID=0

更新应收应付中往来业务数据、状态、余额(包括红蓝发票)、主要是t_RP_Contact、t_RP_ContactBal)
update
c
set
c.FYear=convert(int,y.FValue),c.FPeriod=convert(int,p.FValue)
from
t_rp_contact
c,t_systemprofile
y,t_systemprofile
p
where
c.FType=4
and
c.FInvoiceID=1116
and
c.FK3Import=1
and
y.FKey="CurrentYear"
and
y.FCategory="IC"
and
p.FKey="CurrentPeriod"
and
p.FCategory="IC"
go
update
t_RP_Contact
set
FStatus=FStatus
|
1
where
FInvoiceID=1116
and
FType
=
4
and
FK3Import=1
go
update
t_RP_ContactBal
set
FDebit=FDebit+85000…….
2.5.3.5反对等核销

执行存储过程CounterHookCheck,进行反审核发票

还原收应付中往来业务数据、状态、余额(包括红蓝发票)、主要是t_RP_Contact、t_RP_ContactBal)如:
update
t_RP_Contact
set
FStatus=FStatus
&
254
where
FInvoiceID=1116
and
FType
=
4
and
FK3Import=1
update
t_RP_ContactBal
set
FDebit=FDebit-85000…………如果多级审核则更新数据,例如:
Update
ICPurchase
Set
FMultiCheckLevel3
=
Null
,
FMultiCheckDate3
=
Null
Where
FInterID
=
1116
And
FTranType
=75
2.5.4采购发票报表
1.5.4.1采购发票明细表

(1)报表方案为FRptID=170
SELECT
*
FROM
ICReportProfile
WHERE
FRptID=170
(2)数据形成:
根据发票表ICPurchase
,
ICPurchaseEntry,结合
t_ICItem
,
t_Supplier
形成数据,根据t_MeasureUnit,折算常用计量单位和基本计量单位数据
普通发票需要根据税率折合为不含税单价
明细数没有折合币别,合计数根据汇率折合为本位币了
不包含作废单据
例如:形成基本数据
select
FBrNo,FInterID,FEntryID………FROM
ICPurchase
v1,
ICPurchaseEntry
v2,
t_ICItem
t4,
t_Supplier
t8
WHERE
v1.FInterID
=
v2.FInterID
AND
v2.FItemID
=
t4.FItemID
AND
v1.FSupplyID
=
t8.FItemID
AND
v1.FDate>="2001-01-01"
AND
v1.FDate<="2001-01-28"
And
v1.FCancelLation=0
折算常用计量单位和基本计量单位数据
Update
t1
Set
t1.FBSUnitName=case
t1.FQty
when
0
then
""
else
t7B.FName
end,
t1.FCUUnitName=case
t1.FQty
when
0
then
""
else
t7C.FName
end,
t1.FBSQty=t1.FQty*(isnull(t7Q.FCoefficient,1)+isnull(t7Q.FScale,0)),t1.FCUQty=t1.FQty*(isnull(t7Q.FCoefficient,1)+isnull(t7Q.FScale,0))/t7C.FCoefficient,t1.FBSPrice=t1.FPrice/(isnull(t7Q.FCoefficient,1)+isnull(t7Q.FScale,0)),t1.FCUPrice
=
t1.FPrice
/
(IsNull(t7Q.FCoefficient,
1)
+
IsNull(t7Q.FScale,
0))
*
t7C.FCoefficien
From
#t170
t1,t_ICItem
t4,t_MeasureUnit
t7B,t_MeasureUnit
t7C,t_MeasureUnit
t7Q
Where
t1.FItemID=t4.FItemID
and
t1.FUnitID=t7Q.FMeasureUnitID
andt4.FUnitID=t7B.FMeasureUnitID
and
t4.FCUUnitID
=
t7C.FMeasureUnitID

2.6退料通知单
2.6.1退料通知单的反向作用
第一,作为收料通知单的反向执行单据,可以作为红字外购入库单的源单据,执行退货操作。
第二,退料通知单是采购质量管理中的不合格品退库单。
在收货质量检验过程中,不合格品不能入库,要退回给供应商。
第三,作为受托加工物料加工完毕、交还委托单位的业务处理单据。
第四,在涉及集团内部的分销业务处理中,与收料通知单一起作为处理集团内部购销业务和集团内部调拨业务的重要单据,并在集团企业账套间相互传递,以完成业务流程、相互沟通业务信息。
2.6.2数据流程
2.6.2.1单据模板
(1)单据的事物类型
ftrantype=29
(2
)单据模板为FID
=
"B09"’
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"P04"
ORDER
BY
FCtlIndex
SELECT
*
FROM
ICTemplateEntry
WHERE
FID="P04"
ORDER
BY
FCtlIndex
(3)选单模板为
FID
=
"P04’
select
*
from
icselbills
WHERE
FID
=
"P04"
(4)单据对应关系模板为
ictablerelation
中类型为83
select
*
from
ictablerelation
where
ftypeid=83
(5)单据字段描述表为中类型为83
select
*
from
icchatbilltitle

where
ftypeid=83
2.6.2.2新增单据

(1)选择单据模板(根据上面模板,显示单据,主要是ICTemplate,ICTemplateEntry,ICTransactionType表)
(2)执行exec
GetICMaxNum
"POInstock"
提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=
29
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=211
(4)插入数据到单据icInstock,icInstockEntry
INSERT
INTO
icInstockEntry
(……)
INSERT
INTO
icInstock
(…..)
(5)根据选项更新及时库存
2.6.2.3
审核、反审核
审核:更新及时库存(审核更新时),设置单据状态
UPDATE
POInventory
SET
FQty=-100
WHERE
FBrNo="0"
AND
FItemID=167AND
FStockID=153
Update
POInstock
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=1155
反审核:做反向更新
UPDATE
POInventory
SET
FQty=0
WHERE
FBrNo="0"
AND
FItemID=167AND
FStockID=153
Update
POInstock
Set
FCheckerID=Null,FStatus=0
Where
FBrNo="0"
And
FInterID=1155
2.6.2.4作废、反作废
置作废标志
Update
POInstock
SET
FCancellation=1
Where
FInterID
=1157
撤销标志
Update
POInstock
SET
FCancellation=0
Where
FInterID
=1157
关联收料通知单生成
根据选单关系icselbills
生成关联携带记录
根据新增功能过程保存单据
2.6.2.5下推生成外购入库单
选取选单模板ICSelbills

SELECT
*
from
ICSelbills
where
FID="A01"
AND
FFieldName="FBSCBillInterID"
选取单据的字段对应关系
select
*
from
ICTableRelation
where
FBillID="A01"
AND
FFieldID="FBSCBillInterID"
判断下推记录是否符合要求
选单据模板
SELECT
*
FROM
ICTransactionType
Where
FID
IN
(1)
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"A01"
ORDER
BY
FCtlIndex
SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"A01"
ORDER
BY
FCtlOrder
2.6.2.6关闭和反关闭
设置关闭状态
Update
POInstock
SET
FStatus=3
WHERE
FInterID
=
1156
撤消关闭状态:
如果SELECT
Count(*)
FROM
POInstockEntry
WHERE
FBCommitQty>0
AND
FInterID=1156
存在
则:UPDATE
POInstock
SET
FStatus=2
WHERE
FInterID=1156
否则UPDATE
POInstock
SET
FStatus=1
WHERE
FInterID=1156
参与单据关联数量的写回,单据模板和收料通知单共用

2.7委外加工
2.7.1委外加入库工业务

业务描述见手册和帮助
2.7.1.1委外加工入库单据模板
1)单据的事物类型
ftrantype=5
(fid=5)
SELECT
*
FROM
ICTransactionType
Where
FType
=200
(2
)单据模板为FID
=
"A05"
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"A05"

SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"A05"
ORDER
BY
FCtlIndex
(3)选单模板为
FID
=
"A05"
select
*
from
icselbills
WHERE
FID
=
"A05"
(4)单据对应关系模板为
ictablerelation
中类型为ftypeid=56
select
*
from
ictablerelation
where
ftypeid=56
(5)单据字段描述表为中类型为ftypeid=56
select
*
from
icchatbilltitle

where
ftypeid=56
2.7.1.2单据新增
(1)选择单据模板(根据上面模板,主要是依据ICTemplate,ICTemplateEntry,ICTransactionType表)
(2)执行exec
GetICMaxNum
"ICStockBill"提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=
5
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=5
(4)插入数据到单据icstock,icstockEntry
单据类型为ftrantype=5
INSERT
INTO
icstock
(……)
INSERT
INTO
icstockEntry
(…..)
(5)更新用户FUUID
UPDATE
ICStockBill
SET
FUUID=NEWID()
WHERE
FInterID=2002
2.7.1.3审核与反审核

审核:更新及时库存(根据选项决定),设置审核标志和审核人
EXEC
p_UpdateStorage
262,215,3,"111",0,"",10,0
Update
ICStockBill
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=2002
反审核:反向操作
EXEC
p_UpdateStorage
262,215,3,"111",0,"",0,0
Update
ICStockBill
Set
FCheckerID=Null,FStatus=0
Where
FBrNo="0"
And
FInterID=2002
2.7.1.4关联生产任务单生成
提取单据模板(仿照新增)
选择选单关系和字段对应关系,如:
SELECT*from
ICSelbills
where
FID="A05"
AND
FFieldName="FSCBillInterID"
select*from
ICTableRelation
where
FBillID="A05"
AND
FFieldID="FSCBillInterID"
保存单据
,更新库存
执行存储过程写回数据
exec
WriteBack_2_5
2003,
0,
更新生产任务单的完成数量
Update
ICMO
Set
FAuxQtyfinish
=
500,FAuxQtyPass
=
500
Where
FinterID
=
1173
执行存储过程处理生产任务单的状态和数量等
exec
WriteBackWIPQty
2003,
5,
0,
16394
2.7.2红字和蓝字委外加工入库单的对等核销
2.7.2.1对等核销条件
对等核销的必须分别为红字和蓝字的委外加工入库单;
??????对等核销的单据必须全部为已审核、但尚未核销的入库单;
?????
?
对等核销的单据必须是两张业务相同、数据相反的单据,包括两张单据的供应商、物料、批次、条目数、仓库等内容均一致,而每个条目的数量相反(即相加为零)的情形下才能予以对等核销;
????
对等核销的单据必须是本期或以前期间的单据,以后期间的单据不可以;
???可以允许单据为已做账单据(即前期或本期暂估单据);
?????
一次只能选择两张单据进行对等核销,但一次只能选择一张单据进行反核销。
2.7.2.2对等核销对入库单状态的影响
对等核销后的委外加工入库单不能执行反审核;
???

对等核销后的委外加工入库单不能再与费用发票钩稽、与委外加工出库单核销;
?????
对等核销后的委外加工入库单视同钩稽,可以通过查询钩稽关系查询。
2.7.2.3对等核销单据的账务处理
对等核销的入库单,如果两张单据均未做账,则统一在委外加工入库(无费用发票)处做账(分别为红字和蓝字凭证);如果其中一张单据已做账,则没做账的仍在委外加工入库(无费用发票)处做账。
对等核销的入库单,对于缺少单价的单据,仍需要通过相应的出、入库核算来确认单价后才能进行账务处理
2.7.2.4数据处理过程
从ICHookRelations
得到最大的钩稽号,插入一组记录到钩稽关系表ICHookRelations,钩稽类型为FHookType=3,更新单据的钩稽号
Declare
@pGroupNo
int,
@pRowCount
int,
@pCurrentYear
smallint,@pCurrentPeriod
smallint

Select
@pRowCount=count(*)
from
ICHookRelationsIf
@pRowCount=0Select
@pGroupNo=1

Else

begin

Select
@pGroupNo=Max(FGroupNo)
from
ICHookRelationsSelect
@pGroupNo=@pGroupNo+1EndSelect
@pCurrentYear=FValue
from
T_SystemProfile
where
FCategory="IC"
and
FKey
="CurrentYear"Select
@pCurrentPeriod=FValue
from
T_SystemProfile
where
FCategory="IC"
and
FKey
="CurrentPeriod"Insert
Into
ICHookRelations(FGroupNo,FHookType,FBrNo,FIBTag,FIBInterID,FIBNo,FYear,FPeriod,FEquityHook)Values(@pGroupNo,3,"0",1,2004,"JIN19",@pCurrentYear,@pCurrentPeriod,1)Update
ICStockBill
Set
FHookInterID=@pGroupNo

Where
FInterID=
2004
And
FTranType=5
And
FHookInterID=0

Insert
Into
ICHookRelations(FGroupNo,FHookType,FBrNo,FIBTag,FIBInterID,FIBNo,FYear,FPeriod,FEquityHook)Values(@pGroupNo,3,"0",1,2005,"JIN20",@pCurrentYear,@pCurrentPeriod,1)Update
ICStockBill
Set
FHookInterID=@pGroupNo

Where
FInterID=
2005
And
FTranType=5
And
FHookInterID=0作废与反作废
Update
ICStockBill
SET
FCancellation=1
Where
FInterID
=2008(作废)
Update
ICStockBill
SET
FCancellation=0
Where
FInterID
=2008(反作废)

2.7.3委外加工出库
2.7.3.1单据模板
1)单据的事物类型
ftrantype=28
(fid=28)
SELECT
*
FROM
ICTransactionType
Where
FType
=201
(2
)单据模板为FID
=
"A05"
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"B08"

SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"B08"
ORDER
BY
FCtlIndex
(3)选单模板为
FID
=
"B08"
select
*
from
icselbills
WHERE
FID
=‘
B08"
(4)单据对应关系模板为
ictablerelation
中类型为ftypeid=69
select
*
from
ictablerelation
where
ftypeid=69
(5)单据字段描述表为中类型为ftypeid=69
select
*
from
icchatbilltitle

where
ftypeid=69
2.7.3.2生成单据
(1)选择单据模板(根据上面模板,主要是依据ICTemplate,ICTemplateEntry,ICTransactionType表)
(2)执行exec
GetICMaxNum
"ICStockBill"提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=
28
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=208
(4)插入数据到单据icstock,icstockEntry
单据类型为ftrantype=28
INSERT
INTO
icstock
(……)
INSERT
INTO
icstockEntry
(…..)
(5)更新用户FUUID
UPDATE
ICStockBill
SET
FUUID=NEWID()
WHERE
FInterID=2003
2.7.3.3单据审核与反审核
审核与反审核

审核:更新及时库存(根据选项决定),设置审核标志和审核人
EXEC
p_UpdateStorage
171,148,6,"X02",0,"",450,-5000
Update
ICStockBill
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=2007
反审核:反向操作
eXEC
p_UpdateStorage
171,148,6,"X02",0,"",500,0
Update
ICStockBill
Set
FCheckerID=Null,FStatus=0
Where
FBrNo="0"
And
FInterID=2007
2.7.3.4关闭、反关闭
关闭:置状态为3
Update
ICStockBill
SET
FStatus=3
WHERE
FInterID
=
2007
反关闭:还原状态(判断是否有关联但还没有关闭)
SELECT
Count(*)
FROM
ICStockBillEntry
WHERE
FCommitQty>0
AND
FInterID=2007
UPDATE
ICStockBill
SET
FStatus=1
WHERE
FInterID=2007
2.7.3.5作废与反作废
Update
ICStockBill
SET
FCancellation=1
Where
FInterID
=2009(作废)
Update
ICStockBill
SET
FCancellation=0
Where
FInterID
=2009(反作废)
2.7.4
委托加工报表
2.7.4.1委托加工材料明细表(委托加工出库材料)
委托加工材料明细表:是指委托加工出库材料,反映委托加工材料的明细情况,以及已核销和未核销的数量、金额
数据形成:从ICStockBill
,ICStockBillEntry
(委托加工出库Ftrantype=28)提取数据,结合核销记录表ICClientVer和其他基础资料
SELECT
u1.FInterID,v1.FEntryID,u1.FTranType,v1.FItemID,v1.FBatchNo,
u1.FBillNo,v3.FBillNo
as
FSCBillNo,t3.FName
as
Fstock,
u1.FDate,(select
FName
from
t_vouchergroup
where
FGroupID=v2.FGroupID)+"-"+convert(varchar,v2.FNumber)
as
FVoucherNo,
u1.FNote,t1.FNumber,t1.FShortNumber,t1.FName,t1.FModel,t4.FName
as
FDoUnit,t7.FName
as
FUnitName,
t1.FQtyDecimal,t1.FPriceDecimal,v1.FQty,case
when
t1.FTrack=81
then
v1.FPlanPrice
else
v1.FPrice
end
as
FPrice,
case
when
t1.Ftrack=81
then
round(v1.FQty*v1.FPlanPrice,2)
else
round(v1.FAmount,2)
end
as
FAmount,
isNull(t5.FQty,0)
as
FPreQty,isNull(case
when
t1.Ftrack=81
then
round(t5.FQty*v1.FPlanPrice,2)
else
round(t5.FAmount,2)
end,0)
as
FPreAmount,v1.FQty-isNull(t5.FQty,0)
as
FNoQty,
(case
when
t1.Ftrack=81
then
round(v1.FQty*v1.FPlanPrice,2)
else
round(v1.FAmount,2)
end)-isNull(case
when
t1.Ftrack=81
then
round(t5.FQty*v1.FPlanPrice,2)
else
round(t5.FAmount,2)
end,0)
as
FNoAmount
From
ICStockBill
u1
inner
join
ICStockBillEntry
v1
On
u1.FInterID=v1.FInterIDleft
join
t_Voucher
v2
on
u1.FVchInterID=v2.FVoucherID

left
join
ICMO
v3
on
u1.FSCBillInterID=v3.FInterID

inner
join
t_ICItem
t1
on
v1.FItemID=t1.FItemID

inner
join
t_MeasureUnit
t7
ON
t1.FUnitGroupID=t7.FUnitGroupID
and
t7.FStandard=1

inner
join
t_Stock
t3
on
u1.FDCStockID=t3.FItemID

inner
join
t_Supplier
t4
on
u1.FSupplyID=t4.FItemID

left
join
ICClientVer
t5
On
u1.FInterID=t5.FSInterID
and
v1.FEntryID=t5.FSEntryID

WHERE
u1.Ftrantype=28
And
u1.FCancelLation=0

AND
u1.FDate
>="2001-01-01"
AND
u1.FDate
<"2001-02-01"
2.7.4.2委托加工材料汇总表

在名细表的基础上,根据汇总条件汇总数据
委托加工核销明细表
报表逐笔反映委托加工材料核销的明细情况,按会计期间、产品和核销序列号排序,一组一组地显示委外加工入库单及相核销的委外加工出库单
数据形成:
从ICStockBill
,ICStockBillEntry
(委托加工出库Ftrantype=28)提取数据,结合核销记录表ICClientVer和其他基础资料,再根据FDate,FNumb排序得到,先是提取入库数据,然后提取出库数据,
SELECT
u1.FInterID,v1.FEntryID,u1.FBillNo
as
FInNo,u1.FDate
as
FInDate,
u1.FTranType,t1.FNumber
as
FProNumber,t1.FName
as
FProName,t1.FModel,t7.FName
as
FProUnit,
t1.FQtyDecimal,t1.FPriceDecimal,v1.FQty
as
FProQty,case
when
t1.FTrack=81
then
v1.FPlanPrice
else
v1.FPrice
end
as
FProPrice,
case
when
t1.Ftrack=81
then
round(v1.FQty*v1.FPlanPrice,2)
else
round(v1.FAmount,2)
end
as
FProAmount,
v1.FmaterialCost
as
FMatFee,v1.FProcessCost
as
FDoFee,v1.FTaxAmount
as
FTax,
t4.FName
as
FDoUnit,v3.FBillNo
as
FBillNo
From
ICStockBill
u1
inner
join
ICStockBillEntry
v1
On
u1.FInterID=v1.FInterIDleft
join
t_Voucher
v2
on
u1.FVchInterID=v2.FVoucherID

left
join
ICMO
v3
on
u1.FSCBillInterID=v3.FInterID

inner
join
t_ICItem
t1
on
v1.FItemID=t1.FItemID

inner
join
t_MeasureUnit
t7
ON
t1.FUnitGroupID=t7.FUnitGroupID
and
t7.FStandard=1

inner
join
t_Stock
t3
on
u1.FDCStockID=t3.FItemID

inner
join
t_Supplier
t4
on
u1.FSupplyID=t4.FItemID

WHERE
u1.Ftrantype=5
AND
u1.FDate
>="2001-01-01"
AND
u1.FDate
<"2001-02-01"
AND
u1.FCancelLation=0
Order
by
u1.FDate,t1.FNumb

出库数据:
SELECT
u1.FInterID,v1.FEntryID,t5.FDInterID,t5.FDEntryID,u1.FBillNo
as
FOutNo,u1.FDate
as
FOutDate,
u1.FTranType,v1.FItemID,t1.FNumber,t1.FShortNumber,t1.FName,t7.FName
as
FMatUnit,
t1.FQtyDecimal,t1.FPriceDecimal,v1.FQty,case
when
t1.FTrack=81
then
v1.FPlanPrice
else
v1.FPrice
end
as
FPrice,
case
when
t1.Ftrack=81
then
round(v1.FQty*v1.FPlanPrice,2)
else
round(v1.FAmount,2)
end
as
FAmount,
t5.FQty
as
FCurQty,case
when
t1.Ftrack=81
then
round(t5.FQty*v1.FPlanPrice,2)
else
round(t5.FAmount,2)
end
as
FCurAmount

From
ICStockBill
u1
inner
join
ICStockBillEntry
v1
On
u1.FInterID=v1.FInterIDleft
join
t_Voucher
v2
on
u1.FVchInterID=v2.FVoucherID

left
join
ICMO
v3
on
u1.FSCBillInterID=v3.FInterID

inner
join
t_ICItem
t1
on
v1.FItemID=t1.FItemID

inner
join
t_MeasureUnit
t7
ON
t1.FUnitGroupID=t7.FUnitGroupID
and
t7.FStandard=1

inner
join
t_Stock
t3
on
u1.FDCStockID=t3.FItemID

inner
join
t_Supplier
t4
on
u1.FSupplyID=t4.FItemID

left
join
ICClientVer
t5
On
u1.FInterID=t5.FSInterID
and
v1.FEntryID=t5.FSEntryID

WHERE
u1.Ftrantype=28
AND
u1.FCancelLation=0

Order
by
u1.FDate,t1.FNumber2.8费用发票
2.8.1费用发票的业务
2.8.1.1费用发票的业务要求
费用发票的审核可以是与发票、外购入库单、费用发票的三方钩稽同时完成的;也可以是与委外加工入库单、费用发票的钩稽同时完成的;
以后期间的费用发票不能被审核;
发票不能和以后期间的外购入库单钩稽、委外加工入库单;
以前期间、或已记账的费用发票不能反审核;
无论是本期或以前期间的费用发票,审核后都作为当期发票来核算成本
2.8.1.2委外加工入库单和费用发票的钩稽审核
(1)
一张费用发票可以与多张委外加工入库单钩稽,多张发票也可以与一张委外加工入库单钩稽,同样,多张费用发票可以与多张委外加工入库单钩稽
(2)审核时当前所选费用发票,下方选择系统自动搜寻的、与之连属的已审核、尚未钩稽、且日期不为以后期间的委外加工入库单。费用发票还可以选择当前或以前期间的已生成凭证的但未和费用发票钩稽的委外加工入库单与之进行钩稽
(3)如果费用发票是关联采购发票生成的,则不能再和委外加工入库单再进行钩稽,而只能和采购发票一起与外购入库单进行钩稽
(4)如果用户手工录入的该两个字段的金额,并且该张委外加工入库单没有和费用发票一起审核,核算时不会生成其他应付单,生成凭证时会提示借贷不平
(5)委外加工入库单中的“加工费”和“税额”两个字段可以通过费用发票与委外加工钩稽后,再核算回填
(6)如果用户在费用分配后需要调节分配到委外加工入库单的加工费用上,只需要手工修改委外加工入库单的加工费和税额,但需要保证修改后的加工费和税额与费用发票的金额保持一致,否则生成凭证时会提示借贷不平
(7)用户也可以在委外加工入库单上手工录入的“加工费”和“税额”两个字段的金额,只要保证加工费和税额与核销的费用发票的总金额保持一致,这样不进行费用分配,只进行核算,也可以生成其他应付单和生成凭证
2.8.2业务数据描述
2.8.2.1单据模板
1)单据的事物类型
ftrantype=77
(fid=77)
SELECT
*
FROM
ICTransactionType
Where
FType
=104
(2
)单据模板为FID
=
"I06"
"
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"I06"

SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"I06"

ORDER
BY
FCtlIndex
(3)选单模板为
FID
=
"I06"
select
*
from
icselbills
WHERE
FID
=
"I06"
(4)单据对应关系模板为
ictablerelation
中类型为ftypeid=89
select
*
from
ictablerelation
where
ftypeid=89
(5)单据字段描述表为中类型为ftypeid=89
select
*
from
icchatbilltitle

where
ftypeid=89
2.8.2.2新增
(1)选择单据模板(根据上面模板,主要是依据ICTemplate,ICTemplateEntry,ICTransactionType表)
(2)执行exec
GetICMaxNum
"ICExpenses"提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=
5
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=5
(4)插入数据到单据ICExpenses,ICExpensesentry单据类型为ftrantype=77
INSERT
INTO
ICExpenses
(……)
INSERT
INTO
ICExpensesentry
(…..)
2.8.2.3采购发票连属生成费用发票
(1)调出的费用发票上,已录入自动填入连属单据号码,即为当前采购发票的单据号;另外还自动带入供应商信息,供应商可以修改
(2)连同采购发票一起审核
(3)数据流程:
◆根据前面模板要求形成费用发票模板

根据选单关系提取关联关系
select
FTableAlias,FTableName
from
ICSelBills
where
FID="I06"
AND
FFieldName
="FInvoiceInterID"
SELECT
Distinct
FColName,FName,FTableAlias,FAction
from
ICSelbills
where
FID="I06"
AND
FFieldName="FInvoiceInterID"
select
*
from
ICTableRelation
where
FBillID="I06"
AND
FFieldID="FInvoiceInterID"

◆保存费用发票,FInvoiceInterID记录关联的采购发票内码
2.8.2.4委外加工入库单连属生成费用发票
(1)调出的费用发票上,已录入自动填入连属单据号码,即为当前采购发票的单据号;另外还自动带入供应商信息,供应商可以修改
(2)审核时钩稽委外加工入库
(3)数据流程:
◆根据前面模板要求形成费用发票模板

根据选单关系提取关联关系
select
FTableAlias,FTableName
from
ICSelBills
where
FID="I06"
AND
FFieldName
="FInStockInterID"
GROUP
BY
FTableName,FTableAlias
SELECT
Distinct
FColName,FName,FTableAlias,FAction
from
ICSelbills
where
FID="I06"
AND
FFieldName="FInStockInterID"
select
*
from
ICTableRelation
where
FBillID="I06"
AND
FFieldID="FInStockInterID"
◆保存费用发票,FInStockInterID记录关联的委外加工入库单
2.8.2.5费用发票审核,反审核(以委外加工入库为例)
(1)审核:
◆提取最大钩稽序号:select
isnull(Max(FGroupNo),0)
as
FGroupNo
from
ICHookRelations

插入数据;插入记录到钩稽关系表ICHookRelations(包括发票,单据,费用发票)
例如:FGroupNo为钩稽内码,FIBTag单据类型标志(0为发票、1单据、2为费用发票),FIBInterID单据内码,FIBNo单据号,
FYear,FPeriod
表示核销期间)
Insert
into
ICHookRelations(FGroupNo,FHookType,FBrNo,FIBTag,FIBInterID,FIBNo,FYear,FPeriod)

Select
28,2,"0",0,t1.FInterID,v1.FBillNo,
2001,1
From
#tmpInterID
t1
inner
join
ICExpenses
v1
on
t1.FInterID=v1.FInterID

Insert
into
ICHookRelations(FGroupNo,FHookType,FBrNo,FIBTag,FIBInterID,FIBNo,FYear,FPeriod)

Select
28,2,"0",1,t1.FInterID,v1.FBillNo,
2001,1
From
#tmpSTInterID
t1
inner
join
ICStockBill
v1
on
t1.FInterID=v1.FInterID

◆更新数据:更新单据,费用发票的钩稽内码,审核状态,审核人,更新单据的钩稽内码
Update
t1
Set
t1.FHookInterID=28,
t1.FCheckerID
=
16394,FStatus=1,FYearPeriod
="2001-01"
From
ICExpenses
t1,#tmpInterID
t2
Where
t1.FInterID
=
t2.FInterID

Update
t1
Set
t1.FHookInterID=28From
ICStockBill
t1,#tmpSTInterID
t2
Where
t1.FInterID
=
t2.FInterID
反审核:
◆更新单据状态
UPDATE
ICStockBill
SET
FCheckerID=0
FROM
ICStockBill
v1
INNER
JOIN
ICExpenses
v2
ON
v1.FHookInterID=v2.FHookInterID
WHERE
v2.FInterID
IN
(
9)
AND
v1.FTranType=102
update
ICStockBill
set
FHookInterID=0

where
FInterID=2008
◆删除费用发票连属的暂估补差单
DELETE
v1
FROM
ICStockBill
v1
INNER
JOIN
ICExpenses
v2
ON
v1.FHookInterID=v2.FHookInterID
WHERE
v2.FInterID
IN
(9)
AND
v1.FTranType=102
◆更新发票的状态
update
ICExpenses
set
FHookInterID=0,
FCheckerID
=
NULL,FStatus=0,FYearPeriod
=""
where
FInterID=9
◆删除钩稽关系
Delete
From
ICHookRelations
Where
FGroupNo=28
◆更新费用发票的支付内码
Update
ICExpenses
Set
FPayBillInterID
=0
Where
FInterID
in(9)
2.8.3费用发票报表
2.8.3.1费用发票明细表
费用发票明细表是详细反映一定时间每张费用发票的详细业务信息
数据形成过程:从ICExpenses,ICExpensesEntry
提取数据,关联基础资料形成数据
Select
t1.FDate,t1.FBillNo,t3.FNumber
as
FSupplyFullNumber,t1.FInterID,t1.FTranType,t3.FShortNumber
as
FSupplyNumber,t3.FName
as
FSupplyName,
t4.FNumber
as
FFeeFullNumber,t4.FShortNumber
as
FFeeNumber,t4.FName
as
FFeeName,t7.FName
As
FFeeType,t2.FUnitID
as
FUnitName,
ICExpensesEntry
t2.FAuxQty,t2.FAuxPrice,t2.FAmount,t2.FTaxRate,t2.FTaxAmount,(t2.FAmount-t2.FTaxAmount)
As
FAmountEx,t2.FNote,t5.FName
as
FCheckerName,t6.FName
AS
FCurrencyName,0
as
FSumSort
from
ICExpenses
t1
inner
join
ICExpensesEntry
t2
on
t1.FInterID
=
t2.FInterID
inner
join
t_supplier
t3
on
t3.FItemID=t1.FSupplyID
inner
join
t_Fee
t4
on
t4.FItemID=t2.FItemID
left
join
t_user
t5
on
(t5.FUserID<>0
and
t5.FUserID=t1.FCheckerID)
inner
join
t_Currency
t6
on
t6.FCurrencyID=t1.FCurrencyID
inner
join
t_SubMessage
t7
on
t7.FInterID=t4.FFeeType
Where
t1.FDate>="2001-01-29"
AND
t1.FDate<="2001-01-29"
And
t1.FCancelLation=0
汇总数据:(汇总明细数据过程)
select
NULL,"","",0,77,"","","","","合计"
as
FFeeName,"","",Sum(FAuxQty),
0,Sum(FAmount*t1.FExchangeRate),0,Sum(FTaxAmount*t1.FExchangeRate),(Sum(FAmount*t1.FExchangeRate)-Sum(FTaxAmount*t1.FExchangeRate)),"","",(Select
FName
from
t_Currency
where
FCurrencyID=1),101
From
ICExpensesEntry
t2
inner
join
ICExpenses
t1
ON
t1.FInterID=t2.FInterI
inner
join
t_supplier
t3
on
t3.FItemID=t1.FSupplyID
inner
join
t_Fee
t4
on
t4.FItemID=t2.FItemID
inner
join
t_currency
t5
on
t5.FCurrencyID=t1.FCurrencyID
Where
t1.FDate>="2001-01-29"AND
t1.FDate<="2001-01-29"
And
t1.FCancelLation=0
2.8.3.2汇总费用发票汇总表
费用发票汇总表是按关键字汇总数据、以综合反映费用的报表
数据形成过程;
形成明细数据
CREATE
TABLE
#T210B
(
FItemID
int
default
(0),FSupplyID
int
default
(0),
FAuxQty
decimal(28,10)
null
default(0),
FAmount
decimal(28,10)
null
default(0),FTaxAmount
decimal(28,10)
null
default(0),FAmountEx
decimal(28,10)
null
default(0))
INSERT
INTO
#T210B
(FItemID,FSupplyID,FAuxQty,FAmount,FTaxAmount,FAmountEx)
SELECTv2.FItemID,v1.FSupplyID,sum(v2.FAuxQty),sum(v2.FAmount*v1.FExchangeRate),Sum(v2.FTaxAmount*v1.FExchangeRate),sum(v2.FAmountEx*v1.FExchangeRate)
FROM
ICExpenses
v1,ICExpensesEntry
v2,t_Currency
t3,t_Fee
t4,t_Supplier
t8
Where
v2.FItemID
=
t4.FItemID
AND
v1.FCurrencyID
=
t3.FCurrencyID
AND
v1.FInterID=v2.FInterID
AND
v1.FSupplyID=t8.FItemID
AND
v1.FDate>="2001-01-29"
AND
v1.FDate<="2001-01-29"
And
v1.FCancelLation=0

Group
by
v2.FItemID,v1.FSupplyID
形成小计数据
CREATE
TABLE
#ItemLevel(
FNumber1
VARCHAR(355),FName1
VARCHAR(355),FItemID
int,FNumber
VARCHAR(355))
INSERT
INTO
#ItemLevel
SELECT
CASE
WHEN
CHARINDEX(".",FFullNumber)-1=
-1
or
FLevel<2
THEN
NULL
ELSE
SUBSTRING(FNumber,
1,CHARINDEX(".",FFullNumber)-1)
END,

"",FItemID,FNumber
FROM
t_Item
WHERE
FItemClassID=2014
AND
FDetail=1

UPDATE
t1
SET
t1.FName1=t2.FName
FROM
#ItemLevel
t1,t_Item
t2
WHERE
t1.FNumber1=t2.FNumber
AND
t2.FItemClassID=2014
AND
t2.FDetail=0
形成汇总数据
CREATE
TABLE
#DATA(FName1
varchar(355)
Null,FCustName
varchar(355)
Null,

FNumber
varchar(355)
null,
FShortNumber
varchar(355)
null,
FName
varchar(355)
null,
FQtyDecimal
smallint
null,

FPriceDecimal
smallint
null,

FAuxQty
decimal(28,10)
null
default
(0),
FAmount
decimal(28,10)
null
default
(0),
FTaxAmount
decimal(28,10)
null
default
(0),
FAmountEx
decimal(28,10)
null
default
(0),
FSumSort
smallint
not
null
Default(0))
INSERT
INTO
#DATA
SELECT
tt1.FName1,t2.FName,t4.FNumber,"","",4,4,Sum
(v1.FAuxQty),
Sum(v1.FAmount),
Sum(v1.FTaxAmount),Sum(v1.FAmount)-Sum(v1.FTaxAmount)
,
CASE
WHEN

Grouping(tt1.FName1)=1
THEN
106

WHEN

Grouping(t2.FName)=1
THEN
107
WHEN

Grouping(t4.FNumber)=1
THEN
108
ELSE

0
END

FROM
#T210B
v1,t_Fee
t4,t_Supplier
t2,t_SubMessage
k1
,#ItemLevel
tt1
WHERE
v1.FItemID=t4.FItemID
AND
v1.FSupplyID=t2.FItemID
And
t4.FFeeType=k1.FInterID
AND
v1.FItemID=tt1.FItemID
Group
By
tt1.FName1,t2.FName,t4.FNumber
WITH
ROLLUP
UPDATE
t1
SET
t1.FName=t2.FName,t1.FShortNumber=t2.FShortNumber
FROM
#DATA
t1,t_Fee
t2
Where
t1.FNumber
=
t2.FNumber
Update
#Data
Set
FName1=FName1+"(小计)"
WHERE
FSumSort=107
Update
#Data
Set
FCustName=FCustName+"(小计)"
WHERE
FSumSort=108
Update
#Data
Set
FName1="合计"
WHERE
FSumSort=106
Update
#Data
Set
FSumSort=101

WHERE
FSumSort=106
三、销售系统
3.1销售报价单
3.1.1业务描述
单据上数量段和折扣资料中的数量段一致或者包含在折扣资料中的数量段中,则直接取该数量段的信息;单据上数量段和折扣资料中的数量段不一致,取起始数量来判断取那一个数量段的信息;起始数量或者数量段和多个数量段相符时取第一个数量段的信息;起始数量不在任何一个数量段内,不能取出数量段的信息,需手工输入
销售报价单是销售部门根据企业销售政策、产品成本、目标利润率、以往价格资料等,向客户提出的产品报价。它为销售订单提供基本价格信息,是价格资料管理的组成部分
3.1.2数据过程描述
3.1.2.1单据模板
(1)单据的事物类型
ftrantype=84
SELECT
*
FROM
ICTransactionType
Where
FID
IN
(84)
(2
)单据模板为FID
=
"G01""
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"G01"
SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"A97"
ORDER
BY
FCtlIndex
(3)选单模板为
FID
=
"G01"
select
*
from
icselbills
WHERE
FID
=
"G01"
(4)单据对应关系模板为
ictablerelation
中类型为60
select
*
from
ictablerelation
where
ftypeid=60
(5)单据字段描述表为中类型为60
select
*
from
icchatbilltitle

where
ftypeid=60
3.1.2.2单据新增
(1)选择单据模板(根据上面模板,显示单据,主要是ICTemplate,ICTemplateEntry,ICTransactionType表)
(2)执行exec
GetICMaxNum
"PORFQ"提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=
84
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=84
(4)插入数据到单据POInstock,POInstockEntry
INSERT
INTO
PORFQEntry
(……)
INSERT
INTO
PORFQ
(…..)
3.1.2.3审核、反审核
审核:
(1)更新单据状态
Update
PORFQ
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=1045
反审核:
(1)还原单据状态
Update
PORFQ
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=1045
3.1.2.4按价格折扣信息查询录入

(1)选择关联关系
SELECT
FName,FTableAlias,FSelTYpe
FROM
ICSelBills

WHERE
Upper(FID)="G01"
AND
Upper(FFieldName)
="FRFQBILLINTERID"
AND
(FSelType
=-100
OR
FSelType=-200
OR
FSelType=-50)

ORDER
BY
FSelType

(2)选取价格折扣信息,从价格资料提取所有该客户的价格信息
SELECT
u1.FEndQty*t7.FCoefficient
AS
FAuxEndQty,u1.FStartQty*t7.FCoefficient
AS
FAuxStartQty,v1.FCustID,u1.FEndQty,1
AS
FInterID,v1.FItemID,t4.FName
AS
FMatName,t4.Fmodel,t4.FNumber,u1.FPrice,t4.FPriceDecimal,t4.FQtyDecimal,t4.FNumber
AS
FShortNumber,u1.FStartQty,t4.FTrack,u1.FUnitID,t7.FName
AS
FUnitName,t7.FNumber
AS
FUnitNumber
FROM
t_Cust
v1,(SELECT
p1.*
From
t_CustEntry
p1
INNER
JOIN
(
(SELECT
FCustID,FItemID,FStartQty,FEndQty,FCyID,MAX(FQuoteTime)
AS
FNewQuoteTime
From
t_CustEntry
GROUP
BY
FCustID,FItemID,FStartQty,FEndQty,FCyID))
p2
ON
p1.FCustID=p2.FCustID
AND
p1.FItemID=p2.FItemID
AND
p1.FStartQty=p2.FStartQty
AND
p1.FEndQty=p2.FEndQty
AND
p1.FQuoteTime=p2.FNewQuoteTime)
u1,t_ICItem
t4,t_MeasureUnit
t7
WHERE
u1.FUnitID=t7.FItemID
AND
v1.FItemID=t4.FItemID
AND
v1.FCustID=u1.FCustID
AND
v1.FItemID=u1.FItemID
AND
(u1.FCustID=95
And
u1.FCyID=1
And
u1.FUsed=1)

Order
By
t4.FNumber,
v1.FCustID
3.1.2.5销售报价单通过下推式关联按购货单位(来源)生成销售订单
(1)确定原单和目标单据

销售报价单----生成销售订单)根据表ICTransactiontype、ICListTemplate、ICTemplate
如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="S01"
AND
t3.FFieldname="FPORFQInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(81)
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"S01"

ORDER
BY
FCtlIndex
SELECT
*,FCtlOrder
AS
FNewCtlOrder,FCtlIndex
AS
FNewCtlIndex
FROM
ICTemplateEntry
WHERE
FID
=
"S01"

ORDER
BY
FCtlOrde
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
where
FID="S01"
AND
FFieldName
="FPORFQInterID"
select
*
from
ICTableRelation
where
FID="S01"
AND
FFieldName
="FPORFQInterID"
(4)在订单icsale表字段FPORFQInterID
,FRelationBillNo,FRelationTranType记录关联的销售报价单的内码,单据号,单据类型
3.1.2.6作废、反作废
(1)作废:设置作废标志
Update
PORFQ
SET
FCancellation=1
Where
FInterID
=1041
(2)反作废:还原状态
Update
PORFQ
SET
FCancellation=0
Where
FInterID
=1041
3.3.1表结构

销售报价单主表:PORFQ
字段名
类型
描述
说明
FBillerID
INTEGER
制单:
FBillNo
STRING
编号:
来源icbillno
FCancellation
INTEGER
作废
FCheckerID
INTEGER
审核人
FCurrencyID
INTEGER
币别:
FCustID
INTEGER
购货单位:
Fdate
DATETIME
日期:
FDeptID
INTEGER
部门:
FEmpID
INTEGER
业务员:
FExchangeRate
FLOAT
汇率:
FInterID
INTEGER
报价单内码
来源icmaxnum
FMangerID
INTEGER
主管:
FMultiCheckLevel1
INTEGER
一审:
FMultiCheckLevel2
INTEGER
二审:
FMultiCheckLevel3
INTEGER
三审:
FMultiCheckLevel4
INTEGER
四审:
FMultiCheckLevel5
INTEGER
五审:
FMultiCheckLevel6
INTEGER
六审:
FStatus
INTEGER
状态
(0—未审核,1—审核)
FTranType
INTEGER
单据类型
84
销售报价单分录表:PORFQentry
FAuxPrice
FLOAT
单价
FAuxQtyFrom
FLOAT
数量段(从)
FAuxQtyTo
FLOAT
数量段(到)
FDescount
FLOAT
折扣率
FEntryID
INTEGER
分录号
FInterID
INTEGER
报价单内码
FItemID
INTEGER
产品代码
FMapName
STRING
对应名称
FMapNumber
STRING
对应代码
FNote
STRING
备注
FPrice
FLOAT
单价
FQtyFrom
FLOAT
基本单位数量(从)
FQtyTo
FLOAT
基本单位数量(到)
FSourceEntryID
INTEGER
源单行号
FUnitID
INTEGER
单位

3.2销售订单
3.2.1业务描述(销售请见订单帮助)
3.2.2
单据业务
3.2.2.1单据模板
(1)单据的事物类型
ftrantype=81
SELECT
*
FROM
ICTransactionType
Where
FID
IN
(81)
(2
)单据模板为FID
=
"S01"
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"S01"
SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"A97
"
ORDER
BY
FCtlIndex
(3)选单模板为
FID
=
"A97
select
*
from
icselbills
WHERE
FID
=
"A97
(4)单据对应关系模板为
ictablerelation
中类型为61
select
*
from
ictablerelation
where
ftypeid=61
(5)单据字段描述表为中类型为61
select
*
from
icchatbilltitle

where
ftypeid=61
3.2.2.2单据新增如果设置了【价格资料信息】,系统会根据所录入的客户、物料、数量所在的数量范围、币别、报价时间、是否有效以及系统选项(销售订单单价默认为含税单价)和使用的计量单位等信息,自动匹配客户供销售信息的报价和折扣率,填入不同单据的相应字段中,用户可以修改该价格
(1)选择单据模板(根据上面模板,显示单据,主要是ICTemplate,ICTemplateEntry,ICTransactionType表)
(2)执行exec
GetICMaxNum
"SEOrder"提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=
81
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=81
(4)插入数据到单据POInstock,POInstockEntry
INSERT
INTO
SEOrderEntry
(……)
INSERT
INTO
SEOrder
(…..)
(5)更新用户id
UPDATE
ICStockBill
SET
FUUID=NEWID()
WHERE
FInterID=2010
(6)更新客户价格信息
Update
t_CustEntry
Set
FUnitID=87,FPrice=7500,FDisCount=2,FQuoteTime="2001-02-01"
Where
FCustID=95
AND
FCyID=1
AND
FItemID=189
AND
FStartQty<=100
AND
FEndQty>=100
AND
FUsed=1
AND
(FPrice<>7500
OR
FDisCount<>2)
3.2.2.3
审核、反审核
审核:
(1)更新单据状态
Update
SEOrder
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=1166
反审核:
(1)还原单据状态
Update
SEOrder
Set
FCheckerID=Null,FStatus=0
Where
FBrNo="0"
And
FInterID=1166
3.2.2.4作废、反作废
(1)作废:设置作废标志
Update
SEOrder
SET
FCancellation=1
Where
FInterID
=1167
(2)反作废:还原状态
Update
SEOrder
SET
FCancellation=0
Where
FInterID
=1167
3.2.2.5关闭和反关闭
执行关闭的单据必须是已审核的单据
(1)手工关闭:设置单据为3,

mrp关闭为1
Update
SEOrder
SET
FStatus=3
WHERE
FInterID
=
1163
Update
SEOrder
Set
FMrpClosed
=
1
Where
FInterID
=
1163
(2)手工反关闭:
UPDATE
SEOrder
SET
FStatus=1
WHERE
FInterID=1163
Update
SEOrder
Set
FMrpClosed=0
WHERE
FInterID=1163
(3)系统关闭
单据通过关联、下达等方式,已被下级单据执行完毕
当关联生成单据审核后
符合条件Fqty<=FcommitQty,系统就会关闭自动关闭的单据不能实行反关闭
mrp的关闭:符合条件Fqty<=FcommitQty
FStockQty3.2.2.6锁库与解锁
在按订单生产的企业或按项目管理物料的企业,为保证具有较高优先级的订单及时出库,需要为这些订单预分配库存
对于锁库的物料,出库时在对整个仓库判断出库数量是否大于锁库数量时,不管系统是否允许负库存,都不允许负库存
锁库的条件:
.?只能对已审核并且未执行的销售订单进行锁库;
.??已锁库的销售订单不能反审核或追加执行;
.???锁库数量必须小于指定仓库的有效库存(即现在库存量减去已锁库数量)。
(1)启用锁库功能:工业整体选项里
select
*
from
t_systemprofile
where
fcategory="ic"
and
fkey="UseLockStock"-----(0-不启用,1-启用)
(2)提取现有库存量,锁库量
SELECT
u1.fcqty
AS
FCurrentQty,ISNULL(CASE
WHEN
u2.flqty<0
THEN
0
ELSE
u2.FLQty
END,0)
AS
FLockedQty,u1.FStockID,u3.FName
AS
FStockName,
ISNULL(CASE
WHEN
u4.FBLQty<0
THEN
0
ELSE
u4.FBLQty
END,0)
AS
FBLQty,(CASE
WHEN
u1.FCQty-ISNULL(u2.FLQty,0)<0
THEN
0
ELSE
u1.FCQty-ISNULL(u2.FLQty,0)
END)
AS
FCanLockQty,u3.FShortNumber
AS
FNumber
FROM
(SELECT
SUM(FQty)
AS
fcqty,FStockID
FROM
ICInventory
WHERE
FItemID=211
GROUP
BY
fstockid)
u1
LEFT
OUTER
JOIN
(SELECT
ISNULL(SUM(CASE
WHEN
FQty<0
THEN
0
ELSE
FQty
END),0)
AS
flqty,FStockID
FROM
t_lockstock
WHERE
FItemID=211
GROUP
BY
FStockID)
u2
ON
u1.FStockID=u2.FStockID
INNER
JOIN
t_Stock
u3
ON
u1.FStockID=u3.FItemIDLEFT
OUTER
JOIN
(SELECT
ISNULL(SUM(CASE
WHEN
FQty<0
THEN
0
ELSE
FQty
END),0)
AS
FBLQty,FStockID
FROM
t_lockstock

WHERE
FItemID=211
AND
FInterID=1161
AND
FEntryID=1
AND
FTranType=81
GROUP
BY
FStockID)
u4
ON
u4.FStockID=u1.FStockID
(3)判断现有库存是否大于锁库
SELECT
ISNULL(SUM(FQty),0)
AS
FFQty
FROM
ICInventory
WHERE
FItemID=211
AND
FStockID=216
SELECT
ISNULL(SUM(FQty),0)
AS
FFQty
FROM
t_LockStock
WHERE
FItemID=211
AND
FStockID=216
(4)删除锁库数据,然后删除,再从新插入数据,更换标志
SELECT
ISNULL(SUM(FQty),0)
AS
FFQty
FROM
ICInventory
WHERE
FItemID=211
AND
FStockID=216
SELECT
ISNULL(SUM(FQty),0)
AS
FFQty
FROM
t_LockStock
WHERE
FItemID=211
AND
FStockID=216
INSERT
INTO
t_LockStock(FTranType,FInterID,FEntryID,FItemID,FStockID,FQty)
VALUES(81,1161,1,211,216,1200)
UPDATE
SEOrderEntry
SET
FLockFlag=1
WHERE
FInterID=1161
AND
FEntryID=1

解锁;
当用户指定销售订单锁库行物料并执行解锁功能时,系统直接按指定的锁库量进行扣除,取消订单行上的锁库数量和锁库标志。
当销售订单手工关闭时,系统会将该订单所有分录行的锁库标志置为空。
在销售订单执行反审核操作时,系统会判断该订单分录行是否有锁库标志,如果有,则提示存在锁库信息,不能反审核。
清除锁库记录和标志
DELETE
FROM
t_LockStock
WHERE
FInterID=1161
AND
FEntryID=1
AND
FTranType=81
UPDATE
SEOrderEntry
SET
FLockFlag=0
WHERE
FInterID=1161
AND
FEntryID=1

3.2.2.7可签约量查询、冲减、反冲
在计划系统选项中选中“在MPS计算时计算可签约量”的选项,可以进行可签约量冲减,不选该选项,则界面上不出现可签约量查询的按钮和可签约量冲减的按钮;另外销售订单序时簿中的可签约量冲减一列应为空
在销售订单单据和序时簿提供可签约量查询的按钮,该按钮将调出可签约量的查询界面,该界面由计划系统提供,主要数据包括日期,确定的客户订单量,主生产计划量,可签约量,累计可签约量
在销售订单序时簿进行可签约量冲减的单据为已审核的单据
在销售订单序时簿进行可签约量冲减的单据反审核时,将已分配的标志置空,已冲减的数量冲回
已关闭的订单不能冲减和反冲减
已部分执行的订单进行可签约量冲减时冲减数量为订单上的数量;手工反冲减时,不管订单是否执行,反冲减数量为订单上的数量;并且只要手工冲减的订单才可以反冲减
销售订单反审核时,同时进行可签约量的反冲减

订单追加执行暂不考虑可签约量的冲减
可签约量查询:
select
t2.FNumber,t2.FModel,t2.FShortNumber,t2.FName,t3.FName
as
FUnitName,
t1.Fdate,t1.FATPQty,t1.FTotalATPQty,t1.FInitiATPQty,t1.FTotalInitiATPQty
from
ICItemATP
t1
inner
join
t_ICItem
t2
on
t1.FItemID=t2.FItemID
inner
join
t_MeasureUnit
t3
on
t2.FUnitID=t3.FItemID
where
t1.FItemID=211order
by
t1.FDate
冲减:(1)更新单据冲减标志UPDATE
SEOrderEntry
SET
FATPDeduct=1
WHERE
FInterID=1165
AND
FEntryID=1(2)执行冲减,可以跟踪分析,不具体分析
反冲减:(1)
批判单据的状态
SELECT
ISNULL(v1.FCheckerID,0)
AS
FCheckerID,v1.FStatus,u1.FHaveMrp,ISNULL(u1.FATPDeduct,0)
AS
FATPDeduct,t1.FPlanTrategy,t1.FName
FROM
SEOrder
v1,SEOrderEntry
u1,t_ICItem
t1
WHERE
v1.FInterID=1161
AND
v1.FInterID=u1.FInterID
AND
u1.FEntryID=1
AND
u1.FItemID=t1.FItemID
更新单据反冲标志
UPDATE
SEOrderEntry
SET
FATPDeduct=0
WHERE
FInterID=1161
AND
FEntryID=1
提取反冲物料的信息,建议交货时间,起始时间
select
FItemID
from
ICItemATP
where
FItemID=
211
select
FWayBeginDate
from
ICMrpInfo
where
FInterID=(
select
max(FInterID)
from
ICMrpInfo
where
FType=0)
select
FNeedBeginDate
from
ICMrpInfo
where
FInterID=(
select
max(FInterID)
from
ICMrpInfo
where
FType=0)
(4)进行反冲(过程较复杂)可以跟踪分析,不具体分析
3.2.2.8销售订单追加执行
(1)
销售订单追加执行:就是指销售订单在执行过程中、或在已经执行完毕的情况下,因销货计划变动、客户临时增加订货量、或其它原因,需要增加本次下单的订货数量、修改订货价格、或直接补货。此时,在不改变其它业务要素的前提下,系统提供用户直接补充订货的功能
(2)追加执行的订单需要满足以下条件:
订单已被部分执行,即该订单已被发货通知单、销售出库单等单据关联;
如果选择了系统选项“已关闭的销售订单可以追加物料”,则已执行完毕因而自动关闭、或者被手工关闭的订单也可以追加执行
(3)追加执行规则:见帮助
(4)追加执行对单据的影响:见帮助
(5)订单状态对追加执行操作的影响:见帮助
(6)数据形成:
删除原分录,更新数据
DELETE
FROM
SEOrderEntry
WHERE
FInterID=1153
AND
FEntryID
not
IN
(1)
UPDATE
SEOrderEntry
SET
FSourceEntryID=0,FMapNumber="",FMapName="",FItemID=192,FQty=1001,FUnitID=79,Fauxqty=1001,Fauxprice=12000,Famount=12012000,FCess=17,FTaxRate=0,FTaxAmount=0,FFinalAmount=12012000,FTranLeadTime="0",FInForecast="",FDate="2001-02-03",Fnote="",FBomInterID=0,FAdviceConsignDate="2001-02-03",FATPDeduct=0,FLockFlag=0
WHERE
FInterID=1153
AND
FEntryID=1
更新单据状态
Update
SEOrder
SET
FStatus=
(CASE
WHEN
(SELECT
COUNT(*)
FROM
SEOrderEntry
WHERE
FInterID=
1153
AND
FCommitQty>0)=0
THEN
1
WHEN
(SELECT
COUNT(*)
FROM
SEOrderEntry
WHERE
FInterID=
1153
AND
FCommitQty>=0
AND
FCommitQty0
THEN
2
ELSE
3
END
)
WHERE
FInterID=1153
更新FMrpClosed关闭标志
Update
SEOrder
SET
FMrpClosed=
(CASE
WHEN
(SELECT
COUNT(*)
FROM
SEOrderEntry
WHERE
FInterID=
1153
AND
FStockQtyTHEN
1
ELSE
0
END
)
WHERE
FInterID=1153
更新批次跟踪信息表
UPDATE
m1
SET
m1.FForbid=(CASE
v1.FMrpClosed
WHEN
1
THEN
1
ELSE
0
END)
FROM
ICOrderBatchTrace
m1
INNER
JOIN
SEOrderEntry
u1
ON
u1.FItemID=m1.FItemID
AND
m1.FOrderInterID=u1.FInterID
AND
m1.FCustBomID=u1.FBomInterID
INNER
JOIN
SEOrder
v1
ON
v1.FInterID=u1.FInterID
INNER
JOIN
t_ICItem
t1
ON
t1.FItemID=m1.FItemID
WHERE
t1.FErpClsID=7
AND
u1.FInterID=1153
更新客户信息
Update
t_CustEntry
Set
FUnitID=79,FPrice=12000,FDisCount=0,FQuoteTime="2001-02-01"
Where
FCustID=103
AND
FCyID=1
AND
FItemID=192
AND
FStartQty=0
AND
FEndQty=0
AND
FUsed=1
AND
(FPrice<>12000
OR
FDisCount<>0)
3.2.2.9销售订单下推关联直接生成发货通知单
(1)确定原单和目标单据

销售订单----生成发货通知单)根据表ICTransactiontype、ICListTemplate、ICTemplate
如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="S02"
AND
t3.FFieldname="FCnnInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(83)
SELECT
*
FROM
ICTemplate
WHERE
FID="S02"ORDER
BY
FCtlIndex
SELECT
*,FCtlOrder
AS
FNewCtlOrder,FCtlIndex
AS
FNewCtlIndex
FROM
ICTemplateEntry
WHERE
FID="S02"

ORDER
BY
FCtlOrde
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
where

FID="S02"
AND
FFieldName
="FCnnInterID"
select
*
from
ICTableRelation
where
FID="S02"
AND
FFieldName
="FCnnInterID""(4)转换单价(含税、不含税)

(5)目标单据新增,seoutstock
表字段FCnnInterID
,FRelationBillNo,FRelationTranType记录关联的销售订单的内码,单据号,单据类型
销售订单下推关联直接生成采购申请单

(1)确定原单和目标单据

销售订单----采购申请单)根据表ICTransactiontype、ICListTemplate、ICTemplate
如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="P01"
AND
t3.FFieldname="FOrderInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(70)
SELECT
*
FROM
ICTemplate
WHERE
FID="P01"

ORDER
BY
FCtlIndex
SELECT
*,FCtlOrder
AS
FNewCtlOrder,FCtlIndex
AS
FNewCtlIndex
FROM
ICTemplateEntry
WHERE
FID="P01"
ORDER
BY
FCtlOrde
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills

whereFBillID="P01"
AND
FFieldID="FOrderInterID"
select
*
from
ICTableRelation
where

FBillID="P01"
AND
FFieldID="FOrderInterID"(4)转换签约时间等数据
SELECT
(CASE
WHEN
u1.FAdviceConsignDate>GetDate()
Then
u1.FAdviceConsignDate
else
getDate()
END)-isnull(t4.FLeadTime,0)
AS
FAPurchTime,u1.FAuxqty,t10.FName
AS
FBaseUnitName,v1.FBillNO,v1.FDeptID,u1.FEntryID,v1.FInterID,u1.FItemID,t4.FLeadTime,t4.Fmodel,t4.FName,CASE
WHEN
u1.FAdviceConsignDate>GetDate()
Then
u1.FAdviceConsignDate
else
getDate()
END
AS
FNeedDate,t4.FShortNumber
………
FROM
SEOrder
v1,SEOrderEntry
u1,t_DepartMent
t5,t_ICItem
t4,t_MeasureUnit
t10,t_MeasureUnit
t7,t_Supplier
t8
WHERE
t4.FSource*=t8.FItemID
AND
t4.FUnitID=t10.FItemID
AND
u1.FItemID=t4.FItemID
AND
v1.FInterID=u1.FInterID
AND
v1.FDeptID=t5.FItemID
AND
u1.FUnitID=t7.FItemID
AND
(
(v1.FInterID=1161
AND
u1.FEntryID=1)
)
AND
(v1.FStatus
in(1,2))
Order
By
v1.FInterID,
u1.FEntryID
(5)目标单据新增
,porequest
字段FOrderInterID记录关联的销售订单内码
3.2.2.10
销售订单下推关联直接生成产品入库
(1)确定原单和目标单据
(销售订单----产品入库)根据表ICTransactiontype、ICListTemplate、ICTemplate
如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="A02"
AND
t3.FFieldname="FOrderInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(2)
SELECT
*
FROM
ICTemplate
WHERE
FID="A02"ORDER
BY
FCtlIndex
SELECT
*,FCtlOrder
AS
FNewCtlOrder,FCtlIndex
AS
FNewCtlIndex
FROM
ICTemplateEntry
WHERE
FID="A02"
ORDER
BY
FCtlOrde
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
where
FID="A02"
AND
FFieldName
="FOrderInterID"
select
*
from
ICTableRelation
where

FBillID
="A02"
AND
FFieldID="FOrderInterID"(4)提取转换数据
SELECT
u1.FAuxqty,t10.FName
AS
FBaseUnitName,(SELECT
FBomNumber
FROM
ICBOM
WHERE
FInterID=u1.FBomInterID)
AS
FBatchNo,v1.FBillNO,v1.FDeptID,u1.FEntryID,v1.FInterID,u1.FItemID,t4.Fmodel,t4.FName,t4.FShortNumber
AS
Fnumber,t4.FPriceDecimal,u1.Fqty,t4.FQtyDecimal,u1.FEntryID
AS
FSourceEntryID,t4.FTrack,u1.FUnitID,t7.FName
AS
FUnitName,t7.FShortNumber
AS
FUnitNumber,t5.FName
AS
FWorkShopName,t5.FShortNumber
AS
FWorkShopNumber
FROM
SEOrder
v1,SEOrderEntry
u1,t_DepartMent
t5,t_ICItem
t4,t_MeasureUnit
t10,t_MeasureUnit
t7
WHERE
v1.FDeptID=t5.FItemID
AND
v1.FInterID=u1.FInterID
AND
t4.FUnitID=t10.FItemID
AND
u1.FItemID=t4.FItemID
AND
u1.FUnitID=t7.FItemID
AND
(
(v1.FInterID=1161
AND
u1.FEntryID=1)
)
AND
(v1.FStatus
in
(1,2))
Order
By
v1.FInterID,
u1.FEntryID(5)
设置对应字段(销售订单----产品入库)
SELECT
t1.*
FROM
ICSelBills
t1,ICTemplateEntry
t2
WHERE
t1.FID=t2.FID
AND
t1.FDstCtlField=t2.FFieldName
AND
t1.FID="A02"
AND
t1.FFieldName="FOrderInterID"
AND
FSelType=0
ORDER
BY
t2.FCtlOrder,t1.FDK
(6)目标单据新增,icstockbill表字段forderinterid,FRelationBillNo,FRelationTranType记录关联订单的内码,单据号,单据类型
3.2.2.11销售订单下推关联直接生成生产任务单
(1)确定原单和目标单据

销售订单----生产任务单)根据表ICTransactiontype、ICListTemplate、ICTemplate
如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="J01"
AND
t3.FFieldname="FOrderInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(85)
SELECT
*
FROM
ICTemplate
WHERE
FBillID="J01"

ORDER
BY
FCtlIndex
SELECT
*,FCtlOrder
AS
FNewCtlOrder,FCtlIndex
AS
FNewCtlIndex
FROM
ICTemplateEntry
WHERE
FBillID="J01"
ORDER
BY
FCtlOrde
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
where
FID="J01"
AND
FFieldName
="FOrderInterID"
select
*
from
ICTableRelation
where
FBillID="J01"
AND
FFieldID="FOrderInterID"(4)设置对应关系
SELECT
t1.*
FROM
ICSelBills
t1,ICTemplateEntry
t2
WHERE
t1.FID=t2.FID
AND
t1.FDstCtlField=t2.FFieldName
AND
t1.FID="J01"
AND
t1.FFieldName="FOrderInterID"
AND
FSelType=0
ORDER
BY
t2.FCtlOrder,t1.FDK
(5)目标单据新增,icmo表字段FOrderInterID记录单据内码
3.2.2.12销售订单下推关联直接生成生成销售发票生成销售发票(普通)
(1)确定原单和目标单据

销售订单----销售发票生成销售发票(普通))根据表ICTransactiontype、ICListTemplate、ICTemplate
如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="I05"
AND
t3.FFieldname="FOrderInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(86)
SELECT
*
FROM
ICTemplate
WHERE
FID="I05"
ORDER
BY
FCtlIndex
SELECT
*,FCtlOrder
AS
FNewCtlOrder,FCtlIndex
AS
FNewCtlIndex
FROM
ICTemplateEntry
WHERE
FID="I05"
ORDER
BY
FCtlOrde
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
where
FID="I05"
AND
FFieldName
="FOrderInterID"
select
*
from
ICTableRelation
where
FBillID="I05"
AND
FFieldID="FOrderInterID"
(4)目标单据新增,icsale表forderinterid,FRelationBillNo,FRelationTranType记录关联订单的内码,单据号,单据类型
3.2.2.13销售订单关联合同生成
(1)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
where
FID="S01"
AND
FFieldName="FContractID"
AND
FSelType=
1
select
*
from
ICTableRelation
where
FBillID="S01"
AND
FFieldID="FContractID""
(2)icsale表contractid,FRelationBillNo记录关联合同的内码,单据号
3.2.3销售订单报表
3.2.3.1销售订单统计表
(1)报表方案FRptID=136
SELECT
*
FROM
ICReportProfile
WHERE
FRptID=136
(2)根据销售定单形成分级
SELECTCASE
WHEN
CHARINDEX(".",FFullNumber)-1=
-1
or
FLevel<2
THEN
NULL
ELSE
SUBSTRING(FNumber,
1,CHARINDEX(".",FFullNumber)-1)
END,
"",
CASE
WHEN
CHARINDEX(".",FFullNumber,CHARINDEX(".",FFullNumber)+1)-1=
-1
or
FLevel<3
THEN
NULL
ELSE
SUBSTRING(FNumber,
1,CHARINDEX(".",FFullNumber,CHARINDEX(".",FFullNumber)+1)-1)
END,
"",
FItemID,FNumber
FROM
t_Item
WHERE
FItemClassID=4
AND
FDetail=1
AND
FItemID
In
(SELECT
DISTINCT
v2.FItemID
FROM
SEOrder
v1,SEOrderEntry
v2,
t_ICItem
t1,t_Organization
t2
,t_DepartMent
t3,t_Emp
t4,t_Currency
t5

WHERE
v1.FInterID=v2.FInterID
and
v2.FItemID
=
t1.FItemID
and
v1.FCustID
=
t2.FItemID
and
v1.FDeptID=t3.FItemID
and
v1.FEmpID=t4.FItemIDAnd
v1.FCancelLation=0

AND
convert(datetime,convert(varchar(30),v1.FDate,111))
>="2001-01-01"
AND
convert(datetime,convert(varchar(30),v1.FDate,111))
<="2001-01-30"

)
根据销售订单形成数据
SELECT
………

From
SEOrder
v1,SEOrderEntry
v2,t_ICItem
t1,t_Organization
t2
,t_DepartMent
t3,t_Emp
t4,t_Currency
t5,t_MeasureUnit
t6,#ItemLevel
tt1
WHERE
v2.Finterid
=
v1.FInterID
and
v2.FItemID=t1.FItemIDAnd
v1.FCancelLation=0

AND
convert(datetime,convert(varchar(30),v1.FDate,111))
>="2001-01-01"
AND
convert(datetime,convert(varchar(30),v1.FDate,111))
<="2001-01-30"
AND
v1.FCustID=t2.FItemID
and
v1.FDeptID=t3.FItemID
and
v1.FEmpID=t4.FItemID
And
v1.FCurrencyID
=t5.FCurrencyID

AND
t1.FCUUnitID
=
t6.FMeasureUnitID
AND
t1.FItemID=tt1.FItemID
Group
By
t5.FName,tt1.FName1,tt1.FName2,t1.FNumber
计算小计,合计数据
3.2.3.2销售订单执行情况汇总表
报表方案为:select
*
from
ICReportProfile
where
FRptid=137
统计时间范围内的定单
统计时间范围内关联订单生成的的出库单
统计时间范围内关联订单生成的的红字出库单
统计时间范围内关联订单生成—发货通知单—出库单数据
统计时间范围内关联订单生成—退货通知单—红字出库单数据
统计时间范围内关联订单生成—红字发货通知单—红字出库单数据
统计时间范围内关联订单生成—发货通知单—其他出库单数据
统计时间范围内关联订单生成—退货通知单—红字其他出库单数据
3.2.4表结构
主表:seorder

字段名
类型
描述
FBClosed
INTEGER
 
FBillerID
INTEGER
制单:
FPOOrdBillNo
STRING
采购订单号:
FPORFQInterID
INTEGER
销售报价单号:
FRelateBrID
INTEGER
订货机构:
FRelationBillNo
STRING
关联单据号码
FRelationTranType
INTEGER
关联单据类型
FSaleStyle
INTEGER
销售方式:
FSettleID
INTEGER
结算方式:
FStatus
INTEGER
状态
FSystemType
INTEGER
 
FTransitAheadTime
FLOAT
运输提前期:
FTranStatus
INTEGER
 
FTranType
INTEGER
单据类型
FUUID
其它
 
FBillNo
STRING
编号:
FBrNo
STRING
 
FCancellation
INTEGER
作废
FCheckerID
INTEGER
审核人
FClosed
INTEGER
是否关闭
FContractID
INTEGER
合同号:
FCurCheckLevel
INTEGER
 
FCurrencyID
INTEGER
币别:
FCustID
INTEGER
购货单位:
FDate
DATETIME
日期:
FDeptID
INTEGER
部门:
FDiscountType
INTEGER
折扣方式
FEmpID
INTEGER
业务员:
FExchangeRate
FLOAT
汇率:
FFetchAdd
STRING
交货地点:
FFetchDate
DATETIME
交货日期:
FFetchStyle
STRING
交货方式:
FImport
INTEGER
 
FInterID
INTEGER
订单内码
FInvoiceClosed
INTEGER
 
FMangerID
INTEGER
主管:
FMrpClosed
INTEGER
计划关闭状态
FMultiCheckDate1
DATETIME
 
FMultiCheckDate2
DATETIME
 
FMultiCheckDate3
DATETIME
 
FMultiCheckDate4
DATETIME
 
FMultiCheckDate5
DATETIME
 
FMultiCheckDate6
DATETIME
 
FMultiCheckLevel1
INTEGER
一审:
FMultiCheckLevel2
INTEGER
二审:
FMultiCheckLevel3
INTEGER
三审:
FMultiCheckLevel4
INTEGER
四审:
FMultiCheckLevel5
INTEGER
五审:
FMultiCheckLevel6
INTEGER
六审:
FNote
STRING
备注
FOperDate
其它
 
FOrderAffirm
INTEGER
 
FPayDate
DATETIME
 
FPayStyle
STRING
付款方式:

销售订单分录表:seorderentry
字段名
类型
描述
FAdviceConsignDate
DATETIME
建议交货日期
FAmount
FLOAT
金额
FAuxBCommitQty
FLOAT
辅助退货数量
FAuxCommitQty
FLOAT
辅助发货数量
FAuxInvoiceQty
FLOAT
辅助开票数量
FAuxPrice
FLOAT
单价
FAuxQty
FLOAT
数量
FAuxStockQty
FLOAT
出库数量(辅助单位):
FBatchNo
STRING
物料批号
FBCommitQty
FLOAT
退货数量
FBomInterID
INTEGER
批号/客户BOM
FCESS
FLOAT
税率(%)
FCommitQty
FLOAT
发货数量
FDate
DATETIME
交货日期
FDiscount
FLOAT
折扣
FDiscountAmount
FLOAT
折扣金额
FEntryID
INTEGER
分录号
FFinalAmount
FLOAT
折后金额
FHaveMrp
INTEGER
是否参加过MRP计算
FInForecast
INTEGER
是否预测内
FInterID
INTEGER
订单内码
FInvoiceQty
FLOAT
发票数量
FItemID
INTEGER
产品代码
FLockFlag
INTEGER
锁库标志
FMapName
STRING
对应名称
FMapNumber
STRING
对应代码
FNote
STRING
备注
FPrice
FLOAT
单价
FQty
FLOAT
基本单位数量
FSourceEntryID
INTEGER
源单行号
FStockQty
FLOAT
出库数量:
FTaxAmount
FLOAT
折扣额
FTaxRate
FLOAT
折扣率(%)
FTranLeadTime
INTEGER
运输提前期
FUniDiscount
FLOAT
单位折扣额
FUnitID
INTEGER
单位

3.3发货通知单
3.3.1数据流程描述
3.3.1.1单据模版
(1)单据的事物类型
ftrantype=84
SELECT
*
FROM
ICTransactionType
Where
FID
IN
(84)
(2
)单据模板为FID
=
"S02""
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"S02"
SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"A97"
ORDER
BY
FCtlIndex
(3)选单模板为
FID
=
"S02"
select
*
from
icselbills
WHERE
FID
=
"S02"
(4)单据对应关系模板为
ictablerelation
中类型为64
select
*
from
ictablerelation
where
ftypeid=64
(5)单据字段描述表为中类型为64
select
*
from
icchatbilltitle

where
ftypeid=64
3.3.1.2新增
1)选择单据模板(根据上面模板,显示单据界面,主要是ICTemplate,ICTemplateEntry,ICTransactionType表)
(2)执行GetICMaxNum
"SEOutStock"提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=83
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=83
(4),先删除,后插入数据到单据SEOutStock,SEOutStockEntry
INSERT
INTO
SEOutStockEntry(……)
INSERT
INTO
SEOutStock
(…..)
3.3.1.3审核、反审核
审核:更新单据状态,和审核人
Update
SEOutStock
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=1080
反审核:反向操作Update
SEOutStock
Set
FCheckerID=Null,FStatus=0
Where
FBrNo="0"
And
FInterID=1080
3.3.1.4关闭、反关闭,作废、反作废

关闭:Update
SEOutStock
SET
FStatus=3
WHERE
FInterID
=
1080(单据必须审核)

反关闭:UPDATE
SEOutStock
SET
FStatus=1
WHERE
FInterID=1080

作废:Update
SEOutStock
SET
FCancellation=1
Where
FInterID
=1080(单据必须未审核)
反作废
Update
SEOutStock
SET
FCancellation=0
Where
FInterID
=1080

3.3.1.5下推单据(发货通知单下推生成生成销售出库)
多张发货通知单生成目标单据,则系统会自动下推成多张单据,即多张发货通知单不能生成一张目标单据
(1)确定原单和目标单据
,根据表ICTransactiontype、ICListTemplate、ICTemplate
如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="B01"
AND
t3.FFieldname="FSCBillInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(21)
SELECT
*
FROM
ICTemplate
WHERE
FID="B01"
ORDER
BY
FCtlIndex
SELECT
*
FROM
ICTemplateEntry
WHERE
FID="B01"
ORDER
BY
FCtlOrde
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
whereFID="B01"
AND
FFieldName="FSCBillInterID"
select
*
from
ICTableRelation
where
FBillID="B01"
AND
FFieldID="FSCBillInterID(4)目标单据新增
(参考目标单据新增)表icstockbill
fscbillinterid,FRelationBillNo,FRelationTranType记录关联内码,单据号,单据类型
3.3.1.6发货通知单下推生成调拨
(1)确定原单和目标单据,根据表ICTransactiontype、ICListTemplate、ICTemplate如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="D01"
AND
t3.FFieldname="FSCBillInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(41)
SELECT
*
FROM
ICTemplate
WHERE
FID="D01
SELECT
*
FROM
ICTemplateEntry
WHERE
FID="D01
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
where

FID="D01"
AND
FFieldName
="FSCBillInterID"
select
*
from
ICTableRelation
where
FBillID="D01"
AND
FFieldID="FSCBillInterID"(4)目标单据新增
(参考目标单据新增)表icstockbill字段
fscbillinterid,FRelationBillNo,FRelationTranType记录关联内码,单据号,单据类型
3.3.1.7
发货通知单下推生成退货通知单
(1)确定原单和目标单据,根据表ICTransactiontype、ICListTemplate、ICTemplate如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="S12"
AND
t3.FFieldname="FCnnInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(82)
SELECT
*
FROM
ICTemplate
WHERE
FID="S12"
SELECT
*
FROM
ICTemplateEntry
WHERE
FID="S12"
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
whereFID="S12"
AND
FFieldName
="FCnnInterID"
select
*
from
ICTableRelation
where
FBillID="S12"
AND
FFieldID="FCnnInterID"(4)目标单据新增
(参考目标单据新增)seoutstock表
fcnninterid,FRelationBillNo,FRelationTranType记录关联内码,单据号,单据类型
3.3.2表结构
发货通知单:seoutstock主表
字段名
类型
描述
FAdd
STRING
地址
FBClosed
INTEGER
 
FTranType
INTEGER
单据类型
FBillerID
INTEGER
制单:
FBillNo
STRING
编号:
FBrNo
STRING
 
FCancellation
INTEGER
作废
FCheckerID
INTEGER
审核人
FClosed
INTEGER
 
FCnnInterID
INTEGER
原发货通知单号:
FCurCheckLevel
INTEGER
 
FCurrencyID
INTEGER
币别:
FCustID
INTEGER
购货单位:
FDate
DATETIME
日期:
FDeptID
INTEGER
部门:
FEmpID
INTEGER
业务员:
FExchangeRate
FLOAT
汇率:
FInterID
INTEGER
通知单内码
FInvoiceClosed
INTEGER
 
FManagerID
INTEGER
主管:
FMultiCheckDate1
DATETIME
 
FMultiCheckDate2
DATETIME
 
FMultiCheckDate3
DATETIME
 
FMultiCheckDate4
DATETIME
 
FMultiCheckDate5
DATETIME
 
FMultiCheckDate6
DATETIME
 
FMultiCheckLevel1
INTEGER
一审:
FMultiCheckLevel2
INTEGER
二审:
FMultiCheckLevel3
INTEGER
三审:
FMultiCheckLevel4
INTEGER
四审:
FMultiCheckLevel5
INTEGER
五审:
FMultiCheckLevel6
INTEGER
六审:
FNote
STRING
退料原因:
FRelateBrID
INTEGER
订货机构:
FRelationBillNo
STRING
关联单据号码
FRelationTranType
INTEGER
关联单据类型
FSalBillInterID
INTEGER
销售发票号:
FSalType
INTEGER
销售方式:
FSettleID
INTEGER
结算方式:
FStatus
INTEGER
状态
FStockID
INTEGER
收货仓库:
FTranStatus
INTEGER
传输状态
发货通知单分录表:seoutstockbillentry
字段名
类型
描述
FAmount
FLOAT
金额
FAuxBCommitQty
FLOAT
辅助退货数量
FAuxCommitQty
FLOAT
辅助发货数量
FAuxInvoiceQty
FLOAT
辅助开票数量
FAuxPrice
FLOAT
单价
FAuxQty
FLOAT
数量
FBCommitQty
FLOAT
退货数量
FCommitQty
FLOAT
发货数量
FDate
DATETIME
日期
FEntryID
INTEGER
分录号
FInterID
INTEGER
通知单内码
FInvoiceQty
FLOAT
开票数量
FItemID
INTEGER
产品代码
FMapName
STRING
对应名称
FMapNumber
STRING
对应代码
FNote
STRING
备注
FOrderInterID
STRING
销售订单
FPrice
FLOAT
单价
FQty
FLOAT
基本单位数量
FSourceEntryID
INTEGER
源单行号
FUnitID
INTEGER
单位
3.4销售出库单
3.4.1数据描述
3.4.1.1单据模版
(1)单据的事物类型
ftrantype=21
SELECT
*
FROM
ICTransactionType
Where
FID
IN
(21)
(2
)单据模板为FID
=
"B01"
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"B01"
SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"A97"
ORDER
BY
FCtlIndex
(3)选单模板为FID
=
"B01"
select
*
from
icselbills
WHERE
FID
=
"B01"
(4)单据对应关系模板为
ictablerelation
中类型为76
select
*
from
ictablerelation
where
ftypeid=76
(5)单据字段描述表为中类型为76(包括字段的显示,过滤显示等)
select
*
from
icchatbilltitle

where
ftypeid=76
3.4.1.2单据新增
(1)选择单据模板(根据上面模板,显示单据,主要是ICTemplate,ICTemplateEntry,ICTransactionType表)
(2)执行GetICMaxNum
"ICStockBill"提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=
21
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=21
先删除,后插入数据到单据ICStockBil,ICStockBillEntry
DELETE
ICStockBill
WHERE
FInterID=2000
INSERT
INTO
ICStockBillEntry(……)
INSERT
INTO
ICStockBill(…..)
(5)执行存储过程更新单据的相关数据包括计量单位转换等
EXEC
p_UpdateBillRelateData
21,2000
更新单据最新的FUUID
UPDATE
ICStockBill
SET
FUUID=NEWID()
WHERE
FInterID=2000
3.4.1.3审核,反审核
审核:(审核更新及时库存)
执行存储过程
更新
EXEC
p_UpdateStorage
191,150,0,"",0,"",4800,0
更新单据状态,审核人

Update
ICStockBill
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=2000
执行存储过程写回
exec
WriteBack_21
2000,
0,
0,
1,
@P1
output
反审核:
(1)
更新库存

EXEC
p_UpdateStorage
191,150,0,"",0,"",4810,0
(2)
更新单据
Update
ICStockBill
Set
FCheckerID=Null,FStatus=0
Where
FBrNo="0"
And
FInterID=2000
(3)反写回
exec
WriteBack_21
2000,
0,
1,
1,
@P1
output
3.4.1.4作废、反作废

更新作废标志
Update
ICStockBill
SET
FCancellation=1
Where
FInterID
=2001

反作废:
Update
ICStockBill
SET
FCancellation=0
Where
FInterID
=2001
3.4.2销售出库单和销售出库单的拆单和合并
3.4.2.1拆单和合并的条件
进行拆分的销售出库单必须是已审核单据;
进行拆分的销售出库单必须是尚未核销单据,包括与发票核销、与另一张业务息相同、数据相反的销售出库单对等核销;
进行合并的销售出库单必须是以前被拆分的子单;
进行合并的销售出库单必须是尚未核销单据,包括与发票核销、与另一张业务信息相同、数据相反的销售出库单对等核销;
进行合并的销售出库单必须是未记账单据
3.4.2.2拆分单据的影响和单据存在形式:(可以参考帮助)
3.4.2.3拆分过程
例如原单为数量100,按50%拆分
更新原单据数量或金额,和单据对应关联关系
UPDATE
ICStockBillEntry
SET
FOrgBillEntryID=FEntryID
WHERE
FInterID=2002
And
FOrgBillEntryID=0
Update
ICStockBillEntry
SET
FAuxQty=FAuxQty-(50)
WHERE
FInterID=
2002
AND
FEntryID=1
AND
FItemID=
191
建立子单数据

更新子单和母单的金额类数据(按照拆分的选项)
更新子单和母单相关的同步数据
EXEC
p_UpdateBillRelateData
21,2002
EXEC
p_UpdateBillRelateData
21,2003
一般分期收款和委托代销需要拆单,所以拆分时需要插入数据到凭证对应表,到时结转成本用到
INSERT
INTO
ICSaleVoucher(FInterID,FVoucherID,FTypeID)
values(2003,0,0)

更新子单单据号为(母单号码+‘A’)类推
判断拆分后母单的单据状态
,例如:
UPDATE
ICStockBill
SET
FStatus=1
WHERE
FInterID=2002
AND
NOT
EXISTS(
SELECT
*
FROM
ICStockBillEntry
WHERE
FInterID=2002
AND
FAuxCommitQty>0)―――为被关闭
go
UPDATE
ICStockBill
SET
FStatus=2
WHERE
FInterID=2002
AND
EXISTS(
SELECT
*
FROM
ICStockBillEntry
WHERE
FInterID=2002
AND
FAuxQty>FAuxCommitQty
AND
FAuxCommitQty>0)――已经关联,未关闭
go
UPDATE
ICStockBill
SET
FStatus=3
WHERE
FInterID=2002
AND
EXISTS(
SELECT
*
FROM
ICStockBillEntry
WHERE
FInterID=2002
AND
FAuxQty<=FAuxCommitQty
AND
FAuxCommitQty>0)――已经关联且关闭
Go
3.4.3合并单据
合并母单和子单的数据(数量,金额等)
如:
Update
t1
SET
t1.FAuxQty=t1.FAuxQty+t2.FAuxQty,
t1.FAmount=t1.FAmount+t2.FAmount,
t1.FAuxPrice=CASE
WHEN
(t1.FAuxQty+t2.FAuxQty)<>0
then
(t1.FAmount+t2.FAmount)/(t1.FAuxQty+t2.FAuxQty)
ELSE
t1.FAuxPrice
END,
t1.FConsignAmount=t1.FConsignAmount+t2.FConsignAmount,
t1.FConsignPrice=CASE
WHEN
(t1.FAuxQty+t2.FAuxQty)<>0
then
(t1.FConsignAmount+t2.FConsignAmount)/(t1.FAuxQty+t2.FAuxQty)
ELSE
t1.FConsignPrice
END
FROM
ICStockBillEntry
t1,#CombineBillEntry
t2
WHERE
t1.FInterID=t2.FInterID
AND
t1.FOrgBillEntryID=t2.FOrgBillEntryID
AND
t1.FItemID=t2.FItemID
删除原子单

删除原子单的凭证对应表
Delete
from
ICSaleVoucher
WHERE
FTypeID=0
AND
FInterID=2003
更新单据的关联关系
UPDATE
ICStockBill
SET
FOrgBillInterID=0
WHERE
FInterID=2002
AND
NOT
EXISTS(
SELECT
*
FROM
ICStockBill
WHERE
FTranType=
21
AND
FOrgBillInterID=2002)
重新界定单据的状态,如:
go
UPDATE
ICStockBill
SET
FStatus=1
WHERE
FInterID=2002
AND
NOT
EXISTS(
SELECT
*
FROM
ICStockBillEntry
WHERE
FInterID=2002
AND
FAuxCommitQty>0)-审核
go
UPDATE
ICStockBill
SET
FStatus=2
WHERE
FInterID=2002
AND
EXISTS(
SELECT
*
FROM
ICStockBillEntry
WHERE
FInterID=2002
AND
FAuxQty>FAuxCommitQty
AND
FAuxCommitQty>0)――已经关联未关闭
go
UPDATE
ICStockBill
SET
FStatus=3
WHERE
FInterID=2002
AND
EXISTS(
SELECT
*
FROM
ICStockBillEntry
WHERE
FInterID=2002
AND
FAuxQty<=FAuxCommitQty
AND
FAuxCommitQty>0)
go
UPDATE
ICStockBillEntry
SET
FOrgBillEntryID=0
WHERE
FInterID=2002
AND
NOT
EXISTS(
SELECT
*
FROM
ICStockBill
WHERE
FTranType=
21
AND
FOrgBillInterID=2002)
――――已经关联且关闭
3.4.4销售出库单的对等核销
3.4.4.1对等核销条件
◆对等核销的必须分别为红字和蓝字的销售出库单;
◆?对等核销的单据必须全部为已审核、但尚未核销的出库单;
◆???对等核销的单据必须是两张业务相同、数据相反的单据,包括两张单据的客户、物料、批次、条目数、仓库、销售方式等内容均一致,而每个条目的数量相反(即相加为零)的情形下才能予以对等核销;

可以允许一张单据为已做账单据(即前期或本期分期收款或委托代销单据);
◆??
一次只能选择两张单据进行对等核销;但一次只能选择一张单据进行反核销
3.4.4.2对等核销对出库单状态的影响
◆对等核销后的销售出库单不能执行反审核;
◆??对等核销后的销售出库单不能再与发票核销;
◆???对等核销后的销售出库单视同钩稽,可以通过查询钩稽关系查询
对等核销单据的账务处理:
对等核销的出库单,如果两张单据均未做账,则分别生成科目一致、金额方向相反的红字和蓝字凭证;如果其中一张单据已做账,则核算系统特殊处理,将未做账的单据单独生成凭证
3.4.4.3核销过程
(1)判断条件:本期已审核单据,红兰单据信息完全相同,未核销,
(2)取得最大勾籍关系号
Select
@pGroupNo=Max(FGroupNo)
from
ICHookRelations

(3)
ICHookRelations中插入一组勾籍关系
(4)icstockbill中ichookinterid更新两单据的勾籍关系号
3.4.4.4反核销过程
(1)更新单据的核销内码
Update
ICStockBill
Set
FHookInterID=0
Where
FInterID=
2004
And
FTranType
=21

Update
ICStockBill
Set
FHookInterID=0
Where
FInterID=
2005
And
FTranType
=21
(2)删除ICHookRelations单据的核销记录
Delete
From
ICHookRelations
Where
FGroupNo
=
26
7.销售出库生成销售发票(普通)

(1)确定原单和目标单据,根据表ICTransactiontype、ICListTemplate、ICTemplate如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="I05"
AND
t3.FFieldname="FOutStockInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(86)
SELECT
*
FROM
ICTemplate
WHERE
FID="I05"
SELECT
*
FROM
ICTemplateEntry
WHERE
FID="I05"
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
where

FID="I05"
AND
FFieldName
="FOutStockInterID"
select
*
from
ICTableRelation
where
FBillID="I05"
AND
FFieldID="FOutStockInterID
目标单据新增
(参考目标单据新增)icsale表
foutstockinterid,FRelationBillNo,FRelationTranType记录关联内码,单据号,单据类型
判断是否是三方关联单据,如果是按三方关联携带单价等,否则按一般单据处理
3.4.5单据关联生成
3.4.5.1销售出库生成红字销售出库
  (1)确定原单和目标单据,根据表ICTransactiontype、ICListTemplate、ICTemplate如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="B01"
AND
t3.FFieldname="FRSCBillInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(21)
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"B01"
SELECT
*
FROM
ICTemplateEntry
WHEREFID
=
"B01"
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
where

FID="B01"
AND
FFieldName
="FRSCBillInterID"
select
*
from
ICTableRelation
where
FBillID="B01"
AND
FFieldID="FRSCBillInterID"
(4)目标单据新增
(参考目标单据新增)
frscbillinterid,FRelationBillNo,FRelationTranType记录关联内码,单据号,单据类型

3.4.6
销售出库报表
3.4.6.1销售出库汇总表
是综合反映一定时间货物的汇总发出情况,是销售发票和销售出库情况的结合查询
整体反映货物的出库、开票情况
形成出库数据
Select
v2.FItemID,
v1.FSupplyID,
v2.FQty,v2.FAmount
From
ICStockBill
v1,ICStockBillEntry
v2
,
t_ICItem
t1,t_Organization
t2
Where
v1.FInterID
=
v2.FInterID

And
v1.FTranType
=21

And
v2.FItemID
=
t1.FItemID
And
v1.FSupplyID=t2.FItemID

And
v1.FCancelLation=0AND
convert(datetime,convert(varchar(30),v1.FDate,111))
>="2001-01-02"
AND
convert(datetime,convert(varchar(30),v1.FDate,111))
<="2001-02-02"形成开票数据
Select
v2.FItemID,v1.FCustID,v2.FQty,
Round(case
v1.FTranType
when
80
then
v2.FAmount
*
isnull(v1.FExchangeRate,1)
else
(v2.FAmount
-
v2.FTaxAmount)*
isnull(v1.FExchangeRate,1)
end,2)
FROM
ICSale
v1,ICSaleEntry
v2,t_ICItem
t1,t_Organization
t2
Where
v1.FInterID
=
v2.FInterIDAnd
v1.FCancelLation=0AND
convert(datetime,convert(varchar(30),v1.FDate,111))
>="2001-01-02"
AND
convert(datetime,convert(varchar(30),v1.FDate,111))
<="2001-02-02"and
v2.FItemID
=
t1.FItemID
and
v1.FCustID
=
t2.FItemID
形成物料分级
形成分级及汇总数据
形成未开票数据
3.4.6.2销售出库明细表
(数据形成和汇总表相同,只是按明细显示)
排序如下:
Order
by
FOrderNumber,FNumber,FSumSort,FDate,FBillNo,Fentryid
3.4.7表结构:见出入库单据表,单据类型为21
3.5销售发票
3.5.1数据描述
3.5.1.1单据模版(专用)
(1)单据的事物类型
ftrantype=80
SELECT
*
FROM
ICTransactionType
Where
FID
IN
(80)
(2
)单据模板为FID
=
"I04"
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"I04"
SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"I04"
"
ORDER
BY
FCtlIndex
(3)选单模板为FID
=
"I04"
select
*
from
icselbills
WHERE
FID
=
"I04"
(4)单据对应关系模板为
ictablerelation
中类型为62
select
*
from
ictablerelation
where
ftypeid=62
(5)单据字段描述表为中类型为62(包括字段的显示,过滤显示等)
select
*
from
icchatbilltitle

where
ftypeid=62
3.5.1.2单据新增
(1)选择单据模板(根据上面模板,显示单据,主要是ICTemplate,ICTemplateEntry,ICTransactionType表)
(2)执行GetICMaxNum
"ICSale"提取最大单据内码,根据选项获取价格信息
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=
80
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=80
(4)插入数据到发票icsale,icsaleentry(ftrantype=80专用发票,86普通发票)
(5)插入数据到往来业务表t_RP_Contact,收款计划表t_rp_rpdetail(判断应收应付是否结束初始化,处于的期间)
(6)根据选项更新客户信息t_organization
3.5.1.3审核、反审核

审核:(1)提取发票数据(从icsale,icsaleEntry)提取单据数据(从ICStockBill
v1
,ICStockBillEntry)

判断核销数量的差异(2)
提取最大钩稽序号,插入一组记录到勾籍关系表

select
isnull(Max(FGroupNo),0)
as
FGroupNo
from
ICHookRelations

Insert
into
ICHookRelations……..

(3)更新数据:更新发票的钩稽内码,审核状态,审核人,更新单据的钩稽内码
Update
t1
Set
t1.FHookInterID=26,
t1.FCheckerID
=
16394,FStatus=1,FYearPeriod
="2001-01"
From
ICSale
t1,#tmpInterID
t2
Where
t1.FInterID
=
t2.FInterID

Update
t1
Set
t1.FHookInterID=26From
ICStockBill
t1,#tmpSTInterID
t2
Where
t1.FInterID
=
t2.FInterID
更新往来业务表的数据,状态,更新往来业务余额

update
c
set
c.FYear=convert(int,y.FValue),c.FPeriod=convert(int,p.FValue)
from
t_rp_contact
c,t_systemprofile
y,t_systemprofile
p
where
c.FType=3
and
c.FInvoiceID=1070
and
c.FK3Import=1
and
y.FKey="CurrentYear"
and
y.FCategory="IC"
and
p.FKey="CurrentPeriod"
and
p.FCategory="IC"
update
t_RP_Contact
set
FStatus=FStatus
|
1
where
FInvoiceID=1070
and
FType
=
3
and
FK3Import=1
update
t_RP_ContactBal
set
…………………
反审核:
更新单据和发票标志,更新发票的状态
update
ICSale
set
FHookInterID=0,
FCheckerID
=
NULL,FStatus=0,FYearPeriod
=""
where
FInterID=1070
update
ICStockBill
set
FHookInterID=0

where
FInterID=2010
删除钩稽记录
Delete
From
ICHookRelations
Where
FGroupNo=26

更新往来业务数据
update
t_RP_Contact
set
FStatus=FStatus
&
254
where
FInvoiceID=1070
and
FType
=
3
and
FK3Import=1
update
t_RP_ContactBal
set…………….
3.5.1.4作废、反作废
Update
ICSale
SET
FCancellation=1
Where
FInterID
=1084(置作废标志为1)
Update
ICSale
SET
FCancellation=0
Where
FInterID
=1084(置作废标志为0)
3.5.1.5拆分、合并
拆分:(只按数量进行)
(1)原单的拆分分录记录原单分录号:UPDATE
ICSaleEntry
SET
FOrgBillEntryID=FEntryID
WHERE
FInterID=1090
And
FOrgBillEntryID=0
(2)原单倒减拆分数量
Update
ICSaleEntry
SET
FAuxQty=FAuxQty-(-5)
WHERE
FInterID=
1090
AND
FEntryID=
1
AND
FItemID=
189
(3)形成拆分后子单分录的数据
(4)表头复制原单记录
(5)新增子单,从拆分记录得到
(6)子单记录关联关系号UPDATE
#SplitBill
SET
FOrgBillInterID=1090
合并:反向操作
3.5.1.6下推生成发货通知单
 (1)确定原单和目标单据,根据表ICTransactiontype、ICListTemplate、ICTemplate如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="S02"
AND
t3.FFieldname="FSalBillInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(83)
SELECT
*
FROM
ICTemplate
WHERE
FID="S02"
SELECT
*
FROM
ICTemplateEntry
WHERE
FID="S02"
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
where

FID="S02"
AND
FFieldName
="FSalBillInterID"
select
*
from
ICTableRelation
where
FBillID="S02"
AND
FFieldID="FSalBillInterID"
(4)目标单据新增
(参考目标单据新增)
FSalBillInterID,FRelationBillNo,FRelationTranType记录关联内码,单据号,单据类型
3.5.1.7下推退货通知单
(1)确定原单和目标单据,根据表ICTransactiontype、ICListTemplate、ICTemplate如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="S12"
AND
t3.FFieldname="FSalBillInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(82)
SELECT
*
FROM
ICTemplate
WHERE
FID="S12"
SELECT
*
FROM
ICTemplateEntry
WHERE
FID="S12"
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
whereFID="S12"
AND
FFieldName
="FSalBillInterID"
select
*
from
ICTableRelation
where
FBillID="S12"
AND
FFieldID="FSalBillInterID"
(4)目标单据新增
(参考目标单据新增)
FSalBillInterID,FRelationBillNo,FRelationTranType记录关联内码,单据号,单据类型
3.5.1.8下推红字发票(以专用为例)
(1)确定原单和目标单据,根据表ICTransactiontype、ICListTemplate、ICTemplate如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="I04"
AND
t3.FFieldname="FRSCBillInterID""
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(80)
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"I04"
SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"I04"
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
where
FID="I04"
AND
FFieldName
="FRSCBillInterID"
select
*
from
ICTableRelation
where
FBillID="I04"
AND
FFieldID="FRSCBillInterID"
(4)目标单据新增
(参考目标单据新增)
FRSCBillInterID,FRelationBillNo,FRelationTranType记录关联内码,单据号,单据类型

3.5.1.9下推生成出库单
(1)确定原单和目标单据,根据表ICTransactiontype、ICListTemplate、ICTemplate如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="B01"
AND
t3.FFieldname="FInvoiceInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(21)
SELECT
*
FROM
ICTemplate
WHERE
FBillID="B01"
SELECT
*
FROM
ICTemplateEntry
WHERE
FBillID="B01"
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
where
FID="B01"
AND
FFieldName
="FInvoiceInterID"
select
*
from
ICTableRelation
where
FBillID="B01"
AND
FFieldID="FInvoiceInterID"
(4)目标单据新增
(参考目标单据新增)
"FInvoiceInterID",FRelationBillNo,FRelationTranType记录关联内码,单据号,单据类型3.5.1.10.对等核销、反核销
(1)插入一组记录到钩稽关系表(ichookrelations),其中核销类型FHookType=1
(2)更新发票的状态,钩稽关系,审核人,审核时间:(包括红、蓝发票)
FHookInterID,FCheckerID
,FStatus,
FYearPeriod
(3)更新应收应付中往来业务数据、状态、余额(包括红蓝发票)、主要是t_RP_Contact、t_RP_ContactBal)
反核销:
调用存储过程CounterHookCheck,处理发票的状态,钩稽关系,审核人,审核时间,删除钩稽表关系
反向处理应收应付中往来业务t_RP_Contact数据
反向处理t_RP_ContactBal数据
3.5.2销售发票报表
3.5.2.1销售收入统计表(1)建立选择范围内数据的物料代码2)从销售发表ICSale,ICSaleEntry结合其他基础资料表(t_ICItem
,t_Organization,t_Department
,
t_Emp
,t_MeasureUnit)形成记录(3)形成分级数据(4)按种子列排序
3.5.2.2客户单位销售情况明细表功能
(1)报表方案
SELECT
*
FROM
ICReportProfile
WHERE
FRptID=134
(2)从销售发表ICSale,ICSaleEntry结合其他基础资料表(t_ICItem
,t_Organization,t_Department
,
t_Emp
,t_MeasureUnit)形成记录
(3)形成小计,汇总数据
(4)形成排序(Order
by
FOrderNumber
asc
,FSumSort
asc
,FNumber
asc,FDate
asc)
3.5.2.3销售退货统计表
(1)报表方案
SELECT
*FROM
ICReportProfile
WHERE
FRptID=135
(2)从销售发表ICSale,ICSaleEntry结合其他基础资料表(t_ICItem
,t_Organization,t_Department
,
t_Emp
,t_MeasureUnit)形成记录,条件为FAmount<0
(3)形成小计,汇总数据
(4)形成排序(Order
by
FOrderNumber
asc
,FSumSort
asc
,FNumber
asc,FDate
asc)
3.5.3销售表结构

主表:icsale
字段名
类型
描述
FAcctID
INTEGER
会计科目内码
FBillNo
STRING
单据编号
FRelationBillNo
STRING
关联单据号码
FRelationTranType
INTEGER
关联单据类型
FROB
INTEGER
红蓝单标志
FRSCBillInterID
INTEGER
原单内码
FRSCBillNo
STRING
原单号码
FSaleStyle
INTEGER
销售方式代码
FSettleID
INTEGER
结算方式
FStatus
INTEGER
状态
FSystemType
INTEGER
 
FTransportStyle
STRING
运输方式代码
FTranType
INTEGER
单据类型
FUUID
其它
 
FVchInterID
INTEGER
凭证内码
FYearPeriod
STRING
审核期间
FYtdIntRate
FLOAT
年利率
FBrNo
STRING
公司代码
FCancellation
INTEGER
是否作废
FBillerID
INTEGER
制单人内码
FCheckerID
INTEGER
审核人内码
FClosed
INTEGER
是否关闭
FCompactID
INTEGER
 
FCompactNo
STRING
合同号
FContractID
INTEGER
合同内码
FCurCheckLevel
INTEGER
 
FCurrencyID
INTEGER
币别内码
FCustID
INTEGER
客户内码
FDate
DATETIME
发票日期
FDeptID
INTEGER
部门内码
FEmpID
INTEGER
职员内码
FExchangeRate
FLOAT
汇率
FHookInterID
INTEGER
发票钩稽内码
FImport
INTEGER
 
FInterID
INTEGER
发票内码
FManagerID
INTEGER
主管内码
FMultiCheckDate1
DATETIME
 
FMultiCheckDate2
DATETIME
 
FMultiCheckDate3
DATETIME
 
FMultiCheckDate4
DATETIME
 
FMultiCheckDate5
DATETIME
 
FMultiCheckDate6
DATETIME
 
FMultiCheckLevel1
INTEGER
一审
FMultiCheckLevel2
INTEGER
二审
FMultiCheckLevel3
INTEGER
三审
FMultiCheckLevel4
INTEGER
四审
FMultiCheckLevel5
INTEGER
五审
FMultiCheckLevel6
INTEGER
六审
FNote
STRING
备注
FOperDate
其它
 
FOrderInterID
INTEGER
订单内码
FOrgBillInterID
INTEGER
源单内码
FOutStockInterID
INTEGER
出库单内码
FPayStyleID
INTEGER
收款方式内码
FPosted
INTEGER
记账标志
FPosterID
INTEGER
记账人内码
分录表:icsaleentry
字段名
类型
描述
FAmount
FLOAT
金额
FAuxCommitQty
FLOAT
辅助发货数量
FAuxOrderPrice
FLOAT
辅助订单单价
FAuxPrice
FLOAT
单价
FAuxQty
FLOAT
数量
FAuxTaxPrice
FLOAT
含税单价
FBrNo
STRING
 
FCommitQty
FLOAT
发货数量
FDiscountRate
FLOAT
折扣率(%)
FEntryID
INTEGER
分录号
FInterID
INTEGER
发票内码
FItemID
INTEGER
产品代码
FMapName
STRING
对应名称
FMapNumber
STRING
对应代码
FOrderPrice
FLOAT
订单单价
FOrgBillEntryID
INTEGER
原单内码
FPrice
FLOAT
单价
FQty
FLOAT
基本单位数量
FSourceEntryID
INTEGER
源单行号
FTaxAmount
FLOAT
税额
FTaxPrice
FLOAT
含税价
FTaxRate
FLOAT
税率
FUnitID
INTEGER
单位
3.6退货通知单
3.6.1数据描述
3.6.1.1单据模版
(1)单据的事物类型
ftrantype=82
SELECT
*
FROM
ICTransactionType
Where
FID=82
(2
)单据模板为FID
=
"B01"
SELECT
*
FROM
ICTemplate
WHERE
FID
=
S12"
SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"
S12"
ORDER
BY
FCtlIndex
(3)选单模板为FID
=
"
S12"
select
*
from
icselbills
WHERE
FID
=
"
S12"
4)单据对应关系模板为
ictablerelation
中类型为63
select
*
from
ictablerelation
where
ftypeid=63
5)单据字段描述表为中类型为63(包括字段的显示,过滤显示等)
select
*
from
icchatbilltitle

where
ftypeid=63
3.6.1.2单据新增
(1)选择单据模板(根据上面模板,显示单据,主要是ICTemplate,ICTemplateEntry,ICTransactionType表)
(2)执行exec
GetICMaxNum
"SEOutStock"提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=
82
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=82
(4)先删除,后插入数据到单据SEOutStock,SEOutStock
Entry
DELETE
SEOutStock
WHERE
FInterID=1085
INSERT
INTO
SEOutStockEntry(……)
INSERT
INTO
SEOutStock
(…..)
3.6.1.3审核、反审核
审核:
Update
SEOutStock
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=1085
反审核:
Update
SEOutStock
Set
FCheckerID=Null,FStatus=0
Where
FBrNo="0"
And
FInterID=1085
3.6.1.4.关闭、反关闭
关闭:Update
SEOutStock
SET
FStatus=3
WHERE
FInterID
=
1080(单据必须审核)
反关闭:UPDATE
SEOutStock
SET
FStatus=1
WHERE
FInterID=1080
自动关闭条件:FQty=
FCommitQty
3.6.1.5.
下推生成出库单
(1)确定原单和目标单据,根据表ICTransactiontype、ICListTemplate、ICTemplate如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="B01"
AND
t3.FFieldname="FBSCBillInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(21)
SELECT
*
FROM
ICTemplate
WHERE
FBillID="B01"
SELECT
*
FROM
ICTemplateEntry
WHERE
FBillID="B01"
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
where
FID="B01"
AND
FFieldName
="FBSCBillInterID"
select
*
from
ICTableRelation
where
FBillID="B01"
AND
FFieldID="FBSCBillInterID"
(4)目标单据新增
(参考目标单据新增)
FBSCBillInterID,FRelationBillNo,FRelationTranType记录关联内码,单据号,单据类型
3.6.1.6关联发票生成

(1)选择关联单据

(2)选择的关联关系select
*
from
ICTableRelation
where
FBillID="S12"
AND
FFieldID="FSalBillInterID"SELECT
*
FROM
ICSelBills

WHERE
FID="S12"
AND
FFieldName="FSalBillInterID"

(3)生成携带数据SELECT
t1.FCaption,t1.FFieldName
FROM
ICTemplate
t1,ICTransactionType
t2,
ICListTemplate
t3,
ICTemplate
t4,ICSelBills
t5
WHERE
t4.FID="S12"
AND
t4.FFieldName="FSalBillInterID"
AND
t4.FSelBill=t3.FID
AND
t3.FBillTemplateID=t2.FID
AND
t2.FTemplateID=t1.FID
AND
t1.FFieldName=t5.FName
AND
t5.FID=t4.FID
AND
t5.FFieldName=t4.FFieldName
AND
t5.FSelType=1
SELECT
t1.*
FROM
ICSelBills
t1,ICTemplateEntry
t2
WHERE
t1.FID=t2.FID
AND
t1.FDstCtlField=t2.FFieldName
AND
t1.FID="S12"
AND
t1.FFieldName="FSalBillInterID"
AND
FSelType=0
ORDER
BY
t2.FCtlOrder,t1.FDK
保存单据
3.6.1.7表结构同发货通知单
3.7销售报表
3.7.1销售毛利润表

销售毛利润表是综合反映一定时间销售收入、销售成本以及销售利润的情况,是针对销售毛利的汇总查询
2.数据形成:

(1)统计选择范围内的销售出库数量、成本
涉及的表
ICStockBill
v1,ICStockBillEntry
v2
,
t_ICItem
t1,t_Organization
t2
参加的单据只包括现销、赊销(v1.FSaleStyle=100
or
v1.FSaleStyle=101)
(2)统计选择范围内的销售收入、数量
涉及的表:ICSale
v1,ICSaleEntry
v2,t_ICItem
t1,t_Organization
t2
单据范围:所有为作废单据,区分普通发票和增殖税发票
(3)用收入减去成本得到毛利润

(4)形成合计数据,报表按物料代码排序

3.7.2产品销售增长分析表
产品销售增长分析:

分析产品销售数量和金额与上年同期的增减幅度
数据形成
形成本期销售产品的代码
形成本期的销售数量和金额(从icslae,icsaleentry)
形成去年同销售期数量和金额(从icslae,icsaleentry,以本期产品代码的数据集为准
形成对比数据(FThisQty-FLastQty)
/
FLastQty
*
100,(FThisAmount-FLastAmount)
/
FLastAmount
*
100
按物料内码排序

3.7.3产品销售增长流向表
产品销售增长流向表:
按购买产品的客户所在区域分析产品销售数量和收入的流向。它的记录内容包括所属地区、产品类别、产品代码、产品名称、客户、计量单位(常用和基本)、销售数量数量、销售收入
2.数据形成:(1)从ICSale
t1,ICSaleEntry
t2,t_Organization
t3,t_ICItem
t4
形成选择时间范围内的销售数据,按物料内码,客户内码,区域内码分组统计数据group
by
t2.FItemID,t1.FCustID,t3.FRegionID(2)基本计量单位转换常用计量单位数据
(3)界面显示排序按区域名字,物料类别名字排序Order
by
FRegionName,FClassName
3.7.4产品销售结构分析表
产品销售结构分析表:
对所有销售产品进行的销售分析,包括占同类销售比率、自身销售增长趋势的各种分析
数据形成:
从选择的期间,形成当前销售的数量和金额(来源于表ICSale
t1,ICSaleEntry
t2,t_Organization
t3,t_Icitem
t4

统计上年同期的销售金额(物料代码为当前期间的记录集)
按物料类别统计销售总金额,按照当前期间数据除以同类别的总金额得到占同类别的销售比例((FThisAmount)
/
FClassAmount
*
100)
根据当前期间的物料的销售金额和上年同期的销售金额的比较得到增长比例(FThisAmount-FLastAmount)
/
FLastAmount
*
100
转换常用计量单位数量
按物料代码排序显示数据Order
by
FNumber3.7.5信用数量分析表
信用数量分析表:

对进行信用管理的客户和职员(系统用户),分别进行信用数量分析
数据形成过程(按物料)
从物料信用对应表提取信用数量(t_CreditMateriel
t1,t_Organization
t2,t_ICItem
t3)
提取时间范围内销售出库数量(来源ICStockBill
k1,ICStockBillEntry
k2)不包括现销数据FSaleStyle
<>100,且出库单已经和发票钩稽了,应收还没有收款结算的数量(FStatus
&
4)=4,按客户内码、物料内码FClerkCustID,
FItemID分组统计数据
信用数量-销售出库数量得到差额数据
转换常用计量单位数量
形成合计数据
显示排序按排序内码,客户内码,物料内码order
by
FID,FClerkCustID,FItemID
按职员:
从职员对应信用对应表提取信用数量(t_CreditMateriel
t1,t_Organization
t2,t_ICItem
t3)
提取时间范围内销售出库数量(来源ICStockBill
k1,ICStockBillEntry
k2)不包括现销数据FSaleStyle
<>100,且出库单已经和发票钩稽了,应收还没有收款结算的数量(FStatus
&
4)=4,按客户内码、物料内码FClerkCustID,
FItemID分组统计数据
信用数量-销售出库数量得到差额数据
转换常用计量单位数量
形成合计数据
显示排序按排序内码,客户内码,物料内码order
by
FID,FClerkCustID,FItemID

3.7.6信用额度分析表
1.
信用额度分析表
进行信用管理的客户和职员(系统用户),分别进行信用额度分析。它的记录内容包括客户(职员)代码、客户(职员)名称、信用级次、应收款余额、信用额度、两者差额等
2.数据形成(按职员)

(1)提取选定时间范围内实现信用管理职员信用的应收款余额,包括的对象为
t_rp_contact.ftype
in(1,3,11,13)其他应收单、销售发票
,涉及的表有t_Credit
,t_item,t_rp_contact
(2)提取选定时间范围内实现信用管理职员信用的信用额度
(3)应收款余额-信用额度得到差额
(4)形成合计数据
(5)按排序方案显示数据

按客户;

(1)提取选定时间范围内实现信用管理客户信用的应收款余额,包括的对象为
t_rp_contact.ftype
in(1,3,11,13)其他应收单、销售发票
,涉及的表有t_Credit
,t_item,t_rp_contact
(2)提取选定时间范围内实现信用管理客户信用的信用额度
(3)应收款余额-信用额度得到差额
(4)形成合计数据
(5)按排序方案显示数据
3.7.7信用期限分析表
1.
信用期限分析表:
对进行信用管理的客户和职员(系统用户),分别进行信用期限分析
2.数据形成(按客户)

(1)根据信用关系表提取出客户信用的期限分段,信用级次,来于表t_Credit
,t_item

(2)根据信用的期限分段提取信用金额,来源表(t_rp_contact),包括的对象为
t_rp_contact.ftype
in(1,3,11,13)其他应收单、销售发票

(3)形成折后金额(FAmount-
FAmount
*
FDiscountRate/100)

(4)显示排序按照客户内码、信用期限
按职员:
(1)根据信用关系表提取出职员信用的期限分段,信用级次,来于表t_Credit
,t_item

(2)根据信用的期限分段提取信用金额,来源表(t_rp_contact),包括的对象为
t_rp_contact.ftype
in(1,3,11,13)其他应收单、销售发票

(3)形成折后金额(FAmount-
FAmount
*
FDiscountRate/100)

(4)显示排序按照职员内码、信用期限
四、仓存系统
4.1其他入库
4.1.1业务描述
其他入库单是处理其他类型的产品入库的单据,其他入库确认后,需要手工填入成本
蓝字其他入库单可以通过关联赠品入库单、收料通知单生成,红字外购入库单可以通过关联蓝字其他入库单、退料通知单生成,即将相关单据作为源单据,根据用户选择的源单据自动生成其他入库单。
其中赠品入库单、收料通知单、退料通知单、蓝字其他入库单等必须是已审核、尚未关闭的单据
4.1.2业务数据描述
4.1.2.1单据模板
(1)单据的事物类型
ftrantype=10
SELECT
*
FROM
ICTransactionType
Where
FID
IN
(10)
(2
)单据模板为FID
=
"A97"
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"A97"
SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"A97"
ORDER
BY
FCtlIndex
(3)选单模板为
FID
=
"A97"
select
*
from
icselbills
WHERE
FID
=
"A97"
(4)单据对应关系模板为
ictablerelation
中类型为57
select
*
from
ictablerelation
where
ftypeid=57
(5)单据字段描述表为中类型为57
select
*
from
icchatbilltitle

where
ftypeid=57
4.1.2.2单据新增

(1)选择单据模板(根据上面模板,显示单据,主要是ICTemplate,ICTemplateEntry,ICTransactionType表)
(2)执行exec
GetICMaxNum
"ICStockBill提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=
10
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=10
(4)插入数据到单据POInstock,POInstockEntry
INSERT
INTO
icInstockEntry
(……)
INSERT
INTO
icInstock
(…..)
(5)更新用户id
UPDATE
ICStockBill
SET
FUUID=NEWID()
WHERE
FInterID=20104.1.2.3审核、反审核
审核:
(1)更新及时库存(根据选项)执行存储过程p_UpdateStorage
EXEC
p_UpdateStorage
189,150,0,"14",0,"",100,0
(2)判断是否是虚仓业务关联过来,如果是还要更新虚及时仓库存数据
EXEC
p_UpdatePOStorage
2010,0
(3)更新单据状态
Update
ICStockBill
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=2010
反审核:
(1)反向更新及时库存(根据选项)执行存储过程p_UpdateStorage
EXEC
p_UpdateStorage
189,150,0,"14",0,"",0,0
(2)判断是否是虚仓业务关联过来,如果是还要反向更新虚及时仓库存数据
EXEC
p_UpdatePOStorage
2010,1
(3))还原单据状态
Update
ICStockBill
Set
FCheckerID=Null,FStatus=0
Where
FBrNo="0"
And
FInterID=2010
其他入库单通过关联赠品入库单生成
(1)确定原单和目标单据

赠品入库----其他入库单)根据表ICTransactiontype、ICListTemplate、ICTemplate
如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="A97"
AND
T3.FFIELDNAME="FZPBillInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(10)
SELECT
*
FROM
ICTemplate
WHERE
FID="A97"

ORDER
BY
FCtlIndex
SELECT
*,FCtlOrder
AS
FNewCtlOrder,FCtlIndex
AS
FNewCtlIndex
FROM
ICTemplateEntry
WHERE
FID="A97"

ORDER
BY
FCtlOrde
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
where
FID="A97"
AND
FFieldName="FZPBillInterID"
select
*
from
ICTableRelation
where
FBillID="A97"
AND
FFieldID="FZPBillInterID"
其他入库单通过关联收料通知单生成,?
红字其他入库单通过关联退料通知单生成:
该关联为分销业务流程,必须收料通知单上录入供货机构才能被关联
4.1.3其他入库单分类表

1.提取数据(主要是icstockbill,icstockbillentry),结合其他基础资料表FBillTypeID=0为其他入库,1为分销调拨,1000为赠品调拨,单据类型FTranType=10
Select
v2.FItemID,t3.FItemID,
case
when
FBillTypeID=1
then
v2.FQty
Else
0
End,
case
when
FBillTypeID=1
then
v2.FQty/t4.FCoefficient
Else
0
End,
case
when
FBillTypeID=1
And
t2.FTrack=81
then
v2.FPlanPrice*v2.FQty
When
FBillTypeID=1
And
t2.FTrack<>81
Then
v2.FAmount
else
0
End,
case
when
FBillTypeID=1000
then
v2.FQty
Else
0
End,
case
when
FBillTypeID=1000
then
v2.FQty/t4.FCoefficient
Else
0
End,
case
when
FBillTypeID=1000
And
t2.FTrack=81
then
v2.FPlanPrice*v2.FQty
When
FBillTypeID=1000
And
t2.FTrack<>81
Then
v2.FAmount
else
0
End,
case
when
(FBillTypeID
IS
NULL
or
FBillTypeID=0)
then
v2.FQty
Else
0
End,
case
when
(FBillTypeID
IS
NULL
or
FBillTypeID=0)
then
v2.FQty/t4.FCoefficient
Else
0
End,
case
when
(FBillTypeID
IS
NULL
or
FBillTypeID=0)
And
t2.FTrack=81
then
v2.FPlanPrice*v2.FQty
When
(FBillTypeID
IS
NULL
or
FBillTypeID=0)
And
t2.FTrack<>81
Then
v2.FAmount
else
0
End,
v2.FQty,v2.FQty/t4.FCoefficient,
case
when
t2.FTrack=81
then
v2.FPlanPrice*v2.FQty
When
t2.FTrack<>81
Then
v2.FAmount
else
0
End
From
ICStockBill
v1
inner
join
ICStockBillEntry
v2
on
v1.FInterID=v2.FInterID
inner
join
t_ICItem
t2
on
v2.FItemID=t2.FItemID
inner
join
t_Stock
t3
on
v1.FDCStockID=t3.FItemID
inner
join
t_MeasureUnit
t4
on
t2.FCUUnitID=t4.FItemID
left
join
t_StockPlace
t11
on
v2.FDCSPID=t11.FSPID
Where
v1.FTranType=10
And
v1.FCancelLation=0
AND
v1.FDate>="2001-01-01"
And
v1.FDate<="2001-01-29"
2.形成物料分类数据
3.形成合计数据4.2其他出库
4.2.1业务描述
参考帮助
4.2.2业务数据描述
4.2.2.1单据模板
(1)单据的事物类型
ftrantype=29
SELECT
*
FROM
ICTransactionType
Where
FID
IN
(29)
(2
)单据模板为FID
=
"B09""
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"B09"
SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"B09"
ORDER
BY
FCtlIndex
(3)选单模板为
FID
=
"B09"
select
*
from
icselbills
WHERE
FID
=
"B09"
(4)单据对应关系模板为
ictablerelation
中类型为68
select
*
from
ictablerelation
where
ftypeid=68
(5)单据字段描述表为中类型为68
select
*
from
icchatbilltitle

where
ftypeid=68
4.2.2.2单据新增
(1)选择单据模板(根据上面模板,显示单据,主要是ICTemplate,ICTemplateEntry,ICTransactionType表)
(2)执行exec
GetICMaxNum
"ICStockBill提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=29
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=29
(4)插入数据到单据POInstock,POInstockEntry
单据类型为29
INSERT
INTO
icInstockEntry
(……)
INSERT
INTO
icInstock
(…..)
(5)更新用户id
UPDATE
ICStockBill
SET
FUUID=NEWID()
WHERE
FInterID=2013
4.2.2.3审核、反审核
审核:
(1)更新及时库存(根据选项)执行存储过程p_UpdateStorage
EXEC
p_UpdateStorage
208,150,0,"",0,"",-100,0
(2)更新单据状态
Update
ICStockBill
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=2013
反审核:
(1)反向更新及时库存(根据选项)执行存储过程p_UpdateStorage
EXEC
p_UpdateStorage
208,150,0,"",0,"",0,0
(2)还原单据状态
Update
ICStockBill
Set
FCheckerID=Null,FStatus=0
Where
FBrNo="0"
And
FInterID=2013
4.2.3其他出库单分类表

(1)1.提取数据(主要是icstockbill,icstockbillentry),结合其他基础资料表FBillTypeID=0为其他入库,1为分销调拨,1000为赠品调拨,单据类型FTranType=29
(2)形成物料分组数据
(3)形成汇总数据
4.3仓库调拨
4.3.1业务定义
仓库间的调拨:需要有调入调出仓,实现仓位管理还需要输入仓位
仓位间的调拨:调入调出仓相同,需要输入两个仓位
4.3.2业务数据描述
4.3.2.1单据模板
(1)单据的事物类型
ftrantype=41
SELECT
*
FROM
ICTransactionType
Where
FID
IN
(41)
(2
)单据模板为FID
=
"D01"
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"D01""
SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"D01""
ORDER
BY
FCtlIndex
(3)选单模板为
FID
=
"D01"
select
*
from
icselbills
WHERE
FID
=
"D01"
(4)单据对应关系模板为
ictablerelation
中类型为75
select
*
from
ictablerelation
where
ftypeid=75
(5)单据字段描述表为中类型为75
select
*
from
icchatbilltitle

where
ftypeid=75
4.3.2.2新增单据
(1)选择单据模板(根据上面模板,显示单据,主要是ICTemplate,ICTemplateEntry,ICTransactionType表)ftrantype=41
(2)执行exec
GetICMaxNum
"ICStockBill提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=41
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=41
(4)插入数据到单据ICStockBill,icInstockEntry单据类型为41,其中FDCStockID为调入仓库内码,FSCStockID为调出仓库内码
DELETE
ICStockBill
WHERE
FInterID=2014(先删除后插入避免重复)
INSERT
INTO
icInstockEntry
(……)
INSERT
INTO
icInstock
(…..)
(5)更新用户id
UPDATE
ICStockBill
SET
FUUID=NEWID()
WHERE
FInterID=2013
4.3.2.3审核和反审核(审核更新及时库存)
审核:
(1)更新及时库存(根据选项)执行存储过程p_UpdateStorage
(根据入库仓更新)
EXEC
p_UpdateStorage
167,150,0,"11",10,"2001-01-22",100,0
(2)更新及时库存(根据选项)执行存储过程p_UpdateStorage
(根据出库库仓更新)
EXEC
p_UpdateStorage
167,148,5,"11",10,"2001-01-22",0,72649.6
(3)更新单据状态
Update
ICStockBill
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=2014
反审核:
(1)更新及时库存(根据选项)执行存储过程p_UpdateStorage
(根据入库仓更新)
EXEC
p_UpdateStorage
167,150,0,"11",10,"2001-01-22",0,0
(2)更新及时库存(根据选项)执行存储过程p_UpdateStorage
(根据出库库仓更新)
EXEC
p_UpdateStorage
167,148,5,"11",10,"2001-01-22",100,72649.6
(3)还原单据状态
Update
ICStockBill
Set
FCheckerID=Null,FStatus=0
Where
FBrNo="0"
And
FInterID=2014
4.4虚仓管理
4.4.1赠品管理业务
4.4.1.1赠品形式主要有以下几种
1、在收货,除议定的货物外,附带无偿收到供应商一定数量的同种货物;并在发货时,无偿赠予客户一定数量的同种货物;
2、在收货或发货时,除议定的货物外,附带无偿收到或赠予对方一定数量的非同种货物,而该非同种货物有分几种情况:
(1)该货物只作为赠品形式存在,不进行销售处理,则该货物从收入到发出都只核算数量而不涉及成本的核算和收入的考量;
(2)当前货物是作为供应商的赠品入库的,但要进行销售处理,该种货物要进行成本核算;
(3)当前货物是作为供应商的赠品入库的,但要进行销售处理,该种货物不进行成本核算;
(4)当前货物是用户自制或购买的,但要作为赠品赠送给客户,该种货物要进行成本核算;
(5)当前货物是用户自制或购买的,但要作为赠品赠送给客户,该种货物不进行成本核算;
对于上述第一种情况,可以作为采购或销售的数量折扣处理,不作为赠品管理的范畴;
对于上述第二种情况,则要分别讨论:
其中第(4)种情况的入库、出库全部需要进行成本核算的,出库可以通过其他出库单完成,不适宜作为赠品管理;而第(1)、(2)、(3)和第(5)种情况在赠品管理解决。
虚仓的约定
仓库原有两种类型:
实仓和待检仓、代管仓。实仓进行数量和金额核算,待检仓、代管仓是一种虚仓只进行数量核算,不进行金额核算。赠品仓,该仓库也是虚仓,只进行数量核算,不进行金额核算。
其他处理方式同待检仓。
在收料通知单、退料通知单中不允许有赠品仓可供选择;而在赠品入库单和赠品出库单中不允许有待检仓可供选择
4.4.2赠品入库
4.4.2.1模板
(1)单据的事物类型
ftrantype=6
SELECT
*
FROM
ICTransactionType
Where
FID
IN
(6)
(2
)单据模板为FID
=
"ZIN""
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"ZIN"
SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"ZIN"
ORDER
BY
FCtlIndex
(3)选单模板为
FID
=
"ZIN"
select
*
from
icselbills
WHERE
FID
=
"ZIN"
(4)单据对应关系模板为
ictablerelation
中类型为54
select
*
from
ictablerelation
where
ftypeid=54
(5)单据字段描述表为中类型为54
select
*
from
icchatbilltitle

where
ftypeid=54
4.4.2.2新增单据
(1)选择单据模板(根据上面模板,显示单据,主要是ICTemplate,ICTemplateEntry,ICTransactionType表)ftrantype=6
(2)执行execGetICMaxNum
"ZPStockBill"
提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=6
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=6
(4)插入数据到单据POInstock,POInstockEntry
单据类型为6,其中FDCStockID为入仓库内码
DELETE
zpStockBill
WHERE
FInterID=6(先删除后插入避免重复)
INSERT
INTO
zpInstockEntry
(……)
INSERT
INTO
zpInstock
(…..)
4.4.2.3审核、反审核(审核更新及时库存)
审核:
(1)更新及时库存POInventory(根据选项)
Update
POInventory
Set
FQty=85
Where
FBrNo="0"
And
FItemID=174
And
FStockID=152
(2)更新单据状态
Update
ZPStockBill
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=17
反审核:
(1)更新及时库存(根据选项)
Update
POInventory
Set
FQty=-15
Where
FBrNo="0"
And
FItemID=174
And
FStockID=152
(2)还原单据状态
Update
ZPStockBill
Set
FCheckerID=Null,FStatus=0
Where
FBrNo="0"
And
FInterID=17
4.4.2.4下推生成其他入库单
(1)确定原单和目标单据

赠品入库----其他入库单)根据表ICTransactiontype、ICListTemplate、ICTemplate
如:
SELECT
t1.FName
as
FBillName,t2.FName
as
FSelBillName,t3.FAction
From
ICTransactiontype
t1,ICListTemplate
t2,
ICTemplate
t3
WHERE
t1.FTemplateID=t3.FID
AND
t3.FSelBill=t2.FID
AND
t3.FID="A97"
AND
T3.FFIELDNAME="FZPBillInterID"
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(10)
SELECT
*
FROM
ICTemplate
WHERE
FID="A97"

ORDER
BY
FCtlIndex
SELECT
*,FCtlOrder
AS
FNewCtlOrder,FCtlIndex
AS
FNewCtlIndex
FROM
ICTemplateEntry
WHERE
FID="A97"

ORDER
BY
FCtlOrde
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
where
FID="A97"
AND
FFieldName="FZPBillInterID"
select
*
from
ICTableRelation
where
FBillID="A97"
AND
FFieldID="FZPBillInterID"
4.4.2.5下推生成赠品出库单
(1)确定原单和目标单据

赠品入库<----其他入库单)根据表ICTransactiontype、ICListTemplate、ICTemplate
如:
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(26)
SELECT
*
FROM
ICTemplate
WHERE
FID="ZOU"

ORDER
BY
FCtlIndex
SELECT
*,FCtlOrder
AS
FNewCtlOrder,FCtlIndex
AS
FNewCtlIndex
FROM
ICTemplateEntry
WHERE
FID="ZOU"
ORDER
BY
FCtlOrde
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

SELECT*
from
ICSelbills
where
FID="ZOU"
AND
FFieldName
="FSCBillInterID"
select
*
from
ICTableRelation
where
FID="ZOU"
AND
FFieldName
="FSCBillInterID"
4.4.2.6外购入库连属生成赠品入库单
(1)确定原单和目标单据

赠品入库<----入库单)根据表ICTransactiontype、ICListTemplate、ICTemplate
如:
(2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(6)
SELECT
*
FROM
ICTemplate
WHERE
FID="ZIN"

ORDER
BY
FCtlIndex
SELECT
*,FCtlOrder
AS
FNewCtlOrder,FCtlIndex
AS
FNewCtlIndex
FROM
ICTemplateEntry
WHERE
FID="ZIN"
ORDER
BY
FCtlOrde
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

select
*
from
ICTableRelation
where
FBillID="ZIN"
AND
FFieldID="FRelateBillInterID"
SELECT*
FROM
ICSelBills

WHERE
Upper(FID)="ZIN"
AND
Upper(FFieldName)
="FRELATEBILLINTERID"
4.4.3赠品出库
4.4.3.1模板
(1)单据的事物类型
ftrantype=26
SELECT
*
FROM
ICTransactionType
Where
FID
IN
(26)
(2
)单据模板为FID="ZOU
SELECT
*
FROM
ICTemplate
WHERE
FID="ZOU
SELECT
*
FROM
ICTemplateEntry
WHERE
FID="ZOU
ORDER
BY
FCtlIndex
(3)选单模板为
FID="ZOU
select
*
from
icselbills
WHERE
FID="ZOU
(4)单据对应关系模板为
ictablerelation
中类型为79
select
*
from
ictablerelation
where
ftypeid=79
(5)单据字段描述表为中类型为79
select
*
from
icchatbilltitle

where
ftypeid=79
4.4.3.2.新增单据
(1)选择单据模板(根据上面模板,显示单据,主要是ICTemplate,ICTemplateEntry,ICTransactionType表)ftrantype=26
(2)执行execGetICMaxNum
"ZPStockBill"
提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=26
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=26
(4)插入数据到单据POInstock,POInstockEntry
单据类型为26,其中FDCStockID为出仓库内码,FRelateBillInterID为连属单据号,
DELETE
zpStockBill
WHERE
FInterID=9(先删除后插入避免重复)
INSERT
INTO
zpInstockEntry
(……)
INSERT
INTO
zpInstock
(…..)
4.4.3.3审核、反审核(审核更新及时库存)
审核:
(1)更新及时库存POInventory(根据选项)
Update
POInventory
Set
FQty=-30
Where
FBrNo="0"
And
FItemID=180
And
FStockID=152
(2)更新单据状态
Update
ZPStockBill
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=9
反审核:
(1)更新及时库存(根据选项)
Update
POInventory
Set
FQty=-30
Where
FBrNo="0"
And
FItemID=180
And
FStockID=152
(2)还原单据状态
Update
ZPStockBill
Set
FCheckerID=Null,FStatus=0
Where
FBrNo="0"
And
FInterID=9
4.4.3.4下推生成赠品入库单
(1)确定原单和目标单据

赠品入库<----其他入库单)根据表ICTransactiontype、ICListTemplate、ICTemplate
如:
2)选取目标单据的模板:(ICTransactionType、ICTemplate、)
SELECT*
FROM
ICTransactionType
Where
FID
IN
(6)
SELECT
*
FROM
ICTemplate
WHERE
FID="ZIN"

ORDER
BY
FCtlIndex
SELECT
*,FCtlOrder
AS
FNewCtlOrder,FCtlIndex
AS
FNewCtlIndex
FROM
ICTemplateEntry
WHERE
FID="ZIN"
ORDER
BY
FCtlOrde
(3)选取下推关系,主要是表(ICSelBills
、ICTableRelation

select
*
from
ICTableRelation
where
FBillID="ZIN"
AND
FFieldID="FRelateBillInterID"
SELECT*
FROM
ICSelBills

WHERE
Upper(FID)="ZIN"
AND
Upper(FFieldName)
="FRELATEBILLINTERID"
4.4.4虚仓调拨
4.4.4.1业务内容
虚仓调拨单只能输入虚仓,只进行数量核算,不进行金额核算,因此不核算成本,生成凭证
4.4.4.2
单据模板
(1)单据的事物类型
ftrantype=74
SELECT
*
FROM
ICTransactionType
Where
FID
IN
(74)
(2
)单据模板为FID
=
"P05"
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"P05"
SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"P05"

(3)选单模板为
FID
=
"P05"
select
*
from
icselbills
WHERE
FID
=
"P05"
(4)单据对应关系模板为
ictablerelation
中类型为85
select
*
from
ictablerelation
where
ftypeid=85
(5)单据字段描述表为中类型为85
select
*
from
icchatbilltitle

where
ftypeid=85
4.4.4.3新增单据
(1)选择单据模板(根据上面模板显示单据,主要是ICTemplate,ICTemplateEntry,ICTransactionType表)ftrantype=74
(2)执行exec
GetICMaxNum
"POStockBill"提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=74
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=74
(4)插入数据到单据POInstock,POInstockEntry
单据类型为41,其中FDCStockID为调入仓库内码,FSCStockID为调出仓库内码
DELETE
POStockBill
WHERE
FInterID=1003(先删除后插入避免重复)
INSERT
INTO
POInstockEntry(……)
INSERT
INTO
POInstock
(…..)
4.4.4.4审核和反审核(审核更新及时库存)
审核:
(1)更新及时库存(根据选项)
UPDATE
POInventory
SET
FQty=-1
WHERE
FBrNo="0"
AND
FItemID=211
AND
FStockID=151
UPDATE
POInventory
SET
FQty=1
WHERE
FBrNo="0"
AND
FItemID=211
AND
FStockID=152
(2)更新单据状态
Update
POStockBill
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=1003
反审核:
(1)更新及时库存(根据选项)
UPDATE
POInventory
SET
FQty=0
WHERE
FBrNo="0"
AND
FItemID=211
AND
FStockID=151
UPDATE
POInventory
SET
FQty=0
WHERE
FBrNo="0"
AND
FItemID=211
AND
FStockID=152
2649.6
(2)还原单据状态
Update
POStockBill
Set
FCheckerID=Null,FStatus=0
Where
FBrNo="0"
And
FInterID=1003
4.4.5报表
4.4.5.1赠品出入库汇总表
赠品出入库汇总表,是统计查询赠品仓库的物料,各月份的出入库情况的汇总报表

1.报表过滤模板
FRptID=181

SELECT
Distinct
FPlan,FStatus
FROM
ICReportProfile
WHERE
FRptID=181
2.期初数据从POInvBal
取出期初数据,判断条件为仓库类型FTypeID为赠品仓,期初数量不为零
not
(FBegQty=0
)

SELECTv1.FItemID,t2.FItemID,v1.FBatchNo,v1.FBegQty/t4.FCoefficient,0,0,v1.FBegQty,0,0

FROM
POInvBal
v1,t_ICItem
t1,t_Stock
t2,t_MeasureUnit
t4
WHERE
v1.FYear=2001

AND
t2.FTypeID=502
AND
v1.FPeriod=1
AND
not
(v1.FBegQty=0
)AND
v1.FStockID=t2.FItemID
AND
t1.FCUUnitID=t4.FItemID

AND
v1.FItemID=t1.FItemID
赠品出入库数量是从从单据(ZPStockBill,ZPStockBillEntry)中根据过滤条件选择的,不包括作废单据(FTranType=6为赠品入库,FTranType=26为赠品出库)
SELECT
v2.FItemID,t2.FItemID
,v2.FBatchNo,0,CASE
WHEN
v1.FTranType
=6
THEN
v2.FQty/t4.FCoefficient
ELSE
0
END
,
CASE
WHEN
v1.FTranType
=26
THEN
v2.FQty/t4.FCoefficient
ELSE
0
END
,0,
CASE
WHEN
v1.FTranType
=6
THEN
v2.FQty
ELSE
0
END
,
CASE
WHEN
v1.FTranType
=26
THEN
v2.FQty
ELSE
0
ENDFROM
ZPStockBill
v1,ZPStockBillEntry
v2,t_ICItem
t1,t_Stock
t2,t_MeasureUnit
t4

WHERE
v1.FInterID=v2.FInterID
AND
v2.FItemID=t1.FItemID
AND
t1.FCUUnitID=t4.FItemID
AND
v1.FDate
>="2001-01-01"
AND
v1.FDate
<"2001-02-01"
AND
v1.FDCStockID=t2.FItemID
And
v1.FCancelLation=03.提取虚仓调拨中赠品的数量
SELECT
v2.FItemID,t2.FItemID
,NULL,0,0,
v2.FQty/t4.FCoefficient
,0,
0
,
v2.FQty

FROM
POStockBill
v1,POStockBillEntry
v2,t_ICItem
t1,t_Stock
t2,t_MeasureUnit
t4

WHERE
v1.FInterID=v2.FInterID
AND
v2.FItemID=t1.FItemID
AND
t1.FCUUnitID=t4.FItemID
AND
t2.FTypeID=502
AND
v1.FDate
>="2001-01-01"
AND
v1.FDate
<"2001-02-01"
AND
v1.FSCStockID=t2.FItemID

And
v1.FCancelLation=04.从出库单据中提取赠品的转移数量
SELECT
v2.FItemID,t2.FItemID
,NULL,0,0,
v2.FQty/t4.FCoefficient
,0,
0
,
v2.FQty

FROM
ICStockBill
v1,ICStockBillEntry
v2,ZPStockBill
u2,
ZPStockBillEntry
u3,
t_ICItem
t1,t_Stock
t2,
t_MeasureUnit
t4,
ICTransactionType
t10
WHERE
v1.FDate
>="2001-01-01"
AND
v1.FDate
<"2001-02-01"
AND
v1.FTranType
In
(10)

AND
v1.FInterID=v2.FInterIDAnd
v1.FZPBillInterID=u2.FInterIDAND
u2.FInterID=u3.FInterID
AND
v2.FSourceEntryID=u3.FEntryID
AND
v2.FItemID=t1.FItemID

AND
t1.FCUUnitID=t4.FItemID
AND
u2.FDCStockID=t2.FItemID
And
t2.FTypeID
IN(502)

AND
v1.FTranType=t10.FID
And
v1.FCancelLation=0
Select
v1.*
Into
#Happen1
From
#Happen
v1
Where
1=1
形成分组数据
SELECT
CASE
WHEN
CHARINDEX(".",FFullNumber)-1=
-1
or
FLevel<2
THEN
NULL
ELSE
SUBSTRING(FNumber,
1,CHARINDEX(".",FFullNumber)-1)
END,

"",CASE
WHEN
CHARINDEX(".",FFullNumber,CHARINDEX(".",FFullNumber)+1)-1=
-1
or
FLevel<3
THEN
NULL
ELSE
SUBSTRING(FNumber,
1,CHARINDEX(".",FFullNumber,CHARINDEX(".",FFullNumber)+1)-1)
END,
"",
FItemID,FNumber
FROM
t_Item
WHERE
FItemClassID=4
AND
FDetail=1
AND
FItemID
In
(Select
Distinct
FItemID
from
#Happen
)
形成汇总数据,直接合计所得(根据条件)
SELECT
tt1.FName1,tt1.FName2,t1.FNumber,"","","","","",6,
SUM(v2.FBegQty),SUM(FInQty),SUM(FOutQty),0,SUM(v2.FBegCUUnitQty),SUM(FInCUUnitQty),SUM(FOutCUUnitQty),0,CASE

WHEN

Grouping(tt1.FName1)=1
THEN
106

WHEN

Grouping(tt1.FName2)=1
THEN
107

WHEN

Grouping(t1.FNumber)=1
THEN
108
ELSE

0
END

FROM
#Happen1
v2,t_ICItem
t1,t_Stock
t2
,#ItemLevel
tt1
Where
v2.FStockID=t2.FItemID
And
v2.FItemID=t1.FItemID

AND
t1.FItemID=tt1.FItemID
Group
By
tt1.FName1,tt1.FName2,t1.FNumber
计算结存数据
UPDATE
#Data
SET
FEndQty=FBegQty+FInQty-FOutQty,FEndCUUnitQty=FBegCUUnitQty+FInCUUnitQty-FOutCUUnitQty
4.4.5.2赠品出入库明细表
1.报表过滤模板
FRptID=182

SELECT
Distinct
FPlan,FStatus
FROM
ICReportProfile
WHERE
FRptID=182

2.提取期初数量
SELECT
u1.FItemID,u1.FBatchNo,u1.FBegQty
FROM
POInvBal
u1
inner
join
t_ICItem
t1
on
u1.FItemID=t1.FItemID
inner
join
t_Stock
t2
on
u1.FStockID=t2.FItemID
WHERE
u1.FYear=2001
AND
u1.FPeriod=1
AND
t2.FTypeID=502
AND
not
u1.FBegQty=0
3.
提取出入库数量
SELECT
…..
(SELECT
FName
FROM
t_MeasureUnit
WHERE
t_MeasureUnit.FItemID=u1.FUnitID)
as
FUnitInName,u1.FBatchNo,u1.FAuxQty,u1.FQty,v1.FInterID,v1.FTranType,u1.FEntryID,u1.FItemID
FROM
ZPStockBill
v1
inner
join
ZPStockBillEntry
u1
on
v1.FInterID=u1.FInterID
inner
join
t_ICItem
t1
on
u1.FItemID=t1.FItemIDinner
join
t_Stock
t2
on
v1.FDCStockID=t2.FItemID
WHERE
v1.FDate
>="2001-01-01"
AND
v1.FDate
<"2001-02-01"
AND
v1.Ftrantype
=6
And
v1.FCancelLation=0
4.提取调拨入库数量
5.提取出库数量和调拨出库数量
6.提取从出库单据中提取赠品的转移数量
7.统计合计数据
4.4.5.3代管待检物料收发台账
1.报表方案
FRptid=183
select
*
from
ICReportProfile
where
FRptid=1832.取期初数据
SELECT
FBatchNo="",SUM(u1.FBegQty)
as
FBegQty,
SUM((u1.FBegBal-u1.FBegDiff))
as
FBegAmount,
SUM(u1.FBegDiff)
as
FBegDiff
FROM
POInvBal
u1,t_Stock
t2
WHERE
u1.FYear=2001
AND
u1.FPeriod=1
AND
not
(FBegQty=0
AND
FBegBal=0
and
FBegDiff=0)

AND
u1.FStockID=t2.FItemID
And
t2.FTypeID
IN(501,503)

AND
u1.FItemID=167
Group
by
u1.FBatchNo3.从虚仓单据提取各明细出入库数据(POStockBill,POStockBillEntry)4.
从外购入库单或其他入库单
提取转移的出库数量,条件如下
FROM
ICStockBill
v1,ICStockBillEntry
u1,POInStock
u2,t_ICItem
t1,t_Stock
t2,ICTransactionType
t10
WHERE
v1.FDate
>="2001-01-01"
AND
v1.FDate
<"2001-02-01"

AND
v1.Ftrantype
In
(1)-------
v1.Ftrantype
In
(10)

AND
v1.FInterID=u1.FInterID

And
v1.FSCBillInterID=u2.FInterID

AND
u1.FItemID=t1.FItemID

AND
u2.FStockID=t2.FItemID

And
t2.FTypeID
IN(501,503)

AND
v1.FTranType=t10.FID
And
v1.FCancelLation=0

AND
u1.FItemID=167
5.提取虚仓调拨数据
6.形成汇总数据
4.4.5.4代管待检物料收发日报表
1.报表过滤方案FRptID=184
SELECT
FStatus
FROM
ICReportProfile
WHERE
FRptID=184
2.取上日数量余额:

从虚仓余额表poinvbal中取出月初余额,提取月初到指定日期的出入库数量,调拨数量,关联数量
得到上日数量余额
3.提取时间段范围的入库数据
4.提取时间段范围内的出库数据
5.形成分级
6.形成汇总数据
4.5盘点作业
4.5.1盘点业务业务描述
备份账存数据就是在库存盘点之前,针对需要盘点的仓库进行数据备份,以便打印盘点表,获取最新的库存盘点资料
备份账存数据前要求单据全部审核
盘点时间内的出入单数量的处理:由于账存日和实际盘点日不可能完全一致,这样自备份账存日到实际盘点日可能有物料的出入库事务发生,所以系统设置选择盘点期间的单据进行自动加减,计算实际应有的库存余额
盘点表数据不包含的物料的处理:在物料盘点表中,系统提供添加物料功能,即用户可以手工添加物料。由于物料盘点表中不一定包括所有的物料或物料的批次,有时用户需要添加物料
删除物料:在物料盘点表中,系统提供添加物料功能,即用户可以手工添加物料。由于物料盘点表中不一定包括所有的物料或物料的批次,有时用户需要添加物料
备份账存数据和时间没有关系
4.5.2盘点作业的数据流程
备份账存数据
过滤实仓仓库
Select
FName,FItemID
From
t_Stock
Where
FDeleted<>1
And
FTypeID=500
提取最大单据内码
Select
Max(FInterID)
From
ICStockBill
检查单据是否审核(与及时库存的方式无关)
Select
*
From
ICStockBill
Where
FTranType<=43
And
FCancellation=0
And
(FCheckerID
Is
NUll)
And
FInterID<=2014
逐一判断仓库是否已经备份数据,如果有给予提示是否需要重新备份,
Select
*
From
ICInvBackup
Where
FStockID=149

执行存储过程
exec
BackupInvData
148,2014
备份数据(从及时库存里取得的数据)BackupInvData存储过程内容如下:
CREATE
PROCEDURE
[dbo].[BackupInvData]
,@CurStockID
Int,,@MaxStockBillInterID
Int
AS
--最大单据内码
Select
@MaxStockBillInterID=Max(FInterID)
From
ICStockBill
--删除原有的仓库数据
Delete
ICInvBackup
Where
FStockID=@CurStockID
--备份库存记录
InsertICInvBackup(FBrNo,FItemID,FBatchNo,FStockID,FQty,FQtyAct,FCheckQty,FSelect,FAdj,FDateBackup,FMaxBillInterID,FStockPlaceID,FKFPeriod,FKFDate,FUnitID,FAuxQty,FAuxQtyAct,FAuxCheckQty)
Selectt1.FBrNo,t1.FItemID,t1.FBatchNo,t1.FStockID,Sum(t1.FQty),Sum(t1.FQty),Sum(t1.FQty),0
,0,GetDate(),@MaxStockBillInterID,t1.FStockPlaceID,t1.FKFPeriod,t1.FKFDate,t2.FCUUnitID,sum(t1.FQty/t3.FCoefficient),sum(t1.FQty/t3.FCoefficient),sum(t1.FQty/t3.FCoefficient)
From
ICInventory
t1inner
join
t_ICItem
t2
on
t1.FItemID=t2.FItemID
inner
join
t_MeasureUnit
t3
on
t2.FCUUnitID=t3.FMeasureUnitID
Where
t1.FStockID
=
@CurStockID
Gro
By
t1.FBrNo,t1.FItemID,t1.FBatchNo,t1.FStockID,t1.FStockPlaceID,t1.FKFPeriod,t1.FKFDate,t2.FCUUnitID
2.
打印盘点表
(1)就是对备份的数据进行打印空的盘点表,分仓库进行
(2)对于备份数据里没有的物料,但缺省仓库为所选仓库的也过滤
(3)排序方式:
Order
By
FStockID,FName,FNumber,FShortNumber,FBatchNo,FKFDate,FKFPeriod
(4)数据形成如下:
Select……….From
ICInvBackup
t1
inner
join
t_ICItem
t2
on
t1.FItemID=t2.FItemID
inner
join
t_MeasureUnit
t3
on
t2.FUnitID=t3.FItemIDinner
join
t_MeasureUnit
t4
on
t1.FUnitID=t4.FItemIDleft
join
t_StockPlace
t11
on
t1.FStockPlaceID=t11.FSPIDWhere
1=1
And
t1.FStockID=148
Union

SELECT
FStockID=148,titCheckQty=NULL,………….
From
t_ICItem
t2
inner
join
t_Measur
eUnit
t3
on
t2.FUnitID
=
t3.FItemID
and
t2.FDefaultLoc=148
inner
join
t_MeasureUnit
t4
on
t2.FCUUnitID
=
t4.FItemID
Where
t2.FItemID
NOT
IN(SELECT
FItemID
FROM
ICInvBackup
WHERE
FSTOCKID=
148)
4.5.3录入盘点数据
(1)盘点表中设置了“账存数、实存数、盘点数”三栏,“账存数”是与盘点日最近的账面截止日(即盘点备份日)的库存余额;“实存数”是截止账面日库存实际的余额,它是盘点的实际数量和还未入账的出入库单加/减之后的库存余额,系统通过<选单>选择盘点期间的单据并自动计算实存数;“盘点数”是盘点日盘点人实际清点的库存额
(2)分仓进行,显示备份数据的账存数
(3)盘点业务计量单位可以选取,但备份的数据是默认计量单位
(4)排序方式:
Order
By
FStockID,FName,FNumber,FShortNumber,FBatchNo,FKFDate,FKFPeriod
(5)数据形成(简单描述),例如
Select
a.*
From
(

Select
t1.FStockID,………………
From
ICInvBackup
t1
inner
join
t_ICItem
t2
on
t1.FItemID=t2.FItemID
inner
join
t_MeasureUnit
t3
on
t2.FUnitID=t3.FItemID
inner
join
t_MeasureUnit
t4
on
t1.FUnitID=t4.FItemID
left
join
t_StockPlace
t11
on
t1.FStockPlaceID=t11.FSPID
Where
1=1
And
t1.FStockID=148
)
as
a

Order
By
FStockID,FName,FNumber,FShortNumber,FBatchNo,FKFDate,FKFPeriod
4.5.4.盘点报告单
(1)系统根据录入的盘点数据和账存数对比,分仓库自动生成物料盘点报告单
(2)如果盘点数据-账存数>0为盘营,盘点数据-账存数<0为盘亏
(3)根据盘盈盘亏选择出单系统自动按100条分录生成对应的出入库单
(4)已最后一次为准,不分次生成盘盈盘亏
4.6库存调整业务
4.6.1盘盈入库单
4.6.1.1单据模板
(1)单据的事物类型
ftrantype=40
SELECT
*
FROM
ICTransactionType
Where
FID
IN
(40)
(2
)单据模板为FID
=
"C01"
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"C01"
SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"C01"
ORDER
BY
FCtlIndex
(3)选单模板为
FID
=
"C01"
select
*
from
icselbills
WHERE
FID
=
"C01"
(4)单据对应关系模板为
ictablerelation
中类型为50
select
*
from
ictablerelation
where
ftypeid=50
(5)单据字段描述表为中类型为50
select
*
from
icchatbilltitle

where
ftypeid=50
4.6.1.2新增单据
(1)选择单据模板(根据上面模板,显示单据,主要是ICTemplate,ICTemplateEntry,ICTransactionType表)ftrantype=40
(2)执行exec
GetICMaxNum
"ICStockBill提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=40
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=40
(4)插入数据到单据ICStockBill,icInstockEntry单据类型为40,其中FDCStockID为调入仓库内码,FSCStockID为调出仓库内码
DELETE
ICStockBill
WHERE
FInterID=2015(先删除后插入避免重复)
INSERT
INTO
icInstockEntry
(……)
INSERT
INTO
icInstock
(…..)

4.6.1.3审核和反审核(审核更新及时库存)
审核:
(1)更新及时库存(根据选项)执行存储过程p_UpdateStorage
EXEC
p_UpdateStorage
169,149,3,"111",10,"2001-01-22",120,1200
(2)更新单据状态
Update
ICStockBill
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=2019
反审核:
(1)更新及时库存(根据选项)执行存储过程p_UpdateStorage
EXEC
p_UpdateStorage
169,149,3,"111",10,"2001-01-22",0,0
(2)还原单据状态
Update
ICStockBill
Set
FCheckerID=Null,FStatus=0
Where
FBrNo="0"
And
FInterID=2019
4.6.2盘亏出库单
4.6.2.1单据模板
(1)单据的事物类型
ftrantype=43
SELECT
*
FROM
ICTransactionType
Where
FID
IN
(43)
(2
)单据模板为FID
=
"C02"
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"C02"
SELECT
*
FROM
ICTemplateEntry
WHERE

FID
=
"C02"
ORDER
BY
FCtlIndex
(3)选单模板为
FID
=
"C02"
select
*
from
icselbills
WHERE

FID
=
"C02"
(4)单据对应关系模板为
ictablerelation
中类型为51
select
*
from
ictablerelation
where
ftypeid=51
(5)单据字段描述表为中类型为51
select
*
from
icchatbilltitle

where
ftypeid=51
4.6.2.2新增单据
(1)选择单据模板(根据上面模板,显示单据,主要是ICTemplate,ICTemplateEntry,ICTransactionType表)ftrantype=43
(2)执行exec
GetICMaxNum
"ICStockBill提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=43
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=43
(4)插入数据到单据ICStockBill,icInstockEntry单据类型为43,其中FDCStockID为调入仓库内码,FSCStockID为调出仓库内码
DELETE
ICStockBill
WHERE
FInterID=2016(先删除后插入避免重复)
INSERT
INTO
icInstockEntry
(……)
INSERT
INTO
icInstock
(…..)

4.6.2.3审核和反审核(审核更新及时库存)
审核:
(1)更新及时库存(根据选项)执行存储过程p_UpdateStorage
EXEC
p_UpdateStorage
167,148,5,"01-02-03**01.001",10,"2001-02-03",70,0
(2)更新单据状态
Update
ICStockBill
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=2018
反审核:
(1)更新及时库存(根据选项)执行存储过程p_UpdateStorage
EXEC
p_UpdateStorage
167,148,5,"01-02-03**01.001",10,"2001-02-03",100,0
(2)还原单据状态
Update
ICStockBill
Set
FCheckerID=Null,FStatus=0
Where
FBrNo="0"
And
FInterID=2018
4.7库存查询
4.7.1即时库存查询业务描述
在即时库存查询中,对于数据授权进行了处理,对于有权限的物料可以查看,没有权限的物料则不能查看。在数据授权对上级组权限进行检查时,会对物料的上级组进行权限检查,有权限才可以查看
在即时库存查询中,拖动列宽在退出系统后可以保存
在即时库存查询中,如果选择只显示下一级明细在右边只有将光标停留最明细级时才会显示物料的库存
如果用户使用配置类物料,在即时库存查询中通过按客户BOM进行过滤
即时库存可以控制到物料、仓库、仓位、批号、保质期、
即时库存不显示数量为0的物料
4.7.2数据描述
核算参数(如果需要改动,必需同步进行)
(1)在t_systemprofile
中(0:审核更新,1:保存更新)
select
*
from
t_systemprofile
where
fcategory="ic"
and
fkey="UPSTOCKWHENSAVE"
(2)单据上fUPSTOCKWHENSAVE表示更新方式(0:审核更新,1:保存更新)
select
fUPSTOCKWHENSAVE,*
from
icstockbill----实仓类型
select
fUPSTOCKWHENSAVE,*
from
postockbill---虚仓代管,代检
select
fUPSTOCKWHENSAVE,*
from
zpstockbill---虚仓赠品
即时库存余额数据
实仓;icinventory虚仓:poinventory
及时库存校对执行存储过程CheckInventory
EXEC
CheckInventory
更新及时库存

实仓执行存储过程:p_UpdateStorage

虚仓执行存储过程:p_UpdatePOStorage

按物料显示即时库存(全部仓库)
提取期初数据:提取全部实仓数据(从ICInventory)
Insert
Into
#TempInventory
Select
FBrNo,FItemID,FBatchNo,FStockID,FQty,FBal,FStockPlaceID,
FKFPeriod,ISNULL(FKFDate,""),ISNULL(FKFDate,""),500,FQtyLock
From
ICInventory
Where
FQty<>0

提取期初数据:提取全部虚仓数据(从POInventory)
Insert
Into
#TempInventory
Select
FBrNo,FItemID,FBatchNo,FStockID,FQty,FBal,FStockPlaceID,
FKFPeriod,ISNULL(FKFDate,""),ISNULL(FKFDate,""),FStockTypeID,0
From
POInventory
Where
FQty<>0
显示数据(如果不选择按明细显示)按物料代码,批次顺序显示
Select
DISTINCT
u1.FStockTypeID,t1.FName
as
FMaterialName,t1.FModel
as
FMaterialModel,
u1.FBatchNo,t2.FName
as
FStockName
,u1.FQtyLock
as
FBUQtyLock,u1.FQtyLock/t4.FCoefficient
as
FCUUQtyLock,
t5.FName
as
FSPName,u1.FKFPeriod,case
when
isdate(u1.FKFDate)=1
then
Convert(datetime,u1.FKFDate)
else
null
end
as
FKFDate,
case
when
isdate(u1.FMyKFDate)=1
then
Convert(datetime,u1.FMyKFDate)
else
null
end
as
FMyKFDate,
t3.FName
as
FBUUnitName,u1.FQty
as
FBUQty,
t4.FName
as
FCUUnitName
,u1.FQty/t4.FCoefficient
as
FCUUQty,t1.FQtyDecimal,
t1.FPriceDecimal,0
as
FSumSort,
Case
when
isdate(u1.FKFDate)=0
then
""
else
Convert(datetime,u1.FKFDate)
+
u1.FKFPeriod
END
AS
FMaturityDate,
t2.FNumber
AS
FStockNumber,
t1.FNumber
AS
FMaterialNumber,t5.FNumber
as
FSPNumber
,t1.FitemID
,T2.FitemID
FStockID,T5.FSPID
FSPID
From
#TempInventory
u1
inner
join
t_ICItem
t1
on
u1.FItemID
=
t1.FItemID
inner
join
t_Stock
t2
on
u1.FStockID=t2.FItemID
inner
join
t_MeasureUnit
t3
on
t1.FUnitID=t3.FMeasureUnitID
inner
join
t_MeasureUnit
t4
on
t1.FCUUnitID=t4.FMeasureUnitID
left
join
t_StockPlace
t5
on
u1.FStockPlaceID=t5.FSPID
Where
1=1
Order
By
t1.FNumber,u1.FBatchNo
4.8库存状态查询
4.8.1库存状态查询业务

实现查询单个物料的现有库存、安全库存、预计入库量、已分配量、锁库量及扣除相关数量后剩余库存的功能
4.8.2数据描述1.安全库存数据

Select
sum(t1.FQty)
as
FQtyInv
From
ICInventory
t1
inner
join
t_Stock
t2
on
t1.FStockID=t2.FItemID
Where
t2.FTypeID
=
500
and
t1.FItemID=211
Group
by
t1.FItemID

2.提取安全库存
Select
t1.FItemID,t1.FNumber,t1.FShortNumber,t1.FName,t1.FModel,t2.FName
as
FUnitName,isnull(t1.FSecInv,0)
as
FSecInv,t1.FQtyDecimal
From
t_ICItem
t1
inner
join
t_MeasureUnit
t2
on
t1.FUnitID=t2.FMeasureUnitID
Where
t1.FItemID=167

3.提取预计入库量(考虑在BOM选项的高级选项里的选项,较复杂可以跟踪分析)

4.
提取已分配库量(较复杂)

5.锁库数据已分配量:

SELECT
FQtyLock=CASE
WHEN
Sum(CASE
WHEN
FQty<0
THEN
0
ELSE
FQty
END)<0
THEN
0
ELSE
Sum(CASE
WHEN
FQty<0
THEN
0
ELSE
FQty
END)
END
FROM
t_LockStock
t1
INNER
JOIN
t_Stock
t2
ON
t1.FStockID=t2.FItemID
WHERE
t2.FTypeID
=
500
AND
t1.FItemID=211
GROUP
BY
t1.FItemID
得到剩余库存

4.9报表
4.9.1库存台账
(一)业务描述
1.
库存台账是是统计查询各仓库,各物料,各月份的收发存情况的报表
2.
系统提供了数据控制,即无发生额不显示,系统默认为选择无发生额不显示。选择无发生额不显示时,进入报表界面后如果该物料在查询期间没有发生额,则报表显示为空,有发生额则正常显示;不选择无发生额不显示时,进入报表界面后报告该物料在查询期间有没有发生额,均正常显示3.按物料进行查询
(二)、业务数据描述
1.报表方案FRptid=100
select
*
from
ICReportProfile
where
FRptid=100
2.提取期初数据,从ICInvBal

SELECT
u1.FBatchNo,Sum(u1.FBegQty)
As
FBegQty,FBegPrice=(case
Sum(u1.FBegQty)
when
0
then
0
else
(Sum(u1.FBegBal)-Sum(u1.FBegDiff))/Sum(u1.FBegQty)
end),
(Sum(u1.FBegBal)-Sum(u1.FBegDiff))
as
FBegAmount,
Sum(u1.FBegDiff)
as
FBegDiff

FROM
ICInvBal
u1
INNER
JOIN
t_Stock
t2
ON
u1.FStockID=t2.FItemID
LEFT
JOIN
t_StockPlace
t11
ON
u1.FStockPlaceID=t11.FSPID

WHERE
u1.FYear=2001
AND
u1.FPeriod=1
AND
not
(u1.FBegQty=0
AND
(u1.FBegBal-u1.FBegDiff)=0)

AND
u1.FItemID=167
Group
By
u1.FItemID,u1.FBatchNo
3.从单据中提取入库数量
单据类型为Ftrantype
In
(1,2,5,10,40,100,101,102)
SELECT
Case
When
v1.FCurrencyID
is
Null
Or
v1.FCurrencyID=""
then
(Select
FScale
From
t_Currency
Where
FCurrencyID=1)
else
t503.FScale
end
,
v1.FDate,v1.FBillNo,u1.FNote,
(SELECT
(SELECT
FName
FROM
t_VoucherGroup
WHERE
FGroupID=t4.FGroupID)+"-"+CONVERT(Varchar(30),FNumber)
FROM
t_Voucher
t4
WHERE
t4.FVoucherid=v1.FVchInterID)
As
FVoucherNo,(SELECT
FName
FROM
t_MeasureUnit
WHERE
t_MeasureUnit.FItemID=u1.FUnitID)
as
FUnitInName,u1.FBatchNo,
u1.FAuxQty,u1.FQty,Case
t1.FTrack
When
81
Then
u1.FAuxPlanPrice
Else
u1.FAuxPrice
End
As
FPrice,
Case
t1.FTrack
When
81
Then
u1.FPlanPrice*u1.FQty
Else
u1.FAmount
End
As
FAmount,
v1.FInterID,t10.FName,v1.FTranType,u1.FEntryID,u1.FItemID
FROM
ICStockBill
v1
inner
join
ICStockBillEntry
u1
on
v1.FInterID=u1.FInterID
inner
join
t_ICItem
t1
on
u1.FItemID=t1.FItemID
inner
join
t_Stock
t2
on
v1.FDCStockID=t2.FItemID
inner
join
ICTransactionType
t10
on
v1.FTranType=t10.FID
left
join
t_StockPlace
t11
on
u1.FDCSPID=t11.FSPID
left
join
t_Currency
t503
on
v1.FCurrencyID=t503.FCurrencyID
WHERE
v1.FDate
>="2001-01-01"
AND
v1.FDate
<"2001-02-01"
AND
v1.Ftrantype
In
(1,2,5,10,40,100,101,102)

And
v1.FCancelLation=0

AND
u1.FItemID=167
4.从单据中提取出库数据
,单据类型为Ftrantype
In
(21,28,29,43)
SELECT
Case
When
v1.FCurrencyID
is
Null
Or
v1.FCurrencyID=""
then
(Select
FScale
From
t_Currency
Where
FCurrencyID=1)
else
t503.FScale
end
,
v1.FDate,v1.FBillNo,u1.FNote,
(SELECT
(SELECT
FName
FROM
t_VoucherGroup
WHERE
FGroupID=t4.FGroupID)+"-"+CONVERT(Varchar(30),FNumber)
FROM
t_Voucher
t4
WHERE
t4.FVoucherid=v1.FVchInterID)
As
FVoucherNo,(SELECT
FName
FROM
t_MeasureUnit
WHERE
t_MeasureUnit.FItemID=u1.FUnitID)
as
FUnitInName,u1.FBatchNo,
u1.FAuxQty,u1.FQty,Case
t1.FTrack
When
81
Then
u1.FAuxPlanPrice
Else
u1.FAuxPrice
End
As
FPrice,
Case
t1.FTrack
When
81
Then
u1.FPlanPrice*u1.FQty
Else
u1.FAmount
End
As
FAmount,
v1.FInterID,t10.FName,v1.FTranType,u1.FEntryID,u1.FItemID
FROM
ICStockBill
v1
inner
join
ICStockBillEntry
u1
on
v1.FInterID=u1.FInterID
inner
join
t_ICItem
t1
on
u1.FItemID=t1.FItemID
inner
join
t_Stock
t2
on
v1.FDCStockID=t2.FItemID
inner
join
ICTransactionType
t10
on
v1.FTranType=t10.FID
left
join
t_StockPlace
t11
on
u1.FDCSPID=t11.FSPID
left
join
t_Currency
t503
on
v1.FCurrencyID=t503.FCurrencyID
WHERE
v1.FDate
>="2001-01-01"
AND
v1.FDate
<"2001-02-01"
AND
v1.Ftrantype
In
(21,28,29,43)

And
v1.FCancelLation=0

AND
u1.FItemID=167
5.单独从单据中提取生产领料数据,单据类型为Ftrantype=24
SELECT
Case
When
v1.FCurrencyID
is
Null
Or
v1.FCurrencyID=""
then
(Select
FScale
From
t_Currency
Where
FCurrencyID=1)
else
t503.FScale
end
,
v1.FDate,v1.FBillNo,u1.FNote,
(SELECT
(SELECT
FName
FROM
t_VoucherGroup
WHERE
FGroupID=t4.FGroupID)+"-"+CONVERT(Varchar(30),FNumber)
FROM
t_Voucher
t4
WHERE
t4.FVoucherid=v1.FVchInterID)
As
FVoucherNo,(SELECT
FName
FROM
t_MeasureUnit
WHERE
t_MeasureUnit.FItemID=u1.FUnitID)
as
FUnitInName,u1.FBatchNo,
u1.FAuxQty,u1.FQty,Case
t1.FTrack
When
81
Then
u1.FAuxPlanPrice
Else
u1.FAuxPrice
End
As
FPrice,
Case
t1.FTrack
When
81
Then
u1.FPlanPrice*u1.FQty
Else
u1.FAmount
End
As
FAmount,
v1.FInterID,t10.FName,v1.FTranType,u1.FEntryID,u1.FItemID
FROM
ICStockBill
v1
inner
join
ICStockBillEntry
u1
on
v1.FInterID=u1.FInterID
inner
join
t_ICItem
t1
on
u1.FItemID=t1.FItemID
inner
join
t_Stock
t2
on
v1.FSCStockID=t2.FItemID
inner
join
ICTransactionType
t10
on
v1.FTranType=t10.FID
left
join
t_StockPlace
t11
on
u1.FDCSPID=t11.FSPID
left
join
t_Currency
t503
on
v1.FCurrencyID=t503.FCurrencyID
WHERE
v1.FDate
>="2001-01-01"
AND
v1.FDate
<"2001-02-01"
AND
v1.Ftrantype=24

And
v1.FCancelLation=0

AND
u1.FItemID=167
6.单独从单据中提取调拨入库数据,单据类型为Ftrantype=41
,FDCStockID为入库仓库
SELECT
Case
When
v1.FCurrencyID
is
Null
Or
v1.FCurrencyID=""
then
(Select
FScale
From
t_Currency
Where
FCurrencyID=1)
else
t503.FScale
end
,
v1.FDate,v1.FBillNo,u1.FNote,
(SELECT
(SELECT
FName
FROM
t_VoucherGroup
WHERE
FGroupID=t4.FGroupID)+"-"+CONVERT(Varchar(30),FNumber)
FROM
t_Voucher
t4
WHERE
t4.FVoucherid=v1.FVchInterID)
As
FVoucherNo,(SELECT
FName
FROM
t_MeasureUnit
WHERE
t_MeasureUnit.FItemID=u1.FUnitID)
as
FUnitInName,u1.FBatchNo,
u1.FAuxQty,u1.FQty,Case
t1.FTrack
When
81
Then
u1.FAuxPlanPrice
Else
u1.FAuxPrice
End
As
FPrice,
Case
t1.FTrack
When
81
Then
u1.FPlanPrice*u1.FQty
Else
u1.FAmount
End
As
FAmount,
v1.FInterID,t10.FName,v1.FTranType,u1.FEntryID
,
u1.FItemID
FROM
ICStockBill
v1
inner
join
ICStockBillEntry
u1
on
v1.FInterID=u1.FInterID
inner
join
t_ICItem
t1
on
u1.FItemID=t1.FItemID
inner
join
t_Stock
t2
on
v1.FDCStockID=t2.FItemID
inner
join
ICTransactionType
t10
on
v1.FTranType=t10.FID
left
join
t_StockPlace
t11
on
u1.FDCSPID=t11.FSPID
left
join
t_Currency
t503
on
v1.FCurrencyID=t503.FCurrencyID
WHERE
v1.FDate
>="2001-01-01"
AND
v1.FDate
<"2001-02-01"
AND
v1.Ftrantype=41

And
v1.FCancelLation=0

AND
u1.FItemID=167

7.
单独从单据中提取调拨入库数据,单据类型为Ftrantype=41
,FSCStockID为入库仓库
SELECT
Case
When
v1.FCurrencyID
is
Null
Or
v1.FCurrencyID=""
then
(Select
FScale
From
t_Currency
Where
FCurrencyID=1)
else
t503.FScale
end
,
v1.FDate,v1.FBillNo,u1.FNote,
(SELECT
(SELECT
FName
FROM
t_VoucherGroup
WHERE
FGroupID=t4.FGroupID)+"-"+CONVERT(Varchar(30),FNumber)
FROM
t_Voucher
t4
WHERE
t4.FVoucherid=v1.FVchInterID)
As
FVoucherNo,(SELECT
FName
FROM
t_MeasureUnit
WHERE
t_MeasureUnit.FItemID=u1.FUnitID)
as
FUnitInName,u1.FBatchNo,
u1.FAuxQty,u1.FQty,Case
t1.FTrack
When
81
Then
u1.FAuxPlanPrice
Else
u1.FAuxPrice
End
As
FPrice,
Case
t1.FTrack
When
81
Then
u1.FPlanPrice*u1.FQty
Else
u1.FAmount
End
As
FAmount,
v1.FInterID,t10.FName,v1.FTranType,u1.FEntryID,u1.FItemID
FROM
ICStockBill
v1
inner
join
ICStockBillEntry
u1
on
v1.FInterID=u1.FInterID
inner
join
t_ICItem
t1
on
u1.FItemID=t1.FItemID
inner
join
t_Stock
t2
on
v1.FSCStockID=t2.FItemID
inner
join
ICTransactionType
t10
on
v1.FTranType=t10.FID
left
join
t_StockPlace
t11
on
u1.FSCSPID=t11.FSPID
left
join
t_Currency
t503
on
v1.FCurrencyID=t503.FCurrencyID
WHERE
v1.FDate
>="2001-01-01"
AND
v1.FDate
<"2001-02-01"
AND
v1.Ftrantype=41

And
v1.FCancelLation=0

AND
u1.FItemID=167

4.9.2出入库流水账
(一)、业务描述1.
查询任意时段各仓库,各存货的出入库情况2.数据排序是按照单据时间、单据内码进行(ORDER
BY
FSumSort,FDATE,FInterID)
(二)、
1.报表方案FRptid=101select
*
from
ICReportProfile
where
FRptid=101
2.
从单据中提取出入库数据
,第一步包含的单据为FTranType
In
(1,2,5,10,21,28,29,43,40,100,101,102,41)
第二步单独从单据中提取调拨数据,类型为(FTranType=24),第三步单独从单据中提取调拨数据生产领料数据,类型为FTranType=41
SELECT
Case
When
v1.FCurrencyID
is
Null
Or
v1.FCurrencyID=""
then
(Select
FScale
From
t_Currency
Where
FCurrencyID=1)
else
t503.FScale
end
,

v1.FInterID
,
v1.FTranType,v2.FItemID,
v1.FDate,
v2.FNote,
v1.FBillNo,
t1.FNumber,t1.FShortNumber,t1.FName,t1.FModel,v2.FBatchNo,t1.FQtyDecimal,t1.FPriceDecimal,t3.FName,
case
When
v1.FTranType
In(1,2,5,10,40,41)
then
v2.FAuxQty
ELSE
0
END,
case
When
v1.FTranType
In(1,2,5,10,40,41)
AND
t1.FTrack<>81
then
v2.FAuxPrice

When
v1.FTranType
In(1,2,5,10,40,41)
AND
t1.FTrack=81
then
v2.FAuxPlanPrice

ELSE
0
END,
case
When
v1.FTranType
In(1,2,5,10,40,41)
then
v2.FQty
ELSE
0
END,
case
When
v1.FTranType
In(1,2,5,10,100,101,102,40,41)
AND
t1.FTrack<>81
then
v2.FPrice

When
v1.FTranType
In(1,2,5,10,100,101,102,40,41)
AND
t1.FTrack=81
then
v2.FPlanPrice

ELSE
0
END,

case
When
v1.FTranType
In(1,2,5,10,100,101,102,40,41)
AND
t1.FTrack<>81
then
v2.FAmount

When
v1.FTranType
In(1,2,5,10,100,101,102,40,41)
AND
t1.FTrack=81
then
v2.FPlanPrice*v2.FQty
Else
0
END,
case
When
v1.FTranType
In(21,28,29,43)
then
v2.FAuxQty
ELSE
0
END,
case
When
v1.FTranType
In(21,28,29,43)
AND
t1.FTrack<>81
then
v2.FAuxPrice

When
v1.FTranType
In(21,28,29,43)
AND
t1.FTrack=81
then
v2.FAuxPlanPriceELSE
0
END,

case
When
v1.FTranType
In(21,28,29,43)
then
v2.FQty
ELSE
0
END,

case
When
v1.FTranType
In(21,28,29,43)
AND
t1.FTrack<>81
then
v2.FPrice

When
v1.FTranType
In(21,28,29,43)
AND
t1.FTrack=81
then
v2.FPlanPrice

ELSE
0
END,

case
When
v1.FTranType
In(21,28,29,43)
AND
t1.FTrack<>81
then
v2.FAmount

When
v1.FTranType
In(21,28,29,43)
AND
t1.FTrack=81
then
v2.FPlanPrice*v2.FQty
Else
0
END
From
ICStockBill
v1
inner
join
ICStockBillEntry
v2
on
v1.FInterID
=
v2.FInterID
inner
join
t_ICItem
t1
on
v2.FItemID=t1.FItemID
inner
join
t_Stock
t2
on
v1.FDcStockID=t2.FItemID
inner
join
t_MeasureUnit
t3
on
v2.FUnitID=t3.FItemID
left
join
t_StockPlace
t11
on
v2.FDCSPID=t11.FSPID
left
join
t_Currency
t503
on
v1.FCurrencyID=t503.FCurrencyID

Where
v1.FTranType
In
(1,2,5,10,21,28,29,43,40,100,101,102,41)

AND
v1.FDATE>="2001-01-22"
And
v1.FDate<="2001-01-22"
And
FCancelLation=0Union
ALL
SELECT
Case
When
v1.FCurrencyID
is
Null
Or
v1.FCurrencyID=""
then
(Select
FScale
From
t_Currency
Where
FCurrencyID=1)
else
t503.FScale
end
,

v1.FInterID
,
v1.FTranType,v2.FItemID,
v1.FDate,
v2.FNote,
v1.FBillNo,
t1.FNumber,t1.FShortNumber,t1.FName,t1.FModel,v2.FBatchNo,t1.FQtyDecimal,t1.FPriceDecimal,

t3.FName,0,0,0,0,0,v2.FAuxQty,
case
When
t1.FTrack<>81
then
v2.FAuxPrice
When
t1.FTrack=81
then
v2.FAuxPlanPriceELSE
0
END,v2.FQty
,

case
When
t1.FTrack<>81
then
v2.FPrice
When
t1.FTrack=81
then
v2.FPlanPrice

ELSE
0
END,

case
When
t1.FTrack<>81
then
v2.FAmount
When
t1.FTrack=81
then
v2.FQty*v2.FPlanPrice

ELSE
0
END
From
ICStockBill
v1
inner
join
ICStockBillEntry
v2
on
v1.FInterID
=
v2.FInterID
inner
join
t_ICItem
t1
on
v2.FItemID=t1.FItemID
inner
join
t_Stock
t2
on
v1.FSCStockID=t2.FItemID
inner
join
t_MeasureUnit
t3
on
v2.FUnitID=t3.FItemID
left
join
t_StockPlace
t11
on
v2.FSCSPID=t11.FSPID
left
join
t_Currency
t503
on
v1.FCurrencyID=t503.FCurrencyID

Where
v1.FTranType=41

AND
v1.FDATE>="2001-01-22"
And
v1.FDate<="2001-01-22"
And
FCancelLation=0
Union
ALLSELECT
Case
When
v1.FCurrencyID
is
Null
Or
v1.FCurrencyID=""
then
(Select
FScale
From
t_Currency
Where
FCurrencyID=1)
else
t503.FScale
end
,
v1.FInterID
,
v1.FTranType,v2.FItemID,
v1.FDate,
v2.FNote,
v1.FBillNo,
t1.FNumber,t1.FShortNumber,t1.FName,t1.FModel,v2.FBatchNo,t1.FQtyDecimal,t1.FPriceDecimal,

t3.FName,0,0,0,0,0,v2.FAuxQty,
case
When
t1.FTrack<>81
then
v2.FAuxPrice
When
t1.FTrack=81
then
v2.FAuxPlanPriceELSE
0
END,v2.FQty
,

case
When
t1.FTrack<>81
then
v2.FPrice
When
t1.FTrack=81
then
v2.FPlanPrice

ELSE
0
END,

case
When
t1.FTrack<>81
then
v2.FAmount
When
t1.FTrack=81
then
v2.FQty*v2.FPlanPrice

ELSE
0
END
From
ICStockBill
v1
inner
join
ICStockBillEntry
v2
on
v1.FInterID
=
v2.FInterID
inner
join
t_ICItem
t1
on
v2.FItemID=t1.FItemID
inner
join
t_Stock
t2
on
v1.FSCStockID=t2.FItemID
inner
join
t_MeasureUnit
t3
on
v2.FUnitID=t3.FItemID
left
join
t_StockPlace
t11
on
v2.FDCSPID=t11.FSPID
left
join
t_Currency
t503
on
v1.FCurrencyID=t503.FCurrencyID

Where
v1.FTranType=24

AND
v1.FDATE>="2001-01-22"
And
v1.FDate<="2001-01-22"
And
FCancelLation=0

3.形成常用计量单位数据

Update
#DATA
Set
FBUUnitName=t3.FName,
FCUUnitName=t4.FName,
FInCUUnitQty=t1.FInQty/t4.FCoefficient,
FInCUUnitPrice=(case
when
t1.FInQty=0
then
0
ELSE
t1.FInAmount/(t1.FInQty/t4.FCoefficient)
END)
From
#DATA
t1
inner
join
t_ICItem
t2
on
t1.FItemID=t2.FItemID
AND
t1.FInQty<>0
inner
join
t_MeasureUnit
t3
on
t2.FUnitID=t3.FItemID
inner
join
t_MeasureUnit
t4
on
t2.FCUUnitID=t4.FItemID
Update
#DATA
Set
FOutUnitName=t1.FUnitName,
FUnitName="",
FOutBUUnitName=t3.FName,
FOutCUUnitName=t4.FName,
FOutCUUnitQty=t1.FOutQty/t4.FCoefficient,
FOutCUUnitPrice=(case
when
t1.FOutQty=0
then
0
ELSE
t1.FOutAmount/(t1.FOutQty/t4.FCoefficient)
END)
From
#DATA
t1
inner
join
t_ICItem
t2
on
t1.FItemID=t2.FItemID
AND
t1.FOutQty<>0
inner
join
t_MeasureUnit
t3
on
t2.FUnitID=t3.FItemID
inner
join
t_MeasureUnit
t4
on
t2.FCUUnitID=t4.FItemID
4.形成合计数据
SELECT
"合计",SUM(FInAuxQty),SUM(FInAmount),
SUM(FOutAuxQty),SUM(FOutAmount),SUM(FInQty),SUM(FOutQty),SUM(FInCUUnitQty),SUM(FOutCUUnitQty),101FROM
#DATA

UPDATE
#DATA
SET
FInAuxPrice=FInAmount/FInAuxQty
,FInPrice=FInAmount/FInQty,FInCUUnitPrice=FInAmount/FInCUUnitQty

WHERE
FSumSort=101
AND
FInAuxQty<>0

UPDATE
#DATA
SET
FOutAuxPrice=FOutAmount/FOutAuxQty
,FOutPrice=FOutAmount/FOutQty,FOutCUUnitPrice=FOutAmount/FOutCUUnitQty

WHERE
FSumSort=101
AND
FOutAuxQty<>04.9.3物料收发汇总表
(一)、业务描述
1.
物料收发汇总表是统计各仓库各存货的收发存情况;提供按会计期间、存货类别、存货地点查询显示
2.
物料收发汇总表选择标准模式时,不显示年初结存、本年收入、本年发出;不选择标准模式时,全部显示
3.
无发生额不显示,系统默认为选择无发生额不显示。选择无发生额不显示时,进入报表界面后如果该物料在查询期间没有发生额,则报表显示为空,有发生额则正常显示;不选择无发生额不显示时,进入报表界面后报告该物料在查询期间有没有发生额,均正常显示
4.
<余额为零不显示>的选项。如果选中该选项,显示时过滤掉期末结存数量、金额均为零的物料。如果不选中该选项,则将期末结存数量、金额余额为零的物料正常显示
5.
汇总表按客户BOM过滤后,如果直接双击进明细表,明细表是没有按客户BOM过滤的,即会出现双击进入明细表的数据与汇总表会不一致
6.
物料收发汇总表选择标准模式时,不显示年初结存、本年收入、本年发出;不选择标准模式时,全部显示。
7.
如果用户使用配置类物料,在物料收发汇总表查询中可以按客户BOM进行过滤
8.
物料收发汇总表汇总依据包括物料类别时,选择分级汇总按物料代码排序时所有的物料包括物料类别按物料代码进行排序;不选择分级汇总按物料代码排序时物料类别默认按名称的汉语拼音字母排序(除最明细一级是按物料代码排序的)。
9.没有物料名称
(2)数据描述(按非标准模式)

1.报表方案FRptID=105
SELECT
FStatus
FROM
ICReportProfile
where
FRptID=105

2.提取初始化有数据的物料,后面提取年初结存用从ICInvInitial表
Insert
Into
#ICInvbal
Select
FItemID,FStockID,FBatchNo,FSPID,FYtdReceive,FYtdDebit,FYtdReceiveDiff,
FYtdSend
,
FYtdSendDiff,
FYtdCredit,
0,0,
0
From
ICInvInitial
Where
FPeriod=03.提取ICInvbal中从初始期间到本期收的入发出,差异数据(包括本期)作本年收发
Insert
Into
#ICInvbal
Select
FItemID,FStockID,FBatchNo,FStockPlaceID,FReceive,FDebit,FReceiveDiff,
FSend
,
FSendDiff,
FCredit,
0,0,
0
From
ICInvbal
Where
FYear=2001
And
FPeriod>=1
And
FPeriod<=1
4.
提取本期期初数据的物料从ICInvbal
Insert
Into
#ICInvbal
Select
FItemID,FStockID,FBatchNo,FStockPlaceID,0,0,0,
0
,
0,
0,
FBegQty,FBegBal,
FBegDiff
From
ICInvbal
Where
FYear=2001
And
FPeriod=1
5.转换常用计量单位的本年数据,期初数据

SELECT
v1.FItemID,t2.FItemID,v1.FStockPlaceID,v1.FBatchNo,

v1.FYtdReceive/t3.FCoefficient,v1.FYtdSend/t3.FCoefficient,v1.FBegQty/t3.FCoefficient,0,0,

v1.FYtdReceive,v1.FYtdDebit-v1.FYtdReceiveDiff,v1.FYtdSend,v1.FYtdCredit-v1.FYtdSendDiff,

v1.FBegQty,v1.FBegBal-v1.FBegDiff,0,0,0,0

FROM
#ICInvBal
v1,t_ICItem
t1,t_Stock
t2,
t_MeasureUnit
t3

WHERE
1=1

AND
v1.FStockID=t2.FItemIDAND
v1.FItemID=t1.FItemIDAND
t1.FCUUnitID=t3.FItemID

6.计算当期的收发
从单据表中(ICStockBil,ICStockBillEntry)
SELECT
v2.FItemID,t2.FItemID,
v2.FDCSPID
,v2.FBatchNo,
0,0,0,CASE
WHEN
v1.FTranType
IN(1,2,5,10,40,100,101,102,41)
THEN
v2.FQty/t3.FCoefficient
ELSE
0
END,
CASE
WHEN
v1.FTranType
IN(21,24,28,29,43)
THEN
v2.FQty/t3.FCoefficient
ELSE
0
END,
0,0,0,0,0,0,
CASE
WHEN
v1.FTranType
IN(1,2,5,10,40,100,101,102,41)
THEN
v2.FQty
ELSE
0
END
,

CASE
WHEN
v1.FTranType
IN(1,2,5,10,40,100,101,102,41)
AND
t1.FTrack<>81
THEN
round(v2.FAmount,2)

WHEN
v1.FTranType
IN(1,2,5,10,40,100,101,102,41)
AND
t1.FTrack=81
THEN
round(v2.FQty*v2.FPlanPrice,2)
ELSE
0
END
,

CASE
WHEN
v1.FTranType
IN(21,24,28,29,43)
THEN
v2.FQty
ELSE
0
END
,

CASE
WHEN
v1.FTranType
IN(21,24,28,29,43)
AND
t1.FTrack<>81
THEN
round(v2.FAmount,2)

WHEN
v1.FTranType
IN(21,24,28,29,43)
AND
t1.FTrack=81
THEN
round(v2.FQty*v2.FPlanPrice,2)
ELSE
0
ENDFROM
ICStockBill
v1,ICStockBillEntry
v2,t_ICItem
t1,t_Stock
t2
,t_MeasureUnit
t3
WHERE
v1.FInterID=v2.FInterID

AND
v2.FItemID=t1.FItemID

AND
t1.FCUUnitID=t3.FItemID
AND
v1.FDate
>="2001-01-01"
AND
v1.FDate
<"2001-02-01"
AND
v1.FDCStockID=t2.FItemID

AND
v1.FTranType
In
(1,2,5,10,21,28,29,43,40,100,101,102,41)
And
v1.FCancelLation=0

INSERT
INTO
#Happen
SELECT
v2.FItemID,t2.FItemID,CASE
WHEN
v1.FTranType=41
THEN
v2.FSCSPID
ELSE
v2.FDCSPID
END
,v2.FBatchNo,
0,0,0,0,v2.FQty/t3.FCoefficient,0,0,0,0,0,0,0,0,
v2.FQty
,

CASE
WHEN
t1.FTrack<>81
THEN
round(v2.FAmount,2)

ELSE
round(v2.FQty*v2.FPlanPrice,2)
ENDFROM
ICStockBill
v1,ICStockBillEntry
v2,t_ICItem
t1,t_Stock
t2,t_MeasureUnit
t3

WHERE
v1.FInterID=v2.FInterID

AND
v2.FItemID=t1.FItemID

AND
t1.FCUUnitID=t3.FItemID
AND
v1.FDate
>="2001-01-01"
AND
v1.FDate
<"2001-02-01"
AND
v1.FSCStockID=t2.FItemID

AND
v1.FTranType
In
(24,41)
And
v1.FCancelLation=0
建立分类分级
建立汇总数据
计算结存
Update
#Data
SET
FYearInCUUnitQty=FYearInCUUnitQty+FInCUUnitQty,
FYearOutCUUnitQty=FYearOutCUUnitQty+FOutCUUnitQty,
FYearInQty=FYearInQty+FInQty
,FYearInAmount=FYearInAmount+FInAmount,
FYearOutQty=FYearOutQty+FOutQty
,FYearOutAmount=FYearOutAmount+FOutAmount
10.倒算单价(临时计算得到)
11.按分类方案得到小计和总计

4.9.4物料收发明细
(一)、业务描述

1.
是统计各仓库存货的明细收发存情况的报表

2.
系统提供了数据控制,即无发生额不显示,系统默认为选择无发生额不显示。选择无发生额不显示时,进入报表界面后如果该物料在查询期间没有发生额,则报表显示为空,有发生额则正常显示;不选择无发生额不显示时,进入报表界面后报告该物料在查询期间有没有发生额,均正常显示

3.报表按日期和单据号排序(FDate,FBillNo)
(二)、数据描述

1.报表方案:FRptid=106
select
*
from
ICReportProfile
where
FRptid=106
提取期初余额从ICInvBal表中,但余额为0不显示
SELECT
u1.FItemID,u1.FBatchNo,u1.FBegQty,(case
u1.FBegQty
when
0
then
0
else
(u1.FBegBal-u1.FBegDiff)/u1.FBegQty
end)
As
FBegPrice,
u1.FBegBal
as
FBegAmount,u1.FBegDiffFROM
ICInvBal
u1
inner
join
t_ICItem
t1
on
u1.FItemID=t1.FItemID
inner
join
t_Stock
t2
on
u1.FStockID=t2.FItemID
left
join
t_StockPlace
t11
on
u1.FStockPlaceID=t11.FSPID
WHERE
u1.FYear=2001
AND
u1.FPeriod=1
AND
not
(u1.FBegQty=0
AND
u1.FBegBal=0)

提取入库数据,从单据表中,单据类型为Ftrantype
In
(1,2,5,10,40,100,101,102)
SELECT
Case
When
v1.FCurrencyID
is
Null
Or
v1.FCurrencyID=""
then
(Select
FScale
From
t_Currency
Where
FCurrencyID=1)
else
t503.FScale
end
,
v1.FDate,v1.FBillNo,u1.FNote,
(SELECT
FName
FROM
t_MeasureUnit
WHERE
t_MeasureUnit.FItemID=u1.FUnitID)
as
FUnitInName,u1.FBatchNo,
u1.FAuxQty,u1.FQty,Case
t1.FTrack
When
81
Then
u1.FAuxPlanPrice
Else
u1.FAuxPrice
End
As
FPrice,
ROUND(Case
t1.FTrack
When
81
Then
u1.FPlanPrice*u1.FQty
Else
u1.FAmount
End,2)
As
FAmount,
v1.FInterID,v1.FTranType,u1.FEntryID,u1.FItemID,
(SELECT
g1.FName
+
"-"
+
cast(vo1.FNumber
as
varchar(10))
FROM
t_voucher
vo1
INNER
JOIN
t_vouchergroup
g1
ON
vo1.FGroupID=g1.FGroupID
and
vo1.FVoucherID=v1.FVchInterId
)
as
FVouchNo
FROM
ICStockBill
v1
inner
join
ICStockBillEntry
u1
on
v1.FInterID=u1.FInterID
inner
join
t_ICItem
t1
on
u1.FItemID=t1.FItemID
inner
join
t_Stock
t2
on
v1.FDCStockID=t2.FItemID
left
join
t_StockPlace
t11
on
u1.FDCSPID=t11.FSPID
left
join
t_Currency
t503
on
v1.FCurrencyID=t503.FCurrencyID
WHERE
v1.FDate
>="2001-01-01"
AND
v1.FDate
<"2001-02-01"
AND
v1.Ftrantype
In
(1,2,5,10,40,100,101,102)

And
v1.FCancelLation=0
提取出库数据
SELECT
……………..
FROM
ICStockBill
v1
inner
join
ICStockBillEntry
u1
on
v1.FInterID=u1.FInterID
inner
join
t_ICItem
t1
on
u1.FItemID=t1.FItemID
inner
join
t_Stock
t2
on
v1.FDCStockID=t2.FItemID
left
join
t_StockPlace
t11
on
u1.FDCSPID=t11.FSPID
left
join
t_Currency
t503
on
v1.FCurrencyID=t503.FCurrencyID
WHERE
v1.FDate
>="2001-01-01"
AND
v1.FDate
<"2001-02-01"
AND
v1.Ftrantype
In
(21,28,29,43)

And
v1.FCancelLation=0
单独提取生产领料数据从单据表中,单据类型为Ftrantype=24
SELECT
………….
FROM
ICStockBill
v1
inner
join
ICStockBillEntry
u1
on
v1.FInterID=u1.FInterID
inner
join
t_ICItem
t1
on
u1.FItemID=t1.FItemID
inner
join
t_Stock
t2
on
v1.FSCStockID=t2.FItemID
left
join
t_StockPlace
t11
on
u1.FDCSPID=t11.FSPID
left
join
t_Currency
t503
on
v1.FCurrencyID=t503.FCurrencyID
WHERE
v1.FDate
>="2001-01-01"
AND
v1.FDate
<"2001-02-01"
AND
v1.Ftrantype=24

And
v1.FCancelLation=0
提取调拨入库数据,单据类型.Ftrantype=41,同时入库仓库FDCStockID不为空
SELECT
……….
FROM
ICStockBill
v1
inner
join
ICStockBillEntry
u1
on
v1.FInterID=u1.FInterID
inner
join
t_ICItem
t1
on
u1.FItemID=t1.FItemID
inner
join
t_Stock
t2
on
v1.FDCStockID=t2.FItemID
left
join
t_StockPlace
t11
on
u1.FDCSPID=t11.FSPID
left
join
t_Currency
t503
on
v1.FCurrencyID=t503.FCurrencyID
WHERE
v1.FDate
>="2001-01-01"
AND
v1.FDate
<"2001-02-01"
AND
v1.Ftrantype=41

And
v1.FCancelLation=0
7.提取调拨出库数据,单据类型Ftrantype=41,同时入库仓库FSCStockID不为空
SELECT
…………
FROM
ICStockBill
v1
inner
join
ICStockBillEntry
u1
on
v1.FInterID=u1.FInterID
inner
join
t_ICItem
t1
on
u1.FItemID=t1.FItemID
inner
join
t_Stock
t2
on
v1.FSCStockID=t2.FItemID
left
join
t_StockPlace
t11
on
u1.FSCSPID=t11.FSPID
left
join
t_Currency
t503
on
v1.FCurrencyID=t503.FCurrencyID
WHERE
v1.FDate
>="2001-01-01"
AND
v1.FDate
<"2001-02-01"
AND
v1.Ftrantype=41

And
v1.FCancelLation=0
8.按显示格式显示报表
SELECT
FProfile
from
ICReportFormat
where
FRptid=106
4.9.5收发业务汇总表
(一)、业务描述

1.
统计各仓库各存货各种收发类型的出入库情况的报表

2.报表反映只收发业务
(二)、
数据描述1.报表方案FRptid=107
select
*
from
ICReportProfile
where
FRptid=107

2.从单据中提取收发数据,单据类型为.FTranType
In
(1,2,5,10,21,28,29,43,40,100,101,102,41)
SELECT
v2.FItemID,t2.FItemID,v2.FDCSPID,v2.FBatchNo,v1.FTranType,
CASE
WHEN
v1.FTranType
IN(1,2,5,10,40,100,101,102,41)
THEN
v2.FQty/t3.FCoefficient
ELSE
0
END
,
CASE
WHEN
v1.FTranType
IN(21,24,28,29,43)
THEN
v2.FQty/t3.FCoefficient
ELSE
0
END
,
CASE
WHEN
v1.FTranType
IN(1,2,5,10,40,100,101,102,41)
THEN
v2.FQty
ELSE
0
END
,

CASE
WHEN
v1.FTranType
IN(1,2,5,10,40,100,101,102,41)
AND
t1.FTrack<>81
THEN
v2.FAmount

WHEN
v1.FTranType
IN(1,2,5,10,40,100,101,102,41)
AND
t1.FTrack=81
THEN
v2.FQty*v2.FPlanPrice
ELSE
0
END
,
CASE
WHEN
v1.FTranType
IN(21,24,28,29,43)
THEN
v2.FQty
ELSE
0
END
,

CASE
WHEN
v1.FTranType
IN(21,24,28,29,43)
AND
t1.FTrack<>81
THEN
v2.FAmount

WHEN
v1.FTranType
IN(21,24,28,29,43)
AND
t1.FTrack=81
THEN
v2.FQty*v2.FPlanPrice
ELSE
0
END

FROM
ICStockBill
v1
inner
join
ICStockBillEntry
v2
on
v1.FInterID=v2.FInterID
inner
join
t_ICItem
t1
on
v2.FItemID=t1.FItemID
inner
join
t_Stock
t2
on
v1.FDCStockID=t2.FItemID
inner
join
t_MeasureUnit
t3
on
t1.FCUUnitID=t3.FItemID

left
join
t_StockPlace
t11
on
v2.FDCSPID=t11.FSPID

Where
v1.FDate
>="2001-01-01"
AND
v1.FDate
<="2001-01-23"
AND
v1.FTranType
In
(1,2,5,10,21,28,29,43,40,100,101,102,41)
And
v1.FCancelLation=0
3.单独提取调拨数据
单据类型为FTranType
=41
SELECT
v2.FItemID,t2.FItemID,v2.FSCSPID,v2.FBatchNo,v1.FTranType,0,v2.FQty/t3.FCoefficient,0,0,
v2.FQty
,
CASE
WHEN
t1.FTrack<>81
THEN
v2.FAmount
ELSE
v2.FQty*v2.FPlanPrice
END

FROM
ICStockBill
v1
inner
join
ICStockBillEntry
v2
on
inner
join
t_Stock
t2
on
v1.FSCStockID=t2.FItemID
inner
join
t_MeasureUnit
t3
on
t1.FCUUnitID=t3.FItemID
left
join
t_StockPlace
t11
on
v2.FSCSPID=t11.FSPID
Where
v1.FDate
>="2001-01-01"
AND
v1.FDate
<="2001-01-23"
AND
v1.FTranType
=41
4.提取生产领料数据,单据类型FTranType
=24
SELECT
………
FROM
ICStockBill
v1
inner
join
ICStockBillEntry
v2
on
v1.FInterID=v2.FInterID
inner
join
t_ICItem
t1
on
v2.FItemID=t1.FItemIDinner
join
t_Stock
t2
on
v1.FSCStockID=t2.FItemID
inner
join
t_MeasureUnit
t3
on
t1.FCUUnitID=t3.FItemID
left
join
t_StockPlace
t11
on
v2.FDCSPID=t11.FSPID
Where
v1.FDate
>="2001-01-01"AND
v1.FDate
<="2001-01-23"
AND
v1.FTranType
=24
5.形成分组分级数据,换算常用计量单位数据,倒算单价数据,形成汇总数据
4.9.6物料收发日报表
(一)、业务描述
1.按日统计物料的收发结存情况的报表
2.
(二)、数据描述

1.报表方案FRptid=171
select
*
from
ICReportProfile
where
FRptid=171
2.形成上日余额
先从分仓余额表ICInvBal取得期初数据
Select
t1.FStockPlaceID,t1.FBatchNo,t1.FItemID,t1.FStockID,t1.FBegQty,Case
t2.FTrack
When
81
Then
(t1.FBegBal-t1.FBegDiff)
Else
t1.FBegBal
End
From
ICInvBal
t1,t_ICItem
t2,t_Stock
t3
Where
not
(t1.FBegQty=0
And
t1.FBegBal=0)
And
t1.FItemID=t2.FItemID
And
t1.FStockID=t3.FItemID
And
t1.FYear=
2001
And
t1.FPeriod=1
从单据表里取出前面时间段的入库数据
SELECT
………
FROM
ICStockBill
v1,ICStockBillEntry
v2,t_ICItem
t2,t_Stock
t3

Where
v2.FItemID
=
t2.FItemID
And
v1.FInterID
=
v2.FInterID
And
v1.FDCStockID=t3.FItemID

And
v1.FCancelLation=0
And
v1.FTranType
in
(1,2,5,10,40,41,100,101,102)
AND
v1.FDate>="2001-01-01"
And
v1.FDate<"2001-01-10"
从单据表里取出前面时间段的出库数据
SELECT
………FROM
ICStockBill
v1,ICStockBillEntry
v2,t_ICItem
t2,t_Stock
t3

Where
v2.FItemID
=
t2.FItemID
And
v1.FInterID
=
v2.FInterID
And
v1.FDCStockID=t3.FItemID

And
v1.FCancelLation=0
And
v1.FTranType
in
(21,28,29,43)
AND
v1.FDate>="2001-01-01"
And
v1.FDate<"2001-01-10"
从单据表里取出前面时间段的调拨、生产领料数据
SELECT
……FROM
ICStockBill
v1,ICStockBillEntry
v2,t_ICItem
t2,t_Stock
t3

Where
v2.FItemID
=
t2.FItemID
And
v1.FInterID
=
v2.FInterID
And
v1.FSCStockID=t3.FItemID

And
v1.FCancelLation=0
And
v1.FTranType
in
(24,41)
AND
v1.FDate>="2001-01-01"
And
v1.FDate<"2001-01-10"
3.提取各单据类型数据(按单据类型)
Select
v2.FDCSPID,v2.FBatchNo,t2.FItemID,t3.FItemID,
case
when
FTranType=1
then
v2.FQty
Else
0
End,
case
when
FTranType=1
And
t2.FTrack=81
then
v2.FPlanPrice*v2.FQty
When
FTranType=1
And
t2.FTrack<>81
Then
v2.FAmount
else
0
End,
case
when
FTranType=2
then
v2.FQty
Else
0
End,
case
when
FTranType=2
And
t2.FTrack=81
then
v2.FPlanPrice*v2.FQty
When
FTranType=2
And
t2.FTrack<>81
Then
v2.FAmount
else
0
End,
case
when
FTranType=5
then
v2.FQty
Else
0
End,
case
when
FTranType=5
And
t2.FTrack=81
then
v2.FPlanPrice*v2.FQty
When
FTranType=5
And
t2.FTrack<>81
Then
v2.FAmount
else
0
End,
case
when
FTranType=10
then
v2.FQty
Else
0
End,
case
when
FTranType=10
And
t2.FTrack=81
then
v2.FPlanPrice*v2.FQty
When
FTranType=10
And
t2.FTrack<>81
Then
v2.FAmount
else
0
End,
case
when
FTranType=40
then
v2.FQty
Else
0
End,
case
when
FTranType=40
And
t2.FTrack=81
then
v2.FPlanPrice*v2.FQty
When
FTranType=40
And
t2.FTrack<>81
Then
v2.FAmount
else
0
End,
case
when
FTranType=41
then
v2.FQty
Else
0
End,
case
when
FTranType=41
And
t2.FTrack=81
then
v2.FPlanPrice*v2.FQty
When
FTranType=41
And
t2.FTrack<>81
Then
v2.FAmount
else
0
End,
case
when
FTranType=100
And
t2.FTrack<>81
then
v2.FAmount
Else
0
End,
case
when
FTranType=101
And
t2.FTrack<>81
then
v2.FAmount
else
0
End,
case
when
FTranType=102
And
t2.FTrack<>81
then
v2.FAmount
else
0
End,
case
when
FTranType=21
then
v2.FQty
Else
0
End,
case
when
FTranType=21
And
t2.FTrack=81
then
v2.FPlanPrice*v2.FQty
When
FTranType=21
And
t2.FTrack<>81
Then
v2.FAmount
else
0
End,
case
when
FTranType=28
then
v2.FQty
Else
0
End,
case
when
FTranType=28
And
t2.FTrack=81
then
v2.FPlanPrice*v2.FQty
When
FTranType=28
And
t2.FTrack<>81
Then
v2.FAmount
else
0
End,
case
when
FTranType=29
then
v2.FQty
Else
0
End,
case
when
FTranType=29
And
t2.FTrack=81
then
v2.FPlanPrice*v2.FQty
When
FTranType=29
And
t2.FTrack<>81
Then
v2.FAmount
else
0
End,
case
when
FTranType=43
then
v2.FQty
Else
0
End,
case
when
FTranType=43
And
t2.FTrack=81
then
v2.FPlanPrice*v2.FQty
When
FTranType=43
And
t2.FTrack<>81
Then
v2.FAmount
else
0
End
From
ICStockBill
v1,ICStockBillEntry
v2,t_ICItem
t2,t_Stock
t3
Where
v1.FInterID
=
v2.FInterID
And
v2.FItemID=t2.FItemID
And
v1.FDCStockID=t3.FItemID
And
v1.FTranType
In
(1,2,5,10,21,28,29,40,41,43,100,101,102)

And
v1.FCancelLation=0

AND
v1.FDate>="2001-01-10"
And
v1.FDate<="2001-01-23"
4.提取调拨、生产领料数据
Select
case
when
v1.FTranType=24
then
v2.FDCSPID
else
v2.FSCSPID
END,
v2.FBatchNo,t2.FItemID,t3.FItemID,
case
when
FTranType=24
then
v2.FQty
Else
0
End,
case
when
FTranType=24
And
t2.FTrack=81
then
v2.FPlanPrice*v2.FQty
When
FTranType=24
And
t2.FTrack<>81
Then
v2.FAmount
else
0
End,
case
when
FTranType=41
then
v2.FQty
Else
0
End,
case
when
FTranType=41
And
t2.FTrack=81
then
v2.FPlanPrice*v2.FQty
When
FTranType=41
And
t2.FTrack<>81
Then
v2.FAmount
else
0
End
From
ICStockBill
v1,ICStockBillEntry
v2,t_ICItem
t2,t_Stock
t3
Where
v1.FInterID
=
v2.FInterID
And
v2.FItemID=t2.FItemID
And
v1.FSCStockID=t3.FItemID
And
v1.FTranType
In
(24,41)

And
v1.FCancelLation=0
AND
v1.FDate>="2001-01-10"
And
v1.FDate<="2001-01-23"
Select
v1.*
Into
#Happen1
From
#Happen
v1
left
join
t_StockPlace
t11
on
v1.FStockPlaceID=t11.FSPID
Where
1=1
5.
形成分组分级合计数据,形成汇总数据
4.9.7生产任务执行情况明细表
(一)业务描述

反映生产任务单执行情况(已下达,已部份完成,已结案,正计划)
(二)数据描述

1.报表方案
SELECT
FStatus
FROM
ICReportProfile
WHERE
FRptID=173
2.提取数据从生产任务单ICMO,结合产品入库FTranType=2
Select
v3.FInterID,v3.FTranType,t1.FItemID,v3.FBillNo,v3.FCommitDate,t1.FName,v3.FPlanFinishDate,
t4.FName
as
FClassName,t1.FNumber,t1.FShortNumber,t1.FModel,t1.FQtyDecimal,t1.FPriceDecimal,
FStatus=Case
v3.FStatus
When
1
Then
"已下达"
When
2
Then
"已部份完成"
When
3
Then
"已结案"
Else
"正计划"
End,t3.FName
as
FWorkShop,v1.FBillNo
as
FInBillNo,v1.FDate,t7.FName
as
FBUUnitName,t8.FName
as
FCUUnitName,t5.FName
as
FUnitName,v3.FAuxQty,v3.FQty
as
FBUUnitQty,v3.FQty/t8.FCoefficient
as
FCUUnitQty,t6.FName
as
FInUnitName,v2.FAuxQty
as
FInAuxQty,v2.FQty
as
FInBUUnitQty,v2.FQty/t8.FCoefficient
as
FInCUUnitQty,FSumSort
=
0
From
ICMO
v3
inner
join
t_ICItem
t1
on
v3.FItemID=t1.FItemID
And
v3.FStatus>0
And
v3.FCancelLation=0
inner
join
ICStockBill
v1
on
v1.FSCBillInterID=v3.FInterID
And
v1.FTranType=2
inner
join
ICStockBillEntry
v2
on
v1.FInterID=v2.FInterID
And
v2.FItemID=v3.FItemID
inner
join
t_Department
t3
on
v3.FWorkShop=t3.FItemID
inner
join
t_Item
t4
on
t1.FParentID=t4.FItemID
inner
join
t_MeasureUnit
t5
on
v3.FUnitID=t5.FItemID
inner
join
t_MeasureUnit
t6
on
v2.FUnitID=t6.FItemID
inner
join
t_MeasureUnit
t7
on
t1.FUnitID=t7.FItemID
inner
join
t_MeasureUnit
t8
on
t1.FCUUnitID=t8.FItemID
Where
1
=
1
AND
v3.FCheckDate>="2001-01-01"
AND
v3.FCheckDate<="2001-01-31"
3.形成汇总数据,排序是按照完成时间,单据内码,物料代码
Select
"","","","合计",null,"",null,"","","","",4,2,"",
"","",null,"","",
""
,null,null,null,""
,null,SUM(v2.FQty)
as
FInBUUnitQty,SUM(v2.FQty/t8.FCoefficient)
as
FInCUUnitQty,
FSumSort=101
From
ICMO
v3
inner
join
t_ICItem
t1
on
v3.FItemID=t1.FItemID
And
v3.FStatus>0
And
v3.FCancelLation=0
inner
join
ICStockBill
v1
on
v1.FSCBillInterID=v3.FInterID
And
v1.FTranType=2
inner
join
ICStockBillEntry
v2
on
v1.FInterID=v2.FInterID
And
v2.FItemID=v3.FItemID
inner
join
t_Department
t3
on
v3.FWorkShop=t3.FItemID
inner
join
t_Item
t4
on
t1.FParentID=t4.FItemID
inner
join
t_MeasureUnit
t5
on
v3.FUnitID=t5.FItemID
inner
join
t_MeasureUnit
t6
on
v2.FUnitID=t6.FItemID
inner
join
t_MeasureUnit
t7
on
t1.FUnitID=t7.FItemID
inner
join
t_MeasureUnit
t8
on
t1.FCUUnitID=t8.FItemID
Where
1
=
1
AND
v3.FCheckDate>="2001-01-01"
AND
v3.FCheckDate<="2001-01-31"
Order
by
FSumSort,v3.FCommitDate,v3.FInterID,t1.FNumber

十六、安全库存预警分析表
(一)、业务描述
1.
所有物料的库存数量,按照安全库存的数量进行比较、分析,将库存数量低于安全库存数量的物料进行预警提示的分析报表
(二)、数据描述
1.报表方案FRptid=111
select
*
from
ICReportProfile
where
FRptid=111
2.提取物料的及时库存数据(按物料汇总,只计实仓)
Select
t4.FItemID,Sum(t4.FQty)
as
FQtyInto
#ICInventoryFrom
ICInventory
t4
inner
join
t_ICItem
t1
on
t1.FItemID=t4.FItemID
inner
join
t_Stock
t3
on
t4.FStockID=t3.FItemID
Where
1
=
1AND
t1.FDeleted=0
Group
By
t4.FItemID
3.根据及时库存的数据逐一比较物料安全库存
Select
t5.FName
as
FClassName,
t2.FShortNumber,t2.FNumber,t2.FName,t2.FModel,t2.FQtyDecimal,
t3.FName
as
FBUUnitName,t1.FQty
as
FActBUUnitQty,t2.FSecInv
as
FSecInvBUUnitQty,
FBUUnitDiff=t1.FQty-t2.FSecInv,t4.FName
as
FCUUnitName,t1.FQty/t4.FCoeffiCient
as
FActCUUnitQty,t2.FSecInv/t4.FCoeffiCient
as
FSecInvCUUnitQty,
FCUUnitDiff=t1.FQty/t4.FCoeffiCient-t2.FSecInv/t4.FCoeffiCient,
FStatus=(CASE
WHEN
t1.FQty
-
t2.FSecInv
<
0
then
"库存不足"
Else
""
end),FSumSort=0
Into
#temp
From
#ICInventory
t1
Inner
join
t_ICItem
t2
on
t1.FItemID=t2.FItemID
inner
join
t_MeasureUnit
t3
on
t2.FUnitID=t3.FItemID
inner
join
t_MeasureUnit
t4
on
t2.FCUUnitID=t4.FItemID
left
join
t_Item
t5
on
t2.FParentID=t5.FItemID
4.形成合计数据
IF
EXISTS(SELECT
*
FROM
#TEMP)
insert
into

#Temp
select
"","","","合计","",4,
"",sum(FActBUUnitQty),sum(FSecInvBUUnitQty),sum(FBUUnitDiff),"",sum(FActCUUnitQty),sum(FSecInvCUUnitQty),sum(FCUUnitDiff),
"",101
5.只显示库存不足数据
4.9.8超储/短缺库存分析表
(一)、业务描述
是对库存的所有物料的库存数量,按照最低库存量、最高库存量的数量进行比较、分析,将库存数量低于最低库存数量或高于最高库存数的物料列出来进行预警提示的分析报表
(二)、数据描述
1.报表方案FRptid=112
select
*
from
ICReportProfile
where
FRptid=112
2.
从物料表t_ICItem,即时库存表ICInventory
提取最高库存,最低库存,即时库存
过滤条件(having
Sum(t4.FQty)
-
t1.FLowLimit<0
or
Sum(t4.FQty)
-
t1.FHighLimit>0)
select
t1.FItemID,t1.FHighLimit,t1.FLowLimit,Sum(t4.FQty)
As
FActQty,
FDiff=case
when
Sum(t4.FQty)
-
t1.FHighLimit
>
0
then
Sum(t4.FQty)
-
t1.FHighLimit
when
Sum(t4.FQty)
-
t1.FLowLimit
<
0
then
Sum(t4.FQty)
-
t1.FLowLimit
else
0
end,FSumSort=0
Into
#Temp
fromt_ICItem
t1,ICInventory
t4,t_Stock
t3
Where
t1.FItemID
=
t4.FItemID
And
t4.FStockID
=
t3.FItemID
AND
t1.FDeleted=0

Group
By
t1.FItemID,t1.FHighLimit,
t1.FLowLimit
3.根据差异,设置状态
select
t5.FName
as
FClassName,
t2.FShortNumber,t2.FNumber,t2.FName,t2.FModel,
t2.FQtyDecimal,
t3.FName
as
FBUUnitName,t1.FHighLimit
as
FHighLimitBUUnitQty,t1.FLowLimit
as
FLowLimitBUUnitQty,
t1.FActQty
as
FActBUUnitQty,t1.FDiff
as
FBUUnitDiff,
t4.FName
as
FCUUnitName,t1.FHighLimit/t4.FCoefficient
as
FHighLimitCUUnitQty,t1.FLowLimit/t4.FCoefficient
as
FLowLimitCUUnitQty,t1.FActQty/t4.FCoefficient
as
FActCUUnitQty,t1.FDiff/t4.FCoefficient
as
FCUUnitDiff,
FStatus=case
when
t1.FDiff
>
0
then
"超"
when
t1.FDiff
<
0
then
"短"
Else
""
end,
FSumSort
=
0Into
#temp1from
#temp
t1
inner
join
t_ICItem
t2
on
t1.FItemID=t2.FItemID
inner
join
t_MeasureUnit
t3
on
t2.FUnitID=t3.FItemIDinner
join
t_MeasureUnit
t4
on
t2.FCUUnitID=t4.FItemID
left
join
t_Item
t5
on
t2.FParentID=t5.FItemID
4.联合汇总数据一起显示
SELECT
*
FROM
#temp1
UNION
ALLselect
"","","","合计","",4,
"",null,null,SUM(FActBUUnitQty),SUM(FBUUnitDiff),
"",null,null,SUM(FActCUUnitQty),SUM(FCUUnitDiff),
"",101
from
#temp1
4.9.9库存账龄分析表
(一)业务描述
1.
对库存的所有物料的存储时间进行分析的报表
2.
期初初始化时录入了余额的物料,不管时间段设成怎样,最后时间段内都是初始化的余额。
3.
在库存账龄分析表中,提供调拨单参与账龄分析的选项,选中该选项,则调拨单参与账龄分析的计算;不选择该选项,则不参与账龄分析的计算
(二)数据描述
1.报表方案FRptID=114
SELECT*
FROM
ICReportProfile
WHERE
FRptID=114
2.从单据中提取数据,按照分组确定各单据数据所属的账龄
Select
t1.FItemID,t2.FItemID
As
FStockID,0,0,
(case
when
t5.FDate>=convert(datetime,convert(varchar,DATEADD(dd,-6,Getdate()),101))
AND
t5.FDate<=convert(datetime,convert(varchar,DATEADD(dd,-0,Getdate()),101))
then
t6.FQty
else
0
END)
As
FQty1,((case
when
t5.FDate>=convert(datetime,convert(varchar,DATEADD(dd,-6,Getdate()),101))
AND
t5.FDate<=convert(datetime,convert(varchar,DATEADD(dd,-0,Getdate()),101))
then
t6.FQty
else
0
END))/t7.FCoefficient
As
FCUUnitQty1,
(case
when
t5.FDate>=convert(datetime,convert(varchar,DATEADD(dd,-7,Getdate()),101))
AND
t5.FDate<=convert(datetime,convert(varchar,DATEADD(dd,-7,Getdate()),101))
then
t6.FQty
else
0
END)
As
FQty2,((case
when
t5.FDate>=convert(datetime,convert(varchar,DATEADD(dd,-7,Getdate()),101))
AND
t5.FDate<=convert(datetime,convert(varchar,DATEADD(dd,-7,Getdate()),101))
then
t6.FQty
else
0
END))/t7.FCoefficient
As
FCUUnitQty2,
1
From
t_ICItem
t1,t_Stock
t2,ICStockBill
t5,ICStockBillEntry
t6,t_MeasureUnit
t7

Where
t5.FInterID=t6.FInterID
And
t5.FStatus>0
AND
t5.FTrantype
In
(1,2,5,10,40,41)
AND
t1.FItemID
=
t6.FItemID
And
t2.FItemID
=
t5.FDCStockID
AND
t1.FCUUnitID=t7.FItemID
3.提取及时库存数据作为基本数据(总的数据)
SELECT
t1.FItemID,t2.FItemID
As
FStockID,(t3.FQTY)
AS
FQTY,(t3.FQTY)/t7.FCoefficient
as
FCUUnitQty,0,0,0,0,1

From
t_ICItem
t1,t_Stock
t2,ICINVENTORY
t3
,t_MeasureUnit
t7
where
t1.FItemID
=
t3.FItemID
And
t2.FItemID
=
t3.FStockID
AND
t1.FCUUnitID=t7.FItemID
4.把及时库存数据减去分组数据后差额,被当作是初始化数据,系统默认放在最后时间段内
5.形成分组合计和总计数据
4.9.10库存ABC分析
(一)、业务描述
1.
ABC分析法:基本原理是对库存的所有物料,按照全部的货币价值从大到小排序,然后按成本比重高低将各成本项目分为A、B、C三类
2.
ABC分析的基本点是将企业的全部存货区分为A、B、C三类,属于A类的是少数价值高的最重要项目,品种少、而单位价值却较大。
也就是,从品种数看,这类存货的品种数大约只占全部存货总品种数的10%左右,而从一定期间库存成本看,这类存货的成本大约要占全部存货总成本的70%左右。
属于C类的是为数众多的低值的项目,其特点是,从品种数看,这类存货的品种数大约只占全部存货总品种数的70%左右,但从一定期间库存成本看,这类存货的成本大约只占全部存货总成本的10%左右。
而B类存货则介乎二者之间,从品种数和库存成本看,大约都只占全部存货总量的20%左右
3.
ABC分类是针对各物料金额占总库存金额的比例来划分的
(二)、数据描述

1.报表方案
SELECT*
FROM
ICReportProfile
WHERE
FRptID=167
2.提取汇总金额
SELECT
SUM(FEndBal)
FROM
ICBal
t2,t_ICItem
t1
Where
t2.FItemID=t1.FItemID
And
t2.FYear=2001
And
t2.FPeriod=1
3.从余额表提取数据,计算平均单价
INSERT
INTO
#ICAbc
(FItemID,FEndQty,FEndBal,FAvgPrice)
SELECT
t1.FItemID,SUM(t2.FEndQty),SUM(t2.FEndBal),Case
SUM(t2.FEndQty)
When
0
Then
0
Else
SUM(t2.FEndBal)/SUM(t2.FEndQty)
End
From
ICBal
t2,t_ICItem
t1
Where
t1.FItemID=t2.FItemID

AND
t2.FYear=2001
And
t2.FPeriod=1
Group
By
t1.FItemID
having
Sum(t2.FEndQty)<>0
And
Sum(t2.FEndBal)<>0
4.显示数据,按总金额,平均单价降序排列
SELECT
t1.FShortNumber,t1.FNumber,t1.FName,t1.FModel,t1.FQtyDecimal,t1.FPriceDecimal,
FUnitName=(SELECT
FName
FROM
T_MeasureUnit
WHERE
FItemID=t1.FUnitID),
t4.FName
as
FCUUnitName,t4.FCoefficient,t2.FEndQty,t2.FEndBal
FROM
#ICABC
t2,t_ICItem
t1,t_MeasureUnit
t4
Where
t1.FItemID=t2.FItemID
and
t1.FCUUnitID=t4.FItemID
ORDER
BY
FEndBal
DESC,t2.FAvgPrice
DESC
5.分类:根据显示的数据,计算金额比例,按照模糊数量比例(实际隐藏在前面排序里),计算金额比例占到A类的比例数时这些物料都为A类(实际是金额比例和达到A类设置比例时为A类)其他两类类推,实际此报表只是粗略反应数据的
4.9.11库存呆滞料分析表
(一)业务描述

1.
统计查询各仓库,各物料没有领料也没有入库的物料及数量

2.按要求设置呆滞时间

3.以数据库服务器的当前时间为截止时间
(二)、数据描述

1.报表方案FRptID=169
SELECT
*
FROM
ICReportProfile
WHERE
FRptID=169
2.根据单据中出入库时间和数据库服务器的当前时间剔除在呆滞时间范围内的数据得到所需要的数据
Select
t1.FItemID,t1.FNumber
as
FItemNumber,t1.FShortNumber
as
FItemShortNumber,t1.FName
as
FItemName,t1.FModel,w1.FBatchNo,
t2.FNumber
as
FStockNumber,t2.FShortNumber
as
FStockShortNumber,t2.FName
as
FStockName,
t3.FName
as
FUnitName,sum(w1.FQty)
as
FQty,
t4.FName
as
FCUUnitName,sum(w1.FQty/t4.FCoefficient)
as
FCUQty
from
ICInventory
w1,t_ICItem
t1,t_Stock
t2,t_MeasureUnit
t3,t_MeasureUnit
t4
Where

w1.FItemID=t1.FItemID
and
w1.FStockID=t2.FItemID
and
w1.FQty<>0
and
t1.FUnitID=t3.FMeasureUnitID
and
t1.FCUUnitID=t4.FMeasureUnitID
and
w1.FItemID
not
in
(
Select
distinct
v1.FItemID
From
ICStockBill
u1,
ICStockBillEntry
v1
Where

u1.FInterID=v1.FInterID
and
u1.FCancellation=0
and
u1.FDate>convert(varchar(10),GetDate()-90,120)
and
u1.FDate<=convert(varchar(10),GetDate(),120)
)
Group
by
t1.FItemID,t1.FNumber,t1.FShortNumber,t1.FName,t1.FModel,w1.FBatchNo,

t2.FNumber,t2.FShortNumber,t2.FName,

t3.FName
,
t4.FName
Order
by
t1.FNumber,t2.FNumber
4.9.12保质期预警分析表
(一)、业务描述
1.对进行保质期管理的物料,按照物料的保质期进行比较、分析,将超过保质期的物料进行预警提示的分析报表
2..以数据库服务器的当前时间为截止时间
(二)数据描述

1.报表方案FRptID=180
SELECT
FStatus
FROM
ICReportProfile
WHERED
FRptID=180
2.从及时库存中提取实现保质期管理的物料,且采购或完工时间在选择范围内,保质期取及时库存数据,到期日期=采购或完工时间+保质期,到/过期日期=目前时间-到期日期(大于0表示未过期是到期日,小于0表示已经过期)
Select
t1.FNumber
as
FMaterialNumber,t1.FShortNumber
as
FMaterialShortNumber,
t1.FName
as
FMaterialName,t1.FModel,v1.FBatchNo,t2.FNumber
as
FStockNumber,
t2.FShortNumber
as
FStockShortNumber,t2.FName
as
FStockName,
t11.FNumber
as
FSPNumber,
t11.FShortNumber
as
FSPShortNumber,t11.FName
as
FSPName,t3.FName
as
FBUUnitName,
v1.FQty
as
FBUQty,
v1.FKFDate,v1.FKFPeriod,
Convert(datetime,v1.FKFDate)+v1.FKFPeriod
as
FMaturityDate,
datediff(dy,Convert(datetime,GetDate()),(Convert(datetime,v1.FKFDate)+v1.FKFPeriod))
as
FMaturityPeriod
From
ICInventory
v1
inner
join
t_ICItem
t1
on
v1.FItemID=t1.FItemID
inner
join
t_Stock
t2
on
v1.FStockID=t2.FItemID
inner
join
t_MeasureUnit
t3
on
t1.FUnitID=t3.FMeasureUnitID
left
join
t_StockPlace
t11
on
v1.FStockPlaceID=t11.FSPID
Where
v1.FKFPeriod<>0
and
v1.FQty>0

AND
convert(datetime,v1.FKFDate)>="2001-01-01"
AND
convert(datetime,v1.FKFDate)<="2001-01-23"
AND
v1.FKFPeriod>=0
AND
v1.FKFPeriod<=100
AND
datediff(dy,Convert(datetime,GetDate()),(Convert(datetime,v1.FKFDate)+v1.FKFPeriod))>=-100
AND
datediff(dy,Convert(datetime,GetDate()),(Convert(datetime,v1.FKFDate)+v1.FKFPeriod))<=100

4.9.13生产批次跟踪表
(一)、业务描述
SELECT
FStatus
FROM
ICReportProfile
WHERE
FRptID=190
(二)、
数据描述
1.报表方案
SELECT
*
FROM
ICReportProfile
WHERE
FRptID=190
2.从生产任务单中提取关联已经入库的产品入库单数据,按生产任务单号、产品入库单,单据号,物料代码显示数据
Select
v3.FInterID,v1.FInterID,v1.FDate,v3.FBillNO,v1.FBillNo,t1.FNumber,
t1.FShortNumber,t1.FName,t1.FModel,v2.FBatchNo,v2.FKFDate,v2.FKFPeriod,t2.FName,
v2.FQty,v2.FPrice
,t3.FName,v2.FQty/t3.FCoefficient,v2.FPrice*t3.FCoefficient,
v2.FAmount
,
FSumSort
=
0
From
ICMO
v3
inner
join
ICStockBill
v1
on
v1.FSCBillInterID=v3.FInterID
inner
join
ICStockBillEntry
v2
on
v1.FInterID=v2.FInterID
inner
join
t_ICItem
t1
on
v2.FItemID=t1.FItemID
inner
join
t_MeasureUnit
t2
on
t1.FUnitID=t2.FItemID
inner
join
t_MeasureUnit
t3
on
t1.FCUUnitID=t3.FItemID
Where
v1.FTranType
=
2
AND
v1.FDATE>="2001-01-01"
And
v1.FDate<="2001-01-31"
And
v1.FCancellation=0
Order
by
v3.FBillNo,v1.FDate,v1.FBillNo,t1.FNumber
3.从生产领料单中提取已经关联生产任务单的生产领料单数据
Select
v3.FInterID,v1.FInterID,v1.FBillNo,t3.FName,t1.FNumber,t1.FShortNumber,t1.FName,
t1.FModel,v2.FBatchNo,v2.FKFDate,v2.FKFPeriod,t4.FName,v2.FQty,v2.FPrice
,
t5.FName,v2.FQty/t5.FCoefficient,v2.FPrice*t5.FCoefficient,
v2.FAmount
,
FSumSort
=
0
From
ICStockBill
v1
inner
join
ICStockBillEntry
v2
on
v1.FInterID=v2.FInterID
inner
join
ICMO
v3
on
v1.FSCBillInterID=v3.FInterID
inner
join
t_ICItem
t1
on
v2.FItemID=t1.FItemID
inner
join
t_Department
t3
on
v3.FWorkShop=t3.FItemID
inner
join
t_MeasureUnit
t4
on
t1.FUnitID=t4.FItemID
inner
join
t_MeasureUnit
t5
on
t1.FCUUnitID=t5.FItemID
Where
v1.FTranType=24
And
v1.FCancellation=0
Order
by
v3.FBillNo,v1.FBillNo,t1.FNumber
4.单独提取红字生产领料单中已经关联生产任务单的生产领料单数据
Select
v3.FInterID,v1.FInterID,v1.FBillNo,t3.FName,t1.FNumber,t1.FShortNumber,t1.FName,
t1.FModel,v2.FBatchNo,v2.FKFDate,v2.FKFPeriod,t4.FName,v2.FQty,v2.FPrice
,
t5.FName,v2.FQty/t5.FCoefficient,v2.FPrice*t5.FCoefficient,
v2.FAmount
,
FSumSort
=
0
From
ICStockBill
v1
inner
join
ICStockBill
w1
on
v1.FRSCBillInterID
=
w1.FInterID
inner
join
ICStockBillEntry
v2
on
v1.FInterID=v2.FInterID
inner
join
ICMO
v3
on
v1.FSCBillInterID=v3.FInterID
inner
join
t_ICItem
t1
on
v2.FItemID=t1.FItemID
inner
join
t_Department
t3
on
v3.FWorkShop=t3.FItemID
inner
join
t_MeasureUnit
t4
on
t1.FUnitID=t4.FItemID
inner
join
t_MeasureUnit
t5
on
t1.FCUUnitID=t5.FItemID
Where
v1.FTranType=24
And
v1.FCancellation=0
order
by
v3.FBillNo,v1.FBillNo,t1.FNumber
5.组合两组数据成一张表
4.9.14物料批次跟踪
(一)、业务描述
1.
通过过滤日期、物料代码、批号和生产领料单号,提供该批号原材料对应的最终产品的情况
2.
主要是处理当某一供应商供应的某一批号的材料出现问题,但是原材料已经被生产或发货,这样需要知道该原材料生产的最终的产品,需要对产品进行追踪的过程,进而对出现问题的产品进行处理
(二)、数据描述
1.报表方案
select
*
from
ICReportProfile
where
FRptid=191
2.
从生产任务单中提取关联已经领料的生产领料数据,按生产任务单号、生产领料,单据号,物料代码显示数据
Select
v3.FInterID,v1.FInterID,v1.FDate,v3.FBillNO,v1.FBillNo,t1.FNumber,t1.FShortNumber,
t1.FName,t1.FModel,v2.FBatchNo,v2.FKFDate,v2.FKFPeriod,t2.FName,v2.FQty,v2.FPrice
,
t3.FName,v2.FQty/t3.FCoefficient,v2.FPrice*t3.FCoefficient,
v2.FAmount
,
FSumSort
=
0
From
ICMO
v3
inner
join
ICStockBill
v1
on
v1.FSCBillInterID=v3.FInterID
inner
join
ICStockBillEntry
v2
on
v1.FInterID=v2.FInterID
inner
join
t_ICItem
t1
on
v2.FItemID=t1.FItemID
inner
join
t_MeasureUnit
t2
on
t1.FUnitID=t2.FItemID
inner
join
t_MeasureUnit
t3
on
t1.FCUUnitID=t3.FItemID
Where
v1.FTranType
=
24
AND
v1.FDATE>="2001-01-01"
And
v1.FDate<="2001-01-31"
And
v1.FCancellation=0
Order
by
v3.FBillNo,v1.FDate,v1.FBillNo,t1.FNumber
3.从产品入库单单中提取关联生产任务单数据
Select
v3.FInterID,v1.FInterID,v1.FBillNo,t3.FName,t1.FNumber,t1.FShortNumber,t1.FName,
t1.FModel,v2.FBatchNo,v2.FKFDate,v2.FKFPeriod,t4.FName,v2.FQty,v2.FPrice
,
t5.FName,v2.FQty/t5.FCoefficient,v2.FPrice*t5.FCoefficient,
v2.FAmount,
FSumSort
=
0
From
ICStockBill
v1
inner
join
ICStockBillEntry
v2
on
v1.FInterID=v2.FInterID
inner
join
ICMO
v3
on
v1.FSCBillInterID=v3.FInterID
inner
join
t_ICItem
t1
on
v2.FItemID=t1.FItemID
inner
join
t_Department
t3
on
v3.FWorkShop=t3.FItemID
inner
join
t_MeasureUnit
t4
on
t1.FUnitID=t4.FItemID
inner
join
t_MeasureUnit
t5
on
t1.FCUUnitID=t5.FItemID
Where
v1.FTranType=2
And
v1.FCancellation=0
Order
by
v3.FBillNo,v1.FBillNo,t1.FNumber
4.单独提取红字从产品入库单单中关联生产任务单数据
Select
v3.FInterID,v1.FInterID,v1.FBillNo,t3.FName,t1.FNumber,t1.FShortNumber,t1.FName,
t1.FModel,v2.FBatchNo,v2.FKFDate,v2.FKFPeriod,t4.FName,v2.FQty,v2.FPrice
,
t5.FName,v2.FQty/t5.FCoefficient,v2.FPrice*t5.FCoefficient,
v2.FAmount
,
FSumSort
=
0
From
ICStockBill
v1
inner
join
ICStockBill
w1
on
v1.FRSCBillInterID
=
w1.FInterID
inner
join
ICStockBillEntry
v2
on
v1.FInterID=v2.FInterID
inner
join
ICMO
v3
on
v1.FSCBillInterID=v3.FInterID
inner
join
t_ICItem
t1
on
v2.FItemID=t1.FItemID
inner
join
t_Department
t3
on
v3.FWorkShop=t3.FItemID
inner
join
t_MeasureUnit
t4
on
t1.FUnitID=t4.FItemID
inner
join
t_MeasureUnit
t5
on
t1.FCUUnitID=t5.FItemID
Where
v1.FTranType=2
And
v1.FCancellation=0
Order
by
v3.FBillNo,v1.FBillNo,t1.FNumber
5.组合两组数据成一张表
4.9.15库存配套分析表
(一)、业务描述
1.对存在BOM单的自制物料进行最大配套数量分析的报表
2.只能按单一物料进行查询,且该物料只能存在一个有效的bom单中
(二)、数据描述(完全展开为例)
1.报表方案
SELECT
*FROM
ICReportProfile
WHERE
AND
FRptID=172
2.判断所选物料的物料属性,及ICBOM数量
Select
t1.FItemID,t2.FID,t1.FName,t1.FModel,t1.FNumber,t1.FShortNumber,t3.FName
as
FUnitName,t1.FQtyDecimal
From
t_ICItem
t1,t_SubMessage
t2,t_MeasureUnit
t3
Where
t1.FErpClsID=t2.FInterID
And
t1.FUnitID=t3.FItemID
And
t1.FDeleted=0
And
t1.FNumber="03.04"
Order
By
t1.FItemID
Select
Count(*)
From
ICBOM
Where
FUseStatus=1072
And
FItemID=270
3.提取bom组成
Select
t1.FItemID
As
FParentID,t1.FQty
as
FParentQty,t2.FItemID,t2.FQty,
FDetail=Case
When
(Select
Count(*)
From
ICBom
Where
FUseStatus=1072
And
FItemID=t2.FItemID)>0
Then
0
Else
1
End
From
ICBOM
t1,ICBOMChild
t2
Where
t1.FInterID=t2.FInterID
And
t1.FUseStatus=1072
And
t1.FItemID=270
Order
By
t2.FItemID
4.提取用量
Select
FLevel=1,t1.FItemID
As
FParentID,t1.FQty
as
FParentQty,t2.FItemID,t2.FQty*1
From
ICBOM
t1,ICBOMChild
t2
Where
t1.FUseStatus=1072
And
t1.FInterID=t2.FInterID
And
t1.FItemID
=
270
5.判断最大物料的库存配套数
Select
Max(v1.FQty/t2.FQty)
As
MaxSuiteQty
From
ICBOM
t1,ICBOMChild
t2,
(Select
FItemID,Sum(FQty)
As
FQty
From
ICInventory
Group
By
FItemID)
As
v1
Where
v1.FItemID=t2.FItemID
And
t1.FUseStatus=1072
And
t1.FInterID=t2.FInterID
And
t1.FItemID
=
270
6.逐一提取下级细物料最大物料的库存配套数
Select
Max(v1.FQty/t2.FQty)
As
MaxSuiteQty
From
ICBOM
t1,ICBOMChild
t2,(Select
FItemID,Sum(FQty)
As
FQty
From
ICInventory
Group
By
FItemID)
As
v1
Where
v1.FItemID=t2.FItemID
And
t1.FUseStatus=1072
And
t1.FInterID=t2.FInterID
And
t1.FItemID
=
182
7.逐一数据配套得到最后的配套结果

4.10质量检验
4.10.1业务描述
1.
质量检验的设置:
(1)基础设置,指对在实现各检验功能过程中用到的基础资料和参数进行设置,主要包括物料相关属性和质量系统选项的设置等等
(2)检验方案的定义和设置,即对检验方案的设定
(3)质量检验处理
2.
质量检验处理的内容:
(1)收料检验,实现采购入库的检验功能。
该功能通过采购管理系统的检验流程实现,即由收料通知单(送检通知单)直接生成检验单,检验员执行质检后处理检验数据,并将合格数反写回收料通知单,根据合格数量生成外购入库单;出现质量问题导致不能入库时将货物退回供应商
(2)库存检验,实现库存日常检验需要的功能。
该功能通过直接录入检验单,进行日常库存管理的检验
(3)完工检验模块,实现产品入库的检验功能。
该功能通过生产任务汇报单生成检验单,检验员执行质检后处理检验数据,并将合格数反写回生产任务汇报单,生产任务汇报单保存时将完工数和合格数累加到生产任务单;出现质量问题导致产品不能入库而退回生产过程
4.10.2数据描述
4.10.2.1质检方案
单据模板:
(1)单据的事物类型
ftrantype=45
SELECT
*
FROM
ICTransactionType
Where
FID
IN
(45)
(2
)单据模板为
FID
=
"QCS"
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"QCS"
SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"QCS"
ORDER
BY
FCtlIndex
(3)选单模板为
FID
=
"QCS"
select
*
from
icselbills
WHERE
FID
=
"QCS"
(4)单据对应关系模板为
ictablerelation
中类型为86
select
*
from
ictablerelation
where
ftypeid=86
(5)单据字段描述表为中类型为61
select
*
from
icchatbilltitle

where
ftypeid=86

方案新增:
(1)选择单据模板(根据上面模板,显示单据,主要是ICTemplate,ICTemplateEntry,ICTransactionType表)
(2)执行exec
GetICMaxNum
"ICQCScheme",提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=
45
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=45
(4)插入数据到单据ICQCScheme

,ICQCSchemeEntry,先删除此单据数据
DELETE
ICQCScheme
WHERE
FInterID=1006
INSERT
INTO
ICQCSchemeEntry
(……)
INSERT
INTO
ICQCScheme

(…..)
审核:
设置单据的审核标志
Update
ICQCScheme
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=1006
反审核:
Update
ICQCScheme
Set
FCheckerID=Null,FStatus=0
Where
FBrNo="0"
And
FInterID=10064.10.2.2检验单

单据模板:
(1)单据的事物类型
ftrantype=45
SELECT
*
FROM
ICTransactionType
Where
FID
IN
(46)
(2
)单据模板为
FID
=
"QCB"
SELECT
*
FROM
ICTemplate
WHERE
FID
=
"QCB"
SELECT
*
FROM
ICTemplateEntry
WHERE
FID
=
"QCB"
ORDER
BY
FCtlIndex
(3)选单模板为FID
=
"QCB"
select
*
from
icselbills
WHERE
FID
=
"QCB"
(4)单据对应关系模板为
ictablerelation
中类型为87
select
*
from
ictablerelation
where
ftypeid=87
(5)单据字段描述表为中类型为87
select
*
from
icchatbilltitle

where
ftypeid=87
单据新增(外购入库检验)

(1)选择单据模板(根据上面模板,显示单据,主要是ICTemplate,ICTemplateEntry,ICTransactionType表)
(2)执行exec
GetICMaxNum
"ICQCBill,提取最大单据内码
(3)提取单据号,保存时更新最大号select
*
from
ICBillNo
where
FBillID=
46
update
ICBillNo
set
FCurNo=FCurNo+1
where
FBillID=46
(4)插入数据到单据ICQCBill,ICQCBillEntry,先删除此单据数据
DELETE
ICQCBill
WHERE
FInterID=1022
INSERT
INTO
ICQCBillEntry
(……)
INSERT
INTO
ICQCBill
(…..)
审核:更新收料通知单的合格数量,更新质检单状态
UPDate
t1
Set
t1.FAuxQtyPass
=
t1.FAuxQtyFrom
POInstockEntry
t1
Where
t1.FInterID
=
1159
And
t1.FEntryID
=
1
And
t1.FItemID
=
167
Update
ICQCBill
Set
FCheckerID=16394,FStatus=1,
FCheckDate="2001-01-30"
Where
FBrNo="0"
And
FInterID=1022
反审核:反向操作,例如
UPDate
t1
Set
t1.FAuxQtyPass
=
0From
POInstockEntry
t1
Where
t1.FInterID
=
1159
And
t1.FEntryID
=
1
And
t1.FItemID
=
167
Update
ICQCBill
Set
FCheckerID=Null,FStatus=0,
FCheckDate=Null
Where
FBrNo="0"
And
FInterID=1022
4.10.2.3采购质量检验统计表:

(1)报表方案FRptID=200
SELECT
FStatus
FROM
ICReportProfile
WHERE
FRptID=200

(2)质检单的状态
ICQCBill.
FStatus>0

(3)质检单必须是关联采购收料通知单形成

(4)质检单的类型为采购入库检验(ICQCBill.FType=390)
4.10.2.4
物料鉴别供应商质量比较表

(1)报表方案FRptID=201
SELECT
FStatus
FROM
ICReportProfile
WHERE
FRptID=201

(2)质检单的状态
ICQCBill.
FStatus>0

(3)质检单必须是关联采购收料通知单形成
(4)质检单的类型为采购入库检验(ICQCBill.FType=390)
(5)通过质检单,关联的采购收料通知单形成来料、合格、不合格数据

4.10.2.5完工入库质量表(1)报表方案FRptID=202
SELECT
FStatus
FROM
ICReportProfile
WHERE
FRptID=202

(2)质检单的状态
ICQCBill.
FStatus>0

(3)质检单必须是关联生产任务单单形成

(4)质检单的类型为完工入库检验、委外加工入库检验(ICQCBill.FType
in(392,394))
(5)通过质检单,关联的生产任务单单来形成报检、合格、不合格数据数据
五、核算
5.1外购入库核算
5.1.1参与核算的发票
只有已经与出库单钩稽的发票才能参与外购入库核算。如果发票与入库单已经钩稽,但是在外购入库核算界面却调不出该发票,这种情况一般是因为IcPurchase.FhookInterID、IcStockBill.FhookInterID字段值丢失,或者是IcHoolRelations核销关系丢失。
5.1.2费用分配过程
--将费用发票应记费用写入ICPurchaseEntry.FAmountMust
UPDATE
u1
SET
FAmountMust=convert(decimal(28,2),(0+83*FQty/11))

FROM
ICPurchaseEntry
u1,ICPurchase
v1Where
u1.FInterID
=
v1.FInterID
AND
v1.FHookInterID=1

--将费用发票税金写入ICPurchaseEntry.
FDeductTax
UPDATE
u1
SET
FDeductTax=convert(decimal(28,2),(0+17*FQty/11))

from
ICPurchaseEntry
u1,ICPurchase
v1Where
u1.FInterID
=
v1.FInterID
AND

v1.FHookInterID=1
5.1.3核算过程
如果外购入库单在本期,则用此单价来更新外购入库单单价——
ICStockBillEntry.Fpric=(ICPurchaseEntry.Famount
+
ICPurchaseEntry.FamountMust)/
ICStockBillEntry.Fqty
如果外购入库单在以前期,核算时不更新以前期间外购入库单单价,但生成暂估补差单(Ftrantype=101)——暂估补差单=(采购发票金额+应计费用)-
以前期间外购入库金额

=ICPurchaseEntry.Famount
+
ICPurchaseEntry.FamountMust)-
ICStockBillEntry.Famount
另外,如果重新做外购入库核算,系统会删除本期的暂估补差单,并在本次核算重新生产暂估补差单。
5.2出库核算
5.2.1各种计价方法的基本算法
各种计价方法对负结存、红字出入库、调拨的处理在后面统一讲解。这里先介绍各种计价方法的基本算法,以及各种计价方法在库存单据表和余额表中数据的存放规则。
5.2.1.1加权平均法
计算公式
加权平均单价=
(期初始结存金额+本期收入金额)/(期初始结存数量+本期收入数量)

物料:A

数量单位:个

计价方法:加权平均

期间:2004.06期
金额单位:元
日期
单据号
摘要






数量
单价
金额
数量
单价
金额
数量
单价
金额
期初
7
5.71
40
06.1
IN1
收入
4
6.5
26IN1
收入
1
8.5
8.5

06.2
OUT1
发出6
6.39
38.3606.7
IN2
收入
2
7.5
15

06.8
OUT2
发出2
6.39
12.79期末
6
6.39
38.35

加权平均单价
=
(40
+26
+
8.5+
15
)
/
(7+4+1+2)=6.3929
移动加权平均法
计算公式
出库单价=(以前结存金额+本批收入金额)/(以前结存数量+本批收入数量)

物料:A

数量单位:个

计价方法:移动平均

期间:2004.06期
金额单位:元
日期
单据号
摘要






数量
单价
金额
数量
单价
金额
数量
单价
金额
期初
7
5.71
40
06.1
IN1
收入
4
6.5
26IN1
收入
1
8.5
8.5

06.2
OUT1
发出6
6.21
37.26
6
6.21
37.24
06.7
IN2
收入
2
7.5
15

06.8
OUT2
发出2
6.53
13.06期末
6
6.53
39.18
其中:
OUT1的发出单价
=
(40+26+8.5)/(7+4+1)=
6.21
OUT2的发出单价
=
(37.24+15)/(6+2)=
6.53
5.2.1.2先进先出法
发出时先发出期初余额,再发出本期收入序列(入库单)。某一批不足发出时,继续发后面的批次,直到够发出为止。
对于计价为先进先出法的物料,其余额信息在在Ic(Inv)Bal中是按批次存放的。在Ic(Inv)Bal中,先进先出法的批次是用FbillInterID字段来标识的,发出期初结存的批次时,按FbillInterID由小到大的顺序发出。(注:FbillInterID
与单据ID没有任何关系,IcBal表中的FentryID已经作废,每次有新的批次余额写入IcBal时,用Select
Max(FBillInterID)+1
FROM
IcBal获取新的批次号。)
本期的入库单构成了本期收入序列,软件必须知道本期每笔收入的先后顺序,这个先后顺序是如何确定的呢?方法是对本期的收入序列按单据的日期、单据内码、分录内码进行排序(ORDER
BY
ICStockBill.FDate,ICStockBill.FInterID,ICStockBillEntry.FentryID)。
期初和期末结存在软件界面中只显示一个合计行,必须查IcBal才能知道具体的结存批次。
例:
单位:个

金额单位:元
日期
单据号
FbillInterID
单据ID
分录ID
摘要






数量
单价


数量




数量
单价


期初
8
5
4
20
期初
9
2
10
20
06.1
IN1
25
1
收入
4
6.5
26IN1
25
2
收入
1
8.5
8.5

06.2
OUT1
26
1
发出6
5
3006.7
IN2
24
1
收入
2
7.5
15

06.8
OUT2
27
1
发出2
8.25
16.5期末
10
3
6.5
19.5
期末
11
1
8.5
8.5
期末
12
2
7.5
15
上例中,期初结存是由两个批次构成的。本期有两张入库单In1和IN2共三笔收入,其中IN1有两条分录。In1和IN2构成了本期收入序列。
OUT1发出数量为6,软件先发出期初结存FbillInterID=8的批次,
FbillInterID=8的批次数量只有5个,于是继续发出下一个批次,从FbillInterID=9的批次中发出1个,FbillInterID=9的批次还剩余1个。OUT1的发出单位成本=
[(5*4)+(1*10)]
/
6
=
5

OUT2发出数量为2,软件先发出期初结存FbillInterID=9的批次,从FbillInterID=9的批次剩余数量只有1个,于是继续发本期收入序列,本期收入序列按单据的日期、单据内码、分录内码进行排序,因此先发出日期为6.01、单据ID=25、分录ID=1
的批次,从该批次中发出1个。OUT2的发出单位成本=
[(1*10)+(1*6.5)]
/
2
=
8.25

OUT1和OUT2发出完毕,本期收入序列有三个批次有剩余,它们是:
日期为6.01、单据ID=25、分录ID=1
的批次,数量:3,单价:6.5;
日期为6.01、单据ID=25、分录ID=2
的批次,数量:1,单价:7.5;
日期为6.08、单据ID=24、分录ID=1
的批次,数量:2,单价:8.5;
在期末结帐时,系统会将这些信息写入IcBal和IcInvBal作为本期期末结存,同时结转到下期,作为下期的期初始结存
5.2.1.3后进先出法
原理同先进先出法,余额表也是用FbillInterID字段标记批次。发出时候先发出本期收入序列,再发出期初结存批次。
分批认定法
在录入库存单据时,如果是分批认定法的物料就必须录入批号,系统用IcStockBillEntry表的FbatchNo字段记录批号。先进先出/后进先出法的批次是系统自动分配的,而分批认定法的批号是用户指定的。
Ic(Inv)Bal表也用FbatchNo字段记录认定法的批号。
物料使用分批认定法,系统强制该物料启用业务批次管理。我们把分批认定法的批次称为核算批次,把业务批次管理的批次称为管理批次。核算批次与管理批次是两回事,任何计价方法的物料都可以使用业务批次管理,但是成本计算一概不考虑管理批次。
“业务批次”的批号也用FbatchNo来标记。因此,对于分批认定法的物料其核算批次与业务批次共用FbatchNo字段。
发出时,由于出库单也录入了批次,软件就从该批次发出,如果不足以发出,不会合并其它批次(这一点与先进先出/后进先出法不同),系统会找系统参数设置:负结存单据单价来源。如果仍找不到单价,在核算报告中报错。分批认定法每个批次是一个整体,在每个批次内进算法是移动加权平均。
例:
单位:个

金额单位:元
日期
单据号
批号
摘要






数量
单价


数量




数量
单价


期初
P0015
8
40
期初
P00215
4
60
06.1
IN1
P001
收入
2
15
30

06.2
OUT1
P001
发出6
10
6006.2
OUT2
P002
发出10
4
40期末
P0011
10
10
期末
P0025
4
20
期初始结存有二个批次:P001、P002。
OUT1的发出单价=
(40+30)/(5+2)=10
因为P001期初有结存,本期有收入,所以要求出在OUT2发出时间点P001的结存单价,OUT2就按此单价发出。
OUT2的发出单价=
4
5.2.1.4计划成本法
材料成本差异率=
(期初始结存差异+本期收入差异)/(期初结存计划成本+本期收入计划成本)
其中:本期收入实际单价大于计划价,差异为正;收入实际单价小于计划价,差异为负。
发出实际单价=计划价+
计划价*材料成本差异率
例:
单位:个

金额单位:元
日期
单据号
摘要






数量
单价




数量






数量
单价




期初

5
10
50
-10
06.1
IN1
收入
4
10
40
5
IN1
收入
1
10
10
10
06.2
OUT1
发出
6
10
60
3
期末

4
10
40
2
存货成本差异率=
(-10+5+10)/(50+40+10)=0.05
发出成本负担的差异=
60*0.05
=3
结存差异=
40*0.05
=2
发出实际单价
=
10+
10*0.05=10.5
在IcBal、IcInvBal中,FbegDiff和FendDiff代表期初和期末结存差异,这两个字段是计划成本法物料专用的字段。在IcBal和IcInvBal中,FbegBal和FendBal是实际成本。
对于划成本法的物料,在软件任何报表中显示的单价都是计划价,显示的金额都是计划价金额,只有材料成本差异明细帐可以查询到材料成本差异。
5.2.2总仓/分仓/分仓组核算
SELECT
*
FROM
t_SystemProfile
WHERE
FCategory="IC"
AND
FKey="CalculateType"

0—
总仓核算
1—
分仓核算
2—
分仓组核算
不同的核算方式,对ICBAL、ICINVBAL数据保存方式不同。
总仓核算:t_stock.Fgroupid=0

ic(inv)bal.fstockgroupid=0
分仓核算:t_stock.Fgroupid=t_Stock
.
FItemID

ic(inv)bal.fstockgroupid=
t_Stock
.
FItemID
分仓组核算:t_stock.Fgroupid=t_Stock
.
FItemID

ic(inv)bal.fstockgroupid=
t_Stock
.FitemID
5.2.3所有计价方法都遵循的规则
系统在出库核算时,禁止出库单价为负,若出现此种情况,用户应调整期初成本或入库成本。
已生成凭证的出库单在核算时不会刷新单价和金额,以物流与总帐的一致。
本期的已审核的单据才参与存货核算。
5.2.4不足以发出的核算规则
当前计算出的单价
>0

<=0

已记帐
未记帐

1
取核算参数设置负结存单价来源
不更新单据单价更新单据单价
取到
未取到或单价=0
用取到的单价更新单据单价

2出库单单价不为0出库单单价为0
ICErrStockbill
对于加权平均、计划成本法都是1在2前面。
其他的计价方法都是2在1前面。
即:加权、计划成本法:计价方法>
系统选项
>
当前单价
其他计价方法:计价方法
>
当前单价
>
系统选项
5.2.4.1加权平均/计划成本法
例:加权平均
物料:A
期间:2004.06期
单位:个

金额单位:元
日期
单据号
摘要






数量
单价
金额
数量
单价
金额
数量
单价
金额
期初
20
25
500.
06.1
IN1
收入
10
10
100.

06.2
OUT1
发出100
20
2000.期末
-70
20
-1400.
上例中,加权平均单价
=
(500+100)
/
(20+10)=
20
。OUT1发出数量是100,是不足以发出的,但是无论系统参数“负结存单据单价来源”如何设置,系统都会用加权平均单价更新OUT1的单价。
5.2.4.2移动平均
负结存单价来源可以在系统参数中定义,来源有:手工录入、最近出库价、最近入库价、计划价。
如果本次发出不足以发出——
单据上已经有了单价,则无论系统参数如何设置,系统一概保留当前单价;
单据上没有单价,系统会自动向后找入库批次,如果合并后可以发出,则系统自动计算出单价,而不去取系统参数设置。如果计算不出单价系统才找系统参数。
如果第一笔发出就不足发出,那么可以取最近入库价,取不出最近发出价;
对于移动平均法如果第一笔发出可以发出,而第二笔发出不足以发出,那么第二笔发出可以取近发出价;
最近入库价不考虑日期,只考虑FInterID。不存在收发顺序问题,只要本期有收入就可以取出来。
5.2.4.3分批认定法
每个批次一个整体,在每个批次内部算法是加权平均。因此,分批认定不足以发出的核算规则同加权平均。
5.2.4.4先进/后进先出法
某一批不足以发出,则继续发出下一批,如果一直合并到最后一个批次仍然不足以发出则取系统选项。
5.2.4.5计划成本法
计划成本法本质上也是一种全月加全平均,因此不足以发出规则同加权平均。
5.2.5红字入库单据的核算规则(所有计价方法)
红字入库单
1
已记帐*
未记帐*
原单单价>0

2
原单单价<=0
(或无原单)
3
用原单单价更新红字入库单据

红字入库单单价当前单价

ICErrStockbill
说明:
5.2.5.1红字入库的规则是:
1)所有的红字入库都作为收入序列;
2)单价确认的顺序:记帐
>
原单>
当前单价
如果红字入库单已经记帐,则对红自入库单单价不做处理;
如果红字入库单未经记帐,看是否有原单——
如果有原单且原单单价大于零,则取原单单价;
如果无原单或原单单价小于等于零,则要看红字出库单上是否有单价,如果有单价则保留此单
价,如果无单价则在核算报告中报错:该红字入库单的单价不能确认。解决的方法:在不确定单价
序时簿中录入该单单价。
对图中的现象分析(对规则的理解):
对于已记帐的情况,系统不再更改红字入库单的单价,是为了保证物流与总帐数据相平;
对原单单价小于等于零(或无原单),系统当然不需要用这个单价(零或负)来更新红字入库单。
红字入库作为收入序列。红字入库单如果有原单,则取原单单价。如果没有原单而且没有录入单价,核算时会在核算报告中报错,作为不确定单价单据,要求用户手工录入单价。
例:加权平均
物料:A
期间:2004.06期
单位:个

金额单位:元
日期
单据号
摘要






数量
单价
金额
数量
单价
金额
数量
单价
金额
期初
20
25
500.
06.1
IN1
收入
10
10
100.

06.2
IN2
收入
-5
10
-50

06.2
OUT1
发出100
22
2200期末
-75
22
-1650.
上例中,加权平均单价=
(500+100-50)/(20+10-5)=22
5.2.5.2红字出库核算规则
红字出库的核算规则比较复杂,其中——
加权平均和计划成本遵循同一规则;
移动平均、分批认定、先进/后进先出法遵循另外一种规则。
所以下面分别讨论。
5.2.5.3移动平均、分批认定、先进/后进先出法的红字出库核算规则
红字出库单
已记帐*
未记帐*

原单在以前期,原单单价>0
原单在以前期但是原单单价<=0或原单在本期间或以后期间
用原单单价更新红字出库单据
或无原单
收入序列发出序列当前单价当前单价系统选项计价方法
ICErrStockbill系统选项

ICErrStockbil
说明:
移动、分批、先进/后进先出法红字出库的规则是:
1)红字出库作为发出序列;
2)单价确认顺序:记帐
>
原单
>
当前单价
>
计价方法
>
系统选项
如果红字出库单已经记帐,则对红自入库单单价不做处理;
如果红字出库单未经记帐,看是否有原单
——如果有原单且原单单价大于零,则取原单单价;
——如果无原单或原单单价小于等于零,则要看红字出库单上是否有单价,如果有单价则保留此单价。如果无单价则取计价方法计算出来的出库价。如果仍取不到则取系统选项:无原单红字出库单单价来源。如果仍然取不到,则写入IcErrStockBill并在核算报告中报错:该红字出库单的单价不能确认。解决的方法:在不确定单价序时簿中录入该单单价。
对图中的现象分析:
在这个
图中,只有3才有可能出现这种现象,1,2两种情况不太可能。
5.2.5.4加权平均、计划成本法的红字出库核算规则
红字出库单
已记帐*
未记帐*

原单在以前期,原单单价>0
原单在以前期但是原单单价<=0或原单在本期间或以后期间
用原单单价更新红字出库单据
或无原单
收入序列发出序列当前单价当前单价系统选项计价方法
ICErrStockbill系统选项

ICErrStockbill
说明:
加权平均、计划成本法红字出库的规则是:
1)红字出库作为收入序列还是作为发出序列取决于系统参数设置;
2)单价确认顺序:记帐>
原单期间>
收发序列>
当前单价>
计价方法>
系统选项
对图中的现象分析:
当红字出库作为收入序列时,而且原单在以前期间
如果其原单在以前期间,那么意味着原单的单价已经确定,所以红字出库直接取原单单价;
当红字出库作为收入序列时,而且原单在本期或以后期间
如果其原单在本期间和以后期间,那么红字出库无法取原单的单价。
因为红字出库的原单是蓝字出库单,那么要确定篮字出库的单价就必须根据计价方法来计算,在根据计价方法计算时必须保证所有的收入序列单据必须已经有单价—包括红字出库单,因为此时红字出库被作为收入序列,这就造成一个“死循环”。
因此当红字出库有原单、原单在本期或以后期间、红字出库作为收入序列时,系统判断红字出库单是否已经录入了单价,如果有单价则保留此单价。如果无单价则取系统选项。
有原单
无原单

例:蓝字外购入库单单价:10,关联生成红字外购入库单。录入红字采购发票,单价:15,红字发票与红字入库钩稽。外购入库核算,系统自动反写红字单据单价位:15。在做材料出库核算,问:核算完毕,红字外购入库单得单价是多少?
5.2.6调拨单核算规则
补充-期初负结存核算规则
只有先进先出法和后进先出法的期初始负结存比较特殊。
5.3计划价调价
计划价调价
计划价调价单保存在icplanadjprice表中,计划调在审核是才真正对系统产生影响。审核过程如下:
更新t_IcItem.FplanPrice
UPDATE
t_ICItem
SET
FPlanPrice=99
WHERE
FBrNo="0"
And
FItemID=5700
将调价前后的单价写入ICPlanHistory;
INSERT
INTO
ICPlanHistory(FBrNo,FItemID,FInterID,FPlanPrice,FDate,FNewPlanPrice)
VALUES("0",5700,1053,58.12,"2001-12-17",99)
更新余额表的本期期初结存差异
UPDATE
ICInvBal
SET
FBegDiff=FBegDiff+FBegQty*-40.88
WHERE
FBrNo="0"
And
FItemID=5700
And
FYear=
2001
And
FPeriod=
11
UPDATE
ICBal
SET
FBegDiff=FBegDiff+FBegQty*-40.88
WHERE
FBrNo="0"
And
FItemID=5700
And
FYear=
2001
And
FPeriod=
11
更新本期该物料的库存单据单价为最新的计划价
Update
ICStockBillEntry
Set
FPlanPrice=ICPlanAdjPriEntry.FPlanPrice
From
ICPlanAdjPriEntry,
ICStockBill

Where
ICStockBillEntry.FItemID
=
ICPlanAdjPriEntry.FItemID
And
ICStockBillEntry.FInterID=ICStockBill.FInterID
And
ICPlanAdjPriEntry.FInterID=1053And
ICStockBill.FDate>="2001-11-01"
将调价单置为审核状态
Update
ICPlanAdjPrice
Set
FCheckerID=16394,FStatus=1
Where
FBrNo="0"
And
FInterID=1053
5.4金额调整
K3工业金额调整单全部作为入库序列处理。
什么情况下需要做金额调整单呢?
期末结存单价为负或者期初结存数量为零但是结存金额不为零;
想人为地调整本期的发出成本。
期末结存单价为负、或者期初结存无数量但是有金额是一种正常的现象。但客户通常认为这是错误,所以我们可能经常要向客户解释产生这种现象的原因,并提供解决方法。
例:物料A在2004.05期有暂估计入库,在2004.06期发票到,暂估入库与发票钩稽后做外购入库核算,系统自动生成暂估补差单:WINA1。物料A2004.06期库存台帐如下——
物料:A

数量单位:个

计价方法:加权平均

期间:2004.06期
金额单位:元
日期
单据号
摘要






数量
单价
金额
数量
单价
金额
数量
单价
金额
期初
1
10
10
06.2
WIN1
收入
1
10.5
10.5

06.2
WOUT1
发出1
06.8
WINA1
外购入库暂估补差

-25

期末
1

加权平均单价
=
(10+10.5-25
)
/
(1+1)=-2.25
。单价为负是不原许的,这种情况在K3中核算不能成功。处理方法就是做金额调整单,可以用加权平均公式计算出需要金额调整单的金额应该是多少。
我们要将发出成本调整为正常的成本水平:10元,假如金额调整单的金额是变量:X
,则——
10=
(10
+
10.5
–25
+
X
)
/
(1+1)
求出X=
24.5
在“存货核算==》期初金额调整==》金额调整单”中输入物料A的金额调整单,金额为:24.5。审核金额调整单,并重新做出库核,库存台帐如下——
物料:A

数量单位:个

计价方法:加权平均

期间:2004.06期
金额单位:元
日期
单据号
摘要






数量
单价
金额
数量
单价
金额
数量
单价
金额
期初
1
10
10
06.1
AMADJ1
金额调整

24.5

06.2
WIN1
收入
1
10.5
10.5

06.2
WOUT1
发出1
10
1006.8
WINA1
外购入库暂估补差

-25

期末
1
10
10
上例中负单价是由于以前期间暂估单价偏离实际成本水平较大造成,这也是造成负单价最常见的原因。
5.5物流与总帐对帐
用“期末处理==》期末关帐==》对帐”功能可以对照物流与总帐是否相符。如果出现差额,可以按以下思路进行对帐。
5.5.1总帐的存货科目做了手工凭证
处理方法:
用下面的SQL查询出存货类科目做的手工凭证,然后删除,在物流模块中按库存单据重新生成凭证。
select
fyear,fperiod,fgroupid,fnumber,fvoucherid
from
t_voucher
where
fdate>="2004.01.01"
and
fdate<"2004.02.01"and
fvoucherid
in
(select
fvoucherid
from
t_voucherEntry
where
faccountid
in(select
FAcctID
from
t_icitem))

and
(
(FInternalInd
is
null)
or(
FInternalInd=""))
order
by
fyear,fperiod,fgroupid,fnumber
5.5.2物流中的库存单据未生成凭证
用下面的SQL查询出未记帐的库存单据,在存货核算中生成凭证。系统设置:期末结帐时检查未记帐的单据。
select
FInterID,ftrantype
from
icstockbillwhere
((fvchinterid
is
null)
or
(fvchinterid=0))
and
ftrantype<>41
and
fdate>="2004.01.01"
and
fdate<"2004.02.01"
5.5.3库存单据的金额
<>
凭证的金额
处理方法:删除错误凭证,根据库存单据重新生成凭证。
--
单据金额
select
sum(famount)
from
icstockbillentry
where
FInterID
in(SELECT
FInterID
FROM
ICSTOCKBILL
WHERE
fvchinterid=@SVchInterID
)
--凭证金额
select
sum(famount)
from
t_voucherentry
where
FVOUCHERID=@SVchInterID

and
faccountid
in(select
FAcctID
from
t_icitem)
5.5.4物流结帐后,上期的期末余额与下期的期初余额不符
处理方法:物流反结帐,重新结帐。
SELECT
*
FROM
ICBAL
A,
ICBAL
B
where
a.fbrno=b.fbrno
and
a.fyear<>b.fyear
and
a.fitemid=b.fitemidand
b.fyear=2004and
b.fyear=2004and
a.fperiod=5and
b.fperiod=6and
a.fbatchno=b.fbatchnoand
a.fendbal<>b.fbegbaland
a.FBillInterID=b.FBillInterIDand
a.FStockGroupID=b.FStockGroupID
5.5.5计划成本法,做了计划价调价单,且在数据库中做了反结帐,重新结帐回来,计划价调价单失效;
SELECT
count(*)
FROM
ICBAL
a,icbal
b
,t_icitem
c,
ICPlanAdjPrice
d,ICPlanAdjPriEntry
e
wherea.fbrno=b.fbrno

and
a.fbatchno=b.fbatchnoand
a.FBillInterID=b.FBillInterID

and
a.FEntryID=b.FEntryIDand
a.FStockGroupID=b.FStockGroupIDand
a.fbegdiff=b.fenddiff

and
a.fitemid=b.fitemidand
a.fitemid=c.fitemid
and
c.ftrack=81

and
d.FInterID=e.FInterIDand
e.fitemid=a.fitemid

and
d.fdate>="2004.05.01"
and
d.fdate<"2004.06.01"

and
d.fcheckerid
is
not
null
and
d.fcheckerid
<>0

and
a.fyear=2004

and
b.fyear=2004

and
a.fperiod=5

and
b.fperiod=6
5.5.6计划成本法,物料在期末无结存数量和金额,只有结存差异,差异不能结转下期;
处理方法:补丁。
SELECT
a.*
FROM
ICBAL
A,
ICBAL
B
where
a.fbrno=b.fbrnoand
a.fyear=2004and
b.fyear=2004and
a.fperiod=5and
b.fperiod=6and
a.fitemid=b.fitemidand
a.fbatchno=b.fbatchnoand
a.fenddiff<>b.fbegdiffand
a.FBillInterID=b.FBillInterIDand
a.FStockGroupID=b.FStockGroupIDand
a.fendbal=0
and
a.fendqty=0
and
a.fenddiff<>0
5.5.7
941之前的版本,暂估入库单做了对等核销,而且两张单据的金额的绝对值不等;
必须保证对等核销的两张单据的金额的绝对值相等。否则会造成总帐
与物流不符。
select
x.FInterID,x.fdate,x.fhookinterid
from
(select
distinct
q1.FInterID,q1.fbillno,q1.ftrantype,q1.fdate,q1.fhookinterid,q6.famount
from
icstockbill
q1,icstockbillentry
q2,icstockbill
q3,icstockbillentry
q4,ichookrelations
q5,
(select
FInterID,sum(famount)
as
famount
from
icstockbillentry
group
by
FInterID)
q6where
q1.FInterID=q2.FInterID
and
q3.FInterID=q4.FInterID
and
q1.ftrantype=1
and
q3.ftrantype=1
and
q1.fhookinterid=q3.fhookinterid
and
q1.fhookinterid=q5.fgroupno
and
q5.FEquityHook=1
and
q5.fibinterid=q1.FInterID
and
q5.fibinterid=q3.FInterID
and
q1.FInterID=q6.FInterID
)
x,
(select
distinct
q1.FInterID,q1.fdate,q1.fhookinterid,q6.famount
from
icstockbill
q1,icstockbillentry
q2,icstockbill
q3,icstockbillentry
q4,ichookrelations
q5,
(select
FInterID,sum(famount)
as
famount
from
icstockbillentry
group
by
FInterID)
q6where
q1.FInterID=q2.FInterID
and
q3.FInterID=q4.FInterID
and
q1.ftrantype=1
and
q3.ftrantype=1
and
q1.fhookinterid=q3.fhookinterid
and
q1.fhookinterid=q5.fgroupno
and
q5.FEquityHook=1
and
q5.fibinterid=q1.FInterID
and
q5.fibinterid=q3.FInterID
and
q1.FInterID=q6.FInterID
)
y
where
x.fhookinterid=y.fhookinterid
and
x.FInterID<>y.FInterID
and
abs(x.famount)<>abs(
y.famount)
order
by
x.fhookinterid
5.5.8调拨单的调出或调入仓库丢失
5.5.9凭证模板设置错误
5.5.10物料对应的存货类科目丢失
存货类科目记帐方向反了
--借记存货科目
1
外购入库
2
产品入库
5
委外加工入库
10
其他入库
40
盘盈入库
65
计划价调价
100
金额调整单
101
暂估补差
--贷记存货科目
21
销售出库
24
生产领料
28
委外加工发出
29
其他出库
43
盘亏毁损
5.6生成凭证
5.6.1凭证模板数据表
ICVoucherTplType是凭证的事务类型,
ICVoucherTplType.FInterID代表事务类型ID。
每一种事务类型都对应多个特定的科目来源,比如:外购入库可以对应科目来源“采购发票上的贷方科目”,但是生产领料则此科目来源;生产领料可以对应科目来源“生产领料单上的存货科目”,但是外购入库则此科目来源。因此,用子表ICVoucherTAcct保存凭证事务类型对应的科目来源,关联关系:ICVoucherTplType.FInterID==>
ICVoucherTAcct.Ftpltype
。金额来源ICVoucherTField、核算项目来源ICVoucherTBill与ICVoucherTplType同理。
新增一个凭证模板时,必然要选折一种事务类型比如外购入库ICVoucherTplType.FInterID=75,根据此事务类型(ICVoucherTplType.FInterID)就决定了特定范围的科目、金额、核算——从ICVoucherTAcct获取Ftpltype=75的科目、从ICVoucherTField获取Ftpltype=75的金额、从ICVoucherTBill获取Ftpltype=75的核算项目。
用户新增的凭证模板保存在ICVoucherTpl(Enrty)表和ICVoucherTAudit表中,ICVoucherTpl保存凭证模板表头,ICVouchTplEntry保存凭证模板表体,ICVoucherTAudit保存凭证模板核算项目。

ICVoucherTpl凭证模板表头
字段
含义
关联
FInterID
凭证模板ID
Ftpltype
事务类型
ICVoucherTplType.FInterID
ICVoucherTplEntry凭证模板表体
字段
含义
关联
FInterID
凭证模板ID
ICVoucherTpl.FInterID
FEntryID
分录ID
FAccID
科目ID
T_Account.FaccountID,当科目来源为“凭证模板”时,此字段保存用户指定的具体科目。
FAccProperty
科目来源
ICVoucherTAcct.FInterID
FAmountFrom
金额来源
ICVoucherTField.FInterID
ICVoucherTAudit凭证模板核算项目
字段
含义
关联
FInterID
凭证模板ID
ICVouchTpl.FInterID
FEntryID
分录ID
ICVouchTplEntry.FentryID
FItemClassID
核算项目类别
ICVoucherTBill.FitemClassID
FNumber
核算项目类别代码
T_Itemclass.FNumber
FName
核算项目类别代码
T_Itemclass.Fname
FFieldName
核算项目对应单据上的字段

5.7结帐
5.7.1工业物流结帐过程
1.检查未审核的库存单据
2.检查未审核(FCheckerID
is
null
or
FCheckerID=0)的库存单据:采购检验申请单(POInstock)、虚仓调拨单(POStockBill)、赠品出入库单(ZPStockBill)、受托加工出入库(ICSTJGBill)、各种实仓库存单据(ICStockBill)。
3.检查已审核未记帐的库存单据
4.检查单价或金额不正确的出入库单
select
count(*)
from
ICStockBill
t1,ICStockbillEntry
t2
where
FDate>="2004-03-01"
AND
FDate<"2004-04-01"
and
t1.FCancellation=0

AND
t1.FInterID
=t2.FInterID
and
((t2.FPrice<=0
and
t1.FTranType<100)
or
(t2.FAmount=0
and
t1.FTranType<100))
5.处理序列号余额eisninvbal
6.统计本期每一序列号的收入发、发出,计算出结存。将期末有结存的结转到下期。
处理IcBal、IcInvBal
按物料、批次、仓库、仓位、保质期统计IcstckBill(Entry)本期的收入(1,2,5,10,40,100,101,102,41);
按物料、批次、仓库、仓位、保质期统计IcstckBill(Entry)本期的发出(21,
24
,28,29,43,41);
将本期的收入、发出写入IcInvBal,求出IcInvBal的期末结存。
将IcInvBal表
FEndQty<>0
or
FEndBal<>0
or
FEndDiff<>0
的记录结转到下期。
7.汇总IcInvBal数据写入IcBal,将IcBal期末有结存的记录结转到下期。
8.处理虚仓余额PoInvBal
9.统计采购检验申请单(POInstock)、虚仓调拨单(POStockBill)、赠品出入库单(ZPStockBill)、10.受托加工出入库(ICSTJGBill)这些虚仓单据的本期收入、发出写入PoInvBal。
PoInvBal期末有结存的记录结转到下期。
11.如果暂估冲回方式是月初冲回,则生成暂估冲回凭证
ALTER
TABLE
t_Voucher
DISABLE
TRIGGER
t_Voucher_Insert
exec
MakeVcherReZangu
"0",-4000,16394,""
ALTER
TABLE
t_Voucher
ENABLE
TRIGGER
t_Voucher_Insert
112.改写期间

K3工业购销存支持手册 本文关键词:购销,手册,支持,工业,K3

K3工业购销存支持手册  来源:网络整理

  免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。


K3工业购销存支持手册》由:76范文网互联网用户整理提供;
链接地址:http://www.yuan0.cn/a/84208.html
转载请保留,谢谢!
相关文章