GO /****** Object: StoredProcedure [dbo].[Cargill_inventroyandPrice] Script Date: 7/2/2019 9:02:07 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER proc [dbo].[Cargill_inventroyandPrice] @fbegstock varchar(20), @fendstock varchar(20), @fbegnumber varchar(20), @fendnumber varchar(20) as Set Nocount on Create Table #TempInventory( [FBrNo] [varchar] (10) NOT NULL , [FItemID] [int] NOT NULL , [FBatchNo] [varchar] (200) NOT NULL , [FMTONo] [varchar] (200) NOT NULL , [FSupplyID] [int] NOT NULL , [FStockID] [int] NOT NULL , [FQty] [decimal](28, 10) NOT NULL , [FBal] [decimal](20, 2) NOT NULL , [FStockPlaceID] [int] NULL , [FKFPeriod] [int] NOT NULL Default(0), [FKFDate] [varchar] (255) NOT NULL , [FMyKFDate] [varchar] (255), [FStockTypeID] [Int] NOT NULL, [FQtyLock] [decimal](28, 10) NOT NULL, [FAuxPropID] [int] NOT NULL, [FSecQty] [decimal](28, 10) NOT NULL, [FHelpCode] [varchar](200) NOT NULL, [FProperty] [int] NOT NULL Default(0), [FChartNumber] [varchar](255) NOT NULL, [FBatchNo2] [VarChar] (200) NOT NULL Default(''), [FStockID2] [int] NOT NULL Default(0), fcaigoudate datetime, fcurrency varchar(20) ) Insert Into #TempInventory Select u1.FBrNo,u1.FItemID,u1.FBatchNo,u1.FMTONo,u1.FSupplyID,u1.FStockID,u1.FQty,u1.FBal,u1.FStockPlaceID, u1.FKFPeriod,ISNULL(u1.FKFDate,''),ISNULL(u1.FKFDate,''),500,u1.FQtyLock,u1.FAuxPropID,u1.FSecQty,'',s.FProperty ,'','',0,'','' From ICInventory u1 left join t_stock s on u1.FStockID=s.FItemID where u1.FQty<>0 Insert Into #TempInventory Select u1.FBrNo,u1.FItemID,u1.FBatchNo,u1.FMTONo,u1.FSupplyID,u1.FStockID,u1.FQty,u1.FBal,u1.FStockPlaceID, u1.FKFPeriod,ISNULL(u1.FKFDate,''),ISNULL(u1.FKFDate,''),u1.FStockTypeID,0,u1.FAuxPropID,u1.FSecQty,'',s.FProperty,'' ,'',0,'','' From POInventory u1 left join t_stock s on u1.FStockID=s.FItemID where u1.FQty<>0 DECLARE @CalculateType AS INT SELECT @CalculateType=FValue FROM t_SystemProfile WHERE FCategory='IC' AND FKey='CalculateType' UPDATE t1 SET FBatchNo2=(SELECT CASE t2.FTrack WHEN 80 THEN t1.FBatchNo WHEN 20309 THEN t1.FBatchNo ELSE '' END ), FStockID2=(SELECT CASE @CalculateType WHEN 0 THEN 0 WHEN 1 THEN t1.FStockID ELSE t3.FGroupID END) FROM #TempInventory t1 INNER JOIN t_ICItem t2 ON t1.FItemID=t2.FItemID INNER JOIN t_Stock t3 ON t1.FStockID=t3.FItemID Select distinct t1.FName as FMaterialName,t1.FModel as FMaterialModel, u1.FBatchNo,t2.FName as FStockName,u1.FKFPeriod, case when isdate(u1.FKFDate)=1 then Convert(datetime,u1.FKFDate) else null end as FKFDate, t3.FName as FBUUnitName, t3.FNumber as FBUUnitNumber,ROUND(u1.FQty,t1.FQtydecimal) as FBUQty, Case when isdate(u1.FKFDate)=0 then NULL else Convert(datetime,u1.FKFDate) + u1.FKFPeriod END AS FMaturityDate, t2.FNumber AS FStockNumber ,t1.FNumber AS FMaterialNumber ,CASE WHEN t2.FIncludeAccounting=1 THEN ISNULL(t20.FPrice,0) ELSE 0 END as FPrice, CASE WHEN t2.FIncludeAccounting=1 THEN ISNULL(t20.FPrice * t4.FCoefficient,0) ELSE 0 END as FCUPrice, CASE WHEN t2.FIncludeAccounting=1 THEN ISNULL(ROUND(t20.FPrice * u1.FQty,2),0) ELSE 0 END as FAmount , t1.FItemID ,isnull(u1.fcaigoudate ,'')fcaigoudate,isnull(fcurrency,'') fcurrency into #TempInventory1 From #TempInventory u1 left join t_ICItem t1 on u1.FItemID = t1.FItemID left join t_Stock t2 on u1.FStockID=t2.FItemID left join t_Supplier t_8 on u1.FSupplyID=t_8.FItemID left join t_MeasureUnit t3 on t1.FUnitID=t3.FMeasureUnitID left join t_MeasureUnit t4 on t1.FStoreUnitID=t4.FMeasureUnitID left join t_StockPlace t5 on u1.FStockPlaceID=t5.FSPID left join t_AuxItem t9 on u1.FAuxPropID=t9.FItemID left join t_Measureunit t19 on t1.FSecUnitID=t19.FMeasureunitID Left Join ICRealtimeCost t20 ON u1.FItemID=t20.FItemID AND u1.FBatchNo2=t20.FBatchNo AND u1.FStockID2=t20.FStockID where (Round(u1.FQty,t1.FQtyDecimal)<>0 OR Round(u1.FQty/t4.FCoefficient,t1.FQtyDecimal)<>0) and t1.FDeleted=0 AND t2.FTypeID in (500,20291,20293,504,505,501) Order By t2.fnumber,t1.FNumber,u1.FBatchNo declare @FcurrentYear varchar(10) declare @Fcurrentperiod varchar(10) SELECT @FcurrentYear= FValue FROM t_SystemProfile WHERE FCategory='IC' AND FKey='CurrentYear' SELECT @Fcurrentperiod= FValue FROM t_SystemProfile WHERE FCategory='IC' AND FKey='CurrentPeriod' select FItemID ,sum(FBegQty)FBegQty,sum(FBegBal)FBegBal into #TempInventory2 from ICBal where FPeriod =@Fcurrentperiod and FYear =@FcurrentYear and fitemid in (select FItemID from #TempInventory1) group by FItemID select FItemID ,case when FBegQty <>0 then round( FBegBal /FBegQty ,6) else 0 end aaa into #TempInventory3 from #TempInventory2 update a set a.FPrice =b.aaa from #TempInventory1 a inner join #TempInventory3 b on a.FItemID =b.FItemID update c set c.FcuPrice =b.fprice from ICStockBill a inner join ICStockBillentry b on a.FInterID =b.FInterID inner join #TempInventory1 c on c.FItemID =b.FItemID and c.FBatchNo =b.FBatchNo where a.FTranType =1 update c set c.fcaigoudate =a.FDate from ICStockBill a inner join ICStockBillentry b on a.FInterID =b.FInterID inner join #TempInventory1 c on c.FItemID =b.FItemID and c.FBatchNo =b.FBatchNo where a.FTranType =1 update c set c.FcuPrice =b.fprice from ICStockBill a inner join ICStockBillentry b on a.FInterID =b.FInterID inner join #TempInventory1 c on c.FItemID =b.FItemID and c.FBatchNo =b.FBatchNo where a.FTranType =10 update c set c.fcaigoudate =a.FDate from ICStockBill a inner join ICStockBillentry b on a.FInterID =b.FInterID inner join #TempInventory1 c on c.FItemID =b.FItemID and c.FBatchNo =b.FBatchNo where a.FTranType =10 update c set c.fcaigoudate =a.FDate from ICStockBill a inner join ICStockBillentry b on a.FInterID =b.FInterID inner join #TempInventory1 c on c.FItemID =b.FItemID and c.FBatchNo =b.FBatchNo where a.FTranType =2 update c set c.FPrice =b.fprice from ICStockBill a inner join ICStockBillentry b on a.FInterID =b.FInterID inner join #TempInventory1 c on c.FItemID =b.FItemID and c.FBatchNo =b.FBatchNo where a.FTranType =1 and c.FPrice =0 select FStockNumber [CODE OF STORAGE WAREHOUSE] ,FStockName [DESCRIPTION OF STORAGE WAREHOUSE] , FMaterialNumber [MATERIAL NUMBER] ,FMaterialName [PRODUCT CATEGORY] ,b.FModel [DESCRIPTION OF PRODUCT], c.fname [PRODUCT LINE], F_103 [GIS PACKAGING CODE], F_104 [GIS CODE], F_105 [GIS NAME], F_107 [PLANT FROM] ,FBatchNo [BATCH NUMBER] ,FBUUnitName [UNIT OF MATERIAL] ,FBUQty QTY , FKFDate [DATE OF MANUFACTURE] ,a.FKFPeriod [SHELF LIFE] ,FMaturityDate [EXPIRATION DATE],fcaigoudate as [DATE OF GOODS RECEIPT] , FPrice [LAST MONTH END PRICE] ,FCUPrice [PURCHASE PRICE],'RMB' CURRENCY from #TempInventory1 a left join t_ICItem b on a.FItemID =b.FItemID left join t_item c on c.fitemid =b.F_102 where FStockNumber >=@fbegstock and FStockNumber <=@fendstock and FMaterialNumber >=@fbegnumber and FMaterialNumber <=@fendnumber Drop Table #TempInventory Drop Table #TempInventory1 Drop Table #TempInventory2 Drop Table #TempInventory3 GO