74 lines
2.4 KiB
Transact-SQL
74 lines
2.4 KiB
Transact-SQL
CREATE PROC [dbo].[GetSalePriceNew]
|
|
(
|
|
@FDate date,
|
|
@FMaterID int,
|
|
@Fprice decimal(28,10) out,
|
|
@FDateO nvarchar(50) out,
|
|
@FAmount decimal(28,10) out,--金额
|
|
@FQTY decimal(28,10) out ,--数量,
|
|
@FStockId nvarchar(1000)
|
|
)
|
|
as
|
|
begin
|
|
|
|
--declare @FDate date,
|
|
--@FMaterID int,
|
|
--@Fprice decimal(28,10) ,
|
|
--@FDateO nvarchar(50) ,
|
|
--@FAmount decimal(28,10) ,--金额
|
|
--@FQTY decimal(28,10) ,--数量,
|
|
--@FStockId nvarchar(1000)
|
|
--SET @FDate = ''
|
|
--SET @FMaterID = 0
|
|
--SET @FStockId = 0
|
|
--exec GetSalePriceNew @FDate , @FMaterID ,@Fprice out , @FDateO out ,@FAmount out,@FQTY out ,@FStockId
|
|
--SELECT @FDate,@FMaterID,@Fprice,@FDateO,@FAmount,@FQTY,@FStockId
|
|
|
|
declare @Fyear int
|
|
declare @Fmonth int
|
|
|
|
declare @FNumber nvarchar(100)
|
|
|
|
SELECT @FNumber= fnumber FROM T_BD_MATERIAL WHERE FMATERIALID=@FMaterID
|
|
|
|
SELECT TOP 1
|
|
@Fyear = FYEAR
|
|
,@Fmonth = FPERIOD
|
|
,@FAMOUNT = sum(FAMOUNT)
|
|
,@FQty = sum(FQTY)
|
|
,@Fprice = CASE WHEN @FQty<>0 THEN ROUND( @FAMOUNT/@FQty,6) ELSE 0 END
|
|
,@FDateO= CONVERT(nvarchar(10),FYEAR)+'.'+CONVERT(nvarchar(10),FPERIOD)
|
|
FROM
|
|
(
|
|
SELECT a.FNUMBER,THO.FYEAR ,THO.FPERIOD,THIB.FAMOUNT,THIB.FQTY
|
|
FROM T_HS_INIVSTOCKDIMENSION THS --库存维度实体对象
|
|
INNER JOIN T_HS_INIVBALANCE THIB --即时库存期初余额 当期表
|
|
ON (THS.FENTRYID = THIB.FDIMEENTRYID AND THIB.FENDINITKEY = '0')
|
|
INNER JOIN T_HS_OUTACCTG THO ON THIB.FID = THO.FID
|
|
INNER JOIN T_HS_CALDIMENSIONS TCH ON TCH.FDIMENSIONID = THO.FDIMENSIONID
|
|
INNER JOIN T_BD_MATERIAL a ON a.FMATERIALID=THS.FMATERIALID
|
|
WHERE
|
|
((TCH.FACCTSYSTEMID = 1 AND TCH.FACCTPOLICYID = 1)
|
|
AND THS.FSTOCKORGID = 101542)
|
|
AND a.FNUMBER=@FNumber
|
|
AND @FStockId = THS.FSTOCKID
|
|
|
|
UNION ALL
|
|
|
|
SELECT a.FNUMBER, THO.FYEAR ,THO.FPERIOD, THIB.FAMOUNT ,THIB.FQTY
|
|
FROM T_HS_INIVSTOCKDIMENSION THS --库存维度实体对象
|
|
INNER JOIN T_HS_INIVBALANCE_H THIB --即时库存期初余额 历史表
|
|
ON (THS.FENTRYID = THIB.FDIMEENTRYID AND THIB.FENDINITKEY = '0')
|
|
INNER JOIN T_HS_OUTACCTG THO ON THIB.FID = THO.FID
|
|
INNER JOIN T_HS_CALDIMENSIONS TCH ON TCH.FDIMENSIONID = THO.FDIMENSIONID
|
|
INNER JOIN T_BD_MATERIAL a ON a.FMATERIALID=THS.FMATERIALID
|
|
WHERE
|
|
((TCH.FACCTSYSTEMID = 1 AND TCH.FACCTPOLICYID = 1) AND THS.FSTOCKORGID = 101542)
|
|
AND a.FNUMBER = @FNumber
|
|
AND @FStockId = THS.fstockid
|
|
) t
|
|
GROUP BY FYEAR ,FPERIOD
|
|
HAVING FYEAR*100 + FPERIOD <= year(@FDate) * 100 + MONTH(@FDate) AND sum(FQTY) >0
|
|
ORDER BY FYEAR DESC , FPERIOD DESC
|
|
RETURN
|
|
END |