Files
GateDge2023_ljy/02.珠海市供水有限公司/ZHSW/STK_MisDelivery/sql/GetSalePriceNew.sql
PastSaid b2419eec9c 2
2024-04-10 10:39:04 +08:00

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