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
即时库存查询分析报表
最新推荐文章于 2024-09-30 20:09:33 发布