27,579
社区成员
发帖
与我相关
我的任务
分享
'试试....'
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[原料库存初始化]
/*@cnbh varchar(20),
@scrq datetime,*/
AS
BEGIN transaction
/*库存中没有记录,增加记录*/
INSERT INTO WZ原料库存明细 (厂内编号,来唛或规格,原料名称,产地,批号,生产日期,技术品级,单位,单件公定,仓库编号,仓库名称,库存件数,库存重量)
--############## select前面有四个全角空格,所以编译出错 #################
SELECT rc.厂内编号, rc.来唛或规格, rc.原料名称, rc.产地, rc.批号, rc.生产日期, rc.技术品级, rc.单位, null, rc.仓库编号, rc.仓库名称, null,null
FROM WZ原料入库明细 AS rc left join WZ原料库存明细 AS kc on(rc.厂内编号=kc.厂内编号 and rc.生产日期=kc.生产日期)
WHERE kc.厂内编号 is null
/*修改库存信息*/
UPDATE WZ原料库存明细 SET 单价=case when 库存件数<=0 or (库存件数+件数ALL)<=0 then 单价
ELSE (库存金额+金额ALL)/(库存重量 + 厂检公定ALL) END,
单件公定=case when 库存件数<=0 or (库存件数+件数ALL)<=0 then 单件公定
ELSE (库存重量+厂检公定ALLL)/(库存件数 + 件数ALL) END,
库存件数 = 库存件数+件数ALL,
库存重量= 库存重量+厂检公定ALL,
库存金额=case when 库存件数<=0 or (库存件数+件数ALL)<=0
then 单价*(库存重量+厂检公定ALL)ELSE(库存金额+金额ALL) END --######## 这里多了个逗号
FROM
(SELECT 仓库,厂内编号,'件数ALL'=sum(件数),'单价'=sum(金额)/sum(厂检公定),'金额ALL'=sum(金额),'厂检公定ALL'=sum(厂检公定)
FROM WZ原料入库明细 GROUP BY 厂内编号,生产日期) AS RK
WHERE WZ原料库存明细.厂内编号=RK.厂内编号 AND WZ原料库存明细.生产日期=RK.生产日期
/*加入历史*/
INSERT INTO WZ原料验收入库单_历史 SELECT * FROM WZ原料验收入库单
INSERT INTO WZ原料入库明细_历史 SELECT * FROM WZ原料入库明细
/*清除WZ原料验收入库单*/
DELETE FROM WZ原料入库明细
DELETE FROM WZ原料验收入库单
COMMIT
GO
CREATE PROCEDURE [dbo].[原料库存初始化]
/*@cnbh varchar(20),
@scrq datetime,*/
AS
BEGIN transaction
/*库存中没有记录,增加记录*/
INSERT INTO WZ原料库存明细 (厂内编号,来唛或规格,原料名称,产地,批号,生产日期,技术品级,单位,单件公定,仓库编号,仓库名称,库存件数,库存重量)
SELECT rc.厂内编号, rc.来唛或规格, rc.原料名称, rc.产地, rc.批号, rc.生产日期, rc.技术品级, rc.单位, null, rc.仓库编号, rc.仓库名称, null, null
FROM WZ原料入库明细 AS rc left join WZ原料库存明细 AS kc on rc.厂内编号=kc.厂内编号 and rc.生产日期=kc.生产日期
WHERE kc.厂内编号 is null
/*修改库存信息*/
UPDATE WZ原料库存明细 SET 单价=case when 库存件数<=0 or (库存件数+件数ALL)<=0 then 单价
ELSE (库存金额+金额ALL)/(库存重量 + 厂检公定ALL) END,
单件公定=case when 库存件数<=0 or (库存件数+件数ALL)<=0 then 单件公定
ELSE (库存重量+厂检公定ALLL)/(库存件数 + 件数ALL) END,
库存件数 = 库存件数+件数ALL,
库存重量= 库存重量+厂检公定ALL,
库存金额=case when 库存件数<=0 or (库存件数+件数ALL)<=0
then 单价*(库存重量+厂检公定ALL)ELSE(库存金额+金额ALL) END
FROM
(SELECT 仓库,厂内编号,'件数ALL'=sum(件数),'单价'=sum(金额)/sum(厂检公定),'金额ALL'=sum(金额),'厂检公定ALL'=sum(厂检公定)
FROM WZ原料入库明细 GROUP BY 厂内编号,生产日期) AS RK
WHERE WZ原料库存明细.厂内编号=RK.厂内编号 AND WZ原料库存明细.生产日期=RK.生产日期
/*加入历史*/
INSERT INTO WZ原料验收入库单_历史 SELECT * FROM WZ原料验收入库单
INSERT INTO WZ原料入库明细_历史 SELECT * FROM WZ原料入库明细
/*清除WZ原料验收入库单*/
DELETE FROM WZ原料入库明细
DELETE FROM WZ原料验收入库单
COMMIT transaction
GO