求存储过程更新物料清单成本单价!

sufull88 2009-10-22 01:58:12
求存储过程更新物料清单成本单价!

A 组成
| | |
B C D
| |
E F
| |
J K


M 组成
| | |
E G P
| |
R S --2个

物料清单主表 M_BOM
BILLID BOMVER GOODSID QTY USERDEF9
1001 1001 A 1 0
1002 1002 B 1 0
1003 1003 E 1 0
1004 1004 M 1 0
1005 1005 G 1 0

物料清单细表 M_BOMD -----说明M_BOM.BILLID=M_BOMD.BILLID 则是同一个物料清单
BILLID GOODSID QTY USERDEF9
1001 B 1 0
1001 C 1 0
1001 D 1 0
1002 E 1 0
1002 F 1 0
1003 J 1 0
1003 K 1 0
1004 E 1 0
1004 G 1 0
1004 P 1 0
1005 R 1 0
1005 S 2 0


货品价格表GOODSUNIT
GOODSID PPRICE
A 0
B 0
C 1
D 1
F 1
J 1
K 1
P 1
R 1
S 1


想要的结果如下:
首先根据货品价格表更新物料清单细表 M_BOMD 中的USERDEF9的成本单价,
然后再更新物料清单主表M_BOM 中的USERDEF9的成本金额

物料清单主表 M_BOM
BILLID BOMVER GOODSID QTY USERDEF9
1001 1001 A 1 5
1002 1002 B 1 3
1003 1003 E 1 2
1004 1004 M 1 5
1005 1005 G 1 3

物料清单细表 M_BOMD
BILLID GOODSID QTY USERDEF9
1001 B 1 3
1001 C 1 1
1001 D 1 1
1002 E 1 2
1002 F 1 1
1003 J 1 1
1003 K 1 1
1004 E 1 2
1004 G 1 3
1004 P 1 1
1005 R 1 1
1005 S 2 1
...全文
225 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
sufull88 2009-10-23
  • 打赏
  • 举报
回复
经过细心测试后发现有点小问题
--生成测试数据
create table M_BOM(BILLID int,BOMVER int,GOODSID varchar(10),QTY int,USERDEF9 int)
insert into M_BOM select 1001,1001,'A',1,0
insert into M_BOM select 1002,1002,'B',1,0
insert into M_BOM select 1003,1003,'E',1,0
insert into M_BOM select 1004,1004,'M',1,0
insert into M_BOM select 1005,1005,'G',1,0

create table M_BOMD(BILLID int,GOODSID varchar(10),QTY int,USERDEF9 int)
insert into M_BOMD select 1001,'B',1,0
insert into M_BOMD select 1001,'C',1,0
insert into M_BOMD select 1001,'D',1,0
insert into M_BOMD select 1002,'E',1,0
insert into M_BOMD select 1002,'F',1,0
insert into M_BOMD select 1003,'J',1,0
insert into M_BOMD select 1003,'K',1,0
insert into M_BOMD select 1004,'E',1,0
insert into M_BOMD select 1004,'G',1,0
insert into M_BOMD select 1004,'P',1,0
insert into M_BOMD select 1005,'R',1,0
insert into M_BOMD select 1005,'S',2,0

create table GOODSUNIT(GOODSID varchar(10),PPRICE int)
insert into GOODSUNIT select 'A',null ----改这里
insert into GOODSUNIT select 'B',99 ----改这里
insert into GOODSUNIT select 'C',1
insert into GOODSUNIT select 'D',1
insert into GOODSUNIT select 'F',1
insert into GOODSUNIT select 'J',1
insert into GOODSUNIT select 'K',1
insert into GOODSUNIT select 'P',1
insert into GOODSUNIT select 'R',1
insert into GOODSUNIT select 'S',1
go

--更新M_BOMD表BOM最底层价格信息
update a
set
a.USERDEF9=b.PPRICE
from
M_BOMD a,GOODSUNIT b
where
a.GOODSID=b.GOODSID

--逐级更新M_BOMD表BOM各层价格信息
while @@rowcount <>0
begin
update a
set
USERDEF9=(select sum(b.QTY*b.USERDEF9) from M_BOMD b,M_BOM c where a.GOODSID=c.GOODSID and b.BILLID=c.BILLID)
from
M_BOMD a
where
a.USERDEF9=0
and
not exists(select 1 from M_BOMD m,M_BOM n where a.GOODSID=n.GOODSID
and m.BILLID=n.BILLID and m.USERDEF9=0)
end

--更新M_BOM价格信息
update a
set
USERDEF9=(select sum(QTY*USERDEF9) from M_BOMD where BILLID=a.BILLID)
from
M_BOM a

--查看M_BOM更新结果
select * from M_BOM

执行
select * from m_bom m
left join m_bomd d on m.billid=d.billid where m.goodsid='b'

有如下结果
1001 1001 A 1 101 ----这里肯定不对了
1002 1002 B 1 3
1003 1003 E 1 2
1004 1004 M 1 6
1005 1005 G 1 3

1002 1002 B 1 3 1002 E 1 2
1002 1002 B 1 3 1002 F 1 1

lovezx1028 2009-10-23
  • 打赏
  • 举报
回复
學習啦。。
sankyqiu 2009-10-23
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 bancxc 的回复:]
为空就用
ISNULL(M_BOMD.USERDEF9,0)=0
ISNULL(M_BOM.USERDEF9,0)=0
判断是否等于0
[/Quote]

好的,谢谢,请问有没有办法可以帮我做成没有参数的函数实时查询产品的成本吗?
BILLID BOMVER MGOODSID MQTY DGOODSID DQTY DUSERDEF9 AM
1001 1001 A 1 B 1 3 3
1001 1001 A 1 C 1 1 1
1001 1001 A 1 D 1 1 1
bancxc 2009-10-23
  • 打赏
  • 举报
回复
为空就用
ISNULL(M_BOMD.USERDEF9,0)=0
ISNULL(M_BOM.USERDEF9,0)=0
判断是否等于0
sankyqiu 2009-10-23
  • 打赏
  • 举报
回复
libin_ftsafe 兄,再教一下,
能否做成实时的函数去查询某物料的成本?(即非执行存储过程)
SELECT * FROM (函数) 显示所有物料清单
如需要过滤条件我自己加入说行了。 WHERE MGOODSID='A'

BILLID BOMVER MGOODSID MQTY DGOODSID DQTY DUSERDEF9 AM
1001 1001 A 1 B 1 3 3
1001 1001 A 1 C 1 1 1
1001 1001 A 1 D 1 1 1
sufull88 2009-10-22
  • 打赏
  • 举报
回复
bancxc兄,你好,谢谢你的回复。如果主表M_BOM和细表M_BOMD 的USERDEF9 是空时则不能更新了。

INSERT INTO M_BOM SELECT
'1001','1001','A','1',0 UNION ALL SELECT
'1002','1002','B','1',0 UNION ALL SELECT
'1003','1003','E','1',0 UNION ALL SELECT
'1004','1004','M','1',0 UNION ALL SELECT
'1005','1005','G','1',0

INSERT INTO M_BOMD SELECT
'1001','B',1,0 UNION ALL SELECT
'1001','C',1,0 UNION ALL SELECT
'1001','D',1,0 UNION ALL SELECT
'1002','E',1,0 UNION ALL SELECT
'1002','F',1,0 UNION ALL SELECT
'1003','J',1,0 UNION ALL SELECT
'1003','K',1,0 UNION ALL SELECT
'1004','E',1,0 UNION ALL SELECT
'1004','G',1,0 UNION ALL SELECT
'1004','P',1,0 UNION ALL SELECT
'1005','R',1,0 UNION ALL SELECT
'1005','S',2,0
sufull88 2009-10-22
  • 打赏
  • 举报
回复
今天真好,这么多高手帮我大忙了
SQL77 2009-10-22
  • 打赏
  • 举报
回复
头晕
XGJ889 2009-10-22
  • 打赏
  • 举报
回复

DECLARE @FolderList varchar(800)
SET @FolderList='1'
SET NOCOUNT ON
CREATE TABLE #Temp(FolderId int)
INSERT #Temp
SELECT FolderId FROM Doc_Folder
WHERE CHARINDEX(','+LTRIM(FolderId)+',',','+@FolderList+',')>0

WHILE @@Rowcount>0
BEGIN
INSERT #Temp SELECT FolderId FROM Doc_Folder AS A WHERE
EXISTS(SELECT 1 FROM #Temp AS B WHERE B.[FolderId]=A.ParentFolderId)
AND NOT EXISTS(SELECT 1 FROM #Temp AS B WHERE B.[FolderId]=A.[FolderId])
END
SELECT * FROM #TEMP
DROP TABLE #TEMP
子陌红尘 2009-10-22
  • 打赏
  • 举报
回复
修改了一下?

--生成测试数据
create table M_BOM(BILLID int,BOMVER int,GOODSID varchar(10),QTY int,USERDEF9 int)
insert into M_BOM select 1001,1001,'A',1,0
insert into M_BOM select 1002,1002,'B',1,0
insert into M_BOM select 1003,1003,'E',1,0
insert into M_BOM select 1004,1004,'M',1,0
insert into M_BOM select 1005,1005,'G',1,0

create table M_BOMD(BILLID int,GOODSID varchar(10),QTY int,USERDEF9 int)
insert into M_BOMD select 1001,'B',1,0
insert into M_BOMD select 1001,'C',1,0
insert into M_BOMD select 1001,'D',1,0
insert into M_BOMD select 1002,'E',1,0
insert into M_BOMD select 1002,'F',1,0
insert into M_BOMD select 1003,'J',1,0
insert into M_BOMD select 1003,'K',1,0
insert into M_BOMD select 1004,'E',1,0
insert into M_BOMD select 1004,'G',1,0
insert into M_BOMD select 1004,'P',1,0
insert into M_BOMD select 1005,'R',1,0
insert into M_BOMD select 1005,'S',2,0

create table GOODSUNIT(GOODSID varchar(10),PPRICE int)
insert into GOODSUNIT select 'A',0
insert into GOODSUNIT select 'B',0
insert into GOODSUNIT select 'C',1
insert into GOODSUNIT select 'D',1
insert into GOODSUNIT select 'F',1
insert into GOODSUNIT select 'J',1
insert into GOODSUNIT select 'K',1
insert into GOODSUNIT select 'P',1
insert into GOODSUNIT select 'R',1
insert into GOODSUNIT select 'S',1
go

--更新M_BOMD表BOM最底层价格信息
update a
set
a.USERDEF9=b.PPRICE
from
M_BOMD a,GOODSUNIT b
where
a.GOODSID=b.GOODSID

--逐级更新M_BOMD表BOM各层价格信息
while @@rowcount <>0
begin
update a
set
USERDEF9=(select sum(b.QTY*b.USERDEF9) from M_BOMD b,M_BOM c where a.GOODSID=c.GOODSID and b.BILLID=c.BILLID)
from
M_BOMD a
where
a.USERDEF9=0
and
not exists(select 1 from M_BOMD m,M_BOM n where a.GOODSID=n.GOODSID
and m.BILLID=n.BILLID and m.USERDEF9=0)
end

--更新M_BOM价格信息
update a
set
USERDEF9=(select sum(QTY*USERDEF9) from M_BOMD where BILLID=a.BILLID)
from
M_BOM a

--查看M_BOM更新结果
select * from M_BOM
/*
BILLID BOMVER GOODSID QTY USERDEF9
----------- ----------- ---------- ----------- -----------
1001 1001 A 1 5
1002 1002 B 1 3
1003 1003 E 1 2
1004 1004 M 1 6
1005 1005 G 1 3
*/

--查看M_BOMD更新结果
select * from M_BOMD
/*
BILLID GOODSID QTY USERDEF9
----------- ---------- ----------- -----------
1001 B 1 3
1001 C 1 1
1001 D 1 1
1002 E 1 2
1002 F 1 1
1003 J 1 1
1003 K 1 1
1004 E 1 2
1004 G 1 3
1004 P 1 1
1005 R 1 1
1005 S 2 1
*/
go

--删除测试数据
drop table M_BOM,M_BOMD,GOODSUNIT
go
ying_wzm 2009-10-22
  • 打赏
  • 举报
回复
牛人真多,看了我头晕
sufull88 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 bancxc 的回复:]
SQL code--M的单价应该是6吧
--物料清单主表 M_BOMIFOBJECT_ID('M_BOM')ISNOTNULLDROPTABLE M_BOMGOCREATETABLE M_BOM (BILLIDNVARCHAR(20),BOMVERNVARCHAR(20),GOODSIDNVARCHAR(20),QTYINT,USERDEF9INT)GO--物料清单细表 M_BOMDIFOBJEC¡­
[/Quote]

--M的单价应该是6吧 是的了,是我手工去算时搞错了,谢谢!!
子陌红尘 2009-10-22
  • 打赏
  • 举报
回复
跟在 where 之后的条件是为了避免对同一条记录的重复更新;
子查询的条件为避免下级记录未被完全更新,而导致当前级记录被更新值小于正确值。
子陌红尘 2009-10-22
  • 打赏
  • 举报
回复
    M_BOMD a
where
a.USERDEF9=0 ----- 判断记录是否被更新过
and
not exists(select 1 from M_BOMD m,M_BOM n where a.GOODSID=n.GOODSID
and m.BILLID=n.BILLID and m.USERDEF9=0) -----判断下一级是否全更新过
sufull88 2009-10-22
  • 打赏
  • 举报
回复
想再请教一下
M_BOMD a
where
a.USERDEF9=0 -----请问这里为什么要a.userdef9=0 呢?
and
not exists(select 1 from M_BOMD m,M_BOM n where a.GOODSID=n.GOODSID
and m.BILLID=n.BILLID and m.USERDEF9=0) -----请问这里为什么要a.userdef9=0 呢?
bancxc 2009-10-22
  • 打赏
  • 举报
回复

--M的单价应该是6吧
--物料清单主表 M_BOM
IF OBJECT_ID('M_BOM') IS NOT NULL
DROP TABLE M_BOM
GO
CREATE TABLE M_BOM (BILLID NVARCHAR(20),BOMVER NVARCHAR(20),GOODSID NVARCHAR(20),QTY INT,USERDEF9 INT)
GO
--物料清单细表 M_BOMD
IF OBJECT_ID('M_BOMD') IS NOT NULL
DROP TABLE M_BOMD
GO
CREATE TABLE M_BOMD(BILLID NVARCHAR(20),GOODSID NVARCHAR(20),QTY INT,USERDEF9 INT)
GO
--
IF OBJECT_ID('GOODSUNIT') IS NOT NULL
DROP TABLE GOODSUNIT
GO
CREATE TABLE GOODSUNIT(GOODSID NVARCHAR(20),PPRICE INT)
-----DATA
INSERT INTO M_BOM SELECT
'1001','1001','A','1',0 UNION ALL SELECT
'1002','1002','B','1',0 UNION ALL SELECT
'1003','1003','E','1',0 UNION ALL SELECT
'1004','1004','M','1',0 UNION ALL SELECT
'1005','1005','G','1',0

INSERT INTO M_BOMD SELECT
'1001','B',1,0 UNION ALL SELECT
'1001','C',1,0 UNION ALL SELECT
'1001','D',1,0 UNION ALL SELECT
'1002','E',1,0 UNION ALL SELECT
'1002','F',1,0 UNION ALL SELECT
'1003','J',1,0 UNION ALL SELECT
'1003','K',1,0 UNION ALL SELECT
'1004','E',1,0 UNION ALL SELECT
'1004','G',1,0 UNION ALL SELECT
'1004','P',1,0 UNION ALL SELECT
'1005','R',1,0 UNION ALL SELECT
'1005','S',2,0

INSERT INTO GOODSUNIT SELECT
'A',0 UNION ALL SELECT
'B',0 UNION ALL SELECT
'C',1 UNION ALL SELECT
'D',1 UNION ALL SELECT
'F',1 UNION ALL SELECT
'J',1 UNION ALL SELECT
'K',1 UNION ALL SELECT
'P',1 UNION ALL SELECT
'R',1 UNION ALL SELECT
'S',1

---先更新末级存货
UPDATE M_BOMD SET USERDEF9 = PPRICE
FROM M_BOMD D
INNER JOIN GOODSUNIT ON D.GOODSID = GOODSUNIT.GOODSID
WHERE NOT EXISTS(SELECT 1 FROM M_BOM WHERE D.GOODSID=M_BOM.GOODSID)

WHILE @@rowcount<>0
BEGIN
UPDATE M_BOM SET M_BOM.USERDEF9= A.USERDEF9
FROM
(
SELECT M.BILLID,USERDEF9 = Sum(D.USERDEF9*D.QTY)
FROM M_BOM M INNER JOIN M_BOMD D ON M.BILLID=D.BILLID
GROUP BY M.BILLID
) A , M_BOM
WHERE A.BILLID=M_BOM.BILLID AND M_BOM.USERDEF9 = 0
AND M_BOM.BILLID NOT IN(
SELECT BILLID FROM M_BOMD WHERE ISNULL(M_BOMD.USERDEF9,0)=0
)

UPDATE M_BOMD SET USERDEF9 =M_BOM.USERDEF9
FROM M_BOM INNER JOIN M_BOMD ON M_BOMD.GOODSID=M_BOM.GOODSID WHERE M_BOMD.USERDEF9=0
END

select * from M_BOM
select * from M_BOMD
/*BILLID BOMVER GOODSID QTY USERDEF9
-------------------- -------------------- -------------------- ----------- -----------
1001 1001 A 1 5
1002 1002 B 1 3
1003 1003 E 1 2
1004 1004 M 1 6
1005 1005 G 1 3

(5 行受影响)

BILLID GOODSID QTY USERDEF9
-------------------- -------------------- ----------- -----------
1001 B 1 3
1001 C 1 1
1001 D 1 1
1002 E 1 2
1002 F 1 1
1003 J 1 1
1003 K 1 1
1004 E 1 2
1004 G 1 3
1004 P 1 1
1005 R 1 1
1005 S 2 1

(12 行受影响)
*/

子陌红尘 2009-10-22
  • 打赏
  • 举报
回复
--生成测试数据
create table M_BOM(BILLID int,BOMVER int,GOODSID varchar(10),QTY int,USERDEF9 int)
insert into M_BOM select 1001,1001,'A',1,0
insert into M_BOM select 1002,1002,'B',1,0
insert into M_BOM select 1003,1003,'E',1,0
insert into M_BOM select 1004,1004,'M',1,0
insert into M_BOM select 1005,1005,'G',1,0

create table M_BOMD(BILLID int,GOODSID varchar(10),QTY int,USERDEF9 int)
insert into M_BOMD select 1001,'B',1,0
insert into M_BOMD select 1001,'C',1,0
insert into M_BOMD select 1001,'D',1,0
insert into M_BOMD select 1002,'E',1,0
insert into M_BOMD select 1002,'F',1,0
insert into M_BOMD select 1003,'J',1,0
insert into M_BOMD select 1003,'K',1,0
insert into M_BOMD select 1004,'E',1,0
insert into M_BOMD select 1004,'G',1,0
insert into M_BOMD select 1004,'P',1,0
insert into M_BOMD select 1005,'R',1,0
insert into M_BOMD select 1005,'S',2,0

create table GOODSUNIT(GOODSID varchar(10),PPRICE int)
insert into GOODSUNIT select 'A',0
insert into GOODSUNIT select 'B',0
insert into GOODSUNIT select 'C',1
insert into GOODSUNIT select 'D',1
insert into GOODSUNIT select 'F',1
insert into GOODSUNIT select 'J',1
insert into GOODSUNIT select 'K',1
insert into GOODSUNIT select 'P',1
insert into GOODSUNIT select 'R',1
insert into GOODSUNIT select 'S',1
go

--更新M_BOMD表BOM最底层价格信息
update a
set
a.USERDEF9=b.PPRICE
from
M_BOMD a,GOODSUNIT b
where
a.GOODSID=b.GOODSID

--逐级更新M_BOMD表BOM各层价格信息
while @@rowcount<>0
begin
update a
set
USERDEF9=(select sum(b.USERDEF9) from M_BOMD b,M_BOM c where a.GOODSID=c.GOODSID and b.BILLID=c.BILLID)
from
M_BOMD a
where
a.USERDEF9=0
and
not exists(select 1 from M_BOMD m,M_BOM n where a.GOODSID=n.GOODSID
and m.BILLID=n.BILLID and m.USERDEF9=0)
end

--更新M_BOM价格信息
update a
set
USERDEF9=(select sum(QTY*USERDEF9) from M_BOMD where BILLID=a.BILLID)
from
M_BOM a

--查看M_BOM更新结果
select * from M_BOM
/*
BILLID BOMVER GOODSID QTY USERDEF9
----------- ----------- ---------- ----------- -----------
1001 1001 A 1 5
1002 1002 B 1 3
1003 1003 E 1 2
1004 1004 M 1 5
1005 1005 G 1 3
*/

--查看M_BOMD更新结果
select * from M_BOMD
/*
BILLID GOODSID QTY USERDEF9
----------- ---------- ----------- -----------
1001 B 1 3
1001 C 1 1
1001 D 1 1
1002 E 1 2
1002 F 1 1
1003 J 1 1
1003 K 1 1
1004 E 1 2
1004 G 1 2
1004 P 1 1
1005 R 1 1
1005 S 2 1
*/
go

--删除测试数据
drop table M_BOM,M_BOMD,GOODSUNIT
go
华夏小卒 2009-10-22
  • 打赏
  • 举报
回复
sufull88 2009-10-22
  • 打赏
  • 举报
回复
很好,一定要认认真真测试一下才行。
--小F-- 2009-10-22
  • 打赏
  • 举报
回复
头都看晕了 佩服钻钻
加载更多回复(15)
填空题、简答题 1.物料清单(BOM)是描述产品结构的文件。它表明了产品组件、子件、零件直到原材料之间的结构关系,成为产品结构树。 2.工作中心(WC)是生产加工单元的统称,在完成一项加工任务时同时也发生了加工成本。它是由一台或几台功能相同的设备,一个或多个工作人员,一个小组或一个工段,一个成组加工单元或一个装配场地等组成,甚至一个实际的车间也可作为一个工作中心,在这种情况下大大简化了管理流程。 3.主生产计划是确定每一个具体的产品在每一个具体的时间段的生产计划。计划的对象一般是最终产品,即企业的销售产品,但有时也可能是组件的MPS计划,然后再下达最终装配计划。主生产计划是一个重要的计划层次。 4.粗能力计划是对关键工作中心的能力进行运算而产生的一种能力需计划,它的计划对象只是针对设置为“关键工作中心”的工作中心能力,计算量要比能力需计划小许多。 5.物料计划(MRP)是对主生产计划的各个项目所需的全部制造件和全部采购件的网络支持计划和时间进度计划。 6.能力需计划是对各生产阶段、各工作中心(工序)所需的各种资源进行精确计算,得出人力负荷、设备负荷等资源负荷情况,并做好生产能力与生产负荷的平衡工作,制订出能力需计划。 7.库存管理是指企业为了生产、销售等经营管理的需要而对计划存储、流通的有关物品进行相应的管理,如对存储的物品进行接收、发放、存储保管等一系列的管理活动。 8.相关需指与另一种物料或产品的需相关的某一种物料的需。相关需数据是从最终产品的需项中推算出来的。非随机的,是在最终产品需的方式下出现的,是离散出现的。 9.派工单是面向加工中心生成的工序级的任务分配说明文件,是说明某时段工作中心的加工任务和各任务优先级的文件 10.成组技术是识别加工产品的相似性,根据这些相似特性,按照一定的工艺特点进行分类与分组,生产时按照这样相似的一组加工件按批加工,达到高效生产的目的。 11.固定资产是指使用年限超过1年的房屋、建筑物、机器、机械、运输工具、以及其它与生产、经营有关的设备、器具与工具等。不属于生产经营设备的物品,但单位价值在2000元以上,并且使用年限超过两年的,也属于固定资产。 12.控制图是判断生产工序过程是否处于控制状态的一种手段,利用控制图可以区分质量波动的原因是由偶然原因引起还是由系统原因引起。 13.排列图(巴累托图)用于寻找主要问题或寻找影响质量的主要原因。 14.分销资源计划目的是科学的利用与调配分销网络中的各种资源,并有效的进行控制,为企业的产品提供销售服务,从而获得最大的经济效益。 15.客户关系管理(CRM)一方面要在经营管理上进行变革,对客户关系管理的相关流程进行重组;另一方面,利用信息技术提供这种管理所必须的管理平台,保证其流程畅通。 简答题 1.简述作业成本法的含义及应用原则 作业成本法(ABC)最早是由美国哈佛大学教授卡普兰和罗宾库柏提出来的。 当产品有如下情况: (1)非产量相关制造费用比重加大; (2)产品多样性程度提高时,如果继续使用传统意义上的分配标准,必然不能反映产 品间接费用的真实情况。 采用作业成本法应遵循两个基本原则: (1)作业消耗资源,产品消耗作业; (2)生产导致作业的产生,作业导致成本的发生 2.制造物料清单与设计物料清单的区别 (1)作用不同。 (2)组成不同。 (3)制造物料清单的构成反映物料的加工顺序,设计物料清单则不能全面反映。 (4)ERP系统的制造物料清单包含的信息更多,甚至包括:物料消耗定额、工序加工顺序和副产品。 3.库存的作用和弊端 库存作用:维持销售产品的稳定。 维持生产的稳定。 平衡企业物流。 平衡流通资金的占用。 库存的弊端:占用企业大量资金。 增加了企业的产品成本与管理成本。 掩盖了企业众多管理问题 4.车间作业管理的主要内容 (1)按MRP(或FAS)计划生成车间任务 (2)生成各工作中心的加工任务、进行作业排序 (3)下达生产指令、进行生产调度、生产进度控制与生产作业控制 (4)能力的投入产出控制 (5)登记加工信息 (6)在制品管理 (7)统计分析 5.ERP成本计算工作内容 品种法:以产品品种为成本计算对象计算成本的方法,适用于大量大批单步骤生产企业。 分批法:也叫订单法,按照产品批别计算成本的方法,适用于单件小批。 分步法:按照产品的生产步骤计算产品成本的方法,适用于大量大批多步骤生产。 成本差异的类别:(1)直接材料成本差异、(2)直接人工成本差异 、(3)间接费差异 6.不同销售环境下的生产类型分类 现货生产特点: (1)按库存组织生产。 (2)产品标准化程度高、都由标准的零部件构成、可以按批量进行。 订货生产特点: (1)按客户的订单、销售合同来组织生产。 (2)产品标准化程度高、都由标准的零部件构成、可以按批量进行。 (3)最终产品变异性大、依据客户需而定。 订货组装特点: (1)按用户需进行装配。 (2)产品标准化程度高、都由标准的零部件构成、可以按批量进行。 (3)最终产品变异性大、依据客户需而定 工程生产特点: (1)产品数据管理复杂。 (2)按项目进行管理。 (3)平行交叉作业: 网络计划平衡:不标准的能力需 (4)按作业管理与按作业核算 7.生成MRP的两种方法(优缺点) 再生式 (regeneration)-全重排法: 计划完全重新制订,重新展开物料清单,重新编排物料的优先顺序。原有计划定单都会被系统删除并重新编排。 好处:计划全部理顺一遍,避免差错。 净改变法(net change): 系统只对定单中有变动的部分进行局部修改,一般改动量比较小;如只变动部分产品结构、需量、需日期等。运行时,只展开受变动影响的部分物料,修改量小,运算时间快,可以随时进行;一般用于计划变动较多但影响面不大的情况。 缺点:大量频繁地局部修改会产生全局性的差错,因此,隔一定时间还有必要用再生式把全部物料的需计划全面理顺一遍。 计算题 C-单位订货费用(元/次) F-年保管费占年平均库存值的百分数(%) D-库存物料的年需率(件/年) P-物料单价(元) H-单位库存保管费(元/件年) LT-订单周期内物料的消耗量 A-安全库存量 订货点:R=LT+A 经济订货量: 令 保管费=定货费 则 保管费=(HQ)/2 订货费=C(D/Q) 解方程:(HQ)/2= C(D/Q) 得: 某商业企业的X型扫描仪的年销售量为8000个,每个扫描仪的订货费用为8元/次,扫描仪平均年库存保管费用为5元/个,订货提前期为7天,价格为650元/个,安全库存为50个。请按经济订货批量原则解订货点和经济订货批量。 根据题意: C=8元/次,D=8000个/年,H=5元/个,A=50个 则 LT=8000/3657=153.4个 订货点为: R=LT +A=153.4+50=203.4个 取整数203个 经济订货批量为: 个 预计可用库存量=该时段的现有库存量+计划接收量 +计划产出量本时段毛需量 净需量=本时段毛需+安全库存-前一时段末可用库存-本时段计划接收量 计划投入量=计划产出量/合格率,计划投入时间=计划产出时间-提前期 可供销售量=某时段的计划产出量-该时段的订单(合同)量 物 料 号: 100000 物料名称: X 安全库存量:5 提 前 期: 1 周 批 量:10 现有库存量 : 8 批量增量: 10 计划日期:2000/01/31 计划员: CS 需时界:3 计划时界:8 类别 时段 1 2 3 4 5 6 7 8 9 10 11 过去 4/10 4/08 4/15 4/22 4/29 5/06 5/13 5/20 5/27 66/03 6/10 预测量 5 5 5 5 5 5 5 5 5 5 5 订单量 12 8 0 2 7 6 0 13 5 0 2 毛需量 计划接收量 10 预计可用库存量 8 净需量 计划产出量 计划投入量 可销售量 答案 类别 时段 1 2 3 4 5 6 7 8 9 10 11 过去 4/10 4/08 4/15 4/22 4/29 5/06 5/13 5/20 5/27 66/03 6/10 预测量 5 5 5 5 5 5 5 5 5 5 5 订单量 12 8 0 2 7 6 0 13 5 0 2 毛需量 12 8 0 5 7 6 5 13 5 5 5 计划接收量 10 预计可用库存量 8 6 8 8 13 11 5 10 7 12 7 12 净需量 7 -3 3 -1 0 5 8 3 -2 3 计划产出量 10 0 10 0 0 10 10 10 0 10 计划投入量 10 0 10 0 0 10 10 10 0 10 可销售量 6 2 0 8 -7 -6 10 -3 -5 0 8
制度名 仓库管理制度 电子文件编码 GLWA148 页码 3-1 ××公司仓库管理制度 第一章 总则 第一条 仓库是企业物资供应体系的一个重要组成部分,是企业各种物资周转储备的环节,同时担负着物资管理的多项业务职能。仓库的主要任务是:保管好库存物资,做到数量准确,质量完好,确保安全,收发迅速,面向生产,降低费用,加速资金周转。 第二条 仓库设置要根据工厂生产需要和厂房设备条件统筹规划,合理布局;内部要加强经济责任制,进行科学分工,形成物资归口管理的保证体系;业务上要实行工作质量标准化,应用现代管理技术和ABC分类法,不断提高仓库管理水平。 第二章 物资验收入库 第三条 物资入库,保管员要亲自同交货人办理交接手续,核对清点物资名称、数量是否一致,按物资交接本上的要签字。 第四条 物资入库,应先入待验区,未经检验合格不准进入货位。 第五条 材料验收合格,保管员凭发票所开列的名称、规格型号、数量、计量验收到位,入库单各栏应填写清楚,并随同托收单交财务科记账。 第六条 不合格品应隔离堆放。 第七条 验收中发现的问题,要及时通知主管和经办人处理。托收单到而货未到,或货已到而无发票,均应向经办人反映查询,直至消除悬念挂账。 签发人 责任人签名 制度名 仓库管理制度 电子文件编码 GLWA148 页码 3-2 第三章 物资的储存保管 第八条 物资的储存保管,原则上应以物资的属性、特点和用途规划设置仓库,并根据仓库的条件考虑划区分工。 第九条 物资堆放的原则是:在堆放合理安全可靠的前提下,根据货物特点,必须做到查点方便,成行成列,排列整齐。 第十条 仓库保管员对库存、代保管、待验物料以及设备、容器和工具等负有经济责任和法律责任。因此坚决做到人各有责,物各有主,事事有人管。仓库物资如有损失、贬值、报废、盘盈、盘亏等,保管员应及时报告科长,分析原因,查明责任,按规定办理报批手续。 第十一条 保管物资要根据其自然属性,考虑储存的场所和保管常识处理,加强保管措施,达到“十不”要,使国家财产不发生保 管责任损失。同类物资堆放,要考虑先进先出,发货方便,留有回旋余地。 第十二条 保管物资,未经主管同意,一律不准擅自借出;总成物资,一律不准折件零发,特殊情况应经主管批准。 第十三条 仓库要严格保卫制度,禁止非本库人员擅自入库。仓库严禁烟火,明火作业需经保卫科批准。保管员要懂得使用消防器材和必要的防火知识。 第四章 物资发放 第十四条 按“规定供应,节约用料”的原则发料。发料坚持一盘底,二核对,三发料,四减数的原则。 第十五条 领料单应填明物料名称、规格、型号、领料数量、图号、零件名称或物料用途,核算员和领料人签字。属计划内的材料应有物料计划;属限额供料的物料应符合限额供料制度;属规定审批的物料应有审批人签字。同时,超费用领料人未办手续,不得发料。 签发人 责任人签名 制度名 仓库管理制度 电子文件编码 GLWA148 页码 3-3 第十六条 调拨物料,保管员要审查单价、货款总金额并盖有财务科收款章时方可发料。发现价格不符或货款少收等,应立即通知开票人更正后发货。 第十七条 对于专项申请用料,除计划采购员留作备用的数量外,均应由申请单位领用。常备用料,凡属可以分割折零的,本着节约的原则,都应折零供应,不准一次性发料。 第十八条 发料必须与领料人和接料车间办理交接,当面点交清楚,防止差错出门。 第十九条 所有发料凭证,保管员应妥善保管,不可丢失。 第五章 其他事项 第二十条 记账要字迹清楚,日清月结不积压,托收、月报应及时。 第二十一条 允许范围内的磅差、合理的自然损耗所引起的盘盈盘亏,每月都要上报,以便做到账、卡、物、资金四一致。 第二十二条 保管员调动工作,一定要办理交接手续;移交中的未了事宜及有关凭证,要列出清单三份,写明情况,双方签字,双方各执一份,报科存档一份;事后发生纠葛,仍由原移交人负责赔偿。对失职造成的亏损,除照价赔偿外,还要给予纪律处分。 第二十三条 库存盈亏反映出保管员的工作质量,要力做到不出现差错。 签发人 责任人签名

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧