--删除旧记录 --delete from Report_Objects where Code='HO.DSForm.000018' --删除脚本内容 IF not EXISTS(SELECT * FROM Report_Objects WHERE code='HO.DSForm.000018') begin --插入 Declare @Report_Id_887 int Exec Core_NewId 'Report_Objects', 'id', @Report_Id_887 out Declare @Report_Id_887_CateID int Set @Report_Id_887_CateID = (select id from Report_Categories where code='HIS.11.3') insert into Report_Objects(ID,Code,Name,Description,Password,CategoryID,xType,Classification,ProductID,ProgramID,ElementID,CreateDate,UpdateDate,ISSUANCEDATE,Config,SetupPath,IsMenu,Enabled,GroupName,Authorized,RefreshInterval) Values(@Report_Id_887, 'HO.DSForm.000018', '采购计划查询', Null, Null, @Report_Id_887_CateID, 1, 3, 100, 0, Null, '2013-07-02 14:09:00', '2013-07-02 14:09:31', Null, ' 6D975366EAF5047E2B11491D7941F3E9declare @BCK01 INT , @BeginDate datetime , @EndDate datetime , @OrderType int select @BCK01 = :BCK01 , @BeginDate = :BeginDate , @EndDate = :EndDate , @OrderType = :OrderType select @BeginDate = CONVERT(varchar(30), @BeginDate, 121), @EndDate = CONVERT(varchar(30), @EndDate, 121) if OBJECT_ID(''tempdb..#tmpDSA'') is not null drop table #tmpDSA create table #tmpDSA( Checked int , BBY01 int --药品ID , ConsumeQty numeric(18, 2) --消耗数量 , DSKQty numeric(18, 2) --库存数量 , BAL04 numeric(18, 2) --库存警戒上限 , BAL05 numeric(18, 2) --库存警戒下限 , ChkQty numeric(18, 2) --实际采购数量 , BBH01 int --供应商 , BBH04 varchar(128) , PurchasePrice numeric(18, 2) , PresellPrice numeric(18, 2) ) if @OrderType = 0 --根据药库消耗生成采购 begin insert into #tmpDSA(BBY01, ConsumeQty) SELECT A.BBY01, SUM(A.Quantity) FROM ( --出库单 SELECT B.BBY01, B.Quantity FROM DSD1 A JOIN DSD2 B ON A.BCK01=B.BCK01 AND A.BillID=B.BillID JOIN BBY1 C ON C.BBY01=B.BBY01 WHERE A.BCK01=@BCK01 AND C.BBY31 > GETDATE() AND A.AuditingDate between @BeginDate and @EndDate union --损益单 SELECT B.BBY01, B.Quantity FROM DSF1 A JOIN DSF2 B ON A.BCK01=B.BCK01 AND A.BillID=B.BillID JOIN BBY1 C ON C.BBY01=B.BBY01 WHERE A.BCK01=@BCK01 AND C.BBY31 > GETDATE() AND A.AuditingDate between @BeginDate and @EndDate union --调出单 SELECT B.BBY01, B.Quantity FROM DSI1 A JOIN DSI2 B ON A.BCK01=B.BCK01 AND A.BillID=B.BillID JOIN BBY1 C ON C.BBY01=B.BBY01 WHERE A.BCK01=@BCK01 AND C.BBY31 > GETDATE() AND A.AuditingDate between @BeginDate and @EndDate ) A GROUP BY A.BBY01 end if @OrderType = 1 --根据药房请领生成采购 begin insert into #tmpDSA(BBY01, ConsumeQty) SELECT B.BBY01, SUM(B.ReqQuantity) FROM DPA1 A JOIN DPA2 B ON A.BillType = 1 AND B.BCK01 = A.BCK01 AND B.BillID = A.BillID JOIN BBY1 C ON C.BBY01=B.BBY01 WHERE A.StoreID=@BCK01 AND C.BBY31 > GETDATE() AND A.AuditingDate between @BeginDate and @EndDate GROUP BY B.BBY01 end if @OrderType = 2 --根据药房消耗生成采购 begin insert into #tmpDSA(BBY01, ConsumeQty) SELECT A.BBY01, SUM(A.Quantity) FROM ( --出库单 SELECT B.BBY01, B.Quantity/b.PackSize Quantity FROM V_DPD1_FULL A JOIN V_DPD2_FULL B ON A.BCK01=B.BCK01 AND A.BillID=B.BillID JOIN BBY1 C ON C.BBY01=B.BBY01 WHERE C.BBY31 > GETDATE() AND A.AuditingDate between @BeginDate and @EndDate union all --损益单 SELECT B.BBY01, B.Quantity/b.PackSize FROM DPF1 A JOIN DPF2 B ON A.BCK01=B.BCK01 AND A.BillID=B.BillID JOIN BBY1 C ON C.BBY01=B.BBY01 WHERE C.BBY31 > GETDATE() AND A.AuditingDate between @BeginDate and @EndDate union all --调出单 SELECT B.BBY01, B.Quantity/b.PackSize FROM DPI1 A JOIN DPI2 B ON A.BCK01=B.BCK01 AND A.BillID=B.BillID JOIN BBY1 C ON C.BBY01=B.BBY01 WHERE C.BBY31 > GETDATE() AND A.AuditingDate between @BeginDate and @EndDate ) A GROUP BY A.BBY01 end delete from #tmpDSA where ConsumeQty <= 0 update A set A.PurchasePrice = isnull((select top 1 K.PurchasePrice from DSK1 K where K.BCK01 = @BCK01 and K.BBY01 = A.BBY01 order by ID desc), 0) , A.PresellPrice = isnull((select top 1 K.PresellPrice from DSK1 K where K.BCK01 = @BCK01 and K.BBY01 = A.BBY01 order by ID desc), 0) from #tmpDSA A update A set A.BBH01 = B.BBH01B, A.BBH04 = C.BBH04 from #tmpDSA A join BAG1 B on B.BBY01 = A.BBY01 join BBH1 C on C.BBH01 = B.BBH01B update A set A.BAL04 = B.BAL04, A.BAL05 = B.BAL05, A.ChkQty = A.ConsumeQty, A.Checked = 0 from #tmpDSA A join BAL1 B on B.BCK01 = @BCK01 and B.BBY01 = A.BBY01 update A set A.DSKQty = B.LSQty from #tmpDSA A join (select BBY01, SUM(LastQuantity) LSQty from (select BBY01 ,LastQuantity from DSK1 where LastQuantity>0 union all select BBY01, LastQuantity/PackSize LastQuantity from DPK1 where LastQuantity>0 ) as T group by BBY01 ) B on B.BBY01 = A.BBY01 if OBJECT_ID(''tempdb..#tmpSql'') is not null drop table #tmpSql select A.Checked, A.BBY01, B.BBY04, B.BBY05, B.BBY06,G.BDG02C as Unit,A.ConsumeQty, A.DSKQty, A.BAL04, A.BAL05, A.ChkQty , A.BBH01, A.BBH04, A.PurchasePrice, A.PresellPrice , isnull(G.BAG23, 0) as OldPurchasePrice/*上次进货价*/, G.BBH01B, H.BBH04 AS BBH04B, B.BBE02, G.BAG23*A.ChkQty as Amount, G.BAG15 into #tmpSql from #tmpDSA A JOIN BBY1 B ON B.BBY01 = A.BBY01 join BAG1 G on G.BBY01 = B.BBY01 join BBH1 H on H.BBH01 = G.BBH01B select * from #tmpSql drop table #tmpSql if OBJECT_ID(''tempdb..#tmpDSA'') is not null drop table #tmpDSA<?xml version="1.0"?> <Configs Ver="1"><Win SZ="1"/><Grid Head="1" UseW="1" AWS="1"><Sql>SELECT BCK01, BCK02, BCK03, BCK04, ABBRP, ABBRW, BCK09, BCK01A FROM BCK1 K WHERE exists(SELECT * FROM BAZ1 Z WHERE Z.BCK01=K.BCK01 and Z.BAU01 in (''54'',''55'',''56''))</Sql><HD><Ie FD="BCK02" CA="编码" WD="100"/><Ie FD="BCK03" CA="名称" WD="100"/></HD><QF><Ie FD="BCK03" WE="7"/><Ie FD="ABBRP" WE="7"/><Ie FD="ABBRW" WE="7"/></QF></Grid></Configs>0=根据药库消耗生成采购计划 1=根据药房请领生成采购计划 2=根据药房消耗生成采购 ', Null, 0, 1, Null, 1, Null) end else --更新 begin update Report_Objects set Config=' 6D975366EAF5047E2B11491D7941F3E9declare @BCK01 INT , @BeginDate datetime , @EndDate datetime , @OrderType int select @BCK01 = :BCK01 , @BeginDate = :BeginDate , @EndDate = :EndDate , @OrderType = :OrderType select @BeginDate = CONVERT(varchar(30), @BeginDate, 121), @EndDate = CONVERT(varchar(30), @EndDate, 121) if OBJECT_ID(''tempdb..#tmpDSA'') is not null drop table #tmpDSA create table #tmpDSA( Checked int , BBY01 int --药品ID , ConsumeQty numeric(18, 2) --消耗数量 , DSKQty numeric(18, 2) --库存数量 , BAL04 numeric(18, 2) --库存警戒上限 , BAL05 numeric(18, 2) --库存警戒下限 , ChkQty numeric(18, 2) --实际采购数量 , BBH01 int --供应商 , BBH04 varchar(128) , PurchasePrice numeric(18, 2) , PresellPrice numeric(18, 2) ) if @OrderType = 0 --根据药库消耗生成采购 begin insert into #tmpDSA(BBY01, ConsumeQty) SELECT A.BBY01, SUM(A.Quantity) FROM ( --出库单 SELECT B.BBY01, B.Quantity FROM DSD1 A JOIN DSD2 B ON A.BCK01=B.BCK01 AND A.BillID=B.BillID JOIN BBY1 C ON C.BBY01=B.BBY01 WHERE A.BCK01=@BCK01 AND C.BBY31 > GETDATE() AND A.AuditingDate between @BeginDate and @EndDate union --损益单 SELECT B.BBY01, B.Quantity FROM DSF1 A JOIN DSF2 B ON A.BCK01=B.BCK01 AND A.BillID=B.BillID JOIN BBY1 C ON C.BBY01=B.BBY01 WHERE A.BCK01=@BCK01 AND C.BBY31 > GETDATE() AND A.AuditingDate between @BeginDate and @EndDate union --调出单 SELECT B.BBY01, B.Quantity FROM DSI1 A JOIN DSI2 B ON A.BCK01=B.BCK01 AND A.BillID=B.BillID JOIN BBY1 C ON C.BBY01=B.BBY01 WHERE A.BCK01=@BCK01 AND C.BBY31 > GETDATE() AND A.AuditingDate between @BeginDate and @EndDate ) A GROUP BY A.BBY01 end if @OrderType = 1 --根据药房请领生成采购 begin insert into #tmpDSA(BBY01, ConsumeQty) SELECT B.BBY01, SUM(B.ReqQuantity) FROM DPA1 A JOIN DPA2 B ON A.BillType = 1 AND B.BCK01 = A.BCK01 AND B.BillID = A.BillID JOIN BBY1 C ON C.BBY01=B.BBY01 WHERE A.StoreID=@BCK01 AND C.BBY31 > GETDATE() AND A.AuditingDate between @BeginDate and @EndDate GROUP BY B.BBY01 end if @OrderType = 2 --根据药房消耗生成采购 begin insert into #tmpDSA(BBY01, ConsumeQty) SELECT A.BBY01, SUM(A.Quantity) FROM ( --出库单 SELECT B.BBY01, B.Quantity/b.PackSize Quantity FROM V_DPD1_FULL A JOIN V_DPD2_FULL B ON A.BCK01=B.BCK01 AND A.BillID=B.BillID JOIN BBY1 C ON C.BBY01=B.BBY01 WHERE C.BBY31 > GETDATE() AND A.AuditingDate between @BeginDate and @EndDate union all --损益单 SELECT B.BBY01, B.Quantity/b.PackSize FROM DPF1 A JOIN DPF2 B ON A.BCK01=B.BCK01 AND A.BillID=B.BillID JOIN BBY1 C ON C.BBY01=B.BBY01 WHERE C.BBY31 > GETDATE() AND A.AuditingDate between @BeginDate and @EndDate union all --调出单 SELECT B.BBY01, B.Quantity/b.PackSize FROM DPI1 A JOIN DPI2 B ON A.BCK01=B.BCK01 AND A.BillID=B.BillID JOIN BBY1 C ON C.BBY01=B.BBY01 WHERE C.BBY31 > GETDATE() AND A.AuditingDate between @BeginDate and @EndDate ) A GROUP BY A.BBY01 end delete from #tmpDSA where ConsumeQty <= 0 update A set A.PurchasePrice = isnull((select top 1 K.PurchasePrice from DSK1 K where K.BCK01 = @BCK01 and K.BBY01 = A.BBY01 order by ID desc), 0) , A.PresellPrice = isnull((select top 1 K.PresellPrice from DSK1 K where K.BCK01 = @BCK01 and K.BBY01 = A.BBY01 order by ID desc), 0) from #tmpDSA A update A set A.BBH01 = B.BBH01B, A.BBH04 = C.BBH04 from #tmpDSA A join BAG1 B on B.BBY01 = A.BBY01 join BBH1 C on C.BBH01 = B.BBH01B update A set A.BAL04 = B.BAL04, A.BAL05 = B.BAL05, A.ChkQty = A.ConsumeQty, A.Checked = 0 from #tmpDSA A join BAL1 B on B.BCK01 = @BCK01 and B.BBY01 = A.BBY01 update A set A.DSKQty = B.LSQty from #tmpDSA A join (select BBY01, SUM(LastQuantity) LSQty from (select BBY01 ,LastQuantity from DSK1 where LastQuantity>0 union all select BBY01, LastQuantity/PackSize LastQuantity from DPK1 where LastQuantity>0 ) as T group by BBY01 ) B on B.BBY01 = A.BBY01 if OBJECT_ID(''tempdb..#tmpSql'') is not null drop table #tmpSql select A.Checked, A.BBY01, B.BBY04, B.BBY05, B.BBY06,G.BDG02C as Unit,A.ConsumeQty, A.DSKQty, A.BAL04, A.BAL05, A.ChkQty , A.BBH01, A.BBH04, A.PurchasePrice, A.PresellPrice , isnull(G.BAG23, 0) as OldPurchasePrice/*上次进货价*/, G.BBH01B, H.BBH04 AS BBH04B, B.BBE02, G.BAG23*A.ChkQty as Amount, G.BAG15 into #tmpSql from #tmpDSA A JOIN BBY1 B ON B.BBY01 = A.BBY01 join BAG1 G on G.BBY01 = B.BBY01 join BBH1 H on H.BBH01 = G.BBH01B select * from #tmpSql drop table #tmpSql if OBJECT_ID(''tempdb..#tmpDSA'') is not null drop table #tmpDSA<?xml version="1.0"?> <Configs Ver="1"><Win SZ="1"/><Grid Head="1" UseW="1" AWS="1"><Sql>SELECT BCK01, BCK02, BCK03, BCK04, ABBRP, ABBRW, BCK09, BCK01A FROM BCK1 K WHERE exists(SELECT * FROM BAZ1 Z WHERE Z.BCK01=K.BCK01 and Z.BAU01 in (''54'',''55'',''56''))</Sql><HD><Ie FD="BCK02" CA="编码" WD="100"/><Ie FD="BCK03" CA="名称" WD="100"/></HD><QF><Ie FD="BCK03" WE="7"/><Ie FD="ABBRP" WE="7"/><Ie FD="ABBRW" WE="7"/></QF></Grid></Configs>0=根据药库消耗生成采购计划 1=根据药房请领生成采购计划 2=根据药房消耗生成采购 ' where Code='HO.DSForm.000018' end GO